2 // Little cms DELPHI wrapper
\r
3 //---------------------------------------------------------------------------------
\r
5 // Little Color Management System
\r
6 // Copyright (c) 1998-2010 Marti Maria Saguer
\r
8 // Permission is hereby granted, free of charge, to any person obtaining
\r
9 // a copy of this software and associated documentation files (the "Software"),
\r
10 // to deal in the Software without restriction, including without limitation
\r
11 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
\r
12 // and/or sell copies of the Software, and to permit persons to whom the Software
\r
13 // is furnished to do so, subject to the following conditions:
\r
15 // The above copyright notice and this permission notice shall be included in
\r
16 // all copies or substantial portions of the Software.
\r
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
19 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
\r
20 // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
21 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
\r
22 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
\r
23 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
\r
24 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
26 //---------------------------------------------------------------------------------
\r
47 cmsUInt8Number = Uint8;
\r
48 cmsInt8Number = Int8;
\r
49 cmsUInt16Number = UInt16;
\r
50 cmsInt16Number = Int16;
\r
52 cmsUInt32Number = UInt32;
\r
53 cmsInt32Number = Int32;
\r
54 cmsInt64Number = Int64;
\r
55 cmsUInt64Number = UInt64;
\r
57 cmsFloat32Number = Single;
\r
58 cmsFloat64Number = Double;
\r
60 LPcmsUInt8Number = ^cmsUInt8Number;
\r
61 LPcmsInt8Number = ^cmsInt8Number;
\r
62 LPcmsUInt16Number = ^cmsUInt16Number;
\r
63 LPcmsInt16Number = ^cmsInt16Number;
\r
65 LPcmsUInt32Number = ^cmsUInt32Number;
\r
66 LPcmsInt32Number = ^cmsInt32Number;
\r
67 LPcmsInt64Number = ^cmsInt64Number;
\r
68 LPcmsUInt64Number = ^cmsUInt64Number;
\r
70 LPcmsFloat32Number = ^cmsFloat32Number;
\r
71 LPcmsFloat64Number = ^cmsFloat64Number;
\r
75 cmsSignature = cmsUInt32Number;
\r
76 cmsU8Fixed8Number = cmsUInt16Number;
\r
77 cmsS15Fixed16Number = cmsInt32Number;
\r
78 cmsU16Fixed16Number = cmsUInt32Number;
\r
80 // Boolean type, which will be using the native integer
\r
85 // Some common definitions
\r
88 // D50 XYZ normalized to Y=1.0
\r
93 // V4 perceptual black
\r
94 cmsPERCEPTUAL_BLACK_X = 0.00336;
\r
95 cmsPERCEPTUAL_BLACK_Y = 0.0034731;
\r
96 cmsPERCEPTUAL_BLACK_Z = 0.00287;
\r
98 // Definitions in ICC spec
\r
99 cmsMagicNumber = $61637370; // 'acsp'
\r
100 lcmsSignature = $6c636d73; // 'lcms'
\r
105 // Base ICC type definitions
\r
106 cmsTagTypeSignature = (
\r
107 cmsSigChromaticityType = $6368726D, // 'chrm'
\r
108 cmsSigColorantOrderType = $636C726F, // 'clro'
\r
109 cmsSigColorantTableType = $636C7274, // 'clrt'
\r
110 cmsSigCrdInfoType = $63726469, // 'crdi'
\r
111 cmsSigCurveType = $63757276, // 'curv'
\r
112 cmsSigDataType = $64617461, // 'data'
\r
113 cmsSigDictType = $64696374, // 'dict'
\r
114 cmsSigDateTimeType = $6474696D, // 'dtim'
\r
115 cmsSigDeviceSettingsType = $64657673, // 'devs'
\r
116 cmsSigLut16Type = $6d667432, // 'mft2'
\r
117 cmsSigLut8Type = $6d667431, // 'mft1'
\r
118 cmsSigLutAtoBType = $6d414220, // 'mAB '
\r
119 cmsSigLutBtoAType = $6d424120, // 'mBA '
\r
120 cmsSigMeasurementType = $6D656173, // 'meas'
\r
121 cmsSigMultiLocalizedUnicodeType = $6D6C7563, // 'mluc'
\r
122 cmsSigMultiProcessElementType = $6D706574, // 'mpet'
\r
123 cmsSigNamedColorType = $6E636f6C, // 'ncol' -- DEPRECATED!
\r
124 cmsSigNamedColor2Type = $6E636C32, // 'ncl2'
\r
125 cmsSigParametricCurveType = $70617261, // 'para'
\r
126 cmsSigProfileSequenceDescType = $70736571, // 'pseq'
\r
127 cmsSigProfileSequenceIdType = $70736964, // 'psid'
\r
128 cmsSigResponseCurveSet16Type = $72637332, // 'rcs2'
\r
129 cmsSigS15Fixed16ArrayType = $73663332, // 'sf32'
\r
130 cmsSigScreeningType = $7363726E, // 'scrn'
\r
131 cmsSigSignatureType = $73696720, // 'sig '
\r
132 cmsSigTextType = $74657874, // 'text'
\r
133 cmsSigTextDescriptionType = $64657363, // 'desc'
\r
134 cmsSigU16Fixed16ArrayType = $75663332, // 'uf32'
\r
135 cmsSigUcrBgType = $62666420, // 'bfd '
\r
136 cmsSigUInt16ArrayType = $75693136, // 'ui16'
\r
137 cmsSigUInt32ArrayType = $75693332, // 'ui32'
\r
138 cmsSigUInt64ArrayType = $75693634, // 'ui64'
\r
139 cmsSigUInt8ArrayType = $75693038, // 'ui08'
\r
140 cmsSigViewingConditionsType = $76696577, // 'view'
\r
141 cmsSigXYZType = $58595A20, // 'XYZ '
\r
142 cmsSigVcgtType = $76636774 // 'vcgt'
\r
145 // Base ICC tag definitions
\r
146 cmsTagSignature = (
\r
147 cmsSigAToB0Tag = $41324230, // 'A2B0'
\r
148 cmsSigAToB1Tag = $41324231, // 'A2B1'
\r
149 cmsSigAToB2Tag = $41324232, // 'A2B2'
\r
150 cmsSigBlueColorantTag = $6258595A, // 'bXYZ'
\r
151 cmsSigBlueMatrixColumnTag = $6258595A, // 'bXYZ'
\r
152 cmsSigBlueTRCTag = $62545243, // 'bTRC'
\r
153 cmsSigBToA0Tag = $42324130, // 'B2A0'
\r
154 cmsSigBToA1Tag = $42324131, // 'B2A1'
\r
155 cmsSigBToA2Tag = $42324132, // 'B2A2'
\r
156 cmsSigCalibrationDateTimeTag = $63616C74, // 'calt'
\r
157 cmsSigCharTargetTag = $74617267, // 'targ'
\r
158 cmsSigChromaticAdaptationTag = $63686164, // 'chad'
\r
159 cmsSigChromaticityTag = $6368726D, // 'chrm'
\r
160 cmsSigColorantOrderTag = $636C726F, // 'clro'
\r
161 cmsSigColorantTableTag = $636C7274, // 'clrt'
\r
162 cmsSigColorantTableOutTag = $636C6F74, // 'clot'
\r
163 cmsSigColorimetricIntentImageStateTag = $63696973, // 'ciis'
\r
164 cmsSigCopyrightTag = $63707274, // 'cprt'
\r
165 cmsSigCrdInfoTag = $63726469, // 'crdi'
\r
166 cmsSigDataTag = $64617461, // 'data'
\r
167 cmsSigDateTimeTag = $6474696D, // 'dtim'
\r
168 cmsSigDeviceMfgDescTag = $646D6E64, // 'dmnd'
\r
169 cmsSigDeviceModelDescTag = $646D6464, // 'dmdd'
\r
170 cmsSigDeviceSettingsTag = $64657673, // 'devs'
\r
171 cmsSigDToB0Tag = $44324230, // 'D2B0'
\r
172 cmsSigDToB1Tag = $44324231, // 'D2B1'
\r
173 cmsSigDToB2Tag = $44324232, // 'D2B2'
\r
174 cmsSigDToB3Tag = $44324233, // 'D2B3'
\r
175 cmsSigBToD0Tag = $42324430, // 'B2D0'
\r
176 cmsSigBToD1Tag = $42324431, // 'B2D1'
\r
177 cmsSigBToD2Tag = $42324432, // 'B2D2'
\r
178 cmsSigBToD3Tag = $42324433, // 'B2D3'
\r
179 cmsSigGamutTag = $67616D74, // 'gamt'
\r
180 cmsSigGrayTRCTag = $6b545243, // 'kTRC'
\r
181 cmsSigGreenColorantTag = $6758595A, // 'gXYZ'
\r
182 cmsSigGreenMatrixColumnTag = $6758595A, // 'gXYZ'
\r
183 cmsSigGreenTRCTag = $67545243, // 'gTRC'
\r
184 cmsSigLuminanceTag = $6C756d69, // 'lumi'
\r
185 cmsSigMeasurementTag = $6D656173, // 'meas'
\r
186 cmsSigMediaBlackPointTag = $626B7074, // 'bkpt'
\r
187 cmsSigMediaWhitePointTag = $77747074, // 'wtpt'
\r
188 cmsSigNamedColorTag = $6E636f6C, // 'ncol' // Deprecated by the ICC
\r
189 cmsSigNamedColor2Tag = $6E636C32, // 'ncl2'
\r
190 cmsSigOutputResponseTag = $72657370, // 'resp'
\r
191 cmsSigPerceptualRenderingIntentGamutTag = $72696730, // 'rig0'
\r
192 cmsSigPreview0Tag = $70726530, // 'pre0'
\r
193 cmsSigPreview1Tag = $70726531, // 'pre1'
\r
194 cmsSigPreview2Tag = $70726532, // 'pre2'
\r
195 cmsSigProfileDescriptionTag = $64657363, // 'desc'
\r
196 cmsSigProfileSequenceDescTag = $70736571, // 'pseq'
\r
197 cmsSigProfileSequenceIdTag = $70736964, // 'psid'
\r
198 cmsSigPs2CRD0Tag = $70736430, // 'psd0'
\r
199 cmsSigPs2CRD1Tag = $70736431, // 'psd1'
\r
200 cmsSigPs2CRD2Tag = $70736432, // 'psd2'
\r
201 cmsSigPs2CRD3Tag = $70736433, // 'psd3'
\r
202 cmsSigPs2CSATag = $70733273, // 'ps2s'
\r
203 cmsSigPs2RenderingIntentTag = $70733269, // 'ps2i'
\r
204 cmsSigRedColorantTag = $7258595A, // 'rXYZ'
\r
205 cmsSigRedMatrixColumnTag = $7258595A, // 'rXYZ'
\r
206 cmsSigRedTRCTag = $72545243, // 'rTRC'
\r
207 cmsSigSaturationRenderingIntentGamutTag = $72696732, // 'rig2'
\r
208 cmsSigScreeningDescTag = $73637264, // 'scrd'
\r
209 cmsSigScreeningTag = $7363726E, // 'scrn'
\r
210 cmsSigTechnologyTag = $74656368, // 'tech'
\r
211 cmsSigUcrBgTag = $62666420, // 'bfd '
\r
212 cmsSigViewingCondDescTag = $76756564, // 'vued'
\r
213 cmsSigViewingConditionsTag = $76696577, // 'view'
\r
214 cmsSigVcgtTag = $76636774, // 'vcgt'
\r
215 cmsSigMetaTag = $6D657461 // 'meta'
\r
218 // ICC Technology tag
\r
219 cmsTechnologySignature = (
\r
220 cmsSigDigitalCamera = $6463616D, // 'dcam'
\r
221 cmsSigFilmScanner = $6673636E, // 'fscn'
\r
222 cmsSigReflectiveScanner = $7273636E, // 'rscn'
\r
223 cmsSigInkJetPrinter = $696A6574, // 'ijet'
\r
224 cmsSigThermalWaxPrinter = $74776178, // 'twax'
\r
225 cmsSigElectrophotographicPrinter = $6570686F, // 'epho'
\r
226 cmsSigElectrostaticPrinter = $65737461, // 'esta'
\r
227 cmsSigDyeSublimationPrinter = $64737562, // 'dsub'
\r
228 cmsSigPhotographicPaperPrinter = $7270686F, // 'rpho'
\r
229 cmsSigFilmWriter = $6670726E, // 'fprn'
\r
230 cmsSigVideoMonitor = $7669646D, // 'vidm'
\r
231 cmsSigVideoCamera = $76696463, // 'vidc'
\r
232 cmsSigProjectionTelevision = $706A7476, // 'pjtv'
\r
233 cmsSigCRTDisplay = $43525420, // 'CRT '
\r
234 cmsSigPMDisplay = $504D4420, // 'PMD '
\r
235 cmsSigAMDisplay = $414D4420, // 'AMD '
\r
236 cmsSigPhotoCD = $4B504344, // 'KPCD'
\r
237 cmsSigPhotoImageSetter = $696D6773, // 'imgs'
\r
238 cmsSigGravure = $67726176, // 'grav'
\r
239 cmsSigOffsetLithography = $6F666673, // 'offs'
\r
240 cmsSigSilkscreen = $73696C6B, // 'silk'
\r
241 cmsSigFlexography = $666C6578, // 'flex'
\r
242 cmsSigMotionPictureFilmScanner = $6D706673, // 'mpfs'
\r
243 cmsSigMotionPictureFilmRecorder = $6D706672, // 'mpfr'
\r
244 cmsSigDigitalMotionPictureCamera = $646D7063, // 'dmpc'
\r
245 cmsSigDigitalCinemaProjector = $64636A70 // 'dcpj'
\r
249 // ICC Color spaces
\r
250 cmsColorSpaceSignature = (
\r
251 cmsSigXYZData = $58595A20, // 'XYZ '
\r
252 cmsSigLabData = $4C616220, // 'Lab '
\r
253 cmsSigLuvData = $4C757620, // 'Luv '
\r
254 cmsSigYCbCrData = $59436272, // 'YCbr'
\r
255 cmsSigYxyData = $59787920, // 'Yxy '
\r
256 cmsSigRgbData = $52474220, // 'RGB '
\r
257 cmsSigGrayData = $47524159, // 'GRAY'
\r
258 cmsSigHsvData = $48535620, // 'HSV '
\r
259 cmsSigHlsData = $484C5320, // 'HLS '
\r
260 cmsSigCmykData = $434D594B, // 'CMYK'
\r
261 cmsSigCmyData = $434D5920, // 'CMY '
\r
262 cmsSigMCH1Data = $4D434831, // 'MCH1'
\r
263 cmsSigMCH2Data = $4D434832, // 'MCH2'
\r
264 cmsSigMCH3Data = $4D434833, // 'MCH3'
\r
265 cmsSigMCH4Data = $4D434834, // 'MCH4'
\r
266 cmsSigMCH5Data = $4D434835, // 'MCH5'
\r
267 cmsSigMCH6Data = $4D434836, // 'MCH6'
\r
268 cmsSigMCH7Data = $4D434837, // 'MCH7'
\r
269 cmsSigMCH8Data = $4D434838, // 'MCH8'
\r
270 cmsSigMCH9Data = $4D434839, // 'MCH9'
\r
271 cmsSigMCHAData = $4D43483A, // 'MCHA'
\r
272 cmsSigMCHBData = $4D43483B, // 'MCHB'
\r
273 cmsSigMCHCData = $4D43483C, // 'MCHC'
\r
274 cmsSigMCHDData = $4D43483D, // 'MCHD'
\r
275 cmsSigMCHEData = $4D43483E, // 'MCHE'
\r
276 cmsSigMCHFData = $4D43483F, // 'MCHF'
\r
277 cmsSigNamedData = $6e6d636c, // 'nmcl'
\r
278 cmsSig1colorData = $31434C52, // '1CLR'
\r
279 cmsSig2colorData = $32434C52, // '2CLR'
\r
280 cmsSig3colorData = $33434C52, // '3CLR'
\r
281 cmsSig4colorData = $34434C52, // '4CLR'
\r
282 cmsSig5colorData = $35434C52, // '5CLR'
\r
283 cmsSig6colorData = $36434C52, // '6CLR'
\r
284 cmsSig7colorData = $37434C52, // '7CLR'
\r
285 cmsSig8colorData = $38434C52, // '8CLR'
\r
286 cmsSig9colorData = $39434C52, // '9CLR'
\r
287 cmsSig10colorData = $41434C52, // 'ACLR'
\r
288 cmsSig11colorData = $42434C52, // 'BCLR'
\r
289 cmsSig12colorData = $43434C52, // 'CCLR'
\r
290 cmsSig13colorData = $44434C52, // 'DCLR'
\r
291 cmsSig14colorData = $45434C52, // 'ECLR'
\r
292 cmsSig15colorData = $46434C52, // 'FCLR'
\r
293 cmsSigLuvKData = $4C75764B // 'LuvK'
\r
296 // ICC Profile Class
\r
297 cmsProfileClassSignature = (
\r
298 cmsSigInputClass = $73636E72, // 'scnr'
\r
299 cmsSigDisplayClass = $6D6E7472, // 'mntr'
\r
300 cmsSigOutputClass = $70727472, // 'prtr'
\r
301 cmsSigLinkClass = $6C696E6B, // 'link'
\r
302 cmsSigAbstractClass = $61627374, // 'abst'
\r
303 cmsSigColorSpaceClass = $73706163, // 'spac'
\r
304 cmsSigNamedColorClass = $6e6d636c // 'nmcl'
\r
309 cmsPlatformSignature = (
\r
310 cmsSigMacintosh = $4150504C, // 'APPL'
\r
311 cmsSigMicrosoft = $4D534654, // 'MSFT'
\r
312 cmsSigSolaris = $53554E57, // 'SUNW'
\r
313 cmsSigSGI = $53474920, // 'SGI '
\r
314 cmsSigTaligent = $54474E54, // 'TGNT'
\r
315 cmsSigUnices = $2A6E6978 // '*nix' // From argyll -- Not official
\r
321 cmsSigPerceptualReferenceMediumGamut = $70726d67; //'prmg'
\r
323 // For cmsSigColorimetricIntentImageStateTag
\r
324 cmsSigSceneColorimetryEstimates = $73636F65; //'scoe'
\r
325 cmsSigSceneAppearanceEstimates = $73617065; //'sape'
\r
326 cmsSigFocalPlaneColorimetryEstimates = $66706365; //'fpce'
\r
327 cmsSigReflectionHardcopyOriginalColorimetry = $72686F63; //'rhoc'
\r
328 cmsSigReflectionPrintOutputColorimetry = $72706F63; //'rpoc'
\r
332 // Multi process elements types
\r
333 cmsStageSignature = (
\r
334 cmsSigCurveSetElemType = $63767374, //'cvst'
\r
335 cmsSigMatrixElemType = $6D617466, //'matf'
\r
336 cmsSigCLutElemType = $636C7574, //'clut'
\r
338 cmsSigBAcsElemType = $62414353, // 'bACS'
\r
339 cmsSigEAcsElemType = $65414353, // 'eACS'
\r
341 // Custom from here, not in the ICC Spec
\r
342 cmsSigXYZ2LabElemType = $6C327820, // 'l2x '
\r
343 cmsSigLab2XYZElemType = $78326C20, // 'x2l '
\r
344 cmsSigNamedColorElemType = $6E636C20, // 'ncl '
\r
345 cmsSigLabV2toV4 = $32203420, // '2 4 '
\r
346 cmsSigLabV4toV2 = $34203220, // '4 2 '
\r
349 cmsSigIdentityElemType = $69646E20 // 'idn '
\r
352 // Types of CurveElements
\r
353 cmsCurveSegSignature = (
\r
355 cmsSigFormulaCurveSeg = $70617266, // 'parf'
\r
356 cmsSigSampledCurveSeg = $73616D66, // 'samf'
\r
357 cmsSigSegmentedCurve = $63757266 // 'curf'
\r
362 // Used in ResponseCurveType
\r
363 cmsSigStatusA = $53746141; //'StaA'
\r
364 cmsSigStatusE = $53746145; //'StaE'
\r
365 cmsSigStatusI = $53746149; //'StaI'
\r
366 cmsSigStatusT = $53746154; //'StaT'
\r
367 cmsSigStatusM = $5374614D; //'StaM'
\r
368 cmsSigDN = $444E2020; //'DN '
\r
369 cmsSigDNP = $444E2050; //'DN P'
\r
370 cmsSigDNN = $444E4E20; //'DNN '
\r
371 cmsSigDNNP = $444E4E50; //'DNNP'
\r
373 // Device attributes, currently defined values correspond to the low 4 bytes
\r
374 // of the 8 byte attribute quantity
\r
376 cmsTransparency = 1;
\r
382 // Common structures in ICC tags
\r
383 cmsICCData = PACKED RECORD
\r
384 len : cmsUInt32Number;
\r
385 flag : cmsUInt32Number;
\r
386 data : Array [0..1] of cmsUInt8Number;
\r
390 cmsDateTimeNumber = PACKED RECORD
\r
391 year: cmsUInt16Number;
\r
392 month: cmsUInt16Number;
\r
393 day: cmsUInt16Number;
\r
394 hours: cmsUInt16Number;
\r
395 minutes: cmsUInt16Number;
\r
396 seconds: cmsUInt16Number;
\r
401 cmsEncodedXYZNumber = PACKED RECORD
\r
402 X: cmsS15Fixed16Number;
\r
403 Y: cmsS15Fixed16Number;
\r
404 Z: cmsS15Fixed16Number;
\r
408 // Profile ID as computed by MD5 algorithm
\r
409 cmsProfileID = PACKED RECORD
\r
411 1: (ID8: Array[0..15] OF cmsUInt8Number);
\r
412 2: (ID16: Array[0..7] OF cmsUInt16Number);
\r
413 3: (ID32: Array[0..3] OF cmsUInt32Number);
\r
418 // ----------------------------------------------------------------------------------------------
\r
419 // ICC profile internal base types. Strictly, shouldn't be declared in this unit, but maybe
\r
420 // somebody want to use this info for accessing profile header directly, so here it is.
\r
422 // Profile header -- it is 32-bit aligned, so no issues are expected on alignment
\r
423 cmsICCHeader = PACKED RECORD
\r
424 size: cmsUInt32Number; // Profile size in bytes
\r
425 cmmId: cmsSignature; // CMM for this profile
\r
426 version: cmsUInt32Number; // Format version number
\r
427 deviceClass: cmsProfileClassSignature; // Type of profile
\r
428 colorSpace: cmsColorSpaceSignature; // Color space of data
\r
429 pcs: cmsColorSpaceSignature; // PCS, XYZ or Lab only
\r
430 date: cmsDateTimeNumber; // Date profile was created
\r
431 magic: cmsSignature; // Magic Number to identify an ICC profile
\r
432 platform: cmsPlatformSignature; // Primary Platform
\r
433 flags: cmsUInt32Number; // Various bit settings
\r
434 manufacturer: cmsSignature; // Device manufacturer
\r
435 model: cmsUInt32Number; // Device model number
\r
436 attributes: cmsUInt64Number; // Device attributes
\r
437 renderingIntent:cmsUInt32Number; // Rendering intent
\r
438 illuminant: cmsEncodedXYZNumber; // Profile illuminant
\r
439 creator: cmsSignature; // Profile creator
\r
440 profileID: cmsProfileID; // Profile ID using MD5
\r
441 reserved: array [0..27] of cmsInt8Number; // Reserved for future use
\r
445 cmsTagBase = PACKED RECORD
\r
446 sig: cmsTagTypeSignature;
\r
447 reserved: array[0..3] of cmsInt8Number;
\r
450 // A tag entry in directory
\r
451 cmsTagEntry = PACKED RECORD
\r
452 sig: cmsTagSignature; // The tag signature
\r
453 offset: cmsUInt32Number; // Start of tag
\r
454 size: cmsUInt32Number; // Size in bytes
\r
458 cmsContext = Pointer; // Context identifier for multithreaded environments
\r
459 cmsHANDLE = Pointer; // Generic handle
\r
460 cmsHPROFILE = Pointer; // Opaque typedefs to hide internals
\r
461 cmsHTRANSFORM = Pointer;
\r
466 cmsMAXCHANNELS = 16; // Maximum number of channels in ICC profiles
\r
468 // Format of pixel is defined by one cmsUInt32Number, using bit fields as follows
\r
470 // A O TTTTT U Y F P X S EEE CCCC BBB
\r
472 // A: Floating point -- With this flag we can differentiate 16 bits as float and as int
\r
473 // O: Optimized -- previous optimization already returns the final 8-bit value
\r
475 // F: Flavor 0=MinIsBlack(Chocolate) 1=MinIsWhite(Vanilla)
\r
476 // P: Planar? 0=Chunky, 1=Planar
\r
477 // X: swap 16 bps endianess?
\r
478 // S: Do swap? ie, BGR, KYMC
\r
479 // E: Extra samples
\r
480 // C: Channels (Samples per pixel)
\r
481 // B: bytes per sample
\r
482 // Y: Swap first - changes ABGR to BGRA and KCMY to CMYK
\r
484 FUNCTION FLOAT_SH(a: cmsUInt32Number): cmsUInt32Number;
\r
485 FUNCTION OPTIMIZED_SH(s: cmsUInt32Number): cmsUInt32Number;
\r
486 FUNCTION COLORSPACE_SH(s: cmsUInt32Number):cmsUInt32Number;
\r
487 FUNCTION SWAPFIRST_SH(s: cmsUInt32Number):cmsUInt32Number;
\r
488 FUNCTION FLAVOR_SH(s: cmsUInt32Number):cmsUInt32Number;
\r
489 FUNCTION PLANAR_SH(p: cmsUInt32Number):cmsUInt32Number;
\r
490 FUNCTION ENDIAN16_SH(e: cmsUInt32Number):cmsUInt32Number;
\r
491 FUNCTION DOSWAP_SH(e: cmsUInt32Number):cmsUInt32Number;
\r
492 FUNCTION EXTRA_SH(e: cmsUInt32Number):cmsUInt32Number;
\r
493 FUNCTION CHANNELS_SH(c: cmsUInt32Number):cmsUInt32Number;
\r
494 FUNCTION BYTES_SH(b: cmsUInt32Number):cmsUInt32Number;
\r
497 FUNCTION T_FLOAT(a: cmsUInt32Number): cmsUInt32Number;
\r
498 FUNCTION T_OPTIMIZED(o: cmsUInt32Number): cmsUInt32Number;
\r
499 FUNCTION T_COLORSPACE(s: cmsUInt32Number): cmsUInt32Number;
\r
500 FUNCTION T_SWAPFIRST(s: cmsUInt32Number): cmsUInt32Number;
\r
501 FUNCTION T_FLAVOR(s: cmsUInt32Number): cmsUInt32Number;
\r
502 FUNCTION T_PLANAR(p: cmsUInt32Number): cmsUInt32Number;
\r
503 FUNCTION T_ENDIAN16(e: cmsUInt32Number): cmsUInt32Number;
\r
504 FUNCTION T_DOSWAP(e: cmsUInt32Number): cmsUInt32Number;
\r
505 FUNCTION T_EXTRA(e: cmsUInt32Number): cmsUInt32Number;
\r
506 FUNCTION T_CHANNELS(c: cmsUInt32Number): cmsUInt32Number;
\r
507 FUNCTION T_BYTES(b: cmsUInt32Number): cmsUInt32Number;
\r
514 PT_ANY = 0; // Don't check colorspace
\r
515 // 1 & 2 are reserved
\r
521 PT_YUV = 8; // Lu'v'
\r
524 PT_YUVK = 11; // Lu'v'K
\r
545 PT_LabV2 = 30; // Identical to PT_Lab, but using the V2 old encoding
\r
548 // Format descriptors
\r
549 TYPE_GRAY_8 = $030009;
\r
550 TYPE_GRAY_8_REV = $032009;
\r
551 TYPE_GRAY_16 = $03000a;
\r
552 TYPE_GRAY_16_REV = $03200a;
\r
553 TYPE_GRAY_16_SE = $03080a;
\r
554 TYPE_GRAYA_8 = $030089;
\r
555 TYPE_GRAYA_16 = $03008a;
\r
556 TYPE_GRAYA_16_SE = $03088a;
\r
557 TYPE_GRAYA_8_PLANAR = $031089;
\r
558 TYPE_GRAYA_16_PLANAR = $03108a;
\r
559 TYPE_RGB_8 = $040019;
\r
560 TYPE_RGB_8_PLANAR = $041019;
\r
561 TYPE_BGR_8 = $040419;
\r
562 TYPE_BGR_8_PLANAR = $041419;
\r
563 TYPE_RGB_16 = $04001a;
\r
564 TYPE_RGB_16_PLANAR = $04101a;
\r
565 TYPE_RGB_16_SE = $04081a;
\r
566 TYPE_BGR_16 = $04041a;
\r
567 TYPE_BGR_16_PLANAR = $04141a;
\r
568 TYPE_BGR_16_SE = $040c1a;
\r
569 TYPE_RGBA_8 = $040099;
\r
570 TYPE_RGBA_8_PLANAR = $041099;
\r
571 TYPE_RGBA_16 = $04009a;
\r
572 TYPE_RGBA_16_PLANAR = $04109a;
\r
573 TYPE_RGBA_16_SE = $04089a;
\r
574 TYPE_ARGB_8 = $044099;
\r
575 TYPE_ARGB_16 = $04409a;
\r
576 TYPE_ABGR_8 = $040499;
\r
577 TYPE_ABGR_16 = $04049a;
\r
578 TYPE_ABGR_16_PLANAR = $04149a;
\r
579 TYPE_ABGR_16_SE = $040c9a;
\r
580 TYPE_BGRA_8 = $044499;
\r
581 TYPE_BGRA_16 = $04449a;
\r
582 TYPE_BGRA_16_SE = $04489a;
\r
583 TYPE_CMY_8 = $050019;
\r
584 TYPE_CMY_8_PLANAR = $051019;
\r
585 TYPE_CMY_16 = $05001a;
\r
586 TYPE_CMY_16_PLANAR = $05101a;
\r
587 TYPE_CMY_16_SE = $05081a;
\r
588 TYPE_CMYK_8 = $060021;
\r
589 TYPE_CMYKA_8 = $0600a1;
\r
590 TYPE_CMYK_8_REV = $062021;
\r
591 TYPE_YUVK_8 = $062021;
\r
592 TYPE_CMYK_8_PLANAR = $061021;
\r
593 TYPE_CMYK_16 = $060022;
\r
594 TYPE_CMYK_16_REV = $062022;
\r
595 TYPE_YUVK_16 = $062022;
\r
596 TYPE_CMYK_16_PLANAR = $061022;
\r
597 TYPE_CMYK_16_SE = $060822;
\r
598 TYPE_KYMC_8 = $060421;
\r
599 TYPE_KYMC_16 = $060422;
\r
600 TYPE_KYMC_16_SE = $060c22;
\r
601 TYPE_KCMY_8 = $064021;
\r
602 TYPE_KCMY_8_REV = $066021;
\r
603 TYPE_KCMY_16 = $064022;
\r
604 TYPE_KCMY_16_REV = $066022;
\r
605 TYPE_KCMY_16_SE = $064822;
\r
606 TYPE_CMYK5_8 = $130029;
\r
607 TYPE_CMYK5_16 = $13002a;
\r
608 TYPE_CMYK5_16_SE = $13082a;
\r
609 TYPE_KYMC5_8 = $130429;
\r
610 TYPE_KYMC5_16 = $13042a;
\r
611 TYPE_KYMC5_16_SE = $130c2a;
\r
612 TYPE_CMYK6_8 = $140031;
\r
613 TYPE_CMYK6_8_PLANAR = $141031;
\r
614 TYPE_CMYK6_16 = $140032;
\r
615 TYPE_CMYK6_16_PLANAR = $141032;
\r
616 TYPE_CMYK6_16_SE = $140832;
\r
617 TYPE_CMYK7_8 = $150039;
\r
618 TYPE_CMYK7_16 = $15003a;
\r
619 TYPE_CMYK7_16_SE = $15083a;
\r
620 TYPE_KYMC7_8 = $150439;
\r
621 TYPE_KYMC7_16 = $15043a;
\r
622 TYPE_KYMC7_16_SE = $150c3a;
\r
623 TYPE_CMYK8_8 = $160041;
\r
624 TYPE_CMYK8_16 = $160042;
\r
625 TYPE_CMYK8_16_SE = $160842;
\r
626 TYPE_KYMC8_8 = $160441;
\r
627 TYPE_KYMC8_16 = $160442;
\r
628 TYPE_KYMC8_16_SE = $160c42;
\r
629 TYPE_CMYK9_8 = $170049;
\r
630 TYPE_CMYK9_16 = $17004a;
\r
631 TYPE_CMYK9_16_SE = $17084a;
\r
632 TYPE_KYMC9_8 = $170449;
\r
633 TYPE_KYMC9_16 = $17044a;
\r
634 TYPE_KYMC9_16_SE = $170c4a;
\r
635 TYPE_CMYK10_8 = $180051;
\r
636 TYPE_CMYK10_16 = $180052;
\r
637 TYPE_CMYK10_16_SE = $180852;
\r
638 TYPE_KYMC10_8 = $180451;
\r
639 TYPE_KYMC10_16 = $180452;
\r
640 TYPE_KYMC10_16_SE = $180c52;
\r
641 TYPE_CMYK11_8 = $190059;
\r
642 TYPE_CMYK11_16 = $19005a;
\r
643 TYPE_CMYK11_16_SE = $19085a;
\r
644 TYPE_KYMC11_8 = $190459;
\r
645 TYPE_KYMC11_16 = $19045a;
\r
646 TYPE_KYMC11_16_SE = $190c5a;
\r
647 TYPE_CMYK12_8 = $1a0061;
\r
648 TYPE_CMYK12_16 = $1a0062;
\r
649 TYPE_CMYK12_16_SE = $1a0862;
\r
650 TYPE_KYMC12_8 = $1a0461;
\r
651 TYPE_KYMC12_16 = $1a0462;
\r
652 TYPE_KYMC12_16_SE = $1a0c62;
\r
653 TYPE_XYZ_16 = $09001a;
\r
654 TYPE_Lab_8 = $0a0019;
\r
655 TYPE_ALab_8 = $0a0499;
\r
656 TYPE_Lab_16 = $0a001a;
\r
657 TYPE_Yxy_16 = $0e001a;
\r
658 TYPE_YCbCr_8 = $070019;
\r
659 TYPE_YCbCr_8_PLANAR = $071019;
\r
660 TYPE_YCbCr_16 = $07001a;
\r
661 TYPE_YCbCr_16_PLANAR = $07101a;
\r
662 TYPE_YCbCr_16_SE = $07081a;
\r
663 TYPE_YUV_8 = $080019;
\r
664 TYPE_YUV_8_PLANAR = $081019;
\r
665 TYPE_YUV_16 = $08001a;
\r
666 TYPE_YUV_16_PLANAR = $08101a;
\r
667 TYPE_YUV_16_SE = $08081a;
\r
668 TYPE_HLS_8 = $0d0019;
\r
669 TYPE_HLS_8_PLANAR = $0d1019;
\r
670 TYPE_HLS_16 = $0d001a;
\r
671 TYPE_HLS_16_PLANAR = $0d101a;
\r
672 TYPE_HLS_16_SE = $0d081a;
\r
673 TYPE_HSV_8 = $0c0019;
\r
674 TYPE_HSV_8_PLANAR = $0c1019;
\r
675 TYPE_HSV_16 = $0c001a;
\r
676 TYPE_HSV_16_PLANAR = $0c101a;
\r
677 TYPE_HSV_16_SE = $0c081a;
\r
679 TYPE_NAMED_COLOR_INDEX = $000A;
\r
681 TYPE_XYZ_FLT = $49001c;
\r
682 TYPE_Lab_FLT = $4a001c;
\r
683 TYPE_GRAY_FLT = $43000c;
\r
684 TYPE_RGB_FLT = $44001c;
\r
685 TYPE_CMYK_FLT = $460024;
\r
686 TYPE_XYZA_FLT = $49009c;
\r
687 TYPE_LabA_FLT = $4a009c;
\r
688 TYPE_RGBA_FLT = $44009c;
\r
689 TYPE_XYZ_DBL = $490018;
\r
690 TYPE_Lab_DBL = $4a0018;
\r
691 TYPE_GRAY_DBL = $430008;
\r
692 TYPE_RGB_DBL = $440018;
\r
693 TYPE_CMYK_DBL = $460020;
\r
694 TYPE_LabV2_8 = $1e0019;
\r
695 TYPE_ALabV2_8 = $1e0499;
\r
696 TYPE_LabV2_16 = $1e001a;
\r
702 // Colorimetric spaces
\r
704 cmsCIEXYZ = PACKED RECORD
\r
705 X, Y, Z : cmsFloat64Number;
\r
707 LPcmsCIEXYZ = ^cmsCIEXYZ;
\r
709 cmsCIExyY = PACKED RECORD
\r
710 x, y, YY : cmsFloat64Number
\r
712 LPcmsCIExyY = ^cmsCIEXYY;
\r
714 cmsCIELab = PACKED RECORD
\r
715 L, a, b: cmsFloat64Number
\r
717 LPcmsCIELab = ^cmsCIELab;
\r
719 cmsCIELCh = PACKED RECORD
\r
720 L, C, h : cmsFloat64Number
\r
722 LPcmsCIELCh = ^cmsCIELCh;
\r
724 cmsJCh = PACKED RECORD
\r
725 J, C, h : cmsFloat64Number
\r
727 LPcmsJCh = ^cmsJCH;
\r
730 cmsCIEXYZTRIPLE = PACKED RECORD
\r
731 Red, Green, Blue : cmsCIEXYZ
\r
733 LPcmsCIEXYZTRIPLE = ^cmsCIEXYZTRIPLE;
\r
736 cmsCIExyYTRIPLE = PACKED RECORD
\r
737 Red, Green, Blue : cmsCIExyY
\r
739 LPcmsCIExyYTRIPLE = ^cmsCIExyYTRIPLE;
\r
744 // Illuminant types for structs below
\r
745 cmsILLUMINANT_TYPE_UNKNOWN = $0000000;
\r
746 cmsILLUMINANT_TYPE_D50 = $0000001;
\r
747 cmsILLUMINANT_TYPE_D65 = $0000002;
\r
748 cmsILLUMINANT_TYPE_D93 = $0000003;
\r
749 cmsILLUMINANT_TYPE_F2 = $0000004;
\r
750 cmsILLUMINANT_TYPE_D55 = $0000005;
\r
751 cmsILLUMINANT_TYPE_A = $0000006;
\r
752 cmsILLUMINANT_TYPE_E = $0000007;
\r
753 cmsILLUMINANT_TYPE_F8 = $0000008;
\r
757 cmsICCMeasurementConditions = PACKED RECORD
\r
759 Observer: cmsUInt32Number; // 0 = unknown, 1=CIE 1931, 2=CIE 1964
\r
760 Backing: cmsCIEXYZ; // Value of backing
\r
761 Geometry: cmsUInt32Number; // 0=unknown, 1=45/0, 0/45 2=0d, d/0
\r
762 Flare: cmsFloat64Number; // 0..1.0
\r
763 IlluminantType: cmsUInt32Number;
\r
767 cmsICCViewingConditions = PACKED RECORD
\r
768 IlluminantXYZ: cmsCIEXYZ; // Not the same struct as CAM02,
\r
769 SurroundXYZ: cmsCIEXYZ; // This is for storing the tag
\r
770 IlluminantType: cmsUInt32Number; // viewing condition
\r
774 // Plug-In registering ---------------------------------------------------------------------------------------------------
\r
776 FUNCTION cmsPlugin(Plugin: Pointer): cmsBool; StdCall;
\r
777 PROCEDURE cmsUnregisterPlugins; StdCall;
\r
779 // Error logging ----------------------------------------------------------------------------------------------------------
\r
781 // There is no error handling at all. When a function fails, it returns proper value.
\r
782 // For example, all create functions does return NULL on failure. Other may return FALSE.
\r
783 // It may be interesting, for the developer, to know why the function is failing.
\r
784 // for that reason, lcms2 does offer a logging function. This function will get
\r
785 // an ENGLISH string with some clues on what is going wrong. You can show this
\r
786 // info to the end user if you wish, or just create some sort of log on disk.
\r
787 // The logging function should NOT terminate the program, as this obviously can leave
\r
788 // unfreed resources. It is the programmer's responsibility to check each function
\r
789 // return code to make sure it didn't fail.
\r
793 cmsERROR_UNDEFINED = 0;
\r
795 cmsERROR_RANGE = 2;
\r
796 cmsERROR_INTERNAL = 3;
\r
800 cmsERROR_WRITE = 7;
\r
801 cmsERROR_UNKNOWN_EXTENSION = 8;
\r
802 cmsERROR_COLORSPACE_CHECK = 9;
\r
803 cmsERROR_ALREADY_DEFINED = 10;
\r
804 cmsERROR_BAD_SIGNATURE = 11;
\r
805 cmsERROR_CORRUPTION_DETECTED = 12;
\r
806 cmsERROR_NOT_SUITABLE = 13;
\r
808 // Error logger is called with the ContextID when a message is raised. This gives the
\r
809 // chance to know which thread is responsible of the warning and any environment associated
\r
810 // with it. Non-multithreading applications may safely ignore this parameter.
\r
811 // Note that under certain special circumstances, ContextID may be NULL.
\r
815 cmsLogErrorHandlerFunction = PROCEDURE( ContextID: cmsContext; ErrorCode: cmsUInt32Number; Text: PAnsiChar); CDecl;
\r
817 // Allows user to set any specific logger
\r
818 PROCEDURE cmsSetLogErrorHandler(Fn: cmsLogErrorHandlerFunction); StdCall;
\r
821 // Conversions --------------------------------------------------------------------------------------------------------------
\r
824 // Returns pointers to constant structs
\r
825 FUNCTION cmsD50_XYZ: LPcmsCIEXYZ; StdCall;
\r
826 FUNCTION cmsD50_xyY: LPcmsCIExyY; StdCall;
\r
828 // Colorimetric space conversions
\r
829 PROCEDURE cmsXYZ2xyY(Dest: LPcmsCIExyY; Source: LPcmsCIEXYZ); StdCall;
\r
830 PROCEDURE cmsxyY2XYZ(Dest: LPcmsCIEXYZ; Source: LPcmsCIExyY); StdCall;
\r
831 PROCEDURE cmsLab2XYZ(WhitePoint: LPcmsCIEXYZ; xyz: LPcmsCIEXYZ; Lab: LPcmsCIELab); StdCall;
\r
832 PROCEDURE cmsXYZ2Lab(WhitePoint: LPcmsCIEXYZ; Lab: LPcmsCIELab; xyz: LPcmsCIEXYZ); StdCall;
\r
833 PROCEDURE cmsLab2LCh(LCh: LPcmsCIELCh; Lab: LPcmsCIELab); StdCall;
\r
834 PROCEDURE cmsLCh2Lab(Lab: LPcmsCIELab; LCh: LPcmsCIELCh); StdCall;
\r
836 // Encoding /Decoding on PCS
\r
837 PROCEDURE cmsLabEncoded2Float(Lab: LPcmsCIELab; wLab: Pointer); StdCall;
\r
838 PROCEDURE cmsLabEncoded2FloatV2(Lab: LPcmsCIELab; wLab: Pointer); StdCall;
\r
839 PROCEDURE cmsFloat2LabEncoded(wLab: Pointer; Lab: LPcmsCIELab); StdCall;
\r
840 PROCEDURE cmsFloat2LabEncodedV2(wLab: Pointer; Lab: LPcmsCIELab); StdCall;
\r
841 PROCEDURE cmsXYZEncoded2Float(fxyz : LPcmsCIEXYZ; XYZ: Pointer); StdCall;
\r
842 PROCEDURE cmsFloat2XYZEncoded(XYZ: Pointer; fXYZ: LPcmsCIEXYZ); StdCall;
\r
846 FUNCTION cmsDeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
\r
847 FUNCTION cmsCIE94DeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
\r
848 FUNCTION cmsBFDdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
\r
849 FUNCTION cmsCMCdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
\r
850 FUNCTION cmsCIE2000DeltaE(Lab1, Lab2: LPcmsCIELab; Kl, Kc, Kh: Double): Double; StdCall;
\r
853 // Temperature <-> Chromaticity (Black body)
\r
854 FUNCTION cmsWhitePointFromTemp(var WhitePoint: cmsCIExyY; TempK: cmsFloat64Number) : cmsBool; StdCall;
\r
855 FUNCTION cmsTempFromWhitePoint(var TeampK: cmsFloat64Number; var WhitePoint: cmsCIExyY) : cmsBool; StdCall;
\r
858 // Chromatic adaptation
\r
859 FUNCTION cmsAdaptToIlluminant(Result: LPcmsCIEXYZ; SourceWhitePt: LPcmsCIEXYZ;
\r
860 Illuminant: LPcmsCIEXYZ; Value: LPcmsCIEXYZ): cmsBool; StdCall;
\r
863 // CIECAM02 ---------------------------------------------------------------------------------------------------
\r
865 // Viewing conditions. Please note those are CAM model viewing conditions, and not the ICC tag viewing
\r
866 // conditions, which I'm naming cmsICCViewingConditions to make differences evident. Unfortunately, the tag
\r
867 // cannot deal with surround La, Yb and D value so is basically useless to store CAM02 viewing conditions.
\r
874 CUTSHEET_SURROUND = 4;
\r
880 cmsViewingConditions = PACKED RECORD
\r
882 WhitePoint: cmsCIEXYZ;
\r
883 Yb : cmsFloat64Number;
\r
884 La : cmsFloat64Number;
\r
885 surround : Integer;
\r
886 D_value : cmsFloat64Number
\r
890 LPcmsViewingConditions = ^cmsViewingConditions;
\r
892 FUNCTION cmsCIECAM02Init(pVC : LPcmsViewingConditions ) : Pointer; StdCall;
\r
893 PROCEDURE cmsCIECAM02Done(hModel : Pointer); StdCall;
\r
894 PROCEDURE cmsCIECAM02Forward(hModel: Pointer; pIn: LPcmsCIEXYZ; pOut: LPcmsJCh ); StdCall;
\r
895 PROCEDURE cmsCIECAM02Reverse(hModel: Pointer; pIn: LPcmsJCh; pOut: LPcmsCIEXYZ ); StdCall;
\r
897 // Tone curves -----------------------------------------------------------------------------------------
\r
899 // This describes a curve segment. For a table of supported types, see the manual. User can increase the number of
\r
900 // available types by using a proper plug-in. Parametric segments allow 10 parameters at most
\r
903 cmsCurveSegment = PACKED RECORD
\r
904 x0, x1: cmsFloat32Number; // Domain; for x0 < x <= x1
\r
905 PType: cmsInt32Number; // Parametric type, Type == 0 means sampled segment. Negative values are reserved
\r
906 Params: array [0..9] of cmsFloat64Number; // Parameters if Type != 0
\r
907 nGridPoints: cmsUInt32Number; // Number of grid points if Type == 0
\r
908 SampledPoints: LPcmsFloat32Number; // Points to an array of floats if Type == 0
\r
911 LPcmsToneCurve = Pointer;
\r
912 LPcmsCurveSegmentArray = ^cmsCurveSegmentArray;
\r
913 cmsCurveSegmentArray = array[0..0] of cmsCurveSegment;
\r
915 LPcmsFloat64NumberArray = ^cmsFloat64NumberArray;
\r
916 cmsFloat64NumberArray = array[0..0] of cmsFloat64Number;
\r
918 LPcmsUInt16NumberArray = ^cmsUInt16NumberArray;
\r
919 cmsUInt16NumberArray = array[0..0] of cmsUInt16Number;
\r
921 LPcmsFloat32NumberArray = ^cmsFloat32NumberArray;
\r
922 cmsFloat32NumberArray = array[0..0] of cmsFloat32Number;
\r
924 LPLPcmsToneCurveArray = ^LPcmsToneCurveArray;
\r
925 LPcmsToneCurveArray = array[0..0] of LPcmsToneCurve;
\r
927 LPcmsUInt32NumberArray = ^cmsUInt32NumberArray;
\r
928 cmsUInt32NumberArray = array[0..0] of cmsUInt32Number;
\r
930 FUNCTION cmsBuildSegmentedToneCurve(ContextID: cmsContext; nSegments: cmsInt32Number; Segments: LPcmsCurveSegmentArray): LPcmsToneCurve; StdCall;
\r
931 FUNCTION cmsBuildParametricToneCurve(ContextID: cmsContext; CType: cmsInt32Number; Params: LPcmsFloat64NumberArray): LPcmsToneCurve; StdCall;
\r
932 FUNCTION cmsBuildGamma(ContextID: cmsContext; Gamma: cmsFloat64Number): LPcmsToneCurve; StdCall;
\r
933 FUNCTION cmsBuildTabulatedToneCurve16(ContextID: cmsContext; nEntries: cmsInt32Number; values: LPcmsUInt16NumberArray): LPcmsToneCurve; StdCall;
\r
934 FUNCTION cmsBuildTabulatedToneCurveFloat(ContextID: cmsContext; nEntries: cmsUInt32Number; values: LPcmsFloat32NumberArray): LPcmsToneCurve; StdCall;
\r
935 PROCEDURE cmsFreeToneCurve(Curve: LPcmsToneCurve); StdCall;
\r
936 PROCEDURE cmsFreeToneCurveTriple(Curve: LPLPcmsToneCurveArray); StdCall;
\r
937 FUNCTION cmsDupToneCurve(Src: LPcmsToneCurve): LPcmsToneCurve; StdCall;
\r
938 FUNCTION cmsReverseToneCurve(InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall;
\r
939 FUNCTION cmsReverseToneCurveEx(nResultSamples: cmsInt32Number; InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall;
\r
940 FUNCTION cmsJoinToneCurve(ContextID: cmsContext; X, Y: LPcmsToneCurve; nPoints: cmsUInt32Number ): LPcmsToneCurve; StdCall;
\r
941 FUNCTION cmsSmoothToneCurve(Tab: LPcmsToneCurve; lambda: cmsFloat64Number): cmsBool; StdCall;
\r
942 FUNCTION cmsEvalToneCurveFloat(Curve: LPcmsToneCurve; v: cmsFloat32Number):cmsFloat32Number; StdCall;
\r
943 FUNCTION cmsEvalToneCurve16(Curve: LPcmsToneCurve; v:cmsUInt16Number):cmsUInt16Number; StdCall;
\r
944 FUNCTION cmsIsToneCurveMultisegment(InGamma: LPcmsToneCurve):cmsBool; StdCall;
\r
945 FUNCTION cmsIsToneCurveLinear(Curve: LPcmsToneCurve):cmsBool; StdCall;
\r
946 FUNCTION cmsIsToneCurveMonotonic(t: LPcmsToneCurve):cmsBool; StdCall;
\r
947 FUNCTION cmsIsToneCurveDescending(t: LPcmsToneCurve):cmsBool; StdCall;
\r
948 FUNCTION cmsGetToneCurveParametricType(t: LPcmsToneCurve):cmsInt32Number; StdCall;
\r
949 FUNCTION cmsEstimateGamma(t: LPcmsToneCurve; Precision:cmsFloat64Number):cmsFloat64Number; StdCall;
\r
952 // Implements pipelines of multi-processing elements -------------------------------------------------------------
\r
955 LPcmsPipeline = Pointer;
\r
956 LPcmsStage = Pointer;
\r
957 LPLPcmsStage = ^LPcmsStage;
\r
959 // Those are hi-level pipelines
\r
960 FUNCTION cmsPipelineAlloc(ContextID: cmsContext; InputChannels, OutputChannels: cmsUInt32Number): LPcmsPipeline; StdCall;
\r
961 PROCEDURE cmsPipelineFree(lut: LPcmsPipeline); StdCall;
\r
962 FUNCTION cmsPipelineDup(Orig: LPcmsPipeline): LPcmsPipeline; StdCall;
\r
963 FUNCTION cmsPipelineInputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall;
\r
964 FUNCTION cmsPipelineOutputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall;
\r
966 FUNCTION cmsPipelineStageCount(lut: LPcmsPipeline): cmsUInt32Number; StdCall;
\r
967 FUNCTION cmsPipelineGetPtrToFirstStage(lut: LPcmsPipeline): LPcmsStage; StdCall;
\r
968 FUNCTION cmsPipelineGetPtrToLastStage(lut: LPcmsPipeline): LPcmsStage; StdCall;
\r
970 PROCEDURE cmsPipelineEval16(Inv, Outv: LPcmsUInt16NumberArray; lut: LPcmsPipeline); StdCall;
\r
971 PROCEDURE cmsPipelineEvalFloat(Inv, Outv: LPcmsFloat32NumberArray; lut: LPcmsPipeline); StdCall;
\r
973 FUNCTION cmsPipelineEvalReverseFloat(Target, Result, Hint: LPcmsFloat32NumberArray; lut: LPcmsPipeline): cmsBool; StdCall;
\r
974 FUNCTION cmsPipelineCat(l1, l2: LPcmsPipeline): cmsBool; StdCall;
\r
975 FUNCTION cmsPipelineSetSaveAs8bitsFlag(lut: LPcmsPipeline; On: cmsBool): cmsBool; StdCall;
\r
977 // Where to place/locate the stages in the pipeline chain
\r
979 cmsStageLoc = (cmsAT_BEGIN = 0, cmsAT_END = 1 );
\r
981 PROCEDURE cmsPipelineInsertStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPcmsStage); StdCall;
\r
982 PROCEDURE cmsPipelineUnlinkStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPLPcmsStage); StdCall;
\r
984 // This function is quite useful to analyze the structure of a Pipeline and retrieve the Stage elements
\r
985 // that conform the Pipeline. It should be called with the Pipeline, the number of expected elements and
\r
986 // then a list of expected types followed with a list of double pointers to Stage elements. If
\r
987 // the function founds a match with current pipeline, it fills the pointers and returns TRUE
\r
988 // if not, returns FALSE without touching anything.
\r
989 // FUNCTION cmsPipelineCheckAndRetreiveStages(const cmsPipeline* Lut, n: cmsUInt32Number, ...): cmsBool; StdCall;
\r
991 // Matrix has double precision and CLUT has only float precision. That is because an ICC profile can encode
\r
992 // matrices with far more precision that CLUTS
\r
993 FUNCTION cmsStageAllocIdentity(ContextID: cmsContext; nChannels: cmsUInt32Number): LPcmsStage; StdCall;
\r
994 FUNCTION cmsStageAllocToneCurves(ContextID: cmsContext; nChannels: cmsUInt32Number; Curves: LPLPcmsToneCurveArray): LPcmsStage; StdCall;
\r
995 FUNCTION cmsStageAllocMatrix(ContextID: cmsContext; Rows, Cols: cmsUInt32Number; Matrix, Offset: LPcmsFloat64NumberArray): LPcmsStage; StdCall;
\r
997 FUNCTION cmsStageAllocCLut16bit(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall;
\r
998 FUNCTION cmsStageAllocCLutFloat(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall;
\r
1000 FUNCTION cmsStageAllocCLut16bitGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall;
\r
1001 FUNCTION cmsStageAllocCLutFloatGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall;
\r
1004 FUNCTION cmsStageDup(mpe: LPcmsStage): LPcmsStage; StdCall;
\r
1005 PROCEDURE cmsStageFree(mpe: LPcmsStage); StdCall;
\r
1006 FUNCTION cmsStageNext(mpe: LPcmsStage): LPcmsStage; StdCall;
\r
1008 FUNCTION cmsStageInputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall;
\r
1009 FUNCTION cmsStageOutputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall;
\r
1010 FUNCTION cmsStageType(mpe: LPcmsStage): cmsStageSignature; StdCall;
\r
1011 FUNCTION cmsStageData(mpe: LPcmsStage): Pointer; StdCall;
\r
1016 cmsSAMPLER16 = FUNCTION (Inp, Outp: LPcmsUInt16NumberArray; Cargo: Pointer): cmsInt32Number; CDecl;
\r
1017 cmsSAMPLERFLOAT = FUNCTION (Inp, Outp: LPcmsFloat32NumberArray; Cargo: Pointer): cmsInt32Number; CDecl;
\r
1019 // Use this flag to prevent changes being written to destination
\r
1023 SAMPLER_INSPECT = $01000000;
\r
1027 FUNCTION cmsStageSampleCLut16bit(mpe: LPcmsStage; Sampler: cmsSAMPLER16; Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall;
\r
1028 FUNCTION cmsStageSampleCLutFloat(mpe: LPcmsStage; Sampler: cmsSAMPLERFLOAT; Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall;
\r
1032 FUNCTION cmsSliceSpace16(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray;
\r
1033 Sampler: cmsSAMPLER16; Cargo: Pointer): cmsBool; StdCall;
\r
1035 FUNCTION cmsSliceSpaceFloat(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray;
\r
1036 Sampler: cmsSAMPLERFLOAT; Cargo: Pointer): cmsBool; StdCall;
\r
1038 // Multilocalized Unicode management ---------------------------------------------------------------------------------------
\r
1041 LPcmsMLU = Pointer;
\r
1045 cmsNoLanguage = #0#0#0;
\r
1046 cmsNoCountry = #0#0#0;
\r
1049 FUNCTION cmsMLUalloc(ContextID: cmsContext; nItems: cmsUInt32Number): LPcmsMLU; StdCall;
\r
1050 PROCEDURE cmsMLUfree(mlu: LPcmsMLU); StdCall;
\r
1051 FUNCTION cmsMLUdup(mlu: LPcmsMLU): LPcmsMLU; StdCall;
\r
1053 FUNCTION cmsMLUsetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode, ASCIIString: PAnsiChar): cmsBool; StdCall;
\r
1054 FUNCTION cmsMLUsetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; WideString: PWChar): cmsBool; StdCall;
\r
1056 FUNCTION cmsMLUgetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall;
\r
1058 FUNCTION cmsMLUgetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall;
\r
1060 FUNCTION cmsMLUgetTranslation(mlu: LPcmsMLU; LanguageCode, CountryCode, ObtainedLanguage, ObtainedCountry: PAnsiChar): cmsBool; StdCall;
\r
1062 // Undercolorremoval & black generation -------------------------------------------------------------------------------------
\r
1066 cmsUcrBg = PACKED RECORD
\r
1067 Ucr, Bg: LPcmsToneCurve;
\r
1072 // Screening ----------------------------------------------------------------------------------------------------------------
\r
1076 cmsPRINTER_DEFAULT_SCREENS = $0001;
\r
1077 cmsFREQUENCE_UNITS_LINES_CM = $0000;
\r
1078 cmsFREQUENCE_UNITS_LINES_INCH = $0002;
\r
1080 cmsSPOT_UNKNOWN = 0;
\r
1081 cmsSPOT_PRINTER_DEFAULT = 1;
\r
1082 cmsSPOT_ROUND = 2;
\r
1083 cmsSPOT_DIAMOND = 3;
\r
1084 cmsSPOT_ELLIPSE = 4;
\r
1086 cmsSPOT_SQUARE = 6;
\r
1087 cmsSPOT_CROSS = 7;
\r
1092 cmsScreeningChannel = PACKED RECORD
\r
1095 ScreenAngle: cmsFloat64Number;
\r
1096 SpotShape: cmsUInt32Number;
\r
1100 cmsScreening = PACKED RECORD
\r
1103 nChannels : cmsUInt32Number;
\r
1104 Channels: Array [0..cmsMAXCHANNELS-1] OF cmsScreeningChannel;
\r
1108 // Named color -----------------------------------------------------------------------------------------------------------------
\r
1111 LPcmsNAMEDCOLORLIST = Pointer;
\r
1113 FUNCTION cmsAllocNamedColorList(ContextID: cmsContext; n, ColorantCount :cmsUInt32Number;
\r
1114 Prefix, Suffix: PAnsiChar): LPcmsNAMEDCOLORLIST; StdCall;
\r
1116 PROCEDURE cmsFreeNamedColorList(v: LPcmsNAMEDCOLORLIST); StdCall;
\r
1117 FUNCTION cmsDupNamedColorList(v: LPcmsNAMEDCOLORLIST): LPcmsNAMEDCOLORLIST; StdCall;
\r
1118 FUNCTION cmsAppendNamedColor(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar;
\r
1119 PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall;
\r
1121 FUNCTION cmsNamedColorCount(v: LPcmsNAMEDCOLORLIST): cmsUInt32Number; StdCall;
\r
1122 FUNCTION cmsNamedColorIndex(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar): cmsInt32Number; StdCall;
\r
1124 FUNCTION cmsNamedColorInfo(v: LPcmsNAMEDCOLORLIST; nColor : cmsUInt32Number;
\r
1125 Name,Prefix, Suffix : PAnsiChar;
\r
1126 PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall;
\r
1128 // Retrieve named color list from transform
\r
1129 FUNCTION cmsGetNamedColorList(xform: cmsHTRANSFORM ): LPcmsNAMEDCOLORLIST; StdCall;
\r
1131 // Profile sequence -----------------------------------------------------------------------------------------------------
\r
1135 // Profile sequence descriptor. Some fields come from profile sequence descriptor tag, others
\r
1136 // come from Profile Sequence Identifier Tag
\r
1138 cmsPSEQDESC = PACKED RECORD
\r
1139 deviceMfg, deviceModel: cmsSignature;
\r
1141 attributes: cmsUInt64Number;
\r
1142 technology: cmsTechnologySignature;
\r
1143 ProfileID: cmsProfileID;
\r
1146 Description : LPcmsMLU;
\r
1149 LPcmsSEQDESC = ^cmsPSEQDESC;
\r
1151 cmsSEQ = PACKED RECORD
\r
1153 n: cmsUInt32Number;
\r
1154 ContextID: cmsContext;
\r
1155 seq: LPcmsSEQDESC;
\r
1158 LPcmsSEQ = ^cmsSEQ;
\r
1160 FUNCTION cmsAllocProfileSequenceDescription(ContextID: cmsContext; n: cmsUInt32Number):LPcmsSEQ; StdCall;
\r
1161 FUNCTION cmsDupProfileSequenceDescription(pseq: LPcmsSEQ):LPcmsSEQ; StdCall;
\r
1162 PROCEDURE cmsFreeProfileSequenceDescription(pseq: LPcmsSEQ); StdCall;
\r
1164 // Dictionaries --------------------------------------------------------------------------------------------------------
\r
1168 LPcmsDICTentry = ^cmsDICTentry;
\r
1170 cmsDICTentry = PACKED RECORD
\r
1172 Next: LPcmsDICTentry;
\r
1174 DisplayName, DisplayValue: LPcmsMLU;
\r
1175 Name, Value : PWChar;
\r
1178 FUNCTION cmsDictAlloc(ContextID: cmsContext): cmsHANDLE; StdCall;
\r
1179 PROCEDURE cmsDictFree(hDict: cmsHANDLE); StdCall;
\r
1180 FUNCTION cmsDictDup(hDict: cmsHANDLE): cmsHANDLE; StdCall;
\r
1182 FUNCTION cmsDictAddEntry(hDict: cmsHANDLE; Name, Value: PWChar; DisplayName, DisplayValue : LPcmsMLU): cmsBool; StdCall;
\r
1183 FUNCTION cmsDictGetEntryList(hDict: cmsHANDLE): LPcmsDICTentry; StdCall;
\r
1184 FUNCTION cmsDictNextEntry(e : LPcmsDICTentry): LPcmsDICTentry; StdCall;
\r
1186 // Access to Profile data ----------------------------------------------------------------------------------------------
\r
1187 FUNCTION cmsCreateProfilePlaceholder(ContextID: cmsContext): cmsHPROFILE; StdCall;
\r
1189 FUNCTION cmsGetProfileContextID(hProfile: cmsHPROFILE):cmsContext; StdCall;
\r
1190 FUNCTION cmsGetTagCount(hProfile: cmsHPROFILE): cmsInt32Number; StdCall;
\r
1191 FUNCTION cmsGetTagSignature(hProfile: cmsHPROFILE; n: cmsUInt32Number): cmsTagSignature; StdCall;
\r
1192 FUNCTION cmsIsTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): cmsBool; StdCall;
\r
1194 // Read and write pre-formatted data
\r
1195 FUNCTION cmsReadTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): Pointer; StdCall;
\r
1196 FUNCTION cmsWriteTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer): cmsBool; StdCall;
\r
1197 FUNCTION cmsLinkTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; dest: cmsTagSignature): cmsBool; StdCall;
\r
1198 FUNCTION cmsTagLinkedTo(hProfile: cmsHPROFILE; sig: cmsTagSignature):cmsTagSignature; StdCall;
\r
1200 // Read and write raw data
\r
1201 FUNCTION cmsReadRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; Buffer: Pointer; BufferSize: cmsUInt32Number): cmsInt32Number; StdCall;
\r
1202 FUNCTION cmsWriteRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer; Size: cmsUInt32Number): cmsBool; StdCall;
\r
1204 // Access header data
\r
1207 cmsEmbeddedProfileFalse = $00000000;
\r
1208 cmsEmbeddedProfileTrue = $00000001;
\r
1209 cmsUseAnywhere = $00000000;
\r
1210 cmsUseWithEmbeddedDataOnly = $00000002;
\r
1212 FUNCTION cmsGetHeaderFlags(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall;
\r
1213 PROCEDURE cmsGetHeaderAttributes(hProfile: cmsHPROFILE; Flags: LPcmsUInt64Number); StdCall;
\r
1214 PROCEDURE cmsGetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall;
\r
1217 // FUNCTION cmsGetHeaderCreationDateTime(hProfile: cmsHPROFILE; struct tm *Dest): cmsBool; StdCall;
\r
1219 FUNCTION cmsGetHeaderRenderingIntent(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall;
\r
1220 PROCEDURE cmsSetHeaderFlags(hProfile: cmsHPROFILE; Flags: cmsUInt32Number); StdCall;
\r
1221 FUNCTION cmsGetHeaderManufacturer(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall;
\r
1222 PROCEDURE cmsSetHeaderManufacturer(hProfile: cmsHPROFILE; manufacturer: cmsUInt32Number ); StdCall;
\r
1223 FUNCTION cmsGetHeaderModel(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall;
\r
1224 PROCEDURE cmsSetHeaderModel(hProfile: cmsHPROFILE; model: cmsUInt32Number ); StdCall;
\r
1225 PROCEDURE cmsSetHeaderAttributes(hProfile: cmsHPROFILE; Flags: cmsUInt64Number); StdCall;
\r
1226 PROCEDURE cmsSetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall;
\r
1227 PROCEDURE cmsSetHeaderRenderingIntent(hProfile: cmsHPROFILE; RenderingIntent: cmsUInt32Number ); StdCall;
\r
1229 FUNCTION cmsGetPCS(hProfile: cmsHPROFILE):cmsColorSpaceSignature; StdCall;
\r
1230 PROCEDURE cmsSetPCS(hProfile: cmsHPROFILE; pcs: cmsColorSpaceSignature); StdCall;
\r
1231 FUNCTION cmsGetColorSpace(hProfile: cmsHPROFILE): cmsColorSpaceSignature; StdCall;
\r
1232 PROCEDURE cmsSetColorSpace(hProfile: cmsHPROFILE; sig: cmsColorSpaceSignature); StdCall;
\r
1233 FUNCTION cmsGetDeviceClass(hProfile: cmsHPROFILE): cmsProfileClassSignature; StdCall;
\r
1234 PROCEDURE cmsSetDeviceClass(hProfile: cmsHPROFILE; sig: cmsProfileClassSignature); StdCall;
\r
1235 PROCEDURE cmsSetProfileVersion(hProfile: cmsHPROFILE; Version: cmsFloat64Number); StdCall;
\r
1236 FUNCTION cmsGetProfileVersion(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall;
\r
1238 FUNCTION cmsGetEncodedICCversion(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall;
\r
1239 PROCEDURE cmsSetEncodedICCversion(hProfile: cmsHPROFILE; Version: cmsUInt32Number); StdCall;
\r
1244 // How profiles may be used
\r
1245 LCMS_USED_AS_INPUT = 0;
\r
1246 LCMS_USED_AS_OUTPUT = 1;
\r
1247 LCMS_USED_AS_PROOF = 2;
\r
1249 FUNCTION cmsIsIntentSupported(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall;
\r
1250 FUNCTION cmsIsMatrixShaper(hProfile: cmsHPROFILE): cmsBool; StdCall;
\r
1251 FUNCTION cmsIsCLUT(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall;
\r
1253 // Translate form/to our notation to ICC
\r
1254 FUNCTION _cmsICCcolorSpace(OurNotation: Integer): cmsColorSpaceSignature; StdCall;
\r
1255 FUNCTION _cmsLCMScolorSpace(ProfileSpace: cmsColorSpaceSignature): Integer; StdCall;
\r
1257 FUNCTION cmsChannelsOf( ColorSpace: cmsColorSpaceSignature): cmsUInt32Number; StdCall;
\r
1259 // Build a suitable formatter for the colorspace of this profile
\r
1260 FUNCTION cmsFormatterForColorspaceOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall;
\r
1261 FUNCTION cmsFormatterForPCSOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall;
\r
1267 cmsInfoDescription = 0,
\r
1268 cmsInfoManufacturer = 1,
\r
1270 cmsInfoCopyright = 3
\r
1273 FUNCTION cmsGetProfileInfo(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar;
\r
1274 Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall;
\r
1276 FUNCTION cmsGetProfileInfoASCII(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar;
\r
1277 Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall;
\r
1279 // IO handlers ----------------------------------------------------------------------------------------------------------
\r
1283 LPcmsIOHANDLER = Pointer;
\r
1285 FUNCTION cmsOpenIOhandlerFromFile(ContextID: cmsContext; FileName, AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall;
\r
1286 // FUNCTION cmsOpenIOhandlerFromStream(ContextID: cmsContext; FILE* Stream): LPcmsIOHANDLER; StdCall;
\r
1287 FUNCTION cmsOpenIOhandlerFromMem(ContextID: cmsContext; Buffer: Pointer; size: cmsUInt32Number; AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall;
\r
1288 FUNCTION cmsOpenIOhandlerFromNULL(ContextID: cmsContext): LPcmsIOHANDLER; StdCall;
\r
1289 FUNCTION cmsCloseIOhandler(io: LPcmsIOHANDLER): cmsBool; StdCall;
\r
1291 // MD5 message digest --------------------------------------------------------------------------------------------------
\r
1293 FUNCTION cmsMD5computeID(hProfile: cmsHPROFILE): cmsBool; StdCall;
\r
1295 // Profile high level funtions ------------------------------------------------------------------------------------------
\r
1297 FUNCTION cmsOpenProfileFromFile(ICCProfile : PAnsiChar; sAccess: PAnsiChar): cmsHPROFILE; StdCall;
\r
1298 FUNCTION cmsOpenProfileFromFileTHR(ContextID: cmsContext; ICCProfile, sAccess: PAnsiChar): cmsHPROFILE; StdCall;
\r
1299 // FUNCTION CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall;
\r
1300 // FUNCTION CMSEXPORT cmsOpenProfileFromStreamTHR(ContextID: cmsContext; FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall;
\r
1301 FUNCTION cmsOpenProfileFromMem(MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall;
\r
1302 FUNCTION cmsOpenProfileFromMemTHR(ContextID: cmsContext; MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall;
\r
1303 FUNCTION cmsOpenProfileFromIOhandlerTHR(ContextID: cmsContext; io: LPcmsIOHANDLER): cmsHPROFILE; StdCall;
\r
1304 FUNCTION cmsCloseProfile(hProfile: cmsHPROFILE): cmsBool; StdCall;
\r
1306 FUNCTION cmsSaveProfileToFile(hProfile: cmsHPROFILE; FileName: PAnsiChar): cmsBool; StdCall;
\r
1307 // FUNCTION CMSEXPORT cmsSaveProfileToStream(hProfile: cmsHPROFILE, FILE* Stream): cmsBool; StdCall;
\r
1308 FUNCTION cmsSaveProfileToMem(hProfile: cmsHPROFILE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall;
\r
1309 FUNCTION cmsSaveProfileToIOhandler(hProfile: cmsHPROFILE; io: LPcmsIOHANDLER):cmsUInt32Number; StdCall;
\r
1311 // Predefined virtual profiles ------------------------------------------------------------------------------------------
\r
1313 FUNCTION cmsCreateRGBProfileTHR(ContextID: cmsContext;
\r
1314 WhitePoint: LPcmsCIExyY;
\r
1315 Primaries: LPcmsCIExyYTRIPLE;
\r
1316 TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall;
\r
1318 FUNCTION cmsCreateRGBProfile(WhitePoint: LPcmsCIExyY;
\r
1319 Primaries: LPcmsCIExyYTRIPLE;
\r
1320 TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall;
\r
1322 FUNCTION cmsCreateGrayProfileTHR(ContextID: cmsContext;
\r
1323 WhitePoint: LPcmsCIExyY;
\r
1324 TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall;
\r
1326 FUNCTION cmsCreateGrayProfile(WhitePoint: LPcmsCIExyY;
\r
1327 TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall;
\r
1329 FUNCTION cmsCreateLinearizationDeviceLinkTHR(ContextID: cmsContext;
\r
1330 ColorSpace: cmsColorSpaceSignature;
\r
1331 TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall;
\r
1333 FUNCTION cmsCreateLinearizationDeviceLink(ColorSpace: cmsColorSpaceSignature;
\r
1334 TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall;
\r
1336 FUNCTION cmsCreateInkLimitingDeviceLinkTHR(ContextID: cmsContext;
\r
1337 ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall;
\r
1339 FUNCTION cmsCreateInkLimitingDeviceLink(ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall;
\r
1342 FUNCTION cmsCreateLab2ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall;
\r
1343 FUNCTION cmsCreateLab2Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall;
\r
1344 FUNCTION cmsCreateLab4ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall;
\r
1345 FUNCTION cmsCreateLab4Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall;
\r
1347 FUNCTION cmsCreateXYZProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall;
\r
1348 FUNCTION cmsCreateXYZProfile: cmsHPROFILE; StdCall;
\r
1350 FUNCTION cmsCreate_sRGBProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall;
\r
1351 FUNCTION cmsCreate_sRGBProfile: cmsHPROFILE; StdCall;
\r
1353 FUNCTION cmsCreateBCHSWabstractProfileTHR(ContextID: cmsContext;
\r
1354 nLUTPoints: Integer;
\r
1358 Saturation: cmsFloat64Number;
\r
1360 TempDest: Integer): cmsHPROFILE; StdCall;
\r
1362 FUNCTION cmsCreateBCHSWabstractProfile( nLUTPoints: Integer;
\r
1366 Saturation: cmsFloat64Number;
\r
1368 TempDest: Integer): cmsHPROFILE; StdCall;
\r
1370 FUNCTION cmsCreateNULLProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall;
\r
1371 FUNCTION cmsCreateNULLProfile: cmsHPROFILE; StdCall;
\r
1373 // Converts a transform to a devicelink profile
\r
1374 FUNCTION cmsTransform2DeviceLink(hTransform: cmsHTRANSFORM; Version: cmsFloat64Number; dwFlags: cmsUInt32Number): cmsHPROFILE; StdCall;
\r
1376 // Intents ----------------------------------------------------------------------------------------------
\r
1381 INTENT_PERCEPTUAL = 0;
\r
1382 INTENT_RELATIVE_COLORIMETRIC = 1;
\r
1383 INTENT_SATURATION = 2;
\r
1384 INTENT_ABSOLUTE_COLORIMETRIC = 3;
\r
1386 // Non-ICC intents
\r
1387 INTENT_PRESERVE_K_ONLY_PERCEPTUAL = 10;
\r
1388 INTENT_PRESERVE_K_ONLY_RELATIVE_COLORIMETRIC = 11;
\r
1389 INTENT_PRESERVE_K_ONLY_SATURATION = 12;
\r
1390 INTENT_PRESERVE_K_PLANE_PERCEPTUAL = 13;
\r
1391 INTENT_PRESERVE_K_PLANE_RELATIVE_COLORIMETRIC = 14;
\r
1392 INTENT_PRESERVE_K_PLANE_SATURATION = 15;
\r
1395 LPPAnsiChar = ^PAnsiChar;
\r
1397 // Call with NULL as parameters to get the intent count
\r
1398 FUNCTION cmsGetSupportedIntents(nMax: cmsUInt32Number; Codes: LPcmsUInt32Number; Descriptions: LPPAnsiChar): cmsUInt32Number; StdCall;
\r
1404 cmsFLAGS_NOCACHE = $0040; // Inhibit 1-pixel cache
\r
1405 cmsFLAGS_NOOPTIMIZE = $0100; // Inhibit optimizations
\r
1406 cmsFLAGS_NULLTRANSFORM = $0200; // Don't transform anyway
\r
1409 cmsFLAGS_GAMUTCHECK = $1000; // Out of Gamut alarm
\r
1410 cmsFLAGS_SOFTPROOFING = $4000; // Do softproofing
\r
1413 cmsFLAGS_BLACKPOINTCOMPENSATION = $2000;
\r
1414 cmsFLAGS_NOWHITEONWHITEFIXUP = $0004; // Don't fix scum dot
\r
1415 cmsFLAGS_HIGHRESPRECALC = $0400; // Use more memory to give better accurancy
\r
1416 cmsFLAGS_LOWRESPRECALC = $0800; // Use less memory to minimize resouces
\r
1418 // For devicelink creation
\r
1419 cmsFLAGS_8BITS_DEVICELINK = $0008; // Create 8 bits devicelinks
\r
1420 cmsFLAGS_GUESSDEVICECLASS = $0020; // Guess device class (for transform2devicelink)
\r
1421 cmsFLAGS_KEEP_SEQUENCE = $0080; // Keep profile sequence for devicelink creation
\r
1423 // Specific to a particular optimizations
\r
1424 cmsFLAGS_FORCE_CLUT = $0002; // Force CLUT optimization
\r
1425 cmsFLAGS_CLUT_POST_LINEARIZATION = $0001; // create postlinearization tables if possible
\r
1426 cmsFLAGS_CLUT_PRE_LINEARIZATION = $0010; // create prelinearization tables if possible
\r
1429 cmsFLAGS_NODEFAULTRESOURCEDEF = $01000000;
\r
1431 // Fine-tune control over number of gridpoints
\r
1432 FUNCTION cmsFLAGS_GRIDPOINTS(n: Integer): Integer;
\r
1435 // Transforms ---------------------------------------------------------------------------------------------------
\r
1438 LPcmsHPROFILEArray = ^cmsHPROFILEArray;
\r
1439 cmsHPROFILEArray = array[0..0] of cmsHPROFILE;
\r
1441 LPcmsBoolArray = ^cmsBoolArray;
\r
1442 cmsBoolArray = array[0..0] of cmsBool;
\r
1444 FUNCTION cmsCreateTransformTHR(ContextID: cmsContext;
\r
1445 Input: cmsHPROFILE;
\r
1446 InputFormat: cmsUInt32Number;
\r
1447 Output: cmsHPROFILE;
\r
1448 OutputFormat: cmsUInt32Number;
\r
1449 Intent: cmsUInt32Number;
\r
1450 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
\r
1452 FUNCTION cmsCreateTransform(Input: cmsHPROFILE;
\r
1453 InputFormat: cmsUInt32Number;
\r
1454 Output: cmsHPROFILE;
\r
1455 OutputFormat: cmsUInt32Number;
\r
1456 Intent: cmsUInt32Number;
\r
1457 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
\r
1459 FUNCTION cmsCreateProofingTransformTHR(ContextID: cmsContext;
\r
1460 Input: cmsHPROFILE;
\r
1461 InputFormat: cmsUInt32Number;
\r
1462 Output: cmsHPROFILE;
\r
1463 OutputFormat: cmsUInt32Number;
\r
1464 Proofing: cmsHPROFILE;
\r
1465 Intent: cmsUInt32Number;
\r
1466 ProofingIntent: cmsUInt32Number;
\r
1467 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
\r
1469 FUNCTION cmsCreateProofingTransform(Input: cmsHPROFILE;
\r
1470 InputFormat: cmsUInt32Number;
\r
1471 Output: cmsHPROFILE;
\r
1472 OutputFormat: cmsUInt32Number;
\r
1473 Proofing: cmsHPROFILE;
\r
1474 Intent: cmsUInt32Number;
\r
1475 ProofingIntent: cmsUInt32Number;
\r
1476 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
\r
1478 FUNCTION cmsCreateMultiprofileTransformTHR(ContextID: cmsContext;
\r
1479 hProfiles: LPcmsHPROFILEArray;
\r
1480 nProfiles: cmsUInt32Number;
\r
1481 InputFormat: cmsUInt32Number;
\r
1482 OutputFormat: cmsUInt32Number;
\r
1483 Intent: cmsUInt32Number;
\r
1484 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
\r
1487 FUNCTION cmsCreateMultiprofileTransform( hProfiles: LPcmsHPROFILEArray;
\r
1488 nProfiles: cmsUInt32Number;
\r
1489 InputFormat: cmsUInt32Number;
\r
1490 OutputFormat: cmsUInt32Number;
\r
1491 Intent: cmsUInt32Number;
\r
1492 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
\r
1495 FUNCTION cmsCreateExtendedTransform(ContextID: cmsContext;
\r
1496 nProfiles: cmsUInt32Number;
\r
1497 hProfiles: LPcmsHPROFILEArray;
\r
1498 BPC: LPcmsBoolArray;
\r
1499 Intents: LPcmsUInt32NumberArray;
\r
1500 AdaptationStates: LPcmsFloat64NumberArray;
\r
1501 hGamutProfile: cmsHPROFILE;
\r
1502 nGamutPCSposition: cmsUInt32Number;
\r
1504 OutputFormat: cmsUInt32Number;
\r
1505 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall;
\r
1507 PROCEDURE cmsDeleteTransform(hTransform: cmsHTRANSFORM); StdCall;
\r
1509 PROCEDURE cmsDoTransform(Transform: cmsHTRANSFORM; InputBuffer, OutputBuffer: Pointer; size: cmsUInt32Number); StdCall;
\r
1511 PROCEDURE cmsSetAlarmCodes( NewAlarm: LPcmsUInt16NumberArray); StdCall;
\r
1512 PROCEDURE cmsGetAlarmCodes(NewAlarm: LPcmsUInt16NumberArray); StdCall;
\r
1514 // Adaptation state for absolute colorimetric intent
\r
1515 FUNCTION cmsSetAdaptationState(d: cmsFloat64Number):cmsFloat64Number; StdCall;
\r
1517 // Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed
\r
1518 FUNCTION cmsGetTransformContextID(hTransform: cmsHTRANSFORM):cmsContext; StdCall;
\r
1520 // For backwards compatibility
\r
1521 FUNCTION cmsChangeBuffersFormat(hTransform: cmsHTRANSFORM; InputFormat, OutputFormat: cmsUInt32Number): cmsBool; StdCall;
\r
1525 // PostScript ColorRenderingDictionary and ColorSpaceArray ----------------------------------------------------
\r
1529 cmsPSResourceType = (cmsPS_RESOURCE_CSA, cmsPS_RESOURCE_CRD ) ;
\r
1531 // lcms2 unified method to access postscript color resources
\r
1532 FUNCTION cmsGetPostScriptColorResource(ContextID: cmsContext; RType: cmsPSResourceType;
\r
1533 hProfile: cmsHPROFILE;
\r
1534 Intent: cmsUInt32Number;
\r
1535 dwFlags: cmsUInt32Number;
\r
1536 io: LPcmsIOHANDLER): cmsUInt32Number; StdCall;
\r
1538 FUNCTION cmsGetPostScriptCSA(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number ): cmsUInt32Number; StdCall;
\r
1539 FUNCTION cmsGetPostScriptCRD(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number): cmsUInt32Number; StdCall;
\r
1542 // IT8.7 / CGATS.17-20$ handling -----------------------------------------------------------------------------
\r
1545 // CGATS.13 parser
\r
1547 FUNCTION cmsIT8Alloc: cmsHANDLE; StdCall;
\r
1548 PROCEDURE cmsIT8Free(hIT8: cmsHANDLE); StdCall;
\r
1552 FUNCTION cmsIT8TableCount(hIT8: cmsHANDLE): Integer; StdCall;
\r
1553 FUNCTION cmsIT8SetTable(hIT8: cmsHANDLE; nTable: Integer): Integer; StdCall;
\r
1556 FUNCTION cmsIT8LoadFromFile(cFileName: PAnsiChar): cmsHANDLE; StdCall;
\r
1557 FUNCTION cmsIT8LoadFromMem(Ptr: Pointer; size :DWord): cmsHANDLE; StdCall;
\r
1559 FUNCTION cmsIT8SaveToFile(hIT8: cmsHANDLE; cFileName: PAnsiChar): cmsBool; StdCall;
\r
1560 FUNCTION cmsIT8SaveToMem(hIT8: cmsHANDLE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall;
\r
1563 FUNCTION cmsIT8GetSheetType(hIT8: cmsHANDLE): PAnsiChar; StdCall;
\r
1564 FUNCTION cmsIT8SetSheetType(hIT8: cmsHANDLE; TheType: PAnsiChar): cmsBool; StdCall;
\r
1566 FUNCTION cmsIT8SetComment(hIT8: cmsHANDLE; cComment: PAnsiChar): cmsBool; StdCall;
\r
1568 FUNCTION cmsIT8SetPropertyStr(hIT8: cmsHANDLE; cProp, Str: PAnsiChar): cmsBool; StdCall;
\r
1569 FUNCTION cmsIT8SetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Double): cmsBool; StdCall;
\r
1570 FUNCTION cmsIT8SetPropertyHex(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Integer): cmsBool; StdCall;
\r
1571 FUNCTION cmsIT8SetPropertyUncooked(hIT8: cmsHANDLE; Key, Buffer: PAnsiChar): cmsBool; StdCall;
\r
1574 FUNCTION cmsIT8GetProperty(hIT8: cmsHANDLE; cProp: PAnsiChar): PAnsiChar; StdCall;
\r
1575 FUNCTION cmsIT8GetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar): Double; StdCall;
\r
1576 FUNCTION cmsIT8EnumProperties(hIT8: cmsHANDLE; var PropertyNames: LPPAnsiChar): Integer; StdCall;
\r
1580 FUNCTION cmsIT8GetDataRowCol(hIT8: cmsHANDLE; row, col: Integer): PAnsiChar; StdCall;
\r
1581 FUNCTION cmsIT8GetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer): Double; StdCall;
\r
1583 FUNCTION cmsIT8SetDataRowCol(hIT8: cmsHANDLE; row, col: Integer; Val: PAnsiChar): cmsBool; StdCall;
\r
1584 FUNCTION cmsIT8SetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer; Val: Double): cmsBool; StdCall;
\r
1586 FUNCTION cmsIT8GetData(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar): PAnsiChar; StdCall;
\r
1588 FUNCTION cmsIT8GetDataDbl(hIT8: cmsHANDLE;cPatch, cSample: PAnsiChar): Double; StdCall;
\r
1590 FUNCTION cmsIT8SetData(hIT8: cmsHANDLE; cPatch, cSample, Val: PAnsiChar): cmsBool; StdCall;
\r
1592 FUNCTION cmsIT8SetDataDbl(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar; Val: Double): cmsBool; StdCall;
\r
1594 FUNCTION cmsIT8SetDataFormat(hIT8: cmsHANDLE; n: Integer; Sample: PAnsiChar): cmsBool; StdCall;
\r
1595 FUNCTION cmsIT8EnumDataFormat(hIT8: cmsHANDLE; var SampleNames: LPPAnsiChar): Integer; StdCall;
\r
1596 FUNCTION cmsIT8GetPatchName(hIT8: cmsHANDLE; nPatch: Integer; Buffer: PAnsiChar): PAnsiChar; StdCall;
\r
1598 // The LABEL extension
\r
1599 FUNCTION cmsIT8SetTableByLabel(hIT8: cmsHANDLE; cSet, cField, ExpectedType: PAnsiChar): Integer; StdCall;
\r
1601 FUNCTION cmsIT8FindDataFormat(hIT8: cmsHANDLE; cSample: PAnsiChar): Integer; StdCall;
\r
1603 // Formatter for double
\r
1604 PROCEDURE cmsIT8DefineDblFormat(hIT8: cmsHANDLE; Formatter: PAnsiChar); StdCall;
\r
1606 // Gamut boundary description routines ------------------------------------------------------------------------------
\r
1608 FUNCTION cmsGBDAlloc(ContextID: cmsContext):cmsHANDLE; StdCall;
\r
1609 PROCEDURE cmsGBDFree(hGBD: cmsHANDLE); StdCall;
\r
1610 FUNCTION cmsGDBAddPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall;
\r
1611 FUNCTION cmsGDBCompute(hGDB: cmsHANDLE; dwFlags: cmsUInt32Number): cmsBool; StdCall;
\r
1612 FUNCTION cmsGDBCheckPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall;
\r
1614 // Feature detection ----------------------------------------------------------------------------------------------
\r
1616 // Estimate the black point
\r
1617 FUNCTION cmsDetectBlackPoint( BlackPoint: LPcmsCIEXYZ; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsBool; StdCall;
\r
1619 // Estimate total area coverage
\r
1620 FUNCTION cmsDetectTAC(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall;
\r
1623 // Poor man's gamut mapping
\r
1624 FUNCTION cmsDesaturateLab(Lab: LPcmsCIELab; amax, amin, bmax, bmin: cmsFloat64Number): cmsBool; StdCall;
\r
1631 FUNCTION FLOAT_SH(a: cmsUInt32Number): cmsUInt32Number; begin FLOAT_SH := ((a) shl 22) end;
\r
1632 FUNCTION OPTIMIZED_SH(s: cmsUInt32Number): cmsUInt32Number; begin OPTIMIZED_SH := ((s) shl 21) end;
\r
1633 FUNCTION COLORSPACE_SH(s: cmsUInt32Number):cmsUInt32Number; begin COLORSPACE_SH := ((s) shl 16) end;
\r
1634 FUNCTION SWAPFIRST_SH(s: cmsUInt32Number):cmsUInt32Number; begin SWAPFIRST_SH := ((s) shl 14) end;
\r
1635 FUNCTION FLAVOR_SH(s: cmsUInt32Number):cmsUInt32Number; begin FLAVOR_SH := ((s) shl 13) end;
\r
1636 FUNCTION PLANAR_SH(p: cmsUInt32Number):cmsUInt32Number; begin PLANAR_SH := ((p) shl 12) end;
\r
1637 FUNCTION ENDIAN16_SH(e: cmsUInt32Number):cmsUInt32Number; begin ENDIAN16_SH := ((e) shl 11) end;
\r
1638 FUNCTION DOSWAP_SH(e: cmsUInt32Number):cmsUInt32Number; begin DOSWAP_SH := ((e) shl 10) end;
\r
1639 FUNCTION EXTRA_SH(e: cmsUInt32Number):cmsUInt32Number; begin EXTRA_SH := ((e) shl 7) end;
\r
1640 FUNCTION CHANNELS_SH(c: cmsUInt32Number):cmsUInt32Number; begin CHANNELS_SH := ((c) shl 3) end;
\r
1641 FUNCTION BYTES_SH(b: cmsUInt32Number):cmsUInt32Number; begin BYTES_SH := (b) end;
\r
1644 FUNCTION T_FLOAT(a: cmsUInt32Number): cmsUInt32Number; begin T_FLOAT := (((a) shr 22) and 1) end;
\r
1645 FUNCTION T_OPTIMIZED(o: cmsUInt32Number): cmsUInt32Number; begin T_OPTIMIZED := (((o) shr 21) and 1) end;
\r
1646 FUNCTION T_COLORSPACE(s: cmsUInt32Number): cmsUInt32Number; begin T_COLORSPACE := (((s) shr 16) and 31) end;
\r
1647 FUNCTION T_SWAPFIRST(s: cmsUInt32Number): cmsUInt32Number; begin T_SWAPFIRST := (((s) shr 14) and 1) end;
\r
1648 FUNCTION T_FLAVOR(s: cmsUInt32Number): cmsUInt32Number; begin T_FLAVOR := (((s) shr 13) and 1) end;
\r
1649 FUNCTION T_PLANAR(p: cmsUInt32Number): cmsUInt32Number; begin T_PLANAR := (((p) shr 12) and 1) end;
\r
1650 FUNCTION T_ENDIAN16(e: cmsUInt32Number): cmsUInt32Number; begin T_ENDIAN16 := (((e) shr 11) and 1) end;
\r
1651 FUNCTION T_DOSWAP(e: cmsUInt32Number): cmsUInt32Number; begin T_DOSWAP := (((e) shr 10) and 1) end;
\r
1652 FUNCTION T_EXTRA(e: cmsUInt32Number): cmsUInt32Number; begin T_EXTRA := (((e) shr 7) and 7) end;
\r
1653 FUNCTION T_CHANNELS(c: cmsUInt32Number): cmsUInt32Number; begin T_CHANNELS := (((c) shr 3) and 15) end;
\r
1654 FUNCTION T_BYTES(b: cmsUInt32Number): cmsUInt32Number; begin T_BYTES := ((b) and 7) end;
\r
1661 FUNCTION cmsPlugin(Plugin: Pointer): cmsBool; StdCall; external 'lcms2.dll';
\r
1662 PROCEDURE cmsUnregisterPlugins; StdCall; external 'lcms2.dll';
\r
1663 PROCEDURE cmsSetLogErrorHandler(Fn: cmsLogErrorHandlerFunction); StdCall; external 'lcms2.dll';
\r
1664 FUNCTION cmsD50_XYZ: LPcmsCIEXYZ; StdCall; external 'lcms2.dll';
\r
1665 FUNCTION cmsD50_xyY: LPcmsCIExyY; StdCall; external 'lcms2.dll';
\r
1666 PROCEDURE cmsXYZ2xyY(Dest: LPcmsCIExyY; Source: LPcmsCIEXYZ); StdCall; external 'lcms2.dll';
\r
1667 PROCEDURE cmsxyY2XYZ(Dest: LPcmsCIEXYZ; Source: LPcmsCIExyY); StdCall; external 'lcms2.dll';
\r
1668 PROCEDURE cmsLab2XYZ(WhitePoint: LPcmsCIEXYZ; xyz: LPcmsCIEXYZ; Lab: LPcmsCIELab); StdCall; external 'lcms2.dll';
\r
1669 PROCEDURE cmsXYZ2Lab(WhitePoint: LPcmsCIEXYZ; Lab: LPcmsCIELab; xyz: LPcmsCIEXYZ); StdCall; external 'lcms2.dll';
\r
1670 PROCEDURE cmsLab2LCh(LCh: LPcmsCIELCh; Lab: LPcmsCIELab); StdCall; external 'lcms2.dll';
\r
1671 PROCEDURE cmsLCh2Lab(Lab: LPcmsCIELab; LCh: LPcmsCIELCh); StdCall; external 'lcms2.dll';
\r
1672 PROCEDURE cmsLabEncoded2Float(Lab: LPcmsCIELab; wLab: Pointer); StdCall; external 'lcms2.dll';
\r
1673 PROCEDURE cmsLabEncoded2FloatV2(Lab: LPcmsCIELab; wLab: Pointer); StdCall; external 'lcms2.dll';
\r
1674 PROCEDURE cmsFloat2LabEncoded(wLab: Pointer; Lab: LPcmsCIELab); StdCall; external 'lcms2.dll';
\r
1675 PROCEDURE cmsFloat2LabEncodedV2(wLab: Pointer; Lab: LPcmsCIELab); StdCall; external 'lcms2.dll';
\r
1676 PROCEDURE cmsXYZEncoded2Float(fxyz : LPcmsCIEXYZ; XYZ: Pointer); StdCall; external 'lcms2.dll';
\r
1677 PROCEDURE cmsFloat2XYZEncoded(XYZ: Pointer; fXYZ: LPcmsCIEXYZ); StdCall; external 'lcms2.dll';
\r
1678 FUNCTION cmsDeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external 'lcms2.dll';
\r
1679 FUNCTION cmsCIE94DeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external 'lcms2.dll';
\r
1680 FUNCTION cmsBFDdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external 'lcms2.dll';
\r
1681 FUNCTION cmsCMCdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external 'lcms2.dll';
\r
1682 FUNCTION cmsCIE2000DeltaE(Lab1, Lab2: LPcmsCIELab; Kl, Kc, Kh: Double): Double; StdCall; external 'lcms2.dll';
\r
1683 FUNCTION cmsWhitePointFromTemp(var WhitePoint: cmsCIExyY; TempK: cmsFloat64Number) : cmsBool; StdCall; external 'lcms2.dll';
\r
1684 FUNCTION cmsTempFromWhitePoint(var TeampK: cmsFloat64Number; var WhitePoint: cmsCIExyY) : cmsBool; StdCall; external 'lcms2.dll';
\r
1685 FUNCTION cmsAdaptToIlluminant(Result: LPcmsCIEXYZ; SourceWhitePt: LPcmsCIEXYZ;
\r
1686 Illuminant: LPcmsCIEXYZ; Value: LPcmsCIEXYZ): cmsBool; StdCall; external 'lcms2.dll';
\r
1687 FUNCTION cmsCIECAM02Init(pVC : LPcmsViewingConditions ) : Pointer; StdCall; external 'lcms2.dll';
\r
1688 PROCEDURE cmsCIECAM02Done(hModel : Pointer); StdCall; external 'lcms2.dll';
\r
1689 PROCEDURE cmsCIECAM02Forward(hModel: Pointer; pIn: LPcmsCIEXYZ; pOut: LPcmsJCh ); StdCall; external 'lcms2.dll';
\r
1690 PROCEDURE cmsCIECAM02Reverse(hModel: Pointer; pIn: LPcmsJCh; pOut: LPcmsCIEXYZ ); StdCall; external 'lcms2.dll';
\r
1691 FUNCTION cmsBuildSegmentedToneCurve(ContextID: cmsContext; nSegments: cmsInt32Number; Segments: LPcmsCurveSegmentArray): LPcmsToneCurve; StdCall; external 'lcms2.dll';
\r
1692 FUNCTION cmsBuildParametricToneCurve(ContextID: cmsContext; CType: cmsInt32Number; Params: LPcmsFloat64NumberArray): LPcmsToneCurve; StdCall; external 'lcms2.dll';
\r
1693 FUNCTION cmsBuildGamma(ContextID: cmsContext; Gamma: cmsFloat64Number): LPcmsToneCurve; StdCall; external 'lcms2.dll';
\r
1694 FUNCTION cmsBuildTabulatedToneCurve16(ContextID: cmsContext; nEntries: cmsInt32Number; values: LPcmsUInt16NumberArray): LPcmsToneCurve; StdCall; external 'lcms2.dll';
\r
1695 FUNCTION cmsBuildTabulatedToneCurveFloat(ContextID: cmsContext; nEntries: cmsUInt32Number; values: LPcmsFloat32NumberArray): LPcmsToneCurve; StdCall; external 'lcms2.dll';
\r
1696 PROCEDURE cmsFreeToneCurve(Curve: LPcmsToneCurve); StdCall; external 'lcms2.dll';
\r
1697 PROCEDURE cmsFreeToneCurveTriple(Curve: LPLPcmsToneCurveArray); StdCall; external 'lcms2.dll';
\r
1698 FUNCTION cmsDupToneCurve(Src: LPcmsToneCurve): LPcmsToneCurve; StdCall; external 'lcms2.dll';
\r
1699 FUNCTION cmsReverseToneCurve(InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall; external 'lcms2.dll';
\r
1700 FUNCTION cmsReverseToneCurveEx(nResultSamples: cmsInt32Number; InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall; external 'lcms2.dll';
\r
1701 FUNCTION cmsJoinToneCurve(ContextID: cmsContext; X, Y: LPcmsToneCurve; nPoints: cmsUInt32Number ): LPcmsToneCurve; StdCall; external 'lcms2.dll';
\r
1702 FUNCTION cmsSmoothToneCurve(Tab: LPcmsToneCurve; lambda: cmsFloat64Number): cmsBool; StdCall; external 'lcms2.dll';
\r
1703 FUNCTION cmsEvalToneCurveFloat(Curve: LPcmsToneCurve; v: cmsFloat32Number):cmsFloat32Number; StdCall; external 'lcms2.dll';
\r
1704 FUNCTION cmsEvalToneCurve16(Curve: LPcmsToneCurve; v:cmsUInt16Number):cmsUInt16Number; StdCall; external 'lcms2.dll';
\r
1705 FUNCTION cmsIsToneCurveMultisegment(InGamma: LPcmsToneCurve):cmsBool; StdCall; external 'lcms2.dll';
\r
1706 FUNCTION cmsIsToneCurveLinear(Curve: LPcmsToneCurve):cmsBool; StdCall; external 'lcms2.dll';
\r
1707 FUNCTION cmsIsToneCurveMonotonic(t: LPcmsToneCurve):cmsBool; StdCall; external 'lcms2.dll';
\r
1708 FUNCTION cmsIsToneCurveDescending(t: LPcmsToneCurve):cmsBool; StdCall; external 'lcms2.dll';
\r
1709 FUNCTION cmsGetToneCurveParametricType(t: LPcmsToneCurve):cmsInt32Number; StdCall; external 'lcms2.dll';
\r
1710 FUNCTION cmsEstimateGamma(t: LPcmsToneCurve; Precision:cmsFloat64Number):cmsFloat64Number; StdCall; external 'lcms2.dll';
\r
1711 FUNCTION cmsPipelineAlloc(ContextID: cmsContext; InputChannels, OutputChannels: cmsUInt32Number): LPcmsPipeline; StdCall; external 'lcms2.dll';
\r
1712 PROCEDURE cmsPipelineFree(lut: LPcmsPipeline); StdCall; external 'lcms2.dll';
\r
1713 FUNCTION cmsPipelineDup(Orig: LPcmsPipeline): LPcmsPipeline; StdCall; external 'lcms2.dll';
\r
1714 FUNCTION cmsPipelineInputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1715 FUNCTION cmsPipelineOutputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1716 FUNCTION cmsPipelineStageCount(lut: LPcmsPipeline): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1717 FUNCTION cmsPipelineGetPtrToFirstStage(lut: LPcmsPipeline): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1718 FUNCTION cmsPipelineGetPtrToLastStage(lut: LPcmsPipeline): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1720 PROCEDURE cmsPipelineEval16(Inv, Outv: LPcmsUInt16NumberArray; lut: LPcmsPipeline); StdCall; external 'lcms2.dll';
\r
1721 PROCEDURE cmsPipelineEvalFloat(Inv, Outv: LPcmsFloat32NumberArray; lut: LPcmsPipeline); StdCall; external 'lcms2.dll';
\r
1723 FUNCTION cmsPipelineEvalReverseFloat(Target, Result, Hint: LPcmsFloat32NumberArray; lut: LPcmsPipeline): cmsBool; StdCall; external 'lcms2.dll';
\r
1724 FUNCTION cmsPipelineCat(l1, l2: LPcmsPipeline): cmsBool; StdCall; external 'lcms2.dll';
\r
1725 FUNCTION cmsPipelineSetSaveAs8bitsFlag(lut: LPcmsPipeline; On: cmsBool): cmsBool; StdCall; external 'lcms2.dll';
\r
1726 PROCEDURE cmsPipelineInsertStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPcmsStage); StdCall; external 'lcms2.dll';
\r
1727 PROCEDURE cmsPipelineUnlinkStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPLPcmsStage); StdCall; external 'lcms2.dll';
\r
1728 FUNCTION cmsStageAllocIdentity(ContextID: cmsContext; nChannels: cmsUInt32Number): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1729 FUNCTION cmsStageAllocToneCurves(ContextID: cmsContext; nChannels: cmsUInt32Number; Curves: LPLPcmsToneCurveArray): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1730 FUNCTION cmsStageAllocMatrix(ContextID: cmsContext; Rows, Cols: cmsUInt32Number; Matrix, Offset: LPcmsFloat64NumberArray): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1731 FUNCTION cmsStageAllocCLut16bit(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1732 FUNCTION cmsStageAllocCLutFloat(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1733 FUNCTION cmsStageAllocCLut16bitGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1734 FUNCTION cmsStageAllocCLutFloatGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1735 FUNCTION cmsStageDup(mpe: LPcmsStage): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1736 PROCEDURE cmsStageFree(mpe: LPcmsStage); StdCall; external 'lcms2.dll';
\r
1737 FUNCTION cmsStageNext(mpe: LPcmsStage): LPcmsStage; StdCall; external 'lcms2.dll';
\r
1738 FUNCTION cmsStageInputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1739 FUNCTION cmsStageOutputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1740 FUNCTION cmsStageType(mpe: LPcmsStage): cmsStageSignature; StdCall; external 'lcms2.dll';
\r
1741 FUNCTION cmsStageData(mpe: LPcmsStage): Pointer; StdCall; external 'lcms2.dll';
\r
1742 FUNCTION cmsStageSampleCLut16bit(mpe: LPcmsStage; Sampler: cmsSAMPLER16; Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll';
\r
1743 FUNCTION cmsStageSampleCLutFloat(mpe: LPcmsStage; Sampler: cmsSAMPLERFLOAT; Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll';
\r
1744 FUNCTION cmsSliceSpace16(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray;
\r
1745 Sampler: cmsSAMPLER16; Cargo: Pointer): cmsBool; StdCall; external 'lcms2.dll';
\r
1747 FUNCTION cmsSliceSpaceFloat(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray;
\r
1748 Sampler: cmsSAMPLERFLOAT; Cargo: Pointer): cmsBool; StdCall; external 'lcms2.dll';
\r
1749 FUNCTION cmsMLUalloc(ContextID: cmsContext; nItems: cmsUInt32Number): LPcmsMLU; StdCall; external 'lcms2.dll';
\r
1750 PROCEDURE cmsMLUfree(mlu: LPcmsMLU); StdCall; external 'lcms2.dll';
\r
1751 FUNCTION cmsMLUdup(mlu: LPcmsMLU): LPcmsMLU; StdCall; external 'lcms2.dll';
\r
1753 FUNCTION cmsMLUsetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode, ASCIIString: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
1754 FUNCTION cmsMLUsetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; WideString: PWChar): cmsBool; StdCall; external 'lcms2.dll';
\r
1756 FUNCTION cmsMLUgetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1758 FUNCTION cmsMLUgetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1760 FUNCTION cmsMLUgetTranslation(mlu: LPcmsMLU; LanguageCode, CountryCode, ObtainedLanguage, ObtainedCountry: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
1762 FUNCTION cmsAllocNamedColorList(ContextID: cmsContext; n, ColorantCount :cmsUInt32Number;
\r
1763 Prefix, Suffix: PAnsiChar): LPcmsNAMEDCOLORLIST; StdCall; external 'lcms2.dll';
\r
1765 PROCEDURE cmsFreeNamedColorList(v: LPcmsNAMEDCOLORLIST); StdCall; external 'lcms2.dll';
\r
1766 FUNCTION cmsDupNamedColorList(v: LPcmsNAMEDCOLORLIST): LPcmsNAMEDCOLORLIST; StdCall; external 'lcms2.dll';
\r
1767 FUNCTION cmsAppendNamedColor(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar;
\r
1768 PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall; external 'lcms2.dll';
\r
1770 FUNCTION cmsNamedColorCount(v: LPcmsNAMEDCOLORLIST): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1771 FUNCTION cmsNamedColorIndex(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar): cmsInt32Number; StdCall; external 'lcms2.dll';
\r
1773 FUNCTION cmsNamedColorInfo(v: LPcmsNAMEDCOLORLIST; nColor : cmsUInt32Number;
\r
1774 Name,Prefix, Suffix : PAnsiChar;
\r
1775 PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall; external 'lcms2.dll';
\r
1777 FUNCTION cmsGetNamedColorList(xform: cmsHTRANSFORM ): LPcmsNAMEDCOLORLIST; StdCall; external 'lcms2.dll';
\r
1779 FUNCTION cmsAllocProfileSequenceDescription(ContextID: cmsContext; n: cmsUInt32Number):LPcmsSEQ; StdCall; external 'lcms2.dll';
\r
1780 FUNCTION cmsDupProfileSequenceDescription(pseq: LPcmsSEQ):LPcmsSEQ; StdCall; external 'lcms2.dll';
\r
1781 PROCEDURE cmsFreeProfileSequenceDescription(pseq: LPcmsSEQ); StdCall; external 'lcms2.dll';
\r
1783 FUNCTION cmsDictAlloc(ContextID: cmsContext): cmsHANDLE; StdCall; external 'lcms2.dll';
\r
1784 PROCEDURE cmsDictFree(hDict: cmsHANDLE); StdCall; external 'lcms2.dll';
\r
1785 FUNCTION cmsDictDup(hDict: cmsHANDLE): cmsHANDLE; StdCall; external 'lcms2.dll';
\r
1787 FUNCTION cmsDictAddEntry(hDict: cmsHANDLE; Name, Value: PWChar; DisplayName, DisplayValue : LPcmsMLU): cmsBool; StdCall; external 'lcms2.dll';
\r
1788 FUNCTION cmsDictGetEntryList(hDict: cmsHANDLE): LPcmsDICTentry; StdCall; external 'lcms2.dll';
\r
1789 FUNCTION cmsDictNextEntry(e : LPcmsDICTentry): LPcmsDICTentry; StdCall; external 'lcms2.dll';
\r
1791 FUNCTION cmsCreateProfilePlaceholder(ContextID: cmsContext): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1793 FUNCTION cmsGetProfileContextID(hProfile: cmsHPROFILE):cmsContext; StdCall; external 'lcms2.dll';
\r
1794 FUNCTION cmsGetTagCount(hProfile: cmsHPROFILE): cmsInt32Number; StdCall; external 'lcms2.dll';
\r
1795 FUNCTION cmsGetTagSignature(hProfile: cmsHPROFILE; n: cmsUInt32Number): cmsTagSignature; StdCall; external 'lcms2.dll';
\r
1796 FUNCTION cmsIsTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): cmsBool; StdCall; external 'lcms2.dll';
\r
1798 FUNCTION cmsReadTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): Pointer; StdCall; external 'lcms2.dll';
\r
1799 FUNCTION cmsWriteTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer): cmsBool; StdCall; external 'lcms2.dll';
\r
1800 FUNCTION cmsLinkTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; dest: cmsTagSignature): cmsBool; StdCall; external 'lcms2.dll';
\r
1801 FUNCTION cmsTagLinkedTo(hProfile: cmsHPROFILE; sig: cmsTagSignature):cmsTagSignature; StdCall; external 'lcms2.dll';
\r
1803 FUNCTION cmsReadRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; Buffer: Pointer; BufferSize: cmsUInt32Number): cmsInt32Number; StdCall; external 'lcms2.dll';
\r
1804 FUNCTION cmsWriteRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer; Size: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll';
\r
1806 FUNCTION cmsGetHeaderFlags(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1807 PROCEDURE cmsGetHeaderAttributes(hProfile: cmsHPROFILE; Flags: LPcmsUInt64Number); StdCall; external 'lcms2.dll';
\r
1808 PROCEDURE cmsGetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall; external 'lcms2.dll';
\r
1810 FUNCTION cmsGetHeaderRenderingIntent(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1811 PROCEDURE cmsSetHeaderFlags(hProfile: cmsHPROFILE; Flags: cmsUInt32Number); StdCall; external 'lcms2.dll';
\r
1812 FUNCTION cmsGetHeaderManufacturer(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1813 PROCEDURE cmsSetHeaderManufacturer(hProfile: cmsHPROFILE; manufacturer: cmsUInt32Number ); StdCall; external 'lcms2.dll';
\r
1814 FUNCTION cmsGetHeaderModel(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1815 PROCEDURE cmsSetHeaderModel(hProfile: cmsHPROFILE; model: cmsUInt32Number ); StdCall; external 'lcms2.dll';
\r
1816 PROCEDURE cmsSetHeaderAttributes(hProfile: cmsHPROFILE; Flags: cmsUInt64Number); StdCall; external 'lcms2.dll';
\r
1817 PROCEDURE cmsSetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall; external 'lcms2.dll';
\r
1818 PROCEDURE cmsSetHeaderRenderingIntent(hProfile: cmsHPROFILE; RenderingIntent: cmsUInt32Number ); StdCall; external 'lcms2.dll';
\r
1820 FUNCTION cmsGetPCS(hProfile: cmsHPROFILE):cmsColorSpaceSignature; StdCall; external 'lcms2.dll';
\r
1821 PROCEDURE cmsSetPCS(hProfile: cmsHPROFILE; pcs: cmsColorSpaceSignature); StdCall; external 'lcms2.dll';
\r
1822 FUNCTION cmsGetColorSpace(hProfile: cmsHPROFILE): cmsColorSpaceSignature; StdCall; external 'lcms2.dll';
\r
1823 PROCEDURE cmsSetColorSpace(hProfile: cmsHPROFILE; sig: cmsColorSpaceSignature); StdCall; external 'lcms2.dll';
\r
1824 FUNCTION cmsGetDeviceClass(hProfile: cmsHPROFILE): cmsProfileClassSignature; StdCall; external 'lcms2.dll';
\r
1825 PROCEDURE cmsSetDeviceClass(hProfile: cmsHPROFILE; sig: cmsProfileClassSignature); StdCall; external 'lcms2.dll';
\r
1826 PROCEDURE cmsSetProfileVersion(hProfile: cmsHPROFILE; Version: cmsFloat64Number); StdCall; external 'lcms2.dll';
\r
1827 FUNCTION cmsGetProfileVersion(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall; external 'lcms2.dll';
\r
1829 FUNCTION cmsGetEncodedICCversion(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1830 PROCEDURE cmsSetEncodedICCversion(hProfile: cmsHPROFILE; Version: cmsUInt32Number); StdCall; external 'lcms2.dll';
\r
1833 FUNCTION cmsIsIntentSupported(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll';
\r
1834 FUNCTION cmsIsMatrixShaper(hProfile: cmsHPROFILE): cmsBool; StdCall; external 'lcms2.dll';
\r
1835 FUNCTION cmsIsCLUT(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll';
\r
1836 FUNCTION _cmsICCcolorSpace(OurNotation: Integer): cmsColorSpaceSignature; StdCall; external 'lcms2.dll';
\r
1837 FUNCTION _cmsLCMScolorSpace(ProfileSpace: cmsColorSpaceSignature): Integer; StdCall; external 'lcms2.dll';
\r
1839 FUNCTION cmsChannelsOf( ColorSpace: cmsColorSpaceSignature): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1841 FUNCTION cmsFormatterForColorspaceOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1842 FUNCTION cmsFormatterForPCSOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1845 FUNCTION cmsGetProfileInfo(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar;
\r
1846 Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1848 FUNCTION cmsGetProfileInfoASCII(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar;
\r
1849 Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1852 FUNCTION cmsOpenIOhandlerFromFile(ContextID: cmsContext; FileName, AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall; external 'lcms2.dll';
\r
1853 // FUNCTION cmsOpenIOhandlerFromStream(ContextID: cmsContext; FILE* Stream): LPcmsIOHANDLER; StdCall; external 'lcms2.dll';
\r
1854 FUNCTION cmsOpenIOhandlerFromMem(ContextID: cmsContext; Buffer: Pointer; size: cmsUInt32Number; AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall; external 'lcms2.dll';
\r
1855 FUNCTION cmsOpenIOhandlerFromNULL(ContextID: cmsContext): LPcmsIOHANDLER; StdCall; external 'lcms2.dll';
\r
1856 FUNCTION cmsCloseIOhandler(io: LPcmsIOHANDLER): cmsBool; StdCall; external 'lcms2.dll';
\r
1858 FUNCTION cmsMD5computeID(hProfile: cmsHPROFILE): cmsBool; StdCall; external 'lcms2.dll';
\r
1860 FUNCTION cmsOpenProfileFromFile(ICCProfile : PAnsiChar; sAccess: PAnsiChar): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1861 FUNCTION cmsOpenProfileFromFileTHR(ContextID: cmsContext; ICCProfile, sAccess: PAnsiChar): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1862 // FUNCTION CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1863 // FUNCTION CMSEXPORT cmsOpenProfileFromStreamTHR(ContextID: cmsContext; FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1864 FUNCTION cmsOpenProfileFromMem(MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1865 FUNCTION cmsOpenProfileFromMemTHR(ContextID: cmsContext; MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1866 FUNCTION cmsOpenProfileFromIOhandlerTHR(ContextID: cmsContext; io: LPcmsIOHANDLER): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1867 FUNCTION cmsCloseProfile(hProfile: cmsHPROFILE): cmsBool; StdCall; external 'lcms2.dll';
\r
1869 FUNCTION cmsSaveProfileToFile(hProfile: cmsHPROFILE; FileName: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
1870 // FUNCTION CMSEXPORT cmsSaveProfileToStream(hProfile: cmsHPROFILE, FILE* Stream): cmsBool; StdCall; external 'lcms2.dll';
\r
1871 FUNCTION cmsSaveProfileToMem(hProfile: cmsHPROFILE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll';
\r
1872 FUNCTION cmsSaveProfileToIOhandler(hProfile: cmsHPROFILE; io: LPcmsIOHANDLER):cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1874 FUNCTION cmsCreateRGBProfileTHR(ContextID: cmsContext;
\r
1875 WhitePoint: LPcmsCIExyY;
\r
1876 Primaries: LPcmsCIExyYTRIPLE;
\r
1877 TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1879 FUNCTION cmsCreateRGBProfile(WhitePoint: LPcmsCIExyY;
\r
1880 Primaries: LPcmsCIExyYTRIPLE;
\r
1881 TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1883 FUNCTION cmsCreateGrayProfileTHR(ContextID: cmsContext;
\r
1884 WhitePoint: LPcmsCIExyY;
\r
1885 TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1887 FUNCTION cmsCreateGrayProfile(WhitePoint: LPcmsCIExyY;
\r
1888 TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1890 FUNCTION cmsCreateLinearizationDeviceLinkTHR(ContextID: cmsContext;
\r
1891 ColorSpace: cmsColorSpaceSignature;
\r
1892 TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1894 FUNCTION cmsCreateLinearizationDeviceLink(ColorSpace: cmsColorSpaceSignature;
\r
1895 TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1897 FUNCTION cmsCreateInkLimitingDeviceLinkTHR(ContextID: cmsContext;
\r
1898 ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1900 FUNCTION cmsCreateInkLimitingDeviceLink(ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1903 FUNCTION cmsCreateLab2ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1904 FUNCTION cmsCreateLab2Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1905 FUNCTION cmsCreateLab4ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1906 FUNCTION cmsCreateLab4Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1908 FUNCTION cmsCreateXYZProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1909 FUNCTION cmsCreateXYZProfile: cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1911 FUNCTION cmsCreate_sRGBProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1912 FUNCTION cmsCreate_sRGBProfile: cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1914 FUNCTION cmsCreateBCHSWabstractProfileTHR(ContextID: cmsContext;
\r
1915 nLUTPoints: Integer;
\r
1919 Saturation: cmsFloat64Number;
\r
1921 TempDest: Integer): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1923 FUNCTION cmsCreateBCHSWabstractProfile( nLUTPoints: Integer;
\r
1927 Saturation: cmsFloat64Number;
\r
1929 TempDest: Integer): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1931 FUNCTION cmsCreateNULLProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1932 FUNCTION cmsCreateNULLProfile: cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1934 // Converts a transform to a devicelink profile
\r
1935 FUNCTION cmsTransform2DeviceLink(hTransform: cmsHTRANSFORM; Version: cmsFloat64Number; dwFlags: cmsUInt32Number): cmsHPROFILE; StdCall; external 'lcms2.dll';
\r
1937 // Call with NULL as parameters to get the intent count
\r
1938 FUNCTION cmsGetSupportedIntents(nMax: cmsUInt32Number; Codes: LPcmsUInt32Number; Descriptions: LPPAnsiChar): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
1940 FUNCTION cmsFLAGS_GRIDPOINTS(n: Integer): Integer; begin cmsFLAGS_GRIDPOINTS := (((n) and $FF) shl 16) end;
\r
1943 FUNCTION cmsCreateTransformTHR(ContextID: cmsContext;
\r
1944 Input: cmsHPROFILE;
\r
1945 InputFormat: cmsUInt32Number;
\r
1946 Output: cmsHPROFILE;
\r
1947 OutputFormat: cmsUInt32Number;
\r
1948 Intent: cmsUInt32Number;
\r
1949 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll';
\r
1951 FUNCTION cmsCreateTransform(Input: cmsHPROFILE;
\r
1952 InputFormat: cmsUInt32Number;
\r
1953 Output: cmsHPROFILE;
\r
1954 OutputFormat: cmsUInt32Number;
\r
1955 Intent: cmsUInt32Number;
\r
1956 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll';
\r
1958 FUNCTION cmsCreateProofingTransformTHR(ContextID: cmsContext;
\r
1959 Input: cmsHPROFILE;
\r
1960 InputFormat: cmsUInt32Number;
\r
1961 Output: cmsHPROFILE;
\r
1962 OutputFormat: cmsUInt32Number;
\r
1963 Proofing: cmsHPROFILE;
\r
1964 Intent: cmsUInt32Number;
\r
1965 ProofingIntent: cmsUInt32Number;
\r
1966 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll';
\r
1968 FUNCTION cmsCreateProofingTransform(Input: cmsHPROFILE;
\r
1969 InputFormat: cmsUInt32Number;
\r
1970 Output: cmsHPROFILE;
\r
1971 OutputFormat: cmsUInt32Number;
\r
1972 Proofing: cmsHPROFILE;
\r
1973 Intent: cmsUInt32Number;
\r
1974 ProofingIntent: cmsUInt32Number;
\r
1975 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll';
\r
1977 FUNCTION cmsCreateMultiprofileTransformTHR(ContextID: cmsContext;
\r
1978 hProfiles: LPcmsHPROFILEArray;
\r
1979 nProfiles: cmsUInt32Number;
\r
1980 InputFormat: cmsUInt32Number;
\r
1981 OutputFormat: cmsUInt32Number;
\r
1982 Intent: cmsUInt32Number;
\r
1983 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll';
\r
1986 FUNCTION cmsCreateMultiprofileTransform( hProfiles: LPcmsHPROFILEArray;
\r
1987 nProfiles: cmsUInt32Number;
\r
1988 InputFormat: cmsUInt32Number;
\r
1989 OutputFormat: cmsUInt32Number;
\r
1990 Intent: cmsUInt32Number;
\r
1991 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll';
\r
1994 FUNCTION cmsCreateExtendedTransform(ContextID: cmsContext;
\r
1995 nProfiles: cmsUInt32Number;
\r
1996 hProfiles: LPcmsHPROFILEArray;
\r
1997 BPC: LPcmsBoolArray;
\r
1998 Intents: LPcmsUInt32NumberArray;
\r
1999 AdaptationStates: LPcmsFloat64NumberArray;
\r
2000 hGamutProfile: cmsHPROFILE;
\r
2001 nGamutPCSposition: cmsUInt32Number;
\r
2003 OutputFormat: cmsUInt32Number;
\r
2004 dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll';
\r
2006 PROCEDURE cmsDeleteTransform(hTransform: cmsHTRANSFORM); StdCall; external 'lcms2.dll';
\r
2008 PROCEDURE cmsDoTransform(Transform: cmsHTRANSFORM; InputBuffer, OutputBuffer: Pointer; size: cmsUInt32Number); StdCall; external 'lcms2.dll';
\r
2010 PROCEDURE cmsSetAlarmCodes( NewAlarm: LPcmsUInt16NumberArray); StdCall; external 'lcms2.dll';
\r
2011 PROCEDURE cmsGetAlarmCodes(NewAlarm: LPcmsUInt16NumberArray); StdCall; external 'lcms2.dll';
\r
2013 // Adaptation state for absolute colorimetric intent
\r
2014 FUNCTION cmsSetAdaptationState(d: cmsFloat64Number):cmsFloat64Number; StdCall; external 'lcms2.dll';
\r
2016 // Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed
\r
2017 FUNCTION cmsGetTransformContextID(hTransform: cmsHTRANSFORM):cmsContext; StdCall; external 'lcms2.dll';
\r
2019 // For backwards compatibility
\r
2020 FUNCTION cmsChangeBuffersFormat(hTransform: cmsHTRANSFORM; InputFormat, OutputFormat: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll';
\r
2023 // lcms2 unified method to access postscript color resources
\r
2024 FUNCTION cmsGetPostScriptColorResource(ContextID: cmsContext; RType: cmsPSResourceType;
\r
2025 hProfile: cmsHPROFILE;
\r
2026 Intent: cmsUInt32Number;
\r
2027 dwFlags: cmsUInt32Number;
\r
2028 io: LPcmsIOHANDLER): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
2030 FUNCTION cmsGetPostScriptCSA(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number ): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
2031 FUNCTION cmsGetPostScriptCRD(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number): cmsUInt32Number; StdCall; external 'lcms2.dll';
\r
2034 // CGATS.13 parser
\r
2036 FUNCTION cmsIT8Alloc: cmsHANDLE; StdCall; external 'lcms2.dll';
\r
2037 PROCEDURE cmsIT8Free(hIT8: cmsHANDLE); StdCall; external 'lcms2.dll';
\r
2041 FUNCTION cmsIT8TableCount(hIT8: cmsHANDLE): Integer; StdCall; external 'lcms2.dll';
\r
2042 FUNCTION cmsIT8SetTable(hIT8: cmsHANDLE; nTable: Integer): Integer; StdCall; external 'lcms2.dll';
\r
2045 FUNCTION cmsIT8LoadFromFile(cFileName: PAnsiChar): cmsHANDLE; StdCall; external 'lcms2.dll';
\r
2046 FUNCTION cmsIT8LoadFromMem(Ptr: Pointer; size :DWord): cmsHANDLE; StdCall; external 'lcms2.dll';
\r
2048 FUNCTION cmsIT8SaveToFile(hIT8: cmsHANDLE; cFileName: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
2049 FUNCTION cmsIT8SaveToMem(hIT8: cmsHANDLE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll';
\r
2052 FUNCTION cmsIT8GetSheetType(hIT8: cmsHANDLE): PAnsiChar; StdCall; external 'lcms2.dll';
\r
2053 FUNCTION cmsIT8SetSheetType(hIT8: cmsHANDLE; TheType: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
2055 FUNCTION cmsIT8SetComment(hIT8: cmsHANDLE; cComment: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
2057 FUNCTION cmsIT8SetPropertyStr(hIT8: cmsHANDLE; cProp, Str: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
2058 FUNCTION cmsIT8SetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Double): cmsBool; StdCall; external 'lcms2.dll';
\r
2059 FUNCTION cmsIT8SetPropertyHex(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Integer): cmsBool; StdCall; external 'lcms2.dll';
\r
2060 FUNCTION cmsIT8SetPropertyUncooked(hIT8: cmsHANDLE; Key, Buffer: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
2063 FUNCTION cmsIT8GetProperty(hIT8: cmsHANDLE; cProp: PAnsiChar): PAnsiChar; StdCall; external 'lcms2.dll';
\r
2064 FUNCTION cmsIT8GetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar): Double; StdCall; external 'lcms2.dll';
\r
2065 FUNCTION cmsIT8EnumProperties(hIT8: cmsHANDLE; var PropertyNames: LPPAnsiChar): Integer; StdCall; external 'lcms2.dll';
\r
2069 FUNCTION cmsIT8GetDataRowCol(hIT8: cmsHANDLE; row, col: Integer): PAnsiChar; StdCall; external 'lcms2.dll';
\r
2070 FUNCTION cmsIT8GetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer): Double; StdCall; external 'lcms2.dll';
\r
2072 FUNCTION cmsIT8SetDataRowCol(hIT8: cmsHANDLE; row, col: Integer; Val: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
2073 FUNCTION cmsIT8SetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer; Val: Double): cmsBool; StdCall; external 'lcms2.dll';
\r
2075 FUNCTION cmsIT8GetData(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar): PAnsiChar; StdCall; external 'lcms2.dll';
\r
2077 FUNCTION cmsIT8GetDataDbl(hIT8: cmsHANDLE;cPatch, cSample: PAnsiChar): Double; StdCall; external 'lcms2.dll';
\r
2079 FUNCTION cmsIT8SetData(hIT8: cmsHANDLE; cPatch, cSample, Val: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
2081 FUNCTION cmsIT8SetDataDbl(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar; Val: Double): cmsBool; StdCall; external 'lcms2.dll';
\r
2083 FUNCTION cmsIT8SetDataFormat(hIT8: cmsHANDLE; n: Integer; Sample: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll';
\r
2084 FUNCTION cmsIT8EnumDataFormat(hIT8: cmsHANDLE; var SampleNames: LPPAnsiChar): Integer; StdCall; external 'lcms2.dll';
\r
2085 FUNCTION cmsIT8GetPatchName(hIT8: cmsHANDLE; nPatch: Integer; Buffer: PAnsiChar): PAnsiChar; StdCall; external 'lcms2.dll';
\r
2087 // The LABEL extension
\r
2089 FUNCTION cmsIT8SetTableByLabel(hIT8: cmsHANDLE; cSet, cField, ExpectedType: PAnsiChar): Integer; StdCall; external 'lcms2.dll';
\r
2091 FUNCTION cmsIT8FindDataFormat(hIT8: cmsHANDLE; cSample: PAnsiChar): Integer; StdCall; external 'lcms2.dll';
\r
2093 // Formatter for double
\r
2094 PROCEDURE cmsIT8DefineDblFormat(hIT8: cmsHANDLE; Formatter: PAnsiChar); StdCall; external 'lcms2.dll';
\r
2096 FUNCTION cmsGBDAlloc(ContextID: cmsContext):cmsHANDLE; StdCall; external 'lcms2.dll';
\r
2097 PROCEDURE cmsGBDFree(hGBD: cmsHANDLE); StdCall; external 'lcms2.dll';
\r
2098 FUNCTION cmsGDBAddPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall; external 'lcms2.dll';
\r
2099 FUNCTION cmsGDBCompute(hGDB: cmsHANDLE; dwFlags: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll';
\r
2100 FUNCTION cmsGDBCheckPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall; external 'lcms2.dll';
\r
2102 FUNCTION cmsDetectBlackPoint( BlackPoint: LPcmsCIEXYZ; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll';
\r
2104 FUNCTION cmsDetectTAC(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall; external 'lcms2.dll';
\r
2106 FUNCTION cmsDesaturateLab(Lab: LPcmsCIELab; amax, amin, bmax, bmin: cmsFloat64Number): cmsBool; StdCall; external 'lcms2.dll';
\r