1 // Copyright © 2015, Peter Atashian
2 // Licensed under the MIT License <LICENSE.md>
3 //! GDI procedure declarations, constant definitions and macros
4 pub const DISPLAY_DEVICE_ATTACHED_TO_DESKTOP: ::DWORD = 0x00000001;
5 pub const DISPLAY_DEVICE_MULTI_DRIVER: ::DWORD = 0x00000002;
6 pub const DISPLAY_DEVICE_PRIMARY_DEVICE: ::DWORD = 0x00000004;
7 pub const DISPLAY_DEVICE_MIRRORING_DRIVER: ::DWORD = 0x00000008;
8 pub const DISPLAY_DEVICE_VGA_COMPATIBLE: ::DWORD = 0x00000010;
9 pub const DISPLAY_DEVICE_REMOVABLE: ::DWORD = 0x00000020;
10 pub const DISPLAY_DEVICE_ACC_DRIVER: ::DWORD = 0x00000040;
11 pub const DISPLAY_DEVICE_MODESPRUNED: ::DWORD = 0x08000000;
12 pub const DISPLAY_DEVICE_REMOTE: ::DWORD = 0x04000000;
13 pub const DISPLAY_DEVICE_DISCONNECT: ::DWORD = 0x02000000;
14 pub const DISPLAY_DEVICE_TS_COMPATIBLE: ::DWORD = 0x00200000;
15 pub const DISPLAY_DEVICE_UNSAFE_MODES_ON: ::DWORD = 0x00080000;
16 pub const DISPLAY_DEVICE_ACTIVE: ::DWORD = 0x00000001;
17 pub const DISPLAY_DEVICE_ATTACHED: ::DWORD = 0x00000002;
18 pub const DM_ORIENTATION: ::DWORD = 0x00000001;
19 pub const DM_PAPERSIZE: ::DWORD = 0x00000002;
20 pub const DM_PAPERLENGTH: ::DWORD = 0x00000004;
21 pub const DM_PAPERWIDTH: ::DWORD = 0x00000008;
22 pub const DM_SCALE: ::DWORD = 0x00000010;
23 pub const DM_POSITION: ::DWORD = 0x00000020;
24 pub const DM_NUP: ::DWORD = 0x00000040;
25 pub const DM_DISPLAYORIENTATION: ::DWORD = 0x00000080;
26 pub const DM_COPIES: ::DWORD = 0x00000100;
27 pub const DM_DEFAULTSOURCE: ::DWORD = 0x00000200;
28 pub const DM_PRINTQUALITY: ::DWORD = 0x00000400;
29 pub const DM_COLOR: ::DWORD = 0x00000800;
30 pub const DM_DUPLEX: ::DWORD = 0x00001000;
31 pub const DM_YRESOLUTION: ::DWORD = 0x00002000;
32 pub const DM_TTOPTION: ::DWORD = 0x00004000;
33 pub const DM_COLLATE: ::DWORD = 0x00008000;
34 pub const DM_FORMNAME: ::DWORD = 0x00010000;
35 pub const DM_LOGPIXELS: ::DWORD = 0x00020000;
36 pub const DM_BITSPERPEL: ::DWORD = 0x00040000;
37 pub const DM_PELSWIDTH: ::DWORD = 0x00080000;
38 pub const DM_PELSHEIGHT: ::DWORD = 0x00100000;
39 pub const DM_DISPLAYFLAGS: ::DWORD = 0x00200000;
40 pub const DM_DISPLAYFREQUENCY: ::DWORD = 0x00400000;
41 pub const DM_ICMMETHOD: ::DWORD = 0x00800000;
42 pub const DM_ICMINTENT: ::DWORD = 0x01000000;
43 pub const DM_MEDIATYPE: ::DWORD = 0x02000000;
44 pub const DM_DITHERTYPE: ::DWORD = 0x04000000;
45 pub const DM_PANNINGWIDTH: ::DWORD = 0x08000000;
46 pub const DM_PANNINGHEIGHT: ::DWORD = 0x10000000;
47 pub const DM_DISPLAYFIXEDOUTPUT: ::DWORD = 0x20000000;
48 pub const PFD_TYPE_RGBA: ::BYTE = 0;
49 pub const PFD_TYPE_COLORINDEX: ::BYTE = 1;
50 pub const PFD_MAIN_PLANE: ::BYTE = 0;
51 pub const PFD_OVERLAY_PLANE: ::BYTE = 1;
52 pub const PFD_UNDERLAY_PLANE: ::BYTE = 0xFF;
53 pub const PFD_DOUBLEBUFFER: ::DWORD = 0x00000001;
54 pub const PFD_STEREO: ::DWORD = 0x00000002;
55 pub const PFD_DRAW_TO_WINDOW: ::DWORD = 0x00000004;
56 pub const PFD_DRAW_TO_BITMAP: ::DWORD = 0x00000008;
57 pub const PFD_SUPPORT_GDI: ::DWORD = 0x00000010;
58 pub const PFD_SUPPORT_OPENGL: ::DWORD = 0x00000020;
59 pub const PFD_GENERIC_FORMAT: ::DWORD = 0x00000040;
60 pub const PFD_NEED_PALETTE: ::DWORD = 0x00000080;
61 pub const PFD_NEED_SYSTEM_PALETTE: ::DWORD = 0x00000100;
62 pub const PFD_SWAP_EXCHANGE: ::DWORD = 0x00000200;
63 pub const PFD_SWAP_COPY: ::DWORD = 0x00000400;
64 pub const PFD_SWAP_LAYER_BUFFERS: ::DWORD = 0x00000800;
65 pub const PFD_GENERIC_ACCELERATED: ::DWORD = 0x00001000;
66 pub const PFD_SUPPORT_DIRECTDRAW: ::DWORD = 0x00002000;
67 pub const PFD_DIRECT3D_ACCELERATED: ::DWORD = 0x00004000;
68 pub const PFD_SUPPORT_COMPOSITION: ::DWORD = 0x00008000;
69 pub const PFD_DEPTH_DONTCARE: ::DWORD = 0x20000000;
70 pub const PFD_DOUBLEBUFFER_DONTCARE: ::DWORD = 0x40000000;
71 pub const PFD_STEREO_DONTCARE: ::DWORD = 0x80000000;
72 pub const CCHFORMNAME: usize = 32;
73 STRUCT!{struct DEVMODEA {
74 dmDeviceName: [::CHAR; ::CCHDEVICENAME],
75 dmSpecVersion: ::WORD,
76 dmDriverVersion: ::WORD,
77 dmSize: ::WORD,
78 dmDriverExtra: ::WORD,
79 dmFields: ::DWORD,
80 union1: [u8; 16],
81 dmColor: ::c_short,
82 dmDuplex: ::c_short,
83 dmYResolution: ::c_short,
84 dmTTOption: ::c_short,
85 dmCollate: ::c_short,
86 dmFormName: [::CHAR; CCHFORMNAME],
87 dmLogPixels: ::WORD,
88 dmBitsPerPel: ::DWORD,
89 dmPelsWidth: ::DWORD,
90 dmPelsHeight: ::DWORD,
91 dmDisplayFlags: ::DWORD,
92 dmDisplayFrequency: ::DWORD,
93 dmICMMethod: ::DWORD,
94 dmICMIntent: ::DWORD,
95 dmMediaType: ::DWORD,
96 dmDitherType: ::DWORD,
97 dmReserved1: ::DWORD,
98 dmReserved2: ::DWORD,
99 dmPanningWidth: ::DWORD,
100 dmPanningHeight: ::DWORD,
101 }}
102 pub type PDEVMODEA = *mut DEVMODEA;
103 pub type NPDEVMODEA = *mut DEVMODEA;
104 pub type LPDEVMODEA = *mut DEVMODEA;
105 STRUCT!{struct DEVMODEW {
106 dmDeviceName: [::WCHAR; ::CCHDEVICENAME],
107 dmSpecVersion: ::WORD,
108 dmDriverVersion: ::WORD,
109 dmSize: ::WORD,
110 dmDriverExtra: ::WORD,
111 dmFields: ::DWORD,
112 union1: [u8; 16],
113 dmColor: ::c_short,
114 dmDuplex: ::c_short,
115 dmYResolution: ::c_short,
116 dmTTOption: ::c_short,
117 dmCollate: ::c_short,
118 dmFormName: [::WCHAR; CCHFORMNAME],
119 dmLogPixels: ::WORD,
120 dmBitsPerPel: ::DWORD,
121 dmPelsWidth: ::DWORD,
122 dmPelsHeight: ::DWORD,
123 dmDisplayFlags: ::DWORD,
124 dmDisplayFrequency: ::DWORD,
125 dmICMMethod: ::DWORD,
126 dmICMIntent: ::DWORD,
127 dmMediaType: ::DWORD,
128 dmDitherType: ::DWORD,
129 dmReserved1: ::DWORD,
130 dmReserved2: ::DWORD,
131 dmPanningWidth: ::DWORD,
132 dmPanningHeight: ::DWORD,
133 }}
134 pub type PDEVMODEW = *mut DEVMODEW;
135 pub type NPDEVMODEW = *mut DEVMODEW;
136 pub type LPDEVMODEW = *mut DEVMODEW;
137 STRUCT!{nodebug struct DISPLAY_DEVICEW {
138 cb: ::DWORD,
139 DeviceName: [::WCHAR; 32],
140 DeviceString: [::WCHAR; 128],
141 StateFlags: ::DWORD,
142 DeviceID: [::WCHAR; 128],
143 DeviceKey: [::WCHAR; 128],
144 }}
145 pub type PDISPLAY_DEVICEW = *mut DISPLAY_DEVICEW;
146 pub type LPDISPLAY_DEVICEW = *mut DISPLAY_DEVICEW;
147 STRUCT!{nodebug struct DISPLAY_DEVICEA {
148 cb: ::DWORD,
149 DeviceName: [::CHAR; 32],
150 DeviceString: [::CHAR; 128],
151 StateFlags: ::DWORD,
152 DeviceID: [::CHAR; 128],
153 DeviceKey: [::CHAR; 128],
154 }}
155 pub type PDISPLAY_DEVICEA = *mut DISPLAY_DEVICEA;
156 pub type LPDISPLAY_DEVICEA = *mut DISPLAY_DEVICEA;
157 STRUCT!{struct PIXELFORMATDESCRIPTOR {
158 nSize: ::WORD,
159 nVersion: ::WORD,
160 dwFlags: ::DWORD,
161 iPixelType: ::BYTE,
162 cColorBits: ::BYTE,
163 cRedBits: ::BYTE,
164 cRedShift: ::BYTE,
165 cGreenBits: ::BYTE,
166 cGreenShift: ::BYTE,
167 cBlueBits: ::BYTE,
168 cBlueShift: ::BYTE,
169 cAlphaBits: ::BYTE,
170 cAlphaShift: ::BYTE,
171 cAccumBits: ::BYTE,
172 cAccumRedBits: ::BYTE,
173 cAccumGreenBits: ::BYTE,
174 cAccumBlueBits: ::BYTE,
175 cAccumAlphaBits: ::BYTE,
176 cDepthBits: ::BYTE,
177 cStencilBits: ::BYTE,
178 cAuxBuffers: ::BYTE,
179 iLayerType: ::BYTE,
180 bReserved: ::BYTE,
181 dwLayerMask: ::DWORD,
182 dwVisibleMask: ::DWORD,
183 dwDamageMask: ::DWORD,
184 }}
185 pub type PPIXELFORMATDESCRIPTOR = *mut PIXELFORMATDESCRIPTOR;
186 pub type LPPIXELFORMATDESCRIPTOR = *mut PIXELFORMATDESCRIPTOR;
187 pub const R2_BLACK: ::c_int = 1;
188 pub const R2_NOTMERGEPEN: ::c_int = 2;
189 pub const R2_MASKNOTPEN: ::c_int = 3;
190 pub const R2_NOTCOPYPEN: ::c_int = 4;
191 pub const R2_MASKPENNOT: ::c_int = 5;
192 pub const R2_NOT: ::c_int = 6;
193 pub const R2_XORPEN: ::c_int = 7;
194 pub const R2_NOTMASKPEN: ::c_int = 8;
195 pub const R2_MASKPEN: ::c_int = 9;
196 pub const R2_NOTXORPEN: ::c_int = 10;
197 pub const R2_NOP: ::c_int = 11;
198 pub const R2_MERGENOTPEN: ::c_int = 12;
199 pub const R2_COPYPEN: ::c_int = 13;
200 pub const R2_MERGEPENNOT: ::c_int = 14;
201 pub const R2_MERGEPEN: ::c_int = 15;
202 pub const R2_WHITE: ::c_int = 16;
203 pub const R2_LAST: ::c_int = 16;
204 //83
205 pub const SRCCOPY: ::DWORD = 0x00CC0020;
206 pub const SRCPAINT: ::DWORD = 0x00EE0086;
207 pub const SRCAND: ::DWORD = 0x008800C6;
208 pub const SRCINVERT: ::DWORD = 0x00660046;
209 pub const SRCERASE: ::DWORD = 0x00440328;
210 pub const NOTSRCCOPY: ::DWORD = 0x00330008;
211 pub const NOTSRCERASE: ::DWORD = 0x001100A6;
212 pub const MERGECOPY: ::DWORD = 0x00C000CA;
213 pub const MERGEPAINT: ::DWORD = 0x00BB0226;
214 pub const PATCOPY: ::DWORD = 0x00F00021;
215 pub const PATPAINT: ::DWORD = 0x00FB0A09;
216 pub const PATINVERT: ::DWORD = 0x005A0049;
217 pub const DSTINVERT: ::DWORD = 0x00550009;
218 pub const BLACKNESS: ::DWORD = 0x00000042;
219 pub const WHITENESS: ::DWORD = 0x00FF0062;
220 //121
221 // fnCombineMode values for CombineRgn
222 pub const RGN_AND: ::c_int = 1;
223 pub const RGN_OR: ::c_int = 2;
224 pub const RGN_XOR: ::c_int = 3;
225 pub const RGN_DIFF: ::c_int = 4;
226 pub const RGN_COPY: ::c_int = 5;
227 pub const RGN_MIN: ::c_int = RGN_AND;
228 pub const RGN_MAX: ::c_int = RGN_COPY;
229 //572 (Win 7 SDK)
230 STRUCT!{struct BITMAP {
231 bmType: ::LONG,
232 bmWidth: ::LONG,
233 bmHeight: ::LONG,
234 bmWidthBytes: ::LONG,
235 bmPlanes: ::WORD,
236 bmBitsPixel: ::WORD,
237 bmBits: ::LPVOID,
238 }}
239 pub type PBITMAP = *mut BITMAP;
240 pub type NPBITMAP = *mut BITMAP;
241 pub type LPBITMAP = *mut BITMAP;
242 STRUCT!{struct RGBQUAD {
243 rgbBlue: ::BYTE,
244 rgbGreen: ::BYTE,
245 rgbRed: ::BYTE,
246 rgbReserved: ::BYTE,
247 }}
248 pub type LPRGBQUAD = *mut RGBQUAD;
249 pub const CS_ENABLE: ::DWORD = 0x00000001;
250 pub const CS_DISABLE: ::DWORD = 0x00000002;
251 pub const CS_DELETE_TRANSFORM: ::DWORD = 0x00000003;
252 pub const LCS_SIGNATURE: ::DWORD = 0x5053_4F43; // 'PSOC'
253 pub const LCS_sRGB: LCSCSTYPE = 0x7352_4742; // 'sRGB'
254 pub const LCS_WINDOWS_COLOR_SPACE: LCSCSTYPE = 0x5769_6E20; // 'Win '
255 pub type LCSCSTYPE = ::LONG;
256 pub const LCS_CALIBRATED_RGB: LCSCSTYPE = 0x00000000;
257 pub type LCSGAMUTMATCH = ::LONG;
258 pub const LCS_GM_BUSINESS: LCSGAMUTMATCH = 0x00000001;
259 pub const LCS_GM_GRAPHICS: LCSGAMUTMATCH = 0x00000002;
260 pub const LCS_GM_IMAGES: LCSGAMUTMATCH = 0x00000004;
261 pub const LCS_GM_ABS_COLORIMETRIC: LCSGAMUTMATCH = 0x00000008;
262 pub const CM_OUT_OF_GAMUT: ::BYTE = 255;
263 pub const CM_IN_GAMUT: ::BYTE = 0;
264 pub const ICM_ADDPROFILE: ::UINT = 1;
265 pub const ICM_DELETEPROFILE: ::UINT = 2;
266 pub const ICM_QUERYPROFILE: ::UINT = 3;
267 pub const ICM_SETDEFAULTPROFILE: ::UINT = 4;
268 pub const ICM_REGISTERICMATCHER: ::UINT = 5;
269 pub const ICM_UNREGISTERICMATCHER: ::UINT = 6;
270 pub const ICM_QUERYMATCH: ::UINT = 7;
271 pub type FXPT16DOT16 = ::c_long;
272 pub type LPFXPT16DOT16 = *mut ::c_long;
273 pub type FXPT2DOT30 = ::c_long;
274 pub type LPFXPT2DOT30 = *mut ::c_long;
275 STRUCT!{struct CIEXYZ {
276 ciexyzX: FXPT2DOT30,
277 ciexyzY: FXPT2DOT30,
278 ciexyzZ: FXPT2DOT30,
279 }}
280 pub type LPCIEXYZ = *mut CIEXYZ;
281 STRUCT!{struct CIEXYZTRIPLE {
282 ciexyzRed: CIEXYZ,
283 ciexyzGreen: CIEXYZ,
284 ciexyzBlue: CIEXYZ,
285 }}
286 pub type LPCIEXYZTRIPLE = *mut CIEXYZTRIPLE;
287 //716 (Win 7 SDK)
288 STRUCT!{struct BITMAPINFOHEADER {
289 biSize: ::DWORD,
290 biWidth: ::LONG,
291 biHeight: ::LONG,
292 biPlanes: ::WORD,
293 biBitCount: ::WORD,
294 biCompression: ::DWORD,
295 biSizeImage: ::DWORD,
296 biXPelsPerMeter: ::LONG,
297 biYPelsPerMeter: ::LONG,
298 biClrUsed: ::DWORD,
299 biClrImportant: ::DWORD,
300 }}
301 pub type LPBITMAPINFOHEADER = *mut BITMAPINFOHEADER;
302 pub type PBITMAPINFOHEADER = *mut BITMAPINFOHEADER;
303 STRUCT!{struct BITMAPV5HEADER {
304 bV5Size: ::DWORD,
305 bV5Width: ::LONG,
306 bV5Height: ::LONG,
307 bV5Planes: ::WORD,
308 bV5BitCount: ::WORD,
309 bV5Compression: ::DWORD,
310 bV5SizeImage: ::DWORD,
311 bV5XPelsPerMeter: ::LONG,
312 bV5YPelsPerMeter: ::LONG,
313 bV5ClrUsed: ::DWORD,
314 bV5ClrImportant: ::DWORD,
315 bV5RedMask: ::DWORD,
316 bV5GreenMask: ::DWORD,
317 bV5BlueMask: ::DWORD,
318 bV5AlphaMask: ::DWORD,
319 bV5CSType: ::LONG, // LONG to match LOGCOLORSPACE
320 bV5Endpoints: CIEXYZTRIPLE,
321 bV5GammaRed: ::DWORD,
322 bV5GammaGreen: ::DWORD,
323 bV5GammaBlue: ::DWORD,
324 bV5Intent: ::LONG, // LONG to match LOGCOLORSPACE
325 bV5ProfileData: ::DWORD,
326 bV5ProfileSize: ::DWORD,
327 bV5Reserved: ::DWORD,
328 }}
329 pub type LPBITMAPV5HEADER = *mut BITMAPV5HEADER;
330 pub type PBITMAPV5HEADER = *mut BITMAPV5HEADER;
331 pub const PROFILE_LINKED: ::LONG = 0x4C49_4E4B; // 'LINK'
332 pub const PROFILE_EMBEDDED: ::LONG = 0x4D42_4544; // 'MBED'
333 pub const BI_RGB: ::DWORD = 0;
334 pub const BI_RLE8: ::DWORD = 1;
335 pub const BI_RLE4: ::DWORD = 2;
336 pub const BI_BITFIELDS: ::DWORD = 3;
337 pub const BI_JPEG: ::DWORD = 4;
338 pub const BI_PNG: ::DWORD = 5;
339 STRUCT!{struct BITMAPINFO {
340 bmiHeader: BITMAPINFOHEADER,
341 bmiColors: [RGBQUAD; 0],
342 }}
343 pub type LPBITMAPINFO = *mut BITMAPINFO;
344 pub type PBITMAPINFO = *mut BITMAPINFO;
345 //1438
346 pub const LF_FACESIZE: usize = 32;
347 STRUCT!{nodebug struct LOGFONTA {
348 lfHeight: ::LONG,
349 lfWidth: ::LONG,
350 lfEscapement: ::LONG,
351 lfOrientation: ::LONG,
352 lfWeight: ::LONG,
353 lfItalic: ::BYTE,
354 lfUnderline: ::BYTE,
355 lfStrikeOut: ::BYTE,
356 lfCharSet: ::BYTE,
357 lfOutPrecision: ::BYTE,
358 lfClipPrecision: ::BYTE,
359 lfQuality: ::BYTE,
360 lfPitchAndFamily: ::BYTE,
361 lfFaceName: [::CHAR; LF_FACESIZE],
362 }}
363 pub type LPLOGFONTA = *mut LOGFONTA;
364 STRUCT!{nodebug struct LOGFONTW {
365 lfHeight: ::LONG,
366 lfWidth: ::LONG,
367 lfEscapement: ::LONG,
368 lfOrientation: ::LONG,
369 lfWeight: ::LONG,
370 lfItalic: ::BYTE,
371 lfUnderline: ::BYTE,
372 lfStrikeOut: ::BYTE,
373 lfCharSet: ::BYTE,
374 lfOutPrecision: ::BYTE,
375 lfClipPrecision: ::BYTE,
376 lfQuality: ::BYTE,
377 lfPitchAndFamily: ::BYTE,
378 lfFaceName: [::WCHAR; LF_FACESIZE],
379 }}
380 pub type LPLOGFONTW = *mut LOGFONTW;
381 //1595
382 #[inline]
RGB(r: ::BYTE, g: ::BYTE, b: ::BYTE) -> ::COLORREF383 pub fn RGB (r: ::BYTE, g: ::BYTE, b: ::BYTE) -> ::COLORREF {
384 r as ::COLORREF | ((g as ::COLORREF) << 8) | ((b as ::COLORREF) << 16)
385 }
386 //
387 pub const DRIVERVERSION: ::c_int = 0;
388 pub const TECHNOLOGY: ::c_int = 2;
389 pub const HORZSIZE: ::c_int = 4;
390 pub const VERTSIZE: ::c_int = 6;
391 pub const HORZRES: ::c_int = 8;
392 pub const VERTRES: ::c_int = 10;
393 pub const BITSPIXEL: ::c_int = 12;
394 pub const PLANES: ::c_int = 14;
395 pub const NUMBRUSHES: ::c_int = 16;
396 pub const NUMPENS: ::c_int = 18;
397 pub const NUMMARKERS: ::c_int = 20;
398 pub const NUMFONTS: ::c_int = 22;
399 pub const NUMCOLORS: ::c_int = 24;
400 pub const PDEVICESIZE: ::c_int = 26;
401 pub const CURVECAPS: ::c_int = 28;
402 pub const LINECAPS: ::c_int = 30;
403 pub const POLYGONALCAPS: ::c_int = 32;
404 pub const TEXTCAPS: ::c_int = 34;
405 pub const CLIPCAPS: ::c_int = 36;
406 pub const RASTERCAPS: ::c_int = 38;
407 pub const ASPECTX: ::c_int = 40;
408 pub const ASPECTY: ::c_int = 42;
409 pub const ASPECTXY: ::c_int = 44;
410 pub const LOGPIXELSX: ::c_int = 88;
411 pub const LOGPIXELSY: ::c_int = 90;
412 pub const SIZEPALETTE: ::c_int = 104;
413 pub const NUMRESERVED: ::c_int = 106;
414 pub const COLORRES: ::c_int = 108;
415 pub const PHYSICALWIDTH: ::c_int = 110;
416 pub const PHYSICALHEIGHT: ::c_int = 111;
417 pub const PHYSICALOFFSETX: ::c_int = 112;
418 pub const PHYSICALOFFSETY: ::c_int = 113;
419 pub const SCALINGFACTORX: ::c_int = 114;
420 pub const SCALINGFACTORY: ::c_int = 115;
421 pub const VREFRESH: ::c_int = 116;
422 pub const DESKTOPVERTRES: ::c_int = 117;
423 pub const DESKTOPHORZRES: ::c_int = 118;
424 pub const BLTALIGNMENT: ::c_int = 119;
425 pub const SHADEBLENDCAPS: ::c_int = 120;
426 pub const COLORMGMTCAPS: ::c_int = 121;
427 //1906
428 pub const DIB_RGB_COLORS: ::UINT = 0;
429 pub const DIB_PAL_COLORS: ::UINT = 1;
430 pub const CBM_INIT: ::DWORD = 4;
431 STRUCT!{struct RGNDATAHEADER {
432 dwSize: ::DWORD,
433 iType: ::DWORD,
434 nCount: ::DWORD,
435 nRgnSize: ::DWORD,
436 rcBound: ::RECT,
437 }}
438 pub type PRGNDATAHEADER = *mut RGNDATAHEADER;
439 STRUCT!{nodebug struct RGNDATA {
440 rdh: RGNDATAHEADER,
441 Buffer: [::c_char; 0],
442 }}
443 pub type PRGNDATA = *mut RGNDATA;
444 pub type NPRGNDATA = *mut RGNDATA;
445 pub type LPRGNDATA = *mut RGNDATA;
446 STRUCT!{struct PALETTEENTRY {
447 peRed: ::BYTE,
448 peGreen: ::BYTE,
449 peBlue: ::BYTE,
450 peFlags: ::BYTE,
451 }}
452 pub type PPALETTEENTRY = *mut PALETTEENTRY;
453 pub type LPPALETTEENTRY = *mut PALETTEENTRY;
454 //2824 (Win 7 SDK)
455 STRUCT!{struct ABC {
456 abcA: ::c_int,
457 abcB: ::UINT,
458 abcC: ::c_int,
459 }}
460 pub type PABC = *mut ABC;
461 pub type NPABC = *mut ABC;
462 pub type LPABC = *mut ABC;
463 STRUCT!{struct ABCFLOAT {
464 abcfA: ::FLOAT,
465 abcfB: ::FLOAT,
466 abcfC: ::FLOAT,
467 }}
468 pub type PABCFLOAT = *mut ABCFLOAT;
469 pub type NPABCFLOAT = *mut ABCFLOAT;
470 pub type LPABCFLOAT = *mut ABCFLOAT;
471 //3581
472 pub type LINEDDAPROC = Option<unsafe extern "system" fn(::c_int, ::c_int, ::LPARAM)>;
473 STRUCT!{struct XFORM {
474 eM11: ::FLOAT,
475 eM12: ::FLOAT,
476 eM21: ::FLOAT,
477 eM22: ::FLOAT,
478 eDx: ::FLOAT,
479 eDy: ::FLOAT,
480 }}
481 pub type PXFORM = *mut XFORM;
482 pub type LPXFORM = *mut XFORM;
483 STRUCT!{struct LOGBRUSH {
484 lbStyle: ::UINT,
485 lbColor: ::COLORREF,
486 lbHatch: ::ULONG_PTR,
487 }}
488 pub type PLOGBRUSH = *mut LOGBRUSH;
489 STRUCT!{nodebug struct LOGCOLORSPACEA {
490 lcsSignature: ::DWORD,
491 lcsVersion: ::DWORD,
492 lcsSize: ::DWORD,
493 lcsCSType: LCSCSTYPE,
494 lcsIntent: LCSGAMUTMATCH,
495 lcsEndpoints: CIEXYZTRIPLE,
496 lcsGammaRed: ::DWORD,
497 lcsGammaGreen: ::DWORD,
498 lcsGammaBlue: ::DWORD,
499 lcsFilename: [::CHAR; ::MAX_PATH],
500 }}
501 pub type LPLOGCOLORSPACEA = *mut LOGCOLORSPACEA;
502 STRUCT!{nodebug struct LOGCOLORSPACEW {
503 lcsSignature: ::DWORD,
504 lcsVersion: ::DWORD,
505 lcsSize: ::DWORD,
506 lcsCSType: LCSCSTYPE,
507 lcsIntent: LCSGAMUTMATCH,
508 lcsEndpoints: CIEXYZTRIPLE,
509 lcsGammaRed: ::DWORD,
510 lcsGammaGreen: ::DWORD,
511 lcsGammaBlue: ::DWORD,
512 lcsFilename: [::WCHAR; ::MAX_PATH],
513 }}
514 pub type LPLOGCOLORSPACEW = *mut LOGCOLORSPACEW;
515 pub const LF_FULLFACESIZE: usize = 64;
516 STRUCT!{nodebug struct ENUMLOGFONTEXA {
517 elfLogFont: LOGFONTA,
518 elfFullName: [::BYTE; LF_FULLFACESIZE],
519 elfStyle: [::BYTE; LF_FACESIZE],
520 elfScript: [::BYTE; LF_FACESIZE],
521 }}
522 pub type LPENUMLOGFONTEXA = *mut ENUMLOGFONTEXA;
523 STRUCT!{nodebug struct ENUMLOGFONTEXW {
524 elfLogFont: LOGFONTW,
525 elfFullName: [::WCHAR; LF_FULLFACESIZE],
526 elfStyle: [::WCHAR; LF_FACESIZE],
527 elfScript: [::WCHAR; LF_FACESIZE],
528 }}
529 pub type LPENUMLOGFONTEXW = *mut ENUMLOGFONTEXW;
530 pub const MM_MAX_NUMAXES: usize = 16;
531 STRUCT!{struct DESIGNVECTOR {
532 dvReserved: ::DWORD,
533 dvNumAxes: ::DWORD,
534 dvValues: [::LONG; MM_MAX_NUMAXES],
535 }}
536 pub type PDESIGNVECTOR = *mut DESIGNVECTOR;
537 pub type LPDESIGNVECTOR = *mut DESIGNVECTOR;
538 STRUCT!{nodebug struct ENUMLOGFONTEXDVA {
539 elfEnumLogfontEx: ENUMLOGFONTEXA,
540 elfDesignVector: DESIGNVECTOR,
541 }}
542 pub type PENUMLOGFONTEXDVA = *mut ENUMLOGFONTEXDVA;
543 pub type LPENUMLOGFONTEXDVA = *mut ENUMLOGFONTEXDVA;
544 STRUCT!{nodebug struct ENUMLOGFONTEXDVW {
545 elfEnumLogfontEx: ENUMLOGFONTEXW,
546 elfDesignVector: DESIGNVECTOR,
547 }}
548 pub type PENUMLOGFONTEXDVW = *mut ENUMLOGFONTEXDVW;
549 pub type LPENUMLOGFONTEXDVW = *mut ENUMLOGFONTEXDVW;
550 STRUCT!{struct LOGPALETTE {
551 palVersion: ::WORD,
552 palNumEntries: ::WORD,
553 palPalEntry: [PALETTEENTRY; 1],
554 }}
555 pub type PLOGPALETTE = *mut LOGPALETTE;
556 pub type NPLOGPALETTE = *mut LOGPALETTE;
557 pub type LPLOGPALETTE = *mut LOGPALETTE;
558 STRUCT!{struct LOGPEN {
559 lopnStyle: ::UINT,
560 lopnWidth: ::POINT,
561 lopnColor: ::COLORREF,
562 }}
563 pub type PLOGPEN = *mut LOGPEN;
564 pub type NPLOGPEN = *mut LOGPEN;
565 pub type LPLOGPEN = *mut LOGPEN;
566 STRUCT!{struct BLENDFUNCTION {
567 BlendOp: ::BYTE,
568 BlendFlags: ::BYTE,
569 SourceConstantAlpha: ::BYTE,
570 AlphaFormat: ::BYTE,
571 }}
572 pub type PBLENDFUNCTION = *mut BLENDFUNCTION;
573 pub const TMPF_FIXED_PITCH: ::BYTE = 0x01;
574 pub const TMPF_VECTOR: ::BYTE = 0x02;
575 pub const TMPF_DEVICE: ::BYTE = 0x08;
576 pub const TMPF_TRUETYPE: ::BYTE = 0x04;
577 STRUCT!{struct TEXTMETRICA {
578 tmHeight: ::LONG,
579 tmAscent: ::LONG,
580 tmDescent: ::LONG,
581 tmInternalLeading: ::LONG,
582 tmExternalLeading: ::LONG,
583 tmAveCharWidth: ::LONG,
584 tmMaxCharWidth: ::LONG,
585 tmWeight: ::LONG,
586 tmOverhang: ::LONG,
587 tmDigitizedAspectX: ::LONG,
588 tmDigitizedAspectY: ::LONG,
589 tmFirstChar: ::BYTE,
590 tmLastChar: ::BYTE,
591 tmDefaultChar: ::BYTE,
592 tmBreakChar: ::BYTE,
593 tmItalic: ::BYTE,
594 tmUnderlined: ::BYTE,
595 tmStruckOut: ::BYTE,
596 tmPitchAndFamily: ::BYTE,
597 tmCharSet: ::BYTE,
598 }}
599 pub type PTEXTMETRICA = *mut TEXTMETRICA;
600 pub type NPTEXTMETRICA = *mut TEXTMETRICA;
601 pub type LPTEXTMETRICA = *mut TEXTMETRICA;
602 STRUCT!{struct TEXTMETRICW {
603 tmHeight: ::LONG,
604 tmAscent: ::LONG,
605 tmDescent: ::LONG,
606 tmInternalLeading: ::LONG,
607 tmExternalLeading: ::LONG,
608 tmAveCharWidth: ::LONG,
609 tmMaxCharWidth: ::LONG,
610 tmWeight: ::LONG,
611 tmOverhang: ::LONG,
612 tmDigitizedAspectX: ::LONG,
613 tmDigitizedAspectY: ::LONG,
614 tmFirstChar: ::WCHAR,
615 tmLastChar: ::WCHAR,
616 tmDefaultChar: ::WCHAR,
617 tmBreakChar: ::WCHAR,
618 tmItalic: ::BYTE,
619 tmUnderlined: ::BYTE,
620 tmStruckOut: ::BYTE,
621 tmPitchAndFamily: ::BYTE,
622 tmCharSet: ::BYTE,
623 }}
624 pub type PTEXTMETRICW = *mut TEXTMETRICW;
625 pub type NPTEXTMETRICW = *mut TEXTMETRICW;
626 pub type LPTEXTMETRICW = *mut TEXTMETRICW;
627 pub const TA_NOUPDATECP: ::UINT = 0;
628 pub const TA_UPDATECP: ::UINT = 1;
629 pub const TA_LEFT: ::UINT = 0;
630 pub const TA_RIGHT: ::UINT = 2;
631 pub const TA_CENTER: ::UINT = 6;
632 pub const TA_TOP: ::UINT = 0;
633 pub const TA_BOTTOM: ::UINT = 8;
634 pub const TA_BASELINE: ::UINT = 24;
635 pub const TA_RTLREADING: ::UINT = 256;
636 pub const TA_MASK: ::UINT = TA_BASELINE + TA_CENTER + TA_UPDATECP + TA_RTLREADING;
637 pub const WHITE_BRUSH: ::c_int = 0;
638 pub const LTGRAY_BRUSH: ::c_int = 1;
639 pub const GRAY_BRUSH: ::c_int = 2;
640 pub const DKGRAY_BRUSH: ::c_int = 3;
641 pub const BLACK_BRUSH: ::c_int = 4;
642 pub const NULL_BRUSH: ::c_int = 5;
643 pub const HOLLOW_BRUSH: ::c_int = 5;
644 pub const WHITE_PEN: ::c_int = 6;
645 pub const BLACK_PEN: ::c_int = 7;
646 pub const NULL_PEN: ::c_int = 8;
647 pub const OEM_FIXED_FONT: ::c_int = 10;
648 pub const ANSI_FIXED_FONT: ::c_int = 11;
649 pub const ANSI_VAR_FONT: ::c_int = 12;
650 pub const SYSTEM_FONT: ::c_int = 13;
651 pub const DEVICE_DEFAULT_FONT: ::c_int = 14;
652 pub const DEFAULT_PALETTE: ::c_int = 15;
653 pub const SYSTEM_FIXED_FONT: ::c_int = 16;
654 pub const DEFAULT_GUI_FONT: ::c_int = 17;
655 pub const DC_BRUSH: ::c_int = 18;
656 pub const DC_PEN: ::c_int = 19;
657 pub const STOCK_LAST: ::c_int = 19;pub const PS_SOLID: ::c_int = 0;
658 pub const PS_DASH: ::c_int = 1;
659 pub const PS_DOT: ::c_int = 2;
660 pub const PS_DASHDOT: ::c_int = 3;
661 pub const PS_DASHDOTDOT: ::c_int = 4;
662 pub const PS_NULL: ::c_int = 5;
663 pub const PS_INSIDEFRAME: ::c_int = 6;
664 pub const PS_USERSTYLE: ::c_int = 7;
665 pub const PS_ALTERNATE: ::c_int = 8;
666 pub const TRANSPARENT: ::c_int = 1;
667 pub const OPAQUE: ::c_int = 2;
668 pub const BKMODE_LAST: ::c_int = 2;
669 pub const MM_TEXT: ::c_int = 1;
670 pub const MM_LOMETRIC: ::c_int = 2;
671 pub const MM_HIMETRIC: ::c_int = 3;
672 pub const MM_LOENGLISH: ::c_int = 4;
673 pub const MM_HIENGLISH: ::c_int = 5;
674 pub const MM_TWIPS: ::c_int = 6;
675 pub const MM_ISOTROPIC: ::c_int = 7;
676 pub const MM_ANISOTROPIC: ::c_int = 8;
677 pub const ALTERNATE: ::c_int = 1;
678 pub const WINDING: ::c_int = 2;
679 pub const POLYFILL_LAST: ::c_int = 2;
680 pub const OUT_DEFAULT_PRECIS: ::DWORD = 0;
681 pub const OUT_STRING_PRECIS: ::DWORD = 1;
682 pub const OUT_CHARACTER_PRECIS: ::DWORD = 2;
683 pub const OUT_STROKE_PRECIS: ::DWORD = 3;
684 pub const OUT_TT_PRECIS: ::DWORD = 4;
685 pub const OUT_DEVICE_PRECIS: ::DWORD = 5;
686 pub const OUT_RASTER_PRECIS: ::DWORD = 6;
687 pub const OUT_TT_ONLY_PRECIS: ::DWORD = 7;
688 pub const OUT_OUTLINE_PRECIS: ::DWORD = 8;
689 pub const OUT_SCREEN_OUTLINE_PRECIS: ::DWORD = 9;
690 pub const OUT_PS_ONLY_PRECIS: ::DWORD = 10;
691 pub const CLIP_DEFAULT_PRECIS: ::DWORD = 0;
692 pub const CLIP_CHARACTER_PRECIS: ::DWORD = 1;
693 pub const CLIP_STROKE_PRECIS: ::DWORD = 2;
694 pub const CLIP_MASK: ::DWORD = 0xf;
695 pub const CLIP_LH_ANGLES: ::DWORD = 1 << 4;
696 pub const CLIP_TT_ALWAYS: ::DWORD = 2 << 4;
697 pub const CLIP_DFA_DISABLE: ::DWORD = 4 << 4;
698 pub const CLIP_EMBEDDED: ::DWORD = 8 << 4;
699 pub const DEFAULT_QUALITY: ::DWORD = 0;
700 pub const DRAFT_QUALITY: ::DWORD = 1;
701 pub const PROOF_QUALITY: ::DWORD = 2;
702 pub const NONANTIALIASED_QUALITY: ::DWORD = 3;
703 pub const ANTIALIASED_QUALITY: ::DWORD = 4;
704 pub const CLEARTYPE_QUALITY: ::DWORD = 5;
705 pub const CLEARTYPE_NATURAL_QUALITY: ::DWORD = 6;
706 pub const DEFAULT_PITCH: ::DWORD = 0;
707 pub const FIXED_PITCH: ::DWORD = 1;
708 pub const VARIABLE_PITCH: ::DWORD = 2;
709 pub const FF_DONTCARE: ::DWORD = 0 << 4;
710 pub const FF_ROMAN: ::DWORD = 1 << 4;
711 pub const FF_SWISS: ::DWORD = 2 << 4;
712 pub const FF_MODERN: ::DWORD = 3 << 4;
713 pub const FF_SCRIPT: ::DWORD = 4 << 4;
714 pub const FF_DECORATIVE: ::DWORD = 5 << 4;
715 pub const MONO_FONT: ::DWORD = 8;
716 pub const ANSI_CHARSET: ::DWORD = 0;
717 pub const DEFAULT_CHARSET: ::DWORD = 1;
718 pub const SYMBOL_CHARSET: ::DWORD = 2;
719 pub const SHIFTJIS_CHARSET: ::DWORD = 128;
720 pub const HANGEUL_CHARSET: ::DWORD = 129;
721 pub const HANGUL_CHARSET: ::DWORD = 129;
722 pub const GB2312_CHARSET: ::DWORD = 134;
723 pub const CHINESEBIG5_CHARSET: ::DWORD = 136;
724 pub const OEM_CHARSET: ::DWORD = 255;
725 pub const JOHAB_CHARSET: ::DWORD = 130;
726 pub const HEBREW_CHARSET: ::DWORD = 177;
727 pub const ARABIC_CHARSET: ::DWORD = 178;
728 pub const GREEK_CHARSET: ::DWORD = 161;
729 pub const TURKISH_CHARSET: ::DWORD = 162;
730 pub const VIETNAMESE_CHARSET: ::DWORD = 163;
731 pub const THAI_CHARSET: ::DWORD = 222;
732 pub const EASTEUROPE_CHARSET: ::DWORD = 238;
733 pub const RUSSIAN_CHARSET: ::DWORD = 204;
734 pub const MAC_CHARSET: ::DWORD = 77;
735 pub const BALTIC_CHARSET: ::DWORD = 186;
736 pub const FS_LATIN1: ::DWORD = 0x00000001;
737 pub const FS_LATIN2: ::DWORD = 0x00000002;
738 pub const FS_CYRILLIC: ::DWORD = 0x00000004;
739 pub const FS_GREEK: ::DWORD = 0x00000008;
740 pub const FS_TURKISH: ::DWORD = 0x00000010;
741 pub const FS_HEBREW: ::DWORD = 0x00000020;
742 pub const FS_ARABIC: ::DWORD = 0x00000040;
743 pub const FS_BALTIC: ::DWORD = 0x00000080;
744 pub const FS_VIETNAMESE: ::DWORD = 0x00000100;
745 pub const FS_THAI: ::DWORD = 0x00010000;
746 pub const FS_JISJAPAN: ::DWORD = 0x00020000;
747 pub const FS_CHINESESIMP: ::DWORD = 0x00040000;
748 pub const FS_WANSUNG: ::DWORD = 0x00080000;
749 pub const FS_CHINESETRAD: ::DWORD = 0x00100000;
750 pub const FS_JOHAB: ::DWORD = 0x00200000;
751 pub const FS_SYMBOL: ::DWORD = 0x80000000;
752 pub const FW_DONTCARE: ::c_int = 0;
753 pub const FW_THIN: ::c_int = 100;
754 pub const FW_EXTRALIGHT: ::c_int = 200;
755 pub const FW_LIGHT: ::c_int = 300;
756 pub const FW_NORMAL: ::c_int = 400;
757 pub const FW_MEDIUM: ::c_int = 500;
758 pub const FW_SEMIBOLD: ::c_int = 600;
759 pub const FW_BOLD: ::c_int = 700;
760 pub const FW_EXTRABOLD: ::c_int = 800;
761 pub const FW_HEAVY: ::c_int = 900;
762 pub const FW_ULTRALIGHT: ::c_int = FW_EXTRALIGHT;
763 pub const FW_REGULAR: ::c_int = FW_NORMAL;
764 pub const FW_DEMIBOLD: ::c_int = FW_SEMIBOLD;
765 pub const FW_ULTRABOLD: ::c_int = FW_EXTRABOLD;
766 pub const FW_BLACK: ::c_int = FW_HEAVY;
767 pub type COLOR16 = ::c_ushort;
768 STRUCT!{struct TRIVERTEX {
769 x: ::LONG,
770 y: ::LONG,
771 Red: COLOR16,
772 Green: COLOR16,
773 Blue: COLOR16,
774 Alpha: COLOR16,
775 }}
776 pub type PTRIVERTEX = *mut TRIVERTEX;
777 pub type LPTRIVERTEX = *mut TRIVERTEX;
778 STRUCT!{struct GRADIENT_RECT {
779 UpperLeft: ::ULONG,
780 LowerRight: ::ULONG,
781 }}
782 pub type PGRADIENT_RECT = *mut GRADIENT_RECT;
783 pub type LPGRADIENT_RECT = *mut GRADIENT_RECT;
784 /* Object Definitions for EnumObjects() */
785 pub const OBJ_PEN: ::UINT = 1;
786 pub const OBJ_BRUSH: ::UINT = 2;
787 pub const OBJ_DC: ::UINT = 3;
788 pub const OBJ_METADC: ::UINT = 4;
789 pub const OBJ_PAL: ::UINT = 5;
790 pub const OBJ_FONT: ::UINT = 6;
791 pub const OBJ_BITMAP: ::UINT = 7;
792 pub const OBJ_REGION: ::UINT = 8;
793 pub const OBJ_METAFILE: ::UINT = 9;
794 pub const OBJ_MEMDC: ::UINT = 10;
795 pub const OBJ_EXTPEN: ::UINT = 11;
796 pub const OBJ_ENHMETADC: ::UINT = 12;
797 pub const OBJ_ENHMETAFILE: ::UINT = 13;
798 pub const OBJ_COLORSPACE: ::UINT = 14;
799 pub const GDI_OBJ_LAST: ::UINT = OBJ_COLORSPACE;
800 STRUCT!{struct COLORADJUSTMENT {
801 caSize: ::WORD,
802 caFlags: ::WORD,
803 caIlluminantIndex: ::WORD,
804 caRedGamma: ::WORD,
805 caGreenGamma: ::WORD,
806 caBlueGamma: ::WORD,
807 caReferenceBlack: ::WORD,
808 caReferenceWhite: ::WORD,
809 caContrast: ::SHORT,
810 caBrightness: ::SHORT,
811 caColorfulness: ::SHORT,
812 caRedGreenTint: ::SHORT,
813 }}
814 pub type PCOLORADJUSTMENT = *mut COLORADJUSTMENT;
815 pub type LPCOLORADJUSTMENT = *mut COLORADJUSTMENT;
816 pub type OLDFONTENUMPROCA = Option<unsafe extern "system" fn(
817 *const LOGFONTA, *const ::VOID, ::DWORD, ::LPARAM
818 ) -> ::c_int>;
819 pub type OLDFONTENUMPROCW = Option<unsafe extern "system" fn(
820 *const LOGFONTW, *const ::VOID, ::DWORD, ::LPARAM
821 ) -> ::c_int>;
822 pub type FONTENUMPROCA = OLDFONTENUMPROCA;
823 pub type FONTENUMPROCW = OLDFONTENUMPROCW;
824 STRUCT!{struct WCRANGE {
825 wcLow: ::WCHAR,
826 cGlyphs: ::USHORT,
827 }}
828 pub type PWCRANGE = *mut WCRANGE;
829 pub type LPWCRANGE = *mut WCRANGE;
830 STRUCT!{struct GLYPHSET {
831 cbThis: ::DWORD,
832 flAccel: ::DWORD,
833 cGlyphsSupported: ::DWORD,
834 cRanges: ::DWORD,
835 ranges: [WCRANGE;1],
836 }}
837 pub type PGLYPHSET = *mut GLYPHSET;
838 pub type LPGLYPHSET = *mut GLYPHSET;
839 pub type ABORTPROC = Option<unsafe extern "system" fn(::HDC, ::c_int) -> ::BOOL>;
840 STRUCT!{struct DOCINFOA {
841 cbSize: ::c_int,
842 lpszDocName: ::LPCSTR,
843 lpszOutput: ::LPCSTR,
844 lpszDatatype: ::LPCSTR,
845 fwType: ::DWORD,
846 }}
847 pub type LPDOCINFOA = *mut DOCINFOA;
848 STRUCT!{struct DOCINFOW {
849 cbSize: ::c_int,
850 lpszDocName: ::LPCWSTR,
851 lpszOutput: ::LPCWSTR,
852 lpszDatatype: ::LPCWSTR,
853 fwType: ::DWORD,
854 }}
855 pub type LPDOCINFOW = *mut DOCINFOW;
856 pub type ICMENUMPROCA = Option<unsafe extern "system" fn(::LPSTR, ::LPARAM) -> ::c_int>;
857 pub type ICMENUMPROCW = Option<unsafe extern "system" fn(::LPWSTR, ::LPARAM) -> ::c_int>;
858 STRUCT!{struct HANDLETABLE {
859 objectHandle: [::HGDIOBJ; 1],
860 }}
861 pub type LPHANDLETABLE = *mut HANDLETABLE;
862 pub type PHANDLETABLE = *mut HANDLETABLE;
863 STRUCT!{struct METARECORD {
864 rdSize: ::DWORD,
865 rdFunction: ::WORD,
866 rdParm: [::WORD; 1],
867 }}
868 pub type PMETARECORD = *mut METARECORD;
869 pub type LPMETARECORD = *mut METARECORD;
870 pub type MFENUMPROC = Option<unsafe extern "system" fn(
871 hdc: ::HDC, lpht: *mut ::HANDLETABLE, lpMR: *mut ::METARECORD, nObj: ::c_int, param: ::LPARAM
872 ) -> ::c_int>;
873 pub type GOBJENUMPROC = Option<unsafe extern "system" fn(::LPVOID, ::LPARAM) -> ::c_int>;
874 STRUCT!{struct GCP_RESULTSA {
875 lStructSize: ::DWORD,
876 lpOutString: ::LPSTR,
877 lpOrder: *const ::UINT,
878 lpDx: *const ::c_int,
879 lpCaretPos: *const ::c_int,
880 lpClass: ::LPSTR,
881 lpGlyphs: ::LPWSTR,
882 nGlyphs: ::UINT,
883 nMaxFit: ::c_int,
884 }}
885 pub type LPGCP_RESULTSA = *mut GCP_RESULTSA;
886 STRUCT!{struct GCP_RESULTSW {
887 lStructSize: ::DWORD,
888 lpOutString: ::LPWSTR,
889 lpOrder: *const ::UINT,
890 lpDx: *const ::c_int,
891 lpCaretPos: *const ::c_int,
892 lpClass: ::LPSTR,
893 lpGlyphs: ::LPWSTR,
894 nGlyphs: ::UINT,
895 nMaxFit: ::c_int,
896 }}
897 pub type LPGCP_RESULTSW = *mut GCP_RESULTSW;
898 STRUCT!{struct FONTSIGNATURE {
899 fsUsb: [::DWORD; 4],
900 fsCsb: [::DWORD; 2],
901 }}
902 pub type LPFONTSIGNATURE = *mut FONTSIGNATURE;
903 pub type PFONTSIGNATURE = *mut FONTSIGNATURE;
904 STRUCT!{struct POLYTEXTA {
905 x: ::c_int,
906 y: ::c_int,
907 n: ::UINT,
908 lpstr: ::LPCSTR,
909 uiFlags: ::UINT,
910 rcl: ::RECT,
911 pdx: *const ::c_int,
912 }}
913 pub type PPOLYTEXTA = *mut POLYTEXTA;
914 pub type NPPOLYTEXTA = *mut POLYTEXTA;
915 pub type LPPOLYTEXTA = *mut POLYTEXTA;
916 STRUCT!{struct POLYTEXTW {
917 x: ::c_int,
918 y: ::c_int,
919 n: ::UINT,
920 lpstr: ::LPCWSTR,
921 uiFlags: ::UINT,
922 rcl: ::RECT,
923 pdx: *const ::c_int,
924 }}
925 pub type PPOLYTEXTW = *mut POLYTEXTW;
926 pub type NPPOLYTEXTW = *mut POLYTEXTW;
927 pub type LPPOLYTEXTW = *mut POLYTEXTW;
928 STRUCT!{struct CHARSETINFO {
929 ciCharset: ::UINT,
930 ciACP: ::UINT,
931 fs: ::FONTSIGNATURE,
932 }}
933 pub type PCHARSETINFO = *mut CHARSETINFO;
934 pub type NPCHARSETINFO = *mut CHARSETINFO;
935 pub type LPCHARSETINFO = *mut CHARSETINFO;
936 pub const GRADIENT_FILL_RECT_H: ::ULONG = 0x00000000;
937 pub const GRADIENT_FILL_RECT_V: ::ULONG = 0x00000001;
938 pub const GRADIENT_FILL_TRIANGLE: ::ULONG = 0x00000002;
939 pub const GRADIENT_FILL_OP_FLAG: ::ULONG = 0x000000ff;
940 STRUCT!{struct LAYERPLANEDESCRIPTOR {
941 nSize: ::WORD,
942 nVersion: ::WORD,
943 dwFlags: ::DWORD,
944 iPixelType: ::BYTE,
945 cColorBits: ::BYTE,
946 cRedBits: ::BYTE,
947 cRedShift: ::BYTE,
948 cGreenBits: ::BYTE,
949 cGreenShift: ::BYTE,
950 cBlueBits: ::BYTE,
951 cBlueShift: ::BYTE,
952 cAlphaBits: ::BYTE,
953 cAlphaShift: ::BYTE,
954 cAccumBits: ::BYTE,
955 cAccumRedBits: ::BYTE,
956 cAccumGreenBits: ::BYTE,
957 cAccumBlueBits: ::BYTE,
958 cAccumAlphaBits: ::BYTE,
959 cDepthBits: ::BYTE,
960 cStencilBits: ::BYTE,
961 cAuxBuffers: ::BYTE,
962 iLayerPlane: ::BYTE,
963 bReserved: ::BYTE,
964 crTransparent: ::COLORREF,
965 }}
966 pub type PLAYERPLANEDESCRIPTOR = *mut LAYERPLANEDESCRIPTOR;
967 pub type LPLAYERPLANEDESCRIPTOR = *mut LAYERPLANEDESCRIPTOR;
968 STRUCT!{struct ENHMETAHEADER {
969 iType: ::DWORD,
970 nSize: ::DWORD,
971 rclBounds: ::RECTL,
972 rclFrame: ::RECTL,
973 dSignature: ::DWORD,
974 nVersion: ::DWORD,
975 nBytes: ::DWORD,
976 nRecords: ::DWORD,
977 nHandles: ::WORD,
978 sReserved: ::WORD,
979 nDescription: ::DWORD,
980 offDescription: ::DWORD,
981 nPalEntries: ::DWORD,
982 szlDevice: ::SIZEL,
983 szlMillimeters: ::SIZEL,
984 cbPixelFormat: ::DWORD,
985 offPixelFormat: ::DWORD,
986 bOpenGL: ::DWORD,
987 szlMicrometers: ::SIZEL,
988 }}
989 pub type PENHMETAHEADER = *mut ENHMETAHEADER;
990 pub type LPENHMETAHEADER = *mut ENHMETAHEADER;
991 STRUCT!{struct FIXED {
992 fract: ::WORD,
993 value: ::c_short,
994 }}
995 STRUCT!{struct MAT2 {
996 eM11: FIXED,
997 eM12: FIXED,
998 eM21: FIXED,
999 eM22: FIXED,
1000 }}
1001 pub type LPMAT2 = *mut MAT2;
1002 STRUCT!{struct GLYPHMETRICS {
1003 gmBlackBoxX: ::UINT,
1004 gmBlackBoxY: ::UINT,
1005 gmptGlyphOrigin: ::POINT,
1006 gmCellIncX: ::c_short,
1007 gmCellIncY: ::c_short,
1008 }}
1009 pub type LPGLYPHMETRICS = *mut GLYPHMETRICS;
1010 STRUCT!{struct KERNINGPAIR {
1011 wFirst: ::WORD,
1012 wSecond: ::WORD,
1013 iKernAmount: ::c_int,
1014 }}
1015 pub type LPKERNINGPAIR = *mut KERNINGPAIR;
1016 STRUCT!{struct PANOSE {
1017 bFamilyType: ::BYTE,
1018 bSerifStyle: ::BYTE,
1019 bWeight: ::BYTE,
1020 bProportion: ::BYTE,
1021 bContrast: ::BYTE,
1022 bStrokeVariation: ::BYTE,
1023 bArmStyle: ::BYTE,
1024 bLetterform: ::BYTE,
1025 bMidline: ::BYTE,
1026 bXHeight: ::BYTE,
1027 }}
1028 pub type LPPANOSE = *mut PANOSE;
1029 STRUCT!{struct OUTLINETEXTMETRICA {
1030 otmSize: ::UINT,
1031 otmTextMetrics: TEXTMETRICA,
1032 otmFiller: ::BYTE,
1033 otmPanoseNumber: ::PANOSE,
1034 otmfsSelection: ::UINT,
1035 otmfsType: ::UINT,
1036 otmsCharSlopeRise: ::c_int,
1037 otmsCharSlopeRun: ::c_int,
1038 otmItalicAngle: ::c_int,
1039 otmEMSquare: ::UINT,
1040 otmAscent: ::c_int,
1041 otmDescent: ::c_int,
1042 otmLineGap: ::UINT,
1043 otmsCapEmHeight: ::UINT,
1044 otmsXHeight: ::UINT,
1045 otmrcFontBox: ::RECT,
1046 otmMacAscent: ::c_int,
1047 otmMacDescent: ::c_int,
1048 otmMacLineGap: ::UINT,
1049 otmusMinimumPPEM: ::UINT,
1050 otmptSubscriptSize: ::POINT,
1051 otmptSubscriptOffset: ::POINT,
1052 otmptSuperscriptSize: ::POINT,
1053 otmptSuperscriptOffset: ::POINT,
1054 otmsStrikeoutSize: ::UINT,
1055 otmsStrikeoutPosition: ::c_int,
1056 otmsUnderscoreSize: ::c_int,
1057 otmsUnderscorePosition: ::c_int,
1058 otmpFamilyName: ::PSTR,
1059 otmpFaceName: ::PSTR,
1060 otmpStyleName: ::PSTR,
1061 otmpFullName: ::PSTR,
1062 }}
1063 pub type POUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA;
1064 pub type NPOUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA;
1065 pub type LPOUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA;
1066 STRUCT!{struct OUTLINETEXTMETRICW {
1067 otmSize: ::UINT,
1068 otmTextMetrics: TEXTMETRICW,
1069 otmFiller: ::BYTE,
1070 otmPanoseNumber: ::PANOSE,
1071 otmfsSelection: ::UINT,
1072 otmfsType: ::UINT,
1073 otmsCharSlopeRise: ::c_int,
1074 otmsCharSlopeRun: ::c_int,
1075 otmItalicAngle: ::c_int,
1076 otmEMSquare: ::UINT,
1077 otmAscent: ::c_int,
1078 otmDescent: ::c_int,
1079 otmLineGap: ::UINT,
1080 otmsCapEmHeight: ::UINT,
1081 otmsXHeight: ::UINT,
1082 otmrcFontBox: ::RECT,
1083 otmMacAscent: ::c_int,
1084 otmMacDescent: ::c_int,
1085 otmMacLineGap: ::UINT,
1086 otmusMinimumPPEM: ::UINT,
1087 otmptSubscriptSize: ::POINT,
1088 otmptSubscriptOffset: ::POINT,
1089 otmptSuperscriptSize: ::POINT,
1090 otmptSuperscriptOffset: ::POINT,
1091 otmsStrikeoutSize: ::UINT,
1092 otmsStrikeoutPosition: ::c_int,
1093 otmsUnderscoreSize: ::c_int,
1094 otmsUnderscorePosition: ::c_int,
1095 otmpFamilyName: ::PSTR,
1096 otmpFaceName: ::PSTR,
1097 otmpStyleName: ::PSTR,
1098 otmpFullName: ::PSTR,
1099 }}
1100 pub type POUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW;
1101 pub type NPOUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW;
1102 pub type LPOUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW;
1103 STRUCT!{struct RASTERIZER_STATUS {
1104 nSize: ::c_short,
1105 wFlags: ::c_short,
1106 nLanguageID: ::c_short,
1107 }}
1108 pub type LPRASTERIZER_STATUS = *mut RASTERIZER_STATUS;
1109 STRUCT!{struct ENHMETARECORD {
1110 iType: ::DWORD,
1111 nSize: ::DWORD,
1112 dParm: [::DWORD; 1],
1113 }}
1114 pub type PENHMETARECORD = *mut ENHMETARECORD;
1115 pub type LPENHMETARECORD = *mut ENHMETARECORD;
1116 STRUCT!{struct METAFILEPICT {
1117 mm: ::LONG,
1118 xExt: ::LONG,
1119 yExt: ::LONG,
1120 hMF: ::HMETAFILE,
1121 }}
1122 pub type LPMETAFILEPICT = *mut METAFILEPICT;
1123 STRUCT!{struct POINTFLOAT {
1124 x: ::FLOAT,
1125 y: ::FLOAT,
1126 }}
1127 pub type PPOINTFLOAT = *mut POINTFLOAT;
1128 STRUCT!{struct GLYPHMETRICSFLOAT {
1129 gmfBlackBoxX: ::FLOAT,
1130 gmfBlackBoxY: ::FLOAT,
1131 gmfptGlyphOrigin: POINTFLOAT,
1132 gmfCellIncX: ::FLOAT,
1133 gmfCellIncY: ::FLOAT,
1134 }}
1135 pub type PGLYPHMETRICSFLOAT = *mut GLYPHMETRICSFLOAT;
1136 pub type LPGLYPHMETRICSFLOAT = *mut GLYPHMETRICSFLOAT;
1137 pub const DT_PLOTTER: ::c_int = 0;
1138 pub const DT_RASDISPLAY: ::c_int = 1;
1139 pub const DT_RASPRINTER: ::c_int = 2;
1140 pub const DT_RASCAMERA: ::c_int = 3;
1141 pub const DT_CHARSTREAM: ::c_int = 4;
1142 pub const DT_METAFILE: ::c_int = 5;
1143 pub const DT_DISPFILE: ::c_int = 6;
1144 pub const CLR_INVALID: ::COLORREF = 0xFFFFFFFF;
1145 pub const ETO_OPAQUE: ::UINT = 0x0002;
1146 pub const ETO_CLIPPED: ::UINT = 0x0004;
1147 pub const ETO_GLYPH_INDEX: ::UINT = 0x0010;
1148 pub const ETO_RTLREADING: ::UINT = 0x0080;
1149 pub const ETO_NUMERICSLOCAL: ::UINT = 0x0400;
1150 pub const ETO_NUMERICSLATIN: ::UINT = 0x0800;
1151 pub const ETO_IGNORELANGUAGE: ::UINT = 0x1000;
1152 pub const ETO_PDY: ::UINT = 0x2000;
1153 pub const ETO_REVERSE_INDEX_MAP: ::UINT = 0x10000;
1154 STRUCT!{struct EXTLOGPEN {
1155 elpPenStyle: ::DWORD,
1156 elpWidth: ::DWORD,
1157 elpBrushStyle: ::UINT,
1158 elpColor: ::COLORREF,
1159 elpHatch: ::ULONG_PTR,
1160 elpNumEntries: ::DWORD,
1161 elpStyleEntry: [::DWORD; 1],
1162 }}
1163 pub type PEXTLOGPEN = *mut EXTLOGPEN;
1164 pub type NPEXTLOGPEN = *mut EXTLOGPEN;
1165 pub type LPEXTLOGPEN = *mut EXTLOGPEN;
1166 pub type ENHMFENUMPROC = Option<unsafe extern "system" fn(
1167 hdc: ::HDC, lpht: HANDLETABLE, lpmr: *const ENHMETARECORD, nHandles: ::c_int, data: ::LPARAM
1168 ) -> ::c_int>;
1169 /* Metafile Functions */
1170 pub const META_SETBKCOLOR: ::WORD = 0x0201;
1171 pub const META_SETBKMODE: ::WORD = 0x0102;
1172 pub const META_SETMAPMODE: ::WORD = 0x0103;
1173 pub const META_SETROP2: ::WORD = 0x0104;
1174 pub const META_SETRELABS: ::WORD = 0x0105;
1175 pub const META_SETPOLYFILLMODE: ::WORD = 0x0106;
1176 pub const META_SETSTRETCHBLTMODE: ::WORD = 0x0107;
1177 pub const META_SETTEXTCHAREXTRA: ::WORD = 0x0108;
1178 pub const META_SETTEXTCOLOR: ::WORD = 0x0209;
1179 pub const META_SETTEXTJUSTIFICATION: ::WORD = 0x020A;
1180 pub const META_SETWINDOWORG: ::WORD = 0x020B;
1181 pub const META_SETWINDOWEXT: ::WORD = 0x020C;
1182 pub const META_SETVIEWPORTORG: ::WORD = 0x020D;
1183 pub const META_SETVIEWPORTEXT: ::WORD = 0x020E;
1184 pub const META_OFFSETWINDOWORG: ::WORD = 0x020F;
1185 pub const META_SCALEWINDOWEXT: ::WORD = 0x0410;
1186 pub const META_OFFSETVIEWPORTORG: ::WORD = 0x0211;
1187 pub const META_SCALEVIEWPORTEXT: ::WORD = 0x0412;
1188 pub const META_LINETO: ::WORD = 0x0213;
1189 pub const META_MOVETO: ::WORD = 0x0214;
1190 pub const META_EXCLUDECLIPRECT: ::WORD = 0x0415;
1191 pub const META_INTERSECTCLIPRECT: ::WORD = 0x0416;
1192 pub const META_ARC: ::WORD = 0x0817;
1193 pub const META_ELLIPSE: ::WORD = 0x0418;
1194 pub const META_FLOODFILL: ::WORD = 0x0419;
1195 pub const META_PIE: ::WORD = 0x081A;
1196 pub const META_RECTANGLE: ::WORD = 0x041B;
1197 pub const META_ROUNDRECT: ::WORD = 0x061C;
1198 pub const META_PATBLT: ::WORD = 0x061D;
1199 pub const META_SAVEDC: ::WORD = 0x001E;
1200 pub const META_SETPIXEL: ::WORD = 0x041F;
1201 pub const META_OFFSETCLIPRGN: ::WORD = 0x0220;
1202 pub const META_TEXTOUT: ::WORD = 0x0521;
1203 pub const META_BITBLT: ::WORD = 0x0922;
1204 pub const META_STRETCHBLT: ::WORD = 0x0B23;
1205 pub const META_POLYGON: ::WORD = 0x0324;
1206 pub const META_POLYLINE: ::WORD = 0x0325;
1207 pub const META_ESCAPE: ::WORD = 0x0626;
1208 pub const META_RESTOREDC: ::WORD = 0x0127;
1209 pub const META_FILLREGION: ::WORD = 0x0228;
1210 pub const META_FRAMEREGION: ::WORD = 0x0429;
1211 pub const META_INVERTREGION: ::WORD = 0x012A;
1212 pub const META_PAINTREGION: ::WORD = 0x012B;
1213 pub const META_SELECTCLIPREGION: ::WORD = 0x012C;
1214 pub const META_SELECTOBJECT: ::WORD = 0x012D;
1215 pub const META_SETTEXTALIGN: ::WORD = 0x012E;
1216 pub const META_CHORD: ::WORD = 0x0830;
1217 pub const META_SETMAPPERFLAGS: ::WORD = 0x0231;
1218 pub const META_EXTTEXTOUT: ::WORD = 0x0a32;
1219 pub const META_SETDIBTODEV: ::WORD = 0x0d33;
1220 pub const META_SELECTPALETTE: ::WORD = 0x0234;
1221 pub const META_REALIZEPALETTE: ::WORD = 0x0035;
1222 pub const META_ANIMATEPALETTE: ::WORD = 0x0436;
1223 pub const META_SETPALENTRIES: ::WORD = 0x0037;
1224 pub const META_POLYPOLYGON: ::WORD = 0x0538;
1225 pub const META_RESIZEPALETTE: ::WORD = 0x0139;
1226 pub const META_DIBBITBLT: ::WORD = 0x0940;
1227 pub const META_DIBSTRETCHBLT: ::WORD = 0x0b41;
1228 pub const META_DIBCREATEPATTERNBRUSH: ::WORD = 0x0142;
1229 pub const META_STRETCHDIB: ::WORD = 0x0f43;
1230 pub const META_EXTFLOODFILL: ::WORD = 0x0548;
1231 pub const META_SETLAYOUT: ::WORD = 0x0149;
1232 pub const META_DELETEOBJECT: ::WORD = 0x01f0;
1233 pub const META_CREATEPALETTE: ::WORD = 0x00f7;
1234 pub const META_CREATEPATTERNBRUSH: ::WORD = 0x01F9;
1235 pub const META_CREATEPENINDIRECT: ::WORD = 0x02FA;
1236 pub const META_CREATEFONTINDIRECT: ::WORD = 0x02FB;
1237 pub const META_CREATEBRUSHINDIRECT: ::WORD = 0x02FC;
1238 pub const META_CREATEREGION: ::WORD = 0x06FF;
1239