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