xcms.pp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. {$IFNDEF FPC_DOTTEDUNITS}
  2. unit xcms;
  3. {$ENDIF FPC_DOTTEDUNITS}
  4. interface
  5. {$IFDEF FPC_DOTTEDUNITS}
  6. uses
  7. Api.X11.X,Api.X11.Xlib;
  8. {$ELSE FPC_DOTTEDUNITS}
  9. uses
  10. x,xlib;
  11. {$ENDIF FPC_DOTTEDUNITS}
  12. {$ifndef os2}
  13. {$LinkLib c}
  14. {$LinkLib X11}
  15. const
  16. libX11='X11';
  17. {$else}
  18. const
  19. libX11='X11';
  20. {$endif}
  21. {
  22. Automatically converted by H2Pas 0.99.15 from xcms.h
  23. The following command line parameters were used:
  24. -p
  25. -T
  26. -S
  27. -d
  28. -c
  29. xcms.h
  30. }
  31. {$PACKRECORDS C}
  32. const
  33. XcmsFailure = 0;
  34. XcmsSuccess = 1;
  35. XcmsSuccessWithCompression = 2;
  36. type
  37. PXcmsColorFormat = ^TXcmsColorFormat;
  38. TXcmsColorFormat = dword;
  39. function XcmsUndefinedFormat : TXcmsColorFormat;
  40. function XcmsCIEXYZFormat : TXcmsColorFormat;
  41. function XcmsCIEuvYFormat : TXcmsColorFormat;
  42. function XcmsCIExyYFormat : TXcmsColorFormat;
  43. function XcmsCIELabFormat : TXcmsColorFormat;
  44. function XcmsCIELuvFormat : TXcmsColorFormat;
  45. function XcmsTekHVCFormat : TXcmsColorFormat;
  46. function XcmsRGBFormat : TXcmsColorFormat;
  47. function XcmsRGBiFormat : TXcmsColorFormat;
  48. const
  49. XcmsInitNone = $00;
  50. XcmsInitSuccess = $01;
  51. XcmsInitFailure = $ff;
  52. {$ifdef MACROS}
  53. function DisplayOfCCC(ccc : longint) : longint;
  54. function ScreenNumberOfCCC(ccc : longint) : longint;
  55. function VisualOfCCC(ccc : longint) : longint;
  56. function ClientWhitePointOfCCC(ccc : longint) : longint;
  57. function ScreenWhitePointOfCCC(ccc : longint) : longint;
  58. function FunctionSetOfCCC(ccc : longint) : longint;
  59. {$endif MACROS}
  60. type
  61. PXcmsFloat = ^TXcmsFloat;
  62. TXcmsFloat = double;
  63. PXcmsRGB = ^TXcmsRGB;
  64. TXcmsRGB = record
  65. red : word;
  66. green : word;
  67. blue : word;
  68. end;
  69. PXcmsRGBi = ^TXcmsRGBi;
  70. TXcmsRGBi = record
  71. red : TXcmsFloat;
  72. green : TXcmsFloat;
  73. blue : TXcmsFloat;
  74. end;
  75. PXcmsCIEXYZ = ^TXcmsCIEXYZ;
  76. TXcmsCIEXYZ = record
  77. X : TXcmsFloat;
  78. Y : TXcmsFloat;
  79. Z : TXcmsFloat;
  80. end;
  81. PXcmsCIEuvY = ^TXcmsCIEuvY;
  82. TXcmsCIEuvY = record
  83. u_prime : TXcmsFloat;
  84. v_prime : TXcmsFloat;
  85. Y : TXcmsFloat;
  86. end;
  87. PXcmsCIExyY = ^TXcmsCIExyY;
  88. TXcmsCIExyY = record
  89. x : TXcmsFloat;
  90. y : TXcmsFloat;
  91. _Y : TXcmsFloat;
  92. end;
  93. PXcmsCIELab = ^TXcmsCIELab;
  94. TXcmsCIELab = record
  95. L_star : TXcmsFloat;
  96. a_star : TXcmsFloat;
  97. b_star : TXcmsFloat;
  98. end;
  99. PXcmsCIELuv = ^TXcmsCIELuv;
  100. TXcmsCIELuv = record
  101. L_star : TXcmsFloat;
  102. u_star : TXcmsFloat;
  103. v_star : TXcmsFloat;
  104. end;
  105. PXcmsTekHVC = ^TXcmsTekHVC;
  106. TXcmsTekHVC = record
  107. H : TXcmsFloat;
  108. V : TXcmsFloat;
  109. C : TXcmsFloat;
  110. end;
  111. PXcmsPad = ^TXcmsPad;
  112. TXcmsPad = record
  113. pad0 : TXcmsFloat;
  114. pad1 : TXcmsFloat;
  115. pad2 : TXcmsFloat;
  116. pad3 : TXcmsFloat;
  117. end;
  118. PXcmsColor = ^TXcmsColor;
  119. TXcmsColor = record
  120. spec : record
  121. case longint of
  122. 0 : ( RGB : TXcmsRGB );
  123. 1 : ( RGBi : TXcmsRGBi );
  124. 2 : ( CIEXYZ : TXcmsCIEXYZ );
  125. 3 : ( CIEuvY : TXcmsCIEuvY );
  126. 4 : ( CIExyY : TXcmsCIExyY );
  127. 5 : ( CIELab : TXcmsCIELab );
  128. 6 : ( CIELuv : TXcmsCIELuv );
  129. 7 : ( TekHVC : TXcmsTekHVC );
  130. 8 : ( Pad : TXcmsPad );
  131. end;
  132. pixel : dword;
  133. format : TXcmsColorFormat;
  134. end;
  135. PXcmsPerScrnInfo = ^TXcmsPerScrnInfo;
  136. TXcmsPerScrnInfo = record
  137. screenWhitePt : TXcmsColor;
  138. functionSet : TXPointer;
  139. screenData : TXPointer;
  140. state : byte;
  141. pad : array[0..2] of AnsiChar;
  142. end;
  143. PXcmsCCC = ^TXcmsCCC;
  144. TXcmsCompressionProc = function (para1:PXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;
  145. TXcmsWhiteAdjustProc = function (para1:PXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:TXcmsColorFormat; para5:PXcmsColor;
  146. para6:dword; para7:PBool):TStatus;cdecl;
  147. TXcmsCCC = record
  148. dpy : PDisplay;
  149. screenNumber : longint;
  150. visual : PVisual;
  151. clientWhitePt : TXcmsColor;
  152. gamutCompProc : TXcmsCompressionProc;
  153. gamutCompClientData : TXPointer;
  154. whitePtAdjProc : TXcmsWhiteAdjustProc;
  155. whitePtAdjClientData : TXPointer;
  156. pPerScrnInfo : PXcmsPerScrnInfo;
  157. end;
  158. TXcmsCCCRec = TXcmsCCC;
  159. PXcmsCCCRec = ^TXcmsCCCRec;
  160. TXcmsScreenInitProc = function (para1:PDisplay; para2:longint; para3:PXcmsPerScrnInfo):TStatus;cdecl;
  161. TXcmsScreenFreeProc = procedure (para1:TXPointer);cdecl;
  162. TXcmsConversionProc = procedure;cdecl;
  163. PXcmsFuncListPtr = ^TXcmsFuncListPtr;
  164. TXcmsFuncListPtr = TXcmsConversionProc;
  165. TXcmsParseStringProc = function (para1:PAnsiChar; para2:PXcmsColor):longint;cdecl;
  166. PXcmsColorSpace = ^TXcmsColorSpace;
  167. TXcmsColorSpace = record
  168. prefix : PAnsiChar;
  169. id : TXcmsColorFormat;
  170. parseString : TXcmsParseStringProc;
  171. to_CIEXYZ : TXcmsFuncListPtr;
  172. from_CIEXYZ : TXcmsFuncListPtr;
  173. inverse_flag : longint;
  174. end;
  175. PXcmsFunctionSet = ^TXcmsFunctionSet;
  176. TXcmsFunctionSet = record
  177. DDColorSpaces : ^PXcmsColorSpace;
  178. screenInitProc : TXcmsScreenInitProc;
  179. screenFreeProc : TXcmsScreenFreeProc;
  180. end;
  181. (* error
  182. extern Status XcmsAddColorSpace (
  183. in declaration at line 323 *)
  184. function XcmsAddFunctionSet(para1:PXcmsFunctionSet):TStatus;cdecl;external libX11;
  185. function XcmsAllocColor(para1:PDisplay; para2:TColormap; para3:PXcmsColor; para4:TXcmsColorFormat):TStatus;cdecl;external libX11;
  186. function XcmsAllocNamedColor(para1:PDisplay; para2:TColormap; para3:PAnsiChar; para4:PXcmsColor; para5:PXcmsColor;
  187. para6:TXcmsColorFormat):TStatus;cdecl;external libX11;
  188. function XcmsCCCOfColormap(para1:PDisplay; para2:TColormap):TXcmsCCC;cdecl;external libX11;
  189. function XcmsCIELabClipab(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
  190. function XcmsCIELabClipL(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
  191. function XcmsCIELabClipLab(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
  192. function XcmsCIELabQueryMaxC(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
  193. function XcmsCIELabQueryMaxL(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
  194. function XcmsCIELabQueryMaxLC(para1:TXcmsCCC; para2:TXcmsFloat; para3:PXcmsColor):TStatus;cdecl;external libX11;
  195. function XcmsCIELabQueryMinL(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
  196. function XcmsCIELabToCIEXYZ(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  197. function XcmsCIELabWhiteShiftColors(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:TXcmsColorFormat; para5:PXcmsColor;
  198. para6:dword; para7:PBool):TStatus;cdecl;external libX11;
  199. function XcmsCIELuvClipL(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
  200. function XcmsCIELuvClipLuv(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
  201. function XcmsCIELuvClipuv(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
  202. function XcmsCIELuvQueryMaxC(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
  203. function XcmsCIELuvQueryMaxL(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
  204. function XcmsCIELuvQueryMaxLC(para1:TXcmsCCC; para2:TXcmsFloat; para3:PXcmsColor):TStatus;cdecl;external libX11;
  205. function XcmsCIELuvQueryMinL(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
  206. function XcmsCIELuvToCIEuvY(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  207. function XcmsCIELuvWhiteShiftColors(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:TXcmsColorFormat; para5:PXcmsColor;
  208. para6:dword; para7:PBool):TStatus;cdecl;external libX11;
  209. function XcmsCIEXYZToCIELab(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  210. function XcmsCIEXYZToCIEuvY(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  211. function XcmsCIEXYZToCIExyY(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  212. function XcmsCIEXYZToRGBi(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:PBool):TStatus;cdecl;external libX11;
  213. function XcmsCIEuvYToCIELuv(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  214. function XcmsCIEuvYToCIEXYZ(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  215. function XcmsCIEuvYToTekHVC(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  216. function XcmsCIExyYToCIEXYZ(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  217. function XcmsClientWhitePointOfCCC(para1:TXcmsCCC):PXcmsColor;cdecl;external libX11;
  218. function XcmsConvertColors(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:TXcmsColorFormat; para5:PBool):TStatus;cdecl;external libX11;
  219. function XcmsCreateCCC(para1:PDisplay; para2:longint; para3:PVisual; para4:PXcmsColor; para5:TXcmsCompressionProc;
  220. para6:TXPointer; para7:TXcmsWhiteAdjustProc; para8:TXPointer):TXcmsCCC;cdecl;external libX11;
  221. function XcmsDefaultCCC(para1:PDisplay; para2:longint):TXcmsCCC;cdecl;external libX11;
  222. function XcmsDisplayOfCCC(para1:TXcmsCCC):PDisplay;cdecl;external libX11;
  223. function XcmsFormatOfPrefix(para1:PAnsiChar):TXcmsColorFormat;cdecl;external libX11;
  224. procedure XcmsFreeCCC(para1:TXcmsCCC);cdecl;external libX11;
  225. function XcmsLookupColor(para1:PDisplay; para2:TColormap; para3:PAnsiChar; para4:PXcmsColor; para5:PXcmsColor;
  226. para6:TXcmsColorFormat):TStatus;cdecl;external libX11;
  227. function XcmsPrefixOfFormat(para1:TXcmsColorFormat):PAnsiChar;cdecl;external libX11;
  228. function XcmsQueryBlack(para1:TXcmsCCC; para2:TXcmsColorFormat; para3:PXcmsColor):TStatus;cdecl;external libX11;
  229. function XcmsQueryBlue(para1:TXcmsCCC; para2:TXcmsColorFormat; para3:PXcmsColor):TStatus;cdecl;external libX11;
  230. function XcmsQueryColor(para1:PDisplay; para2:TColormap; para3:PXcmsColor; para4:TXcmsColorFormat):TStatus;cdecl;external libX11;
  231. function XcmsQueryColors(para1:PDisplay; para2:TColormap; para3:PXcmsColor; para4:dword; para5:TXcmsColorFormat):TStatus;cdecl;external libX11;
  232. function XcmsQueryGreen(para1:TXcmsCCC; para2:TXcmsColorFormat; para3:PXcmsColor):TStatus;cdecl;external libX11;
  233. function XcmsQueryRed(para1:TXcmsCCC; para2:TXcmsColorFormat; para3:PXcmsColor):TStatus;cdecl;external libX11;
  234. function XcmsQueryWhite(para1:TXcmsCCC; para2:TXcmsColorFormat; para3:PXcmsColor):TStatus;cdecl;external libX11;
  235. function XcmsRGBiToCIEXYZ(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:PBool):TStatus;cdecl;external libX11;
  236. function XcmsRGBiToRGB(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:PBool):TStatus;cdecl;external libX11;
  237. function XcmsRGBToRGBi(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:PBool):TStatus;cdecl;external libX11;
  238. function XcmsScreenNumberOfCCC(para1:TXcmsCCC):longint;cdecl;external libX11;
  239. function XcmsScreenWhitePointOfCCC(para1:TXcmsCCC):PXcmsColor;cdecl;external libX11;
  240. function XcmsSetCCCOfColormap(para1:PDisplay; para2:TColormap; para3:TXcmsCCC):TXcmsCCC;cdecl;external libX11;
  241. function XcmsSetCompressionProc(para1:TXcmsCCC; para2:TXcmsCompressionProc; para3:TXPointer):TXcmsCompressionProc;cdecl;external libX11;
  242. function XcmsSetWhiteAdjustProc(para1:TXcmsCCC; para2:TXcmsWhiteAdjustProc; para3:TXPointer):TXcmsWhiteAdjustProc;cdecl;external libX11;
  243. function XcmsSetWhitePoint(para1:TXcmsCCC; para2:PXcmsColor):TStatus;cdecl;external libX11;
  244. function XcmsStoreColor(para1:PDisplay; para2:TColormap; para3:PXcmsColor):TStatus;cdecl;external libX11;
  245. function XcmsStoreColors(para1:PDisplay; para2:TColormap; para3:PXcmsColor; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
  246. function XcmsTekHVCClipC(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
  247. function XcmsTekHVCClipV(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
  248. function XcmsTekHVCClipVC(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
  249. function XcmsTekHVCQueryMaxC(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
  250. function XcmsTekHVCQueryMaxV(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
  251. function XcmsTekHVCQueryMaxVC(para1:TXcmsCCC; para2:TXcmsFloat; para3:PXcmsColor):TStatus;cdecl;external libX11;
  252. function XcmsTekHVCQueryMaxVSamples(para1:TXcmsCCC; para2:TXcmsFloat; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  253. function XcmsTekHVCQueryMinV(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
  254. function XcmsTekHVCToCIEuvY(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
  255. function XcmsTekHVCWhiteShiftColors(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:TXcmsColorFormat; para5:PXcmsColor;
  256. para6:dword; para7:PBool):TStatus;cdecl;external libX11;
  257. function XcmsVisualOfCCC(para1:TXcmsCCC):PVisual;cdecl;external libX11;
  258. implementation
  259. function XcmsUndefinedFormat : TXcmsColorFormat;
  260. begin
  261. XcmsUndefinedFormat:=TXcmsColorFormat($00000000);
  262. end;
  263. function XcmsCIEXYZFormat : TXcmsColorFormat;
  264. begin
  265. XcmsCIEXYZFormat:=TXcmsColorFormat($00000001);
  266. end;
  267. function XcmsCIEuvYFormat : TXcmsColorFormat;
  268. begin
  269. XcmsCIEuvYFormat:=TXcmsColorFormat($00000002);
  270. end;
  271. function XcmsCIExyYFormat : TXcmsColorFormat;
  272. begin
  273. XcmsCIExyYFormat:=TXcmsColorFormat($00000003);
  274. end;
  275. function XcmsCIELabFormat : TXcmsColorFormat;
  276. begin
  277. XcmsCIELabFormat:=TXcmsColorFormat($00000004);
  278. end;
  279. function XcmsCIELuvFormat : TXcmsColorFormat;
  280. begin
  281. XcmsCIELuvFormat:=TXcmsColorFormat($00000005);
  282. end;
  283. function XcmsTekHVCFormat : TXcmsColorFormat;
  284. begin
  285. XcmsTekHVCFormat:=TXcmsColorFormat($00000006);
  286. end;
  287. function XcmsRGBFormat : TXcmsColorFormat;
  288. begin
  289. XcmsRGBFormat:=TXcmsColorFormat($80000000);
  290. end;
  291. function XcmsRGBiFormat : TXcmsColorFormat;
  292. begin
  293. XcmsRGBiFormat:=TXcmsColorFormat($80000001);
  294. end;
  295. {$ifdef MACROS}
  296. function DisplayOfCCC(ccc : longint) : longint;
  297. begin
  298. DisplayOfCCC:=ccc^.dpy;
  299. end;
  300. function ScreenNumberOfCCC(ccc : longint) : longint;
  301. begin
  302. ScreenNumberOfCCC:=ccc^.screenNumber;
  303. end;
  304. function VisualOfCCC(ccc : longint) : longint;
  305. begin
  306. VisualOfCCC:=ccc^.visual;
  307. end;
  308. function ClientWhitePointOfCCC(ccc : longint) : longint;
  309. begin
  310. ClientWhitePointOfCCC:=@(ccc^.clientWhitePt);
  311. end;
  312. function ScreenWhitePointOfCCC(ccc : longint) : longint;
  313. begin
  314. ScreenWhitePointOfCCC:=@(ccc^.(pPerScrnInfo^.screenWhitePt));
  315. end;
  316. function FunctionSetOfCCC(ccc : longint) : longint;
  317. begin
  318. FunctionSetOfCCC:=ccc^.(pPerScrnInfo^.functionSet);
  319. end;
  320. {$endif MACROS}
  321. end.