OSDN Git Service

Prepare environment for Earnie's tools.
[mingw/mingw-org-wsl.git] / w32api / include / icm.h
1 #ifndef _ICM_H
2 #define _ICM_H
3 #if __GNUC__ >= 3
4 #pragma GCC system_header
5 #endif
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 #if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500)
12 #define MAX_COLOR_CHANNELS 8
13 #define PROFILE_FILENAME 1
14 #define PROFILE_MEMBUFFER 2
15 #define PROFILE_READ 1
16 #define PROFILE_READWRITE 2
17 #define CLASS_SCANNER 0x73636E72
18 #define CLASS_MONITOR 0x6D6E7472
19 #define CLASS_PRINTER 0x70727472
20 #define CLASS_LINK 0x6C696E6B
21 #define CLASS_COLORSPAC 0x73706163
22 #define CLASS_ABSTRACT 0x61627374
23 #define CLASS_NAMED 0x6E6D636C
24 #define SPACE_XYZ 0x58595A20
25 #define SPACE_Lab 0x4C616220
26 #define SPACE_Luv 0x4C757620
27 #define SPACE_YCbCr 0x59436272
28 #define SPACE_Yxy 0x59787920
29 #define SPACE_RGB 0x52474220
30 #define SPACE_GRAY 0x47524159
31 #define SPACE_HSV 0x48535620
32 #define SPACE_HLS 0x484C5320
33 #define SPACE_CMYK 0x434D594B
34 #define SPACE_CMY 0x434D5920
35 #define SPACE_2_CHANNEL 0x32434C52
36 #define SPACE_3_CHANNEL 0x33434C52
37 #define SPACE_4_CHANNEL 0x34434C52
38 #define SPACE_5_CHANNEL 0x35434C52
39 #define SPACE_6_CHANNEL 0x36434C52
40 #define SPACE_7_CHANNEL 0x37434C52
41 #define SPACE_8_CHANNEL 0x38434C52
42 #define FLAG_EMBEDDEDPROFILE 1
43 #define FLAG_DEPENDENTONDATA 2
44 #define ATTRIB_TRANSPARENCY 1
45 #define ATTRIB_MATTE 2
46 #define INTENT_PERCEPTUAL 0
47 #define INTENT_RELATIVE_COLORIMETRIC 1
48 #define INTENT_SATURATION 2
49 #define INTENT_ABSOLUTE_COLORIMETRIC 3
50 #define COLOR_MATCH_VERSION 0x200
51 #define CMS_DISABLEICM 0x1
52 #define CMS_ENABLEPROOFING 0x2
53 #define CMS_SETRENDERINTENT 0x4
54 #define CMS_SETPROOFINTENT 0x8
55 #define CMS_SETMONITORPROFILE 0x10
56 #define CMS_SETPRINTERPROFILE 0x20
57 #define CMS_SETTARGETPROFILE 0x40
58 #define CMS_USEHOOK 0x80
59 #define CMS_USEAPPLYCALLBACK 0x100
60 #define CMS_USEDESCRIPTION 0x200
61 #define CMS_TARGETOVERFLOW 0x20000000
62 #define CMS_PRINTERROVERFLOW 0x40000000
63 #define CMS_MONITOROVERFLOW 0x80000000
64
65 DECLARE_HANDLE(HPROFILE);
66 typedef HPROFILE *PHPROFILE,*LPHPROFILE;
67 DECLARE_HANDLE(HTRANSFORM);\
68
69 typedef BOOL (CALLBACK *PBMCALLBACKFN)(ULONG,ULONG,LPARAM);
70 struct _tagCOLORMATCHSETUPA;
71 struct _tagCOLORMATCHSETUPW;
72 typedef BOOL (CALLBACK *PCMSCALLBACKA)(struct _tagCOLORMATCHSETUPA*,LPARAM);
73 typedef BOOL (CALLBACK *PCMSCALLBACKW)(struct _tagCOLORMATCHSETUPW*,LPARAM);
74
75 typedef CHAR COLOR_NAME[32];
76 typedef COLOR_NAME *PCOLOR_NAME,*LPCOLOR_NAME;
77 typedef DWORD TAGTYPE,*PTAGTYPE,*LPTAGTYPE;
78 typedef enum
79 {
80   BM_x555RGB      = 0x0000,
81   BM_x555XYZ      = 0x0101,
82   BM_x555Yxy,
83   BM_x555Lab,
84   BM_x555G3CH,
85   BM_RGBTRIPLETS  = 0x0002,
86   BM_BGRTRIPLETS  = 0x0004,
87   BM_XYZTRIPLETS  = 0x0201,
88   BM_YxyTRIPLETS,
89   BM_LabTRIPLETS,
90   BM_G3CHTRIPLETS,
91   BM_5CHANNEL,
92   BM_6CHANNEL,
93   BM_7CHANNEL,
94   BM_8CHANNEL,
95   BM_GRAY,
96   BM_xRGBQUADS    = 0x0008,
97   BM_xBGRQUADS    = 0x0010,
98   BM_xG3CHQUADS   = 0x0304,
99   BM_KYMCQUADS,
100   BM_CMYKQUADS    = 0x0020,
101   BM_10b_RGB      = 0x0009,
102   BM_10b_XYZ      = 0x0401,
103   BM_10b_Yxy,
104   BM_10b_Lab,
105   BM_10b_G3CH,
106   BM_NAMED_INDEX,
107   BM_16b_RGB      = 0x000A,
108   BM_16b_XYZ      = 0x0501,
109   BM_16b_Yxy,
110   BM_16b_Lab,
111   BM_16b_G3CH,
112   BM_16b_GRAY,
113   BM_565RGB       = 0x0001
114 } BMFORMAT,*PBMFORMAT,*LPBMFORMAT;
115 typedef enum
116 {
117   COLOR_GRAY       =   1,
118   COLOR_RGB,
119   COLOR_XYZ,
120   COLOR_Yxy,
121   COLOR_Lab,
122   COLOR_3_CHANNEL,
123   COLOR_CMYK,
124   COLOR_5_CHANNEL,
125   COLOR_6_CHANNEL,
126   COLOR_7_CHANNEL,
127   COLOR_8_CHANNEL,
128   COLOR_NAMED
129 } COLORTYPE,*PCOLORTYPE,*LPCOLORTYPE;
130 struct GRAYCOLOR {
131   WORD    gray;
132 };
133 struct RGBCOLOR {
134   WORD    red;
135   WORD    green;
136   WORD    blue;
137 };
138 struct CMYKCOLOR {
139   WORD    cyan;
140   WORD    magenta;
141   WORD    yellow;
142   WORD    black;
143 };
144 struct XYZCOLOR {
145   WORD    X;
146   WORD    Y;
147   WORD    Z;
148 };
149 struct YxyCOLOR {
150   WORD    Y;
151   WORD    x;
152   WORD    y;
153 };
154 struct LabCOLOR {
155   WORD    L;
156   WORD    a;
157   WORD    b;
158 };
159 struct GENERIC3CHANNEL {
160   WORD    ch1;
161   WORD    ch2;
162   WORD    ch3;
163 };
164 struct NAMEDCOLOR {
165   DWORD   dwIndex;
166 };
167 struct HiFiCOLOR {
168   BYTE    channel[MAX_COLOR_CHANNELS];
169 };
170 typedef union tagCOLOR {
171   struct GRAYCOLOR        gray;
172   struct RGBCOLOR         rgb;
173   struct CMYKCOLOR        cmyk;
174   struct XYZCOLOR         XYZ;
175   struct YxyCOLOR         Yxy;
176   struct LabCOLOR         Lab;
177   struct GENERIC3CHANNEL  gen3ch;
178   struct NAMEDCOLOR       named;
179   struct HiFiCOLOR        hifi;
180 } COLOR,*PCOLOR,*LPCOLOR;
181 typedef struct _tagCOLORMATCHSETUPA {
182   DWORD         dwSize;
183   DWORD         dwVersion;
184   DWORD         dwFlags;
185   HWND          hwndOwner;
186   PCSTR         pSourceName;
187   PCSTR         pDisplayName;
188   PCSTR         pPrinterName;
189   DWORD         dwRenderIntent;
190   DWORD         dwProofingIntent;
191   PSTR          pMonitorProfile;
192   DWORD         ccMonitorProfile;
193   PSTR          pPrinterProfile;
194   DWORD         ccPrinterProfile;
195   PSTR          pTargetProfile;
196   DWORD         ccTargetProfile;
197   DLGPROC       lpfnHook;
198   LPARAM        lParam;
199   PCMSCALLBACKA lpfnApplyCallback;
200   LPARAM        lParamApplyCallback;
201 } COLORMATCHSETUPA,*PCOLORMATCHSETUPA,*LPCOLORMATCHSETUPA;
202 typedef struct _tagCOLORMATCHSETUPW {
203   DWORD         dwSize;
204   DWORD         dwVersion;
205   DWORD         dwFlags;
206   HWND          hwndOwner;
207   PCWSTR        pSourceName;
208   PCWSTR        pDisplayName;
209   PCWSTR        pPrinterName;
210   DWORD         dwRenderIntent;
211   DWORD         dwProofingIntent;
212   PWSTR         pMonitorProfile;
213   DWORD         ccMonitorProfile;
214   PWSTR         pPrinterProfile;
215   DWORD         ccPrinterProfile;
216   PWSTR         pTargetProfile;
217   DWORD         ccTargetProfile;
218   DLGPROC       lpfnHook;
219   LPARAM        lParam;
220   PCMSCALLBACKW lpfnApplyCallback;
221   LPARAM        lParamApplyCallback;
222 } COLORMATCHSETUPW,*PCOLORMATCHSETUPW,*LPCOLORMATCHSETUPW;
223 typedef struct tagENUMTYPEW {
224   DWORD   dwSize;
225   DWORD   dwVersion;
226   DWORD   dwFields;
227   PCWSTR  pDeviceName;
228   DWORD   dwMediaType;
229   DWORD   dwDitheringMode;
230   DWORD   dwResolution[2];
231   DWORD   dwCMMType;
232   DWORD   dwClass;
233   DWORD   dwDataColorSpace;
234   DWORD   dwConnectionSpace;
235   DWORD   dwSignature;
236   DWORD   dwPlatform;
237   DWORD   dwProfileFlags;
238   DWORD   dwManufacturer;
239   DWORD   dwModel;
240   DWORD   dwAttributes[2];
241   DWORD   dwRenderingIntent;
242   DWORD   dwCreator;
243   DWORD   dwDeviceClass;
244 } ENUMTYPEW,*PENUMTYPEW,*LPENUMTYPEW;
245 typedef struct tagENUMTYPEA {
246   DWORD   dwSize;
247   DWORD   dwVersion;
248   DWORD   dwFields;
249   PCSTR   pDeviceName;
250   DWORD   dwMediaType;
251   DWORD   dwDitheringMode;
252   DWORD   dwResolution[2];
253   DWORD   dwCMMType;
254   DWORD   dwClass;
255   DWORD   dwDataColorSpace;
256   DWORD   dwConnectionSpace;
257   DWORD   dwSignature;
258   DWORD   dwPlatform;
259   DWORD   dwProfileFlags;
260   DWORD   dwManufacturer;
261   DWORD   dwModel;
262   DWORD   dwAttributes[2];
263   DWORD   dwRenderingIntent;
264   DWORD   dwCreator;
265   DWORD   dwDeviceClass;
266 } ENUMTYPEA,*PENUMTYPEA,*LPENUMTYPEA;
267 typedef struct tagNAMED_PROFILE_INFO{
268   DWORD         dwFlags;
269   DWORD         dwCount;
270   DWORD         dwCountDevCoordinates;
271   COLOR_NAME    szPrefix;
272   COLOR_NAME    szSuffix;
273 } NAMED_PROFILE_INFO,*PNAMED_PROFILE_INFO,*LPNAMED_PROFILE_INFO;
274 typedef struct tagPROFILE {
275   DWORD    dwType;
276   PVOID    pProfileData;
277   DWORD    cbDataSize;
278 } PROFILE,*PPROFILE,*LPPROFILE;
279 typedef struct tagPROFILEHEADER {
280   DWORD   phSize;
281   DWORD   phCMMType;
282   DWORD   phVersion;
283   DWORD   phClass;
284   DWORD   phDataColorSpace;
285   DWORD   phConnectionSpace;
286   DWORD   phDateTime[3];
287   DWORD   phSignature;
288   DWORD   phPlatform;
289   DWORD   phProfileFlags;
290   DWORD   phManufacturer;
291   DWORD   phModel;
292   DWORD   phAttributes[2];
293   DWORD   phRenderingIntent;
294   CIEXYZ  phIlluminant;
295   DWORD   phCreator;
296   BYTE    phReserved[44];
297 } PROFILEHEADER,*PPROFILEHEADER,*LPPROFILEHEADER;
298
299 BOOL WINAPI AssociateColorProfileWithDeviceA(PCSTR,PCSTR,PCSTR);
300 BOOL WINAPI AssociateColorProfileWithDeviceW(PCWSTR,PCWSTR,PCWSTR);
301 BOOL WINAPI CheckBitmapBits(HTRANSFORM,PVOID,BMFORMAT,DWORD,DWORD,DWORD,PBYTE,PBMCALLBACKFN,LPARAM);
302 BOOL WINAPI CheckColors(HTRANSFORM,PCOLOR,DWORD,COLORTYPE,PBYTE);
303 BOOL WINAPI CloseColorProfile(HPROFILE);
304 BOOL WINAPI ConvertColorNameToIndex(HPROFILE,PCOLOR_NAME,PDWORD,DWORD);
305 BOOL WINAPI ConvertIndexToColorName(HPROFILE,PDWORD,PCOLOR_NAME,DWORD);
306 HTRANSFORM WINAPI CreateColorTransformA(LPLOGCOLORSPACEA,HPROFILE,HPROFILE,DWORD);
307 HTRANSFORM WINAPI CreateColorTransformW(LPLOGCOLORSPACEW,HPROFILE,HPROFILE,DWORD);
308 BOOL WINAPI CreateDeviceLinkProfile(PHPROFILE,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD);
309 HTRANSFORM WINAPI CreateMultiProfileTransform(PHPROFILE,DWORD,PDWORD,DWORD,DWORD,DWORD);
310 BOOL WINAPI CreateProfileFromLogColorSpaceA(LPLOGCOLORSPACEA,PBYTE*);
311 BOOL WINAPI CreateProfileFromLogColorSpaceW(LPLOGCOLORSPACEW,PBYTE*);
312 BOOL WINAPI DeleteColorTransform(HTRANSFORM);
313 BOOL WINAPI DisassociateColorProfileFromDeviceA(PCSTR,PCSTR,PCSTR);
314 BOOL WINAPI DisassociateColorProfileFromDeviceW(PCWSTR,PCWSTR,PCWSTR);
315 BOOL WINAPI EnumColorProfilesA(PCSTR,PENUMTYPEA,PBYTE,PDWORD,PDWORD);
316 BOOL WINAPI EnumColorProfilesW(PCWSTR,PENUMTYPEW,PBYTE,PDWORD,PDWORD);
317 DWORD WINAPI GetCMMInfo(HTRANSFORM,DWORD);
318 BOOL WINAPI GetColorDirectoryA(PCSTR,PSTR,PDWORD);
319 BOOL WINAPI GetColorDirectoryW(PCWSTR,PWSTR,PDWORD);
320 BOOL WINAPI GetColorProfileElement(HPROFILE,TAGTYPE,DWORD,PDWORD,PVOID,PBOOL);
321 BOOL WINAPI GetColorProfileElementTag(HPROFILE,DWORD,PTAGTYPE);
322 BOOL WINAPI GetColorProfileFromHandle(HPROFILE,PBYTE,PDWORD);
323 BOOL WINAPI GetColorProfileHeader(HPROFILE,PPROFILEHEADER);
324 BOOL WINAPI GetCountColorProfileElements(HPROFILE,PDWORD);
325 BOOL WINAPI GetNamedProfileInfo(HPROFILE,PNAMED_PROFILE_INFO);
326 BOOL WINAPI GetPS2ColorRenderingDictionary(HPROFILE,DWORD,PBYTE,PDWORD,PBOOL);
327 BOOL WINAPI GetPS2ColorRenderingIntent(HPROFILE,DWORD,PBYTE,PDWORD);
328 BOOL WINAPI GetPS2ColorSpaceArray(HPROFILE,DWORD,DWORD,PBYTE,PDWORD,PBOOL);
329 BOOL WINAPI GetStandardColorSpaceProfileA(PCSTR,DWORD,PSTR,PDWORD);
330 BOOL WINAPI GetStandardColorSpaceProfileW(PCWSTR,DWORD,PWSTR,PDWORD);
331 BOOL WINAPI InstallColorProfileA(PCSTR,PCSTR);
332 BOOL WINAPI InstallColorProfileW(PCWSTR,PCWSTR);
333 BOOL WINAPI IsColorProfileTagPresent(HPROFILE,TAGTYPE,PBOOL);
334 BOOL WINAPI IsColorProfileValid(HPROFILE,PBOOL);
335 HPROFILE WINAPI OpenColorProfileA(PPROFILE,DWORD,DWORD,DWORD);
336 HPROFILE WINAPI OpenColorProfileW(PPROFILE,DWORD,DWORD,DWORD);
337 BOOL WINAPI RegisterCMMA(PCSTR,DWORD,PCSTR);
338 BOOL WINAPI RegisterCMMW(PCWSTR,DWORD,PCWSTR);
339 BOOL WINAPI SelectCMM(DWORD);
340 BOOL WINAPI SetColorProfileElement(HPROFILE,TAGTYPE,DWORD,PDWORD,PVOID);
341 BOOL WINAPI SetColorProfileElementReference(HPROFILE,TAGTYPE,TAGTYPE);
342 BOOL WINAPI SetColorProfileElementSize(HPROFILE,TAGTYPE,DWORD);
343 BOOL WINAPI SetColorProfileHeader(HPROFILE,PPROFILEHEADER);
344 BOOL WINAPI SetStandardColorSpaceProfileA(PCSTR,DWORD,PCSTR);
345 BOOL WINAPI SetStandardColorSpaceProfileW(PCWSTR,DWORD,PCSTR);
346 BOOL WINAPI SetupColorMatchingA(PCOLORMATCHSETUPA);
347 BOOL WINAPI SetupColorMatchingW(PCOLORMATCHSETUPW);
348 BOOL WINAPI TranslateBitmapBits(HTRANSFORM,PVOID,BMFORMAT,DWORD,DWORD,DWORD,PVOID,BMFORMAT,DWORD,PBMCALLBACKFN,ULONG);
349 BOOL WINAPI TranslateColors(HTRANSFORM,PCOLOR,DWORD,COLORTYPE,PCOLOR,COLORTYPE);
350 BOOL WINAPI UninstallColorProfileA(PCSTR,PCSTR,BOOL);
351 BOOL WINAPI UninstallColorProfileW(PCWSTR,PCWSTR,BOOL);
352 BOOL WINAPI UnregisterCMMA(PCSTR,DWORD);
353 BOOL WINAPI UnregisterCMMW(PCWSTR,DWORD);
354
355 #ifdef UNICODE
356 typedef PCMSCALLBACKW PCMSCALLBACK;
357 typedef COLORMATCHSETUPW COLORMATCHSETUP,*PCOLORMATCHSETUP,*LPCOLORMATCHSETUP;
358 typedef ENUMTYPEW ENUMTYPE,*PENUMTYPE,*LPENUMTYPE;
359 #define AssociateColorProfileWithDevice AssociateColorProfileWithDeviceW
360 #define CreateColorTransform CreateColorTransformW
361 #define CreateProfileFromLogColorSpace CreateProfileFromLogColorSpaceW
362 #define DisassociateColorProfileFromDevice DisassociateColorProfileFromDeviceW
363 #define EnumColorProfiles EnumColorProfilesW
364 #define GetColorDirectory GetColorDirectoryW
365 #define GetStandardColorSpaceProfile GetStandardColorSpaceProfileW
366 #define InstallColorProfile InstallColorProfileW
367 #define OpenColorProfile OpenColorProfileW
368 #define RegisterCMM RegisterCMMW
369 #define SetStandardColorSpaceProfile SetStandardColorSpaceProfileW
370 #define SetupColorMatching SetupColorMatchingW
371 #define UninstallColorProfile UninstallColorProfileW
372 #define UnregisterCMM UnregisterCMMW
373 #else /* UNICODE */
374 typedef PCMSCALLBACKA PCMSCALLBACK;
375 typedef COLORMATCHSETUPA COLORMATCHSETUP,*PCOLORMATCHSETUP,*LPCOLORMATCHSETUP;
376 typedef ENUMTYPEA ENUMTYPE,*PENUMTYPE,*LPENUMTYPE;
377 #define AssociateColorProfileWithDevice AssociateColorProfileWithDeviceA
378 #define CreateColorTransform CreateColorTransformA
379 #define CreateProfileFromLogColorSpace CreateProfileFromLogColorSpaceA
380 #define DisassociateColorProfileFromDevice DisassociateColorProfileFromDeviceA
381 #define EnumColorProfiles EnumColorProfilesA
382 #define GetColorDirectory GetColorDirectoryA
383 #define GetStandardColorSpaceProfile GetStandardColorSpaceProfileA
384 #define InstallColorProfile InstallColorProfileA
385 #define OpenColorProfile OpenColorProfileA
386 #define RegisterCMM RegisterCMMA
387 #define SetStandardColorSpaceProfile SetStandardColorSpaceProfileA
388 #define SetupColorMatching SetupColorMatchingA
389 #define UninstallColorProfile UninstallColorProfileA
390 #define UnregisterCMM UnregisterCMMA
391 #endif /* !UNICODE */
392
393 #endif /* (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500) */
394
395 #ifdef __cplusplus
396 }
397 #endif
398
399 #endif /* _ICM_H */