You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1025 lines
48 KiB
1025 lines
48 KiB
/* |
|
File: CMICCProfile.h |
|
|
|
Contains: ICC Profile Format Definitions |
|
|
|
Version: QuickTime 7.3 |
|
|
|
Copyright: (c) 2007 (c) 1994-2001 by Apple Computer, Inc., all rights reserved. |
|
|
|
Bugs?: For bug reports, consult the following page on |
|
the World Wide Web: |
|
|
|
http://developer.apple.com/bugreporter/ |
|
|
|
*/ |
|
#ifndef __CMICCPROFILE__ |
|
#define __CMICCPROFILE__ |
|
|
|
#ifndef __MACTYPES__ |
|
#include <MacTypes.h> |
|
#endif |
|
|
|
|
|
|
|
#if PRAGMA_ONCE |
|
#pragma once |
|
#endif |
|
|
|
#if PRAGMA_IMPORT |
|
#pragma import on |
|
#endif |
|
|
|
#if PRAGMA_STRUCT_ALIGN |
|
#pragma options align=mac68k |
|
#elif PRAGMA_STRUCT_PACKPUSH |
|
#pragma pack(push, 2) |
|
#elif PRAGMA_STRUCT_PACK |
|
#pragma pack(2) |
|
#endif |
|
|
|
/* ICC Profile version constants */ |
|
enum { |
|
cmICCProfileVersion4 = 0x04000000, |
|
cmICCProfileVersion2 = 0x02000000, |
|
cmICCProfileVersion21 = 0x02100000, |
|
cmCS2ProfileVersion = cmICCProfileVersion2, |
|
cmCS1ProfileVersion = 0x00000100 /* ColorSync 1.0 profile version */ |
|
}; |
|
|
|
/* Current Major version number */ |
|
enum { |
|
cmProfileMajorVersionMask = (long)0xFF000000, |
|
cmCurrentProfileMajorVersion = 0x02000000 |
|
}; |
|
|
|
/* magic cookie number for anonymous file ID */ |
|
enum { |
|
cmMagicNumber = FOUR_CHAR_CODE('acsp') |
|
}; |
|
|
|
|
|
/************************************************************************/ |
|
/*************** ColorSync 2.0 profile specification ********************/ |
|
/************************************************************************/ |
|
/**** flags field ****/ |
|
enum { |
|
cmICCReservedFlagsMask = 0x0000FFFF, /* these bits of the flags field are defined and reserved by ICC */ |
|
cmEmbeddedMask = 0x00000001, /* if bit 0 is 0 then not embedded profile, if 1 then embedded profile */ |
|
cmEmbeddedUseMask = 0x00000002, /* if bit 1 is 0 then ok to use anywhere, if 1 then ok to use as embedded profile only */ |
|
cmCMSReservedFlagsMask = (long)0xFFFF0000, /* these bits of the flags field are defined and reserved by CMS vendor */ |
|
cmQualityMask = 0x00030000, /* if bits 16-17 is 0 then normal, if 1 then draft, if 2 then best */ |
|
cmInterpolationMask = 0x00040000, /* if bit 18 is 0 then interpolation, if 1 then lookup only */ |
|
cmGamutCheckingMask = 0x00080000 /* if bit 19 is 0 then create gamut checking info, if 1 then no gamut checking info */ |
|
}; |
|
|
|
/* copyright-protection flag options */ |
|
enum { |
|
cmEmbeddedProfile = 0, /* 0 is not embedded profile, 1 is embedded profile */ |
|
cmEmbeddedUse = 1 /* 0 is to use anywhere, 1 is to use as embedded profile only */ |
|
}; |
|
|
|
/* speed and quality flag options */ |
|
enum { |
|
cmNormalMode = 0, /* it uses the least significent two bits in the high word of flag */ |
|
cmDraftMode = 1, /* it should be evaulated like this: right shift 16 bits first, mask off the */ |
|
cmBestMode = 2 /* high 14 bits, and then compare with the enum to determine the option value */ |
|
}; |
|
|
|
|
|
/**** deviceAttributes fields ****/ |
|
/* deviceAttributes[0] is defined by and reserved for device vendors */ |
|
/* deviceAttributes[1] is defined by and reserved for ICC */ |
|
/* The following bits of deviceAttributes[1] are currently defined */ |
|
enum { |
|
cmReflectiveTransparentMask = 0x00000001, /* if bit 0 is 0 then reflective media, if 1 then transparency media */ |
|
cmGlossyMatteMask = 0x00000002 /* if bit 1 is 0 then glossy, if 1 then matte */ |
|
}; |
|
|
|
/* device/media attributes element values */ |
|
enum { |
|
cmReflective = 0, /* if bit 0 is 0 then reflective media, if 1 then transparency media */ |
|
cmGlossy = 1 /* if bit 1 is 0 then glossy, if 1 then matte */ |
|
}; |
|
|
|
|
|
/**** renderingIntent field ****/ |
|
enum { |
|
cmPerceptual = 0, /* Photographic images */ |
|
cmRelativeColorimetric = 1, /* Logo Colors */ |
|
cmSaturation = 2, /* Business graphics */ |
|
cmAbsoluteColorimetric = 3 /* Logo Colors */ |
|
}; |
|
|
|
|
|
|
|
/* data type element values */ |
|
enum { |
|
cmAsciiData = 0, |
|
cmBinaryData = 1 |
|
}; |
|
|
|
/* screen encodings */ |
|
enum { |
|
cmPrtrDefaultScreens = 0, /* Use printer default screens. 0 is false, 1 is ture */ |
|
cmLinesPer = 1 /* 0 is LinesPerCm, 1 is LinesPerInch */ |
|
}; |
|
|
|
/* 2.0 tag type information */ |
|
enum { |
|
cmNumHeaderElements = 10 |
|
}; |
|
|
|
/* public tags */ |
|
enum { |
|
cmAToB0Tag = FOUR_CHAR_CODE('A2B0'), |
|
cmAToB1Tag = FOUR_CHAR_CODE('A2B1'), |
|
cmAToB2Tag = FOUR_CHAR_CODE('A2B2'), |
|
cmBlueColorantTag = FOUR_CHAR_CODE('bXYZ'), |
|
cmBlueTRCTag = FOUR_CHAR_CODE('bTRC'), |
|
cmBToA0Tag = FOUR_CHAR_CODE('B2A0'), |
|
cmBToA1Tag = FOUR_CHAR_CODE('B2A1'), |
|
cmBToA2Tag = FOUR_CHAR_CODE('B2A2'), |
|
cmCalibrationDateTimeTag = FOUR_CHAR_CODE('calt'), |
|
cmChromaticAdaptationTag = FOUR_CHAR_CODE('chad'), |
|
cmCharTargetTag = FOUR_CHAR_CODE('targ'), |
|
cmCopyrightTag = FOUR_CHAR_CODE('cprt'), |
|
cmDeviceMfgDescTag = FOUR_CHAR_CODE('dmnd'), |
|
cmDeviceModelDescTag = FOUR_CHAR_CODE('dmdd'), |
|
cmGamutTag = FOUR_CHAR_CODE('gamt'), |
|
cmGrayTRCTag = FOUR_CHAR_CODE('kTRC'), |
|
cmGreenColorantTag = FOUR_CHAR_CODE('gXYZ'), |
|
cmGreenTRCTag = FOUR_CHAR_CODE('gTRC'), |
|
cmLuminanceTag = FOUR_CHAR_CODE('lumi'), |
|
cmMeasurementTag = FOUR_CHAR_CODE('meas'), |
|
cmMediaBlackPointTag = FOUR_CHAR_CODE('bkpt'), |
|
cmMediaWhitePointTag = FOUR_CHAR_CODE('wtpt'), |
|
cmNamedColorTag = FOUR_CHAR_CODE('ncol'), |
|
cmNamedColor2Tag = FOUR_CHAR_CODE('ncl2'), |
|
cmPreview0Tag = FOUR_CHAR_CODE('pre0'), |
|
cmPreview1Tag = FOUR_CHAR_CODE('pre1'), |
|
cmPreview2Tag = FOUR_CHAR_CODE('pre2'), |
|
cmProfileDescriptionTag = FOUR_CHAR_CODE('desc'), |
|
cmProfileSequenceDescTag = FOUR_CHAR_CODE('pseq'), |
|
cmPS2CRD0Tag = FOUR_CHAR_CODE('psd0'), |
|
cmPS2CRD1Tag = FOUR_CHAR_CODE('psd1'), |
|
cmPS2CRD2Tag = FOUR_CHAR_CODE('psd2'), |
|
cmPS2CRD3Tag = FOUR_CHAR_CODE('psd3'), |
|
cmPS2CSATag = FOUR_CHAR_CODE('ps2s'), |
|
cmPS2RenderingIntentTag = FOUR_CHAR_CODE('ps2i'), |
|
cmRedColorantTag = FOUR_CHAR_CODE('rXYZ'), |
|
cmRedTRCTag = FOUR_CHAR_CODE('rTRC'), |
|
cmScreeningDescTag = FOUR_CHAR_CODE('scrd'), |
|
cmScreeningTag = FOUR_CHAR_CODE('scrn'), |
|
cmTechnologyTag = FOUR_CHAR_CODE('tech'), |
|
cmUcrBgTag = FOUR_CHAR_CODE('bfd '), |
|
cmViewingConditionsDescTag = FOUR_CHAR_CODE('vued'), |
|
cmViewingConditionsTag = FOUR_CHAR_CODE('view') |
|
}; |
|
|
|
/* custom tags */ |
|
enum { |
|
cmPS2CRDVMSizeTag = FOUR_CHAR_CODE('psvm'), |
|
cmVideoCardGammaTag = FOUR_CHAR_CODE('vcgt'), |
|
cmMakeAndModelTag = FOUR_CHAR_CODE('mmod'), |
|
cmProfileDescriptionMLTag = FOUR_CHAR_CODE('dscm'), |
|
cmNativeDisplayInfoTag = FOUR_CHAR_CODE('ndin') |
|
}; |
|
|
|
/* public type signatures */ |
|
enum { |
|
cmSigCrdInfoType = FOUR_CHAR_CODE('crdi'), |
|
cmSigCurveType = FOUR_CHAR_CODE('curv'), |
|
cmSigDataType = FOUR_CHAR_CODE('data'), |
|
cmSigDateTimeType = FOUR_CHAR_CODE('dtim'), |
|
cmSigLut16Type = FOUR_CHAR_CODE('mft2'), |
|
cmSigLut8Type = FOUR_CHAR_CODE('mft1'), |
|
cmSigMeasurementType = FOUR_CHAR_CODE('meas'), |
|
cmSigMultiFunctA2BType = FOUR_CHAR_CODE('mAB '), |
|
cmSigMultiFunctB2AType = FOUR_CHAR_CODE('mBA '), |
|
cmSigNamedColorType = FOUR_CHAR_CODE('ncol'), |
|
cmSigNamedColor2Type = FOUR_CHAR_CODE('ncl2'), |
|
cmSigParametricCurveType = FOUR_CHAR_CODE('para'), |
|
cmSigProfileDescriptionType = FOUR_CHAR_CODE('desc'), |
|
cmSigProfileSequenceDescType = FOUR_CHAR_CODE('pseq'), |
|
cmSigScreeningType = FOUR_CHAR_CODE('scrn'), |
|
cmSigS15Fixed16Type = FOUR_CHAR_CODE('sf32'), |
|
cmSigSignatureType = FOUR_CHAR_CODE('sig '), |
|
cmSigTextType = FOUR_CHAR_CODE('text'), |
|
cmSigU16Fixed16Type = FOUR_CHAR_CODE('uf32'), |
|
cmSigU1Fixed15Type = FOUR_CHAR_CODE('uf16'), |
|
cmSigUInt8Type = FOUR_CHAR_CODE('ui08'), |
|
cmSigUInt16Type = FOUR_CHAR_CODE('ui16'), |
|
cmSigUInt32Type = FOUR_CHAR_CODE('ui32'), |
|
cmSigUInt64Type = FOUR_CHAR_CODE('ui64'), |
|
cmSigUcrBgType = FOUR_CHAR_CODE('bfd '), |
|
cmSigUnicodeTextType = FOUR_CHAR_CODE('utxt'), |
|
cmSigViewingConditionsType = FOUR_CHAR_CODE('view'), |
|
cmSigXYZType = FOUR_CHAR_CODE('XYZ ') |
|
}; |
|
|
|
/* custom type signatures */ |
|
enum { |
|
cmSigPS2CRDVMSizeType = FOUR_CHAR_CODE('psvm'), |
|
cmSigVideoCardGammaType = FOUR_CHAR_CODE('vcgt'), |
|
cmSigMakeAndModelType = FOUR_CHAR_CODE('mmod'), |
|
cmSigNativeDisplayInfoType = FOUR_CHAR_CODE('ndin'), |
|
cmSigMultiLocalizedUniCodeType = FOUR_CHAR_CODE('mluc') |
|
}; |
|
|
|
|
|
/* technology tag descriptions */ |
|
enum { |
|
cmTechnologyDigitalCamera = FOUR_CHAR_CODE('dcam'), |
|
cmTechnologyFilmScanner = FOUR_CHAR_CODE('fscn'), |
|
cmTechnologyReflectiveScanner = FOUR_CHAR_CODE('rscn'), |
|
cmTechnologyInkJetPrinter = FOUR_CHAR_CODE('ijet'), |
|
cmTechnologyThermalWaxPrinter = FOUR_CHAR_CODE('twax'), |
|
cmTechnologyElectrophotographicPrinter = FOUR_CHAR_CODE('epho'), |
|
cmTechnologyElectrostaticPrinter = FOUR_CHAR_CODE('esta'), |
|
cmTechnologyDyeSublimationPrinter = FOUR_CHAR_CODE('dsub'), |
|
cmTechnologyPhotographicPaperPrinter = FOUR_CHAR_CODE('rpho'), |
|
cmTechnologyFilmWriter = FOUR_CHAR_CODE('fprn'), |
|
cmTechnologyVideoMonitor = FOUR_CHAR_CODE('vidm'), |
|
cmTechnologyVideoCamera = FOUR_CHAR_CODE('vidc'), |
|
cmTechnologyProjectionTelevision = FOUR_CHAR_CODE('pjtv'), |
|
cmTechnologyCRTDisplay = FOUR_CHAR_CODE('CRT '), |
|
cmTechnologyPMDisplay = FOUR_CHAR_CODE('PMD '), |
|
cmTechnologyAMDisplay = FOUR_CHAR_CODE('AMD '), |
|
cmTechnologyPhotoCD = FOUR_CHAR_CODE('KPCD'), |
|
cmTechnologyPhotoImageSetter = FOUR_CHAR_CODE('imgs'), |
|
cmTechnologyGravure = FOUR_CHAR_CODE('grav'), |
|
cmTechnologyOffsetLithography = FOUR_CHAR_CODE('offs'), |
|
cmTechnologySilkscreen = FOUR_CHAR_CODE('silk'), |
|
cmTechnologyFlexography = FOUR_CHAR_CODE('flex') |
|
}; |
|
|
|
|
|
/* Measurement type encodings */ |
|
/* Measurement Flare */ |
|
enum { |
|
cmFlare0 = 0x00000000, |
|
cmFlare100 = 0x00000001 |
|
}; |
|
|
|
/* Measurement Geometry */ |
|
enum { |
|
cmGeometryUnknown = 0x00000000, |
|
cmGeometry045or450 = 0x00000001, |
|
cmGeometry0dord0 = 0x00000002 |
|
}; |
|
|
|
/* Standard Observer */ |
|
enum { |
|
cmStdobsUnknown = 0x00000000, |
|
cmStdobs1931TwoDegrees = 0x00000001, |
|
cmStdobs1964TenDegrees = 0x00000002 |
|
}; |
|
|
|
/* Standard Illuminant */ |
|
enum { |
|
cmIlluminantUnknown = 0x00000000, |
|
cmIlluminantD50 = 0x00000001, |
|
cmIlluminantD65 = 0x00000002, |
|
cmIlluminantD93 = 0x00000003, |
|
cmIlluminantF2 = 0x00000004, |
|
cmIlluminantD55 = 0x00000005, |
|
cmIlluminantA = 0x00000006, |
|
cmIlluminantEquiPower = 0x00000007, |
|
cmIlluminantF8 = 0x00000008 |
|
}; |
|
|
|
/* Spot Function Value */ |
|
enum { |
|
cmSpotFunctionUnknown = 0, |
|
cmSpotFunctionDefault = 1, |
|
cmSpotFunctionRound = 2, |
|
cmSpotFunctionDiamond = 3, |
|
cmSpotFunctionEllipse = 4, |
|
cmSpotFunctionLine = 5, |
|
cmSpotFunctionSquare = 6, |
|
cmSpotFunctionCross = 7 |
|
}; |
|
|
|
/* Color Space Signatures */ |
|
enum { |
|
cmXYZData = FOUR_CHAR_CODE('XYZ '), |
|
cmLabData = FOUR_CHAR_CODE('Lab '), |
|
cmLuvData = FOUR_CHAR_CODE('Luv '), |
|
cmYCbCrData = FOUR_CHAR_CODE('YCbr'), |
|
cmYxyData = FOUR_CHAR_CODE('Yxy '), |
|
cmRGBData = FOUR_CHAR_CODE('RGB '), |
|
cmSRGBData = FOUR_CHAR_CODE('sRGB'), |
|
cmGrayData = FOUR_CHAR_CODE('GRAY'), |
|
cmHSVData = FOUR_CHAR_CODE('HSV '), |
|
cmHLSData = FOUR_CHAR_CODE('HLS '), |
|
cmCMYKData = FOUR_CHAR_CODE('CMYK'), |
|
cmCMYData = FOUR_CHAR_CODE('CMY '), |
|
cmMCH5Data = FOUR_CHAR_CODE('MCH5'), |
|
cmMCH6Data = FOUR_CHAR_CODE('MCH6'), |
|
cmMCH7Data = FOUR_CHAR_CODE('MCH7'), |
|
cmMCH8Data = FOUR_CHAR_CODE('MCH8'), |
|
cm3CLRData = FOUR_CHAR_CODE('3CLR'), |
|
cm4CLRData = FOUR_CHAR_CODE('4CLR'), |
|
cm5CLRData = FOUR_CHAR_CODE('5CLR'), |
|
cm6CLRData = FOUR_CHAR_CODE('6CLR'), |
|
cm7CLRData = FOUR_CHAR_CODE('7CLR'), |
|
cm8CLRData = FOUR_CHAR_CODE('8CLR'), |
|
cm9CLRData = FOUR_CHAR_CODE('9CLR'), |
|
cm10CLRData = FOUR_CHAR_CODE('ACLR'), |
|
cm11CLRData = FOUR_CHAR_CODE('BCLR'), |
|
cm12CLRData = FOUR_CHAR_CODE('CCLR'), |
|
cm13CLRData = FOUR_CHAR_CODE('DCLR'), |
|
cm14CLRData = FOUR_CHAR_CODE('ECLR'), |
|
cm15CLRData = FOUR_CHAR_CODE('FCLR'), |
|
cmNamedData = FOUR_CHAR_CODE('NAME') |
|
}; |
|
|
|
/* profileClass enumerations */ |
|
enum { |
|
cmInputClass = FOUR_CHAR_CODE('scnr'), |
|
cmDisplayClass = FOUR_CHAR_CODE('mntr'), |
|
cmOutputClass = FOUR_CHAR_CODE('prtr'), |
|
cmLinkClass = FOUR_CHAR_CODE('link'), |
|
cmAbstractClass = FOUR_CHAR_CODE('abst'), |
|
cmColorSpaceClass = FOUR_CHAR_CODE('spac'), |
|
cmNamedColorClass = FOUR_CHAR_CODE('nmcl') |
|
}; |
|
|
|
/* platform enumerations */ |
|
enum { |
|
cmMacintosh = FOUR_CHAR_CODE('APPL'), |
|
cmMicrosoft = FOUR_CHAR_CODE('MSFT'), |
|
cmSolaris = FOUR_CHAR_CODE('SUNW'), |
|
cmSiliconGraphics = FOUR_CHAR_CODE('SGI '), |
|
cmTaligent = FOUR_CHAR_CODE('TGNT') |
|
}; |
|
|
|
/* parametric curve type enumerations */ |
|
enum { |
|
cmParametricType0 = 0, /* Y = X^gamma */ |
|
cmParametricType1 = 1, /* Y = (aX+b)^gamma [X>=-b/a], Y = 0 [X<-b/a] */ |
|
cmParametricType2 = 2, /* Y = (aX+b)^gamma + c [X>=-b/a], Y = c [X<-b/a] */ |
|
cmParametricType3 = 3, /* Y = (aX+b)^gamma [X>=d], Y = cX [X<d] */ |
|
cmParametricType4 = 4 /* Y = (aX+b)^gamma + e [X>=d], Y = cX+f [X<d] */ |
|
}; |
|
|
|
|
|
/* ColorSync 1.0 elements */ |
|
enum { |
|
cmCS1ChromTag = FOUR_CHAR_CODE('chrm'), |
|
cmCS1TRCTag = FOUR_CHAR_CODE('trc '), |
|
cmCS1NameTag = FOUR_CHAR_CODE('name'), |
|
cmCS1CustTag = FOUR_CHAR_CODE('cust') |
|
}; |
|
|
|
/* General element data types */ |
|
struct CMDateTime { |
|
UInt16 year; |
|
UInt16 month; |
|
UInt16 dayOfTheMonth; |
|
UInt16 hours; |
|
UInt16 minutes; |
|
UInt16 seconds; |
|
}; |
|
typedef struct CMDateTime CMDateTime; |
|
struct CMFixedXYColor { |
|
Fixed x; |
|
Fixed y; |
|
}; |
|
typedef struct CMFixedXYColor CMFixedXYColor; |
|
struct CMFixedXYZColor { |
|
Fixed X; |
|
Fixed Y; |
|
Fixed Z; |
|
}; |
|
typedef struct CMFixedXYZColor CMFixedXYZColor; |
|
|
|
typedef UInt16 CMXYZComponent; |
|
struct CMXYZColor { |
|
CMXYZComponent X; |
|
CMXYZComponent Y; |
|
CMXYZComponent Z; |
|
}; |
|
typedef struct CMXYZColor CMXYZColor; |
|
/* Typedef for Profile MD5 message digest */ |
|
/* Derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm */ |
|
|
|
typedef unsigned char CMProfileMD5[16]; |
|
typedef CMProfileMD5 * CMProfileMD5Ptr; |
|
|
|
/* |
|
* CMProfileMD5AreEqual() |
|
* |
|
* Availability: available as macro/inline |
|
*/ |
|
#ifdef __cplusplus |
|
inline Boolean CMProfileMD5AreEqual(CMProfileMD5 a, CMProfileMD5 b) |
|
{ |
|
return ((long*)a)[0]==((long*)b)[0] && ((long*)a)[1]==((long*)b)[1] && |
|
((long*)a)[2]==((long*)b)[2] && ((long*)a)[3]==((long*)b)[3]; |
|
} |
|
#else |
|
#define CMProfileMD5AreEqual(a, b) (\ |
|
((long*)a)[0]==((long*)b)[0] && ((long*)a)[1]==((long*)b)[1] && \ |
|
((long*)a)[2]==((long*)b)[2] && ((long*)a)[3]==((long*)b)[3]) |
|
#endif |
|
|
|
struct CM2Header { |
|
UInt32 size; /* This is the total size of the Profile */ |
|
OSType CMMType; /* CMM signature, Registered with CS2 consortium */ |
|
UInt32 profileVersion; /* Version of CMProfile format */ |
|
OSType profileClass; /* input, display, output, devicelink, abstract, or color conversion profile type */ |
|
OSType dataColorSpace; /* color space of data */ |
|
OSType profileConnectionSpace; /* profile connection color space */ |
|
CMDateTime dateTime; /* date and time of profile creation */ |
|
OSType CS2profileSignature; /* 'acsp' constant ColorSync 2.0 file ID */ |
|
OSType platform; /* primary profile platform, Registered with CS2 consortium */ |
|
UInt32 flags; /* profile flags */ |
|
OSType deviceManufacturer; /* Registered with ICC consortium */ |
|
UInt32 deviceModel; /* Registered with ICC consortium */ |
|
UInt32 deviceAttributes[2]; /* Attributes[0] is for device vendors, [1] is for ICC */ |
|
UInt32 renderingIntent; /* preferred rendering intent of tagged object */ |
|
CMFixedXYZColor white; /* profile illuminant */ |
|
OSType creator; /* profile creator */ |
|
char reserved[44]; /* reserved for future use */ |
|
}; |
|
typedef struct CM2Header CM2Header; |
|
struct CM4Header { |
|
UInt32 size; /* This is the total size of the Profile */ |
|
OSType CMMType; /* CMM signature, Registered with CS2 consortium */ |
|
UInt32 profileVersion; /* Version of CMProfile format */ |
|
OSType profileClass; /* input, display, output, devicelink, abstract, or color conversion profile type */ |
|
OSType dataColorSpace; /* color space of data */ |
|
OSType profileConnectionSpace; /* profile connection color space */ |
|
CMDateTime dateTime; /* date and time of profile creation */ |
|
OSType CS2profileSignature; /* 'acsp' constant ColorSync 2.0 file ID */ |
|
OSType platform; /* primary profile platform, Registered with CS2 consortium */ |
|
UInt32 flags; /* profile flags */ |
|
OSType deviceManufacturer; /* Registered with ICC consortium */ |
|
UInt32 deviceModel; /* Registered with ICC consortium */ |
|
UInt32 deviceAttributes[2]; /* Attributes[0] is for device vendors, [1] is for ICC */ |
|
UInt32 renderingIntent; /* preferred rendering intent of tagged object */ |
|
CMFixedXYZColor white; /* profile illuminant */ |
|
OSType creator; /* profile creator */ |
|
CMProfileMD5 digest; /* Profile message digest */ |
|
char reserved[28]; /* reserved for future use */ |
|
}; |
|
typedef struct CM4Header CM4Header; |
|
struct CMTagRecord { |
|
OSType tag; /* Registered with CS2 consortium */ |
|
UInt32 elementOffset; /* Relative to start of CMProfile */ |
|
UInt32 elementSize; |
|
}; |
|
typedef struct CMTagRecord CMTagRecord; |
|
struct CMTagElemTable { |
|
UInt32 count; |
|
CMTagRecord tagList[1]; /* variable size, determined by count */ |
|
}; |
|
typedef struct CMTagElemTable CMTagElemTable; |
|
struct CM2Profile { |
|
CM2Header header; |
|
CMTagElemTable tagTable; |
|
char elemData[1]; /* variable size data for tagged element storage */ |
|
}; |
|
typedef struct CM2Profile CM2Profile; |
|
typedef CM2Profile * CM2ProfilePtr; |
|
typedef CM2ProfilePtr * CM2ProfileHandle; |
|
/* Tag Type Definitions */ |
|
struct CMAdaptationMatrixType { |
|
OSType typeDescriptor; /* 'sf32' = cmSigS15Fixed16Type */ |
|
unsigned long reserved; /* fill with 0x00 */ |
|
Fixed adaptationMatrix[9]; /* fixed size of nine matrix entries */ |
|
}; |
|
typedef struct CMAdaptationMatrixType CMAdaptationMatrixType; |
|
struct CMCurveType { |
|
OSType typeDescriptor; /* 'curv' = cmSigCurveType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 countValue; /* number of entries in table that follows */ |
|
UInt16 data[1]; /* variable size, determined by countValue */ |
|
}; |
|
typedef struct CMCurveType CMCurveType; |
|
struct CMDataType { |
|
OSType typeDescriptor; /* 'data' = cmSigDataType*/ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 dataFlag; /* 0 = ASCII, 1 = binary */ |
|
char data[1]; /* variable size, determined by tag element size */ |
|
}; |
|
typedef struct CMDataType CMDataType; |
|
struct CMDateTimeType { |
|
OSType typeDescriptor; /* 'dtim' = cmSigDateTimeType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
CMDateTime dateTime; /* */ |
|
}; |
|
typedef struct CMDateTimeType CMDateTimeType; |
|
struct CMLut16Type { |
|
OSType typeDescriptor; /* 'mft2' = cmSigLut16Type */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt8 inputChannels; /* Number of input channels */ |
|
UInt8 outputChannels; /* Number of output channels */ |
|
UInt8 gridPoints; /* Number of clutTable grid points */ |
|
UInt8 reserved2; /* fill with 0x00 */ |
|
Fixed matrix[3][3]; /* */ |
|
UInt16 inputTableEntries; /* Number of entries in 1-D input luts */ |
|
UInt16 outputTableEntries; /* Number of entries in 1-D output luts */ |
|
UInt16 inputTable[1]; /* variable size, determined by inputChannels*inputTableEntries */ |
|
#if 0 /* NOTE: Field offsets are variable from here on. */ |
|
/* In order to correctly reflect the actual format of this tag, some of the fields in */ |
|
/* this structure have been removed because they follow an array field of variable size. */ |
|
/* As a result, the size of this structure has changed from previous versions of this interface. */ |
|
/* Code that relies on sizeof(CMLut16Type) should be changed. */ |
|
UInt16 CLUT[]; /* variable size, determined by (gridPoints^inputChannels)*outputChannels */ |
|
UInt16 outputTable[]; /* variable size, determined by outputChannels*outputTableEntries */ |
|
#endif |
|
}; |
|
typedef struct CMLut16Type CMLut16Type; |
|
struct CMLut8Type { |
|
OSType typeDescriptor; /* 'mft1' = cmSigLut8Type */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt8 inputChannels; /* Number of input channels */ |
|
UInt8 outputChannels; /* Number of output channels */ |
|
UInt8 gridPoints; /* Number of clutTable grid points */ |
|
UInt8 reserved2; /* fill with 0x00 */ |
|
Fixed matrix[3][3]; /* */ |
|
UInt8 inputTable[1]; /* variable size, determined by inputChannels*256 */ |
|
#if 0 /* NOTE: Field offsets are variable from here on. */ |
|
/* In order to correctly reflect the actual format of this tag, some of the fields in */ |
|
/* this structure have been removed because they follow an array field of variable size. */ |
|
/* As a result, the size of this structure has changed from previous versions of this interface. */ |
|
/* Code that relies on sizeof(CMLut8Type) should be changed. */ |
|
UInt8 CLUT[]; /* variable size, determined by (gridPoints^inputChannels)*outputChannels */ |
|
UInt8 outputTable[]; /* variable size, determined by outputChannels*256 */ |
|
#endif |
|
}; |
|
typedef struct CMLut8Type CMLut8Type; |
|
struct CMMultiFunctLutType { |
|
OSType typeDescriptor; /* 'mAB ' = cmSigMultiFunctA2BType or 'mBA ' = cmSigMultiFunctB2AType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt8 inputChannels; /* Number of input channels */ |
|
UInt8 outputChannels; /* Number of output channels */ |
|
UInt16 reserved2; /* fill with 0x00 */ |
|
UInt32 offsetBcurves; /* offset to first "B" curve */ |
|
UInt32 offsetMatrix; /* offset to 3x4 matrix */ |
|
UInt32 offsetMcurves; /* offset to first "M" curve */ |
|
UInt32 offsetCLUT; /* offset to multi-dimensional LUT of type CMMultiFunctCLUTType */ |
|
UInt32 offsetAcurves; /* offset to first "A" curve */ |
|
UInt8 data[1]; /* variable size */ |
|
}; |
|
typedef struct CMMultiFunctLutType CMMultiFunctLutType; |
|
typedef CMMultiFunctLutType CMMultiFunctLutA2BType; |
|
typedef CMMultiFunctLutType CMMultiFunctLutB2AType; |
|
struct CMMultiFunctCLUTType { |
|
UInt8 gridPoints[16]; /* grigpoints for each input channel dimension (remaining are 0) */ |
|
UInt8 entrySize; /* bytes per lut enrty (1 or 2) */ |
|
UInt8 reserved[3]; /* fill with 0x00 */ |
|
UInt8 data[1]; /* variable size, determined by above */ |
|
}; |
|
typedef struct CMMultiFunctCLUTType CMMultiFunctCLUTType; |
|
struct CMMeasurementType { |
|
OSType typeDescriptor; /* 'meas' = cmSigMeasurementType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 standardObserver; /* cmStdobsUnknown, cmStdobs1931TwoDegrees, cmStdobs1964TenDegrees */ |
|
CMFixedXYZColor backingXYZ; /* absolute XYZ values of backing */ |
|
UInt32 geometry; /* cmGeometryUnknown, cmGeometry045or450 (0/45), cmGeometry0dord0 (0/d or d/0) */ |
|
UInt32 flare; /* cmFlare0, cmFlare100 */ |
|
UInt32 illuminant; /* cmIlluminantUnknown, cmIlluminantD50, ... */ |
|
}; |
|
typedef struct CMMeasurementType CMMeasurementType; |
|
struct CMNamedColorType { |
|
OSType typeDescriptor; /* 'ncol' = cmSigNamedColorType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 vendorFlag; /* */ |
|
UInt32 count; /* count of named colors in array that follows */ |
|
UInt8 prefixName[1]; /* variable size, max = 32 */ |
|
#if 0 /* NOTE: Field offsets are variable from here on. */ |
|
/* In order to correctly reflect the actual format of this tag, some of the fields in */ |
|
/* this structure have been removed because they follow an array field of variable size. */ |
|
/* As a result, the size of this structure has changed from previous versions of this interface. */ |
|
/* Code that relies on sizeof(CMNamedColorType) should be changed. */ |
|
UInt8 suffixName[]; /* variable size, max = 32 */ |
|
struct { |
|
UInt8 rootName[]; /* variable size, max = 32 */ |
|
UInt8 colorCoords[]; /* variable size */ |
|
} colorName[]; /* variable size */ |
|
#endif |
|
}; |
|
typedef struct CMNamedColorType CMNamedColorType; |
|
struct CMNamedColor2EntryType { |
|
UInt8 rootName[32]; /* 32 byte field. 7 bit ASCII null terminated */ |
|
UInt16 PCSColorCoords[3]; /* Lab or XYZ color */ |
|
UInt16 DeviceColorCoords[1]; /* variable size */ |
|
}; |
|
typedef struct CMNamedColor2EntryType CMNamedColor2EntryType; |
|
struct CMNamedColor2Type { |
|
OSType typeDescriptor; /* 'ncl2' = cmSigNamedColor2Type */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 vendorFlag; /* lower 16 bits reserved for ICC use */ |
|
UInt32 count; /* count of named colors in array that follows */ |
|
UInt32 deviceChannelCount; /* number of device channels, 0 indicates no device value available */ |
|
UInt8 prefixName[32]; /* Fixed 32 byte size. 7 bit ASCII null terminated */ |
|
UInt8 suffixName[32]; /* Fixed 32 byte size. 7 bit ASCII null terminated */ |
|
char data[1]; /* variable size data for CMNamedColor2EntryType */ |
|
}; |
|
typedef struct CMNamedColor2Type CMNamedColor2Type; |
|
struct CMNativeDisplayInfo { |
|
UInt32 dataSize; /* Size of this structure */ |
|
CMFixedXYColor redPhosphor; /* Phosphors - native cromaticity values of the display */ |
|
CMFixedXYColor greenPhosphor; |
|
CMFixedXYColor bluePhosphor; |
|
CMFixedXYColor whitePoint; |
|
Fixed redGammaValue; /* Gammas - native gamma values of the display */ |
|
Fixed greenGammaValue; |
|
Fixed blueGammaValue; |
|
/* Gamma tables - if if gammaChannels is not zero, */ |
|
/* native gamma tables are preferred over values */ |
|
/* redGammaValue, greenGammaValue, blueGammaValue */ |
|
UInt16 gammaChannels; /* # of gamma channels (1 or 3) */ |
|
UInt16 gammaEntryCount; /* 1-based number of entries per channel */ |
|
UInt16 gammaEntrySize; /* size in bytes of each entry */ |
|
char gammaData[1]; /* variable size, determined by channels*entryCount*entrySize */ |
|
}; |
|
typedef struct CMNativeDisplayInfo CMNativeDisplayInfo; |
|
struct CMNativeDisplayInfoType { |
|
OSType typeDescriptor; /* 'ndin' = cmSigNativeDisplayInfoType */ |
|
unsigned long reserved; /* fill with 0x00 */ |
|
CMNativeDisplayInfo nativeDisplayInfo; /* data of type CMNativeDisplayInfo */ |
|
}; |
|
typedef struct CMNativeDisplayInfoType CMNativeDisplayInfoType; |
|
struct CMParametricCurveType { |
|
OSType typeDescriptor; /* 'para' = cmSigParametricCurveType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt16 functionType; /* cmParametricType0, cmParametricType1, etc. */ |
|
UInt16 reserved2; /* fill with 0x00 */ |
|
Fixed value[1]; /* variable size, determined by functionType */ |
|
}; |
|
typedef struct CMParametricCurveType CMParametricCurveType; |
|
struct CMTextDescriptionType { |
|
OSType typeDescriptor; /* 'desc' = cmSigProfileDescriptionType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 ASCIICount; /* Count of bytes (including null terminator) */ |
|
UInt8 ASCIIName[2]; /* variable size, determined by ASCIICount. 7 bit ASCII null terminated */ |
|
#if 0 /* NOTE: Field offsets are variable from here on. */ |
|
/* In order to correctly reflect the actual format of this tag, some of the fields in */ |
|
/* this structure have been removed because they follow an array field of variable size. */ |
|
/* As a result, the size of this structure has changed from previous versions of this interface. */ |
|
/* Code that relies on sizeof(CMTextDescriptionType) should be changed. */ |
|
UInt32 UniCodeCode; /* Unused */ |
|
UInt32 UniCodeCount; /* Count of 2-byte characters (including null terminator) */ |
|
UInt8 UniCodeName[]; /* variable size, determined by UniCodeCount */ |
|
SInt16 ScriptCodeCode; /* Mac-defined script code */ |
|
UInt8 ScriptCodeCount; /* Count of bytes (including null terminator) */ |
|
UInt8 ScriptCodeName[]; /* variable size, determined by ScriptCodeCount */ |
|
#endif |
|
}; |
|
typedef struct CMTextDescriptionType CMTextDescriptionType; |
|
struct CMTextType { |
|
OSType typeDescriptor; /* 'text' = cmSigTextType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt8 text[1]; /* variable size, determined by tag element size */ |
|
}; |
|
typedef struct CMTextType CMTextType; |
|
struct CMUnicodeTextType { |
|
OSType typeDescriptor; /* 'utxt' = cmSigUnicodeTextType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UniChar text[1]; /* variable size, determined by tag element size */ |
|
}; |
|
typedef struct CMUnicodeTextType CMUnicodeTextType; |
|
struct CMScreeningChannelRec { |
|
Fixed frequency; |
|
Fixed angle; |
|
UInt32 spotFunction; |
|
}; |
|
typedef struct CMScreeningChannelRec CMScreeningChannelRec; |
|
struct CMScreeningType { |
|
OSType typeDescriptor; /* 'scrn' = cmSigScreeningType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 screeningFlag; /* bit 0 : use printer default screens, bit 1 : inch/cm */ |
|
UInt32 channelCount; /* */ |
|
CMScreeningChannelRec channelInfo[1]; /* variable size, determined by channelCount */ |
|
}; |
|
typedef struct CMScreeningType CMScreeningType; |
|
struct CMSignatureType { |
|
OSType typeDescriptor; /* 'sig ' = cmSigSignatureType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
OSType signature; |
|
}; |
|
typedef struct CMSignatureType CMSignatureType; |
|
struct CMS15Fixed16ArrayType { |
|
OSType typeDescriptor; /* 'sf32' = cmSigS15Fixed16Type */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
Fixed value[1]; /* variable size, determined by tag element size */ |
|
}; |
|
typedef struct CMS15Fixed16ArrayType CMS15Fixed16ArrayType; |
|
struct CMU16Fixed16ArrayType { |
|
OSType typeDescriptor; /* 'uf32' = cmSigU16Fixed16Type */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 value[1]; /* variable size, determined by tag element size */ |
|
}; |
|
typedef struct CMU16Fixed16ArrayType CMU16Fixed16ArrayType; |
|
struct CMUInt8ArrayType { |
|
OSType typeDescriptor; /* 'ui08' = cmSigUInt8Type */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt8 value[1]; /* variable size, determined by tag element size */ |
|
}; |
|
typedef struct CMUInt8ArrayType CMUInt8ArrayType; |
|
struct CMUInt16ArrayType { |
|
OSType typeDescriptor; /* 'ui16' = cmSigUInt16Type */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt16 value[1]; /* variable size, determined by tag element size */ |
|
}; |
|
typedef struct CMUInt16ArrayType CMUInt16ArrayType; |
|
struct CMUInt32ArrayType { |
|
OSType typeDescriptor; /* 'ui32' = cmSigUInt32Type */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 value[1]; /* variable size, determined by tag element size */ |
|
}; |
|
typedef struct CMUInt32ArrayType CMUInt32ArrayType; |
|
struct CMUInt64ArrayType { |
|
OSType typeDescriptor; /* 'ui64' = cmSigUInt64Type */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 value[1]; /* variable size, determined by tag element size */ |
|
}; |
|
typedef struct CMUInt64ArrayType CMUInt64ArrayType; |
|
struct CMViewingConditionsType { |
|
OSType typeDescriptor; /* 'view' = cmSigViewingConditionsType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
CMFixedXYZColor illuminant; /* absolute XYZs of illuminant in cd/m^2 */ |
|
CMFixedXYZColor surround; /* absolute XYZs of surround in cd/m^2 */ |
|
UInt32 stdIlluminant; /* see definitions of std illuminants */ |
|
}; |
|
typedef struct CMViewingConditionsType CMViewingConditionsType; |
|
struct CMXYZType { |
|
OSType typeDescriptor; /* 'XYZ ' = cmSigXYZType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
CMFixedXYZColor XYZ[1]; /* variable size, determined by tag element size */ |
|
}; |
|
typedef struct CMXYZType CMXYZType; |
|
struct CMProfileSequenceDescType { |
|
OSType typeDescriptor; /* 'pseq' = cmProfileSequenceDescTag */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 count; /* Number of descriptions */ |
|
char data[1]; /* variable size data explained in ICC spec */ |
|
}; |
|
typedef struct CMProfileSequenceDescType CMProfileSequenceDescType; |
|
struct CMUcrBgType { |
|
OSType typeDescriptor; /* 'bfd ' = cmSigUcrBgType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 ucrCount; /* Number of UCR entries */ |
|
UInt16 ucrValues[1]; /* variable size, determined by ucrCount */ |
|
#if 0 /* NOTE: Field offsets are variable from here on. */ |
|
/* In order to correctly reflect the actual format of this tag, some of the fields in */ |
|
/* this structure have been removed because they follow an array field of variable size. */ |
|
/* As a result, the size of this structure has changed from previous versions of this interface. */ |
|
/* Code that relies on sizeof(CMUcrBgType) should be changed. */ |
|
UInt32 bgCount; /* Number of BG entries */ |
|
UInt16 bgValues[]; /* variable size, determined by bgCount */ |
|
UInt8 ucrbgASCII[]; /* null terminated ASCII string */ |
|
#endif |
|
}; |
|
typedef struct CMUcrBgType CMUcrBgType; |
|
/* Private Tag Type Definitions */ |
|
struct CMIntentCRDVMSize { |
|
long renderingIntent; /* rendering intent */ |
|
UInt32 VMSize; /* VM size taken up by the CRD */ |
|
}; |
|
typedef struct CMIntentCRDVMSize CMIntentCRDVMSize; |
|
struct CMPS2CRDVMSizeType { |
|
OSType typeDescriptor; /* 'psvm' = cmSigPS2CRDVMSizeType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 count; /* number of intent entries */ |
|
CMIntentCRDVMSize intentCRD[1]; /* variable size, determined by count */ |
|
}; |
|
typedef struct CMPS2CRDVMSizeType CMPS2CRDVMSizeType; |
|
enum { |
|
cmVideoCardGammaTableType = 0, |
|
cmVideoCardGammaFormulaType = 1 |
|
}; |
|
|
|
struct CMVideoCardGammaTable { |
|
UInt16 channels; /* # of gamma channels (1 or 3) */ |
|
UInt16 entryCount; /* 1-based number of entries per channel */ |
|
UInt16 entrySize; /* size in bytes of each entry */ |
|
char data[1]; /* variable size, determined by channels*entryCount*entrySize */ |
|
}; |
|
typedef struct CMVideoCardGammaTable CMVideoCardGammaTable; |
|
struct CMVideoCardGammaFormula { |
|
Fixed redGamma; /* must be > 0.0 */ |
|
Fixed redMin; /* must be > 0.0 and < 1.0 */ |
|
Fixed redMax; /* must be > 0.0 and < 1.0 */ |
|
Fixed greenGamma; /* must be > 0.0 */ |
|
Fixed greenMin; /* must be > 0.0 and < 1.0 */ |
|
Fixed greenMax; /* must be > 0.0 and < 1.0 */ |
|
Fixed blueGamma; /* must be > 0.0 */ |
|
Fixed blueMin; /* must be > 0.0 and < 1.0 */ |
|
Fixed blueMax; /* must be > 0.0 and < 1.0 */ |
|
}; |
|
typedef struct CMVideoCardGammaFormula CMVideoCardGammaFormula; |
|
struct CMVideoCardGamma { |
|
UInt32 tagType; |
|
union { |
|
CMVideoCardGammaTable table; |
|
CMVideoCardGammaFormula formula; |
|
} u; |
|
}; |
|
typedef struct CMVideoCardGamma CMVideoCardGamma; |
|
struct CMVideoCardGammaType { |
|
OSType typeDescriptor; /* 'vcgt' = cmSigVideoCardGammaType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
CMVideoCardGamma gamma; |
|
}; |
|
typedef struct CMVideoCardGammaType CMVideoCardGammaType; |
|
struct CMMakeAndModel { |
|
OSType manufacturer; |
|
UInt32 model; |
|
UInt32 serialNumber; |
|
UInt32 manufactureDate; |
|
UInt32 reserved1; /* fill with 0x00 */ |
|
UInt32 reserved2; /* fill with 0x00 */ |
|
UInt32 reserved3; /* fill with 0x00 */ |
|
UInt32 reserved4; /* fill with 0x00 */ |
|
}; |
|
typedef struct CMMakeAndModel CMMakeAndModel; |
|
struct CMMakeAndModelType { |
|
OSType typeDescriptor; /* 'mmod' = cmSigMakeAndModelType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
CMMakeAndModel makeAndModel; |
|
}; |
|
typedef struct CMMakeAndModelType CMMakeAndModelType; |
|
struct CMMultiLocalizedUniCodeEntryRec { |
|
char languageCode[2]; /* language code from ISO-639 */ |
|
char regionCode[2]; /* region code from ISO-3166 */ |
|
UInt32 textLength; /* the length in bytes of the string */ |
|
UInt32 textOffset; /* the offset from the start of tag in bytes */ |
|
}; |
|
typedef struct CMMultiLocalizedUniCodeEntryRec CMMultiLocalizedUniCodeEntryRec; |
|
struct CMMultiLocalizedUniCodeType { |
|
OSType typeDescriptor; /* 'mluc' = cmSigMultiLocalizedUniCodeType */ |
|
UInt32 reserved; /* fill with 0x00 */ |
|
UInt32 entryCount; /* 1-based number of name records that follow */ |
|
UInt32 entrySize; /* size in bytes of name records that follow */ |
|
|
|
/* variable-length data for storage of CMMultiLocalizedUniCodeEntryRec */ |
|
|
|
/* variable-length data for storage of Unicode strings*/ |
|
}; |
|
typedef struct CMMultiLocalizedUniCodeType CMMultiLocalizedUniCodeType; |
|
/************************************************************************/ |
|
/*************** ColorSync 1.0 profile specification ********************/ |
|
/************************************************************************/ |
|
enum { |
|
cmGrayResponse = 0, |
|
cmRedResponse = 1, |
|
cmGreenResponse = 2, |
|
cmBlueResponse = 3, |
|
cmCyanResponse = 4, |
|
cmMagentaResponse = 5, |
|
cmYellowResponse = 6, |
|
cmUcrResponse = 7, |
|
cmBgResponse = 8, |
|
cmOnePlusLastResponse = 9 |
|
}; |
|
|
|
|
|
/* Device types */ |
|
enum { |
|
cmMonitorDevice = FOUR_CHAR_CODE('mntr'), |
|
cmScannerDevice = FOUR_CHAR_CODE('scnr'), |
|
cmPrinterDevice = FOUR_CHAR_CODE('prtr') |
|
}; |
|
|
|
|
|
struct CMIString { |
|
ScriptCode theScript; |
|
Str63 theString; |
|
}; |
|
typedef struct CMIString CMIString; |
|
/* Profile options */ |
|
enum { |
|
cmPerceptualMatch = 0x0000, /* Default. For photographic images */ |
|
cmColorimetricMatch = 0x0001, /* Exact matching when possible */ |
|
cmSaturationMatch = 0x0002 /* For solid colors */ |
|
}; |
|
|
|
/* Profile flags */ |
|
enum { |
|
cmNativeMatchingPreferred = 0x00000001, /* Default to native not preferred */ |
|
cmTurnOffCache = 0x00000002 /* Default to turn on CMM cache */ |
|
}; |
|
|
|
|
|
typedef long CMMatchOption; |
|
typedef long CMMatchFlag; |
|
struct CMHeader { |
|
UInt32 size; |
|
OSType CMMType; |
|
UInt32 applProfileVersion; |
|
OSType dataType; |
|
OSType deviceType; |
|
OSType deviceManufacturer; |
|
UInt32 deviceModel; |
|
UInt32 deviceAttributes[2]; |
|
UInt32 profileNameOffset; |
|
UInt32 customDataOffset; |
|
CMMatchFlag flags; |
|
CMMatchOption options; |
|
CMXYZColor white; |
|
CMXYZColor black; |
|
}; |
|
typedef struct CMHeader CMHeader; |
|
struct CMProfileChromaticities { |
|
CMXYZColor red; |
|
CMXYZColor green; |
|
CMXYZColor blue; |
|
CMXYZColor cyan; |
|
CMXYZColor magenta; |
|
CMXYZColor yellow; |
|
}; |
|
typedef struct CMProfileChromaticities CMProfileChromaticities; |
|
struct CMProfileResponse { |
|
UInt16 counts[9]; |
|
UInt16 data[1]; /* Variable size */ |
|
}; |
|
typedef struct CMProfileResponse CMProfileResponse; |
|
struct CMProfile { |
|
CMHeader header; |
|
CMProfileChromaticities profile; |
|
CMProfileResponse response; |
|
CMIString profileName; |
|
char customData[1]; /* Variable size */ |
|
}; |
|
typedef struct CMProfile CMProfile; |
|
typedef CMProfile * CMProfilePtr; |
|
typedef CMProfilePtr * CMProfileHandle; |
|
#if OLDROUTINENAMES |
|
enum { |
|
kCMApplProfileVersion = cmCS1ProfileVersion |
|
}; |
|
|
|
enum { |
|
grayResponse = cmGrayResponse, |
|
redResponse = cmRedResponse, |
|
greenResponse = cmGreenResponse, |
|
blueResponse = cmBlueResponse, |
|
cyanResponse = cmCyanResponse, |
|
magentaResponse = cmMagentaResponse, |
|
yellowResponse = cmYellowResponse, |
|
ucrResponse = cmUcrResponse, |
|
bgResponse = cmBgResponse, |
|
onePlusLastResponse = cmOnePlusLastResponse |
|
}; |
|
|
|
enum { |
|
rgbData = cmRGBData, |
|
cmykData = cmCMYKData, |
|
grayData = cmGrayData, |
|
xyzData = cmXYZData |
|
}; |
|
|
|
enum { |
|
XYZData = cmXYZData |
|
}; |
|
|
|
enum { |
|
monitorDevice = cmMonitorDevice, |
|
scannerDevice = cmScannerDevice, |
|
printerDevice = cmPrinterDevice |
|
}; |
|
|
|
enum { |
|
CMNativeMatchingPreferred = cmNativeMatchingPreferred, /* Default to native not preferred */ |
|
CMTurnOffCache = cmTurnOffCache /* Default to turn on CMM cache */ |
|
}; |
|
|
|
enum { |
|
CMPerceptualMatch = cmPerceptualMatch, /* Default. For photographic images */ |
|
CMColorimetricMatch = cmColorimetricMatch, /* Exact matching when possible */ |
|
CMSaturationMatch = cmSaturationMatch /* For solid colors */ |
|
}; |
|
|
|
typedef UInt16 XYZComponent; |
|
typedef CMXYZColor XYZColor; |
|
typedef UInt16 CMResponseData; |
|
typedef CMIString IString; |
|
typedef long CMResponseColor; |
|
typedef CMResponseColor responseColor; |
|
#endif /* OLDROUTINENAMES */ |
|
|
|
|
|
|
|
#if PRAGMA_STRUCT_ALIGN |
|
#pragma options align=reset |
|
#elif PRAGMA_STRUCT_PACKPUSH |
|
#pragma pack(pop) |
|
#elif PRAGMA_STRUCT_PACK |
|
#pragma pack() |
|
#endif |
|
|
|
#ifdef PRAGMA_IMPORT_OFF |
|
#pragma import off |
|
#elif PRAGMA_IMPORT |
|
#pragma import reset |
|
#endif |
|
|
|
|
|
#endif /* __CMICCPROFILE__ */ |
|
|
|
|