2
0

lcms2dll.pas 114 KB

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