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

icProfileHeader.h

Go to the documentation of this file.
00001 
00077 /*
00078  *
00079  *
00080 * Copyright (c) 2003-2006 The International Color Consortium. 
00081  *
00082  *
00083  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
00084  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00085  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00086  * DISCLAIMED.  IN NO EVENT SHALL THE INTERNATIONAL COLOR CONSORTIUM OR
00087  * ITS CONTRIBUTING MEMBERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00088  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00089  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
00090  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00091  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00092  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
00093  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00094  * SUCH DAMAGE.
00095  * ====================================================================
00096  *
00097  * This software consists of voluntary contributions made by many
00098  * individuals on behalf of the The International Color Consortium. 
00099  *
00100  *
00101  * Membership in the ICC is encouraged when this software is used for
00102  * commercial purposes. 
00103  *
00104  *  
00105  * For more information on The International Color Consortium, please
00106  * see <http://www.color.org/>.
00107  *  
00108  * 
00109  */
00110 
00111 
00112 /***************************************************************** 
00113  Copyright (c) 2002  Heidelberger Druckmaschinen AG 
00114 
00115  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
00116  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00117  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00118  * DISCLAIMED.  IN NO EVENT SHALL THE INTERNATIONAL COLOR CONSORTIUM OR
00119  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00120  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00121  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
00122  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00123  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00124  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
00125  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00126  * SUCH DAMAGE.
00127 ******************************************************************/
00128 
00129 /***************************************************************** 
00130  Copyright (c) 1994 SunSoft, Inc.
00131 
00132                     Rights Reserved
00133 
00134 Permission is hereby granted, free of charge, to any person 
00135 obtaining a copy of this software and associated documentation
00136 files (the "Software"), to deal in the Software without restrict- 
00137 ion, including without limitation the rights to use, copy, modify, 
00138 merge, publish distribute, sublicense, and/or sell copies of the 
00139 Software, and to permit persons to whom the Software is furnished 
00140 to do so, subject to the following conditions: 
00141  
00142 The above copyright notice and this permission notice shall be 
00143 included in all copies or substantial portions of the Software. 
00144  
00145 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
00146 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
00147 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
00148 INFRINGEMENT.  IN NO EVENT SHALL SUNSOFT, INC. OR ITS PARENT 
00149 COMPANY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
00150 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
00151 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 
00152 OTHER DEALINGS IN THE SOFTWARE. 
00153  
00154 Except as contained in this notice, the name of SunSoft, Inc. 
00155 shall not be used in advertising or otherwise to promote the 
00156 sale, use or other dealings in this Software without written 
00157 authorization from SunSoft Inc. 
00158 ******************************************************************/
00159 
00160  
00161 
00162 /* Header file guard bands */
00163 #ifndef icPROFILEHEADER_H
00164 #define icPROFILEHEADER_H
00165 
00166 
00167 /* In order for structures to work it is important to ensure that
00168  * the structure packing is set to 1.  On many compilers this
00169  * can be accomplished using #pragma pack(1).  Define the macro
00170  * ICSETBYTEPACKING to enable the following.*/
00171 #ifdef ICSETBYTEPACKING
00172 #pragma pack(1)
00173 #endif
00174  
00175 /*------------------------------------------------------------------------*/
00176 
00180 #define icMagicNumber                   0x61637370     /* 'acsp' */
00181 #define icVersionNumber                 0x02000000     /* 2.0, BCD */
00182 #define icVersionNumberV2_1             0x02100000     /* 2.1, BCD */
00183 #define icVersionNumberV4               0x04000000     /* 4.0, BCD */
00184 #define icVersionNumberV4_2             0x04200000     /* 4.2, BCD */
00185 
00187 #define icPrtrDefaultScreensFalse       0x00000000     /* Bit position 0 */
00188 #define icPrtrDefaultScreensTrue        0x00000001     /* Bit position 0 */
00189 #define icLinesPerInch                  0x00000002     /* Bit position 1 */
00190 #define icLinesPerCm                    0x00000000     /* Bit position 1 */
00191 
00197 #define icReflective                    0x00000000     /* Bit position 0 */
00198 #define icTransparency                  0x00000001     /* Bit position 0 */
00199 #define icGlossy                        0x00000000     /* Bit position 1 */
00200 #define icMatte                         0x00000002     /* Bit position 1 */
00201 #define icMediaPositive                 0x00000000     /* Bit position 2 */
00202 #define icMediaNegative                 0x00000004     /* Bit position 2 */
00203 #define icMediaColour                   0x00000000     /* Bit position 3 */
00204 #define icMediaBlackAndWhite            0x00000008     /* Bit position 3 */
00205 
00210 #define icEmbeddedProfileFalse          0x00000000     /* Bit position 0 */
00211 #define icEmbeddedProfileTrue           0x00000001     /* Bit position 0 */
00212 #define icUseAnywhere                   0x00000000     /* Bit position 1 */
00213 #define icUseWithEmbeddedDataOnly       0x00000002     /* Bit position 1 */
00214 
00216 #define icAsciiData                     0x00000000     /* Used in dataType */
00217 #define icBinaryData                    0x00000001
00218 
00222 #define icAny                               1
00223 
00237 #ifdef ICUINT8TYPE
00238 typedef ICUINT8TYPE          icUInt8Number;
00239 #else
00240 typedef unsigned char        icUInt8Number;
00241 #endif
00242 
00243 #ifdef ICUINT16TYPE
00244 typedef ICUINT16TYPE         icUInt16Number;
00245 #else
00246 typedef unsigned short       icUInt16Number;
00247 #endif
00248 
00249 #ifdef ICUINT32TYPE
00250 typedef ICUINT32TYPE         icUInt32Number;
00251 #else
00252 typedef unsigned long        icUInt32Number;
00253 #endif
00254 
00255 #ifdef ICUINT64TYPE
00256 typedef ICUINT64TYPE         icUInt64Number;
00257 #else
00258 typedef icUInt32Number       icUInt64Number[2];
00259 #endif
00260 
00261 typedef icUInt32Number       icSignature;
00262 
00263 
00265 #ifdef ICINT8TYPE
00266 typedef ICINT8TYPE           icInt8Number;
00267 #else
00268 typedef char                 icInt8Number;
00269 #endif
00270 
00271 #ifdef ICINT16TYPE
00272 typedef ICINT16TYPE          icInt16Number;
00273 #else
00274 typedef short                icInt16Number;
00275 #endif
00276 
00277 #ifdef ICINT32TYPE
00278 typedef ICINT32TYPE          icInt32Number;
00279 #else
00280 typedef long                 icInt32Number;
00281 #endif
00282 
00283 #ifdef ICINT64TYPE
00284 typedef ICINT64TYPE          icInt64Number;
00285 #else
00286 typedef icInt32Number        icInt64Number[2];
00287 #endif
00288 
00289 
00291 typedef icInt32Number        icS15Fixed16Number;
00292 typedef icUInt32Number       icU16Fixed16Number;
00293 
00294 
00296 typedef float icFloat32Number;
00297 typedef double icFloat64Number;
00298 
00300 #define icMaxFloat32Number  3.402823466e+38F
00301 #define icMinFloat32Number -3.402823466e+38F
00302 
00303 /*------------------------------------------------------------------------*/
00304 
00308 typedef enum {
00309     icSigAToB0Tag                          = 0x41324230,  /* 'A2B0' */ 
00310     icSigAToB1Tag                          = 0x41324231,  /* 'A2B1' */
00311     icSigAToB2Tag                          = 0x41324232,  /* 'A2B2' */ 
00312     icSigBlueColorantTag                   = 0x6258595A,  /* 'bXYZ' */
00313     icSigBlueMatrixColumnTag               = 0x6258595A,  /* 'bXYZ' */
00314     icSigBlueTRCTag                        = 0x62545243,  /* 'bTRC' */
00315     icSigBToA0Tag                          = 0x42324130,  /* 'B2A0' */
00316     icSigBToA1Tag                          = 0x42324131,  /* 'B2A1' */
00317     icSigBToA2Tag                          = 0x42324132,  /* 'B2A2' */
00318     icSigCalibrationDateTimeTag            = 0x63616C74,  /* 'calt' */
00319     icSigCharTargetTag                     = 0x74617267,  /* 'targ' */ 
00320     icSigChromaticAdaptationTag            = 0x63686164,  /* 'chad' */
00321     icSigChromaticityTag                   = 0x6368726D,  /* 'chrm' */
00322     icSigColorantOrderTag                  = 0x636C726F,  /* 'clro' */
00323     icSigColorantTableTag                  = 0x636C7274,  /* 'clrt' */
00324     icSigColorantTableOutTag               = 0x636C6F74,  /* 'clot' */
00325     icSigColorimetricIntentImageStateTag   = 0x63696973,  /* 'ciis' */
00326     icSigCopyrightTag                      = 0x63707274,  /* 'cprt' */
00327     icSigCrdInfoTag                        = 0x63726469,  /* 'crdi' Removed in V4 */
00328     icSigDataTag                           = 0x64617461,  /* 'data' Removed in V4 */
00329     icSigDateTimeTag                       = 0x6474696D,  /* 'dtim' Removed in V4 */
00330     icSigDeviceMfgDescTag                  = 0x646D6E64,  /* 'dmnd' */
00331     icSigDeviceModelDescTag                = 0x646D6464,  /* 'dmdd' */
00332     icSigDeviceSettingsTag                 = 0x64657673,  /* 'devs' Removed in V4 */
00333     icSigDToB0Tag                          = 0x44324230,  /* 'D2B0' */
00334     icSigDToB1Tag                          = 0x44324231,  /* 'D2B1' */
00335     icSigDToB2Tag                          = 0x44324232,  /* 'D2B2' */
00336     icSigDToB3Tag                          = 0x44324233,  /* 'D2B3' */
00337     icSigBToD0Tag                          = 0x42324430,  /* 'B2D0' */
00338     icSigBToD1Tag                          = 0x42324431,  /* 'B2D1' */
00339     icSigBToD2Tag                          = 0x42324432,  /* 'B2D2' */
00340     icSigBToD3Tag                          = 0x42324433,  /* 'B2D3' */
00341     icSigGamutTag                          = 0x67616D74,  /* 'gamt' */
00342     icSigGrayTRCTag                        = 0x6b545243,  /* 'kTRC' */
00343     icSigGreenColorantTag                  = 0x6758595A,  /* 'gXYZ' */
00344     icSigGreenMatrixColumnTag              = 0x6758595A,  /* 'gXYZ' */
00345     icSigGreenTRCTag                       = 0x67545243,  /* 'gTRC' */
00346     icSigLuminanceTag                      = 0x6C756d69,  /* 'lumi' */
00347     icSigMeasurementTag                    = 0x6D656173,  /* 'meas' */
00348     icSigMediaBlackPointTag                = 0x626B7074,  /* 'bkpt' */
00349     icSigMediaWhitePointTag                = 0x77747074,  /* 'wtpt' */
00350 #if 0
00351     icSigNamedColorTag                     = 0x6E636f6C,  /* 'ncol' OBSOLETE, use ncl2 */
00352 #endif
00353     icSigNamedColor2Tag                    = 0x6E636C32,  /* 'ncl2' */
00354     icSigOutputResponseTag                 = 0x72657370,  /* 'resp' */
00355     icSigPerceptualRenderingIntentGamutTag = 0x72696730,  /* 'rig0' */
00356     icSigPreview0Tag                       = 0x70726530,  /* 'pre0' */
00357     icSigPreview1Tag                       = 0x70726531,  /* 'pre1' */
00358     icSigPreview2Tag                       = 0x70726532,  /* 'pre2' */
00359     icSigProfileDescriptionTag             = 0x64657363,  /* 'desc' */
00360     icSigProfileSequenceDescTag            = 0x70736571,  /* 'pseq' */
00361     icSigProfileSequceIdTag                = 0x70736964,  /* 'psid' */
00362     icSigPs2CRD0Tag                        = 0x70736430,  /* 'psd0' Removed in V4 */
00363     icSigPs2CRD1Tag                        = 0x70736431,  /* 'psd1' Removed in V4 */
00364     icSigPs2CRD2Tag                        = 0x70736432,  /* 'psd2' Removed in V4 */
00365     icSigPs2CRD3Tag                        = 0x70736433,  /* 'psd3' Removed in V4 */
00366     icSigPs2CSATag                         = 0x70733273,  /* 'ps2s' Removed in V4 */
00367     icSigPs2RenderingIntentTag             = 0x70733269,  /* 'ps2i' Removed in V4 */
00368     icSigRedColorantTag                    = 0x7258595A,  /* 'rXYZ' */
00369     icSigRedMatrixColumnTag                = 0x7258595A,  /* 'rXYZ' */
00370     icSigRedTRCTag                         = 0x72545243,  /* 'rTRC' */
00371     icSigSaturationRenderingIntentGamutTag = 0x72696732,  /* 'rig2' */
00372     icSigScreeningDescTag                  = 0x73637264,  /* 'scrd' Removed in V4 */
00373     icSigScreeningTag                      = 0x7363726E,  /* 'scrn' Removed in V4 */
00374     icSigTechnologyTag                     = 0x74656368,  /* 'tech' */
00375     icSigUcrBgTag                          = 0x62666420,  /* 'bfd ' Removed in V4 */
00376     icSigViewingCondDescTag                = 0x76756564,  /* 'vued' */
00377     icSigViewingConditionsTag              = 0x76696577,  /* 'view' */
00378 } icTagSignature;
00379 
00381 #define icSigUnknownTag    ((icTagSignature) 0x3f3f3f3f)  /* '????' */
00382 #define icMaxEnumTag       ((icTagSignature) 0xFFFFFFFF)
00383 
00384 
00385 
00389 typedef enum {
00390     icSigDigitalCamera                  = 0x6463616D,  /* 'dcam' */
00391     icSigFilmScanner                    = 0x6673636E,  /* 'fscn' */
00392     icSigReflectiveScanner              = 0x7273636E,  /* 'rscn' */
00393     icSigInkJetPrinter                  = 0x696A6574,  /* 'ijet' */ 
00394     icSigThermalWaxPrinter              = 0x74776178,  /* 'twax' */
00395     icSigElectrophotographicPrinter     = 0x6570686F,  /* 'epho' */
00396     icSigElectrostaticPrinter           = 0x65737461,  /* 'esta' */
00397     icSigDyeSublimationPrinter          = 0x64737562,  /* 'dsub' */
00398     icSigPhotographicPaperPrinter       = 0x7270686F,  /* 'rpho' */
00399     icSigFilmWriter                     = 0x6670726E,  /* 'fprn' */
00400     icSigVideoMonitor                   = 0x7669646D,  /* 'vidm' */
00401     icSigVideoCamera                    = 0x76696463,  /* 'vidc' */
00402     icSigProjectionTelevision           = 0x706A7476,  /* 'pjtv' */
00403     icSigCRTDisplay                     = 0x43525420,  /* 'CRT ' */
00404     icSigPMDisplay                      = 0x504D4420,  /* 'PMD ' */
00405     icSigAMDisplay                      = 0x414D4420,  /* 'AMD ' */
00406     icSigPhotoCD                        = 0x4B504344,  /* 'KPCD' */
00407     icSigPhotoImageSetter               = 0x696D6773,  /* 'imgs' */
00408     icSigGravure                        = 0x67726176,  /* 'grav' */
00409     icSigOffsetLithography              = 0x6F666673,  /* 'offs' */
00410     icSigSilkscreen                     = 0x73696C6B,  /* 'silk' */
00411     icSigFlexography                    = 0x666C6578,  /* 'flex' */
00412     icSigMotionPictureFilmScanner       = 0x6D706673,  /* 'mpfs' */
00413     icSigMotionPictureFilmRecorder      = 0x6D706672,  /* 'mpfr' */
00414     icSigDigitalMotionPictureCamera     = 0x646D7063,  /* 'dmpc' */
00415     icSigDigitalCinemaProjector         = 0x64636A70,  /* 'dcpj' */
00416 } icTechnologySignature;
00417 
00419 #define icMaxEnumTechnology ((icTechnologySignature) 0xFFFFFFFF)
00420 
00424 typedef enum {
00425     icSigChromaticityType               = 0x6368726D,  /* 'chrm' */
00426     icSigColorantOrderType              = 0x636C726F,  /* 'clro' */
00427     icSigColorantTableType              = 0x636C7274,  /* 'clrt' */
00428     icSigCrdInfoType                    = 0x63726469,  /* 'crdi' Removed in V4 */
00429     icSigCurveType                      = 0x63757276,  /* 'curv' */
00430     icSigDataType                       = 0x64617461,  /* 'data' */
00431     icSigDateTimeType                   = 0x6474696D,  /* 'dtim' */
00432     icSigDeviceSettingsType             = 0x64657673,  /* 'devs' Removed in V4 */
00433     icSigLut16Type                      = 0x6d667432,  /* 'mft2' */
00434     icSigLut8Type                       = 0x6d667431,  /* 'mft1' */
00435     icSigLutAtoBType                    = 0x6d414220,  /* 'mAB ' */
00436     icSigLutBtoAType                    = 0x6d424120,  /* 'mBA ' */
00437     icSigMeasurementType                = 0x6D656173,  /* 'meas' */
00438     icSigMultiLocalizedUnicodeType      = 0x6D6C7563,  /* 'mluc' */
00439     icSigMultiProcessElementType        = 0x6D706574,  /* 'mpet' */
00440 #if 0
00441     icSigNamedColorType                 = 0x6E636f6C,  /* 'ncol' OBSOLETE, use ncl2 */
00442 #endif
00443     icSigNamedColor2Type                = 0x6E636C32,  /* 'ncl2' */
00444     icSigParametricCurveType            = 0x70617261,  /* 'para' */
00445     icSigProfileSequenceDescType        = 0x70736571,  /* 'pseq' */
00446     icSigProfileSequceIdType            = 0x70736964,  /* 'psid' */
00447     icSigResponseCurveSet16Type         = 0x72637332,  /* 'rcs2' */
00448     icSigS15Fixed16ArrayType            = 0x73663332,  /* 'sf32' */
00449     icSigScreeningType                  = 0x7363726E,  /* 'scrn' Removed in V4 */
00450     icSigSignatureType                  = 0x73696720,  /* 'sig ' */
00451     icSigTextType                       = 0x74657874,  /* 'text' */
00452     icSigTextDescriptionType            = 0x64657363,  /* 'desc' Removed in V4 */
00453     icSigU16Fixed16ArrayType            = 0x75663332,  /* 'uf32' */
00454     icSigUcrBgType                      = 0x62666420,  /* 'bfd ' Removed in V4 */
00455     icSigUInt16ArrayType                = 0x75693136,  /* 'ui16' */
00456     icSigUInt32ArrayType                = 0x75693332,  /* 'ui32' */
00457     icSigUInt64ArrayType                = 0x75693634,  /* 'ui64' */
00458     icSigUInt8ArrayType                 = 0x75693038,  /* 'ui08' */
00459     icSigViewingConditionsType          = 0x76696577,  /* 'view' */
00460     icSigXYZType                        = 0x58595A20,  /* 'XYZ ' */
00461     icSigXYZArrayType                   = 0x58595A20,  /* 'XYZ ' */
00462 } icTagTypeSignature;
00463 
00465 #define icSigUnknownType ((icTagTypeSignature) 0x3f3f3f3f)  /* '????' */
00466 #define icMaxEnumType    ((icTagTypeSignature) 0xFFFFFFFF)
00467 
00471 typedef enum {
00472     //DMP Proposal 1.0 elements
00473     icSigCurveSetElemType             = 0x63767374,  /* 'cvst' */
00474     icSigMatrixElemType               = 0x6D617466,  /* 'matf' */
00475     icSigCLutElemType                 = 0x636C7574,  /* 'clut' */
00476     icSigBAcsElemType                 = 0x62414353,  /* 'bACS' */
00477     icSigEAcsElemType                 = 0x65414353,  /* 'eACS' */
00478 } icElemTypeSignature;
00480 #define icSigUnknownElemType    ((icElemTypeSignature) 0x3f3f3f3f)  /* '????' */
00481 #define icMaxEnumElemType       ((icElemTypeSignature) 0xFFFFFFFF)
00482 
00483 
00489 typedef enum {
00490     icSigXYZData                        = 0x58595A20,  /* 'XYZ ' */
00491     icSigLabData                        = 0x4C616220,  /* 'Lab ' */
00492     icSigLuvData                        = 0x4C757620,  /* 'Luv ' */
00493     icSigYCbCrData                      = 0x59436272,  /* 'YCbr' */
00494     icSigYxyData                        = 0x59787920,  /* 'Yxy ' */
00495     icSigRgbData                        = 0x52474220,  /* 'RGB ' */
00496     icSigGrayData                       = 0x47524159,  /* 'GRAY' */
00497     icSigHsvData                        = 0x48535620,  /* 'HSV ' */
00498     icSigHlsData                        = 0x484C5320,  /* 'HLS ' */
00499     icSigCmykData                       = 0x434D594B,  /* 'CMYK' */
00500     icSigCmyData                        = 0x434D5920,  /* 'CMY ' */
00501     
00502     icSigMCH2Data                       = 0x32434C52,  /* '2CLR' */        
00503     icSigMCH3Data                       = 0x33434C52,  /* '3CLR' */        
00504     icSigMCH4Data                       = 0x34434C52,  /* '4CLR' */        
00505     icSigMCH5Data                       = 0x35434C52,  /* '5CLR' */
00506     icSigMCH6Data                       = 0x36434C52,  /* '6CLR' */
00507     icSigMCH7Data                       = 0x37434C52,  /* '7CLR' */
00508     icSigMCH8Data                       = 0x38434C52,  /* '8CLR' */
00509     icSigMCH9Data                       = 0x39434C52,  /* '9CLR' */
00510     icSigMCHAData                       = 0x41434C52,  /* 'ACLR' */
00511     icSigMCHBData                       = 0x42434C52,  /* 'BCLR' */
00512     icSigMCHCData                       = 0x43434C52,  /* 'CCLR' */
00513     icSigMCHDData                       = 0x44434C52,  /* 'DCLR' */
00514     icSigMCHEData                       = 0x45434C52,  /* 'ECLR' */
00515     icSigMCHFData                       = 0x46434C52,  /* 'FCLR' */
00516     icSigNamedData                      = 0x6e6d636c,  /* 'nmcl' */
00517 
00518     icSig2colorData                     = 0x32434C52,  /* '2CLR' */
00519     icSig3colorData                     = 0x33434C52,  /* '3CLR' */
00520     icSig4colorData                     = 0x34434C52,  /* '4CLR' */
00521     icSig5colorData                     = 0x35434C52,  /* '5CLR' */
00522     icSig6colorData                     = 0x36434C52,  /* '6CLR' */
00523     icSig7colorData                     = 0x37434C52,  /* '7CLR' */
00524     icSig8colorData                     = 0x38434C52,  /* '8CLR' */
00525     icSig9colorData                     = 0x39434C52,  /* '9CLR' */
00526     icSig10colorData                    = 0x41434C52,  /* 'ACLR' */
00527     icSig11colorData                    = 0x42434C52,  /* 'BCLR' */
00528     icSig12colorData                    = 0x43434C52,  /* 'CCLR' */
00529     icSig13colorData                    = 0x44434C52,  /* 'DCLR' */
00530     icSig14colorData                    = 0x45434C52,  /* 'ECLR' */
00531     icSig15colorData                    = 0x46434C52,  /* 'FCLR' */
00532 
00533 } icColorSpaceSignature;
00534 
00536 #define icSigMCH1Data       ((icColorSpaceSignature) 0x31434C52)  /* '1CLR' */        
00537 #define icSigMCHGData       ((icColorSpaceSignature) 0x47434C52)  /* 'GCLR' */
00538 #define icSig1colorData     ((icColorSpaceSignature) 0x31434C52)  /* '1CLR' */        
00539 #define icSig16colorData    ((icColorSpaceSignature) 0x47434C52)  /* 'GCLR' */
00540 
00542 #define icSigGamutData      ((icColorSpaceSignature) 0x67616D74)  /* 'gamt' */
00543 #define icSigUnknownData    ((icColorSpaceSignature) 0x3f3f3f3f)  /* '????' */
00544 #define icMaxEnumData       ((icColorSpaceSignature) 0xFFFFFFFF)
00545 
00546 
00547 
00549 typedef enum {
00550     icSigInputClass                     = 0x73636E72,  /* 'scnr' */
00551     icSigDisplayClass                   = 0x6D6E7472,  /* 'mntr' */
00552     icSigOutputClass                    = 0x70727472,  /* 'prtr' */
00553     icSigLinkClass                      = 0x6C696E6B,  /* 'link' */
00554     icSigAbstractClass                  = 0x61627374,  /* 'abst' */
00555     icSigColorSpaceClass                = 0x73706163,  /* 'spac' */
00556     icSigNamedColorClass                = 0x6e6d636c,  /* 'nmcl' */
00557 } icProfileClassSignature;
00558 
00560 #define icMaxEnumClass ((icProfileClassSignature) 0xFFFFFFFF)
00561 
00562 
00563 
00565 typedef enum {
00566     icSigMacintosh                      = 0x4150504C,  /* 'APPL' */
00567     icSigMicrosoft                      = 0x4D534654,  /* 'MSFT' */
00568     icSigSolaris                        = 0x53554E57,  /* 'SUNW' */
00569     icSigSGI                            = 0x53474920,  /* 'SGI ' */
00570     icSigTaligent                       = 0x54474E54,  /* 'TGNT' */
00571 } icPlatformSignature;
00572 
00574 #define icMaxEnumPlatform ((icPlatformSignature) 0xFFFFFFFF)
00575 
00576 
00577 
00579 typedef enum {
00580     icSigPerceptualReferenceMediumGamut = 0x70726d67,  /* 'prmg' */
00581 } icReferenceMediumGamutSignature;
00582 
00584 #define icMaxEnumReferenceMediumGamut ((icReferenceMediumGamutSignature 0xFFFFFFFF)
00585 
00586 
00588 typedef enum {
00589   icSigSceneColorimetryEstimates             = 0x73636F65,  /* 'scoe' */
00590   icSigSceneAppearanceEstimates              = 0x73617065,  /* 'sape' */
00591   icSigFocalPlaneColorimetryEstimates        = 0x66706365,  /* 'fpce' */
00592   icSigReflectionHardcopyOriginalColorimetry = 0x72686F63,  /* 'rhoc' */
00593   icSigReflectionPrintOutputColorimetry      = 0x72706F63,  /* 'rpoc' */
00594 } icColorimetricIntentImageStateSignature;
00595 
00597 #define icMaxEnumColorimetricIntentImageState ((icColorimetricIntentImageStateSignature 0xFFFFFFFF)
00598 
00599 
00603 typedef enum {
00604     icSigFormulaCurveSeg              = 0x70617266,  /* 'parf' */
00605     icSigSampledCurveSeg              = 0x73616D66,  /* 'samf' */
00606 } icCurveSegSignature;
00607 
00609 #define icMaxCurveSegSignature ((icCurveSegSignature 0xFFFFFFFF)
00610 
00614 typedef enum {
00615     icSigSementedCurve                = 0x63757266,  /* 'curf' */
00616 } icCurveElemSignature;
00617 
00619 #define icMaxCurveElemSignature ((icCurveElemSignature 0xFFFFFFFF)
00620 
00625 typedef icSignature icAcsSignature;
00626 
00628 #define icSigAcsZero ((icAcsSignature) 0x00000000)
00629 
00630 /*------------------------------------------------------------------------*/
00631 
00637 typedef enum {
00638     icFlare0                            = 0x00000000,  /* 0% flare */
00639     icFlare100                          = 0x00000001,  /* 100% flare */
00640 } icMeasurementFlare;
00641 
00643 #define icMaxEnumFlare ((icMeasurementFlare) 0xFFFFFFFF)
00644 #define icMaxFlare     ((icMeasurementFlare) 0xFFFFFFFF) /* as defined by earlier versions */
00645 
00646 
00647 
00649 typedef enum {
00650     icGeometryUnknown                   = 0x00000000,  /* Unknown geometry */
00651     icGeometry045or450                  = 0x00000001,  /* 0/45, 45/0 */
00652     icGeometry0dord0                    = 0x00000002,  /* 0/d or d/0 */
00653 } icMeasurementGeometry;
00654 
00656 #define icMaxEnumGeometry ((icMeasurementGeometry) 0xFFFFFFFF)
00657 #define icMaxGeometry     ((icMeasurementGeometry) 0xFFFFFFFF)
00658 
00659 
00660 
00662 typedef enum {
00663     icPerceptual                        = 0,
00664     icRelativeColorimetric              = 1,
00665     icSaturation                        = 2,
00666     icAbsoluteColorimetric              = 3,
00667 } icRenderingIntent;
00668 
00670 #define icUnknownIntent ((icRenderingIntent) 0x3f3f3f3f)  /* '????' */
00671 #define icMaxEnumIntent ((icRenderingIntent) 0xFFFFFFFF)
00672 
00673 
00674 
00676 typedef enum {
00677     icSpotShapeUnknown                  = 0,
00678     icSpotShapePrinterDefault           = 1,
00679     icSpotShapeRound                    = 2,
00680     icSpotShapeDiamond                  = 3,
00681     icSpotShapeEllipse                  = 4,
00682     icSpotShapeLine                     = 5,
00683     icSpotShapeSquare                   = 6,
00684     icSpotShapeCross                    = 7,
00685 } icSpotShape;
00686 
00688 #define icMaxEnumSpot ((icSpotShape)  0xFFFFFFFF)
00689 
00690 
00691 
00693 typedef enum {
00694     icStdObsUnknown                     = 0x00000000,  /* Unknown observer */
00695     icStdObs1931TwoDegrees              = 0x00000001,  /* 1931 two degrees */
00696     icStdObs1964TenDegrees              = 0x00000002,  /* 1961 ten degrees */
00697 } icStandardObserver;
00698 
00700 #define icMaxEnumStdObs ((icStandardObserver) 0xFFFFFFFF)
00701 #define icMaxStdObs     ((icStandardObserver) 0xFFFFFFFF) /* as defined by earlier versions */
00702 
00703 
00704 
00706 typedef enum {
00707     icIlluminantUnknown                 = 0x00000000,
00708     icIlluminantD50                     = 0x00000001,
00709     icIlluminantD65                     = 0x00000002,
00710     icIlluminantD93                     = 0x00000003,
00711     icIlluminantF2                      = 0x00000004,
00712     icIlluminantD55                     = 0x00000005,
00713     icIlluminantA                       = 0x00000006,
00714     icIlluminantEquiPowerE              = 0x00000007,  /* Equi-Power (E) */
00715     icIlluminantF8                      = 0x00000008,      
00716 } icIlluminant;
00717 
00719 #define icMaxEnumIlluminant ((icIlluminant) 0xFFFFFFFF)
00720 #define icMaxEnumIluminant  ((icIlluminant) 0xFFFFFFFF)   /* as defined by earlier versions */
00721 
00722 
00723 
00725 typedef enum {
00726   icLanguageCodeEnglish                = 0x656E, /* 'en' */
00727   icLanguageCodeGerman                 = 0x6465, /* 'de' */
00728   icLanguageCodeItalian                = 0x6974, /* 'it' */
00729   icLanguageCodeDutch                  = 0x6E6C, /* 'nl' */
00730   icLanguageCodeSweden                 = 0x7376, /* 'sv' */
00731   icLanguageCodeSpanish                = 0x6573, /* 'es' */
00732   icLanguageCodeDanish                 = 0x6461, /* 'da' */
00733   icLanguageCodeNorwegian              = 0x6E6F, /* 'no' */
00734   icLanguageCodeJapanese               = 0x6A61, /* 'ja' */
00735   icLanguageCodeFinnish                = 0x6669, /* 'fi' */
00736   icLanguageCodeTurkish                = 0x7472, /* 'tr' */
00737   icLanguageCodeKorean                 = 0x6B6F, /* 'ko' */
00738   icLanguageCodeChinese                = 0x7A68, /* 'zh' */
00739   icLanguageCodeFrench                 = 0x6672, /* 'fr' */
00740 } icEnumLanguageCode;
00741 typedef icUInt16Number icLanguageCode;
00742 
00744 #define icMaxEnumLanguageCode ((icEnumLanguageCode) 0xFFFF)
00745 
00746 
00747 
00751 typedef enum {
00752   icCountryCodeUSA                      = 0x5553, /* 'US' */
00753   icCountryCodeUnitedKingdom            = 0x554B, /* 'UK' */
00754   icCountryCodeGermany                  = 0x4445, /* 'DE' */
00755   icCountryCodeItaly                    = 0x4954, /* 'IT' */
00756   icCountryCodeNetherlands              = 0x4E4C, /* 'NL' */
00757   icCountryCodeSpain                    = 0x4543, /* 'ES' */
00758   icCountryCodeDenmark                  = 0x444B, /* 'DK' */
00759   icCountryCodeNorway                   = 0x4E4F, /* 'NO' */
00760   icCountryCodeJapan                    = 0x4A50, /* 'JP' */
00761   icCountryCodeFinland                  = 0x4649, /* 'FI' */
00762   icCountryCodeTurkey                   = 0x5452, /* 'TR' */
00763   icCountryCodeKorea                    = 0x4B52, /* 'KR' */
00764   icCountryCodeChina                    = 0x434E, /* 'CN' */
00765   icCountryCodeTaiwan                   = 0x5457, /* 'TW' */
00766   icCountryCodeFrance                   = 0x4652, /* 'FR' */
00767 } icEnumCountryCode;
00768 typedef icUInt16Number icCountryCode;
00769 
00771 #define icMaxEnumCountryCode ((icEnumCountryCode) 0xFFFF)
00772 
00773 
00774 
00776 typedef enum {
00777   icSigStatusA                         = 0x53746141, /* 'StaA' */
00778   icSigStatusE                         = 0x53746145, /* 'StaE' */
00779   icSigStatusI                         = 0x53746149, /* 'StaI' */
00780   icSigStatusT                         = 0x53746154, /* 'StaT' */
00781   icSigStatusM                         = 0x5374614D, /* 'StaM' */
00782   icSigDN                              = 0x444E2020, /* 'DN  ' */
00783   icSigDNP                             = 0x444E2050, /* 'DN P' */
00784   icSigDNN                             = 0x444E4E20, /* 'DNN ' */
00785   icSigDNNP                            = 0x444E4E50, /* 'DNNP' */
00786 } icMeasurementUnitSig;
00787 
00789 #define icMaxEnumMeasurmentUnitSig ((icMeasurementUnitSig) 0xffffffff)
00790 
00791 
00792 
00794 typedef enum {
00795   icColorantUnknown                     = 0x0000, /* Unknown */
00796   icColorantITU                         = 0x0001, /* ITU-R BT.709 */
00797   icColorantSMPTE                       = 0x0002, /* SMPTE RP145-1994 */
00798   icColorantEBU                         = 0x0003, /* EBU Tech.3213-E */
00799   icColorantP22                         = 0x0004, /* P22 */
00800 } icColorantEncoding;
00801 
00803 #define icMaxEnumColorant ((icColorantEncoding) 0xFFFF)
00804 
00805 
00812 typedef enum {
00813   icMSFTDevSetResolution             = 0x72736C6E, /* 'rsln' */
00814   icMSFTDevSetMediaType              = 0x6D747970, /* 'mtyp' */
00815   icMSFTDevSetMediaHalftone          = 0x6866746E, /* 'hftn' */
00816 } icMSFTDevSetSig;
00817 
00819 typedef enum {
00820   icDMMediaStandard                  = 0x0001, /* Standard paper */
00821   icDMMediaTransparancy              = 0x0002, /* Transparency */
00822   icDMMediaGlossy                    = 0x0003, /* Glossy paper */
00823   icDMMediaUser                      = 0x0100, /* Device-specific type media
00824                                                   are >= 256 */
00825 } icDMMediaType;
00826 
00828 typedef enum {
00829   icDMDitherNone                     = 0x0001, /* No dithering */
00830   icDMDitherCoarse                   = 0x0002, /* Dither with a coarse brush */
00831   icDMDitherFine                     = 0x0003, /* Dither with a fine brush */
00832   icDMDitherLineArt                  = 0x0004, /* LineArt dithering */
00833   icDMDitherErrorDiffusion           = 0x0005, /* Error Diffusion */
00834   icDMDitherReserved6                = 0x0006,
00835   icDMDitherReserved7                = 0x0007,
00836   icDMDitherReserved8                = 0x0008,
00837   icDMDitherReserved9                = 0x0009,
00838   icDMDitherGrayscale                = 0x000A, /* Device does grayscaling */
00839   icDMDitherUser                     = 0x0100, /* Device-specifice halftones 
00840                                                   are >= 256 */
00841 } icDMHalftoneType;
00842 
00850 typedef struct {
00851     icInt8Number        data[icAny];    /* Variable array of values */
00852 } icInt8Array;
00853 
00855 typedef struct {
00856     icUInt8Number       data[icAny];    /* Variable array of values */
00857 } icUInt8Array;
00858 
00860 typedef struct {
00861     icUInt16Number      data[icAny];    /* Variable array of values */
00862 } icUInt16Array;
00863 
00865 typedef struct {
00866     icInt16Number       data[icAny];    /* Variable array of values */
00867 } icInt16Array;
00868 
00870 typedef struct {
00871     icUInt32Number      data[icAny];    /* Variable array of values */
00872 } icUInt32Array;
00873 
00875 typedef struct {
00876     icInt32Number       data[icAny];    /* Variable array of values */
00877 } icInt32Array;
00878 
00880 typedef struct {
00881     icUInt64Number      data[icAny];    /* Variable array of values */
00882 } icUInt64Array;
00883 
00885 typedef struct {
00886     icInt64Number       data[icAny];    /* Variable array of values */
00887 } icInt64Array;
00888     
00890 typedef struct {
00891     icU16Fixed16Number  data[icAny];    /* Variable array of values */
00892 } icU16Fixed16Array;
00893 
00895 typedef struct {
00896     icS15Fixed16Number  data[icAny];    /* Variable array of values */
00897 } icS15Fixed16Array;
00898 
00900 typedef struct {
00901     icUInt16Number      year;
00902     icUInt16Number      month;
00903     icUInt16Number      day;
00904     icUInt16Number      hours;
00905     icUInt16Number      minutes;
00906     icUInt16Number      seconds;
00907 } icDateTimeNumber;
00908 
00910 typedef struct {
00911     icS15Fixed16Number  X;
00912     icS15Fixed16Number  Y;
00913     icS15Fixed16Number  Z;
00914 } icXYZNumber;
00915 
00917 typedef struct {
00918     icXYZNumber         data[icAny];    /* Variable array of XYZ numbers */
00919 } icXYZArray;
00920 
00922 typedef struct {
00923     icU16Fixed16Number x;
00924     icU16Fixed16Number y;
00925 } icChromaticityNumber;
00926 
00928 typedef struct {
00929     icUInt16Number deviceCode;
00930     icUInt16Number reserved;
00931     icS15Fixed16Number measurementValue;
00932 } icResponse16Number;
00933 
00935 typedef struct {
00936   icUInt32Number offset;
00937   icUInt32Number size;
00938 } icPositionNumber;
00939 
00940 
00942 typedef struct {
00943     icUInt32Number      count;          /* Number of entries */
00944     icUInt16Number      data[icAny];    /* The actual table data, real
00945                                          * number is determined by count
00946                                          * Interpretation depends on how
00947                                          * data is used with a given tag
00948                                          */
00949 } icCurve;
00950 
00952 typedef struct {
00953     icUInt16Number      funcType;       /* Function Type                */
00954                                         /* 0 = gamma only               */
00955     icUInt16Number      pad;            /* Padding for byte alignment   */
00956     icS15Fixed16Number  gamma;          /* x°gamma                      */
00957                                         /* up to 7 values Y,a,b,c,d,e,f */
00958 } icParametricCurve;
00959 
00961 typedef struct {
00962     icUInt16Number      funcType;       /* Function Type                */
00963                                         /* 0 = gamma only               */
00964     icUInt16Number      pad;            /* Padding for byte alignment   */
00965     icS15Fixed16Number  gamma;          /* x°gamma                      */
00966     icS15Fixed16Number  a;              /* a                            */
00967     icS15Fixed16Number  b;              /* b                            */
00968     icS15Fixed16Number  c;              /* c                            */
00969     icS15Fixed16Number  d;              /* d                            */
00970     icS15Fixed16Number  e;              /* e                            */
00971     icS15Fixed16Number  f;              /* f                            */
00972 } icParametricCurveFull;
00973 
00975 typedef struct {
00976     icUInt32Number      dataFlag;       /* 0 = ascii, 1 = binary */
00977     icInt8Number        data[icAny];    /* Data, size determined from tag */
00978 } icData;
00979 
00981 typedef struct {
00982     icUInt8Number       inputChan;      /* Number of input channels */
00983     icUInt8Number       outputChan;     /* Number of output channels */
00984     icUInt8Number       clutPoints;     /* Number of clutTable grid points */
00985     icInt8Number        pad;            /* Padding for byte alignment */
00986     icS15Fixed16Number  e00;            /* e00 in the 3 * 3 */
00987     icS15Fixed16Number  e01;            /* e01 in the 3 * 3 */    
00988     icS15Fixed16Number  e02;            /* e02 in the 3 * 3 */
00989     icS15Fixed16Number  e10;            /* e10 in the 3 * 3 */
00990     icS15Fixed16Number  e11;            /* e11 in the 3 * 3 */    
00991     icS15Fixed16Number  e12;            /* e12 in the 3 * 3 */ 
00992     icS15Fixed16Number  e20;            /* e20 in the 3 * 3 */
00993     icS15Fixed16Number  e21;            /* e21 in the 3 * 3 */    
00994     icS15Fixed16Number  e22;            /* e22 in the 3 * 3 */
00995     icUInt16Number      inputEnt;       /* Number of input table entries */
00996     icUInt16Number      outputEnt;      /* Number of output table entries */
00997     icUInt16Number      data[icAny];    /* Data follows see spec for size */
01005 } icLut16;
01006 
01008 typedef struct {
01009     icUInt8Number       inputChan;      /* Number of input channels */
01010     icUInt8Number       outputChan;     /* Number of output channels */
01011     icUInt8Number       clutPoints;     /* Number of clutTable grid points */
01012     icInt8Number        pad;
01013     icS15Fixed16Number  e00;            /* e00 in the 3 * 3 */
01014     icS15Fixed16Number  e01;            /* e01 in the 3 * 3 */    
01015     icS15Fixed16Number  e02;            /* e02 in the 3 * 3 */
01016     icS15Fixed16Number  e10;            /* e10 in the 3 * 3 */
01017     icS15Fixed16Number  e11;            /* e11 in the 3 * 3 */    
01018     icS15Fixed16Number  e12;            /* e12 in the 3 * 3 */ 
01019     icS15Fixed16Number  e20;            /* e20 in the 3 * 3 */
01020     icS15Fixed16Number  e21;            /* e21 in the 3 * 3 */    
01021     icS15Fixed16Number  e22;            /* e22 in the 3 * 3 */
01022     icUInt8Number       data[icAny];    /* Data follows see spec for size */
01030 } icLut8;
01031 
01033 typedef struct {
01034     icUInt8Number       gridPoints[16]; /* Number of grid points in each dimension.  */
01035     icUInt8Number       prec;           /* Precision of data elements in bytes.      */
01036     icUInt8Number       pad1;
01037     icUInt8Number       pad2;
01038     icUInt8Number       pad3;
01039     /*icUInt8Number     data[icAny];     Data follows see spec for size */
01040 } icCLutStruct;
01041 
01043 typedef struct {
01044     icUInt8Number       inputChan;      /* Number of input channels     */
01045     icUInt8Number       outputChan;     /* Number of output channels    */
01046     icUInt8Number       pad1;
01047     icUInt8Number       pad2;
01048     icUInt32Number      offsetB;        /* Offset to first "B" curve    */
01049     icUInt32Number      offsetMat;      /* Offset to matrix             */
01050     icUInt32Number      offsetM;        /* Offset to first "M" curve    */
01051     icUInt32Number      offsetC;        /* Offset to CLUT               */
01052     icUInt32Number      offsetA;        /* Offset to first "A" curve    */
01053     /*icUInt8Number     data[icAny];     Data follows see spec for size */
01054 } icLutAtoB;
01055 
01057 typedef struct {
01058     icUInt8Number       inputChan;      /* Number of input channels     */
01059     icUInt8Number       outputChan;     /* Number of output channels    */
01060     icUInt8Number       pad1;
01061     icUInt8Number       pad2;
01062     icUInt32Number      offsetB;        /* Offset to first "B" curve    */
01063     icUInt32Number      offsetMat;      /* Offset to matrix             */
01064     icUInt32Number      offsetM;        /* Offset to first "M" curve    */
01065     icUInt32Number      offsetC;        /* Offset to CLUT               */
01066     icUInt32Number      offsetA;        /* Offset to first "A" curve    */
01067     /*icUInt8Number     data[icAny];     Data follows see spec for size */
01068 } icLutBtoA;
01069 
01071 typedef struct {
01072     icStandardObserver          stdObserver;    /* Standard observer */
01073     icXYZNumber                 backing;        /* XYZ for backing material */
01074     icMeasurementGeometry       geometry;       /* Measurement geometry */
01075     icMeasurementFlare          flare;          /* Measurement flare */
01076     icIlluminant                illuminant;     /* Illuminant */
01077 } icMeasurement;
01078 
01084 typedef struct {
01085     icUInt8Number       rootName[32];        /* Root name for first color */
01086     icUInt16Number      pcsCoords[3];        /* PCS coordinates of color (only Lab or XYZ allowed)*/
01087     icUInt16Number      deviceCoords[icAny]; /* Device coordinates of color */
01088 } icNamedColor2Entry;
01089 
01093 typedef struct {
01094     icUInt32Number      vendorFlag;     /* Bottom 16 bits for IC use */
01095     icUInt32Number      count;          /* Count of named colors */
01096     icUInt32Number      nDeviceCoords;  /* Number of device coordinates */
01097     icInt8Number        prefix[32];     /* Prefix for each color name */
01098     icInt8Number        suffix[32];     /* Suffix for each color name */
01099     icInt8Number        data[icAny];    /* Named color data follows */
01132 } icNamedColor2;
01133 
01135 typedef struct {
01136     icSignature                 deviceMfg;      /* Device Manufacturer */
01137     icSignature                 deviceModel;    /* Decvice Model */
01138     icUInt64Number              attributes;     /* Device attributes */
01139     icTechnologySignature       technology;     /* Technology signature */
01140     icInt8Number                data[icAny];    /* Descriptions text follows */
01149 } icDescStruct;
01150 
01152 typedef struct {
01153     icUInt32Number      count;          /* Number of descriptions */
01154     icUInt8Number       data[icAny];    /* Array of description struct */
01155 } icProfileSequenceDesc;
01156 
01158 typedef struct {
01159     icUInt32Number      count;          /* Description length */
01160     icInt8Number        data[icAny];    /* Descriptions follow */
01172 } icTextDescription;
01173 
01175 typedef struct {
01176     icS15Fixed16Number  frequency;      /* Frequency */
01177     icS15Fixed16Number  angle;          /* Screen angle */
01178     icSpotShape         spotShape;      /* Spot Shape encodings below */
01179 } icScreeningData;
01180 
01182 typedef struct {
01183     icUInt32Number      screeningFlag;  /* Screening flag */
01184     icUInt32Number      channels;       /* Number of channels */
01185     icScreeningData     data[icAny];    /* Array of screening data */
01186 } icScreening;
01187 
01189 typedef struct {
01190     icInt8Number        data[icAny];    /* Variable array of characters */
01191 } icText;
01192 
01194 typedef struct {
01195     icUInt32Number      count;          /* Curve length */
01196     icUInt16Number      curve[icAny];   /* The array of curve values */
01197 } icUcrBgCurve;
01198 
01200 typedef struct {
01201     icInt8Number        data[icAny];    /* The Ucr BG data */
01211 } icUcrBg;
01212 
01214 typedef struct {
01215     icXYZNumber         illuminant;     /* In candelas per metre sq'd */
01216     icXYZNumber         surround;       /* In candelas per metre sq'd */
01217     icIlluminant        stdIluminant;   /* See icIlluminant defines */
01218 } icViewingCondition;
01219 
01221 typedef struct {
01222     icUInt32Number      count;          /* Char count includes NULL */
01223     icInt8Number        desc[icAny];    /* Null terminated string */
01224 } icCrdInfo;
01225 
01227 typedef struct {
01228     icUInt32Number      count;          /* Count of colorants           */
01229     icUInt8Number        data[icAny];    /* One-based number of the 
01230                                            colorant to be printed first,
01231                                            second...                    */
01232 } icColorantOrder;
01233 
01235 typedef struct {
01236     icInt8Number        name[32];       /* First colorant name              */
01237     icUInt16Number       data[3];        /* 16 bit PCS Lab value for first   */
01238 } icColorantTableEntry;
01239 
01241 typedef struct {
01242     icUInt32Number          count;          /* Count of colorants           */
01243     icColorantTableEntry    entry[icAny];   /* N colorant entries           */
01244 } icColorantTable;
01245 
01246 /*------------------------------------------------------------------------*/
01247 
01254 typedef struct {
01255     icTagTypeSignature  sig;            /* Signature */
01256     icInt8Number        reserved[4];    /* Reserved, set to 0 */
01257 } icTagBase;
01258 
01260 typedef struct {
01261     icTagBase           base;           /* Signature, "curv" */
01262     icCurve             curve;          /* The curve data */
01263 } icCurveType;
01264 
01266 typedef struct {
01267     icTagBase           base;           /* Signature, "para"        */
01268     icParametricCurve   curve;          /* The Parametric curve data*/
01269 } icParametricCurveType;
01270 
01272 typedef struct {
01273     icTagBase           base;           /* Signature, "para"        */
01274     icParametricCurveFull curve;        /* The Parametric curve data*/
01275 } icParametricCurveFullType;
01276 
01278 typedef struct {
01279     icTagBase           base;           /* Signature, "data" */
01280     icData              data;           /* The data structure */
01281 } icDataType;
01282 
01284 typedef struct {
01285     icTagBase           base;           /* Signature, "dtim" */
01286     icDateTimeNumber    date;           /* The date */
01287 } icDateTimeType;
01288 
01290 typedef struct {
01291     icTagBase           base;           /* Signature, "mft2" */
01292     icLut16             lut;            /* Lut16 data */
01293 } icLut16Type;
01294 
01296 typedef struct {
01297     icTagBase           base;           /* Signature, "mft1" */
01298     icLut8              lut;            /* Lut8 data */
01299 } icLut8Type;
01300 
01302 typedef struct {
01303     icTagBase           base;           /* Signature, "mAB " */
01304     icLutAtoB           lut;            /* icLutAtoB data    */
01305 } icLutAtoBType;
01306 
01308 typedef struct {
01309     icTagBase           base;           /* Signature, "mBA " */
01310     icLutBtoA           lut;            /* icLutBtoA data    */
01311 } icLutBtoAType;
01312 
01314 typedef struct {
01315     icTagBase           base;           /* Signature, "meas" */
01316     icMeasurement       measurement;    /* Measurement data  */
01317 } icMeasurementType;
01318 
01324 typedef struct {
01325     icTagBase           base;           /* Signature, "ncl2" */
01326     icNamedColor2       ncolor;         /* Named color data  */
01327 } icNamedColor2Type;
01328 
01330 typedef struct {
01331     icTagBase               base;       /* Signature, "pseq" */
01332     icProfileSequenceDesc   desc;       /* The seq description */
01333 } icProfileSequenceDescType;
01334 
01336 typedef struct {
01337     icTagBase           base;           /* Signature, "desc" */
01338     icTextDescription   desc;           /* The description */
01339 } icTextDescriptionType;
01340 
01342 typedef struct {
01343     icTagBase           base;           /* Signature, "sf32" */
01344     icS15Fixed16Array   data;           /* Array of values */
01345 } icS15Fixed16ArrayType;
01346 
01348 typedef struct {
01349     icTagBase           base;           /* Signature, "scrn" */
01350     icScreening         screen;         /* Screening structure */
01351 } icScreeningType;
01352 
01354 typedef struct {
01355     icTagBase           base;           /* Signature, "sig" */
01356     icSignature         signature;      /* The signature data */
01357 } icSignatureType;
01358 
01360 typedef struct {
01361     icTagBase           base;           /* Signature, "text" */
01362     icText              data;           /* Variable array of characters */
01363 } icTextType;
01364 
01366 typedef struct {
01367     icTagBase           base;           /* Signature, "uf32" */
01368     icU16Fixed16Array   data;           /* Variable array of values */
01369 } icU16Fixed16ArrayType;
01370 
01372 typedef struct {
01373     icTagBase           base;           /* Signature, "bfd " */
01374     icUcrBg             data;           /* ucrBg structure */
01375 } icUcrBgType;
01376 
01378 typedef struct {
01379     icTagBase           base;           /* Signature, "ui16" */
01380     icUInt16Array       data;           /* Variable array of values */
01381 } icUInt16ArrayType;
01382 
01384 typedef struct {
01385     icTagBase           base;           /* Signature, "ui32" */
01386     icUInt32Array       data;           /* Variable array of values */
01387 } icUInt32ArrayType;
01388 
01390 typedef struct {
01391     icTagBase           base;           /* Signature, "ui64" */
01392     icUInt64Array       data;           /* Variable array of values */
01393 } icUInt64ArrayType;
01394     
01396 typedef struct {
01397     icTagBase           base;           /* Signature, "ui08" */
01398     icUInt8Array        data;           /* Variable array of values */
01399 } icUInt8ArrayType;
01400 
01402 typedef struct {
01403     icTagBase           base;           /* Signature, "view" */
01404     icViewingCondition  view;           /* Viewing conditions */
01405 } icViewingConditionType;
01406 
01408 typedef struct {
01409     icTagBase           base;           /* Signature, "XYZ" */
01410     icXYZArray          data;           /* Variable array of XYZ numbers */
01411 } icXYZType;
01412 
01417 typedef struct {
01418     icTagBase           base;           /* Signature, "crdi" */
01419     icCrdInfo           info;           /* 5 sets of counts & strings */
01420 }icCrdInfoType;
01421      /*   icCrdInfo       productName;     PS product count/string */
01422      /*   icCrdInfo       CRDName0;        CRD name for intent 0 */ 
01423      /*   icCrdInfo       CRDName1;        CRD name for intent 1 */ 
01424      /*   icCrdInfo       CRDName2;        CRD name for intent 2 */ 
01425      /*   icCrdInfo       CRDName3;        CRD name for intent 3 */
01426 
01428 typedef struct {
01429     icTagBase           base;           /* Signature, "clro" */
01430     icColorantOrder     order;          /* ColorantOrder     */
01431 }icColorantOrderType;
01432 
01434 typedef struct {
01435     icTagBase           base;           /* Signature, "clrt" */
01436     icColorantTable     table;          /* ColorantTable     */
01437 }icColorantTableType;
01438 
01440 typedef struct {
01441     icTagBase           base;           /* Signature, "chad"            */
01442     icS15Fixed16Number  matrix[9];      /* ChromaticAdaptation Matrix   */
01443 }icChromaticAdaptationType;
01444 
01446 typedef struct {
01447     icUInt16Number      languageCode;   /* name language code ISO-639           */
01448     icUInt16Number      countryCode;    /* name country code ISO-3166           */
01449     icUInt32Number      len;            /* string length in bytes               */
01450     icUInt32Number      off;            /* offset in bytes from start of tag    */
01451 }icMultiLocalizedUnicodeEntry;
01452 
01454 typedef struct {
01455     icTagBase           base;           /* Signature, "mluc"            */
01456     icUInt32Number      count;          /* Count of name records        */
01457     icUInt32Number      size;           /* name record size             */
01458 }icMultiLocalizedUnicodeType;
01459 
01460 /*------------------------------------------------------------------------*/
01461 
01467 typedef struct {
01468     icTagSignature      sig;            /* The tag signature */
01469     icUInt32Number      offset;         /* Start of tag relative to 
01470                                          * start of header, Spec
01471                                          * Clause 5 */
01472     icUInt32Number      size;           /* Size in bytes */
01473 } icTag;
01474 
01476 typedef struct {
01477     icUInt32Number      count;          /* Number of tags in the profile */
01478     icTag               tags[icAny];    /* Variable array of tags */
01479 } icTagList;
01480 
01482 typedef union {
01483     icUInt8Number         ID8[16];
01484     icUInt16Number        ID16[8];
01485     icUInt32Number        ID32[4];
01486 } icProfileID;
01487 
01489 typedef struct {
01490     icUInt32Number              size;           /* Profile size in bytes */
01491     icSignature                 cmmId;          /* CMM for this profile */
01492     icUInt32Number              version;        /* Format version number */
01493     icProfileClassSignature     deviceClass;    /* Type of profile */
01494     icColorSpaceSignature       colorSpace;     /* Color space of data */
01495     icColorSpaceSignature       pcs;            /* PCS, XYZ or Lab only */
01496     icDateTimeNumber            date;           /* Date profile was created */
01497     icSignature                 magic;          /* icMagicNumber */
01498     icPlatformSignature         platform;       /* Primary Platform */
01499     icUInt32Number              flags;          /* Various bit settings */
01500     icSignature                 manufacturer;   /* Device manufacturer */
01501     icUInt32Number              model;          /* Device model number */
01502     icUInt64Number              attributes;     /* Device attributes */
01503     icUInt32Number              renderingIntent;/* Rendering intent */
01504     icXYZNumber                 illuminant;     /* Profile illuminant */
01505     icSignature                 creator;        /* Profile creator */
01506     icProfileID                 profileID;      /* Profile ID using RFC 1321 MD5 128bit fingerprinting */
01507     icInt8Number                reserved[28];   /* Reserved for future use */
01508 } icHeader;
01509 
01514 typedef struct {
01515     icHeader            header;         /* The header */
01516     icTagList           tagList;        /* with tagList */
01517     /* Original:
01518     icHeader            header;             The header 
01519     icUInt32Number      count;              Number of tags in the profile 
01520     icInt8Number        data[icAny];        The tagTable and tagData */
01521 /*
01522  * Data that follows is of the form
01523  *
01524  * icTag        tagTable[icAny];        * The tag table 
01525  * icInt8Number tagData[icAny];         * The tag data 
01526  */
01527 } icProfile;               
01528 
01529 /*------------------------------------------------------------------------*/
01530 /* Obsolete entries */
01531 
01532 /* icNamedColor was replaced with icNamedColor2 *
01533 typedef struct {
01534     icUInt32Number      vendorFlag;     / Bottom 16 bits for IC use *
01535     icUInt32Number      count;          / Count of named colors *
01536     icInt8Number        data[icAny];    / Named color data follows *
01537  *
01538  *  Data that follows is of this form
01539  *
01540  * icInt8Number         prefix[icAny];      * Prefix for the color name, max = 32
01541  * icInt8Number         suffix[icAny];      * Suffix for the color name, max = 32
01542  * icInt8Number         root1[icAny];       * Root name for first color, max = 32
01543  * icInt8Number         coords1[icAny];     * Color coordinates of first color
01544  * icInt8Number         root2[icAny];       * Root name for first color, max = 32
01545  * icInt8Number         coords2[icAny];     * Color coordinates of first color
01546  *                      :
01547  *                      :
01548  * Repeat for root name and color coordinates up to (count-1)
01549  *
01550 } icNamedColor; */
01551 
01552 /* icNamedColorType was replaced by icNamedColor2Type *
01553 typedef struct {
01554     icTagBase           base;           / Signature, "ncol" *
01555     icNamedColor        ncolor;         / Named color data *
01556 } icNamedColorType; */
01557 
01558 #endif /* icPROFILEHEADER_H */
01559 
01560 
01561 
01562 

Generated on Tue Jun 26 17:51:43 2007 for IccProfLib by  doxygen 1.3.9.1