1 
2 /*
3  * This file started out as the standard ICC header provided by
4  * the ICC. Since this file no longer seems to be maintained,
5  * I've added new entries from the ICC spec., but dropped
6  * things that are not needed for icclib.
7  *
8  * This version of the header file corresponds to the profile
9  * Specification ICC.1:2003-09 (Version 4.2.0)
10  *
11  * All header file entries are pre-fixed with "ic" to help
12  * avoid name space collisions. Signatures are pre-fixed with
13  * icSig.
14  *
15  * Version numbers used within file are file format version numers,
16  * not spec. version numbers.
17  *
18  * Portions of this file are Copyright 2004 - 2005 Graeme W. Gill,
19  * This material is licensed with an "MIT" free use license:-
20  * see the License4.txt file in this directory for licensing details.
21  *
22  *  Graeme Gill.
23  */
24 
25 /* Header file guard bands */
26 #ifndef ICCV42_H
27 #define ICCV42_H
28 
29 #ifdef __cplusplus
30 	extern "C" {
31 #endif
32 
33 /*****************************************************************
34  Copyright (c) 1994-1998 SunSoft, Inc.
35 
36                     Rights Reserved
37 
38 Permission is hereby granted, free of charge, to any person
39 obtaining a copy of this software and associated documentation
40 files (the "Software"), to deal in the Software without restrict-
41 ion, including without limitation the rights to use, copy, modify,
42 merge, publish distribute, sublicense, and/or sell copies of the
43 Software, and to permit persons to whom the Software is furnished
44 to do so, subject to the following conditions:
45 
46 The above copyright notice and this permission notice shall be
47 included in all copies or substantial portions of the Software.
48 
49 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
50 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
51 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
52 INFRINGEMENT.  IN NO EVENT SHALL SUNSOFT, INC. OR ITS PARENT
53 COMPANY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
54 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
55 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
56 OTHER DEALINGS IN THE SOFTWARE.
57 
58 Except as contained in this notice, the name of SunSoft, Inc.
59 shall not be used in advertising or otherwise to promote the
60 sale, use or other dealings in this Software without written
61 authorization from SunSoft Inc.
62 ******************************************************************/
63 
64 /*
65    Spec name/version/file version relationship.
66 
67    Spec. Name      Spec. Version    ICC File Version
68    ----------      -------------    ----------------
69    ICC.1:2004-10      4.2            4.2.0
70    ICC.1:2003-09      4.1            4.1.0
71    ICC.1:2001-12      4.0            4.0.0
72    ICC.1:2001-04      (3.7?)         2.4.0
73    ICC.1A:1999-04     (3.6?)         2.3.0
74    ICC.1:1998-09      (3.5?)         2.2.0
75    (Version 3.4)      3.4            2.1.0 (a)
76    (Version 3.3)      3.3            2.1.0
77    (Version 3.2)      3.2            2.0.0 (b)
78    (Version 3.01)     3.01           2.0.0 (a)
79    (Version 3.0)      3.0            2.0.0
80 */
81 
82 
83 #define icMaxTagVal -1
84 
85 /*------------------------------------------------------------------------*/
86 
87 /*
88  * Defines used in the specification
89  */
90 
91 #define icMagicNumber                   0x61637370L     /* 'acsp' */
92 #define icVersionNumber                 0x02200000L     /* 2.2.0, BCD */
93 #define icVersionNumberV41              0x04100000L     /* 4.1.0, BCD */
94 
95 /* Screening Encodings */
96 #define icPrtrDefaultScreensFalse       0x00000000L     /* Bit pos 0 */
97 #define icPrtrDefaultScreensTrue        0x00000001L     /* Bit pos 0 */
98 #define icLinesPerInch                  0x00000002L     /* Bit pos 1 */
99 #define icLinesPerCm                    0x00000000L     /* Bit pos 1 */
100 
101 /*
102  * Device attributes, currently defined values correspond
103  * to the least-significant 4 bytes of the 8 byte attribute
104  * quantity, see the header for their location.
105  */
106 
107 #define icReflective                    0x00000000L     /* Bit pos 0 */
108 #define icTransparency                  0x00000001L     /* Bit pos 0 */
109 #define icGlossy                        0x00000000L     /* Bit pos 1 */
110 #define icMatte                         0x00000002L     /* Bit pos 1 */
111 #define icPositive                      0x00000000L     /* Bit pos 2 */
112 #define icNegative                      0x00000004L     /* Bit pos 2 */
113 #define icColor                         0x00000000L     /* Bit pos 3 */
114 #define icBlackAndWhite                 0x00000008L     /* Bit pos 3 */
115 
116 /*
117  * Profile header flags, the least-significant 16 bits are reserved
118  * for consortium use.
119  */
120 
121 #define icEmbeddedProfileFalse          0x00000000L     /* Bit pos 0 */
122 #define icEmbeddedProfileTrue           0x00000001L     /* Bit pos 0 */
123 #define icUseAnywhere                   0x00000000L     /* Bit pos 1 */
124 #define icUseWithEmbeddedDataOnly       0x00000002L     /* Bit pos 1 */
125 
126 /* Ascii or Binary data */
127 #define icAsciiData                     0x00000000L
128 #define icBinaryData                    0x00000001L
129 
130 /* Phosphor or Colorant sets */
131 #define icPhColUnknown                  0x0000          /* Specified */
132 #define icPhColITU_R_BT_709             0x0001          /* ITU-R BT.709 */
133 #define icPhColSMPTE_RP145_1994         0x0002          /* SMPTE RP145-1994 */
134 #define icPhColEBU_Tech_3213_E          0x0003          /* EBU Tech.3213-E */
135 #define icPhColP22                      0x0004          /* P22 */
136 
137 /* Video card gamma formats (ColorSync 2.5 specific) */
138 #define icVideoCardGammaTable           0x00000000
139 #define icVideoCardGammaFormula         0x00000001
140 
141 
142 /*------------------------------------------------------------------------*/
143 /*
144  * Use this area to translate platform definitions of long
145  * etc into icXXX form. The rest of the header uses the icXXX
146  * typedefs. Signatures are 4 byte quantities.
147  */
148 #ifdef ORD32			/* Formal sizes defined elsewhere */
149 
150 typedef INR32           icSignature;
151 
152 /* Unsigned integer numbers */
153 typedef ORD8            icUInt8Number;
154 typedef ORD16           icUInt16Number;
155 typedef ORD32           icUInt32Number;
156 typedef ORD32           icUInt64Number[2];
157 
158 /* Signed numbers */
159 typedef INR8            icInt8Number;
160 typedef INR16           icInt16Number;
161 typedef INR32	        icInt32Number;
162 typedef INR32           icInt64Number[2];
163 
164 /* Fixed numbers */
165 typedef INR32           icS15Fixed16Number;
166 typedef ORD32           icU16Fixed16Number;
167 
168 #else   /* default definitions for typical 32 bit architecture */
169 
170 typedef long            icSignature;
171 
172 /* Unsigned integer numbers */
173 typedef unsigned char   icUInt8Number;
174 typedef unsigned short  icUInt16Number;
175 typedef unsigned long   icUInt32Number;
176 typedef unsigned long   icUInt64Number[2];
177 
178 /* Signed numbers */
179 typedef char            icInt8Number;
180 typedef short           icInt16Number;
181 typedef long            icInt32Number;
182 typedef long            icInt64Number[2];
183 
184 /* Fixed numbers */
185 typedef long            icS15Fixed16Number;
186 typedef unsigned long   icU16Fixed16Number;
187 
188 #endif  /* Not formal */
189 
190 /*------------------------------------------------------------------------*/
191 /* public tags and sizes */
192 typedef enum {
193 	icSigAToB0Tag                          = 0x41324230L,  /* 'A2B0' */
194 	icSigAToB1Tag                          = 0x41324231L,  /* 'A2B1' */
195 	icSigAToB2Tag                          = 0x41324232L,  /* 'A2B2' */
196 	icSigBlueMatrixColumnTag               = 0x6258595AL,  /* 'bXYZ' */
197 	icSigBlueTRCTag                        = 0x62545243L,  /* 'bTRC' */
198 	icSigBToA0Tag                          = 0x42324130L,  /* 'B2A0' */
199 	icSigBToA1Tag                          = 0x42324131L,  /* 'B2A1' */
200 	icSigBToA2Tag                          = 0x42324132L,  /* 'B2A2' */
201 	icSigCalibrationDateTimeTag            = 0x63616C74L,  /* 'calt' */
202 	icSigCharTargetTag                     = 0x74617267L,  /* 'targ' */
203 	icSigChromaticAdaptationTag            = 0x63686164L,  /* 'chad' V2.4+ */
204 	icSigChromaticityTag                   = 0x6368726DL,  /* 'chrm' V2.3+ */
205 	icSigColorantOrderTag                  = 0x636C726FL,  /* 'clro' V4.0+ */
206 	icSigColorantTableTag                  = 0x636C7274L,  /* 'clrt' V4.0+ */
207 	icSigColorantTableOutTag               = 0x636C6F74L,  /* 'clot' V4.0+ */
208 	icSigCopyrightTag                      = 0x63707274L,  /* 'cprt' */
209 	icSigCrdInfoTag                        = 0x63726469L,  /* 'crdi' V2.1 - V4.0 */
210 	icSigDataTag                           = 0x64617461L,  /* 'data' ??? */
211 	icSigDateTimeTag                       = 0x6474696DL,  /* 'dtim' ???  */
212 	icSigDeviceMfgDescTag                  = 0x646D6E64L,  /* 'dmnd' */
213 	icSigDeviceModelDescTag                = 0x646D6464L,  /* 'dmdd' */
214 	icSigDeviceSettingsTag                 = 0x64657673L,  /* 'devs' V2.2 - V4.0 */
215 	icSigGamutTag                          = 0x67616D74L,  /* 'gamt' */
216 	icSigGrayTRCTag                        = 0x6b545243L,  /* 'kTRC' */
217 	icSigGreenMatrixColumnTag              = 0x6758595AL,  /* 'gXYZ' */
218 	icSigGreenTRCTag                       = 0x67545243L,  /* 'gTRC' */
219 	icSigLuminanceTag                      = 0x6C756d69L,  /* 'lumi' */
220 	icSigMeasurementTag                    = 0x6D656173L,  /* 'meas' */
221 	icSigMediaBlackPointTag                = 0x626B7074L,  /* 'bkpt' */
222 	icSigMediaWhitePointTag                = 0x77747074L,  /* 'wtpt' */
223 	icSigNamedColorTag                     = 0x6E636f6CL,  /* 'ncol' V2.0 */
224 	icSigNamedColor2Tag                    = 0x6E636C32L,  /* 'ncl2' V2.1+ */
225 	icSigOutputResponseTag                 = 0x72657370L,  /* 'resp' V2.2+ */
226 	icSigPerceptualRenderingIntentGamutTag = 0x72696730L,  /* 'rig0' V4.3+ */
227 	icSigPreview0Tag                       = 0x70726530L,  /* 'pre0' */
228 	icSigPreview1Tag                       = 0x70726531L,  /* 'pre1' */
229 	icSigPreview2Tag                       = 0x70726532L,  /* 'pre2' */
230 	icSigProfileDescriptionTag             = 0x64657363L,  /* 'desc' */
231 	icSigProfileSequenceDescTag            = 0x70736571L,  /* 'pseq' */
232 	icSigPs2CRD0Tag                        = 0x70736430L,  /* 'psd0' V2.0 - V4.0 */
233 	icSigPs2CRD1Tag                        = 0x70736431L,  /* 'psd1' V2.0 - V4.0 */
234 	icSigPs2CRD2Tag                        = 0x70736432L,  /* 'psd2' V2.0 - V4.0 */
235 	icSigPs2CRD3Tag                        = 0x70736433L,  /* 'psd3' V2.0 - V4.0 */
236 	icSigPs2CSATag                         = 0x70733273L,  /* 'ps2s' V2.0 - V4.0 */
237 	icSigPs2RenderingIntentTag             = 0x70733269L,  /* 'ps2i' V2.0 - V4.0 */
238 	icSigRedMatrixColumnTag                = 0x7258595AL,  /* 'rXYZ' */
239 	icSigRedTRCTag                         = 0x72545243L,  /* 'rTRC' */
240 	icSigSaturationRenderingIntentGamutTag = 0x72696732L,  /* 'rig2' ??? */
241 	icSigScreeningDescTag                  = 0x73637264L,  /* 'scrd' V2.0 - V4.0 */
242 	icSigScreeningTag                      = 0x7363726EL,  /* 'scrn' V2.0 - V4.0 */
243 	icSigTechnologyTag                     = 0x74656368L,  /* 'tech' */
244 	icSigUcrBgTag                          = 0x62666420L,  /* 'bfd ' V2.0 - V4.0 */
245 	icSigVideoCardGammaTag                 = 0x76636774L,  /* 'vcgt' ColorSync 2.5+ */
246 	icSigViewingCondDescTag                = 0x76756564L,  /* 'vued' */
247 	icSigViewingConditionsTag              = 0x76696577L,  /* 'view' */
248 	icMaxEnumTag                           = icMaxTagVal
249 } icTagSignature;
250 
251 /* Aliases for backwards compatibility */
252 #define icSigBlueColorantTag  icSigBlueMatrixColumnTag		/* Prior to V4.0 */
253 #define icSigGreenColorantTag icSigGreenMatrixColumnTag		/* Prior to V4.0 */
254 #define icSigRedColorantTag   icSigRedMatrixColumnTag		/* Prior to V4.0 */
255 
256 /* technology signature descriptions */
257 typedef enum {
258     icSigDigitalCamera                  = 0x6463616DL,  /* 'dcam' */
259     icSigFilmScanner                    = 0x6673636EL,  /* 'fscn' */
260     icSigReflectiveScanner              = 0x7273636EL,  /* 'rscn' */
261     icSigInkJetPrinter                  = 0x696A6574L,  /* 'ijet' */
262     icSigThermalWaxPrinter              = 0x74776178L,  /* 'twax' */
263     icSigElectrophotographicPrinter     = 0x6570686FL,  /* 'epho' */
264     icSigElectrostaticPrinter           = 0x65737461L,  /* 'esta' */
265     icSigDyeSublimationPrinter          = 0x64737562L,  /* 'dsub' */
266     icSigPhotographicPaperPrinter       = 0x7270686FL,  /* 'rpho' */
267     icSigFilmWriter                     = 0x6670726EL,  /* 'fprn' */
268     icSigVideoMonitor                   = 0x7669646DL,  /* 'vidm' */
269     icSigVideoCamera                    = 0x76696463L,  /* 'vidc' */
270     icSigProjectionTelevision           = 0x706A7476L,  /* 'pjtv' */
271     icSigCRTDisplay                     = 0x43525420L,  /* 'CRT ' */
272     icSigPMDisplay                      = 0x504D4420L,  /* 'PMD ' */
273     icSigAMDisplay                      = 0x414D4420L,  /* 'AMD ' */
274     icSigPhotoCD                        = 0x4B504344L,  /* 'KPCD' */
275     icSigPhotoImageSetter               = 0x696D6773L,  /* 'imgs' */
276     icSigGravure                        = 0x67726176L,  /* 'grav' */
277     icSigOffsetLithography              = 0x6F666673L,  /* 'offs' */
278     icSigSilkscreen                     = 0x73696C6BL,  /* 'silk' */
279     icSigFlexography                    = 0x666C6578L,  /* 'flex' */
280     icMaxEnumTechnology                 = icMaxTagVal
281 } icTechnologySignature;
282 
283 /* type signatures */
284 typedef enum {
285     icSigChromaticityType               = 0x6368726DL,  /* 'chrm' */
286     icSigColorantOrderType              = 0x636C726FL,  /* 'clro' V4.0+ */
287     icSigColorantTableType              = 0x636C7274L,  /* 'clrt' V4.0+ */
288     icSigCrdInfoType                    = 0x63726469L,  /* 'crdi' V2.1 - V4.0 */
289     icSigCurveType                      = 0x63757276L,  /* 'curv' */
290     icSigDataType                       = 0x64617461L,  /* 'data' */
291     icSigDateTimeType                   = 0x6474696DL,  /* 'dtim' */
292     icSigDeviceSettingsType             = 0x64657673L,  /* 'devs' V2.2 - V4.0 */
293     icSigLut16Type                      = 0x6d667432L,  /* 'mft2' */
294     icSigLut8Type                       = 0x6d667431L,  /* 'mft1' */
295     icSigLutAtoBType                    = 0x6d414220L,  /* 'mAB ' V4.0+ */
296     icSigLutBtoAType                    = 0x6d424120L,  /* 'mBA ' V4.0+ */
297     icSigMeasurementType                = 0x6D656173L,  /* 'meas' */
298     icSigMultiLocalizedUnicodeType      = 0x6D6C7563L,  /* 'mluc' V4.0+ */
299     icSigNamedColorType                 = 0x6E636f6CL,  /* 'ncol' V2.0 */
300     icSigNamedColor2Type                = 0x6E636C32L,  /* 'ncl2' V2.0+ */
301     icSigParametricCurveType            = 0x70617261L,  /* 'para' V4.0+ */
302     icSigProfileSequenceDescType        = 0x70736571L,  /* 'pseq' */
303     icSigResponseCurveSet16Type         = 0x72637332L,  /* 'rcs2' V2.2 - V4.0 */
304     icSigS15Fixed16ArrayType            = 0x73663332L,  /* 'sf32' */
305     icSigScreeningType                  = 0x7363726EL,  /* 'scrn' V2.0 - V4.0 */
306     icSigSignatureType                  = 0x73696720L,  /* 'sig ' */
307     icSigTextType                       = 0x74657874L,  /* 'text' */
308     icSigTextDescriptionType            = 0x64657363L,  /* 'desc' V2.0 - V2.4 */
309     icSigU16Fixed16ArrayType            = 0x75663332L,  /* 'uf32' */
310     icSigUcrBgType                      = 0x62666420L,  /* 'bfd ' V2.0 - V4.0 */
311     icSigUInt16ArrayType                = 0x75693136L,  /* 'ui16' */
312     icSigUInt32ArrayType                = 0x75693332L,  /* 'ui32' */
313     icSigUInt64ArrayType                = 0x75693634L,  /* 'ui64' */
314     icSigUInt8ArrayType                 = 0x75693038L,  /* 'ui08' */
315     icSigVideoCardGammaType             = 0x76636774L,  /* 'vcgt' ColorSync 2.5+ */
316     icSigViewingConditionsType          = 0x76696577L,  /* 'view' */
317     icSigXYZType                        = 0x58595A20L,  /* 'XYZ ' */
318     icSigXYZArrayType                   = 0x58595A20L,  /* 'XYZ ' */
319     icMaxEnumType                       = icMaxTagVal
320 } icTagTypeSignature;
321 
322 /*
323  * Color Space Signatures
324  * Note that only icSigXYZData and icSigLabData are valid
325  * Profile Connection Spaces (PCSs)
326  */
327 typedef enum {
328     icSigXYZData                        = 0x58595A20L,  /* 'XYZ ' */
329     icSigLabData                        = 0x4C616220L,  /* 'Lab ' */
330     icSigLuvData                        = 0x4C757620L,  /* 'Luv ' */
331     icSigYCbCrData                      = 0x59436272L,  /* 'YCbr' */
332     icSigYxyData                        = 0x59787920L,  /* 'Yxy ' */
333     icSigRgbData                        = 0x52474220L,  /* 'RGB ' */
334     icSigGrayData                       = 0x47524159L,  /* 'GRAY' */
335     icSigHsvData                        = 0x48535620L,  /* 'HSV ' */
336     icSigHlsData                        = 0x484C5320L,  /* 'HLS ' */
337     icSigCmykData                       = 0x434D594BL,  /* 'CMYK' */
338     icSigCmyData                        = 0x434D5920L,  /* 'CMY ' */
339 
340     icSig2colorData                     = 0x32434C52L,  /* '2CLR' */
341     icSig3colorData                     = 0x33434C52L,  /* '3CLR' */
342     icSig4colorData                     = 0x34434C52L,  /* '4CLR' */
343     icSig5colorData                     = 0x35434C52L,  /* '5CLR' */
344     icSig6colorData                     = 0x36434C52L,  /* '6CLR' */
345     icSig7colorData                     = 0x37434C52L,  /* '7CLR' */
346     icSig8colorData                     = 0x38434C52L,  /* '8CLR' */
347     icSig9colorData                     = 0x39434C52L,  /* '9CLR' */
348     icSig10colorData                    = 0x41434C52L,  /* 'ACLR' */
349     icSig11colorData                    = 0x42434C52L,  /* 'BCLR' */
350     icSig12colorData                    = 0x43434C52L,  /* 'CCLR' */
351     icSig13colorData                    = 0x44434C52L,  /* 'DCLR' */
352     icSig14colorData                    = 0x45434C52L,  /* 'ECLR' */
353     icSig15colorData                    = 0x46434C52L,  /* 'FCLR' */
354 
355     icSigMch5Data                       = 0x4D434835L,  /* 'MCH5' Colorsync ? */
356     icSigMch6Data                       = 0x4D434836L,  /* 'MCH6' Hexachrome: CMYKOG */
357     icSigMch7Data                       = 0x4D434837L,  /* 'MCH7' Colorsync ? */
358     icSigMch8Data                       = 0x4D434838L,  /* 'MCH8' Colorsync ? */
359 	icSigNamedData                      = 0x6e6d636cL,  /* 'nmcl' ??? */
360 
361     icMaxEnumData                       = icMaxTagVal
362 } icColorSpaceSignature;
363 
364 /* profileClass enumerations */
365 typedef enum {
366     icSigInputClass                     = 0x73636E72L,  /* 'scnr' */
367     icSigDisplayClass                   = 0x6D6E7472L,  /* 'mntr' */
368     icSigOutputClass                    = 0x70727472L,  /* 'prtr' */
369     icSigLinkClass                      = 0x6C696E6BL,  /* 'link' */
370     icSigAbstractClass                  = 0x61627374L,  /* 'abst' */
371     icSigColorSpaceClass                = 0x73706163L,  /* 'spac' */
372     icSigNamedColorClass                = 0x6e6d636cL,  /* 'nmcl' */
373     icMaxEnumClass                      = icMaxTagVal
374 } icProfileClassSignature;
375 
376 /* Platform Signatures */
377 typedef enum {
378     icSigMacintosh                      = 0x4150504CL,  /* 'APPL' */
379     icSigMicrosoft                      = 0x4D534654L,  /* 'MSFT' */
380     icSigSolaris                        = 0x53554E57L,  /* 'SUNW' */
381     icSigSGI                            = 0x53474920L,  /* 'SGI ' */
382     icSigTaligent                       = 0x54474E54L,  /* 'TGNT' */
383     icMaxEnumPlatform                   = icMaxTagVal
384 } icPlatformSignature;
385 
386 /* Rendering Intent Gamut Signatures */
387 typedef enum {
388     icSigPerceptualReferenceMediumGamut = 0x70726d67L,  /* 'prmg' V4.3+ */
389     icMaxEnumReferenceMediumGamut       = icMaxTagVal
390 } icReferenceMediumGamutSignature;
391 
392 /*------------------------------------------------------------------------*/
393 /*
394  * Other enums
395  */
396 
397 /* Measurement Flare, used in the measurmentType tag */
398 typedef enum {
399     icFlare0                            = 0x00000000L,  /* 0% flare */
400     icFlare100                          = 0x00000001L,  /* 100% flare */
401     icMaxFlare                          = icMaxTagVal
402 } icMeasurementFlare;
403 
404 /* Measurement Geometry, used in the measurmentType tag */
405 typedef enum {
406     icGeometryUnknown                   = 0x00000000L,  /* Unknown */
407     icGeometry045or450                  = 0x00000001L,  /* 0/45, 45/0 */
408     icGeometry0dord0                    = 0x00000002L,  /* 0/d or d/0 */
409     icMaxGeometry                       = icMaxTagVal
410 } icMeasurementGeometry;
411 
412 /* Rendering Intents, used in the profile header */
413 typedef enum {
414     icPerceptual                        = 0,
415     icRelativeColorimetric              = 1,
416     icSaturation                        = 2,
417     icAbsoluteColorimetric              = 3,
418     icMaxEnumIntent                     = icMaxTagVal
419 } icRenderingIntent;
420 
421 /* Different Spot Shapes currently defined, used for screeningType */
422 typedef enum {
423     icSpotShapeUnknown                  = 0,
424     icSpotShapePrinterDefault           = 1,
425     icSpotShapeRound                    = 2,
426     icSpotShapeDiamond                  = 3,
427     icSpotShapeEllipse                  = 4,
428     icSpotShapeLine                     = 5,
429     icSpotShapeSquare                   = 6,
430     icSpotShapeCross                    = 7,
431     icMaxEnumSpot                       = icMaxTagVal
432 } icSpotShape;
433 
434 /* Standard Observer, used in the measurmentType tag */
435 typedef enum {
436     icStdObsUnknown                     = 0x00000000L,  /* Unknown */
437     icStdObs1931TwoDegrees              = 0x00000001L,  /* 2 deg */
438     icStdObs1964TenDegrees              = 0x00000002L,  /* 10 deg */
439     icMaxStdObs                         = icMaxTagVal
440 } icStandardObserver;
441 
442 /* Pre-defined illuminants, used in measurement and viewing conditions type */
443 typedef enum {
444     icIlluminantUnknown                 = 0x00000000L,
445     icIlluminantD50                     = 0x00000001L,
446     icIlluminantD65                     = 0x00000002L,
447     icIlluminantD93                     = 0x00000003L,
448     icIlluminantF2                      = 0x00000004L,
449     icIlluminantD55                     = 0x00000005L,
450     icIlluminantA                       = 0x00000006L,
451     icIlluminantEquiPowerE              = 0x00000007L,
452     icIlluminantF8                      = 0x00000008L,
453     icMaxEnumIlluminant                 = icMaxTagVal
454 } icIlluminant;
455 
456 /* A not so exhaustive list of language codes */
457 typedef enum {
458 	icLanguageCodeEnglish               = 0x656E, /* 'en' */
459 	icLanguageCodeGerman                = 0x6465, /* 'de' */
460 	icLanguageCodeItalian               = 0x6974, /* 'it' */
461 	icLanguageCodeDutch                 = 0x6E6C, /* 'nl' */
462 	icLanguageCodeSweden                = 0x7376, /* 'sv' */
463 	icLanguageCodeSpanish               = 0x6573, /* 'es' */
464 	icLanguageCodeDanish                = 0x6461, /* 'da' */
465 	icLanguageCodeNorwegian             = 0x6E6F, /* 'no' */
466 	icLanguageCodeJapanese              = 0x6A61, /* 'ja' */
467 	icLanguageCodeFinish                = 0x6669, /* 'fi' */
468 	icLanguageCodeTurkish               = 0x7472, /* 'tr' */
469 	icLanguageCodeKorean                = 0x6B6F, /* 'ko' */
470 	icLanguageCodeChienese              = 0x7A68, /* 'zh' */
471 	icLanguageCodeFrench                = 0x6672, /* 'fr' */
472 	icMaxEnumLanguageCode               = 0xFFFF
473 } icEnumLanguageCode;
474 
475 /* A not so exhaustive list of region codes. */
476 typedef enum {
477 	icRegionCodeUSA                      = 0x5553, /* 'US' */
478 	icRegionCodeUnitedKingdom            = 0x554B, /* 'UK' */
479 	icRegionCodeGermany                  = 0x4445, /* 'DE' */
480 	icRegionCodeItaly                    = 0x4954, /* 'IT' */
481 	icRegionCodeNetherlands              = 0x4E4C, /* 'NL' */
482 	icRegionCodeSpain                    = 0x4543, /* 'ES' */
483 	icRegionCodeDenmark                  = 0x444B, /* 'DK' */
484 	icRegionCodeNorway                   = 0x4E4F, /* 'ND' */
485 	icRegionCodeJapan                    = 0x4A50, /* 'JP' */
486 	icRegionCodeFinland                  = 0x4649, /* 'FI' */
487 	icRegionCodeTurkey                   = 0x5452, /* 'TR' */
488 	icRegionCodeKorea                    = 0x4B52, /* 'KR' */
489 	icRegionCodeChina                    = 0x434E, /* 'CN' */
490 	icRegionCodeTaiwan                   = 0x5457, /* 'TW' */
491 	icRegionCodeFrance                   = 0x4652, /* 'FR' */
492 	icMaxEnumRegionCode                  = 0xFFFF
493 } icEnumRegionCode;
494 
495 /* media type for icSigDeviceSettingsTag */
496 typedef enum {
497     icStandard                          = 1,
498     icTrans                             = 2, /* transparency */
499     icGloss                             = 3,
500     icUser1                             = 256,
501     icMaxDeviceMedia                    = icMaxTagVal
502 } icDeviceMedia;
503 
504 /* halftone settings for icSigDeviceSettingTag */
505 typedef enum {
506     icNone                              = 1,
507     icCoarse                            = 2,
508     icFine                              = 3,
509     icLineArt                           = 4,
510     icErrorDiffusion                    = 5,
511     icReserved6                         = 6,
512     icReserved7                         = 7,
513     icReserved8                         = 8,
514     icReserved9                         = 9,
515     icGrayScale                         = 10,
516     icUser2                             = 256,
517     icMaxDither                         = icMaxTagVal
518 } icDeviceDither;
519 
520 /* signatures for icSigDeviceSettingsTag */
521 typedef enum {
522     icSigResolution                     = 0x72736c6eL, /* 'rsln' */
523     icSigMedia                          = 0x6d747970L, /* 'mtyp' */
524     icSigHalftone                       = 0x6866746eL, /* 'hftn' */
525     icMaxSettings                       = icMaxTagVal
526 } icSettingsSig;
527 
528 /* measurement units for the icResponseCurveSet16Type */
529 typedef enum {
530     icStaA                              = 0x53746141L, /* 'StaA' */
531     icStaE                              = 0x53746145L, /* 'StaE' */
532     icStaI                              = 0x53746149L, /* 'StaI' */
533     icStaT                              = 0x53746154L, /* 'StaT' */
534     icStaM                              = 0x5374614dL, /* 'StaM' */
535     icDN                                = 0x444e2020L, /* 'DN ' */
536     icDNP                               = 0x444e2050L, /* 'DN P' */
537     icDNN                               = 0x444e4e20L, /* 'DNN ' */
538     icDNNP                              = 0x444e4e50L, /* 'DNNP' */
539     icMaxUnits                          = icMaxTagVal
540 } icMeasUnitsSig;
541 
542 /* Parametric curve types for icSigParametricCurveType */
543 typedef enum {
544     icCurveFunction1                    = 0x0000,
545     icCurveFunction3                    = 0x0001,
546     icCurveFunction4                    = 0x0002,
547     icCurveFunction5                    = 0x0003,
548     icCurveFunction7                    = 0x0004
549 } icParametricCurveFunctionType;
550 
551 #ifdef __cplusplus
552 	}
553 #endif
554 
555 #endif /* ICCV42_H */
556