1 //
2 //  Little cms DELPHI wrapper
3 //---------------------------------------------------------------------------------
4 //
5 //  Little Color Management System
6 //  Copyright (c) 1998-2014 Marti Maria Saguer
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining
9 // a copy of this software and associated documentation files (the "Software"),
10 // to deal in the Software without restriction, including without limitation
11 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 // and/or sell copies of the Software, and to permit persons to whom the Software
13 // is furnished to do so, subject to the following conditions:
14 //
15 // The above copyright notice and this permission notice shall be included in
16 // all copies or substantial portions of the Software.
17 //
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
20 // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 //
26 //---------------------------------------------------------------------------------
27 //
28 // Version 2.6
29 //
30 
31 UNIT lcms2dll;
32 
33 {$IFDEF FPC}
34   {$MODE Delphi}
35 {$ENDIF}
36 
37 INTERFACE
38 
39 {$IFNDEF MSWINDOWS}
40    USES LCLType, types;
41    Type PWChar = PWideChar;
42 {$ELSE}
43    USES Windows;
44 {$ENDIF}
45 
46  CONST
47 
48   LCMS2_SO = {$IFDEF DARWIN} 'liblcms2.2.dylib'; {$ELSE} 'lcms2.dll'; {$ENDIF}
49 
50  TYPE
51 
52   Uint8   = Byte;
53   Int8    = Shortint;
54   UInt16  = Word;
55   Int16   = Smallint;
56   UInt32  = LongWord;
57   Int32   = Longint;
58 
59  TYPE
60      cmsUInt8Number   = Uint8;
61      cmsInt8Number    = Int8;
62      cmsUInt16Number  = UInt16;
63      cmsInt16Number   = Int16;
64 
65      cmsUInt32Number  = UInt32;
66      cmsInt32Number   = Int32;
67      cmsInt64Number   = Int64;
68      cmsUInt64Number  = UInt64;
69 
70      cmsFloat32Number = Single;
71      cmsFloat64Number = Double;
72 
73      LPcmsUInt8Number    = ^cmsUInt8Number;
74      LPcmsInt8Number     = ^cmsInt8Number;
75      LPcmsUInt16Number   = ^cmsUInt16Number;
76      LPcmsInt16Number    = ^cmsInt16Number;
77 
78      LPcmsUInt32Number   = ^cmsUInt32Number;
79      LPcmsInt32Number    = ^cmsInt32Number;
80      LPcmsInt64Number    = ^cmsInt64Number;
81      LPcmsUInt64Number   = ^cmsUInt64Number;
82 
83      LPcmsFloat32Number  = ^cmsFloat32Number;
84      LPcmsFloat64Number  = ^cmsFloat64Number;
85 
86 
87      // Derivative types
88      cmsSignature        = cmsUInt32Number;
89      cmsU8Fixed8Number   = cmsUInt16Number;
90      cmsS15Fixed16Number = cmsInt32Number;
91      cmsU16Fixed16Number = cmsUInt32Number;
92 
93      // Boolean type, which will be using the native integer
94      cmsBool = Boolean;
95 
96  CONST
97 
98     // Some common definitions
99     cmsMAX_PATH     = 256;
100 
101     // D50 XYZ normalized to Y=1.0
102     cmsD50X             = 0.9642;
103     cmsD50Y             = 1.0;
104     cmsD50Z             = 0.8249;
105 
106     // V4 perceptual black
107     cmsPERCEPTUAL_BLACK_X  = 0.00336;
108     cmsPERCEPTUAL_BLACK_Y  = 0.0034731;
109     cmsPERCEPTUAL_BLACK_Z  = 0.00287;
110 
111     // Definitions in ICC spec
112     cmsMagicNumber      = $61637370;     // 'acsp'
113     lcmsSignature       = $6c636d73;     // 'lcms'
114 
115 
116 TYPE
117 
118 // Base ICC type definitions
119 cmsTagTypeSignature = (
120   cmsSigChromaticityType                  = $6368726D,  // 'chrm'
121   cmsSigColorantOrderType                 = $636C726F,  // 'clro'
122   cmsSigColorantTableType                 = $636C7274,  // 'clrt'
123   cmsSigCrdInfoType                       = $63726469,  // 'crdi'
124   cmsSigCurveType                         = $63757276,  // 'curv'
125   cmsSigDataType                          = $64617461,  // 'data'
126   cmsSigDictType                          = $64696374,  // 'dict'
127   cmsSigDateTimeType                      = $6474696D,  // 'dtim'
128   cmsSigDeviceSettingsType                = $64657673,  // 'devs'
129   cmsSigLut16Type                         = $6d667432,  // 'mft2'
130   cmsSigLut8Type                          = $6d667431,  // 'mft1'
131   cmsSigLutAtoBType                       = $6d414220,  // 'mAB '
132   cmsSigLutBtoAType                       = $6d424120,  // 'mBA '
133   cmsSigMeasurementType                   = $6D656173,  // 'meas'
134   cmsSigMultiLocalizedUnicodeType         = $6D6C7563,  // 'mluc'
135   cmsSigMultiProcessElementType           = $6D706574,  // 'mpet'
136   cmsSigNamedColorType                    = $6E636f6C,  // 'ncol' -- DEPRECATED!
137   cmsSigNamedColor2Type                   = $6E636C32,  // 'ncl2'
138   cmsSigParametricCurveType               = $70617261,  // 'para'
139   cmsSigProfileSequenceDescType           = $70736571,  // 'pseq'
140   cmsSigProfileSequenceIdType             = $70736964,  // 'psid'
141   cmsSigResponseCurveSet16Type            = $72637332,  // 'rcs2'
142   cmsSigS15Fixed16ArrayType               = $73663332,  // 'sf32'
143   cmsSigScreeningType                     = $7363726E,  // 'scrn'
144   cmsSigSignatureType                     = $73696720,  // 'sig '
145   cmsSigTextType                          = $74657874,  // 'text'
146   cmsSigTextDescriptionType               = $64657363,  // 'desc'
147   cmsSigU16Fixed16ArrayType               = $75663332,  // 'uf32'
148   cmsSigUcrBgType                         = $62666420,  // 'bfd '
149   cmsSigUInt16ArrayType                   = $75693136,  // 'ui16'
150   cmsSigUInt32ArrayType                   = $75693332,  // 'ui32'
151   cmsSigUInt64ArrayType                   = $75693634,  // 'ui64'
152   cmsSigUInt8ArrayType                    = $75693038,  // 'ui08'
153   cmsSigViewingConditionsType             = $76696577,  // 'view'
154   cmsSigXYZType                           = $58595A20,  // 'XYZ '
155   cmsSigVcgtType                          = $76636774   // 'vcgt'
156   );
157 
158 // Base ICC tag definitions
159 cmsTagSignature = (
160     cmsSigAToB0Tag                          = $41324230,  // 'A2B0'
161     cmsSigAToB1Tag                          = $41324231,  // 'A2B1'
162     cmsSigAToB2Tag                          = $41324232,  // 'A2B2'
163     cmsSigBlueColorantTag                   = $6258595A,  // 'bXYZ'
164     cmsSigBlueMatrixColumnTag               = $6258595A,  // 'bXYZ'
165     cmsSigBlueTRCTag                        = $62545243,  // 'bTRC'
166     cmsSigBToA0Tag                          = $42324130,  // 'B2A0'
167     cmsSigBToA1Tag                          = $42324131,  // 'B2A1'
168     cmsSigBToA2Tag                          = $42324132,  // 'B2A2'
169     cmsSigCalibrationDateTimeTag            = $63616C74,  // 'calt'
170     cmsSigCharTargetTag                     = $74617267,  // 'targ'
171     cmsSigChromaticAdaptationTag            = $63686164,  // 'chad'
172     cmsSigChromaticityTag                   = $6368726D,  // 'chrm'
173     cmsSigColorantOrderTag                  = $636C726F,  // 'clro'
174     cmsSigColorantTableTag                  = $636C7274,  // 'clrt'
175     cmsSigColorantTableOutTag               = $636C6F74,  // 'clot'
176     cmsSigColorimetricIntentImageStateTag   = $63696973,  // 'ciis'
177     cmsSigCopyrightTag                      = $63707274,  // 'cprt'
178     cmsSigCrdInfoTag                        = $63726469,  // 'crdi'
179     cmsSigDataTag                           = $64617461,  // 'data'
180     cmsSigDateTimeTag                       = $6474696D,  // 'dtim'
181     cmsSigDeviceMfgDescTag                  = $646D6E64,  // 'dmnd'
182     cmsSigDeviceModelDescTag                = $646D6464,  // 'dmdd'
183     cmsSigDeviceSettingsTag                 = $64657673,  // 'devs'
184     cmsSigDToB0Tag                          = $44324230,  // 'D2B0'
185     cmsSigDToB1Tag                          = $44324231,  // 'D2B1'
186     cmsSigDToB2Tag                          = $44324232,  // 'D2B2'
187     cmsSigDToB3Tag                          = $44324233,  // 'D2B3'
188     cmsSigBToD0Tag                          = $42324430,  // 'B2D0'
189     cmsSigBToD1Tag                          = $42324431,  // 'B2D1'
190     cmsSigBToD2Tag                          = $42324432,  // 'B2D2'
191     cmsSigBToD3Tag                          = $42324433,  // 'B2D3'
192     cmsSigGamutTag                          = $67616D74,  // 'gamt'
193     cmsSigGrayTRCTag                        = $6b545243,  // 'kTRC'
194     cmsSigGreenColorantTag                  = $6758595A,  // 'gXYZ'
195     cmsSigGreenMatrixColumnTag              = $6758595A,  // 'gXYZ'
196     cmsSigGreenTRCTag                       = $67545243,  // 'gTRC'
197     cmsSigLuminanceTag                      = $6C756d69,  // 'lumi'
198     cmsSigMeasurementTag                    = $6D656173,  // 'meas'
199     cmsSigMediaBlackPointTag                = $626B7074,  // 'bkpt'
200     cmsSigMediaWhitePointTag                = $77747074,  // 'wtpt'
201     cmsSigNamedColorTag                     = $6E636f6C,  // 'ncol' // Deprecated by the ICC
202     cmsSigNamedColor2Tag                    = $6E636C32,  // 'ncl2'
203     cmsSigOutputResponseTag                 = $72657370,  // 'resp'
204     cmsSigPerceptualRenderingIntentGamutTag = $72696730,  // 'rig0'
205     cmsSigPreview0Tag                       = $70726530,  // 'pre0'
206     cmsSigPreview1Tag                       = $70726531,  // 'pre1'
207     cmsSigPreview2Tag                       = $70726532,  // 'pre2'
208     cmsSigProfileDescriptionTag             = $64657363,  // 'desc'
209     cmsSigProfileSequenceDescTag            = $70736571,  // 'pseq'
210     cmsSigProfileSequenceIdTag              = $70736964,  // 'psid'
211     cmsSigPs2CRD0Tag                        = $70736430,  // 'psd0'
212     cmsSigPs2CRD1Tag                        = $70736431,  // 'psd1'
213     cmsSigPs2CRD2Tag                        = $70736432,  // 'psd2'
214     cmsSigPs2CRD3Tag                        = $70736433,  // 'psd3'
215     cmsSigPs2CSATag                         = $70733273,  // 'ps2s'
216     cmsSigPs2RenderingIntentTag             = $70733269,  // 'ps2i'
217     cmsSigRedColorantTag                    = $7258595A,  // 'rXYZ'
218     cmsSigRedMatrixColumnTag                = $7258595A,  // 'rXYZ'
219     cmsSigRedTRCTag                         = $72545243,  // 'rTRC'
220     cmsSigSaturationRenderingIntentGamutTag = $72696732,  // 'rig2'
221     cmsSigScreeningDescTag                  = $73637264,  // 'scrd'
222     cmsSigScreeningTag                      = $7363726E,  // 'scrn'
223     cmsSigTechnologyTag                     = $74656368,  // 'tech'
224     cmsSigUcrBgTag                          = $62666420,  // 'bfd '
225     cmsSigViewingCondDescTag                = $76756564,  // 'vued'
226     cmsSigViewingConditionsTag              = $76696577,  // 'view'
227     cmsSigVcgtTag                           = $76636774,  // 'vcgt'
228     cmsSigMetaTag                           = $6D657461   // 'meta'
229 );
230 
231 // ICC Technology tag
232 cmsTechnologySignature = (
233     cmsSigDigitalCamera                     = $6463616D,  // 'dcam'
234     cmsSigFilmScanner                       = $6673636E,  // 'fscn'
235     cmsSigReflectiveScanner                 = $7273636E,  // 'rscn'
236     cmsSigInkJetPrinter                     = $696A6574,  // 'ijet'
237     cmsSigThermalWaxPrinter                 = $74776178,  // 'twax'
238     cmsSigElectrophotographicPrinter        = $6570686F,  // 'epho'
239     cmsSigElectrostaticPrinter              = $65737461,  // 'esta'
240     cmsSigDyeSublimationPrinter             = $64737562,  // 'dsub'
241     cmsSigPhotographicPaperPrinter          = $7270686F,  // 'rpho'
242     cmsSigFilmWriter                        = $6670726E,  // 'fprn'
243     cmsSigVideoMonitor                      = $7669646D,  // 'vidm'
244     cmsSigVideoCamera                       = $76696463,  // 'vidc'
245     cmsSigProjectionTelevision              = $706A7476,  // 'pjtv'
246     cmsSigCRTDisplay                        = $43525420,  // 'CRT '
247     cmsSigPMDisplay                         = $504D4420,  // 'PMD '
248     cmsSigAMDisplay                         = $414D4420,  // 'AMD '
249     cmsSigPhotoCD                           = $4B504344,  // 'KPCD'
250     cmsSigPhotoImageSetter                  = $696D6773,  // 'imgs'
251     cmsSigGravure                           = $67726176,  // 'grav'
252     cmsSigOffsetLithography                 = $6F666673,  // 'offs'
253     cmsSigSilkscreen                        = $73696C6B,  // 'silk'
254     cmsSigFlexography                       = $666C6578,  // 'flex'
255     cmsSigMotionPictureFilmScanner          = $6D706673,  // 'mpfs'
256     cmsSigMotionPictureFilmRecorder         = $6D706672,  // 'mpfr'
257     cmsSigDigitalMotionPictureCamera        = $646D7063,  // 'dmpc'
258     cmsSigDigitalCinemaProjector            = $64636A70   // 'dcpj'
259 );
260 
261 
262 // ICC Color spaces
263 cmsColorSpaceSignature = (
264     cmsSigXYZData                           = $58595A20,  // 'XYZ '
265     cmsSigLabData                           = $4C616220,  // 'Lab '
266     cmsSigLuvData                           = $4C757620,  // 'Luv '
267     cmsSigYCbCrData                         = $59436272,  // 'YCbr'
268     cmsSigYxyData                           = $59787920,  // 'Yxy '
269     cmsSigRgbData                           = $52474220,  // 'RGB '
270     cmsSigGrayData                          = $47524159,  // 'GRAY'
271     cmsSigHsvData                           = $48535620,  // 'HSV '
272     cmsSigHlsData                           = $484C5320,  // 'HLS '
273     cmsSigCmykData                          = $434D594B,  // 'CMYK'
274     cmsSigCmyData                           = $434D5920,  // 'CMY '
275     cmsSigMCH1Data                          = $4D434831,  // 'MCH1'
276     cmsSigMCH2Data                          = $4D434832,  // 'MCH2'
277     cmsSigMCH3Data                          = $4D434833,  // 'MCH3'
278     cmsSigMCH4Data                          = $4D434834,  // 'MCH4'
279     cmsSigMCH5Data                          = $4D434835,  // 'MCH5'
280     cmsSigMCH6Data                          = $4D434836,  // 'MCH6'
281     cmsSigMCH7Data                          = $4D434837,  // 'MCH7'
282     cmsSigMCH8Data                          = $4D434838,  // 'MCH8'
283     cmsSigMCH9Data                          = $4D434839,  // 'MCH9'
284     cmsSigMCHAData                          = $4D43483A,  // 'MCHA'
285     cmsSigMCHBData                          = $4D43483B,  // 'MCHB'
286     cmsSigMCHCData                          = $4D43483C,  // 'MCHC'
287     cmsSigMCHDData                          = $4D43483D,  // 'MCHD'
288     cmsSigMCHEData                          = $4D43483E,  // 'MCHE'
289     cmsSigMCHFData                          = $4D43483F,  // 'MCHF'
290     cmsSigNamedData                         = $6e6d636c,  // 'nmcl'
291     cmsSig1colorData                        = $31434C52,  // '1CLR'
292     cmsSig2colorData                        = $32434C52,  // '2CLR'
293     cmsSig3colorData                        = $33434C52,  // '3CLR'
294     cmsSig4colorData                        = $34434C52,  // '4CLR'
295     cmsSig5colorData                        = $35434C52,  // '5CLR'
296     cmsSig6colorData                        = $36434C52,  // '6CLR'
297     cmsSig7colorData                        = $37434C52,  // '7CLR'
298     cmsSig8colorData                        = $38434C52,  // '8CLR'
299     cmsSig9colorData                        = $39434C52,  // '9CLR'
300     cmsSig10colorData                       = $41434C52,  // 'ACLR'
301     cmsSig11colorData                       = $42434C52,  // 'BCLR'
302     cmsSig12colorData                       = $43434C52,  // 'CCLR'
303     cmsSig13colorData                       = $44434C52,  // 'DCLR'
304     cmsSig14colorData                       = $45434C52,  // 'ECLR'
305     cmsSig15colorData                       = $46434C52,  // 'FCLR'
306     cmsSigLuvKData                          = $4C75764B   // 'LuvK'
307 );
308 
309 // ICC Profile Class
310 cmsProfileClassSignature = (
311     cmsSigInputClass                        = $73636E72,  // 'scnr'
312     cmsSigDisplayClass                      = $6D6E7472,  // 'mntr'
313     cmsSigOutputClass                       = $70727472,  // 'prtr'
314     cmsSigLinkClass                         = $6C696E6B,  // 'link'
315     cmsSigAbstractClass                     = $61627374,  // 'abst'
316     cmsSigColorSpaceClass                   = $73706163,  // 'spac'
317     cmsSigNamedColorClass                   = $6e6d636c   // 'nmcl'
318 );
319 
320 
321 // ICC Platforms
322 cmsPlatformSignature = (
323     cmsSigMacintosh                         = $4150504C,  // 'APPL'
324     cmsSigMicrosoft                         = $4D534654,  // 'MSFT'
325     cmsSigSolaris                           = $53554E57,  // 'SUNW'
326     cmsSigSGI                               = $53474920,  // 'SGI '
327     cmsSigTaligent                          = $54474E54,  // 'TGNT'
328     cmsSigUnices                            = $2A6E6978   // '*nix'   // From argyll -- Not official
329 );
330 
331 CONST
332 
333     // Reference gamut
334     cmsSigPerceptualReferenceMediumGamut         = $70726d67;  //'prmg'
335 
336     // For cmsSigColorimetricIntentImageStateTag
337     cmsSigSceneColorimetryEstimates              = $73636F65;  //'scoe'
338     cmsSigSceneAppearanceEstimates               = $73617065;  //'sape'
339     cmsSigFocalPlaneColorimetryEstimates         = $66706365;  //'fpce'
340     cmsSigReflectionHardcopyOriginalColorimetry  = $72686F63;  //'rhoc'
341     cmsSigReflectionPrintOutputColorimetry       = $72706F63;  //'rpoc'
342 
343 TYPE
344 
345 // Multi process elements types
346 cmsStageSignature = (
347     cmsSigCurveSetElemType              = $63767374,  //'cvst'
348     cmsSigMatrixElemType                = $6D617466,  //'matf'
349     cmsSigCLutElemType                  = $636C7574,  //'clut'
350 
351     cmsSigBAcsElemType                  = $62414353,  // 'bACS'
352     cmsSigEAcsElemType                  = $65414353,  // 'eACS'
353 
354     // Custom from here, not in the ICC Spec
355     cmsSigXYZ2LabElemType               = $6C327820,  // 'l2x '
356     cmsSigLab2XYZElemType               = $78326C20,  // 'x2l '
357     cmsSigNamedColorElemType            = $6E636C20,  // 'ncl '
358     cmsSigLabV2toV4                     = $32203420,  // '2 4 '
359     cmsSigLabV4toV2                     = $34203220,  // '4 2 '
360 
361     // Identities
362     cmsSigIdentityElemType              = $69646E20   // 'idn '
363 );
364 
365 // Types of CurveElements
366 cmsCurveSegSignature = (
367 
368     cmsSigFormulaCurveSeg               = $70617266, // 'parf'
369     cmsSigSampledCurveSeg               = $73616D66, // 'samf'
370     cmsSigSegmentedCurve                = $63757266  // 'curf'
371 );
372 
373 CONST
374 
375     // Used in ResponseCurveType
376     cmsSigStatusA                    = $53746141; //'StaA'
377     cmsSigStatusE                    = $53746145; //'StaE'
378     cmsSigStatusI                    = $53746149; //'StaI'
379     cmsSigStatusT                    = $53746154; //'StaT'
380     cmsSigStatusM                    = $5374614D; //'StaM'
381     cmsSigDN                         = $444E2020; //'DN  '
382     cmsSigDNP                        = $444E2050; //'DN P'
383     cmsSigDNN                        = $444E4E20; //'DNN '
384     cmsSigDNNP                       = $444E4E50; //'DNNP'
385 
386     // Device attributes, currently defined values correspond to the low 4 bytes
387     // of the 8 byte attribute quantity
388     cmsReflective     = 0;
389     cmsTransparency   = 1;
390     cmsGlossy         = 0;
391     cmsMatte          = 2;
392 
393 TYPE
394 
395 // Common structures in ICC tags
396 cmsICCData = PACKED RECORD
397      len  :    cmsUInt32Number;
398      flag :    cmsUInt32Number;
399      data : Array [0..1] of cmsUInt8Number;
400     END;
401 
402 // ICC date time
403 cmsDateTimeNumber = PACKED RECORD
404     year:     cmsUInt16Number;
405     month:    cmsUInt16Number;
406     day:      cmsUInt16Number;
407     hours:    cmsUInt16Number;
408     minutes:  cmsUInt16Number;
409     seconds:  cmsUInt16Number;
410 END;
411 
412 // ICC XYZ
413 
414 cmsEncodedXYZNumber = PACKED RECORD
415       X: cmsS15Fixed16Number;
416       Y: cmsS15Fixed16Number;
417       Z: cmsS15Fixed16Number;
418 END;
419 
420 
421 // Profile ID as computed by MD5 algorithm
422 cmsProfileID = PACKED RECORD
423     CASE Integer OF
424     1: (ID8: Array[0..15] OF cmsUInt8Number);
425     2: (ID16: Array[0..7] OF cmsUInt16Number);
426     3: (ID32: Array[0..3] OF cmsUInt32Number);
427 END;
428 
429 
430 
431 // ----------------------------------------------------------------------------------------------
432 // ICC profile internal base types. Strictly, shouldn't be declared in this unit, but maybe
433 // somebody want to use this info for accessing profile header directly, so here it is.
434 
435 // Profile header -- it is 32-bit aligned, so no issues are expected on alignment
436 cmsICCHeader = PACKED RECORD
437          size:           cmsUInt32Number;          // Profile size in bytes
438          cmmId:          cmsSignature;             // CMM for this profile
439          version:        cmsUInt32Number;          // Format version number
440          deviceClass:    cmsProfileClassSignature; // Type of profile
441          colorSpace:     cmsColorSpaceSignature;   // Color space of data
442          pcs:            cmsColorSpaceSignature;   // PCS, XYZ or Lab only
443          date:           cmsDateTimeNumber;        // Date profile was created
444          magic:          cmsSignature;             // Magic Number to identify an ICC profile
445          platform:       cmsPlatformSignature;     // Primary Platform
446          flags:          cmsUInt32Number;          // Various bit settings
447          manufacturer:   cmsSignature;             // Device manufacturer
448          model:          cmsUInt32Number;          // Device model number
449          attributes:     cmsUInt64Number;          // Device attributes
450          renderingIntent:cmsUInt32Number;          // Rendering intent
451          illuminant:     cmsEncodedXYZNumber;      // Profile illuminant
452          creator:        cmsSignature;             // Profile creator
453          profileID:      cmsProfileID;             // Profile ID using MD5
454          reserved: array [0..27] of cmsInt8Number; // Reserved for future use
455 END;
456 
457 // ICC base tag
458 cmsTagBase = PACKED RECORD
459      sig:         cmsTagTypeSignature;
460      reserved:    array[0..3] of cmsInt8Number;
461 END;
462 
463 // A tag entry in directory
464 cmsTagEntry = PACKED RECORD
465     sig:    cmsTagSignature;   // The tag signature
466     offset: cmsUInt32Number;   // Start of tag
467     size:   cmsUInt32Number;   // Size in bytes
468 END;
469 
470 
471 cmsContext    = Pointer;              // Context identifier for multithreaded environments
472 cmsHANDLE     = Pointer;              // Generic handle
473 cmsHPROFILE   = Pointer;              // Opaque typedefs to hide internals
474 cmsHTRANSFORM = Pointer;
475 
476 
477 CONST
478 
479      cmsMAXCHANNELS  = 16;                // Maximum number of channels in ICC profiles
480 
481 // Format of pixel is defined by one cmsUInt32Number, using bit fields as follows
482 //
483 //            A O TTTTT U Y F P X S EEE CCCC BBB
484 //
485 //            A: Floating point -- With this flag we can differentiate 16 bits as float and as int
486 //            O: Optimized -- previous optimization already returns the final 8-bit value
487 //            T: Pixeltype
488 //            F: Flavor  0=MinIsBlack(Chocolate) 1=MinIsWhite(Vanilla)
489 //            P: Planar? 0=Chunky, 1=Planar
490 //            X: swap 16 bps endianness?
491 //            S: Do swap? ie, BGR, KYMC
492 //            E: Extra samples
493 //            C: Channels (Samples per pixel)
494 //            B: bytes per sample
495 //            Y: Swap first - changes ABGR to BGRA and KCMY to CMYK
496 
497     FUNCTION FLOAT_SH(a: cmsUInt32Number): cmsUInt32Number;
498     FUNCTION OPTIMIZED_SH(s: cmsUInt32Number): cmsUInt32Number;
499     FUNCTION COLORSPACE_SH(s: cmsUInt32Number):cmsUInt32Number;
500     FUNCTION SWAPFIRST_SH(s: cmsUInt32Number):cmsUInt32Number;
501     FUNCTION FLAVOR_SH(s: cmsUInt32Number):cmsUInt32Number;
502     FUNCTION PLANAR_SH(p: cmsUInt32Number):cmsUInt32Number;
503     FUNCTION ENDIAN16_SH(e: cmsUInt32Number):cmsUInt32Number;
504     FUNCTION DOSWAP_SH(e: cmsUInt32Number):cmsUInt32Number;
505     FUNCTION EXTRA_SH(e: cmsUInt32Number):cmsUInt32Number;
506     FUNCTION CHANNELS_SH(c: cmsUInt32Number):cmsUInt32Number;
507     FUNCTION BYTES_SH(b: cmsUInt32Number):cmsUInt32Number;
508 
509 
510     FUNCTION T_FLOAT(a: cmsUInt32Number): cmsUInt32Number;
511     FUNCTION T_OPTIMIZED(o: cmsUInt32Number): cmsUInt32Number;
512     FUNCTION T_COLORSPACE(s: cmsUInt32Number): cmsUInt32Number;
513     FUNCTION T_SWAPFIRST(s: cmsUInt32Number): cmsUInt32Number;
514     FUNCTION T_FLAVOR(s: cmsUInt32Number): cmsUInt32Number;
515     FUNCTION T_PLANAR(p: cmsUInt32Number): cmsUInt32Number;
516     FUNCTION T_ENDIAN16(e: cmsUInt32Number): cmsUInt32Number;
517     FUNCTION T_DOSWAP(e: cmsUInt32Number): cmsUInt32Number;
518     FUNCTION T_EXTRA(e: cmsUInt32Number): cmsUInt32Number;
519     FUNCTION T_CHANNELS(c: cmsUInt32Number): cmsUInt32Number;
520     FUNCTION T_BYTES(b: cmsUInt32Number): cmsUInt32Number;
521 
522 CONST
523 
524 
525 // Pixel types
526 
527     PT_ANY     =  0;    // Don't check colorspace
528                       // 1 & 2 are reserved
529     PT_GRAY    =  3;
530     PT_RGB     =  4;
531     PT_CMY     =  5;
532     PT_CMYK    =  6;
533     PT_YCbCr   =  7;
534     PT_YUV     =  8;      // Lu'v'
535     PT_XYZ     =  9;
536     PT_Lab     =  10;
537     PT_YUVK    =  11;     // Lu'v'K
538     PT_HSV     =  12;
539     PT_HLS     =  13;
540     PT_Yxy     =  14;
541 
542     PT_MCH1    =  15;
543     PT_MCH2    =  16;
544     PT_MCH3    =  17;
545     PT_MCH4    =  18;
546     PT_MCH5    =  19;
547     PT_MCH6    =  20;
548     PT_MCH7    =  21;
549     PT_MCH8    =  22;
550     PT_MCH9    =  23;
551     PT_MCH10   =  24;
552     PT_MCH11   =  25;
553     PT_MCH12   =  26;
554     PT_MCH13   =  27;
555     PT_MCH14   =  28;
556     PT_MCH15   =  29;
557 
558     PT_LabV2   =  30;     // Identical to PT_Lab, but using the V2 old encoding
559 
560 
561     // Format descriptors
562     TYPE_GRAY_8          = $030009;
563     TYPE_GRAY_8_REV      = $032009;
564     TYPE_GRAY_16         = $03000a;
565     TYPE_GRAY_16_REV     = $03200a;
566     TYPE_GRAY_16_SE      = $03080a;
567     TYPE_GRAYA_8         = $030089;
568     TYPE_GRAYA_16        = $03008a;
569     TYPE_GRAYA_16_SE     = $03088a;
570     TYPE_GRAYA_8_PLANAR  = $031089;
571     TYPE_GRAYA_16_PLANAR = $03108a;
572     TYPE_RGB_8           = $040019;
573     TYPE_RGB_8_PLANAR    = $041019;
574     TYPE_BGR_8           = $040419;
575     TYPE_BGR_8_PLANAR    = $041419;
576     TYPE_RGB_16          = $04001a;
577     TYPE_RGB_16_PLANAR   = $04101a;
578     TYPE_RGB_16_SE       = $04081a;
579     TYPE_BGR_16          = $04041a;
580     TYPE_BGR_16_PLANAR   = $04141a;
581     TYPE_BGR_16_SE       = $040c1a;
582     TYPE_RGBA_8          = $040099;
583     TYPE_RGBA_8_PLANAR   = $041099;
584     TYPE_ARGB_8_PLANAR   = $045099;
585     TYPE_ABGR_8_PLANAR   = $041499;
586     TYPE_BGRA_8_PLANAR   = $045499;
587     TYPE_RGBA_16         = $04009a;
588     TYPE_RGBA_16_PLANAR  = $04109a;
589     TYPE_RGBA_16_SE      = $04089a;
590     TYPE_ARGB_8          = $044099;
591     TYPE_ARGB_16         = $04409a;
592     TYPE_ABGR_8          = $040499;
593     TYPE_ABGR_16         = $04049a;
594     TYPE_ABGR_16_PLANAR  = $04149a;
595     TYPE_ABGR_16_SE      = $040c9a;
596     TYPE_BGRA_8          = $044499;
597     TYPE_BGRA_16         = $04449a;
598     TYPE_BGRA_16_SE      = $04489a;
599     TYPE_CMY_8           = $050019;
600     TYPE_CMY_8_PLANAR    = $051019;
601     TYPE_CMY_16          = $05001a;
602     TYPE_CMY_16_PLANAR   = $05101a;
603     TYPE_CMY_16_SE       = $05081a;
604     TYPE_CMYK_8          = $060021;
605     TYPE_CMYKA_8         = $0600a1;
606     TYPE_CMYK_8_REV      = $062021;
607     TYPE_YUVK_8          = $062021;
608     TYPE_CMYK_8_PLANAR   = $061021;
609     TYPE_CMYK_16         = $060022;
610     TYPE_CMYK_16_REV     = $062022;
611     TYPE_YUVK_16         = $062022;
612     TYPE_CMYK_16_PLANAR  = $061022;
613     TYPE_CMYK_16_SE      = $060822;
614     TYPE_KYMC_8          = $060421;
615     TYPE_KYMC_16         = $060422;
616     TYPE_KYMC_16_SE      = $060c22;
617     TYPE_KCMY_8          = $064021;
618     TYPE_KCMY_8_REV      = $066021;
619     TYPE_KCMY_16         = $064022;
620     TYPE_KCMY_16_REV     = $066022;
621     TYPE_KCMY_16_SE      = $064822;
622     TYPE_CMYK5_8         = $130029;
623     TYPE_CMYK5_16        = $13002a;
624     TYPE_CMYK5_16_SE     = $13082a;
625     TYPE_KYMC5_8         = $130429;
626     TYPE_KYMC5_16        = $13042a;
627     TYPE_KYMC5_16_SE     = $130c2a;
628     TYPE_CMYK6_8         = $140031;
629     TYPE_CMYK6_8_PLANAR  = $141031;
630     TYPE_CMYK6_16        = $140032;
631     TYPE_CMYK6_16_PLANAR = $141032;
632     TYPE_CMYK6_16_SE     = $140832;
633     TYPE_CMYK7_8         = $150039;
634     TYPE_CMYK7_16        = $15003a;
635     TYPE_CMYK7_16_SE     = $15083a;
636     TYPE_KYMC7_8         = $150439;
637     TYPE_KYMC7_16        = $15043a;
638     TYPE_KYMC7_16_SE     = $150c3a;
639     TYPE_CMYK8_8         = $160041;
640     TYPE_CMYK8_16        = $160042;
641     TYPE_CMYK8_16_SE     = $160842;
642     TYPE_KYMC8_8         = $160441;
643     TYPE_KYMC8_16        = $160442;
644     TYPE_KYMC8_16_SE     = $160c42;
645     TYPE_CMYK9_8         = $170049;
646     TYPE_CMYK9_16        = $17004a;
647     TYPE_CMYK9_16_SE     = $17084a;
648     TYPE_KYMC9_8         = $170449;
649     TYPE_KYMC9_16        = $17044a;
650     TYPE_KYMC9_16_SE     = $170c4a;
651     TYPE_CMYK10_8        = $180051;
652     TYPE_CMYK10_16       = $180052;
653     TYPE_CMYK10_16_SE    = $180852;
654     TYPE_KYMC10_8        = $180451;
655     TYPE_KYMC10_16       = $180452;
656     TYPE_KYMC10_16_SE    = $180c52;
657     TYPE_CMYK11_8        = $190059;
658     TYPE_CMYK11_16       = $19005a;
659     TYPE_CMYK11_16_SE    = $19085a;
660     TYPE_KYMC11_8        = $190459;
661     TYPE_KYMC11_16       = $19045a;
662     TYPE_KYMC11_16_SE    = $190c5a;
663     TYPE_CMYK12_8        = $1a0061;
664     TYPE_CMYK12_16       = $1a0062;
665     TYPE_CMYK12_16_SE    = $1a0862;
666     TYPE_KYMC12_8        = $1a0461;
667     TYPE_KYMC12_16       = $1a0462;
668     TYPE_KYMC12_16_SE    = $1a0c62;
669     TYPE_XYZ_16          = $09001a;
670     TYPE_Lab_8           = $0a0019;
671     TYPE_ALab_8          = $0a0499;
672     TYPE_Lab_16          = $0a001a;
673     TYPE_Yxy_16          = $0e001a;
674     TYPE_YCbCr_8         = $070019;
675     TYPE_YCbCr_8_PLANAR  = $071019;
676     TYPE_YCbCr_16        = $07001a;
677     TYPE_YCbCr_16_PLANAR = $07101a;
678     TYPE_YCbCr_16_SE     = $07081a;
679     TYPE_YUV_8           = $080019;
680     TYPE_YUV_8_PLANAR    = $081019;
681     TYPE_YUV_16          = $08001a;
682     TYPE_YUV_16_PLANAR   = $08101a;
683     TYPE_YUV_16_SE       = $08081a;
684     TYPE_HLS_8           = $0d0019;
685     TYPE_HLS_8_PLANAR    = $0d1019;
686     TYPE_HLS_16          = $0d001a;
687     TYPE_HLS_16_PLANAR   = $0d101a;
688     TYPE_HLS_16_SE       = $0d081a;
689     TYPE_HSV_8           = $0c0019;
690     TYPE_HSV_8_PLANAR    = $0c1019;
691     TYPE_HSV_16          = $0c001a;
692     TYPE_HSV_16_PLANAR   = $0c101a;
693     TYPE_HSV_16_SE       = $0c081a;
694 
695     TYPE_NAMED_COLOR_INDEX = $000A;
696 
697     TYPE_XYZ_FLT         = $49001c;
698     TYPE_Lab_FLT         = $4a001c;
699     TYPE_GRAY_FLT        = $43000c;
700     TYPE_RGB_FLT         = $44001c;
701     TYPE_CMYK_FLT        = $460024;
702     TYPE_XYZA_FLT        = $49009c;
703     TYPE_LabA_FLT        = $4a009c;
704     TYPE_RGBA_FLT        = $44009c;
705 
706     TYPE_XYZ_DBL         = $490018;
707     TYPE_Lab_DBL         = $4a0018;
708     TYPE_GRAY_DBL        = $430008;
709     TYPE_RGB_DBL         = $440018;
710     TYPE_CMYK_DBL        = $460020;
711     TYPE_LabV2_8         = $1e0019;
712     TYPE_ALabV2_8        = $1e0499;
713     TYPE_LabV2_16        = $1e001a;
714 
715     TYPE_GRAY_HALF_FLT   = $43000a;
716     TYPE_RGB_HALF_FLT    = $44001a;
717     TYPE_RGBA_HALF_FLT   = $44009a;
718     TYPE_CMYK_HALF_FLT   = $460022;
719 
720     TYPE_ARGB_HALF_FLT   = $44409a;
721     TYPE_BGR_HALF_FLT    = $44041a;
722     TYPE_BGRA_HALF_FLT   = $44449a;
723     TYPE_ABGR_HALF_FLT   = $44041a;
724 
725 TYPE
726 
727 
728   // Colorimetric spaces
729 
730       cmsCIEXYZ = PACKED RECORD
731                         X, Y, Z : cmsFloat64Number;
732                     END;
733       LPcmsCIEXYZ = ^cmsCIEXYZ;
734 
735       cmsCIExyY = PACKED RECORD
736                         x, y, YY : cmsFloat64Number
737                         END;
738       LPcmsCIExyY = ^cmsCIEXYY;
739 
740       cmsCIELab = PACKED RECORD
741                   L, a, b: cmsFloat64Number
742                   END;
743       LPcmsCIELab = ^cmsCIELab;
744 
745      cmsCIELCh = PACKED RECORD
746                   L, C, h : cmsFloat64Number
747                   END;
748      LPcmsCIELCh = ^cmsCIELCh;
749 
750      cmsJCh = PACKED RECORD
751                   J, C, h : cmsFloat64Number
752                   END;
753      LPcmsJCh = ^cmsJCH;
754 
755 
756      cmsCIEXYZTRIPLE = PACKED RECORD
757                         Red, Green, Blue : cmsCIEXYZ
758                         END;
759      LPcmsCIEXYZTRIPLE = ^cmsCIEXYZTRIPLE;
760 
761 
762       cmsCIExyYTRIPLE = PACKED RECORD
763                         Red, Green, Blue : cmsCIExyY
764                         END;
765       LPcmsCIExyYTRIPLE = ^cmsCIExyYTRIPLE;
766 
767 
768 CONST
769 
770     // Illuminant types for structs below
771     cmsILLUMINANT_TYPE_UNKNOWN = $0000000;
772     cmsILLUMINANT_TYPE_D50     = $0000001;
773     cmsILLUMINANT_TYPE_D65     = $0000002;
774     cmsILLUMINANT_TYPE_D93     = $0000003;
775     cmsILLUMINANT_TYPE_F2      = $0000004;
776     cmsILLUMINANT_TYPE_D55     = $0000005;
777     cmsILLUMINANT_TYPE_A       = $0000006;
778     cmsILLUMINANT_TYPE_E       = $0000007;
779     cmsILLUMINANT_TYPE_F8      = $0000008;
780 
781 TYPE
782 
783     cmsICCMeasurementConditions = PACKED RECORD
784 
785         Observer: cmsUInt32Number;       // 0 = unknown, 1=CIE 1931, 2=CIE 1964
786         Backing:  cmsCIEXYZ;             // Value of backing
787         Geometry: cmsUInt32Number;       // 0=unknown, 1=45/0, 0/45 2=0d, d/0
788         Flare:    cmsFloat64Number;      // 0..1.0
789         IlluminantType: cmsUInt32Number;
790 
791     END;
792 
793    cmsICCViewingConditions = PACKED RECORD
794         IlluminantXYZ: cmsCIEXYZ;         // Not the same struct as CAM02,
795         SurroundXYZ: cmsCIEXYZ;           // This is for storing the tag
796         IlluminantType: cmsUInt32Number;  // viewing condition
797     END;
798 
799 
800 // Context   --------------------------------------------------------------------------------------------------------------
801 
cmsCreateContextnull802 FUNCTION  cmsCreateContext(Plugin : Pointer; UserData : Pointer) : cmsContext; StdCall;
803 PROCEDURE cmsDeleteContext(ContextID: cmsContext); StdCall;
cmsDupContextnull804 FUNCTION  cmsDupContext(ContextID: cmsContext; NewUserData: Pointer): cmsContext; StdCall;
cmsGetContextUserDatanull805 FUNCTION  cmsGetContextUserData(ContextID: cmsContext): Pointer;  StdCall;
806 
807 // Plug-In registering  ---------------------------------------------------------------------------------------------------
808 
cmsPluginnull809 FUNCTION  cmsPlugin(Plugin: Pointer): cmsBool; StdCall;
810 PROCEDURE cmsUnregisterPlugins; StdCall;
811 
812 // Error logging ----------------------------------------------------------------------------------------------------------
813 
failsnull814 // There is no error handling at all. When a function fails, it returns proper value.
815 // For example, all create functions does return NULL on failure. Other may return FALSE.
816 // It may be interesting, for the developer, to know why the function is failing.
817 // for that reason, lcms2 does offer a logging function. This function will get
818 // an ENGLISH string with some clues on what is going wrong. You can show this
819 // info to the end user if you wish, or just create some sort of log on disk.
820 // The logging function should NOT terminate the program, as this obviously can leave
821 // unfreed resources. It is the programmer's responsibility to check each function
822 // return code to make sure it didn't fail.
823 
824 CONST
825 
826     cmsERROR_UNDEFINED                  =  0;
827     cmsERROR_FILE                       =  1;
828     cmsERROR_RANGE                      =  2;
829     cmsERROR_INTERNAL                   =  3;
830     cmsERROR_NULL                       =  4;
831     cmsERROR_READ                       =  5;
832     cmsERROR_SEEK                       =  6;
833     cmsERROR_WRITE                      =  7;
834     cmsERROR_UNKNOWN_EXTENSION          =  8;
835     cmsERROR_COLORSPACE_CHECK           =  9;
836     cmsERROR_ALREADY_DEFINED            =  10;
837     cmsERROR_BAD_SIGNATURE              =  11;
838     cmsERROR_CORRUPTION_DETECTED        =  12;
839     cmsERROR_NOT_SUITABLE               =  13;
840 
841 // Error logger is called with the ContextID when a message is raised. This gives the
842 // chance to know which thread is responsible of the warning and any environment associated
843 // with it. Non-multithreading applications may safely ignore this parameter.
844 // Note that under certain special circumstances, ContextID may be NULL.
845 
846 TYPE
847 
848     cmsLogErrorHandlerFunction = PROCEDURE( ContextID: cmsContext; ErrorCode: cmsUInt32Number; Text: PAnsiChar); CDecl;
849 
850     // Allows user to set any specific logger
851     PROCEDURE cmsSetLogErrorHandler(Fn: cmsLogErrorHandlerFunction); StdCall;
852 
853 
854 // Conversions --------------------------------------------------------------------------------------------------------------
855 
856 
857 // Returns pointers to constant structs
cmsD50_XYZnull858 FUNCTION cmsD50_XYZ: LPcmsCIEXYZ; StdCall;
cmsD50_xyYnull859 FUNCTION cmsD50_xyY: LPcmsCIExyY; StdCall;
860 
861 // Colorimetric space conversions
862 PROCEDURE cmsXYZ2xyY(Dest: LPcmsCIExyY; Source: LPcmsCIEXYZ); StdCall;
863 PROCEDURE cmsxyY2XYZ(Dest: LPcmsCIEXYZ; Source: LPcmsCIExyY); StdCall;
864 PROCEDURE cmsLab2XYZ(WhitePoint: LPcmsCIEXYZ; xyz: LPcmsCIEXYZ; Lab: LPcmsCIELab); StdCall;
865 PROCEDURE cmsXYZ2Lab(WhitePoint: LPcmsCIEXYZ; Lab: LPcmsCIELab; xyz: LPcmsCIEXYZ); StdCall;
866 PROCEDURE cmsLab2LCh(LCh: LPcmsCIELCh; Lab: LPcmsCIELab); StdCall;
867 PROCEDURE cmsLCh2Lab(Lab: LPcmsCIELab; LCh: LPcmsCIELCh); StdCall;
868 
869 // Encoding /Decoding on PCS
870 PROCEDURE cmsLabEncoded2Float(Lab: LPcmsCIELab; wLab: Pointer); StdCall;
871 PROCEDURE cmsLabEncoded2FloatV2(Lab: LPcmsCIELab; wLab: Pointer); StdCall;
872 PROCEDURE cmsFloat2LabEncoded(wLab: Pointer; Lab: LPcmsCIELab); StdCall;
873 PROCEDURE cmsFloat2LabEncodedV2(wLab: Pointer; Lab: LPcmsCIELab); StdCall;
874 PROCEDURE cmsXYZEncoded2Float(fxyz : LPcmsCIEXYZ; XYZ: Pointer); StdCall;
875 PROCEDURE cmsFloat2XYZEncoded(XYZ: Pointer; fXYZ: LPcmsCIEXYZ); StdCall;
876 
877 
878 // DeltaE metrics
cmsDeltaEnull879 FUNCTION cmsDeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
cmsCIE94DeltaEnull880 FUNCTION cmsCIE94DeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
cmsBFDdeltaEnull881 FUNCTION cmsBFDdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
cmsCMCdeltaEnull882 FUNCTION cmsCMCdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
cmsCIE2000DeltaEnull883 FUNCTION cmsCIE2000DeltaE(Lab1, Lab2: LPcmsCIELab; Kl, Kc, Kh: Double): Double; StdCall;
884 
885 
886 // Temperature <-> Chromaticity (Black body)
cmsWhitePointFromTempnull887 FUNCTION  cmsWhitePointFromTemp(var WhitePoint: cmsCIExyY; TempK: cmsFloat64Number) : cmsBool; StdCall;
cmsTempFromWhitePointnull888 FUNCTION  cmsTempFromWhitePoint(var TeampK: cmsFloat64Number; var WhitePoint: cmsCIExyY) : cmsBool; StdCall;
889 
890 
891 // Chromatic adaptation
cmsAdaptToIlluminantnull892 FUNCTION cmsAdaptToIlluminant(Result: LPcmsCIEXYZ; SourceWhitePt: LPcmsCIEXYZ;
893                               Illuminant: LPcmsCIEXYZ; Value: LPcmsCIEXYZ): cmsBool; StdCall;
894 
895 
896 // CIECAM02 ---------------------------------------------------------------------------------------------------
897 
898 // Viewing conditions. Please note those are CAM model viewing conditions, and not the ICC tag viewing
899 // conditions, which I'm naming cmsICCViewingConditions to make differences evident. Unfortunately, the tag
900 // cannot deal with surround La, Yb and D value so is basically useless to store CAM02 viewing conditions.
901 
902  CONST
903 
904     AVG_SURROUND       = 1;
905     DIM_SURROUND       = 2;
906     DARK_SURROUND      = 3;
907     CUTSHEET_SURROUND  = 4;
908 
909     D_CALCULATE        = -1;
910 
911   TYPE
912 
913     cmsViewingConditions = PACKED RECORD
914 
915                 WhitePoint: cmsCIEXYZ;
916                 Yb        : cmsFloat64Number;
917                 La        : cmsFloat64Number;
918                 surround  : Integer;
919                 D_value   : cmsFloat64Number
920               END;
921 
922 
923     LPcmsViewingConditions = ^cmsViewingConditions;
924 
925 FUNCTION    cmsCIECAM02Init(pVC : LPcmsViewingConditions ) : Pointer; StdCall;
926 PROCEDURE   cmsCIECAM02Done(hModel : Pointer); StdCall;
927 PROCEDURE   cmsCIECAM02Forward(hModel: Pointer; pIn: LPcmsCIEXYZ; pOut: LPcmsJCh ); StdCall;
928 PROCEDURE   cmsCIECAM02Reverse(hModel: Pointer; pIn: LPcmsJCh;   pOut: LPcmsCIEXYZ ); StdCall;
929 
930 // Tone curves -----------------------------------------------------------------------------------------
931 
932 // This describes a curve segment. For a table of supported types, see the manual. User can increase the number of
933 // available types by using a proper plug-in. Parametric segments allow 10 parameters at most
934 
935 TYPE
936 cmsCurveSegment = PACKED RECORD
937        x0, x1: cmsFloat32Number;                       // Domain; for x0 < x <= x1
938          PType: cmsInt32Number;                        // Parametric type, Type == 0 means sampled segment. Negative values are reserved
939        Params: array [0..9] of cmsFloat64Number;       // Parameters if Type != 0
940     nGridPoints: cmsUInt32Number;                      // Number of grid points if Type == 0
941     SampledPoints: LPcmsFloat32Number;                 // Points to an array of floats if Type == 0
942 END;
943 
944 LPcmsToneCurve = Pointer;
945 LPcmsCurveSegmentArray = ^cmsCurveSegmentArray;
946 cmsCurveSegmentArray = array[0..0] of cmsCurveSegment;
947 
948 LPcmsFloat64NumberArray = ^cmsFloat64NumberArray;
949 cmsFloat64NumberArray = array[0..0] of cmsFloat64Number;
950 
951 LPcmsUInt16NumberArray = ^cmsUInt16NumberArray;
952 cmsUInt16NumberArray = array[0..0] of cmsUInt16Number;
953 
954 LPcmsFloat32NumberArray = ^cmsFloat32NumberArray;
955 cmsFloat32NumberArray = array[0..0] of cmsFloat32Number;
956 
957 LPLPcmsToneCurveArray = ^LPcmsToneCurveArray;
958 LPcmsToneCurveArray = array[0..0] of LPcmsToneCurve;
959 
960 LPcmsUInt32NumberArray = ^cmsUInt32NumberArray;
961 cmsUInt32NumberArray = array[0..0] of cmsUInt32Number;
962 
963 FUNCTION  cmsBuildSegmentedToneCurve(ContextID: cmsContext; nSegments: cmsInt32Number; Segments: LPcmsCurveSegmentArray): LPcmsToneCurve; StdCall;
964 FUNCTION  cmsBuildParametricToneCurve(ContextID: cmsContext;  CType: cmsInt32Number; Params: LPcmsFloat64NumberArray): LPcmsToneCurve; StdCall;
965 FUNCTION  cmsBuildGamma(ContextID: cmsContext; Gamma: cmsFloat64Number): LPcmsToneCurve; StdCall;
966 FUNCTION  cmsBuildTabulatedToneCurve16(ContextID: cmsContext; nEntries: cmsInt32Number; values: LPcmsUInt16NumberArray): LPcmsToneCurve; StdCall;
967 FUNCTION  cmsBuildTabulatedToneCurveFloat(ContextID: cmsContext; nEntries: cmsUInt32Number; values: LPcmsFloat32NumberArray): LPcmsToneCurve; StdCall;
968 PROCEDURE cmsFreeToneCurve(Curve: LPcmsToneCurve); StdCall;
969 PROCEDURE cmsFreeToneCurveTriple(Curve: LPLPcmsToneCurveArray); StdCall;
970 FUNCTION  cmsDupToneCurve(Src: LPcmsToneCurve): LPcmsToneCurve; StdCall;
971 FUNCTION  cmsReverseToneCurve(InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall;
972 FUNCTION  cmsReverseToneCurveEx(nResultSamples: cmsInt32Number; InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall;
973 FUNCTION  cmsJoinToneCurve(ContextID: cmsContext; X, Y: LPcmsToneCurve; nPoints: cmsUInt32Number ): LPcmsToneCurve; StdCall;
974 FUNCTION  cmsSmoothToneCurve(Tab: LPcmsToneCurve; lambda: cmsFloat64Number): cmsBool; StdCall;
975 FUNCTION  cmsEvalToneCurveFloat(Curve: LPcmsToneCurve; v: cmsFloat32Number):cmsFloat32Number; StdCall;
976 FUNCTION  cmsEvalToneCurve16(Curve: LPcmsToneCurve; v:cmsUInt16Number):cmsUInt16Number; StdCall;
977 FUNCTION  cmsIsToneCurveMultisegment(InGamma: LPcmsToneCurve):cmsBool; StdCall;
978 FUNCTION  cmsIsToneCurveLinear(Curve: LPcmsToneCurve):cmsBool; StdCall;
979 FUNCTION  cmsIsToneCurveMonotonic(t: LPcmsToneCurve):cmsBool; StdCall;
980 FUNCTION  cmsIsToneCurveDescending(t: LPcmsToneCurve):cmsBool; StdCall;
981 FUNCTION  cmsGetToneCurveParametricType(t: LPcmsToneCurve):cmsInt32Number; StdCall;
982 FUNCTION  cmsEstimateGamma(t: LPcmsToneCurve; Precision:cmsFloat64Number):cmsFloat64Number; StdCall;
983 FUNCTION  cmsGetToneCurveEstimatedTableEntries(t: LPcmsToneCurve): cmsUInt32Number; StdCall;
984 FUNCTION  cmsGetToneCurveEstimatedTable(t: LPcmsToneCurve): LPcmsUInt16Number; StdCall;
985 
986 
987 // Implements pipelines of multi-processing elements -------------------------------------------------------------
988 
989 TYPE
990     LPcmsPipeline = Pointer;
991     LPcmsStage    = Pointer;
992     LPLPcmsStage   = ^LPcmsStage;
993 
994 // Those are hi-level pipelines
995 FUNCTION  cmsPipelineAlloc(ContextID: cmsContext; InputChannels, OutputChannels: cmsUInt32Number): LPcmsPipeline; StdCall;
996 PROCEDURE cmsPipelineFree(lut: LPcmsPipeline); StdCall;
997 FUNCTION  cmsPipelineDup(Orig: LPcmsPipeline): LPcmsPipeline; StdCall;
998 FUNCTION  cmsGetPipelineContextID(lut: LPcmsPipeline) : cmsContext; StdCall;
999 FUNCTION  cmsPipelineInputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall;
1000 FUNCTION  cmsPipelineOutputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall;
1001 
1002 FUNCTION cmsPipelineStageCount(lut: LPcmsPipeline): cmsUInt32Number; StdCall;
1003 FUNCTION cmsPipelineGetPtrToFirstStage(lut: LPcmsPipeline): LPcmsStage; StdCall;
1004 FUNCTION cmsPipelineGetPtrToLastStage(lut: LPcmsPipeline): LPcmsStage; StdCall;
1005 
1006 PROCEDURE cmsPipelineEval16(Inv, Outv: LPcmsUInt16NumberArray; lut: LPcmsPipeline); StdCall;
1007 PROCEDURE cmsPipelineEvalFloat(Inv, Outv: LPcmsFloat32NumberArray; lut: LPcmsPipeline); StdCall;
1008 
1009 FUNCTION cmsPipelineEvalReverseFloat(Target, Result, Hint: LPcmsFloat32NumberArray; lut: LPcmsPipeline): cmsBool; StdCall;
1010 FUNCTION cmsPipelineCat(l1, l2: LPcmsPipeline): cmsBool; StdCall;
1011 FUNCTION cmsPipelineSetSaveAs8bitsFlag(lut: LPcmsPipeline; On: cmsBool): cmsBool; StdCall;
1012 
1013 // Where to place/locate the stages in the pipeline chain
1014 TYPE
1015     cmsStageLoc = (cmsAT_BEGIN = 0, cmsAT_END = 1 );
1016 
1017 PROCEDURE cmsPipelineInsertStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPcmsStage); StdCall;
1018 PROCEDURE cmsPipelineUnlinkStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPLPcmsStage); StdCall;
1019 
1020 // This function is quite useful to analyze the structure of a Pipeline and retrieve the Stage elements
1021 // that conform the Pipeline. It should be called with the Pipeline, the number of expected elements and
1022 // then a list of expected types followed with a list of double pointers to Stage elements. If
1023 // the function founds a match with current pipeline, it fills the pointers and returns TRUE
1024 // if not, returns FALSE without touching anything.
1025 // FUNCTION cmsPipelineCheckAndRetreiveStages(const cmsPipeline* Lut, n: cmsUInt32Number, ...): cmsBool; StdCall;
1026 
1027 // Matrix has double precision and CLUT has only float precision. That is because an ICC profile can encode
1028 // matrices with far more precision that CLUTS
1029 FUNCTION  cmsStageAllocIdentity(ContextID: cmsContext; nChannels: cmsUInt32Number): LPcmsStage; StdCall;
1030 FUNCTION  cmsStageAllocToneCurves(ContextID: cmsContext; nChannels: cmsUInt32Number; Curves: LPLPcmsToneCurveArray): LPcmsStage; StdCall;
1031 FUNCTION  cmsStageAllocMatrix(ContextID: cmsContext; Rows, Cols: cmsUInt32Number; Matrix, Offset: LPcmsFloat64NumberArray): LPcmsStage; StdCall;
1032 
1033 FUNCTION  cmsStageAllocCLut16bit(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall;
1034 FUNCTION  cmsStageAllocCLutFloat(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall;
1035 
1036 FUNCTION  cmsStageAllocCLut16bitGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall;
1037 FUNCTION  cmsStageAllocCLutFloatGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall;
1038 
1039 
1040 FUNCTION  cmsStageDup(mpe: LPcmsStage): LPcmsStage; StdCall;
1041 PROCEDURE cmsStageFree(mpe: LPcmsStage); StdCall;
1042 FUNCTION  cmsStageNext(mpe: LPcmsStage): LPcmsStage; StdCall;
1043 
1044 FUNCTION cmsStageInputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall;
1045 FUNCTION cmsStageOutputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall;
1046 FUNCTION cmsStageType(mpe: LPcmsStage): cmsStageSignature; StdCall;
1047 FUNCTION cmsStageData(mpe: LPcmsStage): Pointer; StdCall;
1048 
1049 // Sampling
1050 
1051 Type
1052     cmsSAMPLER16    = FUNCTION (Inp, Outp: LPcmsUInt16NumberArray; Cargo: Pointer): cmsInt32Number; CDecl;
1053     cmsSAMPLERFLOAT = FUNCTION (Inp, Outp: LPcmsFloat32NumberArray; Cargo: Pointer): cmsInt32Number; CDecl;
1054 
1055 // Use this flag to prevent changes being written to destination
1056 
1057 Const
1058 
1059 SAMPLER_INSPECT     = $01000000;
1060 
1061 
1062 // For CLUT only
1063 FUNCTION cmsStageSampleCLut16bit(mpe: LPcmsStage;  Sampler: cmsSAMPLER16;    Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall;
1064 FUNCTION cmsStageSampleCLutFloat(mpe: LPcmsStage;  Sampler: cmsSAMPLERFLOAT; Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall;
1065 
1066 
1067 // Slicers
1068 FUNCTION  cmsSliceSpace16(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray;
1069                                                    Sampler: cmsSAMPLER16; Cargo: Pointer): cmsBool; StdCall;
1070 
1071 FUNCTION cmsSliceSpaceFloat(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray;
1072                                                    Sampler: cmsSAMPLERFLOAT; Cargo: Pointer): cmsBool; StdCall;
1073 
1074 // Multilocalized Unicode management ---------------------------------------------------------------------------------------
1075 
1076 Type
1077    LPcmsMLU = Pointer;
1078 
1079 Const
1080 
1081 cmsNoLanguage = #0#0#0;
1082 cmsNoCountry  = #0#0#0;
1083 
1084 
1085 FUNCTION  cmsMLUalloc(ContextID: cmsContext; nItems: cmsUInt32Number): LPcmsMLU; StdCall;
1086 PROCEDURE cmsMLUfree(mlu: LPcmsMLU); StdCall;
1087 FUNCTION  cmsMLUdup(mlu: LPcmsMLU): LPcmsMLU; StdCall;
1088 
1089 FUNCTION  cmsMLUsetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode, ASCIIString: PAnsiChar): cmsBool; StdCall;
1090 FUNCTION  cmsMLUsetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; WideString: PWChar): cmsBool; StdCall;
1091 
1092 FUNCTION cmsMLUgetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall;
1093 
1094 FUNCTION cmsMLUgetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall;
1095 
1096 FUNCTION cmsMLUgetTranslation(mlu: LPcmsMLU; LanguageCode, CountryCode, ObtainedLanguage, ObtainedCountry: PAnsiChar): cmsBool; StdCall;
1097 
1098 // Undercolorremoval & black generation -------------------------------------------------------------------------------------
1099 
1100 Type
1101 
1102 cmsUcrBg = PACKED RECORD
1103             Ucr, Bg: LPcmsToneCurve;
1104             Desc: LPcmsMLU;
1105             END;
1106 
1107 
1108 // Screening ----------------------------------------------------------------------------------------------------------------
1109 
1110 Const
1111 
1112  cmsPRINTER_DEFAULT_SCREENS    = $0001;
1113  cmsFREQUENCE_UNITS_LINES_CM   = $0000;
1114  cmsFREQUENCE_UNITS_LINES_INCH = $0002;
1115 
1116  cmsSPOT_UNKNOWN         = 0;
1117  cmsSPOT_PRINTER_DEFAULT = 1;
1118  cmsSPOT_ROUND           = 2;
1119  cmsSPOT_DIAMOND         = 3;
1120  cmsSPOT_ELLIPSE         = 4;
1121  cmsSPOT_LINE            = 5;
1122  cmsSPOT_SQUARE          = 6;
1123  cmsSPOT_CROSS           = 7;
1124 
1125 
1126 Type
1127 
1128 cmsScreeningChannel = PACKED RECORD
1129 
1130       Frequency,
1131       ScreenAngle: cmsFloat64Number;
1132       SpotShape: cmsUInt32Number;
1133 
1134 END;
1135 
1136 cmsScreening = PACKED RECORD
1137 
1138     Flag,
1139     nChannels : cmsUInt32Number;
1140     Channels: Array [0..cmsMAXCHANNELS-1] OF cmsScreeningChannel;
1141 END;
1142 
1143 
1144 // Named color -----------------------------------------------------------------------------------------------------------------
1145 
1146 
1147 LPcmsNAMEDCOLORLIST = Pointer;
1148 
1149 FUNCTION cmsAllocNamedColorList(ContextID: cmsContext; n, ColorantCount :cmsUInt32Number;
1150                                                            Prefix, Suffix: PAnsiChar): LPcmsNAMEDCOLORLIST; StdCall;
1151 
1152 PROCEDURE cmsFreeNamedColorList(v: LPcmsNAMEDCOLORLIST); StdCall;
1153 FUNCTION  cmsDupNamedColorList(v: LPcmsNAMEDCOLORLIST): LPcmsNAMEDCOLORLIST; StdCall;
1154 FUNCTION  cmsAppendNamedColor(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar;
1155                                                              PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall;
1156 
1157 FUNCTION cmsNamedColorCount(v: LPcmsNAMEDCOLORLIST): cmsUInt32Number; StdCall;
1158 FUNCTION cmsNamedColorIndex(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar): cmsInt32Number; StdCall;
1159 
1160 FUNCTION cmsNamedColorInfo(v: LPcmsNAMEDCOLORLIST; nColor : cmsUInt32Number;
1161                                                       Name,Prefix, Suffix : PAnsiChar;
1162                                                        PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall;
1163 
1164 // Retrieve named color list from transform
1165 FUNCTION cmsGetNamedColorList(xform: cmsHTRANSFORM ): LPcmsNAMEDCOLORLIST; StdCall;
1166 
1167 // Profile sequence -----------------------------------------------------------------------------------------------------
1168 
1169 Type
1170 
1171 // Profile sequence descriptor. Some fields come from profile sequence descriptor tag, others
1172 // come from Profile Sequence Identifier Tag
1173 
1174 cmsPSEQDESC = PACKED RECORD
1175    deviceMfg, deviceModel: cmsSignature;
1176 
1177    attributes: cmsUInt64Number;
1178    technology: cmsTechnologySignature;
1179    ProfileID: cmsProfileID;
1180    Manufacturer,
1181    Model,
1182    Description : LPcmsMLU;
1183  END;
1184 
1185  LPcmsSEQDESC = ^cmsPSEQDESC;
1186 
1187 cmsSEQ = PACKED RECORD
1188 
1189     n: cmsUInt32Number;
1190     ContextID: cmsContext;
1191     seq: LPcmsSEQDESC;
1192 END;
1193 
1194 LPcmsSEQ = ^cmsSEQ;
1195 
1196 FUNCTION   cmsAllocProfileSequenceDescription(ContextID: cmsContext; n: cmsUInt32Number):LPcmsSEQ; StdCall;
1197 FUNCTION   cmsDupProfileSequenceDescription(pseq: LPcmsSEQ):LPcmsSEQ; StdCall;
1198 PROCEDURE  cmsFreeProfileSequenceDescription(pseq: LPcmsSEQ); StdCall;
1199 
1200 // Dictionaries --------------------------------------------------------------------------------------------------------
1201 
1202 TYPE
1203 
1204  LPcmsDICTentry = ^cmsDICTentry;
1205 
1206 cmsDICTentry = PACKED RECORD
1207 
1208     Next: LPcmsDICTentry;
1209 
1210     DisplayName, DisplayValue: LPcmsMLU;
1211     Name, Value : PWChar;
1212 END;
1213 
1214 FUNCTION  cmsDictAlloc(ContextID: cmsContext): cmsHANDLE; StdCall;
1215 PROCEDURE cmsDictFree(hDict: cmsHANDLE);  StdCall;
1216 FUNCTION  cmsDictDup(hDict: cmsHANDLE): cmsHANDLE;  StdCall;
1217 
1218 FUNCTION cmsDictAddEntry(hDict: cmsHANDLE; Name, Value: PWChar; DisplayName, DisplayValue : LPcmsMLU): cmsBool;  StdCall;
1219 FUNCTION cmsDictGetEntryList(hDict: cmsHANDLE): LPcmsDICTentry; StdCall;
1220 FUNCTION cmsDictNextEntry(e : LPcmsDICTentry): LPcmsDICTentry;  StdCall;
1221 
1222 // Access to Profile data ----------------------------------------------------------------------------------------------
1223 FUNCTION cmsCreateProfilePlaceholder(ContextID: cmsContext): cmsHPROFILE; StdCall;
1224 
1225 FUNCTION cmsGetProfileContextID(hProfile: cmsHPROFILE):cmsContext; StdCall;
1226 FUNCTION cmsGetTagCount(hProfile: cmsHPROFILE): cmsInt32Number; StdCall;
1227 FUNCTION cmsGetTagSignature(hProfile: cmsHPROFILE; n: cmsUInt32Number): cmsTagSignature; StdCall;
1228 FUNCTION cmsIsTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): cmsBool; StdCall;
1229 
1230 // Read and write pre-formatted data
1231 FUNCTION cmsReadTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): Pointer; StdCall;
1232 FUNCTION cmsWriteTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer): cmsBool; StdCall;
1233 FUNCTION cmsLinkTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; dest: cmsTagSignature): cmsBool; StdCall;
1234 FUNCTION cmsTagLinkedTo(hProfile: cmsHPROFILE; sig: cmsTagSignature):cmsTagSignature; StdCall;
1235 
1236 // Read and write raw data
1237 FUNCTION cmsReadRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; Buffer: Pointer; BufferSize: cmsUInt32Number): cmsInt32Number; StdCall;
1238 FUNCTION cmsWriteRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer; Size: cmsUInt32Number): cmsBool; StdCall;
1239 
1240 // Access header data
1241 Const
1242 
1243    cmsEmbeddedProfileFalse    = $00000000;
1244    cmsEmbeddedProfileTrue     = $00000001;
1245    cmsUseAnywhere             = $00000000;
1246    cmsUseWithEmbeddedDataOnly = $00000002;
1247 
1248 FUNCTION  cmsGetHeaderFlags(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall;
1249 PROCEDURE cmsGetHeaderAttributes(hProfile: cmsHPROFILE; Flags: LPcmsUInt64Number); StdCall;
1250 PROCEDURE cmsGetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall;
1251 
1252 // TODO:
1253 // FUNCTION  cmsGetHeaderCreationDateTime(hProfile: cmsHPROFILE; struct tm *Dest): cmsBool; StdCall;
1254 
1255 FUNCTION  cmsGetHeaderRenderingIntent(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall;
1256 PROCEDURE cmsSetHeaderFlags(hProfile: cmsHPROFILE; Flags: cmsUInt32Number); StdCall;
1257 FUNCTION  cmsGetHeaderManufacturer(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall;
1258 PROCEDURE cmsSetHeaderManufacturer(hProfile: cmsHPROFILE; manufacturer: cmsUInt32Number ); StdCall;
1259 FUNCTION  cmsGetHeaderModel(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall;
1260 PROCEDURE cmsSetHeaderModel(hProfile: cmsHPROFILE; model: cmsUInt32Number ); StdCall;
1261 PROCEDURE cmsSetHeaderAttributes(hProfile: cmsHPROFILE; Flags: cmsUInt64Number); StdCall;
1262 PROCEDURE cmsSetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall;
1263 PROCEDURE cmsSetHeaderRenderingIntent(hProfile: cmsHPROFILE; RenderingIntent: cmsUInt32Number ); StdCall;
1264 
1265 FUNCTION  cmsGetPCS(hProfile: cmsHPROFILE):cmsColorSpaceSignature; StdCall;
1266 PROCEDURE cmsSetPCS(hProfile: cmsHPROFILE; pcs: cmsColorSpaceSignature); StdCall;
1267 FUNCTION  cmsGetColorSpace(hProfile: cmsHPROFILE): cmsColorSpaceSignature; StdCall;
1268 PROCEDURE cmsSetColorSpace(hProfile: cmsHPROFILE; sig: cmsColorSpaceSignature); StdCall;
1269 FUNCTION  cmsGetDeviceClass(hProfile: cmsHPROFILE): cmsProfileClassSignature; StdCall;
1270 PROCEDURE cmsSetDeviceClass(hProfile: cmsHPROFILE; sig: cmsProfileClassSignature); StdCall;
1271 PROCEDURE cmsSetProfileVersion(hProfile: cmsHPROFILE; Version: cmsFloat64Number); StdCall;
1272 FUNCTION  cmsGetProfileVersion(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall;
1273 
1274 FUNCTION  cmsGetEncodedICCversion(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall;
1275 PROCEDURE cmsSetEncodedICCversion(hProfile: cmsHPROFILE; Version: cmsUInt32Number); StdCall;
1276 
1277 
1278 Const
1279 
1280     // How profiles may be used
1281     LCMS_USED_AS_INPUT     = 0;
1282     LCMS_USED_AS_OUTPUT    = 1;
1283     LCMS_USED_AS_PROOF     = 2;
1284 
1285 FUNCTION   cmsIsIntentSupported(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall;
1286 FUNCTION   cmsIsMatrixShaper(hProfile: cmsHPROFILE): cmsBool; StdCall;
1287 FUNCTION   cmsIsCLUT(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall;
1288 
1289 // Translate form/to our notation to ICC
1290 FUNCTION _cmsICCcolorSpace(OurNotation: Integer): cmsColorSpaceSignature; StdCall;
1291 FUNCTION _cmsLCMScolorSpace(ProfileSpace: cmsColorSpaceSignature): Integer; StdCall;
1292 
1293 FUNCTION cmsChannelsOf( ColorSpace: cmsColorSpaceSignature): cmsUInt32Number; StdCall;
1294 
1295 // Build a suitable formatter for the colorspace of this profile
1296 FUNCTION cmsFormatterForColorspaceOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall;
1297 FUNCTION cmsFormatterForPCSOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall;
1298 
1299 Type
1300 
1301 // Localized info
1302 cmsInfoType = (
1303              cmsInfoDescription  = 0,
1304              cmsInfoManufacturer = 1,
1305              cmsInfoModel        = 2,
1306              cmsInfoCopyright    = 3
1307 );
1308 
1309 FUNCTION cmsGetProfileInfo(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar;
1310                                                             Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall;
1311 
1312 FUNCTION cmsGetProfileInfoASCII(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar;
1313                                                             Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall;
1314 
1315 // IO handlers ----------------------------------------------------------------------------------------------------------
1316 
1317 Type
1318 
1319 LPcmsIOHANDLER = Pointer;
1320 
1321 FUNCTION cmsOpenIOhandlerFromFile(ContextID: cmsContext; FileName, AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall;
1322 // FUNCTION cmsOpenIOhandlerFromStream(ContextID: cmsContext; FILE* Stream): LPcmsIOHANDLER; StdCall;
1323 FUNCTION cmsOpenIOhandlerFromMem(ContextID: cmsContext; Buffer: Pointer; size: cmsUInt32Number; AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall;
1324 FUNCTION cmsOpenIOhandlerFromNULL(ContextID: cmsContext): LPcmsIOHANDLER; StdCall;
1325 FUNCTION cmsCloseIOhandler(io: LPcmsIOHANDLER): cmsBool; StdCall;
1326 
1327 // MD5 message digest --------------------------------------------------------------------------------------------------
1328 
1329 FUNCTION cmsMD5computeID(hProfile: cmsHPROFILE): cmsBool; StdCall;
1330 
1331 // Profile high level functions ------------------------------------------------------------------------------------------
1332 
1333 FUNCTION   cmsOpenProfileFromFile(ICCProfile : PAnsiChar; sAccess: PAnsiChar): cmsHPROFILE; StdCall;
1334 FUNCTION   cmsOpenProfileFromFileTHR(ContextID: cmsContext; ICCProfile, sAccess: PAnsiChar): cmsHPROFILE; StdCall;
1335 // FUNCTION      CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall;
1336 // FUNCTION      CMSEXPORT cmsOpenProfileFromStreamTHR(ContextID: cmsContext; FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall;
1337 FUNCTION   cmsOpenProfileFromMem(MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall;
1338 FUNCTION   cmsOpenProfileFromMemTHR(ContextID: cmsContext; MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall;
1339 FUNCTION   cmsOpenProfileFromIOhandlerTHR(ContextID: cmsContext; io: LPcmsIOHANDLER): cmsHPROFILE; StdCall;
1340 FUNCTION   cmsCloseProfile(hProfile: cmsHPROFILE): cmsBool; StdCall;
1341 
1342 FUNCTION   cmsSaveProfileToFile(hProfile: cmsHPROFILE; FileName: PAnsiChar): cmsBool; StdCall;
1343 // FUNCTION         CMSEXPORT cmsSaveProfileToStream(hProfile: cmsHPROFILE, FILE* Stream): cmsBool; StdCall;
1344 FUNCTION   cmsSaveProfileToMem(hProfile: cmsHPROFILE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall;
1345 FUNCTION   cmsSaveProfileToIOhandler(hProfile: cmsHPROFILE; io: LPcmsIOHANDLER):cmsUInt32Number; StdCall;
1346 
1347 // Predefined virtual profiles ------------------------------------------------------------------------------------------
1348 
1349 FUNCTION  cmsCreateRGBProfileTHR(ContextID: cmsContext;
1350                                                    WhitePoint: LPcmsCIExyY;
1351                                                    Primaries: LPcmsCIExyYTRIPLE;
1352                                                    TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall;
1353 
1354 FUNCTION  cmsCreateRGBProfile(WhitePoint: LPcmsCIExyY;
1355                                                    Primaries: LPcmsCIExyYTRIPLE;
1356                                                    TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall;
1357 
1358 FUNCTION cmsCreateGrayProfileTHR(ContextID: cmsContext;
1359                                                     WhitePoint: LPcmsCIExyY;
1360                                                     TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall;
1361 
1362 FUNCTION cmsCreateGrayProfile(WhitePoint: LPcmsCIExyY;
1363                                                      TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall;
1364 
1365 FUNCTION cmsCreateLinearizationDeviceLinkTHR(ContextID: cmsContext;
1366                                                                  ColorSpace: cmsColorSpaceSignature;
1367                                                                  TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall;
1368 
1369 FUNCTION cmsCreateLinearizationDeviceLink(ColorSpace: cmsColorSpaceSignature;
1370                                                                  TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall;
1371 
1372 FUNCTION cmsCreateInkLimitingDeviceLinkTHR(ContextID: cmsContext;
1373                                                               ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall;
1374 
1375 FUNCTION cmsCreateInkLimitingDeviceLink(ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall;
1376 
1377 
1378 FUNCTION cmsCreateLab2ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall;
1379 FUNCTION cmsCreateLab2Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall;
1380 FUNCTION cmsCreateLab4ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall;
1381 FUNCTION cmsCreateLab4Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall;
1382 
1383 FUNCTION cmsCreateXYZProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall;
1384 FUNCTION cmsCreateXYZProfile: cmsHPROFILE; StdCall;
1385 
1386 FUNCTION cmsCreate_sRGBProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall;
1387 FUNCTION cmsCreate_sRGBProfile: cmsHPROFILE; StdCall;
1388 
1389 FUNCTION cmsCreateBCHSWabstractProfileTHR(ContextID: cmsContext;
1390                                                              nLUTPoints: Integer;
1391                                                              Bright,
1392                                                              Contrast,
1393                                                              Hue,
1394                                                              Saturation: cmsFloat64Number;
1395                                                              TempSrc,
1396                                                              TempDest: Integer): cmsHPROFILE; StdCall;
1397 
1398 FUNCTION cmsCreateBCHSWabstractProfile(   nLUTPoints: Integer;
1399                                                              Bright,
1400                                                              Contrast,
1401                                                              Hue,
1402                                                              Saturation: cmsFloat64Number;
1403                                                              TempSrc,
1404                                                              TempDest: Integer): cmsHPROFILE; StdCall;
1405 
1406 FUNCTION  cmsCreateNULLProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall;
1407 FUNCTION  cmsCreateNULLProfile: cmsHPROFILE; StdCall;
1408 
1409 // Converts a transform to a devicelink profile
1410 FUNCTION  cmsTransform2DeviceLink(hTransform: cmsHTRANSFORM; Version: cmsFloat64Number; dwFlags: cmsUInt32Number): cmsHPROFILE; StdCall;
1411 
1412 // Intents ----------------------------------------------------------------------------------------------
1413 
1414 Const
1415 
1416 // ICC Intents
1417 INTENT_PERCEPTUAL                              = 0;
1418 INTENT_RELATIVE_COLORIMETRIC                   = 1;
1419 INTENT_SATURATION                              = 2;
1420 INTENT_ABSOLUTE_COLORIMETRIC                   = 3;
1421 
1422 // Non-ICC intents
1423 INTENT_PRESERVE_K_ONLY_PERCEPTUAL             = 10;
1424 INTENT_PRESERVE_K_ONLY_RELATIVE_COLORIMETRIC  = 11;
1425 INTENT_PRESERVE_K_ONLY_SATURATION             = 12;
1426 INTENT_PRESERVE_K_PLANE_PERCEPTUAL            = 13;
1427 INTENT_PRESERVE_K_PLANE_RELATIVE_COLORIMETRIC = 14;
1428 INTENT_PRESERVE_K_PLANE_SATURATION            = 15;
1429 
1430 Type
1431 LPPAnsiChar = ^PAnsiChar;
1432 
1433 // Call with NULL as parameters to get the intent count
1434 FUNCTION cmsGetSupportedIntents(nMax: cmsUInt32Number; Codes: LPcmsUInt32Number; Descriptions: LPPAnsiChar): cmsUInt32Number; StdCall;
1435 
1436 Const
1437 
1438 // Flags
1439 
1440 cmsFLAGS_NOCACHE                  = $0040;    // Inhibit 1-pixel cache
1441 cmsFLAGS_NOOPTIMIZE               = $0100;    // Inhibit optimizations
1442 cmsFLAGS_NULLTRANSFORM            = $0200;    // Don't transform anyway
1443 
1444 // Proofing flags
1445 cmsFLAGS_GAMUTCHECK               = $1000;    // Out of Gamut alarm
1446 cmsFLAGS_SOFTPROOFING             = $4000;    // Do softproofing
1447 
1448 // Misc
1449 cmsFLAGS_BLACKPOINTCOMPENSATION   = $2000;
1450 cmsFLAGS_NOWHITEONWHITEFIXUP      = $0004;    // Don't fix scum dot
1451 cmsFLAGS_HIGHRESPRECALC           = $0400;    // Use more memory to give better accuracy
1452 cmsFLAGS_LOWRESPRECALC            = $0800;    // Use less memory to minimize resouces
1453 
1454 // For devicelink creation
1455 cmsFLAGS_8BITS_DEVICELINK         = $0008;   // Create 8 bits devicelinks
1456 cmsFLAGS_GUESSDEVICECLASS         = $0020;   // Guess device class (for transform2devicelink)
1457 cmsFLAGS_KEEP_SEQUENCE            = $0080;   // Keep profile sequence for devicelink creation
1458 
1459 // Specific to a particular optimizations
1460 cmsFLAGS_FORCE_CLUT               = $0002;    // Force CLUT optimization
1461 cmsFLAGS_CLUT_POST_LINEARIZATION  = $0001;    // create postlinearization tables if possible
1462 cmsFLAGS_CLUT_PRE_LINEARIZATION   = $0010;    // create prelinearization tables if possible
1463 
1464 // CRD special
1465 cmsFLAGS_NODEFAULTRESOURCEDEF     = $01000000;
1466 
1467 // Fine-tune control over number of gridpoints
1468 FUNCTION cmsFLAGS_GRIDPOINTS(n: Integer): Integer;
1469 
1470 
1471 // Transforms ---------------------------------------------------------------------------------------------------
1472 
1473 type
1474   LPcmsHPROFILEArray = ^cmsHPROFILEArray;
1475   cmsHPROFILEArray = array[0..0] of cmsHPROFILE;
1476 
1477   LPcmsBoolArray = ^cmsBoolArray;
1478   cmsBoolArray = array[0..0] of cmsBool;
1479 
1480 FUNCTION   cmsCreateTransformTHR(ContextID: cmsContext;
1481                                                   Input: cmsHPROFILE;
1482                                                   InputFormat: cmsUInt32Number;
1483                                                   Output: cmsHPROFILE;
1484                                                   OutputFormat: cmsUInt32Number;
1485                                                   Intent: cmsUInt32Number;
1486                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
1487 
1488 FUNCTION   cmsCreateTransform(Input: cmsHPROFILE;
1489                                                   InputFormat: cmsUInt32Number;
1490                                                   Output: cmsHPROFILE;
1491                                                   OutputFormat: cmsUInt32Number;
1492                                                   Intent: cmsUInt32Number;
1493                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
1494 
1495 FUNCTION   cmsCreateProofingTransformTHR(ContextID: cmsContext;
1496                                                   Input: cmsHPROFILE;
1497                                                   InputFormat: cmsUInt32Number;
1498                                                   Output: cmsHPROFILE;
1499                                                   OutputFormat: cmsUInt32Number;
1500                                                   Proofing: cmsHPROFILE;
1501                                                   Intent: cmsUInt32Number;
1502                                                   ProofingIntent: cmsUInt32Number;
1503                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
1504 
1505 FUNCTION   cmsCreateProofingTransform(Input: cmsHPROFILE;
1506                                                   InputFormat: cmsUInt32Number;
1507                                                   Output: cmsHPROFILE;
1508                                                   OutputFormat: cmsUInt32Number;
1509                                                   Proofing: cmsHPROFILE;
1510                                                   Intent: cmsUInt32Number;
1511                                                   ProofingIntent: cmsUInt32Number;
1512                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
1513 
1514 FUNCTION   cmsCreateMultiprofileTransformTHR(ContextID: cmsContext;
1515                                                   hProfiles: LPcmsHPROFILEArray;
1516                                                   nProfiles: cmsUInt32Number;
1517                                                   InputFormat: cmsUInt32Number;
1518                                                   OutputFormat: cmsUInt32Number;
1519                                                   Intent: cmsUInt32Number;
1520                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
1521 
1522 
1523 FUNCTION   cmsCreateMultiprofileTransform( hProfiles: LPcmsHPROFILEArray;
1524                                                   nProfiles: cmsUInt32Number;
1525                                                   InputFormat: cmsUInt32Number;
1526                                                   OutputFormat: cmsUInt32Number;
1527                                                   Intent: cmsUInt32Number;
1528                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
1529 
1530 
1531 FUNCTION   cmsCreateExtendedTransform(ContextID: cmsContext;
1532                                                    nProfiles: cmsUInt32Number;
1533                                                    hProfiles: LPcmsHPROFILEArray;
1534                                                    BPC: LPcmsBoolArray;
1535                                                    Intents: LPcmsUInt32NumberArray;
1536                                                    AdaptationStates: LPcmsFloat64NumberArray;
1537                                                    hGamutProfile: cmsHPROFILE;
1538                                                    nGamutPCSposition: cmsUInt32Number;
1539                                                    InputFormat,
1540                                                    OutputFormat: cmsUInt32Number;
1541                                                    dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
1542 
1543 PROCEDURE  cmsDeleteTransform(hTransform: cmsHTRANSFORM); StdCall;
1544 
1545 PROCEDURE  cmsDoTransform(Transform: cmsHTRANSFORM; InputBuffer, OutputBuffer: Pointer; size: cmsUInt32Number);  StdCall;
1546 PROCEDURE  cmsDoTransformStride(Transform: cmsHTRANSFORM; InputBuffer, OutputBuffer: Pointer; size: cmsUInt32Number; stride: cmsUInt32Number);  StdCall;
1547 
1548 
1549 PROCEDURE  cmsSetAlarmCodes( NewAlarm: LPcmsUInt16NumberArray);  StdCall;
1550 PROCEDURE  cmsGetAlarmCodes(NewAlarm: LPcmsUInt16NumberArray); StdCall;
1551 
1552 // Adaptation state for absolute colorimetric intent
1553 FUNCTION  cmsSetAdaptationState(d: cmsFloat64Number):cmsFloat64Number; StdCall;
1554 
1555 // Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed
1556 FUNCTION  cmsGetTransformContextID(hTransform: cmsHTRANSFORM):cmsContext; StdCall;
1557 
1558 // For backwards compatibility
1559 FUNCTION  cmsChangeBuffersFormat(hTransform: cmsHTRANSFORM; InputFormat, OutputFormat: cmsUInt32Number): cmsBool; StdCall;
1560 
1561 
1562 
1563 // PostScript ColorRenderingDictionary and ColorSpaceArray ----------------------------------------------------
1564 
1565 Type
1566 
1567 cmsPSResourceType = (cmsPS_RESOURCE_CSA, cmsPS_RESOURCE_CRD ) ;
1568 
1569 // lcms2 unified method to access postscript color resources
1570 FUNCTION cmsGetPostScriptColorResource(ContextID: cmsContext;   RType: cmsPSResourceType;
1571                                                                 hProfile: cmsHPROFILE;
1572                                                                 Intent: cmsUInt32Number;
1573                                                                 dwFlags: cmsUInt32Number;
1574                                                                 io: LPcmsIOHANDLER): cmsUInt32Number; StdCall;
1575 
1576 FUNCTION cmsGetPostScriptCSA(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number ): cmsUInt32Number; StdCall;
1577 FUNCTION cmsGetPostScriptCRD(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number): cmsUInt32Number; StdCall;
1578 
1579 
1580 // IT8.7 / CGATS.17-20$ handling -----------------------------------------------------------------------------
1581 
1582 
1583 // CGATS.13 parser
1584 
1585 FUNCTION  cmsIT8Alloc: cmsHANDLE; StdCall;
1586 PROCEDURE cmsIT8Free(hIT8: cmsHANDLE); StdCall;
1587 
1588 // Tables
1589 
1590 FUNCTION  cmsIT8TableCount(hIT8: cmsHANDLE): Integer; StdCall;
1591 FUNCTION  cmsIT8SetTable(hIT8: cmsHANDLE; nTable: Integer): Integer; StdCall;
1592 
1593 // Persistence
1594 FUNCTION  cmsIT8LoadFromFile(cFileName: PAnsiChar): cmsHANDLE; StdCall;
1595 FUNCTION  cmsIT8LoadFromMem(Ptr: Pointer; size :DWord): cmsHANDLE; StdCall;
1596 
1597 FUNCTION cmsIT8SaveToFile(hIT8: cmsHANDLE; cFileName: PAnsiChar): cmsBool; StdCall;
1598 FUNCTION cmsIT8SaveToMem(hIT8: cmsHANDLE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall;
1599 // Properties
1600 
1601 FUNCTION cmsIT8GetSheetType(hIT8: cmsHANDLE): PAnsiChar; StdCall;
1602 FUNCTION cmsIT8SetSheetType(hIT8: cmsHANDLE; TheType: PAnsiChar): cmsBool; StdCall;
1603 
1604 FUNCTION cmsIT8SetComment(hIT8: cmsHANDLE; cComment: PAnsiChar): cmsBool; StdCall;
1605 
1606 FUNCTION cmsIT8SetPropertyStr(hIT8: cmsHANDLE; cProp, Str: PAnsiChar): cmsBool; StdCall;
1607 FUNCTION cmsIT8SetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Double): cmsBool; StdCall;
1608 FUNCTION cmsIT8SetPropertyHex(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Integer): cmsBool; StdCall;
1609 FUNCTION cmsIT8SetPropertyUncooked(hIT8: cmsHANDLE; Key, Buffer: PAnsiChar): cmsBool; StdCall;
1610 
1611 
1612 FUNCTION cmsIT8GetProperty(hIT8: cmsHANDLE; cProp: PAnsiChar): PAnsiChar; StdCall;
1613 FUNCTION cmsIT8GetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar): Double; StdCall;
1614 FUNCTION cmsIT8EnumProperties(hIT8: cmsHANDLE; var PropertyNames: LPPAnsiChar): Integer; StdCall;
1615 
1616 // Datasets
1617 
1618 FUNCTION cmsIT8GetDataRowCol(hIT8: cmsHANDLE; row, col: Integer): PAnsiChar; StdCall;
1619 FUNCTION cmsIT8GetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer): Double; StdCall;
1620 
1621 FUNCTION cmsIT8SetDataRowCol(hIT8: cmsHANDLE; row, col: Integer; Val: PAnsiChar): cmsBool; StdCall;
1622 FUNCTION cmsIT8SetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer; Val: Double): cmsBool; StdCall;
1623 
1624 FUNCTION cmsIT8GetData(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar): PAnsiChar; StdCall;
1625 
1626 FUNCTION cmsIT8GetDataDbl(hIT8: cmsHANDLE;cPatch, cSample: PAnsiChar): Double; StdCall;
1627 
1628 FUNCTION cmsIT8SetData(hIT8: cmsHANDLE; cPatch, cSample, Val: PAnsiChar): cmsBool; StdCall;
1629 
1630 FUNCTION cmsIT8SetDataDbl(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar; Val: Double): cmsBool; StdCall;
1631 
1632 FUNCTION cmsIT8SetDataFormat(hIT8: cmsHANDLE; n: Integer; Sample: PAnsiChar): cmsBool; StdCall;
1633 FUNCTION cmsIT8EnumDataFormat(hIT8: cmsHANDLE; var SampleNames: LPPAnsiChar): Integer; StdCall;
1634 FUNCTION cmsIT8GetPatchName(hIT8: cmsHANDLE; nPatch: Integer; Buffer: PAnsiChar): PAnsiChar; StdCall;
1635 
1636 // The LABEL extension
1637 FUNCTION cmsIT8SetTableByLabel(hIT8: cmsHANDLE; cSet, cField, ExpectedType: PAnsiChar): Integer; StdCall;
1638 
1639 FUNCTION cmsIT8FindDataFormat(hIT8: cmsHANDLE; cSample: PAnsiChar): Integer; StdCall;
1640 
1641 // Formatter for double
1642 PROCEDURE  cmsIT8DefineDblFormat(hIT8: cmsHANDLE; Formatter: PAnsiChar);  StdCall;
1643 
1644 // Gamut boundary description routines ------------------------------------------------------------------------------
1645 
1646 FUNCTION  cmsGBDAlloc(ContextID: cmsContext):cmsHANDLE; StdCall;
1647 PROCEDURE cmsGBDFree(hGBD: cmsHANDLE); StdCall;
1648 FUNCTION  cmsGDBAddPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall;
1649 FUNCTION  cmsGDBCompute(hGDB: cmsHANDLE; dwFlags: cmsUInt32Number): cmsBool; StdCall;
1650 FUNCTION  cmsGDBCheckPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall;
1651 
1652 // Feature detection  ----------------------------------------------------------------------------------------------
1653 
1654 // Estimate the black point
1655 FUNCTION cmsDetectBlackPoint( BlackPoint: LPcmsCIEXYZ; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsBool; StdCall;
1656 FUNCTION cmsDetectDestinationBlackPoint( BlackPoint: LPcmsCIEXYZ; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsBool; StdCall;
1657 
1658 
1659 // Estimate total area coverage
1660 FUNCTION cmsDetectTAC(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall;
1661 
1662 
1663 // Poor man's gamut mapping
cmsDesaturateLabnull1664 FUNCTION  cmsDesaturateLab(Lab: LPcmsCIELab; amax, amin, bmax, bmin: cmsFloat64Number): cmsBool; StdCall;
1665 
1666 
1667 IMPLEMENTATION
1668 
1669 
1670 
FLOAT_SHnull1671     FUNCTION FLOAT_SH(a: cmsUInt32Number): cmsUInt32Number;        begin  FLOAT_SH :=       ((a)  shl  22) end;
OPTIMIZED_SHnull1672     FUNCTION OPTIMIZED_SH(s: cmsUInt32Number): cmsUInt32Number;    begin  OPTIMIZED_SH :=   ((s)  shl  21) end;
COLORSPACE_SHnull1673     FUNCTION COLORSPACE_SH(s: cmsUInt32Number):cmsUInt32Number;    begin  COLORSPACE_SH :=  ((s)  shl  16) end;
SWAPFIRST_SHnull1674     FUNCTION SWAPFIRST_SH(s: cmsUInt32Number):cmsUInt32Number;     begin  SWAPFIRST_SH :=   ((s)  shl  14) end;
FLAVOR_SHnull1675     FUNCTION FLAVOR_SH(s: cmsUInt32Number):cmsUInt32Number;        begin  FLAVOR_SH :=      ((s)  shl  13) end;
PLANAR_SHnull1676     FUNCTION PLANAR_SH(p: cmsUInt32Number):cmsUInt32Number;        begin  PLANAR_SH :=      ((p)  shl  12) end;
ENDIAN16_SHnull1677     FUNCTION ENDIAN16_SH(e: cmsUInt32Number):cmsUInt32Number;      begin  ENDIAN16_SH :=    ((e)  shl  11) end;
DOSWAP_SHnull1678     FUNCTION DOSWAP_SH(e: cmsUInt32Number):cmsUInt32Number;        begin  DOSWAP_SH :=      ((e)  shl  10) end;
EXTRA_SHnull1679     FUNCTION EXTRA_SH(e: cmsUInt32Number):cmsUInt32Number;         begin  EXTRA_SH :=       ((e)  shl  7) end;
CHANNELS_SHnull1680     FUNCTION CHANNELS_SH(c: cmsUInt32Number):cmsUInt32Number;      begin  CHANNELS_SH :=    ((c)  shl  3) end;
BYTES_SHnull1681     FUNCTION BYTES_SH(b: cmsUInt32Number):cmsUInt32Number;         begin  BYTES_SH :=       (b) end;
1682 
1683 
T_FLOATnull1684     FUNCTION T_FLOAT(a: cmsUInt32Number): cmsUInt32Number;          begin  T_FLOAT :=        (((a) shr 22) and 1) end;
T_OPTIMIZEDnull1685     FUNCTION T_OPTIMIZED(o: cmsUInt32Number): cmsUInt32Number;      begin  T_OPTIMIZED :=    (((o) shr 21) and 1) end;
T_COLORSPACEnull1686     FUNCTION T_COLORSPACE(s: cmsUInt32Number): cmsUInt32Number;     begin  T_COLORSPACE :=   (((s) shr 16) and 31) end;
T_SWAPFIRSTnull1687     FUNCTION T_SWAPFIRST(s: cmsUInt32Number): cmsUInt32Number;      begin  T_SWAPFIRST :=    (((s) shr 14) and 1) end;
T_FLAVORnull1688     FUNCTION T_FLAVOR(s: cmsUInt32Number): cmsUInt32Number;         begin  T_FLAVOR :=       (((s) shr 13) and 1) end;
T_PLANARnull1689     FUNCTION T_PLANAR(p: cmsUInt32Number): cmsUInt32Number;         begin  T_PLANAR :=       (((p) shr 12) and 1) end;
T_ENDIAN16null1690     FUNCTION T_ENDIAN16(e: cmsUInt32Number): cmsUInt32Number;       begin  T_ENDIAN16 :=     (((e) shr 11) and 1) end;
T_DOSWAPnull1691     FUNCTION T_DOSWAP(e: cmsUInt32Number): cmsUInt32Number;         begin  T_DOSWAP :=       (((e) shr 10) and 1) end;
T_EXTRAnull1692     FUNCTION T_EXTRA(e: cmsUInt32Number): cmsUInt32Number;          begin  T_EXTRA :=        (((e) shr 7) and 7) end;
T_CHANNELSnull1693     FUNCTION T_CHANNELS(c: cmsUInt32Number): cmsUInt32Number;       begin  T_CHANNELS :=     (((c) shr 3) and 15) end;
T_BYTESnull1694     FUNCTION T_BYTES(b: cmsUInt32Number): cmsUInt32Number;          begin  T_BYTES :=        ((b) and 7) end;
1695 
1696 
1697 
1698 //
1699 
cmsCreateContextnull1700 FUNCTION  cmsCreateContext(Plugin : Pointer; UserData : Pointer) : cmsContext; StdCall; external LCMS2_SO;
1701 PROCEDURE cmsDeleteContext(ContextID: cmsContext); StdCall; external LCMS2_SO;
cmsDupContextnull1702 FUNCTION  cmsDupContext(ContextID: cmsContext; NewUserData: Pointer): cmsContext; StdCall; external LCMS2_SO;
cmsGetContextUserDatanull1703 FUNCTION  cmsGetContextUserData(ContextID: cmsContext): Pointer;  StdCall; external LCMS2_SO;
1704 
cmsPluginnull1705 FUNCTION  cmsPlugin(Plugin: Pointer): cmsBool; StdCall; external LCMS2_SO;
1706 PROCEDURE cmsUnregisterPlugins; StdCall; external LCMS2_SO;
1707 PROCEDURE cmsSetLogErrorHandler(Fn: cmsLogErrorHandlerFunction); StdCall; external LCMS2_SO;
cmsD50_XYZnull1708 FUNCTION cmsD50_XYZ: LPcmsCIEXYZ; StdCall; external LCMS2_SO;
cmsD50_xyYnull1709 FUNCTION cmsD50_xyY: LPcmsCIExyY; StdCall; external LCMS2_SO;
1710 PROCEDURE cmsXYZ2xyY(Dest: LPcmsCIExyY; Source: LPcmsCIEXYZ); StdCall; external LCMS2_SO;
1711 PROCEDURE cmsxyY2XYZ(Dest: LPcmsCIEXYZ; Source: LPcmsCIExyY); StdCall; external LCMS2_SO;
1712 PROCEDURE cmsLab2XYZ(WhitePoint: LPcmsCIEXYZ; xyz: LPcmsCIEXYZ; Lab: LPcmsCIELab); StdCall; external LCMS2_SO;
1713 PROCEDURE cmsXYZ2Lab(WhitePoint: LPcmsCIEXYZ; Lab: LPcmsCIELab; xyz: LPcmsCIEXYZ); StdCall; external LCMS2_SO;
1714 PROCEDURE cmsLab2LCh(LCh: LPcmsCIELCh; Lab: LPcmsCIELab); StdCall; external LCMS2_SO;
1715 PROCEDURE cmsLCh2Lab(Lab: LPcmsCIELab; LCh: LPcmsCIELCh); StdCall; external LCMS2_SO;
1716 PROCEDURE cmsLabEncoded2Float(Lab: LPcmsCIELab; wLab: Pointer); StdCall; external LCMS2_SO;
1717 PROCEDURE cmsLabEncoded2FloatV2(Lab: LPcmsCIELab; wLab: Pointer); StdCall; external LCMS2_SO;
1718 PROCEDURE cmsFloat2LabEncoded(wLab: Pointer; Lab: LPcmsCIELab); StdCall; external LCMS2_SO;
1719 PROCEDURE cmsFloat2LabEncodedV2(wLab: Pointer; Lab: LPcmsCIELab); StdCall; external LCMS2_SO;
1720 PROCEDURE cmsXYZEncoded2Float(fxyz : LPcmsCIEXYZ; XYZ: Pointer); StdCall; external LCMS2_SO;
1721 PROCEDURE cmsFloat2XYZEncoded(XYZ: Pointer; fXYZ: LPcmsCIEXYZ); StdCall; external LCMS2_SO;
cmsDeltaEnull1722 FUNCTION cmsDeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external LCMS2_SO;
cmsCIE94DeltaEnull1723 FUNCTION cmsCIE94DeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external LCMS2_SO;
cmsBFDdeltaEnull1724 FUNCTION cmsBFDdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external LCMS2_SO;
cmsCMCdeltaEnull1725 FUNCTION cmsCMCdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external LCMS2_SO;
cmsCIE2000DeltaEnull1726 FUNCTION cmsCIE2000DeltaE(Lab1, Lab2: LPcmsCIELab; Kl, Kc, Kh: Double): Double; StdCall; external LCMS2_SO;
cmsWhitePointFromTempnull1727 FUNCTION cmsWhitePointFromTemp(var WhitePoint: cmsCIExyY; TempK: cmsFloat64Number) : cmsBool; StdCall; external LCMS2_SO;
cmsTempFromWhitePointnull1728 FUNCTION cmsTempFromWhitePoint(var TeampK: cmsFloat64Number; var WhitePoint: cmsCIExyY) : cmsBool; StdCall; external LCMS2_SO;
cmsAdaptToIlluminantnull1729 FUNCTION cmsAdaptToIlluminant(Result: LPcmsCIEXYZ; SourceWhitePt: LPcmsCIEXYZ;
1730                               Illuminant: LPcmsCIEXYZ; Value: LPcmsCIEXYZ): cmsBool; StdCall; external LCMS2_SO;
cmsCIECAM02Initnull1731 FUNCTION  cmsCIECAM02Init(pVC : LPcmsViewingConditions ) : Pointer; StdCall; external LCMS2_SO;
1732 PROCEDURE cmsCIECAM02Done(hModel : Pointer); StdCall; external LCMS2_SO;
1733 PROCEDURE cmsCIECAM02Forward(hModel: Pointer; pIn: LPcmsCIEXYZ; pOut: LPcmsJCh ); StdCall; external LCMS2_SO;
1734 PROCEDURE cmsCIECAM02Reverse(hModel: Pointer; pIn: LPcmsJCh;   pOut: LPcmsCIEXYZ ); StdCall; external LCMS2_SO;
cmsBuildSegmentedToneCurvenull1735 FUNCTION  cmsBuildSegmentedToneCurve(ContextID: cmsContext; nSegments: cmsInt32Number; Segments: LPcmsCurveSegmentArray): LPcmsToneCurve; StdCall; external LCMS2_SO;
cmsBuildParametricToneCurvenull1736 FUNCTION  cmsBuildParametricToneCurve(ContextID: cmsContext;  CType: cmsInt32Number; Params: LPcmsFloat64NumberArray): LPcmsToneCurve; StdCall; external LCMS2_SO;
cmsBuildGammanull1737 FUNCTION  cmsBuildGamma(ContextID: cmsContext; Gamma: cmsFloat64Number): LPcmsToneCurve; StdCall; external LCMS2_SO;
cmsBuildTabulatedToneCurve16null1738 FUNCTION  cmsBuildTabulatedToneCurve16(ContextID: cmsContext; nEntries: cmsInt32Number; values: LPcmsUInt16NumberArray): LPcmsToneCurve; StdCall; external LCMS2_SO;
cmsBuildTabulatedToneCurveFloatnull1739 FUNCTION  cmsBuildTabulatedToneCurveFloat(ContextID: cmsContext; nEntries: cmsUInt32Number; values: LPcmsFloat32NumberArray): LPcmsToneCurve; StdCall; external LCMS2_SO;
1740 PROCEDURE cmsFreeToneCurve(Curve: LPcmsToneCurve); StdCall; external LCMS2_SO;
1741 PROCEDURE cmsFreeToneCurveTriple(Curve: LPLPcmsToneCurveArray); StdCall; external LCMS2_SO;
cmsDupToneCurvenull1742 FUNCTION  cmsDupToneCurve(Src: LPcmsToneCurve): LPcmsToneCurve; StdCall; external LCMS2_SO;
cmsReverseToneCurvenull1743 FUNCTION  cmsReverseToneCurve(InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall; external LCMS2_SO;
cmsReverseToneCurveExnull1744 FUNCTION  cmsReverseToneCurveEx(nResultSamples: cmsInt32Number; InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall; external LCMS2_SO;
cmsJoinToneCurvenull1745 FUNCTION  cmsJoinToneCurve(ContextID: cmsContext; X, Y: LPcmsToneCurve; nPoints: cmsUInt32Number ): LPcmsToneCurve; StdCall; external LCMS2_SO;
cmsSmoothToneCurvenull1746 FUNCTION  cmsSmoothToneCurve(Tab: LPcmsToneCurve; lambda: cmsFloat64Number): cmsBool; StdCall; external LCMS2_SO;
cmsEvalToneCurveFloatnull1747 FUNCTION  cmsEvalToneCurveFloat(Curve: LPcmsToneCurve; v: cmsFloat32Number):cmsFloat32Number; StdCall; external LCMS2_SO;
cmsEvalToneCurve16null1748 FUNCTION  cmsEvalToneCurve16(Curve: LPcmsToneCurve; v:cmsUInt16Number):cmsUInt16Number; StdCall; external LCMS2_SO;
cmsIsToneCurveMultisegmentnull1749 FUNCTION  cmsIsToneCurveMultisegment(InGamma: LPcmsToneCurve):cmsBool; StdCall; external LCMS2_SO;
cmsIsToneCurveLinearnull1750 FUNCTION  cmsIsToneCurveLinear(Curve: LPcmsToneCurve):cmsBool; StdCall; external LCMS2_SO;
cmsIsToneCurveMonotonicnull1751 FUNCTION  cmsIsToneCurveMonotonic(t: LPcmsToneCurve):cmsBool; StdCall; external LCMS2_SO;
cmsIsToneCurveDescendingnull1752 FUNCTION  cmsIsToneCurveDescending(t: LPcmsToneCurve):cmsBool; StdCall; external LCMS2_SO;
cmsGetToneCurveParametricTypenull1753 FUNCTION  cmsGetToneCurveParametricType(t: LPcmsToneCurve):cmsInt32Number; StdCall; external LCMS2_SO;
cmsEstimateGammanull1754 FUNCTION  cmsEstimateGamma(t: LPcmsToneCurve; Precision:cmsFloat64Number):cmsFloat64Number; StdCall; external LCMS2_SO;
cmsGetToneCurveEstimatedTableEntriesnull1755 FUNCTION  cmsGetToneCurveEstimatedTableEntries(t: LPcmsToneCurve): cmsUInt32Number; StdCall; external LCMS2_SO;
cmsGetToneCurveEstimatedTablenull1756 FUNCTION  cmsGetToneCurveEstimatedTable(t: LPcmsToneCurve): LPcmsUInt16Number; StdCall; external LCMS2_SO;
cmsPipelineAllocnull1757 FUNCTION  cmsPipelineAlloc(ContextID: cmsContext; InputChannels, OutputChannels: cmsUInt32Number): LPcmsPipeline; StdCall; external LCMS2_SO;
1758 PROCEDURE cmsPipelineFree(lut: LPcmsPipeline); StdCall; external LCMS2_SO;
cmsPipelineDupnull1759 FUNCTION  cmsPipelineDup(Orig: LPcmsPipeline): LPcmsPipeline; StdCall; external LCMS2_SO;
cmsGetPipelineContextIDnull1760 FUNCTION  cmsGetPipelineContextID(lut: LPcmsPipeline) : cmsContext; StdCall; external LCMS2_SO;
cmsPipelineInputChannelsnull1761 FUNCTION  cmsPipelineInputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall; external LCMS2_SO;
cmsPipelineOutputChannelsnull1762 FUNCTION  cmsPipelineOutputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall; external LCMS2_SO;
cmsPipelineStageCountnull1763 FUNCTION cmsPipelineStageCount(lut: LPcmsPipeline): cmsUInt32Number; StdCall; external LCMS2_SO;
cmsPipelineGetPtrToFirstStagenull1764 FUNCTION cmsPipelineGetPtrToFirstStage(lut: LPcmsPipeline): LPcmsStage; StdCall; external LCMS2_SO;
cmsPipelineGetPtrToLastStagenull1765 FUNCTION cmsPipelineGetPtrToLastStage(lut: LPcmsPipeline): LPcmsStage; StdCall; external LCMS2_SO;
1766 
1767 PROCEDURE cmsPipelineEval16(Inv, Outv: LPcmsUInt16NumberArray; lut: LPcmsPipeline); StdCall; external LCMS2_SO;
1768 PROCEDURE cmsPipelineEvalFloat(Inv, Outv: LPcmsFloat32NumberArray; lut: LPcmsPipeline); StdCall; external LCMS2_SO;
1769 
cmsPipelineEvalReverseFloatnull1770 FUNCTION cmsPipelineEvalReverseFloat(Target, Result, Hint: LPcmsFloat32NumberArray; lut: LPcmsPipeline): cmsBool; StdCall; external LCMS2_SO;
cmsPipelineCatnull1771 FUNCTION cmsPipelineCat(l1, l2: LPcmsPipeline): cmsBool; StdCall; external LCMS2_SO;
cmsPipelineSetSaveAs8bitsFlagnull1772 FUNCTION cmsPipelineSetSaveAs8bitsFlag(lut: LPcmsPipeline; On: cmsBool): cmsBool; StdCall; external LCMS2_SO;
1773 PROCEDURE cmsPipelineInsertStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPcmsStage); StdCall; external LCMS2_SO;
1774 PROCEDURE cmsPipelineUnlinkStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPLPcmsStage); StdCall; external LCMS2_SO;
cmsStageAllocIdentitynull1775 FUNCTION  cmsStageAllocIdentity(ContextID: cmsContext; nChannels: cmsUInt32Number): LPcmsStage; StdCall; external LCMS2_SO;
cmsStageAllocToneCurvesnull1776 FUNCTION  cmsStageAllocToneCurves(ContextID: cmsContext; nChannels: cmsUInt32Number; Curves: LPLPcmsToneCurveArray): LPcmsStage; StdCall; external LCMS2_SO;
cmsStageAllocMatrixnull1777 FUNCTION  cmsStageAllocMatrix(ContextID: cmsContext; Rows, Cols: cmsUInt32Number; Matrix, Offset: LPcmsFloat64NumberArray): LPcmsStage; StdCall; external LCMS2_SO;
cmsStageAllocCLut16bitnull1778 FUNCTION  cmsStageAllocCLut16bit(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall; external LCMS2_SO;
cmsStageAllocCLutFloatnull1779 FUNCTION  cmsStageAllocCLutFloat(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall; external LCMS2_SO;
cmsStageAllocCLut16bitGranularnull1780 FUNCTION  cmsStageAllocCLut16bitGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall; external LCMS2_SO;
cmsStageAllocCLutFloatGranularnull1781 FUNCTION  cmsStageAllocCLutFloatGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall; external LCMS2_SO;
cmsStageDupnull1782 FUNCTION  cmsStageDup(mpe: LPcmsStage): LPcmsStage; StdCall; external LCMS2_SO;
1783 PROCEDURE cmsStageFree(mpe: LPcmsStage); StdCall; external LCMS2_SO;
cmsStageNextnull1784 FUNCTION  cmsStageNext(mpe: LPcmsStage): LPcmsStage; StdCall; external LCMS2_SO;
cmsStageInputChannelsnull1785 FUNCTION cmsStageInputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall; external LCMS2_SO;
cmsStageOutputChannelsnull1786 FUNCTION cmsStageOutputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall; external LCMS2_SO;
cmsStageTypenull1787 FUNCTION cmsStageType(mpe: LPcmsStage): cmsStageSignature; StdCall; external LCMS2_SO;
cmsStageDatanull1788 FUNCTION cmsStageData(mpe: LPcmsStage): Pointer; StdCall; external LCMS2_SO;
cmsStageSampleCLut16bitnull1789 FUNCTION cmsStageSampleCLut16bit(mpe: LPcmsStage;  Sampler: cmsSAMPLER16;    Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
cmsStageSampleCLutFloatnull1790 FUNCTION cmsStageSampleCLutFloat(mpe: LPcmsStage;  Sampler: cmsSAMPLERFLOAT; Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
cmsSliceSpace16null1791 FUNCTION  cmsSliceSpace16(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray;
1792                                                    Sampler: cmsSAMPLER16; Cargo: Pointer): cmsBool; StdCall; external LCMS2_SO;
1793 
cmsSliceSpaceFloatnull1794 FUNCTION cmsSliceSpaceFloat(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray;
1795                                                    Sampler: cmsSAMPLERFLOAT; Cargo: Pointer): cmsBool; StdCall; external LCMS2_SO;
cmsMLUallocnull1796 FUNCTION  cmsMLUalloc(ContextID: cmsContext; nItems: cmsUInt32Number): LPcmsMLU; StdCall; external LCMS2_SO;
1797 PROCEDURE cmsMLUfree(mlu: LPcmsMLU); StdCall; external LCMS2_SO;
cmsMLUdupnull1798 FUNCTION  cmsMLUdup(mlu: LPcmsMLU): LPcmsMLU; StdCall; external LCMS2_SO;
1799 
cmsMLUsetASCIInull1800 FUNCTION  cmsMLUsetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode, ASCIIString: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
cmsMLUsetWidenull1801 FUNCTION  cmsMLUsetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; WideString: PWChar): cmsBool; StdCall; external LCMS2_SO;
1802 
cmsMLUgetASCIInull1803 FUNCTION cmsMLUgetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external LCMS2_SO;
1804 
cmsMLUgetWidenull1805 FUNCTION cmsMLUgetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external LCMS2_SO;
1806 
cmsMLUgetTranslationnull1807 FUNCTION cmsMLUgetTranslation(mlu: LPcmsMLU; LanguageCode, CountryCode, ObtainedLanguage, ObtainedCountry: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
1808 
cmsAllocNamedColorListnull1809 FUNCTION cmsAllocNamedColorList(ContextID: cmsContext; n, ColorantCount :cmsUInt32Number;
1810                                                            Prefix, Suffix: PAnsiChar): LPcmsNAMEDCOLORLIST; StdCall; external LCMS2_SO;
1811 
1812 PROCEDURE cmsFreeNamedColorList(v: LPcmsNAMEDCOLORLIST); StdCall; external LCMS2_SO;
cmsDupNamedColorListnull1813 FUNCTION  cmsDupNamedColorList(v: LPcmsNAMEDCOLORLIST): LPcmsNAMEDCOLORLIST; StdCall; external LCMS2_SO;
cmsAppendNamedColornull1814 FUNCTION  cmsAppendNamedColor(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar;
1815                                                              PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall; external LCMS2_SO;
1816 
cmsNamedColorCountnull1817 FUNCTION cmsNamedColorCount(v: LPcmsNAMEDCOLORLIST): cmsUInt32Number; StdCall; external LCMS2_SO;
cmsNamedColorIndexnull1818 FUNCTION cmsNamedColorIndex(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar): cmsInt32Number; StdCall; external LCMS2_SO;
1819 
cmsNamedColorInfonull1820 FUNCTION cmsNamedColorInfo(v: LPcmsNAMEDCOLORLIST; nColor : cmsUInt32Number;
1821                                                       Name,Prefix, Suffix : PAnsiChar;
1822                                                        PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall; external LCMS2_SO;
1823 
cmsGetNamedColorListnull1824 FUNCTION cmsGetNamedColorList(xform: cmsHTRANSFORM ): LPcmsNAMEDCOLORLIST; StdCall; external LCMS2_SO;
1825 
cmsAllocProfileSequenceDescriptionnull1826 FUNCTION   cmsAllocProfileSequenceDescription(ContextID: cmsContext; n: cmsUInt32Number):LPcmsSEQ; StdCall; external LCMS2_SO;
cmsDupProfileSequenceDescriptionnull1827 FUNCTION   cmsDupProfileSequenceDescription(pseq: LPcmsSEQ):LPcmsSEQ; StdCall; external LCMS2_SO;
1828 PROCEDURE  cmsFreeProfileSequenceDescription(pseq: LPcmsSEQ); StdCall; external LCMS2_SO;
1829 
cmsDictAllocnull1830 FUNCTION  cmsDictAlloc(ContextID: cmsContext): cmsHANDLE; StdCall; external LCMS2_SO;
1831 PROCEDURE cmsDictFree(hDict: cmsHANDLE);  StdCall; external LCMS2_SO;
cmsDictDupnull1832 FUNCTION  cmsDictDup(hDict: cmsHANDLE): cmsHANDLE;  StdCall; external LCMS2_SO;
1833 
cmsDictAddEntrynull1834 FUNCTION cmsDictAddEntry(hDict: cmsHANDLE; Name, Value: PWChar; DisplayName, DisplayValue : LPcmsMLU): cmsBool;  StdCall; external LCMS2_SO;
cmsDictGetEntryListnull1835 FUNCTION cmsDictGetEntryList(hDict: cmsHANDLE): LPcmsDICTentry; StdCall; external LCMS2_SO;
cmsDictNextEntrynull1836 FUNCTION cmsDictNextEntry(e : LPcmsDICTentry): LPcmsDICTentry;  StdCall; external LCMS2_SO;
1837 
cmsCreateProfilePlaceholdernull1838 FUNCTION cmsCreateProfilePlaceholder(ContextID: cmsContext): cmsHPROFILE; StdCall; external LCMS2_SO;
1839 
cmsGetProfileContextIDnull1840 FUNCTION cmsGetProfileContextID(hProfile: cmsHPROFILE):cmsContext; StdCall; external LCMS2_SO;
cmsGetTagCountnull1841 FUNCTION cmsGetTagCount(hProfile: cmsHPROFILE): cmsInt32Number; StdCall; external LCMS2_SO;
cmsGetTagSignaturenull1842 FUNCTION cmsGetTagSignature(hProfile: cmsHPROFILE; n: cmsUInt32Number): cmsTagSignature; StdCall; external LCMS2_SO;
cmsIsTagnull1843 FUNCTION cmsIsTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): cmsBool; StdCall; external LCMS2_SO;
1844 
cmsReadTagnull1845 FUNCTION cmsReadTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): Pointer; StdCall; external LCMS2_SO;
cmsWriteTagnull1846 FUNCTION cmsWriteTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer): cmsBool; StdCall; external LCMS2_SO;
cmsLinkTagnull1847 FUNCTION cmsLinkTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; dest: cmsTagSignature): cmsBool; StdCall; external LCMS2_SO;
cmsTagLinkedTonull1848 FUNCTION cmsTagLinkedTo(hProfile: cmsHPROFILE; sig: cmsTagSignature):cmsTagSignature; StdCall; external LCMS2_SO;
1849 
cmsReadRawTagnull1850 FUNCTION cmsReadRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; Buffer: Pointer; BufferSize: cmsUInt32Number): cmsInt32Number; StdCall; external LCMS2_SO;
cmsWriteRawTagnull1851 FUNCTION cmsWriteRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer; Size: cmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
1852 
cmsGetHeaderFlagsnull1853 FUNCTION  cmsGetHeaderFlags(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external LCMS2_SO;
1854 PROCEDURE cmsGetHeaderAttributes(hProfile: cmsHPROFILE; Flags: LPcmsUInt64Number); StdCall; external LCMS2_SO;
1855 PROCEDURE cmsGetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall; external LCMS2_SO;
1856 
cmsGetHeaderRenderingIntentnull1857 FUNCTION  cmsGetHeaderRenderingIntent(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external LCMS2_SO;
1858 PROCEDURE cmsSetHeaderFlags(hProfile: cmsHPROFILE; Flags: cmsUInt32Number); StdCall; external LCMS2_SO;
cmsGetHeaderManufacturernull1859 FUNCTION  cmsGetHeaderManufacturer(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external LCMS2_SO;
1860 PROCEDURE cmsSetHeaderManufacturer(hProfile: cmsHPROFILE; manufacturer: cmsUInt32Number ); StdCall; external LCMS2_SO;
cmsGetHeaderModelnull1861 FUNCTION  cmsGetHeaderModel(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external LCMS2_SO;
1862 PROCEDURE cmsSetHeaderModel(hProfile: cmsHPROFILE; model: cmsUInt32Number ); StdCall; external LCMS2_SO;
1863 PROCEDURE cmsSetHeaderAttributes(hProfile: cmsHPROFILE; Flags: cmsUInt64Number); StdCall; external LCMS2_SO;
1864 PROCEDURE cmsSetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall; external LCMS2_SO;
1865 PROCEDURE cmsSetHeaderRenderingIntent(hProfile: cmsHPROFILE; RenderingIntent: cmsUInt32Number ); StdCall; external LCMS2_SO;
1866 
cmsGetPCSnull1867 FUNCTION  cmsGetPCS(hProfile: cmsHPROFILE):cmsColorSpaceSignature; StdCall; external LCMS2_SO;
1868 PROCEDURE cmsSetPCS(hProfile: cmsHPROFILE; pcs: cmsColorSpaceSignature); StdCall; external LCMS2_SO;
cmsGetColorSpacenull1869 FUNCTION  cmsGetColorSpace(hProfile: cmsHPROFILE): cmsColorSpaceSignature; StdCall; external LCMS2_SO;
1870 PROCEDURE cmsSetColorSpace(hProfile: cmsHPROFILE; sig: cmsColorSpaceSignature); StdCall; external LCMS2_SO;
cmsGetDeviceClassnull1871 FUNCTION  cmsGetDeviceClass(hProfile: cmsHPROFILE): cmsProfileClassSignature; StdCall; external LCMS2_SO;
1872 PROCEDURE cmsSetDeviceClass(hProfile: cmsHPROFILE; sig: cmsProfileClassSignature); StdCall; external LCMS2_SO;
1873 PROCEDURE cmsSetProfileVersion(hProfile: cmsHPROFILE; Version: cmsFloat64Number); StdCall; external LCMS2_SO;
cmsGetProfileVersionnull1874 FUNCTION  cmsGetProfileVersion(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall; external LCMS2_SO;
1875 
cmsGetEncodedICCversionnull1876 FUNCTION  cmsGetEncodedICCversion(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external LCMS2_SO;
1877 PROCEDURE cmsSetEncodedICCversion(hProfile: cmsHPROFILE; Version: cmsUInt32Number); StdCall; external LCMS2_SO;
1878 
1879 
cmsIsIntentSupportednull1880 FUNCTION   cmsIsIntentSupported(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
cmsIsMatrixShapernull1881 FUNCTION   cmsIsMatrixShaper(hProfile: cmsHPROFILE): cmsBool; StdCall; external LCMS2_SO;
cmsIsCLUTnull1882 FUNCTION   cmsIsCLUT(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
_cmsICCcolorSpacenull1883 FUNCTION _cmsICCcolorSpace(OurNotation: Integer): cmsColorSpaceSignature; StdCall; external LCMS2_SO;
_cmsLCMScolorSpacenull1884 FUNCTION _cmsLCMScolorSpace(ProfileSpace: cmsColorSpaceSignature): Integer; StdCall; external LCMS2_SO;
1885 
cmsChannelsOfnull1886 FUNCTION cmsChannelsOf( ColorSpace: cmsColorSpaceSignature): cmsUInt32Number; StdCall; external LCMS2_SO;
1887 
cmsFormatterForColorspaceOfProfilenull1888 FUNCTION cmsFormatterForColorspaceOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall; external LCMS2_SO;
cmsFormatterForPCSOfProfilenull1889 FUNCTION cmsFormatterForPCSOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall; external LCMS2_SO;
1890 
1891 
cmsGetProfileInfonull1892 FUNCTION cmsGetProfileInfo(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar;
1893                                                             Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external LCMS2_SO;
1894 
cmsGetProfileInfoASCIInull1895 FUNCTION cmsGetProfileInfoASCII(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar;
1896                                                             Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external LCMS2_SO;
1897 
1898 
cmsOpenIOhandlerFromFilenull1899 FUNCTION cmsOpenIOhandlerFromFile(ContextID: cmsContext; FileName, AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall; external LCMS2_SO;
cmsOpenIOhandlerFromStreamnull1900 // FUNCTION cmsOpenIOhandlerFromStream(ContextID: cmsContext; FILE* Stream): LPcmsIOHANDLER; StdCall; external LCMS2_SO;
1901 FUNCTION cmsOpenIOhandlerFromMem(ContextID: cmsContext; Buffer: Pointer; size: cmsUInt32Number; AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall; external LCMS2_SO;
cmsOpenIOhandlerFromNULLnull1902 FUNCTION cmsOpenIOhandlerFromNULL(ContextID: cmsContext): LPcmsIOHANDLER; StdCall; external LCMS2_SO;
cmsCloseIOhandlernull1903 FUNCTION cmsCloseIOhandler(io: LPcmsIOHANDLER): cmsBool; StdCall; external LCMS2_SO;
1904 
cmsMD5computeIDnull1905 FUNCTION cmsMD5computeID(hProfile: cmsHPROFILE): cmsBool; StdCall; external LCMS2_SO;
1906 
cmsOpenProfileFromFilenull1907 FUNCTION   cmsOpenProfileFromFile(ICCProfile : PAnsiChar; sAccess: PAnsiChar): cmsHPROFILE; StdCall; external LCMS2_SO;
cmsOpenProfileFromFileTHRnull1908 FUNCTION   cmsOpenProfileFromFileTHR(ContextID: cmsContext; ICCProfile, sAccess: PAnsiChar): cmsHPROFILE; StdCall; external LCMS2_SO;
CMSEXPORTnull1909 // FUNCTION      CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall; external LCMS2_SO;
1910 // FUNCTION      CMSEXPORT cmsOpenProfileFromStreamTHR(ContextID: cmsContext; FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall; external LCMS2_SO;
1911 FUNCTION   cmsOpenProfileFromMem(MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall; external LCMS2_SO;
cmsOpenProfileFromMemTHRnull1912 FUNCTION   cmsOpenProfileFromMemTHR(ContextID: cmsContext; MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall; external LCMS2_SO;
cmsOpenProfileFromIOhandlerTHRnull1913 FUNCTION   cmsOpenProfileFromIOhandlerTHR(ContextID: cmsContext; io: LPcmsIOHANDLER): cmsHPROFILE; StdCall; external LCMS2_SO;
cmsCloseProfilenull1914 FUNCTION   cmsCloseProfile(hProfile: cmsHPROFILE): cmsBool; StdCall; external LCMS2_SO;
1915 
cmsSaveProfileToFilenull1916 FUNCTION   cmsSaveProfileToFile(hProfile: cmsHPROFILE; FileName: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
CMSEXPORTnull1917 // FUNCTION         CMSEXPORT cmsSaveProfileToStream(hProfile: cmsHPROFILE, FILE* Stream): cmsBool; StdCall; external LCMS2_SO;
1918 FUNCTION   cmsSaveProfileToMem(hProfile: cmsHPROFILE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
cmsSaveProfileToIOhandlernull1919 FUNCTION   cmsSaveProfileToIOhandler(hProfile: cmsHPROFILE; io: LPcmsIOHANDLER):cmsUInt32Number; StdCall; external LCMS2_SO;
1920 
cmsCreateRGBProfileTHRnull1921 FUNCTION  cmsCreateRGBProfileTHR(ContextID: cmsContext;
1922                                                    WhitePoint: LPcmsCIExyY;
1923                                                    Primaries: LPcmsCIExyYTRIPLE;
1924                                                    TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external LCMS2_SO;
1925 
cmsCreateRGBProfilenull1926 FUNCTION  cmsCreateRGBProfile(WhitePoint: LPcmsCIExyY;
1927                                                    Primaries: LPcmsCIExyYTRIPLE;
1928                                                    TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external LCMS2_SO;
1929 
cmsCreateGrayProfileTHRnull1930 FUNCTION cmsCreateGrayProfileTHR(ContextID: cmsContext;
1931                                                     WhitePoint: LPcmsCIExyY;
1932                                                     TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall; external LCMS2_SO;
1933 
cmsCreateGrayProfilenull1934 FUNCTION cmsCreateGrayProfile(WhitePoint: LPcmsCIExyY;
1935                                                      TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall; external LCMS2_SO;
1936 
cmsCreateLinearizationDeviceLinkTHRnull1937 FUNCTION cmsCreateLinearizationDeviceLinkTHR(ContextID: cmsContext;
1938                                                                  ColorSpace: cmsColorSpaceSignature;
1939                                                                  TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external LCMS2_SO;
1940 
cmsCreateLinearizationDeviceLinknull1941 FUNCTION cmsCreateLinearizationDeviceLink(ColorSpace: cmsColorSpaceSignature;
1942                                                                  TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external LCMS2_SO;
1943 
cmsCreateInkLimitingDeviceLinkTHRnull1944 FUNCTION cmsCreateInkLimitingDeviceLinkTHR(ContextID: cmsContext;
1945                                                               ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall; external LCMS2_SO;
1946 
cmsCreateInkLimitingDeviceLinknull1947 FUNCTION cmsCreateInkLimitingDeviceLink(ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall; external LCMS2_SO;
1948 
1949 
cmsCreateLab2ProfileTHRnull1950 FUNCTION cmsCreateLab2ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external LCMS2_SO;
cmsCreateLab2Profilenull1951 FUNCTION cmsCreateLab2Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external LCMS2_SO;
cmsCreateLab4ProfileTHRnull1952 FUNCTION cmsCreateLab4ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external LCMS2_SO;
cmsCreateLab4Profilenull1953 FUNCTION cmsCreateLab4Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external LCMS2_SO;
1954 
cmsCreateXYZProfileTHRnull1955 FUNCTION cmsCreateXYZProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; external LCMS2_SO;
cmsCreateXYZProfilenull1956 FUNCTION cmsCreateXYZProfile: cmsHPROFILE; StdCall; external LCMS2_SO;
1957 
cmsCreate_sRGBProfileTHRnull1958 FUNCTION cmsCreate_sRGBProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; external LCMS2_SO;
cmsCreate_sRGBProfilenull1959 FUNCTION cmsCreate_sRGBProfile: cmsHPROFILE; StdCall; external LCMS2_SO;
1960 
cmsCreateBCHSWabstractProfileTHRnull1961 FUNCTION cmsCreateBCHSWabstractProfileTHR(ContextID: cmsContext;
1962                                                              nLUTPoints: Integer;
1963                                                              Bright,
1964                                                              Contrast,
1965                                                              Hue,
1966                                                              Saturation: cmsFloat64Number;
1967                                                              TempSrc,
1968                                                              TempDest: Integer): cmsHPROFILE; StdCall; external LCMS2_SO;
1969 
cmsCreateBCHSWabstractProfilenull1970 FUNCTION cmsCreateBCHSWabstractProfile(   nLUTPoints: Integer;
1971                                                              Bright,
1972                                                              Contrast,
1973                                                              Hue,
1974                                                              Saturation: cmsFloat64Number;
1975                                                              TempSrc,
1976                                                              TempDest: Integer): cmsHPROFILE; StdCall; external LCMS2_SO;
1977 
cmsCreateNULLProfileTHRnull1978 FUNCTION  cmsCreateNULLProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; external LCMS2_SO;
cmsCreateNULLProfilenull1979 FUNCTION  cmsCreateNULLProfile: cmsHPROFILE; StdCall; external LCMS2_SO;
1980 
1981 // Converts a transform to a devicelink profile
cmsTransform2DeviceLinknull1982 FUNCTION  cmsTransform2DeviceLink(hTransform: cmsHTRANSFORM; Version: cmsFloat64Number; dwFlags: cmsUInt32Number): cmsHPROFILE; StdCall; external LCMS2_SO;
1983 
1984 // Call with NULL as parameters to get the intent count
cmsGetSupportedIntentsnull1985 FUNCTION cmsGetSupportedIntents(nMax: cmsUInt32Number; Codes: LPcmsUInt32Number; Descriptions: LPPAnsiChar): cmsUInt32Number; StdCall; external LCMS2_SO;
1986 
cmsFLAGS_GRIDPOINTSnull1987 FUNCTION cmsFLAGS_GRIDPOINTS(n: Integer): Integer; begin cmsFLAGS_GRIDPOINTS :=  (((n) and $FF) shl 16) end;
1988 
1989 
cmsCreateTransformTHRnull1990 FUNCTION   cmsCreateTransformTHR(ContextID: cmsContext;
1991                                                   Input: cmsHPROFILE;
1992                                                   InputFormat: cmsUInt32Number;
1993                                                   Output: cmsHPROFILE;
1994                                                   OutputFormat: cmsUInt32Number;
1995                                                   Intent: cmsUInt32Number;
1996                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external LCMS2_SO;
1997 
cmsCreateTransformnull1998 FUNCTION   cmsCreateTransform(Input: cmsHPROFILE;
1999                                                   InputFormat: cmsUInt32Number;
2000                                                   Output: cmsHPROFILE;
2001                                                   OutputFormat: cmsUInt32Number;
2002                                                   Intent: cmsUInt32Number;
2003                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external LCMS2_SO;
2004 
cmsCreateProofingTransformTHRnull2005 FUNCTION   cmsCreateProofingTransformTHR(ContextID: cmsContext;
2006                                                   Input: cmsHPROFILE;
2007                                                   InputFormat: cmsUInt32Number;
2008                                                   Output: cmsHPROFILE;
2009                                                   OutputFormat: cmsUInt32Number;
2010                                                   Proofing: cmsHPROFILE;
2011                                                   Intent: cmsUInt32Number;
2012                                                   ProofingIntent: cmsUInt32Number;
2013                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external LCMS2_SO;
2014 
cmsCreateProofingTransformnull2015 FUNCTION   cmsCreateProofingTransform(Input: cmsHPROFILE;
2016                                                   InputFormat: cmsUInt32Number;
2017                                                   Output: cmsHPROFILE;
2018                                                   OutputFormat: cmsUInt32Number;
2019                                                   Proofing: cmsHPROFILE;
2020                                                   Intent: cmsUInt32Number;
2021                                                   ProofingIntent: cmsUInt32Number;
2022                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external LCMS2_SO;
2023 
cmsCreateMultiprofileTransformTHRnull2024 FUNCTION   cmsCreateMultiprofileTransformTHR(ContextID: cmsContext;
2025                                                   hProfiles: LPcmsHPROFILEArray;
2026                                                   nProfiles: cmsUInt32Number;
2027                                                   InputFormat: cmsUInt32Number;
2028                                                   OutputFormat: cmsUInt32Number;
2029                                                   Intent: cmsUInt32Number;
2030                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external LCMS2_SO;
2031 
2032 
cmsCreateMultiprofileTransformnull2033 FUNCTION   cmsCreateMultiprofileTransform( hProfiles: LPcmsHPROFILEArray;
2034                                                   nProfiles: cmsUInt32Number;
2035                                                   InputFormat: cmsUInt32Number;
2036                                                   OutputFormat: cmsUInt32Number;
2037                                                   Intent: cmsUInt32Number;
2038                                                   dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external LCMS2_SO;
2039 
2040 
cmsCreateExtendedTransformnull2041 FUNCTION   cmsCreateExtendedTransform(ContextID: cmsContext;
2042                                                    nProfiles: cmsUInt32Number;
2043                                                    hProfiles: LPcmsHPROFILEArray;
2044                                                    BPC: LPcmsBoolArray;
2045                                                    Intents: LPcmsUInt32NumberArray;
2046                                                    AdaptationStates: LPcmsFloat64NumberArray;
2047                                                    hGamutProfile: cmsHPROFILE;
2048                                                    nGamutPCSposition: cmsUInt32Number;
2049                                                    InputFormat,
2050                                                    OutputFormat: cmsUInt32Number;
2051                                                    dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external LCMS2_SO;
2052 
2053 PROCEDURE  cmsDeleteTransform(hTransform: cmsHTRANSFORM); StdCall; external LCMS2_SO;
2054 
2055 PROCEDURE  cmsDoTransform(Transform: cmsHTRANSFORM; InputBuffer, OutputBuffer: Pointer; size: cmsUInt32Number);  StdCall; external LCMS2_SO;
2056 PROCEDURE  cmsDoTransformStride(Transform: cmsHTRANSFORM; InputBuffer, OutputBuffer: Pointer; size: cmsUInt32Number; stride: cmsUInt32Number);  StdCall; external LCMS2_SO;
2057 PROCEDURE  cmsSetAlarmCodes( NewAlarm: LPcmsUInt16NumberArray);  StdCall; external LCMS2_SO;
2058 PROCEDURE  cmsGetAlarmCodes(NewAlarm: LPcmsUInt16NumberArray); StdCall; external LCMS2_SO;
2059 
2060 // Adaptation state for absolute colorimetric intent
cmsSetAdaptationStatenull2061 FUNCTION  cmsSetAdaptationState(d: cmsFloat64Number):cmsFloat64Number; StdCall; external LCMS2_SO;
2062 
2063 // Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed
cmsGetTransformContextIDnull2064 FUNCTION  cmsGetTransformContextID(hTransform: cmsHTRANSFORM):cmsContext; StdCall; external LCMS2_SO;
2065 
2066 // For backwards compatibility
cmsChangeBuffersFormatnull2067 FUNCTION  cmsChangeBuffersFormat(hTransform: cmsHTRANSFORM; InputFormat, OutputFormat: cmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
2068 
2069 
2070 // lcms2 unified method to access postscript color resources
cmsGetPostScriptColorResourcenull2071 FUNCTION cmsGetPostScriptColorResource(ContextID: cmsContext;   RType: cmsPSResourceType;
2072                                                                 hProfile: cmsHPROFILE;
2073                                                                 Intent: cmsUInt32Number;
2074                                                                 dwFlags: cmsUInt32Number;
2075                                                                 io: LPcmsIOHANDLER): cmsUInt32Number; StdCall; external LCMS2_SO;
2076 
cmsGetPostScriptCSAnull2077 FUNCTION cmsGetPostScriptCSA(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number ): cmsUInt32Number; StdCall; external LCMS2_SO;
cmsGetPostScriptCRDnull2078 FUNCTION cmsGetPostScriptCRD(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number): cmsUInt32Number; StdCall; external LCMS2_SO;
2079 
2080 
2081 // CGATS.13 parser
2082 
cmsIT8Allocnull2083 FUNCTION  cmsIT8Alloc: cmsHANDLE; StdCall; external LCMS2_SO;
2084 PROCEDURE cmsIT8Free(hIT8: cmsHANDLE); StdCall; external LCMS2_SO;
2085 
2086 // Tables
2087 
cmsIT8TableCountnull2088 FUNCTION  cmsIT8TableCount(hIT8: cmsHANDLE): Integer; StdCall; external LCMS2_SO;
cmsIT8SetTablenull2089 FUNCTION  cmsIT8SetTable(hIT8: cmsHANDLE; nTable: Integer): Integer; StdCall; external LCMS2_SO;
2090 
2091 // Persistence
cmsIT8LoadFromFilenull2092 FUNCTION  cmsIT8LoadFromFile(cFileName: PAnsiChar): cmsHANDLE; StdCall; external LCMS2_SO;
cmsIT8LoadFromMemnull2093 FUNCTION  cmsIT8LoadFromMem(Ptr: Pointer; size :DWord): cmsHANDLE; StdCall; external LCMS2_SO;
2094 
cmsIT8SaveToFilenull2095 FUNCTION cmsIT8SaveToFile(hIT8: cmsHANDLE; cFileName: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
cmsIT8SaveToMemnull2096 FUNCTION cmsIT8SaveToMem(hIT8: cmsHANDLE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
2097 // Properties
2098 
cmsIT8GetSheetTypenull2099 FUNCTION cmsIT8GetSheetType(hIT8: cmsHANDLE): PAnsiChar; StdCall; external LCMS2_SO;
cmsIT8SetSheetTypenull2100 FUNCTION cmsIT8SetSheetType(hIT8: cmsHANDLE; TheType: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
2101 
cmsIT8SetCommentnull2102 FUNCTION cmsIT8SetComment(hIT8: cmsHANDLE; cComment: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
2103 
cmsIT8SetPropertyStrnull2104 FUNCTION cmsIT8SetPropertyStr(hIT8: cmsHANDLE; cProp, Str: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
cmsIT8SetPropertyDblnull2105 FUNCTION cmsIT8SetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Double): cmsBool; StdCall; external LCMS2_SO;
cmsIT8SetPropertyHexnull2106 FUNCTION cmsIT8SetPropertyHex(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Integer): cmsBool; StdCall; external LCMS2_SO;
cmsIT8SetPropertyUncookednull2107 FUNCTION cmsIT8SetPropertyUncooked(hIT8: cmsHANDLE; Key, Buffer: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
2108 
2109 
cmsIT8GetPropertynull2110 FUNCTION cmsIT8GetProperty(hIT8: cmsHANDLE; cProp: PAnsiChar): PAnsiChar; StdCall; external LCMS2_SO;
cmsIT8GetPropertyDblnull2111 FUNCTION cmsIT8GetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar): Double; StdCall; external LCMS2_SO;
cmsIT8EnumPropertiesnull2112 FUNCTION cmsIT8EnumProperties(hIT8: cmsHANDLE; var PropertyNames: LPPAnsiChar): Integer; StdCall; external LCMS2_SO;
2113 
2114 // Datasets
2115 
cmsIT8GetDataRowColnull2116 FUNCTION cmsIT8GetDataRowCol(hIT8: cmsHANDLE; row, col: Integer): PAnsiChar; StdCall; external LCMS2_SO;
cmsIT8GetDataRowColDblnull2117 FUNCTION cmsIT8GetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer): Double; StdCall; external LCMS2_SO;
2118 
cmsIT8SetDataRowColnull2119 FUNCTION cmsIT8SetDataRowCol(hIT8: cmsHANDLE; row, col: Integer; Val: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
cmsIT8SetDataRowColDblnull2120 FUNCTION cmsIT8SetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer; Val: Double): cmsBool; StdCall; external LCMS2_SO;
2121 
cmsIT8GetDatanull2122 FUNCTION cmsIT8GetData(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar): PAnsiChar; StdCall; external LCMS2_SO;
2123 
cmsIT8GetDataDblnull2124 FUNCTION cmsIT8GetDataDbl(hIT8: cmsHANDLE;cPatch, cSample: PAnsiChar): Double; StdCall; external LCMS2_SO;
2125 
cmsIT8SetDatanull2126 FUNCTION cmsIT8SetData(hIT8: cmsHANDLE; cPatch, cSample, Val: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
2127 
cmsIT8SetDataDblnull2128 FUNCTION cmsIT8SetDataDbl(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar; Val: Double): cmsBool; StdCall; external LCMS2_SO;
2129 
cmsIT8SetDataFormatnull2130 FUNCTION cmsIT8SetDataFormat(hIT8: cmsHANDLE; n: Integer; Sample: PAnsiChar): cmsBool; StdCall; external LCMS2_SO;
cmsIT8EnumDataFormatnull2131 FUNCTION cmsIT8EnumDataFormat(hIT8: cmsHANDLE; var SampleNames: LPPAnsiChar): Integer; StdCall; external LCMS2_SO;
cmsIT8GetPatchNamenull2132 FUNCTION cmsIT8GetPatchName(hIT8: cmsHANDLE; nPatch: Integer; Buffer: PAnsiChar): PAnsiChar; StdCall; external LCMS2_SO;
2133 
2134 // The LABEL extension
2135 
cmsIT8SetTableByLabelnull2136 FUNCTION cmsIT8SetTableByLabel(hIT8: cmsHANDLE; cSet, cField, ExpectedType: PAnsiChar): Integer; StdCall; external LCMS2_SO;
2137 
cmsIT8FindDataFormatnull2138 FUNCTION cmsIT8FindDataFormat(hIT8: cmsHANDLE; cSample: PAnsiChar): Integer; StdCall; external LCMS2_SO;
2139 
2140 // Formatter for double
2141 PROCEDURE  cmsIT8DefineDblFormat(hIT8: cmsHANDLE; Formatter: PAnsiChar);  StdCall; external LCMS2_SO;
2142 
cmsGBDAllocnull2143 FUNCTION  cmsGBDAlloc(ContextID: cmsContext):cmsHANDLE; StdCall; external LCMS2_SO;
2144 PROCEDURE cmsGBDFree(hGBD: cmsHANDLE); StdCall; external LCMS2_SO;
cmsGDBAddPointnull2145 FUNCTION  cmsGDBAddPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall; external LCMS2_SO;
cmsGDBComputenull2146 FUNCTION  cmsGDBCompute(hGDB: cmsHANDLE; dwFlags: cmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
cmsGDBCheckPointnull2147 FUNCTION  cmsGDBCheckPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall; external LCMS2_SO;
2148 
cmsDetectBlackPointnull2149 FUNCTION cmsDetectBlackPoint( BlackPoint: LPcmsCIEXYZ; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
cmsDetectDestinationBlackPointnull2150 FUNCTION cmsDetectDestinationBlackPoint( BlackPoint: LPcmsCIEXYZ; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsBool; StdCall; external LCMS2_SO;
2151 
cmsDetectTACnull2152 FUNCTION cmsDetectTAC(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall; external LCMS2_SO;
2153 
cmsDesaturateLabnull2154 FUNCTION  cmsDesaturateLab(Lab: LPcmsCIELab; amax, amin, bmax, bmin: cmsFloat64Number): cmsBool; StdCall; external LCMS2_SO;
2155 
2156 END.
2157