/* +----------------------------------------------------+ | LTCLR.H - color conversion module header file | | Copyright (c) 1991-2001 LEAD Technologies, Inc. | | All Rights Reserved. | +----------------------------------------------------+ */ #ifndef _LTCLR_H_ #define _LTCLR_H_ #include "Lttyp.h" #define _HEADER_ENTRY_ #include "ltpck.h" #include "ltdis.h" /* white points constants */ #define CIELAB_D50 50 #define CIELAB_D55 55 #define CIELAB_D65 65 #define CIELAB_D75 75 #define CIELAB_D93 93 #define CIELAB_CUSTOM 00 #define CIELAB_DEFAULT CIELAB_D50 /* nMethod values for CONVERSION_PARAMS */ #define USE_BUILTIN 1 /* for equations */ #define USE_ICC 2 /* for Profiles */ #define USE_CUSTOM_ICC 4 /* for Custom Profiles */ #define USE_ET 8 /* for Emulation Tables */ #define USE_CUSTOM_ET 16 /* for Custom Emulation Tables */ #define USE_AUTO 32 /* for Best Conversion */ #define USE_ALL 63 /* for all of the above */ /* nMask values for SET_CONVERSION_PARAMS */ #define CHANGE_ACTIVE_METHOD 1 /* change the active method */ #define CHANGE_CUSTOM_PROFILES 2 /* change profiles */ #define CHANGE_WHITE_POINT 4 /* change white point */ #define CHANGE_ET 8 /* change Emulation Tables */ #define CHANGE_CMYK 16 /* change CMYK parameters */ #define CHANGE_YUV 32 /* change YUV parameters */ #define CHANGE_LAB 64 /* change LAB parameters */ #define CHANGE_ALL 127 /* cahnge all of the above */ /* nMask values for CMYK_PARAMS */ #define CMYK_GCR 1 /* change nGcr_level */ /* nDlg values for L_ClrDlg */ #define DLG_CMYK 1 /* CMYK dialog */ #define DLG_LAB 2 /* LAB dialog */ /* nMask values for LAB_PARAMS */ #define LAB_L_OFFSET 1 /* change L_min value */ #define LAB_L_RANGE 2 /* change a_min value */ #define LAB_a_OFFSET 4 /* change b_min value */ #define LAB_a_RANGE 8 /* change L_max value */ #define LAB_b_OFFSET 16 /* change a_max value */ #define LAB_b_RANGE 32 /* change b_max value */ /* nMask values for YUV_PARAMS */ #define YUV_UH 1 /* change nUh value */ #define YUV_UV 2 /* change nUv value */ #define YUV_VH 4 /* change nVh value */ #define YUV_VV 8 /* change nvV value */ #define YUV_OFFSETS 16 /* change pOffsets value */ #define YUV_MACROPIXEL 32 /* change nMacroPixel value */ #define YUV_RANGE 64 /* change nRange value */ /* nRange values for YUV_PARAMS */ #define YUVRANGE_FULL 0 /* the range is 000 - 255 */ #define YUVRANGE_16_240 1 /* the range is 016 - 240 */ #define PLANAR_YUV 0 #define PLANAR_YVU 1 #define PLANAR_UYV 2 #define PLANAR_UVY 3 #define PLANAR_VYU 4 #define PLANAR_VUY 5 /* nGamma constants */ #define GAMMA_STANDARD 45 /* 2.22 */ /* user defined structures: */ typedef struct { L_INT nWhitePoint; L_DOUBLE xWhite; L_DOUBLE yWhite; } WHITEPOINT, L_FAR* LPWHITEPOINT; typedef struct { L_UINT uStructSize; L_INT nGcr_level; /* value between 0.0 and 1.0 */ L_INT nMask; } CMYK_PARAMS, *LPCMYK_PARAMS; typedef struct { L_UINT uStructSize; L_INT nMask; L_INT nUh; /* horizontal frequency of U */ L_INT nUv; /* vertical frequency of U */ L_INT nVh; /* horizontal frequency of V */ L_INT nVv; /* vertical frequency of V */ L_INT *pOffsets; /* offsets of the byte ordering for the proposed YUV format. */ /* when bPlaner is TRUE, the only useful data is pOffset[0] */ /* which will indicate what is the arrangement of the YUV */ /* buffer(YUV,YVU,UYV,UVY,VYU,VUY) */ L_INT nMacroPixel; /* number of pixels in the macro pixel */ L_INT nRange; /* the range of values in the input buffer; full */ /* range or 16-240 (YUVRANGE_FULL and YUVRANGE_16_240) */ L_BOOL bPlanar; /* the buffer consists of planes; Y plane, V plane and U plane.*/ } YUV_PARAMS, *LPYUV_PARAMS; typedef struct { L_UINT uStructSize; L_INT nMask; L_INT L_offset; L_INT L_range; L_INT a_offset; L_INT a_range; L_INT b_offset; L_INT b_range; } LAB_PARAMS, *LPLAB_PARAMS; typedef struct _MEMICCPROFILE { L_UINT uStructSize; L_UCHAR* pData; L_UINT uDataSize; } MEMICCPROFILE, * pMEMICCPROFILE; typedef struct _CONVERSION_PARAMS { L_UINT uStructSize; L_INT nActiveMethod; /* one of the values: USE_BUILTINT for builtin, */ /* USE_ICC for Profiles, */ /* USE_ICC_CUSTOM for user-defined profiles */ /* USE_ET for built-in Emulation Tables. */ /* USE_CUSTOM_ET for custom Emulation Tables. */ /* USE_AUTO for best conversion method. */ /* USE_ALL for all. */ LPWHITEPOINT pWpoint; /* white point struct that describes the white point to be used. */ L_TCHAR sInputProfile[L_MAX_PATH]; /* optional input profile */ pMEMICCPROFILE pMemInputProfile; /* optional source memory profile */ L_TCHAR sOutputProfile[L_MAX_PATH];/* optional output profile */ pMEMICCPROFILE pMemOutputProfile; /* optional destination memory profile */ L_TCHAR sDstInputTable[L_MAX_PATH];/* optional Dst image for emulation */ LPCMYK_PARAMS pCmykParams; /* CMYK data */ LPYUV_PARAMS pYuvParams; /* YUV data */ LPLAB_PARAMS pLabParams; /* CIELab data */ L_INT nMethod; /* in the case we use it with L_ClrInit function this structure */ /* will have one of the valuse: */ /* USE_BUILTINT for builtin, */ /* USE_ICC for Profiles, */ /* USE_ICC_CUSTOM for user-defined profiles */ /* USE_ET for built-in Emulation Tables. */ /* USE_CUSTOM_ET for custom Emulation Tables. */ /* USE_AUTO for best conversion method. */ /* USE_ALL for all. */ /* in the case used with L_SetConversionParams function, it will */ /* hold the masking valuse */ L_INT nQuantization; /* quantization level, used with USE_ET */ } CONVERSION_PARAMS, *LPCONVERSION_PARAMS; /* user functions: */ L_INT EXT_FUNCTION L_ClrInit(W_HANDLE *pClrHandle, L_INT nSrcFormat, L_INT nDstFormat, LPCONVERSION_PARAMS pParams); L_INT EXT_FUNCTION L_ClrSetConversionParams(W_HANDLE ClrHandle, LPCONVERSION_PARAMS pParams); L_INT EXT_FUNCTION L_ClrConvertDirect(L_INT nSrcFormat, L_INT nDstFormat, L_UCHAR *pSrcBuf, L_UCHAR *pDstBuf, L_INT nWidth, L_INT nHeight, L_INT nInAlign, L_INT nOutAlign); L_INT EXT_FUNCTION L_ClrConvertDirectToBitmap(L_INT nSrcFormat, L_INT nDstFormat, L_UCHAR *pSrcBuf, BITMAPHANDLE *pBitmap, L_UINT uStructSize, L_INT nWidth, L_INT nHeight, L_INT nInAlign, L_INT nOutAlign); L_INT EXT_FUNCTION L_ClrConvert(W_HANDLE ClrHandle, L_UCHAR *pSrc, L_UCHAR *pDst, L_INT nWidth, L_INT nHeight, L_INT nInAlign, L_INT nOutAlign); L_INT EXT_FUNCTION L_ClrConvertToBitmap(W_HANDLE ClrHandle, L_UCHAR *pSrcBuf, BITMAPHANDLE *pBitmap, L_UINT uStructSize, L_INT nWidth, L_INT nHeight, L_INT nInAlign, L_INT nOutAlign); L_INT EXT_FUNCTION L_ClrFree(W_HANDLE ClrHandle); L_INT EXT_FUNCTION L_ClrIsValid(W_HANDLE ClrHandle); L_INT EXT_FUNCTION L_ClrDlg(L_INT nDlg, HANDLE hWnd, HANDLE *pClrHandle, LPCONVERSION_PARAMS pParams); /********************************************************************************** * ICC Profiles - Begin * **********************************************************************************/ /*------------------------------------------------------------------------*/ /* Defines used in the specification */ /*------------------------------------------------------------------------*/ #define ICC_PROFILE_SIG 0x61637379L /* 'acsp' */ #define ICC_PROFILE_VER42 0x04200000L /* 4.2.0.0 */ #define ICC_PROFILE_VER40 0x04000000L /* 4.0.0.0 */ /* Profile header flags, the low 16 bits are reserved for consortium use. */ #define ICC_EMBEDDED_PROFILE_FALSE 0x00000000L /* Bit pos 0 */ #define ICC_EMBEDDED_PROFILE_TRUE 0x00000001L /* Bit pos 0 */ #define ICC_USE_ANYWHERE 0x00000000L /* Bit pos 1 */ #define ICC_USE_WITH_EMBEDDED_DATA_ONLY 0x00000002L /* Bit pos 1 */ /* * Device attributes, currently defined values correspond * to the low 4 bytes of the 8 byte attribute quantity, see * the header for their location. */ #define ICC_REFLECTIVE 0x0000000000000000L /* Bit pos 0 */ #define ICC_TRANSPARENCY 0x0000000000000001L /* Bit pos 0 */ #define ICC_GLOSSY 0x0000000000000000L /* Bit pos 1 */ #define ICC_MATTE 0x0000000000000002L /* Bit pos 1 */ #define ICC_MEDIA_POLARITY_POSITIVE 0x0000000000000000L /* Bit pos 2 */ #define ICC_MEDIA_POLARITY_NEGATIVE 0x0000000000000004L /* Bit pos 2 */ #define ICC_COLOR_MEDIA 0x0000000000000000L /* Bit pos 3 */ #define ICC_BLACK_AND_WHITE 0x0000000000000008L /* Bit pos 3 */ /* Other defines needed for the programming */ #define ICC_HEADER_SIZE 128 #define ICC_TAG_COUNTER_SIZE 4 #define ICC_TAG_UNIT_SIZE 12 #define ICC_D50_X 0x0000F6D6L #define ICC_D50_Y 0x00010000L #define ICC_D50_Z 0x0000D32DL #define UINT32_2_BYTES_MASK 0x0000FFFF #define UINT32_2_BYTES_INV_MASK 0xFFFF0000 #define UINT64_BYTE_MASK 0x00000000000000FF #define UINT64_BYTE_INV_MASK 0xFFFFFFFFFFFFFF00 #define U1FIXED15NUMBER_FRACTION_MASK 0x0FFF #define U1FIXED15NUMBER_NUMBER_MASK 0xF000 #define FIRST_4BITS 0x0000000F #define HEXADECIMAL 16 #define ICC_LUT_CURVEA 1 #define ICC_LUT_CURVEB 2 #define ICC_LUT_CURVEM 3 #define ICC_PROFILE_FLAGS_MASK 0x00000003L #define ICC_DEVICE_ATTRIBUTES_MASK 0x0000000FL #define ICC_VENDOR_FLAG_MASK 0xFFFF0000L #define _255Bytes 255 #define _84Bytes 84 #define _52Bytes 52 #define _38Bytes 38 #define _36Bytes 36 #define _32Bytes 32 #define _28Bytes 28 #define _20Bytes 20 #define _16Bytes 16 #define _14Bytes 14 #define _13Bytes 13 #define _12Bytes 12 #define _11Bytes 11 #define _9Bytes 9 #define _8Bytes 8 #define _7Bytes 7 #define _6Bytes 6 #define _4Bytes 4 #define _3Bytes 3 #define _2Bytes 2 #define _1Byte 1 #define _12Elements 12 #define _7Elements 7 #define _5Elements 5 #define _4Elements 4 #define _3Elements 3 #define _1Elements 1 /*------------------------------------------------------------------------*/ /* Different Enumerations */ /*------------------------------------------------------------------------*/ /* Rendering Intents, used in the profile header */ typedef enum { Perceptual = 0x00000000L, RelativeColorimetric = 0x00000001L, Saturation = 0x00000002L, AbsoluteColorimetric = 0x00000003L } ICCRENDERINGINTENT; /* public tags and sizes */ typedef enum { AToB0Tag = 0x41324230L, /* 'A2B0' */ AToB1Tag = 0x41324231L, /* 'A2B1' */ AToB2Tag = 0x41324232L, /* 'A2B2' */ BlueMatrixColumnTag = 0x6258595AL, /* 'bXYZ' */ BlueTRCTag = 0x62545243L, /* 'bTRC' */ BToA0Tag = 0x42324130L, /* 'B2A0' */ BToA1Tag = 0x42324131L, /* 'B2A1' */ BToA2Tag = 0x42324132L, /* 'B2A2' */ CalibrationDateTimeTag = 0x63616C74L, /* 'calt' */ CharTargetTag = 0x74617267L, /* 'targ' */ ChromaticAdaptationTag = 0x63686164L, /* 'chad' */ ChromaticityTag = 0x6368726DL, /* 'chrm' */ ColorantOrderTag = 0x636C726FL, /* 'clro' */ ColorantTableTag = 0x636C7274L, /* 'clrt' */ ColorantTableOutTag = 0x636C6F74L, /* 'clot' */ CopyrightTag = 0x63707274L, /* 'cprt' */ DeviceMfgDescTag = 0x646D6E64L, /* 'dmnd' */ DeviceModelDescTag = 0x646D6464L, /* 'dmdd' */ GamutTag = 0x67616D74L, /* 'gamt' */ GrayTRCTag = 0x6B545243L, /* 'kTRC' */ GreenMatrixColumnTag = 0x6758595AL, /* 'gXYZ' */ GreenTRCTag = 0x67545243L, /* 'gTRC' */ LuminanceTag = 0x6C756D69L, /* 'lumi' */ MeasurementTag = 0x6D656173L, /* 'meas' */ MediaBlackPointTag = 0x626B7074L, /* 'bkpt' */ MediaWhitePointTag = 0x77747074L, /* 'wtpt' */ NamedColor2Tag = 0x6E636C32L, /* 'ncl2' */ OutputResponseTag = 0x72657370L, /* 'resp' */ Preview0Tag = 0x70726530L, /* 'pre0' */ Preview1Tag = 0x70726531L, /* 'pre1' */ Preview2Tag = 0x70726532L, /* 'pre2' */ ProfileDescriptionTag = 0x64657363L, /* 'desc' */ ProfileSequenceDescTag = 0x70736571L, /* 'pseq' */ RedMatrixColumnTag = 0x7258595AL, /* 'rXYZ' */ RedTRCTag = 0x72545243L, /* 'rTRC' */ TechnologyTag = 0x74656368L, /* 'tech' */ ViewingCondDescTag = 0x76756564L, /* 'vued' */ ViewingConditionsTag = 0x76696577L /* 'view' */ } ICCTAGSIGNATURE; /* technology signature descriptions */ typedef enum { FilmScanner = 0x6673636EL, /* 'fscn' */ DigitalCamera = 0x6463616DL, /* 'dcam' */ ReflectiveScanner = 0x7273636EL, /* 'rscn' */ InkJetPrinter = 0x696A6574L, /* 'ijet' */ ThermalWaxPrinter = 0x74776178L, /* 'twax' */ ElectrophotographicPrinter = 0x6570686FL, /* 'epho' */ ElectrostaticPrinter = 0x65737461L, /* 'esta' */ DyeSublimationPrinter = 0x64737562L, /* 'dsub' */ PhotographicPaperPrinter = 0x7270686FL, /* 'rpho' */ FilmWriter = 0x6670726EL, /* 'fprn' */ VideoMonitor = 0x7669646DL, /* 'vidm' */ VideoCamera = 0x76696463L, /* 'vidc' */ ProjectionTelevision = 0x706A7476L, /* 'pjtv' */ CRTDisplay = 0x43525420L, /* 'CRT ' */ PMDisplay = 0x504D4420L, /* 'PMD ' */ AMDisplay = 0x414D4420L, /* 'AMD ' */ PhotoCD = 0x4B504344L, /* 'KPCD' */ PhotoImageSetter = 0x696D6773L, /* 'imgs' */ Gravure = 0x67726176L, /* 'grav' */ OffsetLithography = 0x6F666673L, /* 'offs' */ Silkscreen = 0x73696C6BL, /* 'silk' */ Flexography = 0x666C6578L /* 'flex' */ } ICCTECHNOLOGYSIGNATURE; /* type signatures */ typedef enum { ChromaticityTypeSig = 0x6368726DL, /* 'chrm' */ ColorantOrderTypeSig = 0x636c726fL, /* 'clro' */ ColorantTableTypeSig = 0x636c7274L, /* 'clrt' */ CurveTypeSig = 0x63757276L, /* 'curv' */ DataTypeSig = 0x64617461L, /* 'data' */ DateTimeTypeSig = 0x6474696DL, /* 'dtim' */ Lut16TypeSig = 0x6d667432L, /* 'mft2' */ Lut8TypeSig = 0x6d667431L, /* 'mft1' */ LutAtoBTypeSig = 0x6D414220L, /* 'mAB' */ LutBtoATypeSig = 0x6D424120L, /* 'mBA' */ MeasurementTypeSig = 0x6D656173L, /* 'meas' */ MultiLocalizedUnicodeTypeSig = 0x6D6C7563L, /* 'mluc' */ NamedColor2TypeSig = 0x6E636C32L, /* 'ncl2' */ ParametricCurveTypeSig = 0x70617261L, /* 'para' */ ProfileSequenceDescTypeSig = 0x70736571L, /* 'pseq' */ ResponseCurveSet16TypeSig = 0x72637332L, /* 'rcs2' */ S15Fixed16ArrayTypeSig = 0x73663332L, /* 'sf32' */ SignatureTypeSig = 0x73696720L, /* 'sig ' */ TextTypeSig = 0x74657874L, /* 'text' */ U16Fixed16ArrayTypeSig = 0x75663332L, /* 'uf32' */ UInt16ArrayTypeSig = 0x75693136L, /* 'ui16' */ UInt32ArrayTypeSig = 0x75693332L, /* 'ui32' */ UInt64ArrayTypeSig = 0x75693634L, /* 'ui64' */ UInt8ArrayTypeSig = 0x75693038L, /* 'ui08' */ ViewingConditionsTypeSig = 0x76696577L, /* 'view' */ XYZTypeSig = 0x58595A20L /* 'XYZ ' */ } ICCTAGTYPESIGNATURE; /* Standard Observer, used in the measurmentType tag */ typedef enum { StdObsUnknown = 0x00000000L, /* Unknown */ StdObs1931TwoDegrees = 0x00000001L, /* 2 deg */ StdObs1964TenDegrees = 0x00000002L /* 10 deg */ } ICCSTANDARDOBSERVER; /* Measurement Geometry, used in the measurmentType tag */ typedef enum { GeometryUnknown = 0x00000000L, /* Unknown */ Geometry045or450 = 0x00000001L, /* 0/45, 45/0 */ Geometry0dord0 = 0x00000002L /* 0/d or d/0 */ } ICCMEASUREMENTGEOMETRY; /* Measurement Flare, used in the measurmentType tag */ typedef enum { Flare0 = 0x00000000L, /* 0% flare */ Flare100 = 0x00010000L /* 100% flare */ } ICCMEASUREMENTFLARE; /* Pre-defined illuminants, used in measurement and viewing conditions type */ typedef enum { IccIlluminantUnknown = 0x00000000L, IccIlluminantD50 = 0x00000001L, IccIlluminantD65 = 0x00000002L, IccIlluminantD93 = 0x00000003L, IccIlluminantF2 = 0x00000004L, IccIlluminantD55 = 0x00000005L, IccIlluminantA = 0x00000006L, IccIlluminantEquiPowerE = 0x00000007L, IccIlluminantF8 = 0x00000008L } ICCSTANDARDILLUMINANT; /* Parametric Curve Function Type */ typedef enum { Func4Bytes = 0x0000L, /* Y = X^(gamma) */ Func12Bytes = 0x0001L, /* Y = (aX + b)^(gamma) , (X >= -b/a) * Y = 0 , (X < -b/a) */ Func16Bytes = 0x0002L, /* Y = (aX + b)^(gamma) + c , (X >= -b/a) * Y = c , (X < -b/a) */ Func20Bytes = 0x0003L, /* Y = (aX + b)^(gamma) , (X >= -b/a) * Y = cX , (X < -b/a) */ Func28Bytes = 0x0004L /* Y = (aX + b)^(gamma) + e , (X >= -b/a) * Y = (cX + f) , (X < -b/a) */ } ICCFUNCTIONTYPE; /* Curve Measurement Signatures */ typedef enum { StaA = 0x53746141L, StaE = 0x53746145L, StaI = 0x53746149L, StaT = 0x53746154L, StaM = 0x5374614DL, DN = 0x434E2020L, DN_P = 0x434E2050L, DNNP = 0x434E4E50L } ICCMEASUREMENTSIGNATURE; /* Phosphore or Colorant Type */ typedef enum { UnknownColorant = 0x0000L, ITU_R_BT709 = 0x0001L, SMPTE_RP145_1994 = 0x0002L, EBU_TECH3213_E = 0x0003L, P22 = 0x0004L } ICCCOLORANTTYPE; /* Type of data in dataType encoding */ typedef enum { ASCII = 0x00000000L, Binary = 0x00000001L } ICCDATATYPEFLAGS; /* ICC Profile Structures */ /* profileClass enumerations */ typedef enum tagICCPROFILECLASS { InputClass = 0x73636E72L, /* 'scnr' */ DisplayClass = 0x6D6E7472L, /* 'mntr' */ OutputClass = 0x70727472L, /* 'prtr' */ DeviceLinkClass = 0x6C696E6BL, /* 'link' */ AbstractClass = 0x61627374L, /* 'abst' */ ColorSpaceClass = 0x73706163L, /* 'spac' */ NamedColorClass = 0x6E6D636CL /* 'nmcl' */ } ICCPROFILECLASS; /* color spaces */ typedef enum tagICCCOLORSPACE { XyzData = 0x58595A20L, /* 'XYZ ' */ LabData = 0x4C616220L, /* 'Lab ' */ LuvData = 0x4C757620L, /* 'Luv ' */ YCbCrData = 0x59436272L, /* 'YCbr' */ YxyData = 0x59787920L, /* 'Yxy ' */ RgbData = 0x52474220L, /* 'RGB ' */ GrayData = 0x47524159L, /* 'GRAY' */ HsvData = 0x48535620L, /* 'HSV ' */ HlsData = 0x484C5320L, /* 'HLS ' */ CmykData = 0x434D594BL, /* 'CMYK' */ CmyData = 0x434D5920L, /* 'CMY ' */ ColorData2 = 0x32434C52L, /* '2CLR' */ ColorData3 = 0x33434C52L, /* '3CLR' */ ColorData4 = 0x34434C52L, /* '4CLR' */ ColorData5 = 0x35434C52L, /* '5CLR' */ ColorData6 = 0x36434C52L, /* '6CLR' */ ColorData7 = 0x37434C52L, /* '7CLR' */ ColorData8 = 0x38434C52L, /* '8CLR' */ ColorData9 = 0x39434C52L, /* '9CLR' */ ColorData10 = 0x41434C52L, /* 'ACLR' */ ColorData11 = 0x42434C52L, /* 'BCLR' */ ColorData12 = 0x43434C52L, /* 'CCLR' */ ColorData13 = 0x44434C52L, /* 'DCLR' */ ColorData14 = 0x45434C52L, /* 'ECLR' */ ColorData15 = 0x46434C52L /* 'FCLR' */ } ICCCOLORSPACE; /* Platform Signatures */ typedef enum tagICCPLATFORMSIGNATURE { NoPlatformSignature = 0x00000000L, MacintoshSignature = 0x4150504CL, /* 'APPL' */ MicrosoftSignature = 0x4D534654L, /* 'MSFT' */ SolarisSignature = 0x53554E57L, /* 'SUNW' */ SGISignature = 0x53474920L /* 'SGI ' */ } ICCPLATFORMSIGNATURE; /* XYZ Number */ typedef struct _ICC_XYZ_NUMBER { L_IccS15Fixed16Number nX; L_IccS15Fixed16Number nY; L_IccS15Fixed16Number nZ; } ICC_XYZ_NUMBER, L_FAR* pICC_XYZ_NUMBER; typedef struct _ICC_RESPONSE_16_NUMBER { L_IccUInt16Number uDeviceCode; L_IccUInt16Number uReserved; L_IccS15Fixed16Number uMeasurement; } ICC_RESPONSE_16_NUMBER, L_FAR * pICC_RESPONSE_16_NUMBER; /* XYZ Array */ typedef struct _ICC_XYZ_ARRAY { pICC_XYZ_NUMBER XYZData; /* Variable array of XYZ numbers */ } ICC_XYZ_ARRAY, L_FAR * pICC_XYZ_ARRAY; /* Curve */ typedef struct __ICCCURVE { L_IccUInt32Number uCurveCount; /* Number of entries */ L_IccUInt16Number L_FAR * pCurveData; /* The actual table data, real * * number is determined by count * * Interpretation depends on how * * data is used with a given tag */ } ICC_CURVE, L_FAR * pICC_CURVE; /* Data */ typedef struct __ICCDATA { L_UINT32 uDataFlag; /* 0 = ascii, 1 = binary */ L_Icc7BitAscii L_FAR * pData; /* Data */ L_UINT uDataElementsCount; /* Number of Data Elements */ } ICC_DATA, L_FAR * pICC_DATA; /* MATRIX Structure */ typedef struct __MATRIX { L_IccS15Fixed16Number pElement[12]; /* Matrix elements */ } ICC_MATRIX, L_FAR * pICC_MATRIX; /* lut16 */ typedef struct __ICCLUT16 { L_IccUInt8Number uInputChan; /* Number of input channels */ L_IccUInt8Number uOutputChan; /* Number of output channels */ L_IccUInt8Number uClutPoints; /* Number of grid points */ L_IccUInt8Number uPad; /* Padding for byte alignment */ L_IccS15Fixed16Number nE00; /* e00 in the 3 * 3 */ L_IccS15Fixed16Number nE01; /* e01 in the 3 * 3 */ L_IccS15Fixed16Number nE02; /* e02 in the 3 * 3 */ L_IccS15Fixed16Number nE10; /* e10 in the 3 * 3 */ L_IccS15Fixed16Number nE11; /* e11 in the 3 * 3 */ L_IccS15Fixed16Number nE12; /* e12 in the 3 * 3 */ L_IccS15Fixed16Number nE20; /* e20 in the 3 * 3 */ L_IccS15Fixed16Number nE21; /* e21 in the 3 * 3 */ L_IccS15Fixed16Number nE22; /* e22 in the 3 * 3 */ L_IccUInt16Number uInputEnt; /* Num of in-table entries */ L_IccUInt16Number uOutputEnt; /* Num of out-table entries */ L_IccUInt16Number L_FAR * pInputTables; /* Input Tables */ L_IccUInt16Number L_FAR * pCLUT; /* CLUT value */ L_IccUInt16Number L_FAR * pOutputTables; /* Output Tables */ } ICC_LUT16, L_FAR * pICC_LUT16; /* lut8, input & output tables are always 256 bytes in length */ typedef struct __ICCLUT8 { L_IccUInt8Number uInputChan; /* Number of input channels */ L_IccUInt8Number uOutputChan; /* Number of output channels */ L_IccUInt8Number uClutPoints; /* Number of grid points */ L_IccUInt8Number uPad; /* Padding for byte alignment */ L_IccS15Fixed16Number nE00; /* e00 in the 3 * 3 */ L_IccS15Fixed16Number nE01; /* e01 in the 3 * 3 */ L_IccS15Fixed16Number nE02; /* e02 in the 3 * 3 */ L_IccS15Fixed16Number nE10; /* e10 in the 3 * 3 */ L_IccS15Fixed16Number nE11; /* e11 in the 3 * 3 */ L_IccS15Fixed16Number nE12; /* e12 in the 3 * 3 */ L_IccS15Fixed16Number nE20; /* e20 in the 3 * 3 */ L_IccS15Fixed16Number nE21; /* e21 in the 3 * 3 */ L_IccS15Fixed16Number nE22; /* e22 in the 3 * 3 */ L_IccUInt16Number uInputEnt; /* Num of in-table entries */ L_IccUInt16Number uOutputEnt; /* Num of out-table entries */ L_IccUInt8Number L_FAR * pInputTables; /* Input Tables */ L_IccUInt8Number L_FAR * pCLUT; /* CLUT value */ L_IccUInt8Number L_FAR * pOutputTables; /* Output Tables */ } ICC_LUT8, L_FAR * pICC_LUT8; /* Measurement Data */ typedef struct __ICCMEASUREMENT { L_UINT32 uStdObserver; /* Standard observer */ ICC_XYZ_NUMBER Backing; /* XYZ for backing */ L_UINT32 uGeometry; /* Meas. geometry */ L_UINT32 uFlare; /* Measurement flare */ L_UINT32 uIlluminant; /* Illuminant */ } ICC_MEASUREMENT, L_FAR * pICC_MEASUREMENT; /* Named Color */ typedef struct __ICC_NAMEDCOLORDATA { L_Icc7BitAscii uColorRootName[32]; /* Color root name Null terminated */ L_IccUInt16Number uColorPCSCoord[3]; /* Color PCS coordinates */ L_IccUInt16Number L_FAR * uColorDeviceCoord; /* Named color device coordinates */ } ICC_NAMED_COLOR2_DATA, L_FAR * pICC_NAMED_COLOR2_DATA; /* IccNamedColor2 */ typedef struct __ICCNAMEDCOLOR2 { L_IccUInt32Number uVendorFlag; /* Bottom 16 bits for IC use */ L_IccUInt32Number uNamedColorsCount; /* Count of named colors */ L_IccUInt32Number uDeviceCoordsCount; /* Num of device coordinates */ L_Icc7BitAscii pPrefix[32]; /* Prefix for each color name */ L_Icc7BitAscii pSuffix[32]; /* Suffix for each color name */ pICC_NAMED_COLOR2_DATA pNamedColors; /* Named colors */ } ICC_NAMED_COLOR2, L_FAR * pICC_NAMED_COLOR2; /* Parametric curve data */ typedef struct __ICCPARAMETRICCURVE { L_UINT32 uFunctionType; /* Function Type */ L_IccUInt8Number uReserved[2]; /* Reserved 2 bytes */ L_IccS15Fixed16Number L_FAR * pParameters; /* Function parameters */ } ICC_PARAMETRIC_CURVE, L_FAR * pICC_PARAMETRIC_CURVE; /* Response Arrays */ typedef struct __ICC_RESPONSEARRAYS { pICC_RESPONSE_16_NUMBER pResponseNumber; } ICC_RESPONSE_ARRAYS, L_FAR * pICC_RESPONSE_ARRAYS; /* Curve Structure */ typedef struct __ICC_CURVESTRUCTURE { L_UINT32 uMeasurementSig; /* Curve Measurement Signature */ L_IccUInt32Number L_FAR * pMeasurementCount; /* Measurement count for each channel */ pICC_XYZ_NUMBER pMeasOfPatch; /* Number of Measurements of patch * with the maximum colorant value. */ pICC_RESPONSE_ARRAYS pRespArrays; /* Number of response arrays channels */ } ICC_CURVE_STRUCTURE, L_FAR * pICC_CURVE_STRUCTURE; /* Response Curve Set16 data */ typedef struct __ICC_RESPONSECURVE { L_IccUInt16Number uChannelsCount; /* Number of Channels */ L_IccUInt16Number uMeasurementTypesCount; /* Count of Measurement Type */ L_IccUInt32Number L_FAR * pResponseDataOffsets; /* Response data for the measurement unit * each offset is relative to byte 0 of * this structure */ pICC_CURVE_STRUCTURE pCurveStructure; /* Count response curve structures */ } ICC_RESPONSE_CURVE, L_FAR * pICC_RESPONSE_CURVE; /* Viewing Condition data */ typedef struct __ICC_VIEWCOND { ICC_XYZ_NUMBER AbsIlluminant; /* In candelas per sq. meter */ ICC_XYZ_NUMBER AbsSurround; /* In candelas per sq. meter */ L_UINT32 uIlluminantType; /* See icIlluminant defines */ } ICC_VIEW_COND, L_FAR * pICC_VIEW_COND; /* Channel Coordinates */ typedef struct __ICC_CHROMATICITY_CHANNELS { L_IccU16Fixed16Number Coords[2]; } ICC_CHANNEL_COORD, L_FAR * pICC_CHANNEL_COORD; /* Chromaticity Data */ typedef struct __ICC_CHROMATICITY { L_IccUInt16Number uChannelsCount; /* Number of device channels */ L_UINT32 uColorantType; /* Phosphor or Colorant Type */ pICC_CHANNEL_COORD pChannels; /* Other Channel Coordinates if needed */ } ICC_CHROMATICITY, L_FAR * pICC_CHROMATICITY; /* Colorant Table data */ typedef struct __ICC_COLORANTTABLEDATA { L_Icc7BitAscii pColorantName[32]; /* Colorant name, null terminated, unused bytes set to zero */ L_IccUInt16Number uPCSValue[3]; /* PCS value of the colorant in the color space of the profile */ } ICC_COLORANT_TABLE_DATA, L_FAR * pICC_COLORANT_TABLE_DATA; /* Multi Localized Unicode Data - Name Records */ typedef struct __ICC_NAME_RECORD { L_IccUInt16Number uNameLangCode; /* Language Code from ISO-639 */ L_IccUInt16Number uNameCountryCode; /* Region Code from IDO-3166 */ L_IccUInt32Number uNameLength; /* Length in bytes of the string */ L_IccUInt32Number uNameOffset; /* Offset from the start of the tag in bytes */ } ICC_NAME_RECORD, L_FAR * pICC_NAME_RECORD; /* Multi Localized Unicode Data */ typedef struct __ICC_MULTILOCALIZEDUNICODE { L_IccUInt32Number uNameRecordsCount; /* Number of name records that follow */ L_IccUInt32Number uNameRecordSize; /* Length in bytes of each name record */ pICC_NAME_RECORD pNameRecordsData; /* Name records if available */ L_UINT16 L_FAR * pUnicodeCharacters; /* Storage Area of Unicode Characters */ } ICC_MULTI_LOCALIZED_UNICODE, L_FAR * pICC_MULTI_LOCALIZED_UNICODE; /*------------------------------------------------------------------------*/ /* Tag Type Definitions */ /*------------------------------------------------------------------------*/ /* The base part of each tag */ typedef struct __ICCTAG_BASE { L_UINT32 Signature; /* Signature */ L_UCHAR uReserved[4]; /* Reserved, set to 0 */ } ICCTAG_BASE, L_FAR * pICCTAG_BASE; /* chromaticityType */ typedef struct __ICCTAG_CHROMATICITY_TYPE { ICCTAG_BASE tagBase; /* Signature "chrm" */ ICC_CHROMATICITY Chrom; /* Chromaticity structure */ } ICCTAG_CHROMATICITY_TYPE, L_FAR * pICCTAG_CHROMATICITY_TYPE; /* colorantOrderType */ typedef struct __ICCTAG_COLORANT_ORDER_TYPE { ICCTAG_BASE tagBase; /* Signature "clro" */ L_IccUInt32Number uColorantsCount; /* Count of colorants */ L_IccUInt8Number L_FAR * pColorantsData; /* Remaining Colorants */ } ICCTAG_COLORANT_ORDER_TYPE, L_FAR * pICCTAG_COLORANT_ORDER_TYPE; /* colorantTableType */ typedef struct __ICCTAG_COLORANT_TABLE_TYPE { ICCTAG_BASE tagBase; /* Signature "clrt" */ L_IccUInt32Number uColorantsCount; /* Count of colorants */ pICC_COLORANT_TABLE_DATA pColorantsData; /* Remaining Colorants */ } ICCTAG_COLORANT_TABLE_TYPE, L_FAR * pICCTAG_COLORANT_TABLE_TYPE; /* curveType */ typedef struct __ICCTAG_CURVE_TYPE { ICCTAG_BASE tagBase; /* Signature, "curv" */ ICC_CURVE Curve; /* The curve data */ } ICCTAG_CURVE_TYPE, L_FAR * pICCTAG_CURVE_TYPE; /* dataType */ typedef struct __ICCTAG_DATA_TYPE { ICCTAG_BASE tagBase; /* Signature "data" */ ICC_DATA Data; /* The data structure */ } ICCTAG_DATA_TYPE, L_FAR * pICCTAG_DATA_TYPE; /* The base date time number */ typedef struct _ICC_DATE_TIME_NUMBER { L_IccUInt16Number uYear; L_IccUInt16Number uMonth; L_IccUInt16Number uDay; L_IccUInt16Number uHours; L_IccUInt16Number uMinutes; L_IccUInt16Number uSeconds; } ICC_DATE_TIME_NUMBER, L_FAR* pICC_DATE_TIME_NUMBER; /* dateTimeType */ typedef struct __ICCTAG_DATE_TIME_TYPE { ICCTAG_BASE tagBase; /* Signature "dtim" */ ICC_DATE_TIME_NUMBER DateTime; /* The DateTime structure */ } ICCTAG_DATE_TIME_TYPE, L_FAR * pICCTAG_DATE_TIME_TYPE; /* lut16Type */ typedef struct __ICCTAG_LUT16_TYPE { ICCTAG_BASE tagBase; /* Signature "mft2" */ ICC_LUT16 Lut16; /* The LUT16 structure */ } ICCTAG_LUT16_TYPE, L_FAR * pICCTAG_LUT16_TYPE; /* lut8Type */ typedef struct __ICCTAG_LUT8_TYPE { ICCTAG_BASE tagBase; /* Signature "mft1" */ ICC_LUT8 Lut8; /* The LUT8 structure */ } ICCTAG_LUT8_TYPE, L_FAR * pICCTAG_LUT8_TYPE; /* lutAtoBType and lutBtoAType */ typedef struct __ICCTAG_LUT_A2B_B2A_TYPE { ICCTAG_BASE tagBase; /* Signature "mAB" */ L_IccUInt8Number uInputChannels; /* Number of input channels */ L_IccUInt8Number uOutputChannels; /* Number of output channels */ L_IccUInt8Number uPad[2]; /* Must be set to Zero */ L_IccUInt32Number uOffsetToCurveB; /* Offset to first "B" Curve */ L_IccUInt32Number uOffsetToMatrix; /* Offset to Matrix */ L_IccUInt32Number uOffsetToCurveM; /* Offset to first "M" Curve */ L_IccUInt32Number uOffsetToCLUT; /* Offset to CLUT */ L_IccUInt32Number uOffsetToCurveA; /* Offset to first "A" Curve */ L_IccUInt8Number L_FAR * pData; /* Pointer to LUT Data */ L_UCHAR L_FAR * pCurveB; /* Pointer to Curve B in Data */ L_UCHAR L_FAR * pCurveM; /* Pointer to Curve M in Data */ L_UCHAR L_FAR * pCurveA; /* Pointer to Curve A in Data */ L_UCHAR L_FAR * pCLUT; /* Pointer to CLUT in Data */ ICC_MATRIX Matrix; /* Pointer to Matrix in Data */ } ICCTAG_LUT_A_TO_B_TYPE, L_FAR * pICCTAG_LUT_A_TO_B_TYPE, ICCTAG_LUT_B_TO_A_TYPE, L_FAR * pICCTAG_LUT_B_TO_A_TYPE; /* measurementType */ typedef struct __ICCTAG_MEASUREMENT_TYPE { ICCTAG_BASE tagBase; /* Signature, "meas" */ ICC_MEASUREMENT Measurement; /* Measurement data */ } ICCTAG_MEASUREMENT_TYPE, L_FAR * pICCTAG_MEASUREMENT_TYPE; /* multiLocalizedUnicodeType */ typedef struct __ICCTAG_MULTI_LOCALIZED_UNICODE_TYPE { ICCTAG_BASE tagBase; /* Signature mluc */ ICC_MULTI_LOCALIZED_UNICODE MultiLocalizedUnicode; /* MultiLocalizedUnicode structure */ } ICCTAG_MULTI_LOCALIZED_UNICODE_TYPE, L_FAR * pICCTAG_MULTI_LOCALIZED_UNICODE_TYPE; /* Profile description structure from corresponding profile's header */ typedef struct __ICCPROFILEDESC { L_IccUInt32Number DevManufacturerSig; /* Device Manufacturer signature */ L_IccUInt32Number DevModelSig; /* Device Model Signature */ L_IccUInt8Number DevAttributes[8]; /* Device Attributes */ L_IccUInt32Number DevTechInfo; /* Device Technology Information */ ICCTAG_MULTI_LOCALIZED_UNICODE_TYPE DevManufacturerDesc; /* Device Manufacturer Description * * (deviceMfgDescTag) */ ICCTAG_MULTI_LOCALIZED_UNICODE_TYPE DevModelDesc; /* Device Model Description * * (deviceModelDescTag) */ } ICC_PROFILE_DESC, L_FAR * pICC_PROFILE_DESC; /* Profile sequence description data */ typedef struct __ICCPROFILESEQDESC { L_IccUInt32Number uCount; /* Number of descriptions */ pICC_PROFILE_DESC pProfDescription; /* Profile description structure */ } ICC_PROFILE_SEQ_DESC, L_FAR * pICC_PROFILE_SEQ_DESC; /* Named color type */ /* icNamedColor2Type, replaces icNamedColorType */ typedef struct __ICCTAG_NAMED_COLOR2_TYPE { ICCTAG_BASE tagBase; /* Signature, "ncl2" */ ICC_NAMED_COLOR2 NColor; /* Named color data */ } ICCTAG_NAMED_COLOR2_TYPE, L_FAR * pICCTAG_NAMED_COLOR2_TYPE; /* parametricCurveType */ typedef struct __ICCTAG_PARAMETRIC_CURVE_TYPE { ICCTAG_BASE tagBase; /* Signature "para" */ ICC_PARAMETRIC_CURVE ParametricCurve; /* Parametric curve structure */ } ICCTAG_PARAMETRIC_CURVE_TYPE, L_FAR * pICCTAG_PARAMETRIC_CURVE_TYPE; /* profileSequenceDescType */ typedef struct __ICCTAG_PROFILE_SEQ_DESC_TYPE { ICCTAG_BASE tagBase;/* Signature, "pseq" */ ICC_PROFILE_SEQ_DESC Desc; /* The seq description */ } ICCTAG_PROFILE_SEQ_DESC_TYPE, L_FAR * pICCTAG_PROFILE_SEQ_DESC_TYPE; /* responseCurveSet16Type */ typedef struct __ICCTAG_RESPONSE_CURVE_SET16_TYPE { ICCTAG_BASE tagBase; /* Signature "rcs2" */ ICC_RESPONSE_CURVE ResponseCurve; /* Response curve set16 structure */ } ICCTAG_RESPONSE_CURVE_SET16_TYPE, L_FAR * pICCTAG_RESPONSE_CURVE_SET16_TYPE; /* s15Fixed16ArrayType */ typedef struct __ICCTAG_S15_FIXED16_ARRAY_TYPE { ICCTAG_BASE tagBase; /* Signature, "sf32" */ L_IccS15Fixed16Number L_FAR * pData; /* Array of values */ L_UINT uDataElementsCount; /* Number of Elements */ } ICCTAG_S15_FIXED16_ARRAY_TYPE, L_FAR * pICCTAG_S15_FIXED16_ARRAY_TYPE; /* signatureType */ typedef struct __ICCTAG_SIGNATURE_TYPE { ICCTAG_BASE tagBase; /* Signature, "sig" */ L_UINT32 uSignature; /* The signature data */ } ICCTAG_SIGNATURE_TYPE, L_FAR * pICCTAG_SIGNATURE_TYPE; /* textType */ typedef struct __ICCTAG_TEXT_TYPE { ICCTAG_BASE tagBase; /* Signature, "text" */ L_Icc7BitAscii L_FAR * pTextData; /* Descriptions follow */ } ICCTAG_TEXT_TYPE, L_FAR * pICCTAG_TEXT_TYPE; /* u16Fixed16ArrayType */ typedef struct __ICCTAG_U16_FIXED16_ARRAY_TYPE { ICCTAG_BASE tagBase; /* Signature, "uf32" */ L_IccU16Fixed16Number L_FAR * pData; /* Variable array of values */ L_UINT uDataElementsCount; /* Number of Data Elements */ } ICCTAG_U16_FIXED16_ARRAY_TYPE, L_FAR * pICCTAG_U16_FIXED16_ARRAY_TYPE; /* uInt16ArrayType */ typedef struct __ICCTAG_UINT16_ARRAY_TYPE { ICCTAG_BASE tagBase; /* Signature, "ui16" */ L_IccUInt16Number L_FAR * pData; /* Variable array of values */ L_UINT uDataElementsCount; /* Number of Data Elements */ } ICCTAG_UINT16_ARRAY_TYPE, L_FAR * pICCTAG_UINT16_ARRAY_TYPE; /* uInt32ArrayType */ typedef struct __ICCTAG_UINT32_ARRAY_TYPE { ICCTAG_BASE tagBase; /* Signature, "ui32" */ L_IccUInt32Number L_FAR * pData; /* Variable array of values */ L_UINT uDataElementsCount; /* Number of Data Elements */ } ICCTAG_UINT32_ARRAY_TYPE, L_FAR * pICCTAG_UINT32_ARRAY_TYPE; /* uInt64ArrayType */ typedef struct __ICCTAG_UINT64_ARRAY_TYPE { ICCTAG_BASE tagBase; /* Signature, "ui64" */ L_IccUInt64Number L_FAR * pData; /* Variable array of values */ L_UINT uDataElementsCount; /* Number of Data Elements */ } ICCTAG_UINT64_ARRAY_TYPE, L_FAR * pICCTAG_UINT64_ARRAY_TYPE; /* uInt8ArrayType */ typedef struct __ICCTAG_UINT8_ARRAY_TYPE { ICCTAG_BASE tagBase; /* Signature, "ui08" */ L_IccUInt8Number L_FAR * pData; /* Variable array of values */ L_UINT uDataElementsCount; /* Number of Data Elements */ } ICCTAG_UINT8_ARRAY_TYPE, L_FAR * pICCTAG_UINT8_ARRAY_TYPE; /* viewingConditionsType */ typedef struct __ICCTAG_VIEW_COND_TYPE { ICCTAG_BASE tagBase; /* Signature, "view" */ ICC_VIEW_COND ViewCondition; /* Viewing conditions */ } ICCTAG_VIEW_COND_TYPE, L_FAR * pICCTAG_VIEW_COND_TYPE; /* XYZType */ typedef struct __ICCTAG_XYZ_TYPE { ICCTAG_BASE tagBase; /* Signature, "XYZ" */ pICC_XYZ_NUMBER pXYZNumData; /* Variable array of XYZ nums */ L_UINT uXYZNumCount; /* Number of Data Elements */ } ICCTAG_XYZ_TYPE, L_FAR * pICCTAG_XYZ_TYPE; /* Unknown Tag Type */ typedef struct __ICCTAG_UNKNOWN_TYPE { ICCTAG_BASE tagBase; /* Hexadecimal Signature Value */ L_Icc7BitAscii L_FAR * pData; /* Data stored as it is */ L_UINT uDataSize; /* Size of Data */ } ICCTAG_UNKNOWN_TYPE, L_FAR * pICCTAG_UNKNOWN_TYPE; /* A Tag */ typedef struct _ICCTAG { L_UINT32 uSig; /* The tag signature */ L_IccUInt32Number uOffset; /* Start of tag relative to * start of header, Spec * Clause 5 */ L_IccUInt32Number uSize; /* Size in bytes */ } ICCTAG, L_FAR* pICCTAG; /* A Structure that may be used independently for a list of tags */ typedef struct _ICCTAG_LIST { L_IccUInt32Number uTagCount; /* Num tags in the profile */ pICCTAG pTags; /* Variable array of tags */ } ICCTAG_LIST, L_FAR* pICCTAG_LIST; /* Profile Header */ typedef struct _ICCHEADER { L_IccUInt32Number uSize; /* Profile size in bytes */ L_IccSignature nCmmID; /* CMM for Profile */ L_IccUInt32Number uVersion; /* Profile Format Version */ L_UINT32 uDeviceClass; /* Type of Profile */ L_UINT32 uColorSpace; /* Color Space of Data */ L_UINT32 uPCS; /* Profile Connection Spce */ ICC_DATE_TIME_NUMBER DateTime; /* Date and Time */ L_IccSignature nProfileSignature; /* Profile File Sig."acsp" */ L_UINT32 uPlatform; /* Primary Platform */ L_IccUInt32Number uFlags; /* Profile Flags */ L_IccSignature nManufacturer; /* Device Manufacturer */ L_IccUInt32Number uModel; /* Device Model */ L_IccUInt64Number uAttributes; /* Device Attributes */ L_IccUInt32Number uRenderingIntent; /* Rendering Intent */ ICC_XYZ_NUMBER Illuminant; /* Profile Iluminant */ L_IccSignature nCreator; /* Profile Creator */ L_IccUInt8Number uProfileID[16]; /* Profile ID */ L_IccUInt8Number uReserved[28]; /* Reserved Fields for Future */ } ICCHEADER, L_FAR* pICCHEADER; /* ICC Profile */ typedef struct _ICCPROFILEEXT { L_UINT uStructSize; /* Size of ICC Profile structure */ L_UINT uDataSize; /* Size of data pointed to by pData */ L_UINT uTagDataSize; /* Size of Tag Data Elements so far */ pICCHEADER pIccHeader; /* ICC Profile Header */ ICCTAG_LIST tagList; /* Tag List */ L_UCHAR L_FAR * pTagData; /* Pointer to Tag Data Elements */ L_UCHAR L_FAR * pData; /* Pointer to whole ICC Profile - this variable is kept * * to ensure compatibility with old version of ICC */ } ICCPROFILEEXT, L_FAR* pICCPROFILEEXT; /*------------------------------------------------------------------------*/ /* Function Prototypes */ /*------------------------------------------------------------------------*/ L_INT EXT_FUNCTION L_FillICCProfileStructure(pICCPROFILEEXT pICCProfile, L_UCHAR L_FAR * pData, L_UINT uDataSize); L_INT EXT_FUNCTION L_FillICCProfileFromICCFile(L_TCHAR L_FAR * pszFileName, pICCPROFILEEXT pICCProfile); L_INT EXT_FUNCTION L_InitICCProfileExt(pICCPROFILEEXT pICCProfile, L_UINT uStructSize); L_VOID EXT_FUNCTION L_FreeICCProfileExt(pICCPROFILEEXT pICCProfile); L_INT EXT_FUNCTION L_InitICCHeader(pICCPROFILEEXT pICCProfile); L_INT EXT_FUNCTION L_SetICCCMMType(pICCPROFILEEXT pICCProfile, L_IccInt32Number nCMMType); L_INT EXT_FUNCTION L_SetICCDeviceClass(pICCPROFILEEXT pICCProfile, ICCPROFILECLASS uDevClassSig); L_INT EXT_FUNCTION L_SetICCColorSpace(pICCPROFILEEXT pICCProfile, ICCCOLORSPACE uColorSpace); L_INT EXT_FUNCTION L_SetICCConnectionSpace(pICCPROFILEEXT pICCProfile, ICCCOLORSPACE uPCS); L_INT EXT_FUNCTION L_SetICCPrimaryPlatform(pICCPROFILEEXT pICCProfile, ICCPLATFORMSIGNATURE uPrimPlatform); L_INT EXT_FUNCTION L_SetICCFlags(pICCPROFILEEXT pICCProfile, L_IccUInt32Number uFlags); L_INT EXT_FUNCTION L_SetICCDevManufacturer(pICCPROFILEEXT pICCProfile, L_IccInt32Number nDevManufacturer); L_INT EXT_FUNCTION L_SetICCDevModel(pICCPROFILEEXT pICCProfile, L_IccUInt32Number uDevModel); L_INT EXT_FUNCTION L_SetICCDeviceAttributes(pICCPROFILEEXT pICCProfile, L_IccUInt64Number uAttributes); L_INT EXT_FUNCTION L_SetICCRenderingIntent(pICCPROFILEEXT pICCProfile, ICCRENDERINGINTENT uRenderingIntent); L_INT EXT_FUNCTION L_SetICCCreator(pICCPROFILEEXT pICCProfile, L_IccInt32Number nCreator); L_INT EXT_FUNCTION L_SetICCDateTime(pICCPROFILEEXT pICCProfile, pICC_DATE_TIME_NUMBER pTime); L_INT EXT_FUNCTION L_SetICCTagData(pICCPROFILEEXT pICCProfile, L_UCHAR L_FAR * pTagData, L_UINT uTagSig, L_UINT uTagTypeSig); L_INT EXT_FUNCTION L_GetICCTagData(pICCPROFILEEXT pICCProfile, L_UCHAR L_FAR * pTagData, L_UINT32 uTagSignature); L_INT EXT_FUNCTION L_CreateICCTagData(L_UCHAR L_FAR * pDestTagData, L_UCHAR L_FAR * pSrcTagData, L_UINT32 uTagTypeSig); L_INT EXT_FUNCTION L_DeleteICCTag(pICCPROFILEEXT pICCProfile, L_UINT32 uTagSig, L_UCHAR L_FAR * pTag); L_INT EXT_FUNCTION L_GenerateICCFile(pICCPROFILEEXT pICCProfile, L_TCHAR L_FAR * pszFileName); L_UINT32 EXT_FUNCTION L_DoubleTo2bFixed2bNumber(L_DOUBLE dNumber); L_DOUBLE EXT_FUNCTION L_2bFixed2bNumberToDouble(L_UINT32 uNumber); L_INT EXT_FUNCTION L_GenerateICCPointer(pICCPROFILEEXT pICCProfile); L_UINT32 EXT_FUNCTION L_GetICCTagTypeSig(pICCPROFILEEXT pICCProfile, L_UINT32 uTagSig); L_VOID EXT_FUNCTION L_FreeICCTagType(L_UCHAR L_FAR * pTagType, L_UINT32 uTagTypeSig); /********************************************************************************** * ICC Profiles - End * **********************************************************************************/ #undef _HEADER_ENTRY_ #include "ltpck.h" #endif // _LTCLR_H_