app: shuffle precision enum values around to make room for U64

and add code to handle the old values from XCF files < version 7.
This commit is contained in:
Michael Natterer 2014-03-09 01:44:43 +01:00
parent 3c918353fb
commit e7ff0589cb
5 changed files with 48 additions and 33 deletions

View File

@ -63,9 +63,9 @@ typedef enum
GIMP_COMPONENT_TYPE_U8 = 100, /*< desc="8-bit integer" >*/ GIMP_COMPONENT_TYPE_U8 = 100, /*< desc="8-bit integer" >*/
GIMP_COMPONENT_TYPE_U16 = 200, /*< desc="16-bit integer" >*/ GIMP_COMPONENT_TYPE_U16 = 200, /*< desc="16-bit integer" >*/
GIMP_COMPONENT_TYPE_U32 = 300, /*< desc="32-bit integer" >*/ GIMP_COMPONENT_TYPE_U32 = 300, /*< desc="32-bit integer" >*/
GIMP_COMPONENT_TYPE_HALF = 400, /*< desc="16-bit floating point" >*/ GIMP_COMPONENT_TYPE_HALF = 500, /*< desc="16-bit floating point" >*/
GIMP_COMPONENT_TYPE_FLOAT = 500, /*< desc="32-bit floating point" >*/ GIMP_COMPONENT_TYPE_FLOAT = 600, /*< desc="32-bit floating point" >*/
GIMP_COMPONENT_TYPE_DOUBLE = 600 /*< desc="64-bit floating point" >*/ GIMP_COMPONENT_TYPE_DOUBLE = 700 /*< desc="64-bit floating point" >*/
} GimpComponentType; } GimpComponentType;
@ -369,12 +369,12 @@ typedef enum
GIMP_PRECISION_U16_GAMMA = 250, /*< desc="16-bit gamma integer" >*/ GIMP_PRECISION_U16_GAMMA = 250, /*< desc="16-bit gamma integer" >*/
GIMP_PRECISION_U32_LINEAR = 300, /*< desc="32-bit linear integer" >*/ GIMP_PRECISION_U32_LINEAR = 300, /*< desc="32-bit linear integer" >*/
GIMP_PRECISION_U32_GAMMA = 350, /*< desc="32-bit gamma integer" >*/ GIMP_PRECISION_U32_GAMMA = 350, /*< desc="32-bit gamma integer" >*/
GIMP_PRECISION_HALF_LINEAR = 400, /*< desc="16-bit linear floating point" >*/ GIMP_PRECISION_HALF_LINEAR = 500, /*< desc="16-bit linear floating point" >*/
GIMP_PRECISION_HALF_GAMMA = 450, /*< desc="16-bit gamma floating point" >*/ GIMP_PRECISION_HALF_GAMMA = 550, /*< desc="16-bit gamma floating point" >*/
GIMP_PRECISION_FLOAT_LINEAR = 500, /*< desc="32-bit linear floating point" >*/ GIMP_PRECISION_FLOAT_LINEAR = 600, /*< desc="32-bit linear floating point" >*/
GIMP_PRECISION_FLOAT_GAMMA = 550, /*< desc="32-bit gamma floating point" >*/ GIMP_PRECISION_FLOAT_GAMMA = 650, /*< desc="32-bit gamma floating point" >*/
GIMP_PRECISION_DOUBLE_LINEAR = 600, /*< desc="64-bit linear floating point" >*/ GIMP_PRECISION_DOUBLE_LINEAR = 700, /*< desc="64-bit linear floating point" >*/
GIMP_PRECISION_DOUBLE_GAMMA = 650 /*< desc="64-bit gamma floating point" >*/ GIMP_PRECISION_DOUBLE_GAMMA = 750 /*< desc="64-bit gamma floating point" >*/
} GimpPrecision; } GimpPrecision;

View File

@ -174,6 +174,25 @@ xcf_load_image (Gimp *gimp,
goto hard_error; goto hard_error;
} }
} }
else if (info->file_version == 5 ||
info->file_version == 6)
{
switch (p)
{
case 100: precision = GIMP_PRECISION_U8_LINEAR; break;
case 150: precision = GIMP_PRECISION_U8_GAMMA; break;
case 200: precision = GIMP_PRECISION_U16_LINEAR; break;
case 250: precision = GIMP_PRECISION_U16_GAMMA; break;
case 300: precision = GIMP_PRECISION_U32_LINEAR; break;
case 350: precision = GIMP_PRECISION_U32_GAMMA; break;
case 400: precision = GIMP_PRECISION_HALF_LINEAR; break;
case 450: precision = GIMP_PRECISION_HALF_GAMMA; break;
case 500: precision = GIMP_PRECISION_FLOAT_LINEAR; break;
case 550: precision = GIMP_PRECISION_FLOAT_GAMMA; break;
default:
goto hard_error;
}
}
else else
{ {
precision = p; precision = p;

View File

@ -215,16 +215,12 @@ xcf_save_choose_format (XcfInfo *info,
save_version = MAX (3, save_version); save_version = MAX (3, save_version);
} }
/* need version 5 for high bit depth images */
if (gimp_image_get_precision (image) != GIMP_PRECISION_U8_GAMMA)
save_version = MAX (5, save_version);
/* need version 6 for new metadata */ /* need version 6 for new metadata */
if (gimp_image_get_metadata (image)) if (gimp_image_get_metadata (image))
save_version = MAX (6, save_version); save_version = MAX (6, save_version);
/* need version 7 for double precision images */ /* need version 5 for high bit depth images */
if (gimp_image_get_component_type (image) != GIMP_COMPONENT_TYPE_DOUBLE) if (gimp_image_get_precision (image) != GIMP_PRECISION_U8_GAMMA)
save_version = MAX (7, save_version); save_version = MAX (7, save_version);
info->file_version = save_version; info->file_version = save_version;

View File

@ -56,9 +56,9 @@ typedef enum
GIMP_COMPONENT_TYPE_U8 = 100, GIMP_COMPONENT_TYPE_U8 = 100,
GIMP_COMPONENT_TYPE_U16 = 200, GIMP_COMPONENT_TYPE_U16 = 200,
GIMP_COMPONENT_TYPE_U32 = 300, GIMP_COMPONENT_TYPE_U32 = 300,
GIMP_COMPONENT_TYPE_HALF = 400, GIMP_COMPONENT_TYPE_HALF = 500,
GIMP_COMPONENT_TYPE_FLOAT = 500, GIMP_COMPONENT_TYPE_FLOAT = 600,
GIMP_COMPONENT_TYPE_DOUBLE = 600 GIMP_COMPONENT_TYPE_DOUBLE = 700
} GimpComponentType; } GimpComponentType;
@ -285,12 +285,12 @@ typedef enum
GIMP_PRECISION_U16_GAMMA = 250, GIMP_PRECISION_U16_GAMMA = 250,
GIMP_PRECISION_U32_LINEAR = 300, GIMP_PRECISION_U32_LINEAR = 300,
GIMP_PRECISION_U32_GAMMA = 350, GIMP_PRECISION_U32_GAMMA = 350,
GIMP_PRECISION_HALF_LINEAR = 400, GIMP_PRECISION_HALF_LINEAR = 500,
GIMP_PRECISION_HALF_GAMMA = 450, GIMP_PRECISION_HALF_GAMMA = 550,
GIMP_PRECISION_FLOAT_LINEAR = 500, GIMP_PRECISION_FLOAT_LINEAR = 600,
GIMP_PRECISION_FLOAT_GAMMA = 550, GIMP_PRECISION_FLOAT_GAMMA = 650,
GIMP_PRECISION_DOUBLE_LINEAR = 600, GIMP_PRECISION_DOUBLE_LINEAR = 700,
GIMP_PRECISION_DOUBLE_GAMMA = 650 GIMP_PRECISION_DOUBLE_GAMMA = 750
} GimpPrecision; } GimpPrecision;

View File

@ -425,9 +425,9 @@ package Gimp::CodeGen::enums;
mapping => { GIMP_COMPONENT_TYPE_U8 => '100', mapping => { GIMP_COMPONENT_TYPE_U8 => '100',
GIMP_COMPONENT_TYPE_U16 => '200', GIMP_COMPONENT_TYPE_U16 => '200',
GIMP_COMPONENT_TYPE_U32 => '300', GIMP_COMPONENT_TYPE_U32 => '300',
GIMP_COMPONENT_TYPE_HALF => '400', GIMP_COMPONENT_TYPE_HALF => '500',
GIMP_COMPONENT_TYPE_FLOAT => '500', GIMP_COMPONENT_TYPE_FLOAT => '600',
GIMP_COMPONENT_TYPE_DOUBLE => '600' } GIMP_COMPONENT_TYPE_DOUBLE => '700' }
}, },
GimpConvertDitherType => GimpConvertDitherType =>
{ contig => 1, { contig => 1,
@ -573,12 +573,12 @@ package Gimp::CodeGen::enums;
GIMP_PRECISION_U16_GAMMA => '250', GIMP_PRECISION_U16_GAMMA => '250',
GIMP_PRECISION_U32_LINEAR => '300', GIMP_PRECISION_U32_LINEAR => '300',
GIMP_PRECISION_U32_GAMMA => '350', GIMP_PRECISION_U32_GAMMA => '350',
GIMP_PRECISION_HALF_LINEAR => '400', GIMP_PRECISION_HALF_LINEAR => '500',
GIMP_PRECISION_HALF_GAMMA => '450', GIMP_PRECISION_HALF_GAMMA => '550',
GIMP_PRECISION_FLOAT_LINEAR => '500', GIMP_PRECISION_FLOAT_LINEAR => '600',
GIMP_PRECISION_FLOAT_GAMMA => '550', GIMP_PRECISION_FLOAT_GAMMA => '650',
GIMP_PRECISION_DOUBLE_LINEAR => '600', GIMP_PRECISION_DOUBLE_LINEAR => '700',
GIMP_PRECISION_DOUBLE_GAMMA => '650' } GIMP_PRECISION_DOUBLE_GAMMA => '750' }
}, },
GimpRotationType => GimpRotationType =>
{ contig => 1, { contig => 1,