test: profile.h Source File

Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

# profile.h

Go to the documentation of this file.

    00001 /*
    00002         File:           LHICCProfile.h
    00003
    00004         Contains:
    00005
    00006         Version:
    00007
    00008         Copyright:      © see below
    00009 */
    00010
    00011 /* Header file guard bands */
    00012 #ifndef LHICCProfile_h
    00013 #define LHICCProfile_h
    00014
    00015 /*****************************************************************
    00016  Copyright (c) 1994 SunSoft, Inc.
    00017
    00018                     Rights Reserved
    00019
    00020 Permission is hereby granted, free of charge, to any person
    00021 obtaining a copy of this software and associated documentation
    00022 files (the "Software"), to deal in the Software without restrict-
    00023 ion, including without limitation the rights to use, copy, modify,
    00024 merge, publish distribute, sublicense, and/or sell copies of the
    00025 Software, and to permit persons to whom the Software is furnished
    00026 to do so, subject to the following conditions:
    00027
    00028 The above copyright notice and this permission notice shall be
    00029 included in all copies or substantial portions of the Software.
    00030
    00031 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    00032 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
    00033 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
    00034 INFRINGEMENT.  IN NO EVENT SHALL SUNSOFT, INC. OR ITS PARENT
    00035 COMPANY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
    00036 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    00037 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    00038 OTHER DEALINGS IN THE SOFTWARE.
    00039
    00040 Except as contained in this notice, the name of SunSoft, Inc.
    00041 shall not be used in advertising or otherwise to promote the
    00042 sale, use or other dealings in this Software without written
    00043 authorization from SunSoft Inc.
    00044 ******************************************************************/
    00045
    00046 /*
    00047  * This version of the header file corresponds to the profile
    00048  * specification version 3.0.1, and includes support for the
    00049  * Named Color profile type approved August 1995.
    00050  *
    00051  * All header file entries are pre-fixed with "ic" to help
    00052  * avoid name space collisions. Signatures are pre-fixed with
    00053  * icSig.
    00054  *
    00055  * The structures defined in this header file were created to
    00056  * represent a description of an ICC profile on disk. Rather
    00057  * than use pointers a technique is used where a single byte array
    00058  * was placed at the end of each structure. This allows us in "C"
    00059  * to extend the structure by allocating more data than is needed
    00060  * to account for variable length structures.
    00061  *
    00062  * This also ensures that data following is allocated
    00063  * contiguously and makes it easier to write and read data from
    00064  * the file.
    00065  *
    00066  * For example to allocate space for a 256 count length UCR
    00067  * and BG array, and fill the allocated data.  Note strlen + 1
    00068  * to remember NULL terminator.
    00069  *
    00070                 icUcrBgCurve            *ucrCurve, *bgCurve;
    00071                 int                             ucr_nbytes, bg_nbytes, string_bytes;
    00072                 icUcrBg                         *ucrBgWrite;
    00073                 char                            ucr_string[100], *ucr_char;
    00074
    00075                 strcpy(ucr_string, "Example ucrBG curves");
    00076                 ucr_nbytes = sizeof(icUInt32Number) +
    00077                  (UCR_CURVE_SIZE * sizeof(icUInt16Number));
    00078                 bg_nbytes = sizeof(icUInt32Number) +
    00079                  (BG_CURVE_SIZE * sizeof(icUInt16Number));
    00080                 string_bytes = strlen(ucr_string) + 1;
    00081
    00082                 ucrBgWrite = (icUcrBg *)malloc(
    00083                                                                 (ucr_nbytes + bg_nbytes + string_bytes));
    00084
    00085                 ucrCurve = (icUcrBgCurve *)ucrBgWrite->data;
    00086                 ucrCurve->count = UCR_CURVE_SIZE;
    00087                 for (i=0; i<ucrCurve->count; i++)
    00088                                 ucrCurve->curve[i] = (icUInt16Number)i;
    00089
    00090                 bgCurve = (icUcrBgCurve *)((char *)ucrCurve + ucr_nbytes);
    00091                 bgCurve->count = BG_CURVE_SIZE;
    00092                 for (i=0; i<bgCurve->count; i++)
    00093                                 bgCurve->curve[i] = 255 - (icUInt16Number)i;
    00094
    00095                 ucr_char = (char *)((char *)bgCurve + bg_nbytes);
    00096                 memcpy(ucr_char, ucr_string, string_bytes);
    00097  *
    00098  */
    00099
    00100 /*------------------------------------------------------------------------*/
    00101 /*
    00102  * Use this area to translate platform definitions of long
    00103  * etc into icXXX form. The rest of the header uses the icXXX
    00104  * typedefs. Signatures are 4 byte quantities.
    00105  */
    00106
    00107 #if defined(__MWERKS__) || defined(__PPCC__) || defined(WIN32) || defined(SYM_C) || defined(__MRC__)
    00108
    00109 /*
    00110  * Number definitions
    00111  */
    00112
    00113 /* Unsigned integer numbers */
    00114 typedef unsigned char           icUInt8Number;
    00115 typedef unsigned short          icUInt16Number;
    00116 typedef unsigned long           icUInt32Number;
    00117 typedef unsigned long           icUInt64Number[2];
    00118
    00119 typedef icUInt32Number          icSignature;
    00120
    00121 /* Signed numbers */
    00122 typedef char                            icInt8Number;
    00123 typedef short                           icInt16Number;
    00124 typedef long                            icInt32Number;
    00125 typedef long                            icInt64Number[2];
    00126
    00127 /* Fixed numbers */
    00128 typedef icInt32Number           icS15Fixed16Number;
    00129 typedef icUInt32Number          icU16Fixed16Number;
    00130 #endif /* __MWERKS__ || WIN32 || SYM_C || __MRC__ */
    00131
    00132 #if 0
    00133
    00134 #ifdef __sgi
    00135 /* #include "sgidefs.h" */
    00136
    00137 typedef __int32_t               icSignature;
    00138
    00139 /*
    00140  * Number definitions
    00141  */
    00142
    00143 /* Unsigned integer numbers */
    00144 typedef unsigned char           icUInt8Number;
    00145 typedef unsigned short          icUInt16Number;
    00146 typedef __uint32_t                      icUInt32Number;
    00147 typedef __uint32_t                      icUInt64Number[2];
    00148
    00149 /* Signed numbers */
    00150 typedef char                            icInt8Number;
    00151 typedef short                           icInt16Number;
    00152 typedef __int32_t                       icInt32Number;
    00153 typedef __int32_t                       icInt64Number[2];
    00154
    00155 /* Fixed numbers */
    00156 typedef __int32_t                       icS15Fixed16Number;
    00157 typedef __uint32_t                      icU16Fixed16Number;
    00158 #endif /* Silicon Graphics */
    00159
    00160 #endif
    00161
    00162 #if defined(unix) || defined(__unix) || defined(__unix__)       /* 32-bit UNIX */
    00163
    00164 typedef long                            icSignature;
    00165
    00166 /*
    00167  * Number definitions
    00168  */
    00169
    00170 /* Unsigned integer numbers */
    00171 typedef unsigned char           icUInt8Number;
    00172 typedef unsigned short          icUInt16Number;
    00173 typedef unsigned long           icUInt32Number;
    00174 typedef unsigned long           icUInt64Number[2];
    00175
    00176 /* Signed numbers */
    00177 typedef char                            icInt8Number;
    00178 typedef short                           icInt16Number;
    00179 typedef long                            icInt32Number;
    00180 typedef long                            icInt64Number[2];
    00181
    00182 /* Fixed numbers */
    00183 typedef long                            icS15Fixed16Number;
    00184 typedef unsigned long           icU16Fixed16Number;
    00185
    00186 #endif          /* 32-bit UNIX */
    00187
    00188
    00189 /*
    00190  * Many of the structures contain variable length arrays. This
    00191  * is represented by the use of the convention.
    00192  *
    00193  *              type            data[icAny];
    00194  */
    00195
    00196 /*------------------------------------------------------------------------*/
    00197 /*
    00198  * Defines used in the specification
    00199  */
    00200 #define icMagicNumber                                           0x61637370L             /* 'acsp' */
    00201 #define icVersionNumber                                         0x02000000L             /* 2.0, BCD */
    00202
    00203 /* Screening Encodings */
    00204 #define icPrtrDefaultScreensFalse                       0x00000000L             /* Bit position 0 */
    00205 #define icPrtrDefaultScreensTrue                        0x00000001L             /* Bit position 0 */
    00206 #define icLinesPerInch                                          0x00000002L             /* Bit position 1 */
    00207 #define icLinesPerCm                                            0x00000000L             /* Bit position 1 */
    00208
    00209 /*
    00210  * Device attributes, currently defined values correspond
    00211  * to the low 4 bytes of the 8 byte attribute quantity, see
    00212  * the header for their location.
    00213  */
    00214 #define icReflective                                            0x00000000L             /* Bit position 0 */
    00215 #define icTransparency                                          0x00000001L             /* Bit position 0 */
    00216 #define icGlossy                                                        0x00000000L             /* Bit position 1 */
    00217 #define icMatte                                                         0x00000002L             /* Bit position 1 */
    00218
    00219 /*
    00220  * Profile header flags, the low 16 bits are reserved for consortium
    00221  * use.
    00222  */
    00223 #define icEmbeddedProfileFalse                          0x00000000L             /* Bit position 0 */
    00224 #define icEmbeddedProfileTrue                           0x00000001L             /* Bit position 0 */
    00225 #define icUseAnywhere                                           0x00000000L             /* Bit position 1 */
    00226 #define icUseWithEmbeddedDataOnly                       0x00000002L             /* Bit position 1 */
    00227
    00228 /* Ascii or Binary data */
    00229 #define icAsciiData                                                     0x00000000L             /* Used in dataType */
    00230 #define icBinaryData                                            0x00000001L
    00231
    00232 /*
    00233  * Define used to indicate that this is a variable length array
    00234  */
    00235 #define icAny                                                           1
    00236
    00237
    00238 /*------------------------------------------------------------------------*/
    00239 /* public tags and sizes */
    00240 typedef enum {
    00241     icSigAToB0Tag                                               = 0x41324230L,          /* 'A2B0' */
    00242     icSigAToB1Tag                                               = 0x41324231L,          /* 'A2B1' */
    00243     icSigAToB2Tag                                               = 0x41324232L,          /* 'A2B2' */
    00244     icSigBlueColorantTag                                = 0x6258595AL,          /* 'bXYZ' */
    00245     icSigBlueTRCTag                                             = 0x62545243L,          /* 'bTRC' */
    00246     icSigBToA0Tag                                               = 0x42324130L,          /* 'B2A0' */
    00247     icSigBToA1Tag                                               = 0x42324131L,          /* 'B2A1' */
    00248     icSigBToA2Tag                                               = 0x42324132L,          /* 'B2A2' */
    00249     icSigCalibrationDateTimeTag                 = 0x63616C74L,          /* 'calt' */
    00250     icSigCharTargetTag                                  = 0x74617267L,          /* 'targ' */
    00251     icSigCopyrightTag                                   = 0x63707274L,          /* 'cprt' */
    00252     icSigDeviceMfgDescTag                               = 0x646D6E64L,          /* 'dmnd' */
    00253     icSigDeviceModelDescTag                             = 0x646D6464L,          /* 'dmdd' */
    00254     icSigGamutTag                                               = 0x67616D74L,          /* 'gamt ' */
    00255     icSigGrayTRCTag                                             = 0x6b545243L,          /* 'kTRC' */
    00256     icSigGreenColorantTag                               = 0x6758595AL,          /* 'gXYZ' */
    00257     icSigGreenTRCTag                                    = 0x67545243L,          /* 'gTRC' */
    00258     icSigLuminanceTag                                   = 0x6C756d69L,          /* 'lumi' */
    00259     icSigMeasurementTag                                 = 0x6D656173L,          /* 'meas' */
    00260     icSigMediaBlackPointTag                             = 0x626B7074L,          /* 'bkpt' */
    00261     icSigMediaWhitePointTag                             = 0x77747074L,          /* 'wtpt' */
    00262     icSigNamedColorTag                                  = 0x6E636f6CL,          /* 'ncol'
    00263                                                                                                                          * OBSOLETE, use ncl2 */
    00264     icSigPreview0Tag                                    = 0x70726530L,          /* 'pre0' */
    00265     icSigPreview1Tag                                    = 0x70726531L,          /* 'pre1' */
    00266     icSigPreview2Tag                                    = 0x70726532L,          /* 'pre2' */
    00267     icSigProfileDescriptionTag                  = 0x64657363L,          /* 'desc' */
    00268     icSigProfileSequenceDescTag                 = 0x70736571L,          /* 'pseq' */
    00269     icSigPs2CRD0Tag                                             = 0x70736430L,          /* 'psd0' */
    00270     icSigPs2CRD1Tag                                             = 0x70736431L,          /* 'psd1' */
    00271     icSigPs2CRD2Tag                                             = 0x70736432L,          /* 'psd2' */
    00272     icSigPs2CRD3Tag                                             = 0x70736433L,          /* 'psd3' */
    00273     icSigPs2CSATag                                              = 0x70733273L,          /* 'ps2s' */
    00274     icSigPs2RenderingIntentTag                  = 0x70733269L,          /* 'ps2i' */
    00275     icSigRedColorantTag                                 = 0x7258595AL,          /* 'rXYZ' */
    00276     icSigRedTRCTag                                              = 0x72545243L,          /* 'rTRC' */
    00277     icSigScreeningDescTag                               = 0x73637264L,          /* 'scrd' */
    00278     icSigScreeningTag                                   = 0x7363726EL,          /* 'scrn' */
    00279     icSigTechnologyTag                                  = 0x74656368L,          /* 'tech' */
    00280     icSigUcrBgTag                                               = 0x62666420L,          /* 'bfd ' */
    00281     icSigViewingCondDescTag                             = 0x76756564L,          /* 'vued' */
    00282     icSigViewingConditionsTag                   = 0x76696577L,          /* 'view' */
    00283     icSigNamedColor2Tag                                 = 0x6E636C32L,          /* 'ncl2' */
    00284     icMaxEnumTag                                                = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00285 } icTagSignature;
    00286
    00287 /* technology signature descriptions */
    00288 typedef enum {
    00289     icSigDigitalCamera                                  = 0x6463616DL,          /* 'dcam' */
    00290     icSigFilmScanner                                    = 0x6673636EL,          /* 'fscn' */
    00291     icSigReflectiveScanner                              = 0x7273636EL,          /* 'rscn' */
    00292     icSigInkJetPrinter                                  = 0x696A6574L,          /* 'ijet' */
    00293     icSigThermalWaxPrinter                              = 0x74776178L,          /* 'twax' */
    00294     icSigElectrophotographicPrinter             = 0x6570686FL,          /* 'epho' */
    00295     icSigElectrostaticPrinter                   = 0x65737461L,          /* 'esta' */
    00296     icSigDyeSublimationPrinter                  = 0x64737562L,          /* 'dsub' */
    00297     icSigPhotographicPaperPrinter               = 0x7270686FL,          /* 'rpho' */
    00298     icSigFilmWriter                                             = 0x6670726EL,          /* 'fprn' */
    00299     icSigVideoMonitor                                   = 0x7669646DL,          /* 'vidm' */
    00300     icSigVideoCamera                                    = 0x76696463L,          /* 'vidc' */
    00301     icSigProjectionTelevision                   = 0x706A7476L,          /* 'pjtv' */
    00302     icSigCRTDisplay                                             = 0x43525420L,          /* 'CRT ' */
    00303     icSigPMDisplay                                              = 0x504D4420L,          /* 'PMD ' */
    00304     icSigAMDisplay                                              = 0x414D4420L,          /* 'AMD ' */
    00305     icSigPhotoCD                                                = 0x4B504344L,          /* 'KPCD' */
    00306     icSigPhotoImageSetter                               = 0x696D6773L,          /* 'imgs' */
    00307     icSigGravure                                                = 0x67726176L,          /* 'grav' */
    00308     icSigOffsetLithography                              = 0x6F666673L,          /* 'offs' */
    00309     icSigSilkscreen                                             = 0x73696C6BL,          /* 'silk' */
    00310     icSigFlexography                                    = 0x666C6578L,          /* 'flex' */
    00311     icMaxEnumTechnology                                 = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00312 } icTechnologySignature;
    00313
    00314 /* type signatures */
    00315 typedef enum {
    00316     icSigCurveType                                              = 0x63757276L,          /* 'curv' */
    00317     icSigDataType                                               = 0x64617461L,          /* 'data' */
    00318     icSigDateTimeType                                   = 0x6474696DL,          /* 'dtim' */
    00319     icSigLut16Type                                              = 0x6d667432L,          /* 'mft2' */
    00320     icSigLut8Type                                               = 0x6d667431L,          /* 'mft1' */
    00321     icSigMeasurementType                                = 0x6D656173L,          /* 'meas' */
    00322     icSigNamedColorType                                 = 0x6E636f6CL,          /* 'ncol'
    00323                                                                                                                          * OBSOLETE, use ncl2 */
    00324     icSigProfileSequenceDescType                = 0x70736571L,          /* 'pseq' */
    00325     icSigS15Fixed16ArrayType                    = 0x73663332L,          /* 'sf32' */
    00326     icSigScreeningType                                  = 0x7363726EL,          /* 'scrn' */
    00327     icSigSignatureType                                  = 0x73696720L,          /* 'sig ' */
    00328     icSigTextType                                               = 0x74657874L,          /* 'text' */
    00329     icSigTextDescriptionType                    = 0x64657363L,          /* 'desc' */
    00330     icSigU16Fixed16ArrayType                    = 0x75663332L,          /* 'uf32' */
    00331     icSigUcrBgType                                              = 0x62666420L,          /* 'bfd ' */
    00332     icSigUInt16ArrayType                                = 0x75693136L,          /* 'ui16' */
    00333     icSigUInt32ArrayType                                = 0x75693332L,          /* 'ui32' */
    00334     icSigUInt64ArrayType                                = 0x75693634L,          /* 'ui64' */
    00335     icSigUInt8ArrayType                                 = 0x75693038L,          /* 'ui08' */
    00336     icSigViewingConditionsType                  = 0x76696577L,          /* 'view' */
    00337     icSigXYZType                                                = 0x58595A20L,          /* 'XYZ ' */
    00338     icSigXYZArrayType                                   = 0x58595A20L,          /* 'XYZ ' */
    00339     icSigNamedColor2Type                                = 0x6E636C32L,          /* 'ncl2' */
    00340     icMaxEnumType                                               = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00341 } icTagTypeSignature;
    00342
    00343 /*
    00344  * Color Space Signatures
    00345  * Note that only icSigXYZData and icSigLabData are valid
    00346  * Profile Connection Spaces (PCSs)
    00347  */
    00348 typedef enum {
    00349     icSigXYZData                                                = 0x58595A20L,          /* 'XYZ ' */
    00350     icSigLabData                                                = 0x4C616220L,          /* 'Lab ' */
    00351     icSigLuvData                                                = 0x4C757620L,          /* 'Luv ' */
    00352     icSigYCbCrData                                              = 0x59436272L,          /* 'YCbr' */
    00353     icSigYxyData                                                = 0x59787920L,          /* 'Yxy ' */
    00354     icSigRgbData                                                = 0x52474220L,          /* 'RGB ' */
    00355     icSigGrayData                                               = 0x47524159L,          /* 'GRAY' */
    00356     icSigHsvData                                                = 0x48535620L,          /* 'HSV ' */
    00357     icSigHlsData                                                = 0x484C5320L,          /* 'HLS ' */
    00358     icSigCmykData                                               = 0x434D594BL,          /* 'CMYK' */
    00359     icSigCmyData                                                = 0x434D5920L,          /* 'CMY ' */
    00360
    00361     icSigMCH2Data                                               = 0x32434C52L,          /* '2CLR' */
    00362     icSigMCH3Data                                               = 0x33434C52L,          /* '3CLR' */
    00363     icSigMCH4Data                                               = 0x34434C52L,          /* '4CLR' */
    00364         icSigMCH5Data                                           = 0x35434C52L,          /* '5CLR' */
    00365         icSigMCH6Data                                           = 0x36434C52L,          /* '6CLR' */
    00366         icSigMCH7Data                                           = 0x37434C52L,          /* '7CLR' */
    00367         icSigMCH8Data                                           = 0x38434C52L,          /* '8CLR' */
    00368         icSigMCH9Data                                           = 0x39434C52L,          /* '9CLR' */
    00369         icSigMCHAData                                           = 0x41434C52L,          /* 'ACLR' */
    00370         icSigMCHBData                                           = 0x42434C52L,          /* 'BCLR' */
    00371         icSigMCHCData                                           = 0x43434C52L,          /* 'CCLR' */
    00372         icSigMCHDData                                           = 0x44434C52L,          /* 'DCLR' */
    00373         icSigMCHEData                                           = 0x45434C52L,          /* 'ECLR' */
    00374         icSigMCHFData                                           = 0x46434C52L,          /* 'FCLR' */
    00375     icSigNamedData                                              = 0x6e6d636cL,          /* 'nmcl' */
    00376
    00377     icMaxEnumData                                               = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00378 } icColorSpaceSignature;
    00379
    00380 /* profileClass enumerations */
    00381 typedef enum {
    00382     icSigInputClass                                             = 0x73636E72L,          /* 'scnr' */
    00383     icSigDisplayClass                                   = 0x6D6E7472L,          /* 'mntr' */
    00384     icSigOutputClass                                    = 0x70727472L,          /* 'prtr' */
    00385     icSigLinkClass                                              = 0x6C696E6BL,          /* 'link' */
    00386     icSigAbstractClass                                  = 0x61627374L,          /* 'abst' */
    00387     icSigColorSpaceClass                                = 0x73706163L,          /* 'spac' */
    00388     icSigNamedColorClass                = 0x6e6d636cL,          /* 'nmcl' */
    00389     icMaxEnumClass                                              = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00390 } icProfileClassSignature;
    00391
    00392 /* Platform Signatures */
    00393 typedef enum {
    00394     icSigMacintosh                                              = 0x4150504CL,          /* 'APPL' */
    00395     icSigMicrosoft                                              = 0x4D534654L,          /* 'MSFT' */
    00396     icSigSolaris                                                = 0x53554E57L,          /* 'SUNW' */
    00397     icSigSGI                                                    = 0x53474920L,          /* 'SGI ' */
    00398     icSigTaligent                                               = 0x54474E54L,          /* 'TGNT' */
    00399     icMaxEnumPlatform                                   = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00400 } icPlatformSignature;
    00401
    00402 /*------------------------------------------------------------------------*/
    00403 /*
    00404  * Other enums
    00405  */
    00406
    00407 /* Measurement Flare, used in the measurmentType tag */
    00408 typedef enum {
    00409     icFlare0                                                    = 0x00000000L,          /* 0% flare */
    00410     icFlare100                                                  = 0x00000001L,          /* 100% flare */
    00411     icMaxFlare                                                  = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00412 } icMeasurementFlare;
    00413
    00414 /* Measurement Geometry, used in the measurmentType tag */
    00415 typedef enum {
    00416     icGeometryUnknown                                   = 0x00000000L,          /* Unknown geometry */
    00417     icGeometry045or450                                  = 0x00000001L,          /* 0/45 or 45/0 */
    00418     icGeometry0dord0                                    = 0x00000002L,          /* 0/d or d/0 */
    00419     icMaxGeometry                                               = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00420 } icMeasurementGeometry;
    00421
    00422 /* Rendering Intents, used in the profile header */
    00423 typedef enum {
    00424     icPerceptual                                                = 0,
    00425     icRelativeColorimetric                              = 1,
    00426     icSaturation                                                = 2,
    00427     icAbsoluteColorimetric                              = 3,
    00428     icMaxEnumIntent                                             = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00429 } icRenderingIntent;
    00430
    00431 /* Different Spot Shapes currently defined, used for screeningType */
    00432 typedef enum {
    00433     icSpotShapeUnknown                                  = 0,
    00434     icSpotShapePrinterDefault                   = 1,
    00435     icSpotShapeRound                                    = 2,
    00436     icSpotShapeDiamond                                  = 3,
    00437     icSpotShapeEllipse                                  = 4,
    00438     icSpotShapeLine                                             = 5,
    00439     icSpotShapeSquare                                   = 6,
    00440     icSpotShapeCross                                    = 7,
    00441     icMaxEnumSpot                                               = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00442 } icSpotShape;
    00443
    00444 /* Standard Observer, used in the measurmentType tag */
    00445 typedef enum {
    00446     icStdObsUnknown                                             = 0x00000000L,          /* Unknown observer */
    00447     icStdObs1931TwoDegrees                              = 0x00000001L,          /* 1931 two degrees */
    00448     icStdObs1964TenDegrees                              = 0x00000002L,          /* 1961 ten degrees */
    00449     icMaxStdObs                                                 = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00450 } icStandardObserver;
    00451
    00452 /* Pre-defined illuminants, used in measurement and viewing conditions type */
    00453 typedef enum {
    00454     icIlluminantUnknown                                 = 0x00000000L,
    00455     icIlluminantD50                                             = 0x00000001L,
    00456     icIlluminantD65                                             = 0x00000002L,
    00457     icIlluminantD93                                             = 0x00000003L,
    00458     icIlluminantF2                                              = 0x00000004L,
    00459     icIlluminantD55                                             = 0x00000005L,
    00460     icIlluminantA                                               = 0x00000006L,
    00461     icIlluminantEquiPowerE                              = 0x00000007L,          /* Equi-Power (E) */
    00462     icIlluminantF8                                              = 0x00000008L,
    00463     icMaxEnumIluminant                                  = 0xFFFFFFFFL           /* enum = 4 bytes max */
    00464 } icIlluminant;
    00465
    00466
    00467 /*------------------------------------------------------------------------*/
    00468 /*
    00469  * Arrays of numbers
    00470  */
    00471
    00472 /* Int8 Array */
    00473 typedef struct {
    00474     icInt8Number                data[icAny];            /* Variable array of values */
    00475 } icInt8Array;
    00476
    00477 /* UInt8 Array */
    00478 typedef struct {
    00479     icUInt8Number               data[icAny];            /* Variable array of values */
    00480 } icUInt8Array;
    00481
    00482 /* uInt16 Array */
    00483 typedef struct {
    00484     icUInt16Number              data[icAny];            /* Variable array of values */
    00485 } icUInt16Array;
    00486
    00487 /* Int16 Array */
    00488 typedef struct {
    00489     icInt16Number               data[icAny];            /* Variable array of values */
    00490 } icInt16Array;
    00491
    00492 /* uInt32 Array */
    00493 typedef struct {
    00494     icUInt32Number              data[icAny];            /* Variable array of values */
    00495 } icUInt32Array;
    00496
    00497 /* Int32 Array */
    00498 typedef struct {
    00499     icInt32Number               data[icAny];            /* Variable array of values */
    00500 } icInt32Array;
    00501
    00502 /* UInt64 Array */
    00503 typedef struct {
    00504     icUInt64Number              data[icAny];            /* Variable array of values */
    00505 } icUInt64Array;
    00506
    00507 /* Int64 Array */
    00508 typedef struct {
    00509     icInt64Number               data[icAny];            /* Variable array of values */
    00510 } icInt64Array;
    00511
    00512 /* u16Fixed16 Array */
    00513 typedef struct {
    00514     icU16Fixed16Number  data[icAny];            /* Variable array of values */
    00515 } icU16Fixed16Array;
    00516
    00517 /* s15Fixed16 Array */
    00518 typedef struct {
    00519     icS15Fixed16Number  data[icAny];            /* Variable array of values */
    00520 } icS15Fixed16Array;
    00521
    00522 /* The base date time number */
    00523 typedef struct {
    00524     icUInt16Number              year;
    00525     icUInt16Number              month;
    00526     icUInt16Number              day;
    00527     icUInt16Number              hours;
    00528     icUInt16Number              minutes;
    00529     icUInt16Number              seconds;
    00530 } icDateTimeNumber;
    00531
    00532 /* XYZ Number  */
    00533 typedef struct {
    00534     icS15Fixed16Number          X;
    00535     icS15Fixed16Number          Y;
    00536     icS15Fixed16Number          Z;
    00537 } icXYZNumber;
    00538
    00539 /* XYZ Array */
    00540 typedef struct {
    00541     icXYZNumber                 data[icAny];            /* Variable array of XYZ numbers */
    00542 } icXYZArray;
    00543
    00544 /* Curve */
    00545 typedef struct {
    00546     icUInt32Number              count;                          /* Number of entries */
    00547     icUInt16Number              data[icAny];            /* The actual table data, real
    00548                                                      * number is determined by count
    00549                                                                                          * Interpretation depends on how
    00550                                                                                          * data is used with a given tag.
    00551                                                                                          */
    00552 } icCurve;
    00553
    00554 /* Data */
    00555 typedef struct {
    00556     icUInt32Number              dataFlag;                       /* 0 = ascii, 1 = binary */
    00557     icInt8Number                data[icAny];            /* Data, size determined from tag */
    00558 } icData;
    00559
    00560 /* lut16 */
    00561 typedef struct {
    00562     icUInt8Number               inputChan;                      /* Number of input channels */
    00563     icUInt8Number               outputChan;                     /* Number of output channels */
    00564     icUInt8Number               clutPoints;                     /* Number of clutTable grid points */
    00565     icInt8Number                pad;                            /* Padding for byte alignment */
    00566     icS15Fixed16Number  e00;                            /* e00 in the 3 * 3 */
    00567     icS15Fixed16Number  e01;                            /* e01 in the 3 * 3 */
    00568     icS15Fixed16Number  e02;                            /* e02 in the 3 * 3 */
    00569     icS15Fixed16Number  e10;                            /* e10 in the 3 * 3 */
    00570     icS15Fixed16Number  e11;                            /* e11 in the 3 * 3 */
    00571     icS15Fixed16Number  e12;                            /* e12 in the 3 * 3 */
    00572     icS15Fixed16Number  e20;                            /* e20 in the 3 * 3 */
    00573     icS15Fixed16Number  e21;                            /* e21 in the 3 * 3 */
    00574     icS15Fixed16Number  e22;                            /* e22 in the 3 * 3 */
    00575     icUInt16Number              inputEnt;                       /* Number of input table entries */
    00576     icUInt16Number              outputEnt;                      /* Number of output table entries */
    00577     icUInt16Number              data[icAny];            /* Data follows see spec for size */
    00578 /*
    00579  *  Data that follows is of this form
    00580  *
    00581  *  icUInt16Number              inputTable[inputChan][icAny];           * The input table
    00582  *  icUInt16Number              clutTable[icAny];                                       * The clut table
    00583  *  icUInt16Number              outputTable[outputChan][icAny];         * The output table
    00584  */
    00585 } icLut16;
    00586
    00587 /* lut8, input & output tables are always 256 bytes in length */
    00588 typedef struct {
    00589     icUInt8Number               inputChan;                      /* Number of input channels */
    00590     icUInt8Number               outputChan;                     /* Number of output channels */
    00591     icUInt8Number               clutPoints;                     /* Number of clutTable grid points */
    00592     icInt8Number                pad;
    00593     icS15Fixed16Number  e00;                            /* e00 in the 3 * 3 */
    00594     icS15Fixed16Number  e01;                            /* e01 in the 3 * 3 */
    00595     icS15Fixed16Number  e02;                            /* e02 in the 3 * 3 */
    00596     icS15Fixed16Number  e10;                            /* e10 in the 3 * 3 */
    00597     icS15Fixed16Number  e11;                            /* e11 in the 3 * 3 */
    00598     icS15Fixed16Number  e12;                            /* e12 in the 3 * 3 */
    00599     icS15Fixed16Number  e20;                            /* e20 in the 3 * 3 */
    00600     icS15Fixed16Number  e21;                            /* e21 in the 3 * 3 */
    00601     icS15Fixed16Number  e22;                            /* e22 in the 3 * 3 */
    00602     icUInt8Number               data[icAny];            /* Data follows see spec for size */
    00603 /*
    00604  *  Data that follows is of this form
    00605  *
    00606  *  icUInt8Number               inputTable[inputChan][256];             * The input table
    00607  *  icUInt8Number               clutTable[icAny];                               * The clut table
    00608  *  icUInt8Number               outputTable[outputChan][256];   * The output table
    00609  */
    00610 } icLut8;
    00611
    00612 /* Measurement Data */
    00613 typedef struct {
    00614     icStandardObserver                  stdObserver;    /* Standard observer */
    00615     icXYZNumber                                 backing;                /* XYZ for backing material */
    00616     icMeasurementGeometry               geometry;               /* Measurement geometry */
    00617     icMeasurementFlare                  flare;                  /* Measurement flare */
    00618     icIlluminant                                illuminant;             /* Illuminant */
    00619 } icMeasurement;
    00620
    00621 /* Named color */
    00622
    00623 /*
    00624  * icNamedColor2 takes the place of icNamedColor, approved at the
    00625  * SIGGRAPH 95, ICC meeting.
    00626  */
    00627 typedef struct {
    00628     icUInt32Number              vendorFlag;                             /* Bottom 16 bits for IC use */
    00629     icUInt32Number              count;                                  /* Count of named colors */
    00630     icUInt32Number              nDeviceCoords;                  /* Number of device coordinates */
    00631     icInt8Number                prefix[32];                             /* Prefix for each color name */
    00632     icInt8Number                suffix[32];                             /* Suffix for each color name */
    00633     icInt8Number                data[icAny];                    /* Named color data follows */
    00634 /*
    00635  *  Data that follows is of this form
    00636  *
    00637  * icInt8Number                 root1[32];                              * Root name for first color
    00638  * icUInt16Number               pcsCoords1[icAny];              * PCS coordinates of first color
    00639  * icUInt16Number               deviceCoords1[icAny];   * Device coordinates of first color
    00640  * icInt8Number                 root2[32];                              * Root name for second color
    00641  * icUInt16Number               pcsCoords2[icAny];              * PCS coordinates of first color
    00642  * icUInt16Number               deviceCoords2[icAny];   * Device coordinates of first color
    00643  *                                              :
    00644  *                                              :
    00645  * Repeat for name and PCS and device color coordinates up to (count-1)
    00646  *
    00647  * NOTES:
    00648  * PCS and device space can be determined from the header.
    00649  *
    00650  * PCS coordinates are icUInt16 numbers and are described in section 2.6 of
    00651  * the ICC spec. Only 16 bit L*a*b* and XYZ are allowed. The number of
    00652  * coordinates is consistent with the headers PCS.
    00653  *
    00654  * Device coordinates are icUInt16 numbers where 0x0000 represents
    00655  * the minimum value and 0xFFFF represents the maximum value.
    00656  * If the nDeviceCoords value is 0 this field is not given.
    00657  */
    00658 } icNamedColor2;
    00659
    00660 /* Profile sequence structure */
    00661 typedef struct {
    00662     icSignature                         deviceMfg;                      /* Device Manufacturer */
    00663     icSignature                         deviceModel;            /* Decvice Model */
    00664     icUInt64Number                      attributes;                     /* Device attributes */
    00665     icTechnologySignature       technology;                     /* Technology signature */
    00666     icInt8Number                        data[icAny];            /* Descriptions text follows */
    00667 /*
    00668  *  Data that follows is of this form, this is an icInt8Number
    00669  *  to avoid problems with a compiler generating  bad code as
    00670  *  these arrays are variable in length.
    00671  *
    00672  * icTextDescription            deviceMfgDesc;          * Manufacturer text
    00673  * icTextDescription            modelDesc;                      * Model text
    00674  */
    00675 } icDescStruct;
    00676
    00677 /* Profile sequence description */
    00678 typedef struct {
    00679     icUInt32Number                      count;                          /* Number of descriptions */
    00680     icUInt8Number                       data[icAny];            /* Array of description struct */
    00681 } icProfileSequenceDesc;
    00682
    00683 /* textDescription */
    00684 typedef struct {
    00685     icUInt32Number                      count;                          /* Description length */
    00686     icInt8Number                        data[icAny];            /* Descriptions follow */
    00687 /*
    00688  *  Data that follows is of this form
    00689  *
    00690  * icInt8Number                         desc[count]                     * NULL terminated ascii string
    00691  * icUInt32Number                       ucLangCode;                     * UniCode language code
    00692  * icUInt32Number                       ucCount;                        * UniCode description length
    00693  * icInt16Number                        ucDesc[ucCount];        * The UniCode description
    00694  * icUInt16Number                       scCode;                         * ScriptCode code
    00695  * icUInt8Number                        scCount;                        * ScriptCode count
    00696  * icInt8Number                         scDesc[67];                     * ScriptCode Description
    00697  */
    00698 } icTextDescription;
    00699
    00700 /* Screening Data */
    00701 typedef struct {
    00702     icS15Fixed16Number          frequency;                      /* Frequency */
    00703     icS15Fixed16Number          angle;                          /* Screen angle */
    00704     icSpotShape                         spotShape;                      /* Spot Shape encodings below */
    00705 } icScreeningData;
    00706
    00707 typedef struct {
    00708     icUInt32Number                      screeningFlag;          /* Screening flag */
    00709     icUInt32Number                      channels;                       /* Number of channels */
    00710     icScreeningData                     data[icAny];            /* Array of screening data */
    00711 } icScreening;
    00712
    00713 /* Text Data */
    00714 typedef struct {
    00715     icInt8Number                        data[icAny];            /* Variable array of characters */
    00716 } icText;
    00717
    00718 /* Structure describing either a UCR or BG curve */
    00719 typedef struct {
    00720     icUInt32Number                      count;                          /* Curve length */
    00721     icUInt16Number                      curve[icAny];           /* The array of curve values */
    00722 } icUcrBgCurve;
    00723
    00724 /* Under color removal, black generation */
    00725 typedef struct {
    00726     icInt8Number                        data[icAny];            /* The Ucr BG data */
    00727 /*
    00728  *  Data that follows is of this form, this is a icInt8Number
    00729  *  to avoid problems with a compiler generating  bad code as
    00730  *  these arrays are variable in length.
    00731  *
    00732  * icUcrBgCurve                         ucr;                            * Ucr curve
    00733  * icUcrBgCurve                         bg;                                     * Bg curve
    00734  * icInt8Number                         string;                         * UcrBg description
    00735  */
    00736 } icUcrBg;
    00737
    00738 /* viewingConditionsType */
    00739 typedef struct {
    00740     icXYZNumber                         illuminant;                     /* In candelas per metre sq'd */
    00741     icXYZNumber                         surround;                       /* In candelas per metre sq'd */
    00742     icIlluminant                        stdIluminant;           /* See icIlluminant defines */
    00743 } icViewingCondition;
    00744
    00745
    00746 /*------------------------------------------------------------------------*/
    00747 /*
    00748  * Tag Type definitions
    00749  */
    00750
    00751 /*
    00752  * Many of the structures contain variable length arrays. This
    00753  * is represented by the use of the convention.
    00754  *
    00755  *              type            data[icAny];
    00756  */
    00757
    00758 /* The base part of each tag */
    00759 typedef struct {
    00760     icTagTypeSignature          sig;                            /* Signature */
    00761     icInt8Number                        reserved[4];            /* Reserved, set to 0 */
    00762 } icTagBase;
    00763
    00764 /* curveType */
    00765 typedef struct {
    00766     icTagBase                           base;                           /* Signature, "curv" */
    00767     icCurve                                     curve;                          /* The curve data */
    00768 } icCurveType;
    00769
    00770 /* dataType */
    00771 typedef struct {
    00772     icTagBase                           base;                           /* Signature, "data" */
    00773     icData                                      data;                           /* The data structure */
    00774 } icDataType;
    00775
    00776 /* dateTimeType */
    00777 typedef struct {
    00778     icTagBase                           base;                           /* Signature, "dtim" */
    00779     icDateTimeNumber            date;                           /* The date */
    00780 } icDateTimeType;
    00781
    00782 /* lut16Type */
    00783 typedef struct {
    00784     icTagBase                           base;                           /* Signature, "mft2" */
    00785     icLut16                                     lut;                            /* Lut16 data */
    00786 } icLut16Type;
    00787
    00788 /* lut8Type, input & output tables are always 256 bytes in length */
    00789 typedef struct {
    00790     icTagBase                           base;                           /* Signature, "mft1" */
    00791     icLut8                                      lut;                            /* Lut8 data */
    00792 } icLut8Type;
    00793
    00794 /* Measurement Type */
    00795 typedef struct {
    00796     icTagBase                           base;                           /* Signature, "meas" */
    00797     icMeasurement                       measurement;            /* Measurement data */
    00798 } icMeasurementType;
    00799
    00800 /* Named color type */
    00801 /* icNamedColor2Type, replaces icNamedColorType */
    00802 typedef struct {
    00803     icTagBase                           base;                           /* Signature, "ncl2" */
    00804     icNamedColor2                       ncolor;                         /* Named color data */
    00805 } icNamedColor2Type;
    00806
    00807 /* Profile sequence description type */
    00808 typedef struct {
    00809     icTagBase                           base;                           /* Signature, "pseq" */
    00810     icProfileSequenceDesc       desc;                           /* The seq description */
    00811 } icProfileSequenceDescType;
    00812
    00813 /* textDescriptionType */
    00814 typedef struct {
    00815     icTagBase                           base;                           /* Signature, "desc" */
    00816     icTextDescription           desc;                           /* The description */
    00817 } icTextDescriptionType;
    00818
    00819 /* s15Fixed16Type */
    00820 typedef struct {
    00821     icTagBase                           base;                           /* Signature, "sf32" */
    00822     icS15Fixed16Array           data;                           /* Array of values */
    00823 } icS15Fixed16ArrayType;
    00824
    00825 typedef struct {
    00826     icTagBase                           base;                           /* Signature, "scrn" */
    00827     icScreening                         screen;                         /* Screening structure */
    00828 } icScreeningType;
    00829
    00830 /* sigType */
    00831 typedef struct {
    00832     icTagBase                           base;                           /* Signature, "sig" */
    00833     icSignature                         signature;                      /* The signature data */
    00834 } icSignatureType;
    00835
    00836 /* textType */
    00837 typedef struct {
    00838     icTagBase                           base;                           /* Signature, "text" */
    00839     icText                                      data;                           /* Variable array of characters */
    00840 } icTextType;
    00841
    00842 /* u16Fixed16Type */
    00843 typedef struct {
    00844     icTagBase                           base;                           /* Signature, "uf32" */
    00845     icU16Fixed16Array           data;                           /* Variable array of values */
    00846 } icU16Fixed16ArrayType;
    00847
    00848 /* Under color removal, black generation type */
    00849 typedef struct {
    00850     icTagBase                           base;                           /* Signature, "bfd " */
    00851     icUcrBg                                     data;                           /* ucrBg structure */
    00852 } icUcrBgType;
    00853
    00854 /* uInt16Type */
    00855 typedef struct {
    00856     icTagBase                           base;                           /* Signature, "ui16" */
    00857     icUInt16Array                       data;                           /* Variable array of values */
    00858 } icUInt16ArrayType;
    00859
    00860 /* uInt32Type */
    00861 typedef struct {
    00862     icTagBase                           base;                           /* Signature, "ui32" */
    00863     icUInt32Array                       data;                           /* Variable array of values */
    00864 } icUInt32ArrayType;
    00865
    00866 /* uInt64Type */
    00867 typedef struct {
    00868     icTagBase                           base;                           /* Signature, "ui64" */
    00869     icUInt64Array                       data;                           /* Variable array of values */
    00870 } icUInt64ArrayType;
    00871
    00872 /* uInt8Type */
    00873 typedef struct {
    00874     icTagBase                           base;                           /* Signature, "ui08" */
    00875     icUInt8Array                        data;                           /* Variable array of values */
    00876 } icUInt8ArrayType;
    00877
    00878 /* viewingConditionsType */
    00879 typedef struct {
    00880     icTagBase                           base;                           /* Signature, "view" */
    00881     icViewingCondition          view;                           /* Viewing conditions */
    00882 } icViewingConditionType;
    00883
    00884 /* XYZ Type */
    00885 typedef struct {
    00886     icTagBase                           base;                           /* Signature, "XYZ" */
    00887     icXYZArray                          data;                           /* Variable array of XYZ numbers */
    00888 } icXYZType;
    00889
    00890 /*------------------------------------------------------------------------*/
    00891
    00892 /*
    00893  * Lists of tags, tags, profile header and profile strcuture
    00894  */
    00895
    00896 /* A tag */
    00897 typedef struct {
    00898     icTagSignature                      sig;                            /* The tag signature */
    00899     icUInt32Number                      offset;                         /* Start of tag relative to
    00900                                                                                                  * start of header, Spec Section 8 */
    00901     icUInt32Number                      size;                           /* Size in bytes */
    00902 } icTag;
    00903
    00904 /* A Structure that may be used independently for a list of tags */
    00905 typedef struct {
    00906     icUInt32Number                      count;                          /* Number of tags in the profile */
    00907     icTag                                       tags[icAny];            /* Variable array of tags */
    00908 } icTagList;
    00909
    00910 /* The Profile header */
    00911 typedef struct {
    00912     icUInt32Number                      size;                           /* Profile size in bytes */
    00913     icSignature                         cmmId;                          /* CMM for this profile */
    00914     icUInt32Number                      version;                        /* Format version number */
    00915     icProfileClassSignature     deviceClass;            /* Type of profile */
    00916     icColorSpaceSignature       colorSpace;                     /* Color space of data */
    00917     icColorSpaceSignature       pcs;                            /* PCS, XYZ or Lab only */
    00918     icDateTimeNumber            date;                           /* Date profile was created */
    00919     icSignature                         magic;                          /* icMagicNumber */
    00920     icPlatformSignature         platform;                       /* Primary Platform */
    00921     icUInt32Number                      flags;                          /* Various bit settings */
    00922     icSignature                         manufacturer;           /* Device manufacturer */
    00923     icUInt32Number                      model;                          /* Device model number */
    00924     icUInt64Number                      attributes;                     /* Device attributes */
    00925     icUInt32Number                      renderingIntent;        /* Rendering intent */
    00926     icXYZNumber                         illuminant;                     /* Profile illuminant */
    00927         icSignature                     creator;                        /* profile creator */
    00928     icInt8Number                        reserved[44];           /* Reserved for future use */
    00929 } icHeader;
    00930
    00931 /*
    00932  * A profile,
    00933  * we can't use icTagList here because its not at the end of the structure
    00934  */
    00935 typedef struct {
    00936     icHeader                            header;                         /* The header */
    00937     icTagList                           tagList;                        /* WERNER */
    00938     /* Original:
    00939     icHeader                            header;                         The header
    00940         icUInt32Number                  count;                          Number of tags in the profile
    00941     icInt8Number                        data[icAny];            The tagTable and tagData */
    00942 /*
    00943  * Data that follows is of the form
    00944  *
    00945  * icTag                                        tagTable[icAny];        * The tag table
    00946  * icInt8Number                         tagData[icAny];         * The tag data
    00947  */
    00948 } icProfile;
    00949
    00950 /*------------------------------------------------------------------------*/
    00951 /* Obsolete entries */
    00952
    00953 /* icNamedColor was replaced with icNamedColor2 */
    00954 typedef struct {
    00955     icUInt32Number                      vendorFlag;                     /* Bottom 16 bits for IC use */
    00956     icUInt32Number                      count;                          /* Count of named colors */
    00957     icInt8Number                        data[icAny];            /* Named color data follows */
    00958 /*
    00959  *  Data that follows is of this form
    00960  *
    00961  * icInt8Number                         prefix[icAny];          * Prefix for the color name, max = 32
    00962  * icInt8Number                         suffix[icAny];          * Suffix for the color name, max = 32
    00963  * icInt8Number                         root1[icAny];           * Root name for first color, max = 32
    00964  * icInt8Number                         coords1[icAny];         * Color coordinates of first color
    00965  * icInt8Number                         root2[icAny];           * Root name for first color, max = 32
    00966  * icInt8Number                         coords2[icAny];         * Color coordinates of first color
    00967  *                                              :
    00968  *                                              :
    00969  * Repeat for root name and color coordinates up to (count-1)
    00970  */
    00971 } icNamedColor;
    00972
    00973 /* icNamedColorType was replaced by icNamedColor2Type */
    00974 typedef struct {
    00975     icTagBase                           base;                           /* Signature, "ncol" */
    00976     icNamedColor                        ncolor;                         /* Named color data */
    00977 } icNamedColorType;
    00978
    00979 #endif /* ICC_H */
    00980
    00981