1 module win32.wingdi;
2
3 // Translated from Microsoft Platform SDK August 2001 Edition
4 // by Y.Tomino (demoonlit@inter7.jp)
5
6 import win32.windef;
7
8 // #ifndef _WINGDI_
9 // #define _WINGDI_
10
11 // #ifdef _MAC
12 // #...
13 // #endif
14
15 // #if !defined(_GDI32_)
16 // #define WINGDIAPI DECLSPEC_IMPORT
17 // #else
18 // #...
19 // #endif
20
21 // #if !defined(_SPOOL32_)
22 // #define WINSPOOLAPI DECLSPEC_IMPORT
23 // #else
24 // #...
25 // #endif
26
27 // #ifdef __cplusplus
28 // extern "C" {
29 // #endif
30
31 // #ifndef WINVER
32 // #...
33 // #endif /* WINVER */
34
35 // #ifndef NOGDI
36
37 // #ifndef NORASTEROPS
38
39 enum : uint { R2_BLACK = 1 }
40 enum : uint { R2_NOTMERGEPEN = 2 }
41 enum : uint { R2_MASKNOTPEN = 3 }
42 enum : uint { R2_NOTCOPYPEN = 4 }
43 enum : uint { R2_MASKPENNOT = 5 }
44 enum : uint { R2_NOT = 6 }
45 enum : uint { R2_XORPEN = 7 }
46 enum : uint { R2_NOTMASKPEN = 8 }
47 enum : uint { R2_MASKPEN = 9 }
48 enum : uint { R2_NOTXORPEN = 10 }
49 enum : uint { R2_NOP = 11 }
50 enum : uint { R2_MERGENOTPEN = 12 }
51 enum : uint { R2_COPYPEN = 13 }
52 enum : uint { R2_MERGEPENNOT = 14 }
53 enum : uint { R2_MERGEPEN = 15 }
54 enum : uint { R2_WHITE = 16 }
55 enum : uint { R2_LAST = 16 }
56
57 enum : DWORD { SRCCOPY = 0x00CC0020 }
58 enum : DWORD { SRCPAINT = 0x00EE0086 }
59 enum : DWORD { SRCAND = 0x008800C6 }
60 enum : DWORD { SRCINVERT = 0x00660046 }
61 enum : DWORD { SRCERASE = 0x00440328 }
62 enum : DWORD { NOTSRCCOPY = 0x00330008 }
63 enum : DWORD { NOTSRCERASE = 0x001100A6 }
64 enum : DWORD { MERGECOPY = 0x00C000CA }
65 enum : DWORD { MERGEPAINT = 0x00BB0226 }
66 enum : DWORD { PATCOPY = 0x00F00021 }
67 enum : DWORD { PATPAINT = 0x00FB0A09 }
68 enum : DWORD { PATINVERT = 0x005A0049 }
69 enum : DWORD { DSTINVERT = 0x00550009 }
70 enum : DWORD { BLACKNESS = 0x00000042 }
71 enum : DWORD { WHITENESS = 0x00FF0062 }
72 // #if(WINVER >= 0x0500)
73
74 enum : DWORD { NOMIRRORBITMAP = 0x80000000 }
75 enum : DWORD { CAPTUREBLT = 0x40000000 }
76 // #endif /* WINVER >= 0x0500 */
77
78 DWORD MAKEROP4(DWORD fore, DWORD back){ return ((back << 8) & 0xFF000000) | fore; }
79
80 // #endif /* NORASTEROPS */
81
82 enum : uint { GDI_ERROR = 0xFFFFFFFF }
83 const HANDLE HGDI_ERROR = cast(HANDLE)(0xFFFFFFFFL);
84
85 enum : uint { ERROR = 0 }
86 enum : uint { NULLREGION = 1 }
87 enum : uint { SIMPLEREGION = 2 }
88 enum : uint { COMPLEXREGION = 3 }
89 alias ERROR RGN_ERROR;
90
91 enum : uint { RGN_AND = 1 }
92 enum : uint { RGN_OR = 2 }
93 enum : uint { RGN_XOR = 3 }
94 enum : uint { RGN_DIFF = 4 }
95 enum : uint { RGN_COPY = 5 }
96 alias RGN_AND RGN_MIN;
97 alias RGN_COPY RGN_MAX;
98
99 enum : uint { BLACKONWHITE = 1 }
100 enum : uint { WHITEONBLACK = 2 }
101 enum : uint { COLORONCOLOR = 3 }
102 enum : uint { HALFTONE = 4 }
103 enum : uint { MAXSTRETCHBLTMODE = 4 }
104
105 // #if(WINVER >= 0x0400)
106
107 alias BLACKONWHITE STRETCH_ANDSCANS;
108 alias WHITEONBLACK STRETCH_ORSCANS;
109 alias COLORONCOLOR STRETCH_DELETESCANS;
110 alias HALFTONE STRETCH_HALFTONE;
111 // #endif /* WINVER >= 0x0400 */
112
113 enum : uint { ALTERNATE = 1 }
114 enum : uint { WINDING = 2 }
115 enum : uint { POLYFILL_LAST = 2 }
116
117 // #if(WINVER >= 0x0500)
118 enum : uint { LAYOUT_RTL = 0x00000001 }
119 enum : uint { LAYOUT_BTT = 0x00000002 }
120 enum : uint { LAYOUT_VBH = 0x00000004 }
121 enum : uint { LAYOUT_ORIENTATIONMASK = LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH }
122 enum : uint { LAYOUT_BITMAPORIENTATIONPRESERVED = 0x00000008 }
123 // #endif /* WINVER >= 0x0500 */
124
125 enum : uint { TA_NOUPDATECP = 0 }
126 enum : uint { TA_UPDATECP = 1 }
127
128 enum : uint { TA_LEFT = 0 }
129 enum : uint { TA_RIGHT = 2 }
130 enum : uint { TA_CENTER = 6 }
131
132 enum : uint { TA_TOP = 0 }
133 enum : uint { TA_BOTTOM = 8 }
134 enum : uint { TA_BASELINE = 24 }
135 // #if (WINVER >= 0x0400)
136 enum : uint { TA_RTLREADING = 256 }
137 enum : uint { TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING }
138 // #else
139 // #...
140 // #endif
141
142 alias TA_BASELINE VTA_BASELINE;
143 alias TA_BOTTOM VTA_LEFT;
144 alias TA_TOP VTA_RIGHT;
145 alias TA_CENTER VTA_CENTER;
146 alias TA_RIGHT VTA_BOTTOM;
147 alias TA_LEFT VTA_TOP;
148
149 enum : uint { ETO_OPAQUE = 0x0002 }
150 enum : uint { ETO_CLIPPED = 0x0004 }
151 // #if(WINVER >= 0x0400)
152 enum : uint { ETO_GLYPH_INDEX = 0x0010 }
153 enum : uint { ETO_RTLREADING = 0x0080 }
154 enum : uint { ETO_NUMERICSLOCAL = 0x0400 }
155 enum : uint { ETO_NUMERICSLATIN = 0x0800 }
156 enum : uint { ETO_IGNORELANGUAGE = 0x1000 }
157 // #endif /* WINVER >= 0x0400 */
158 // #if (_WIN32_WINNT >= 0x0500)
159 enum : uint { ETO_PDY = 0x2000 }
160 // #endif // (_WIN32_WINNT >= 0x0500)
161
162 enum : uint { ASPECT_FILTERING = 0x0001 }
163
164 enum : uint { DCB_RESET = 0x0001 }
165 enum : uint { DCB_ACCUMULATE = 0x0002 }
166 alias DCB_ACCUMULATE DCB_DIRTY;
167 enum : uint { DCB_SET = DCB_RESET | DCB_ACCUMULATE }
168 enum : uint { DCB_ENABLE = 0x0004 }
169 enum : uint { DCB_DISABLE = 0x0008 }
170
171 // #ifndef NOMETAFILE
172
173 enum : uint { META_SETBKCOLOR = 0x0201 }
174 enum : uint { META_SETBKMODE = 0x0102 }
175 enum : uint { META_SETMAPMODE = 0x0103 }
176 enum : uint { META_SETROP2 = 0x0104 }
177 enum : uint { META_SETRELABS = 0x0105 }
178 enum : uint { META_SETPOLYFILLMODE = 0x0106 }
179 enum : uint { META_SETSTRETCHBLTMODE = 0x0107 }
180 enum : uint { META_SETTEXTCHAREXTRA = 0x0108 }
181 enum : uint { META_SETTEXTCOLOR = 0x0209 }
182 enum : uint { META_SETTEXTJUSTIFICATION = 0x020A }
183 enum : uint { META_SETWINDOWORG = 0x020B }
184 enum : uint { META_SETWINDOWEXT = 0x020C }
185 enum : uint { META_SETVIEWPORTORG = 0x020D }
186 enum : uint { META_SETVIEWPORTEXT = 0x020E }
187 enum : uint { META_OFFSETWINDOWORG = 0x020F }
188 enum : uint { META_SCALEWINDOWEXT = 0x0410 }
189 enum : uint { META_OFFSETVIEWPORTORG = 0x0211 }
190 enum : uint { META_SCALEVIEWPORTEXT = 0x0412 }
191 enum : uint { META_LINETO = 0x0213 }
192 enum : uint { META_MOVETO = 0x0214 }
193 enum : uint { META_EXCLUDECLIPRECT = 0x0415 }
194 enum : uint { META_INTERSECTCLIPRECT = 0x0416 }
195 enum : uint { META_ARC = 0x0817 }
196 enum : uint { META_ELLIPSE = 0x0418 }
197 enum : uint { META_FLOODFILL = 0x0419 }
198 enum : uint { META_PIE = 0x081A }
199 enum : uint { META_RECTANGLE = 0x041B }
200 enum : uint { META_ROUNDRECT = 0x061C }
201 enum : uint { META_PATBLT = 0x061D }
202 enum : uint { META_SAVEDC = 0x001E }
203 enum : uint { META_SETPIXEL = 0x041F }
204 enum : uint { META_OFFSETCLIPRGN = 0x0220 }
205 enum : uint { META_TEXTOUT = 0x0521 }
206 enum : uint { META_BITBLT = 0x0922 }
207 enum : uint { META_STRETCHBLT = 0x0B23 }
208 enum : uint { META_POLYGON = 0x0324 }
209 enum : uint { META_POLYLINE = 0x0325 }
210 enum : uint { META_ESCAPE = 0x0626 }
211 enum : uint { META_RESTOREDC = 0x0127 }
212 enum : uint { META_FILLREGION = 0x0228 }
213 enum : uint { META_FRAMEREGION = 0x0429 }
214 enum : uint { META_INVERTREGION = 0x012A }
215 enum : uint { META_PAINTREGION = 0x012B }
216 enum : uint { META_SELECTCLIPREGION = 0x012C }
217 enum : uint { META_SELECTOBJECT = 0x012D }
218 enum : uint { META_SETTEXTALIGN = 0x012E }
219 enum : uint { META_CHORD = 0x0830 }
220 enum : uint { META_SETMAPPERFLAGS = 0x0231 }
221 enum : uint { META_EXTTEXTOUT = 0x0a32 }
222 enum : uint { META_SETDIBTODEV = 0x0d33 }
223 enum : uint { META_SELECTPALETTE = 0x0234 }
224 enum : uint { META_REALIZEPALETTE = 0x0035 }
225 enum : uint { META_ANIMATEPALETTE = 0x0436 }
226 enum : uint { META_SETPALENTRIES = 0x0037 }
227 enum : uint { META_POLYPOLYGON = 0x0538 }
228 enum : uint { META_RESIZEPALETTE = 0x0139 }
229 enum : uint { META_DIBBITBLT = 0x0940 }
230 enum : uint { META_DIBSTRETCHBLT = 0x0b41 }
231 enum : uint { META_DIBCREATEPATTERNBRUSH = 0x0142 }
232 enum : uint { META_STRETCHDIB = 0x0f43 }
233 enum : uint { META_EXTFLOODFILL = 0x0548 }
234 // #if(WINVER >= 0x0500)
235 enum : uint { META_SETLAYOUT = 0x0149 }
236 // #endif /* WINVER >= 0x0500 */
237 enum : uint { META_DELETEOBJECT = 0x01f0 }
238 enum : uint { META_CREATEPALETTE = 0x00f7 }
239 enum : uint { META_CREATEPATTERNBRUSH = 0x01F9 }
240 enum : uint { META_CREATEPENINDIRECT = 0x02FA }
241 enum : uint { META_CREATEFONTINDIRECT = 0x02FB }
242 enum : uint { META_CREATEBRUSHINDIRECT = 0x02FC }
243 enum : uint { META_CREATEREGION = 0x06FF }
244
245 // #if(WINVER >= 0x0400)
246 struct _DRAWPATRECT {
247 POINT ptPosition;
248 POINT ptSize;
249 WORD wStyle;
250 WORD wPattern;
251 }
252 alias _DRAWPATRECT DRAWPATRECT;
253 alias _DRAWPATRECT* PDRAWPATRECT;
254
255 // #endif /* WINVER >= 0x0400 */
256
257 // #endif /* NOMETAFILE */
258
259 enum : uint { NEWFRAME = 1 }
260 enum : uint { ABORTDOC = 2 }
261 enum : uint { NEXTBAND = 3 }
262 enum : uint { SETCOLORTABLE = 4 }
263 enum : uint { GETCOLORTABLE = 5 }
264 enum : uint { FLUSHOUTPUT = 6 }
265 enum : uint { DRAFTMODE = 7 }
266 enum : uint { QUERYESCSUPPORT = 8 }
267 enum : uint { SETABORTPROC = 9 }
268 enum : uint { STARTDOC = 10 }
269 enum : uint { ENDDOC = 11 }
270 enum : uint { GETPHYSPAGESIZE = 12 }
271 enum : uint { GETPRINTINGOFFSET = 13 }
272 enum : uint { GETSCALINGFACTOR = 14 }
273 enum : uint { MFCOMMENT = 15 }
274 enum : uint { GETPENWIDTH = 16 }
275 enum : uint { SETCOPYCOUNT = 17 }
276 enum : uint { SELECTPAPERSOURCE = 18 }
277 enum : uint { DEVICEDATA = 19 }
278 enum : uint { PASSTHROUGH = 19 }
279 enum : uint { GETTECHNOLGY = 20 }
280 enum : uint { GETTECHNOLOGY = 20 }
281 enum : uint { SETLINECAP = 21 }
282 enum : uint { SETLINEJOIN = 22 }
283 enum : uint { SETMITERLIMIT = 23 }
284 enum : uint { BANDINFO = 24 }
285 enum : uint { DRAWPATTERNRECT = 25 }
286 enum : uint { GETVECTORPENSIZE = 26 }
287 enum : uint { GETVECTORBRUSHSIZE = 27 }
288 enum : uint { ENABLEDUPLEX = 28 }
289 enum : uint { GETSETPAPERBINS = 29 }
290 enum : uint { GETSETPRINTORIENT = 30 }
291 enum : uint { ENUMPAPERBINS = 31 }
292 enum : uint { SETDIBSCALING = 32 }
293 enum : uint { EPSPRINTING = 33 }
294 enum : uint { ENUMPAPERMETRICS = 34 }
295 enum : uint { GETSETPAPERMETRICS = 35 }
296 enum : uint { POSTSCRIPT_DATA = 37 }
297 enum : uint { POSTSCRIPT_IGNORE = 38 }
298 enum : uint { MOUSETRAILS = 39 }
299 enum : uint { GETDEVICEUNITS = 42 }
300
301 enum : uint { GETEXTENDEDTEXTMETRICS = 256 }
302 enum : uint { GETEXTENTTABLE = 257 }
303 enum : uint { GETPAIRKERNTABLE = 258 }
304 enum : uint { GETTRACKKERNTABLE = 259 }
305 enum : uint { EXTTEXTOUT = 512 }
306 enum : uint { GETFACENAME = 513 }
307 enum : uint { DOWNLOADFACE = 514 }
308 enum : uint { ENABLERELATIVEWIDTHS = 768 }
309 enum : uint { ENABLEPAIRKERNING = 769 }
310 enum : uint { SETKERNTRACK = 770 }
311 enum : uint { SETALLJUSTVALUES = 771 }
312 enum : uint { SETCHARSET = 772 }
313
314 enum : uint { STRETCHBLT = 2048 }
315 enum : uint { METAFILE_DRIVER = 2049 }
316 enum : uint { GETSETSCREENPARAMS = 3072 }
317 enum : uint { QUERYDIBSUPPORT = 3073 }
318 enum : uint { BEGIN_PATH = 4096 }
319 enum : uint { CLIP_TO_PATH = 4097 }
320 enum : uint { END_PATH = 4098 }
321 enum : uint { EXT_DEVICE_CAPS = 4099 }
322 enum : uint { RESTORE_CTM = 4100 }
323 enum : uint { SAVE_CTM = 4101 }
324 enum : uint { SET_ARC_DIRECTION = 4102 }
325 enum : uint { SET_BACKGROUND_COLOR = 4103 }
326 enum : uint { SET_POLY_MODE = 4104 }
327 enum : uint { SET_SCREEN_ANGLE = 4105 }
328 enum : uint { SET_SPREAD = 4106 }
329 enum : uint { TRANSFORM_CTM = 4107 }
330 enum : uint { SET_CLIP_BOX = 4108 }
331 enum : uint { SET_BOUNDS = 4109 }
332 enum : uint { SET_MIRROR_MODE = 4110 }
333 enum : uint { OPENCHANNEL = 4110 }
334 enum : uint { DOWNLOADHEADER = 4111 }
335 enum : uint { CLOSECHANNEL = 4112 }
336 enum : uint { POSTSCRIPT_PASSTHROUGH = 4115 }
337 enum : uint { ENCAPSULATED_POSTSCRIPT = 4116 }
338
339 enum : uint { POSTSCRIPT_IDENTIFY = 4117 }
340 enum : uint { POSTSCRIPT_INJECTION = 4118 }
341
342 enum : uint { CHECKJPEGFORMAT = 4119 }
343 enum : uint { CHECKPNGFORMAT = 4120 }
344
345 enum : uint { GET_PS_FEATURESETTING = 4121 }
346
347 enum : uint { SPCLPASSTHROUGH2 = 4568 }
348
349 enum : uint { PSIDENT_GDICENTRIC = 0 }
350 enum : uint { PSIDENT_PSCENTRIC = 1 }
351
352 struct _PSINJECTDATA {
353
354 DWORD DataBytes;
355 WORD InjectionPoint;
356 WORD PageNumber;
357
358 }
359 alias _PSINJECTDATA PSINJECTDATA;
360 alias _PSINJECTDATA* PPSINJECTDATA;
361
362 enum : uint { PSINJECT_BEGINSTREAM = 1 }
363 enum : uint { PSINJECT_PSADOBE = 2 }
364 enum : uint { PSINJECT_PAGESATEND = 3 }
365 enum : uint { PSINJECT_PAGES = 4 }
366
367 enum : uint { PSINJECT_DOCNEEDEDRES = 5 }
368 enum : uint { PSINJECT_DOCSUPPLIEDRES = 6 }
369 enum : uint { PSINJECT_PAGEORDER = 7 }
370 enum : uint { PSINJECT_ORIENTATION = 8 }
371 enum : uint { PSINJECT_BOUNDINGBOX = 9 }
372 enum : uint { PSINJECT_DOCUMENTPROCESSCOLORS = 10 }
373
374 enum : uint { PSINJECT_COMMENTS = 11 }
375 enum : uint { PSINJECT_BEGINDEFAULTS = 12 }
376 enum : uint { PSINJECT_ENDDEFAULTS = 13 }
377 enum : uint { PSINJECT_BEGINPROLOG = 14 }
378 enum : uint { PSINJECT_ENDPROLOG = 15 }
379 enum : uint { PSINJECT_BEGINSETUP = 16 }
380 enum : uint { PSINJECT_ENDSETUP = 17 }
381 enum : uint { PSINJECT_TRAILER = 18 }
382 enum : uint { PSINJECT_EOF = 19 }
383 enum : uint { PSINJECT_ENDSTREAM = 20 }
384 enum : uint { PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21 }
385
386 enum : uint { PSINJECT_PAGENUMBER = 100 }
387 enum : uint { PSINJECT_BEGINPAGESETUP = 101 }
388 enum : uint { PSINJECT_ENDPAGESETUP = 102 }
389 enum : uint { PSINJECT_PAGETRAILER = 103 }
390 enum : uint { PSINJECT_PLATECOLOR = 104 }
391
392 enum : uint { PSINJECT_SHOWPAGE = 105 }
393 enum : uint { PSINJECT_PAGEBBOX = 106 }
394 enum : uint { PSINJECT_ENDPAGECOMMENTS = 107 }
395
396 enum : uint { PSINJECT_VMSAVE = 200 }
397 enum : uint { PSINJECT_VMRESTORE = 201 }
398
399 enum : uint { FEATURESETTING_NUP = 0 }
400 enum : uint { FEATURESETTING_OUTPUT = 1 }
401 enum : uint { FEATURESETTING_PSLEVEL = 2 }
402 enum : uint { FEATURESETTING_CUSTPAPER = 3 }
403 enum : uint { FEATURESETTING_MIRROR = 4 }
404 enum : uint { FEATURESETTING_NEGATIVE = 5 }
405 enum : uint { FEATURESETTING_PROTOCOL = 6 }
406
407 enum : uint { FEATURESETTING_PRIVATE_BEGIN = 0x1000 }
408 enum : uint { FEATURESETTING_PRIVATE_END = 0x1FFF }
409
410 struct _PSFEATURE_OUTPUT {
411
412 BOOL bPageIndependent;
413 BOOL bSetPageDevice;
414 }
415 alias _PSFEATURE_OUTPUT PSFEATURE_OUTPUT;
416 alias _PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT;
417
418 struct _PSFEATURE_CUSTPAPER {
419
420 LONG lOrientation;
421 LONG lWidth;
422 LONG lHeight;
423 LONG lWidthOffset;
424 LONG lHeightOffset;
425 }
426 alias _PSFEATURE_CUSTPAPER PSFEATURE_CUSTPAPER;
427 alias _PSFEATURE_CUSTPAPER* PPSFEATURE_CUSTPAPER;
428
429 enum : uint { PSPROTOCOL_ASCII = 0 }
430 enum : uint { PSPROTOCOL_BCP = 1 }
431 enum : uint { PSPROTOCOL_TBCP = 2 }
432 enum : uint { PSPROTOCOL_BINARY = 3 }
433
434 enum : uint { QDI_SETDIBITS = 1 }
435 enum : uint { QDI_GETDIBITS = 2 }
436 enum : uint { QDI_DIBTOSCREEN = 4 }
437 enum : uint { QDI_STRETCHDIB = 8 }
438
439 enum : uint { SP_NOTREPORTED = 0x4000 }
440 enum { SP_ERROR = -1 }
441 enum { SP_APPABORT = -2 }
442 enum { SP_USERABORT = -3 }
443 enum { SP_OUTOFDISK = -4 }
444 enum { SP_OUTOFMEMORY = -5 }
445
446 enum : uint { PR_JOBSTATUS = 0x0000 }
447
448 enum : uint { OBJ_PEN = 1 }
449 enum : uint { OBJ_BRUSH = 2 }
450 enum : uint { OBJ_DC = 3 }
451 enum : uint { OBJ_METADC = 4 }
452 enum : uint { OBJ_PAL = 5 }
453 enum : uint { OBJ_FONT = 6 }
454 enum : uint { OBJ_BITMAP = 7 }
455 enum : uint { OBJ_REGION = 8 }
456 enum : uint { OBJ_METAFILE = 9 }
457 enum : uint { OBJ_MEMDC = 10 }
458 enum : uint { OBJ_EXTPEN = 11 }
459 enum : uint { OBJ_ENHMETADC = 12 }
460 enum : uint { OBJ_ENHMETAFILE = 13 }
461 enum : uint { OBJ_COLORSPACE = 14 }
462
463 enum : uint { MWT_IDENTITY = 1 }
464 enum : uint { MWT_LEFTMULTIPLY = 2 }
465 enum : uint { MWT_RIGHTMULTIPLY = 3 }
466
467 alias MWT_IDENTITY MWT_MIN;
468 alias MWT_RIGHTMULTIPLY MWT_MAX;
469
470 // #define _XFORM_
471 struct tagXFORM {
472 FLOAT eM11;
473 FLOAT eM12;
474 FLOAT eM21;
475 FLOAT eM22;
476 FLOAT eDx;
477 FLOAT eDy;
478 }
479 alias tagXFORM XFORM;
480 alias tagXFORM* PXFORM;
481 alias tagXFORM* LPXFORM;
482
483 struct tagBITMAP {
484 LONG bmType;
485 LONG bmWidth;
486 LONG bmHeight;
487 LONG bmWidthBytes;
488 WORD bmPlanes;
489 WORD bmBitsPixel;
490 LPVOID bmBits;
491 }
492 alias tagBITMAP BITMAP;
493 alias tagBITMAP* PBITMAP;
494 alias tagBITMAP* NPBITMAP;
495 alias tagBITMAP* LPBITMAP;
496
497 align(1):
498 struct tagRGBTRIPLE {
499 BYTE rgbtBlue;
500 BYTE rgbtGreen;
501 BYTE rgbtRed;
502 }
503 alias tagRGBTRIPLE RGBTRIPLE;
504
505 align:
506
507 struct tagRGBQUAD {
508 BYTE rgbBlue;
509 BYTE rgbGreen;
510 BYTE rgbRed;
511 BYTE rgbReserved;
512 }
513 alias tagRGBQUAD RGBQUAD;
514
515 alias RGBQUAD* LPRGBQUAD;
516
517 // #if(WINVER >= 0x0400)
518
519 enum : uint { CS_ENABLE = 0x00000001 }
520 enum : uint { CS_DISABLE = 0x00000002 }
521 enum : uint { CS_DELETE_TRANSFORM = 0x00000003 }
522
523 // #define LCS_SIGNATURE 'PSOC'
524
525 // #define LCS_sRGB 'sRGB'
526 // #define LCS_WINDOWS_COLOR_SPACE 'Win '
527
528 alias LONG LCSCSTYPE;
529 enum : uint { LCS_CALIBRATED_RGB = 0x00000000 }
530
531 alias LONG LCSGAMUTMATCH;
532 enum : uint { LCS_GM_BUSINESS = 0x00000001 }
533 enum : uint { LCS_GM_GRAPHICS = 0x00000002 }
534 enum : uint { LCS_GM_IMAGES = 0x00000004 }
535 enum : uint { LCS_GM_ABS_COLORIMETRIC = 0x00000008 }
536
537 enum : uint { CM_OUT_OF_GAMUT = 255 }
538 enum : uint { CM_IN_GAMUT = 0 }
539
540 enum : uint { ICM_ADDPROFILE = 1 }
541 enum : uint { ICM_DELETEPROFILE = 2 }
542 enum : uint { ICM_QUERYPROFILE = 3 }
543 enum : uint { ICM_SETDEFAULTPROFILE = 4 }
544 enum : uint { ICM_REGISTERICMATCHER = 5 }
545 enum : uint { ICM_UNREGISTERICMATCHER = 6 }
546 enum : uint { ICM_QUERYMATCH = 7 }
547
548 BYTE GetKValue(DWORD cmyk){ return cast(BYTE)cmyk; }
549 BYTE GetYValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 8); }
550 BYTE GetMValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 16); }
551 BYTE GetCValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 24); }
552
553 DWORD CMYK(BYTE c, BYTE m, BYTE y, BYTE k){ return (cast(COLORREF)(((cast(BYTE)(k)|(cast(WORD)(cast(BYTE)(y))<<8))|((cast(DWORD)cast(BYTE)(m))<<16))|((cast(DWORD)cast(BYTE)(c))<<24))); }
554
555 alias int FXPT16DOT16;
556 alias int* LPFXPT16DOT16;
557 alias int FXPT2DOT30;
558 alias int* LPFXPT2DOT30;
559
560 struct tagCIEXYZ {
561 FXPT2DOT30 ciexyzX;
562 FXPT2DOT30 ciexyzY;
563 FXPT2DOT30 ciexyzZ;
564 }
565 alias tagCIEXYZ CIEXYZ;
566
567 alias CIEXYZ* LPCIEXYZ;
568
569 struct tagICEXYZTRIPLE {
570 CIEXYZ ciexyzRed;
571 CIEXYZ ciexyzGreen;
572 CIEXYZ ciexyzBlue;
573 }
574 alias tagICEXYZTRIPLE CIEXYZTRIPLE;
575
576 alias CIEXYZTRIPLE* LPCIEXYZTRIPLE;
577
578 struct tagLOGCOLORSPACEA {
579 DWORD lcsSignature;
580 DWORD lcsVersion;
581 DWORD lcsSize;
582 LCSCSTYPE lcsCSType;
583 LCSGAMUTMATCH lcsIntent;
584 CIEXYZTRIPLE lcsEndpoints;
585 DWORD lcsGammaRed;
586 DWORD lcsGammaGreen;
587 DWORD lcsGammaBlue;
588 CHAR lcsFilename[MAX_PATH];
589 }
590 alias tagLOGCOLORSPACEA LOGCOLORSPACEA;
591 alias tagLOGCOLORSPACEA* LPLOGCOLORSPACEA;
592
593 struct tagLOGCOLORSPACEW {
594 DWORD lcsSignature;
595 DWORD lcsVersion;
596 DWORD lcsSize;
597 LCSCSTYPE lcsCSType;
598 LCSGAMUTMATCH lcsIntent;
599 CIEXYZTRIPLE lcsEndpoints;
600 DWORD lcsGammaRed;
601 DWORD lcsGammaGreen;
602 DWORD lcsGammaBlue;
603 WCHAR lcsFilename[MAX_PATH];
604 }
605 alias tagLOGCOLORSPACEW LOGCOLORSPACEW;
606 alias tagLOGCOLORSPACEW* LPLOGCOLORSPACEW;
607
608 // #ifdef UNICODE
609 alias LOGCOLORSPACEW LOGCOLORSPACE;
610 alias LPLOGCOLORSPACEW LPLOGCOLORSPACE;
611 // #else
612 // ...
613 // #endif // UNICODE
614
615 // #endif /* WINVER >= 0x0400 */
616
617 struct tagBITMAPCOREHEADER {
618 DWORD bcSize;
619 WORD bcWidth;
620 WORD bcHeight;
621 WORD bcPlanes;
622 WORD bcBitCount;
623 }
624 alias tagBITMAPCOREHEADER BITMAPCOREHEADER;
625 alias tagBITMAPCOREHEADER* LPBITMAPCOREHEADER;
626 alias tagBITMAPCOREHEADER* PBITMAPCOREHEADER;
627
628 struct tagBITMAPINFOHEADER {
629 DWORD biSize;
630 LONG biWidth;
631 LONG biHeight;
632 WORD biPlanes;
633 WORD biBitCount;
634 DWORD biCompression;
635 DWORD biSizeImage;
636 LONG biXPelsPerMeter;
637 LONG biYPelsPerMeter;
638 DWORD biClrUsed;
639 DWORD biClrImportant;
640 }
641 alias tagBITMAPINFOHEADER BITMAPINFOHEADER;
642 alias tagBITMAPINFOHEADER* LPBITMAPINFOHEADER;
643 alias tagBITMAPINFOHEADER* PBITMAPINFOHEADER;
644
645 // #if(WINVER >= 0x0400)
646 struct _0 {
647 DWORD bV4Size;
648 LONG bV4Width;
649 LONG bV4Height;
650 WORD bV4Planes;
651 WORD bV4BitCount;
652 DWORD bV4V4Compression;
653 DWORD bV4SizeImage;
654 LONG bV4XPelsPerMeter;
655 LONG bV4YPelsPerMeter;
656 DWORD bV4ClrUsed;
657 DWORD bV4ClrImportant;
658 DWORD bV4RedMask;
659 DWORD bV4GreenMask;
660 DWORD bV4BlueMask;
661 DWORD bV4AlphaMask;
662 DWORD bV4CSType;
663 CIEXYZTRIPLE bV4Endpoints;
664 DWORD bV4GammaRed;
665 DWORD bV4GammaGreen;
666 DWORD bV4GammaBlue;
667 }
668 alias _0 BITMAPV4HEADER;
669 alias _0* LPBITMAPV4HEADER;
670 alias _0* PBITMAPV4HEADER;
671
672 // #endif /* WINVER >= 0x0400 */
673
674 // #if (WINVER >= 0x0500)
675 struct _1 {
676 DWORD bV5Size;
677 LONG bV5Width;
678 LONG bV5Height;
679 WORD bV5Planes;
680 WORD bV5BitCount;
681 DWORD bV5Compression;
682 DWORD bV5SizeImage;
683 LONG bV5XPelsPerMeter;
684 LONG bV5YPelsPerMeter;
685 DWORD bV5ClrUsed;
686 DWORD bV5ClrImportant;
687 DWORD bV5RedMask;
688 DWORD bV5GreenMask;
689 DWORD bV5BlueMask;
690 DWORD bV5AlphaMask;
691 DWORD bV5CSType;
692 CIEXYZTRIPLE bV5Endpoints;
693 DWORD bV5GammaRed;
694 DWORD bV5GammaGreen;
695 DWORD bV5GammaBlue;
696 DWORD bV5Intent;
697 DWORD bV5ProfileData;
698 DWORD bV5ProfileSize;
699 DWORD bV5Reserved;
700 }
701 alias _1 BITMAPV5HEADER;
702 alias _1* LPBITMAPV5HEADER;
703 alias _1* PBITMAPV5HEADER;
704
705 // #define PROFILE_LINKED 'LINK'
706 // #define PROFILE_EMBEDDED 'MBED'
707 // #endif
708
709 enum : uint { BI_RGB = 0 }
710 enum : uint { BI_RLE8 = 1 }
711 enum : uint { BI_RLE4 = 2 }
712 enum : uint { BI_BITFIELDS = 3 }
713 enum : uint { BI_JPEG = 4 }
714 enum : uint { BI_PNG = 5 }
715 // #if (_WIN32_WINNT >= 0x0400)
716 // #endif
717
718 struct tagBITMAPINFO {
719 BITMAPINFOHEADER bmiHeader;
720 RGBQUAD bmiColors[1];
721 }
722 alias tagBITMAPINFO BITMAPINFO;
723 alias tagBITMAPINFO* LPBITMAPINFO;
724 alias tagBITMAPINFO* PBITMAPINFO;
725
726 struct tagBITMAPCOREINFO {
727 BITMAPCOREHEADER bmciHeader;
728 RGBTRIPLE bmciColors[1];
729 }
730 alias tagBITMAPCOREINFO BITMAPCOREINFO;
731 alias tagBITMAPCOREINFO* LPBITMAPCOREINFO;
732 alias tagBITMAPCOREINFO* PBITMAPCOREINFO;
733
734 align(2):
735 struct tagBITMAPFILEHEADER {
736 WORD bfType;
737 DWORD bfSize;
738 WORD bfReserved1;
739 WORD bfReserved2;
740 DWORD bfOffBits;
741 }
742 alias tagBITMAPFILEHEADER BITMAPFILEHEADER;
743 alias tagBITMAPFILEHEADER* LPBITMAPFILEHEADER;
744 alias tagBITMAPFILEHEADER* PBITMAPFILEHEADER;
745
746 align:
747
748 // #define MAKEPOINTS(l) (*((POINTS FAR *)&(l)))
749
750 // #if(WINVER >= 0x0400)
751 // #ifndef NOFONTSIG
752 struct tagFONTSIGNATURE {
753 DWORD fsUsb[4];
754 DWORD fsCsb[2];
755 }
756 alias tagFONTSIGNATURE FONTSIGNATURE;
757 alias tagFONTSIGNATURE* PFONTSIGNATURE;
758 alias tagFONTSIGNATURE* LPFONTSIGNATURE;
759
760 struct tagCHARSETINFO {
761 UINT ciCharset;
762 UINT ciACP;
763 FONTSIGNATURE fs;
764 }
765 alias tagCHARSETINFO CHARSETINFO;
766 alias tagCHARSETINFO* PCHARSETINFO;
767 alias tagCHARSETINFO* NPCHARSETINFO;
768 alias tagCHARSETINFO* LPCHARSETINFO;
769
770 enum : uint { TCI_SRCCHARSET = 1 }
771 enum : uint { TCI_SRCCODEPAGE = 2 }
772 enum : uint { TCI_SRCFONTSIG = 3 }
773
774 struct tagLOCALESIGNATURE {
775 DWORD lsUsb[4];
776 DWORD lsCsbDefault[2];
777 DWORD lsCsbSupported[2];
778 }
779 alias tagLOCALESIGNATURE LOCALESIGNATURE;
780 alias tagLOCALESIGNATURE* PLOCALESIGNATURE;
781 alias tagLOCALESIGNATURE* LPLOCALESIGNATURE;
782
783 // #endif
784 // #endif /* WINVER >= 0x0400 */
785
786 // #ifndef NOMETAFILE
787
788 struct tagHANDLETABLE {
789 HGDIOBJ objectHandle[1];
790 }
791 alias tagHANDLETABLE HANDLETABLE;
792 alias tagHANDLETABLE* PHANDLETABLE;
793 alias tagHANDLETABLE* LPHANDLETABLE;
794
795 struct tagMETARECORD {
796 DWORD rdSize;
797 WORD rdFunction;
798 WORD rdParm[1];
799 }
800 alias tagMETARECORD METARECORD;
801
802 alias tagMETARECORD* PMETARECORD;
803 alias tagMETARECORD* LPMETARECORD;
804
805 struct tagMETAFILEPICT {
806 LONG mm;
807 LONG xExt;
808 LONG yExt;
809 HMETAFILE hMF;
810 }
811 alias tagMETAFILEPICT METAFILEPICT;
812 alias tagMETAFILEPICT* LPMETAFILEPICT;
813
814 align(2):
815 struct tagMETAHEADER {
816 WORD mtType;
817 WORD mtHeaderSize;
818 WORD mtVersion;
819 DWORD mtSize;
820 WORD mtNoObjects;
821 DWORD mtMaxRecord;
822 WORD mtNoParameters;
823 }
824 alias tagMETAHEADER METAHEADER;
825
826 alias tagMETAHEADER* PMETAHEADER;
827 alias tagMETAHEADER* LPMETAHEADER;
828
829 align:
830
831 struct tagENHMETARECORD {
832 DWORD iType;
833 DWORD nSize;
834 DWORD dParm[1];
835 }
836 alias tagENHMETARECORD ENHMETARECORD;
837 alias tagENHMETARECORD* PENHMETARECORD;
838 alias tagENHMETARECORD* LPENHMETARECORD;
839
840 struct tagENHMETAHEADER {
841 DWORD iType;
842 DWORD nSize;
843
844 RECTL rclBounds;
845 RECTL rclFrame;
846 DWORD dSignature;
847 DWORD nVersion;
848 DWORD nBytes;
849 DWORD nRecords;
850 WORD nHandles;
851
852 WORD sReserved;
853 DWORD nDescription;
854
855 DWORD offDescription;
856
857 DWORD nPalEntries;
858 SIZEL szlDevice;
859 SIZEL szlMillimeters;
860 // #if(WINVER >= 0x0400)
861 DWORD cbPixelFormat;
862
863 DWORD offPixelFormat;
864
865 DWORD bOpenGL;
866
867 // #endif /* WINVER >= 0x0400 */
868 // #if(WINVER >= 0x0500)
869 SIZEL szlMicrometers;
870 // #endif /* WINVER >= 0x0500 */
871
872 }
873 alias tagENHMETAHEADER ENHMETAHEADER;
874 alias tagENHMETAHEADER* PENHMETAHEADER;
875 alias tagENHMETAHEADER* LPENHMETAHEADER;
876
877 // #endif /* NOMETAFILE */
878
879 // #ifndef NOTEXTMETRIC
880
881 enum : uint { TMPF_FIXED_PITCH = 0x01 }
882 enum : uint { TMPF_VECTOR = 0x02 }
883 enum : uint { TMPF_DEVICE = 0x08 }
884 enum : uint { TMPF_TRUETYPE = 0x04 }
885
886 // #ifdef UNICODE
887 alias WCHAR BCHAR;
888 // #else
889 // ...
890 // #endif
891
892 // #ifndef _TEXTMETRIC_DEFINED
893 // #define _TEXTMETRIC_DEFINED
894 struct tagTEXTMETRICA {
895 LONG tmHeight;
896 LONG tmAscent;
897 LONG tmDescent;
898 LONG tmInternalLeading;
899 LONG tmExternalLeading;
900 LONG tmAveCharWidth;
901 LONG tmMaxCharWidth;
902 LONG tmWeight;
903 LONG tmOverhang;
904 LONG tmDigitizedAspectX;
905 LONG tmDigitizedAspectY;
906 BYTE tmFirstChar;
907 BYTE tmLastChar;
908 BYTE tmDefaultChar;
909 BYTE tmBreakChar;
910 BYTE tmItalic;
911 BYTE tmUnderlined;
912 BYTE tmStruckOut;
913 BYTE tmPitchAndFamily;
914 BYTE tmCharSet;
915 }
916 alias tagTEXTMETRICA TEXTMETRICA;
917 alias tagTEXTMETRICA* PTEXTMETRICA;
918 alias tagTEXTMETRICA* NPTEXTMETRICA;
919 alias tagTEXTMETRICA* LPTEXTMETRICA;
920
921 struct tagTEXTMETRICW {
922 LONG tmHeight;
923 LONG tmAscent;
924 LONG tmDescent;
925 LONG tmInternalLeading;
926 LONG tmExternalLeading;
927 LONG tmAveCharWidth;
928 LONG tmMaxCharWidth;
929 LONG tmWeight;
930 LONG tmOverhang;
931 LONG tmDigitizedAspectX;
932 LONG tmDigitizedAspectY;
933 WCHAR tmFirstChar;
934 WCHAR tmLastChar;
935 WCHAR tmDefaultChar;
936 WCHAR tmBreakChar;
937 BYTE tmItalic;
938 BYTE tmUnderlined;
939 BYTE tmStruckOut;
940 BYTE tmPitchAndFamily;
941 BYTE tmCharSet;
942 }
943 alias tagTEXTMETRICW TEXTMETRICW;
944 alias tagTEXTMETRICW* PTEXTMETRICW;
945 alias tagTEXTMETRICW* NPTEXTMETRICW;
946 alias tagTEXTMETRICW* LPTEXTMETRICW;
947
948 // #ifdef UNICODE
949 alias TEXTMETRICW TEXTMETRIC;
950 alias PTEXTMETRICW PTEXTMETRIC;
951 alias NPTEXTMETRICW NPTEXTMETRIC;
952 alias LPTEXTMETRICW LPTEXTMETRIC;
953 // #else
954 // ...
955 // #endif // UNICODE
956 // #endif // !_TEXTMETRIC_DEFINED
957
958 enum : uint { NTM_REGULAR = 0x00000040 }
959 enum : uint { NTM_BOLD = 0x00000020 }
960 enum : uint { NTM_ITALIC = 0x00000001 }
961
962 enum : uint { NTM_NONNEGATIVE_AC = 0x00010000 }
963 enum : uint { NTM_PS_OPENTYPE = 0x00020000 }
964 enum : uint { NTM_TT_OPENTYPE = 0x00040000 }
965 enum : uint { NTM_MULTIPLEMASTER = 0x00080000 }
966 enum : uint { NTM_TYPE1 = 0x00100000 }
967 enum : uint { NTM_DSIG = 0x00200000 }
968
969 align(4):
970 struct tagNEWTEXTMETRICA {
971 LONG tmHeight;
972 LONG tmAscent;
973 LONG tmDescent;
974 LONG tmInternalLeading;
975 LONG tmExternalLeading;
976 LONG tmAveCharWidth;
977 LONG tmMaxCharWidth;
978 LONG tmWeight;
979 LONG tmOverhang;
980 LONG tmDigitizedAspectX;
981 LONG tmDigitizedAspectY;
982 BYTE tmFirstChar;
983 BYTE tmLastChar;
984 BYTE tmDefaultChar;
985 BYTE tmBreakChar;
986 BYTE tmItalic;
987 BYTE tmUnderlined;
988 BYTE tmStruckOut;
989 BYTE tmPitchAndFamily;
990 BYTE tmCharSet;
991 DWORD ntmFlags;
992 UINT ntmSizeEM;
993 UINT ntmCellHeight;
994 UINT ntmAvgWidth;
995 }
996 alias tagNEWTEXTMETRICA NEWTEXTMETRICA;
997 alias tagNEWTEXTMETRICA* PNEWTEXTMETRICA;
998 alias tagNEWTEXTMETRICA* NPNEWTEXTMETRICA;
999 alias tagNEWTEXTMETRICA* LPNEWTEXTMETRICA;
1000
1001 struct tagNEWTEXTMETRICW {
1002 LONG tmHeight;
1003 LONG tmAscent;
1004 LONG tmDescent;
1005 LONG tmInternalLeading;
1006 LONG tmExternalLeading;
1007 LONG tmAveCharWidth;
1008 LONG tmMaxCharWidth;
1009 LONG tmWeight;
1010 LONG tmOverhang;
1011 LONG tmDigitizedAspectX;
1012 LONG tmDigitizedAspectY;
1013 WCHAR tmFirstChar;
1014 WCHAR tmLastChar;
1015 WCHAR tmDefaultChar;
1016 WCHAR tmBreakChar;
1017 BYTE tmItalic;
1018 BYTE tmUnderlined;
1019 BYTE tmStruckOut;
1020 BYTE tmPitchAndFamily;
1021 BYTE tmCharSet;
1022 DWORD ntmFlags;
1023 UINT ntmSizeEM;
1024 UINT ntmCellHeight;
1025 UINT ntmAvgWidth;
1026 }
1027 alias tagNEWTEXTMETRICW NEWTEXTMETRICW;
1028 alias tagNEWTEXTMETRICW* PNEWTEXTMETRICW;
1029 alias tagNEWTEXTMETRICW* NPNEWTEXTMETRICW;
1030 alias tagNEWTEXTMETRICW* LPNEWTEXTMETRICW;
1031
1032 // #ifdef UNICODE
1033 alias NEWTEXTMETRICW NEWTEXTMETRIC;
1034 alias PNEWTEXTMETRICW PNEWTEXTMETRIC;
1035 alias NPNEWTEXTMETRICW NPNEWTEXTMETRIC;
1036 alias LPNEWTEXTMETRICW LPNEWTEXTMETRIC;
1037 // #else
1038 // ...
1039 // #endif // UNICODE
1040 align:
1041
1042 // #if(WINVER >= 0x0400)
1043 struct tagNEWTEXTMETRICEXA {
1044 NEWTEXTMETRICA ntmTm;
1045 FONTSIGNATURE ntmFontSig;
1046 }
1047 alias tagNEWTEXTMETRICEXA NEWTEXTMETRICEXA;
1048
1049 struct tagNEWTEXTMETRICEXW {
1050 NEWTEXTMETRICW ntmTm;
1051 FONTSIGNATURE ntmFontSig;
1052 }
1053 alias tagNEWTEXTMETRICEXW NEWTEXTMETRICEXW;
1054
1055 // #ifdef UNICODE
1056 alias NEWTEXTMETRICEXW NEWTEXTMETRICEX;
1057 // #else
1058 // ...
1059 // #endif // UNICODE
1060 // #endif /* WINVER >= 0x0400 */
1061
1062 // #endif /* NOTEXTMETRIC */
1063
1064 struct tagPELARRAY {
1065 LONG paXCount;
1066 LONG paYCount;
1067 LONG paXExt;
1068 LONG paYExt;
1069 BYTE paRGBs;
1070 }
1071 alias tagPELARRAY PELARRAY;
1072 alias tagPELARRAY* PPELARRAY;
1073 alias tagPELARRAY* NPPELARRAY;
1074 alias tagPELARRAY* LPPELARRAY;
1075
1076 struct tagLOGBRUSH {
1077 UINT lbStyle;
1078 COLORREF lbColor;
1079 ULONG_PTR lbHatch;
1080 }
1081 alias tagLOGBRUSH LOGBRUSH;
1082 alias tagLOGBRUSH* PLOGBRUSH;
1083 alias tagLOGBRUSH* NPLOGBRUSH;
1084 alias tagLOGBRUSH* LPLOGBRUSH;
1085
1086 struct tagLOGBRUSH32 {
1087 UINT lbStyle;
1088 COLORREF lbColor;
1089 ULONG lbHatch;
1090 }
1091 alias tagLOGBRUSH32 LOGBRUSH32;
1092 alias tagLOGBRUSH32* PLOGBRUSH32;
1093 alias tagLOGBRUSH32* NPLOGBRUSH32;
1094 alias tagLOGBRUSH32* LPLOGBRUSH32;
1095
1096 alias LOGBRUSH PATTERN;
1097 alias PATTERN* PPATTERN;
1098 alias PATTERN* NPPATTERN;
1099 alias PATTERN* LPPATTERN;
1100
1101 struct tagLOGPEN {
1102 UINT lopnStyle;
1103 POINT lopnWidth;
1104 COLORREF lopnColor;
1105 }
1106 alias tagLOGPEN LOGPEN;
1107 alias tagLOGPEN* PLOGPEN;
1108 alias tagLOGPEN* NPLOGPEN;
1109 alias tagLOGPEN* LPLOGPEN;
1110
1111 struct tagEXTLOGPEN {
1112 DWORD elpPenStyle;
1113 DWORD elpWidth;
1114 UINT elpBrushStyle;
1115 COLORREF elpColor;
1116 ULONG_PTR elpHatch;
1117 DWORD elpNumEntries;
1118 DWORD elpStyleEntry[1];
1119 }
1120 alias tagEXTLOGPEN EXTLOGPEN;
1121 alias tagEXTLOGPEN* PEXTLOGPEN;
1122 alias tagEXTLOGPEN* NPEXTLOGPEN;
1123 alias tagEXTLOGPEN* LPEXTLOGPEN;
1124
1125 // #ifndef _PALETTEENTRY_DEFINED
1126 // #define _PALETTEENTRY_DEFINED
1127 struct tagPALETTEENTRY {
1128 BYTE peRed;
1129 BYTE peGreen;
1130 BYTE peBlue;
1131 BYTE peFlags;
1132 }
1133 alias tagPALETTEENTRY PALETTEENTRY;
1134 alias tagPALETTEENTRY* PPALETTEENTRY;
1135 alias tagPALETTEENTRY* LPPALETTEENTRY;
1136
1137 // #endif // !_PALETTEENTRY_DEFINED
1138
1139 // #ifndef _LOGPALETTE_DEFINED
1140 // #define _LOGPALETTE_DEFINED
1141
1142 struct tagLOGPALETTE {
1143 WORD palVersion;
1144 WORD palNumEntries;
1145 PALETTEENTRY palPalEntry[1];
1146 }
1147 alias tagLOGPALETTE LOGPALETTE;
1148 alias tagLOGPALETTE* PLOGPALETTE;
1149 alias tagLOGPALETTE* NPLOGPALETTE;
1150 alias tagLOGPALETTE* LPLOGPALETTE;
1151
1152 // #endif // !_LOGPALETTE_DEFINED
1153
1154 enum : uint { LF_FACESIZE = 32 }
1155
1156 struct tagLOGFONTA {
1157 LONG lfHeight;
1158 LONG lfWidth;
1159 LONG lfEscapement;
1160 LONG lfOrientation;
1161 LONG lfWeight;
1162 BYTE lfItalic;
1163 BYTE lfUnderline;
1164 BYTE lfStrikeOut;
1165 BYTE lfCharSet;
1166 BYTE lfOutPrecision;
1167 BYTE lfClipPrecision;
1168 BYTE lfQuality;
1169 BYTE lfPitchAndFamily;
1170 CHAR lfFaceName[LF_FACESIZE];
1171 }
1172 alias tagLOGFONTA LOGFONTA;
1173 alias tagLOGFONTA* PLOGFONTA;
1174 alias tagLOGFONTA* NPLOGFONTA;
1175 alias tagLOGFONTA* LPLOGFONTA;
1176
1177 struct tagLOGFONTW {
1178 LONG lfHeight;
1179 LONG lfWidth;
1180 LONG lfEscapement;
1181 LONG lfOrientation;
1182 LONG lfWeight;
1183 BYTE lfItalic;
1184 BYTE lfUnderline;
1185 BYTE lfStrikeOut;
1186 BYTE lfCharSet;
1187 BYTE lfOutPrecision;
1188 BYTE lfClipPrecision;
1189 BYTE lfQuality;
1190 BYTE lfPitchAndFamily;
1191 WCHAR lfFaceName[LF_FACESIZE];
1192 }
1193 alias tagLOGFONTW LOGFONTW;
1194 alias tagLOGFONTW* PLOGFONTW;
1195 alias tagLOGFONTW* NPLOGFONTW;
1196 alias tagLOGFONTW* LPLOGFONTW;
1197
1198 // #ifdef UNICODE
1199 alias LOGFONTW LOGFONT;
1200 alias PLOGFONTW PLOGFONT;
1201 alias NPLOGFONTW NPLOGFONT;
1202 alias LPLOGFONTW LPLOGFONT;
1203 // #else
1204 // ...
1205 // #endif // UNICODE
1206
1207 enum : uint { LF_FULLFACESIZE = 64 }
1208
1209 struct tagENUMLOGFONTA {
1210 LOGFONTA elfLogFont;
1211 BYTE elfFullName[LF_FULLFACESIZE];
1212 BYTE elfStyle[LF_FACESIZE];
1213 }
1214 alias tagENUMLOGFONTA ENUMLOGFONTA;
1215 alias tagENUMLOGFONTA* LPENUMLOGFONTA;
1216
1217 struct tagENUMLOGFONTW {
1218 LOGFONTW elfLogFont;
1219 WCHAR elfFullName[LF_FULLFACESIZE];
1220 WCHAR elfStyle[LF_FACESIZE];
1221 }
1222 alias tagENUMLOGFONTW ENUMLOGFONTW;
1223 alias tagENUMLOGFONTW* LPENUMLOGFONTW;
1224
1225 // #ifdef UNICODE
1226 alias ENUMLOGFONTW ENUMLOGFONT;
1227 alias LPENUMLOGFONTW LPENUMLOGFONT;
1228 // #else
1229 // ...
1230 // #endif // UNICODE
1231
1232 // #if(WINVER >= 0x0400)
1233 struct tagENUMLOGFONTEXA {
1234 LOGFONTA elfLogFont;
1235 BYTE elfFullName[LF_FULLFACESIZE];
1236 BYTE elfStyle[LF_FACESIZE];
1237 BYTE elfScript[LF_FACESIZE];
1238 }
1239 alias tagENUMLOGFONTEXA ENUMLOGFONTEXA;
1240 alias tagENUMLOGFONTEXA* LPENUMLOGFONTEXA;
1241
1242 struct tagENUMLOGFONTEXW {
1243 LOGFONTW elfLogFont;
1244 WCHAR elfFullName[LF_FULLFACESIZE];
1245 WCHAR elfStyle[LF_FACESIZE];
1246 WCHAR elfScript[LF_FACESIZE];
1247 }
1248 alias tagENUMLOGFONTEXW ENUMLOGFONTEXW;
1249 alias tagENUMLOGFONTEXW* LPENUMLOGFONTEXW;
1250
1251 // #ifdef UNICODE
1252 alias ENUMLOGFONTEXW ENUMLOGFONTEX;
1253 alias LPENUMLOGFONTEXW LPENUMLOGFONTEX;
1254 // #else
1255 // ...
1256 // #endif // UNICODE
1257 // #endif /* WINVER >= 0x0400 */
1258
1259 enum : uint { OUT_DEFAULT_PRECIS = 0 }
1260 enum : uint { OUT_STRING_PRECIS = 1 }
1261 enum : uint { OUT_CHARACTER_PRECIS = 2 }
1262 enum : uint { OUT_STROKE_PRECIS = 3 }
1263 enum : uint { OUT_TT_PRECIS = 4 }
1264 enum : uint { OUT_DEVICE_PRECIS = 5 }
1265 enum : uint { OUT_RASTER_PRECIS = 6 }
1266 enum : uint { OUT_TT_ONLY_PRECIS = 7 }
1267 enum : uint { OUT_OUTLINE_PRECIS = 8 }
1268 enum : uint { OUT_SCREEN_OUTLINE_PRECIS = 9 }
1269 enum : uint { OUT_PS_ONLY_PRECIS = 10 }
1270
1271 enum : uint { CLIP_DEFAULT_PRECIS = 0 }
1272 enum : uint { CLIP_CHARACTER_PRECIS = 1 }
1273 enum : uint { CLIP_STROKE_PRECIS = 2 }
1274 enum : uint { CLIP_MASK = 0xf }
1275 enum : uint { CLIP_LH_ANGLES = 1<<4 }
1276 enum : uint { CLIP_TT_ALWAYS = 2<<4 }
1277 enum : uint { CLIP_EMBEDDED = 8<<4 }
1278
1279 enum : uint { DEFAULT_QUALITY = 0 }
1280 enum : uint { DRAFT_QUALITY = 1 }
1281 enum : uint { PROOF_QUALITY = 2 }
1282 // #if(WINVER >= 0x0400)
1283 enum : uint { NONANTIALIASED_QUALITY = 3 }
1284 enum : uint { ANTIALIASED_QUALITY = 4 }
1285 // #endif /* WINVER >= 0x0400 */
1286
1287 // #if (_WIN32_WINNT >= 0x0500)
1288 enum : uint { CLEARTYPE_QUALITY = 5 }
1289 // #endif
1290
1291 enum : uint { DEFAULT_PITCH = 0 }
1292 enum : uint { FIXED_PITCH = 1 }
1293 enum : uint { VARIABLE_PITCH = 2 }
1294 // #if(WINVER >= 0x0400)
1295 enum : uint { MONO_FONT = 8 }
1296 // #endif /* WINVER >= 0x0400 */
1297
1298 enum : uint { ANSI_CHARSET = 0 }
1299 enum : uint { DEFAULT_CHARSET = 1 }
1300 enum : uint { SYMBOL_CHARSET = 2 }
1301 enum : uint { SHIFTJIS_CHARSET = 128 }
1302 enum : uint { HANGEUL_CHARSET = 129 }
1303 enum : uint { HANGUL_CHARSET = 129 }
1304 enum : uint { GB2312_CHARSET = 134 }
1305 enum : uint { CHINESEBIG5_CHARSET = 136 }
1306 enum : uint { OEM_CHARSET = 255 }
1307 // #if(WINVER >= 0x0400)
1308 enum : uint { JOHAB_CHARSET = 130 }
1309 enum : uint { HEBREW_CHARSET = 177 }
1310 enum : uint { ARABIC_CHARSET = 178 }
1311 enum : uint { GREEK_CHARSET = 161 }
1312 enum : uint { TURKISH_CHARSET = 162 }
1313 enum : uint { VIETNAMESE_CHARSET = 163 }
1314 enum : uint { THAI_CHARSET = 222 }
1315 enum : uint { EASTEUROPE_CHARSET = 238 }
1316 enum : uint { RUSSIAN_CHARSET = 204 }
1317
1318 enum : uint { MAC_CHARSET = 77 }
1319 enum : uint { BALTIC_CHARSET = 186 }
1320
1321 enum : uint { FS_LATIN1 = 0x00000001 }
1322 enum : uint { FS_LATIN2 = 0x00000002 }
1323 enum : uint { FS_CYRILLIC = 0x00000004 }
1324 enum : uint { FS_GREEK = 0x00000008 }
1325 enum : uint { FS_TURKISH = 0x00000010 }
1326 enum : uint { FS_HEBREW = 0x00000020 }
1327 enum : uint { FS_ARABIC = 0x00000040 }
1328 enum : uint { FS_BALTIC = 0x00000080 }
1329 enum : uint { FS_VIETNAMESE = 0x00000100 }
1330 enum : uint { FS_THAI = 0x00010000 }
1331 enum : uint { FS_JISJAPAN = 0x00020000 }
1332 enum : uint { FS_CHINESESIMP = 0x00040000 }
1333 enum : uint { FS_WANSUNG = 0x00080000 }
1334 enum : uint { FS_CHINESETRAD = 0x00100000 }
1335 enum : uint { FS_JOHAB = 0x00200000 }
1336 enum : uint { FS_SYMBOL = 0x80000000 }
1337 // #endif /* WINVER >= 0x0400 */
1338
1339 enum : uint { FF_DONTCARE = 0<<4 }
1340 enum : uint { FF_ROMAN = 1<<4 }
1341
1342 enum : uint { FF_SWISS = 2<<4 }
1343
1344 enum : uint { FF_MODERN = 3<<4 }
1345
1346 enum : uint { FF_SCRIPT = 4<<4 }
1347 enum : uint { FF_DECORATIVE = 5<<4 }
1348
1349 enum : uint { FW_DONTCARE = 0 }
1350 enum : uint { FW_THIN = 100 }
1351 enum : uint { FW_EXTRALIGHT = 200 }
1352 enum : uint { FW_LIGHT = 300 }
1353 enum : uint { FW_NORMAL = 400 }
1354 enum : uint { FW_MEDIUM = 500 }
1355 enum : uint { FW_SEMIBOLD = 600 }
1356 enum : uint { FW_BOLD = 700 }
1357 enum : uint { FW_EXTRABOLD = 800 }
1358 enum : uint { FW_HEAVY = 900 }
1359
1360 alias FW_EXTRALIGHT FW_ULTRALIGHT;
1361 alias FW_NORMAL FW_REGULAR;
1362 alias FW_SEMIBOLD FW_DEMIBOLD;
1363 alias FW_EXTRABOLD FW_ULTRABOLD;
1364 alias FW_HEAVY FW_BLACK;
1365
1366 enum : uint { PANOSE_COUNT = 10 }
1367 enum : uint { PAN_FAMILYTYPE_INDEX = 0 }
1368 enum : uint { PAN_SERIFSTYLE_INDEX = 1 }
1369 enum : uint { PAN_WEIGHT_INDEX = 2 }
1370 enum : uint { PAN_PROPORTION_INDEX = 3 }
1371 enum : uint { PAN_CONTRAST_INDEX = 4 }
1372 enum : uint { PAN_STROKEVARIATION_INDEX = 5 }
1373 enum : uint { PAN_ARMSTYLE_INDEX = 6 }
1374 enum : uint { PAN_LETTERFORM_INDEX = 7 }
1375 enum : uint { PAN_MIDLINE_INDEX = 8 }
1376 enum : uint { PAN_XHEIGHT_INDEX = 9 }
1377
1378 enum : uint { PAN_CULTURE_LATIN = 0 }
1379
1380 struct tagPANOSE {
1381 BYTE bFamilyType;
1382 BYTE bSerifStyle;
1383 BYTE bWeight;
1384 BYTE bProportion;
1385 BYTE bContrast;
1386 BYTE bStrokeVariation;
1387 BYTE bArmStyle;
1388 BYTE bLetterform;
1389 BYTE bMidline;
1390 BYTE bXHeight;
1391 }
1392 alias tagPANOSE PANOSE;
1393 alias tagPANOSE* LPPANOSE;
1394
1395 enum : uint { PAN_ANY = 0 }
1396 enum : uint { PAN_NO_FIT = 1 }
1397
1398 enum : uint { PAN_FAMILY_TEXT_DISPLAY = 2 }
1399 enum : uint { PAN_FAMILY_SCRIPT = 3 }
1400 enum : uint { PAN_FAMILY_DECORATIVE = 4 }
1401 enum : uint { PAN_FAMILY_PICTORIAL = 5 }
1402
1403 enum : uint { PAN_SERIF_COVE = 2 }
1404 enum : uint { PAN_SERIF_OBTUSE_COVE = 3 }
1405 enum : uint { PAN_SERIF_SQUARE_COVE = 4 }
1406 enum : uint { PAN_SERIF_OBTUSE_SQUARE_COVE = 5 }
1407 enum : uint { PAN_SERIF_SQUARE = 6 }
1408 enum : uint { PAN_SERIF_THIN = 7 }
1409 enum : uint { PAN_SERIF_BONE = 8 }
1410 enum : uint { PAN_SERIF_EXAGGERATED = 9 }
1411 enum : uint { PAN_SERIF_TRIANGLE = 10 }
1412 enum : uint { PAN_SERIF_NORMAL_SANS = 11 }
1413 enum : uint { PAN_SERIF_OBTUSE_SANS = 12 }
1414 enum : uint { PAN_SERIF_PERP_SANS = 13 }
1415 enum : uint { PAN_SERIF_FLARED = 14 }
1416 enum : uint { PAN_SERIF_ROUNDED = 15 }
1417
1418 enum : uint { PAN_WEIGHT_VERY_LIGHT = 2 }
1419 enum : uint { PAN_WEIGHT_LIGHT = 3 }
1420 enum : uint { PAN_WEIGHT_THIN = 4 }
1421 enum : uint { PAN_WEIGHT_BOOK = 5 }
1422 enum : uint { PAN_WEIGHT_MEDIUM = 6 }
1423 enum : uint { PAN_WEIGHT_DEMI = 7 }
1424 enum : uint { PAN_WEIGHT_BOLD = 8 }
1425 enum : uint { PAN_WEIGHT_HEAVY = 9 }
1426 enum : uint { PAN_WEIGHT_BLACK = 10 }
1427 enum : uint { PAN_WEIGHT_NORD = 11 }
1428
1429 enum : uint { PAN_PROP_OLD_STYLE = 2 }
1430 enum : uint { PAN_PROP_MODERN = 3 }
1431 enum : uint { PAN_PROP_EVEN_WIDTH = 4 }
1432 enum : uint { PAN_PROP_EXPANDED = 5 }
1433 enum : uint { PAN_PROP_CONDENSED = 6 }
1434 enum : uint { PAN_PROP_VERY_EXPANDED = 7 }
1435 enum : uint { PAN_PROP_VERY_CONDENSED = 8 }
1436 enum : uint { PAN_PROP_MONOSPACED = 9 }
1437
1438 enum : uint { PAN_CONTRAST_NONE = 2 }
1439 enum : uint { PAN_CONTRAST_VERY_LOW = 3 }
1440 enum : uint { PAN_CONTRAST_LOW = 4 }
1441 enum : uint { PAN_CONTRAST_MEDIUM_LOW = 5 }
1442 enum : uint { PAN_CONTRAST_MEDIUM = 6 }
1443 enum : uint { PAN_CONTRAST_MEDIUM_HIGH = 7 }
1444 enum : uint { PAN_CONTRAST_HIGH = 8 }
1445 enum : uint { PAN_CONTRAST_VERY_HIGH = 9 }
1446
1447 enum : uint { PAN_STROKE_GRADUAL_DIAG = 2 }
1448 enum : uint { PAN_STROKE_GRADUAL_TRAN = 3 }
1449 enum : uint { PAN_STROKE_GRADUAL_VERT = 4 }
1450 enum : uint { PAN_STROKE_GRADUAL_HORZ = 5 }
1451 enum : uint { PAN_STROKE_RAPID_VERT = 6 }
1452 enum : uint { PAN_STROKE_RAPID_HORZ = 7 }
1453 enum : uint { PAN_STROKE_INSTANT_VERT = 8 }
1454
1455 enum : uint { PAN_STRAIGHT_ARMS_HORZ = 2 }
1456 enum : uint { PAN_STRAIGHT_ARMS_WEDGE = 3 }
1457 enum : uint { PAN_STRAIGHT_ARMS_VERT = 4 }
1458 enum : uint { PAN_STRAIGHT_ARMS_SINGLE_SERIF = 5 }
1459 enum : uint { PAN_STRAIGHT_ARMS_DOUBLE_SERIF = 6 }
1460 enum : uint { PAN_BENT_ARMS_HORZ = 7 }
1461 enum : uint { PAN_BENT_ARMS_WEDGE = 8 }
1462 enum : uint { PAN_BENT_ARMS_VERT = 9 }
1463 enum : uint { PAN_BENT_ARMS_SINGLE_SERIF = 10 }
1464 enum : uint { PAN_BENT_ARMS_DOUBLE_SERIF = 11 }
1465
1466 enum : uint { PAN_LETT_NORMAL_CONTACT = 2 }
1467 enum : uint { PAN_LETT_NORMAL_WEIGHTED = 3 }
1468 enum : uint { PAN_LETT_NORMAL_BOXED = 4 }
1469 enum : uint { PAN_LETT_NORMAL_FLATTENED = 5 }
1470 enum : uint { PAN_LETT_NORMAL_ROUNDED = 6 }
1471 enum : uint { PAN_LETT_NORMAL_OFF_CENTER = 7 }
1472 enum : uint { PAN_LETT_NORMAL_SQUARE = 8 }
1473 enum : uint { PAN_LETT_OBLIQUE_CONTACT = 9 }
1474 enum : uint { PAN_LETT_OBLIQUE_WEIGHTED = 10 }
1475 enum : uint { PAN_LETT_OBLIQUE_BOXED = 11 }
1476 enum : uint { PAN_LETT_OBLIQUE_FLATTENED = 12 }
1477 enum : uint { PAN_LETT_OBLIQUE_ROUNDED = 13 }
1478 enum : uint { PAN_LETT_OBLIQUE_OFF_CENTER = 14 }
1479 enum : uint { PAN_LETT_OBLIQUE_SQUARE = 15 }
1480
1481 enum : uint { PAN_MIDLINE_STANDARD_TRIMMED = 2 }
1482 enum : uint { PAN_MIDLINE_STANDARD_POINTED = 3 }
1483 enum : uint { PAN_MIDLINE_STANDARD_SERIFED = 4 }
1484 enum : uint { PAN_MIDLINE_HIGH_TRIMMED = 5 }
1485 enum : uint { PAN_MIDLINE_HIGH_POINTED = 6 }
1486 enum : uint { PAN_MIDLINE_HIGH_SERIFED = 7 }
1487 enum : uint { PAN_MIDLINE_CONSTANT_TRIMMED = 8 }
1488 enum : uint { PAN_MIDLINE_CONSTANT_POINTED = 9 }
1489 enum : uint { PAN_MIDLINE_CONSTANT_SERIFED = 10 }
1490 enum : uint { PAN_MIDLINE_LOW_TRIMMED = 11 }
1491 enum : uint { PAN_MIDLINE_LOW_POINTED = 12 }
1492 enum : uint { PAN_MIDLINE_LOW_SERIFED = 13 }
1493
1494 enum : uint { PAN_XHEIGHT_CONSTANT_SMALL = 2 }
1495 enum : uint { PAN_XHEIGHT_CONSTANT_STD = 3 }
1496 enum : uint { PAN_XHEIGHT_CONSTANT_LARGE = 4 }
1497 enum : uint { PAN_XHEIGHT_DUCKING_SMALL = 5 }
1498 enum : uint { PAN_XHEIGHT_DUCKING_STD = 6 }
1499 enum : uint { PAN_XHEIGHT_DUCKING_LARGE = 7 }
1500
1501 enum : uint { ELF_VENDOR_SIZE = 4 }
1502
1503 struct tagEXTLOGFONTA {
1504 LOGFONTA elfLogFont;
1505 BYTE elfFullName[LF_FULLFACESIZE];
1506 BYTE elfStyle[LF_FACESIZE];
1507 DWORD elfVersion;
1508 DWORD elfStyleSize;
1509 DWORD elfMatch;
1510 DWORD elfReserved;
1511 BYTE elfVendorId[ELF_VENDOR_SIZE];
1512 DWORD elfCulture;
1513 PANOSE elfPanose;
1514 }
1515 alias tagEXTLOGFONTA EXTLOGFONTA;
1516 alias tagEXTLOGFONTA* PEXTLOGFONTA;
1517 alias tagEXTLOGFONTA* NPEXTLOGFONTA;
1518 alias tagEXTLOGFONTA* LPEXTLOGFONTA;
1519
1520 struct tagEXTLOGFONTW {
1521 LOGFONTW elfLogFont;
1522 WCHAR elfFullName[LF_FULLFACESIZE];
1523 WCHAR elfStyle[LF_FACESIZE];
1524 DWORD elfVersion;
1525 DWORD elfStyleSize;
1526 DWORD elfMatch;
1527 DWORD elfReserved;
1528 BYTE elfVendorId[ELF_VENDOR_SIZE];
1529 DWORD elfCulture;
1530 PANOSE elfPanose;
1531 }
1532 alias tagEXTLOGFONTW EXTLOGFONTW;
1533 alias tagEXTLOGFONTW* PEXTLOGFONTW;
1534 alias tagEXTLOGFONTW* NPEXTLOGFONTW;
1535 alias tagEXTLOGFONTW* LPEXTLOGFONTW;
1536
1537 // #ifdef UNICODE
1538 alias EXTLOGFONTW EXTLOGFONT;
1539 alias PEXTLOGFONTW PEXTLOGFONT;
1540 alias NPEXTLOGFONTW NPEXTLOGFONT;
1541 alias LPEXTLOGFONTW LPEXTLOGFONT;
1542 // #else
1543 // ...
1544 // #endif // UNICODE
1545
1546 enum : uint { ELF_VERSION = 0 }
1547 enum : uint { ELF_CULTURE_LATIN = 0 }
1548
1549 enum : uint { RASTER_FONTTYPE = 0x0001 }
1550 enum : uint { DEVICE_FONTTYPE = 0x002 }
1551 enum : uint { TRUETYPE_FONTTYPE = 0x004 }
1552
1553 COLORREF RGB(BYTE r, BYTE g, BYTE b){ return r|(g <<8)|(b << 16); }
1554 COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b){ return (0x02000000 | RGB(r,g,b)); }
1555 COLORREF PALETTEINDEX(WORD i){ return (cast(COLORREF)(0x01000000 | cast(DWORD)cast(WORD)(i))); }
1556
1557 enum : uint { PC_RESERVED = 0x01 }
1558 enum : uint { PC_EXPLICIT = 0x02 }
1559 enum : uint { PC_NOCOLLAPSE = 0x04 }
1560
1561 BYTE GetRValue(COLORREF rgb){ return cast(BYTE)rgb; }
1562 BYTE GetGValue(COLORREF rgb){ return cast(BYTE)(rgb >>> 8); }
1563 BYTE GetBValue(COLORREF rgb){ return cast(BYTE)(rgb >>> 16); }
1564
1565 enum : uint { TRANSPARENT = 1 }
1566 enum : uint { OPAQUE = 2 }
1567 enum : uint { BKMODE_LAST = 2 }
1568
1569 enum : uint { GM_COMPATIBLE = 1 }
1570 enum : uint { GM_ADVANCED = 2 }
1571 enum : uint { GM_LAST = 2 }
1572
1573 enum : uint { PT_CLOSEFIGURE = 0x01 }
1574 enum : uint { PT_LINETO = 0x02 }
1575 enum : uint { PT_BEZIERTO = 0x04 }
1576 enum : uint { PT_MOVETO = 0x06 }
1577
1578 enum : uint { MM_TEXT = 1 }
1579 enum : uint { MM_LOMETRIC = 2 }
1580 enum : uint { MM_HIMETRIC = 3 }
1581 enum : uint { MM_LOENGLISH = 4 }
1582 enum : uint { MM_HIENGLISH = 5 }
1583 enum : uint { MM_TWIPS = 6 }
1584 enum : uint { MM_ISOTROPIC = 7 }
1585 enum : uint { MM_ANISOTROPIC = 8 }
1586
1587 alias MM_TEXT MM_MIN;
1588 alias MM_ANISOTROPIC MM_MAX;
1589 alias MM_TWIPS MM_MAX_FIXEDSCALE;
1590
1591 enum : uint { ABSOLUTE = 1 }
1592 enum : uint { RELATIVE = 2 }
1593
1594 enum : uint { WHITE_BRUSH = 0 }
1595 enum : uint { LTGRAY_BRUSH = 1 }
1596 enum : uint { GRAY_BRUSH = 2 }
1597 enum : uint { DKGRAY_BRUSH = 3 }
1598 enum : uint { BLACK_BRUSH = 4 }
1599 enum : uint { NULL_BRUSH = 5 }
1600 alias NULL_BRUSH HOLLOW_BRUSH;
1601 enum : uint { WHITE_PEN = 6 }
1602 enum : uint { BLACK_PEN = 7 }
1603 enum : uint { NULL_PEN = 8 }
1604 enum : uint { OEM_FIXED_FONT = 10 }
1605 enum : uint { ANSI_FIXED_FONT = 11 }
1606 enum : uint { ANSI_VAR_FONT = 12 }
1607 enum : uint { SYSTEM_FONT = 13 }
1608 enum : uint { DEVICE_DEFAULT_FONT = 14 }
1609 enum : uint { DEFAULT_PALETTE = 15 }
1610 enum : uint { SYSTEM_FIXED_FONT = 16 }
1611
1612 // #if(WINVER >= 0x0400)
1613 enum : uint { DEFAULT_GUI_FONT = 17 }
1614 // #endif /* WINVER >= 0x0400 */
1615
1616 // #if (_WIN32_WINNT >= 0x0500)
1617 enum : uint { DC_BRUSH = 18 }
1618 enum : uint { DC_PEN = 19 }
1619 // #endif
1620
1621 // #if (_WIN32_WINNT >= 0x0500)
1622 enum : uint { STOCK_LAST = 19 }
1623 // #elif (WINVER >= 0x0400)
1624 // #...
1625 // #else
1626 // #...
1627 // #endif
1628
1629 enum : uint { CLR_INVALID = 0xFFFFFFFF }
1630
1631 enum : uint { BS_SOLID = 0 }
1632 enum : uint { BS_NULL = 1 }
1633 alias BS_NULL BS_HOLLOW;
1634 enum : uint { BS_HATCHED = 2 }
1635 enum : uint { BS_PATTERN = 3 }
1636 enum : uint { BS_INDEXED = 4 }
1637 enum : uint { BS_DIBPATTERN = 5 }
1638 enum : uint { BS_DIBPATTERNPT = 6 }
1639 enum : uint { BS_PATTERN8X8 = 7 }
1640 enum : uint { BS_DIBPATTERN8X8 = 8 }
1641 enum : uint { BS_MONOPATTERN = 9 }
1642
1643 enum : uint { HS_HORIZONTAL = 0 }
1644 enum : uint { HS_VERTICAL = 1 }
1645 enum : uint { HS_FDIAGONAL = 2 }
1646 enum : uint { HS_BDIAGONAL = 3 }
1647 enum : uint { HS_CROSS = 4 }
1648 enum : uint { HS_DIAGCROSS = 5 }
1649
1650 enum : uint { PS_SOLID = 0 }
1651 enum : uint { PS_DASH = 1 }
1652 enum : uint { PS_DOT = 2 }
1653 enum : uint { PS_DASHDOT = 3 }
1654 enum : uint { PS_DASHDOTDOT = 4 }
1655 enum : uint { PS_NULL = 5 }
1656 enum : uint { PS_INSIDEFRAME = 6 }
1657 enum : uint { PS_USERSTYLE = 7 }
1658 enum : uint { PS_ALTERNATE = 8 }
1659 enum : uint { PS_STYLE_MASK = 0x0000000F }
1660
1661 enum : uint { PS_ENDCAP_ROUND = 0x00000000 }
1662 enum : uint { PS_ENDCAP_SQUARE = 0x00000100 }
1663 enum : uint { PS_ENDCAP_FLAT = 0x00000200 }
1664 enum : uint { PS_ENDCAP_MASK = 0x00000F00 }
1665
1666 enum : uint { PS_JOIN_ROUND = 0x00000000 }
1667 enum : uint { PS_JOIN_BEVEL = 0x00001000 }
1668 enum : uint { PS_JOIN_MITER = 0x00002000 }
1669 enum : uint { PS_JOIN_MASK = 0x0000F000 }
1670
1671 enum : uint { PS_COSMETIC = 0x00000000 }
1672 enum : uint { PS_GEOMETRIC = 0x00010000 }
1673 enum : uint { PS_TYPE_MASK = 0x000F0000 }
1674
1675 enum : uint { AD_COUNTERCLOCKWISE = 1 }
1676 enum : uint { AD_CLOCKWISE = 2 }
1677
1678 enum : uint { DRIVERVERSION = 0 }
1679 enum : uint { TECHNOLOGY = 2 }
1680 enum : uint { HORZSIZE = 4 }
1681 enum : uint { VERTSIZE = 6 }
1682 enum : uint { HORZRES = 8 }
1683 enum : uint { VERTRES = 10 }
1684 enum : uint { BITSPIXEL = 12 }
1685 enum : uint { PLANES = 14 }
1686 enum : uint { NUMBRUSHES = 16 }
1687 enum : uint { NUMPENS = 18 }
1688 enum : uint { NUMMARKERS = 20 }
1689 enum : uint { NUMFONTS = 22 }
1690 enum : uint { NUMCOLORS = 24 }
1691 enum : uint { PDEVICESIZE = 26 }
1692 enum : uint { CURVECAPS = 28 }
1693 enum : uint { LINECAPS = 30 }
1694 enum : uint { POLYGONALCAPS = 32 }
1695 enum : uint { TEXTCAPS = 34 }
1696 enum : uint { CLIPCAPS = 36 }
1697 enum : uint { RASTERCAPS = 38 }
1698 enum : uint { ASPECTX = 40 }
1699 enum : uint { ASPECTY = 42 }
1700 enum : uint { ASPECTXY = 44 }
1701
1702 enum : uint { LOGPIXELSX = 88 }
1703 enum : uint { LOGPIXELSY = 90 }
1704
1705 enum : uint { SIZEPALETTE = 104 }
1706 enum : uint { NUMRESERVED = 106 }
1707 enum : uint { COLORRES = 108 }
1708
1709 enum : uint { PHYSICALWIDTH = 110 }
1710 enum : uint { PHYSICALHEIGHT = 111 }
1711 enum : uint { PHYSICALOFFSETX = 112 }
1712 enum : uint { PHYSICALOFFSETY = 113 }
1713 enum : uint { SCALINGFACTORX = 114 }
1714 enum : uint { SCALINGFACTORY = 115 }
1715
1716 enum : uint { VREFRESH = 116 }
1717
1718 enum : uint { DESKTOPVERTRES = 117 }
1719
1720 enum : uint { DESKTOPHORZRES = 118 }
1721
1722 enum : uint { BLTALIGNMENT = 119 }
1723
1724 // #if(WINVER >= 0x0500)
1725 enum : uint { SHADEBLENDCAPS = 120 }
1726 enum : uint { COLORMGMTCAPS = 121 }
1727 // #endif /* WINVER >= 0x0500 */
1728
1729 // #ifndef NOGDICAPMASKS
1730
1731 enum : uint { DT_PLOTTER = 0 }
1732 enum : uint { DT_RASDISPLAY = 1 }
1733 enum : uint { DT_RASPRINTER = 2 }
1734 enum : uint { DT_RASCAMERA = 3 }
1735 enum : uint { DT_CHARSTREAM = 4 }
1736 enum : uint { DT_METAFILE = 5 }
1737 enum : uint { DT_DISPFILE = 6 }
1738
1739 enum : uint { CC_NONE = 0 }
1740 enum : uint { CC_CIRCLES = 1 }
1741 enum : uint { CC_PIE = 2 }
1742 enum : uint { CC_CHORD = 4 }
1743 enum : uint { CC_ELLIPSES = 8 }
1744 enum : uint { CC_WIDE = 16 }
1745 enum : uint { CC_STYLED = 32 }
1746 enum : uint { CC_WIDESTYLED = 64 }
1747 enum : uint { CC_INTERIORS = 128 }
1748 enum : uint { CC_ROUNDRECT = 256 }
1749
1750 enum : uint { LC_NONE = 0 }
1751 enum : uint { LC_POLYLINE = 2 }
1752 enum : uint { LC_MARKER = 4 }
1753 enum : uint { LC_POLYMARKER = 8 }
1754 enum : uint { LC_WIDE = 16 }
1755 enum : uint { LC_STYLED = 32 }
1756 enum : uint { LC_WIDESTYLED = 64 }
1757 enum : uint { LC_INTERIORS = 128 }
1758
1759 enum : uint { PC_NONE = 0 }
1760 enum : uint { PC_POLYGON = 1 }
1761 enum : uint { PC_RECTANGLE = 2 }
1762 enum : uint { PC_WINDPOLYGON = 4 }
1763 enum : uint { PC_TRAPEZOID = 4 }
1764 enum : uint { PC_SCANLINE = 8 }
1765 enum : uint { PC_WIDE = 16 }
1766 enum : uint { PC_STYLED = 32 }
1767 enum : uint { PC_WIDESTYLED = 64 }
1768 enum : uint { PC_INTERIORS = 128 }
1769 enum : uint { PC_POLYPOLYGON = 256 }
1770 enum : uint { PC_PATHS = 512 }
1771
1772 enum : uint { CP_NONE = 0 }
1773 enum : uint { CP_RECTANGLE = 1 }
1774 enum : uint { CP_REGION = 2 }
1775
1776 enum : uint { TC_OP_CHARACTER = 0x00000001 }
1777 enum : uint { TC_OP_STROKE = 0x00000002 }
1778 enum : uint { TC_CP_STROKE = 0x00000004 }
1779 enum : uint { TC_CR_90 = 0x00000008 }
1780 enum : uint { TC_CR_ANY = 0x00000010 }
1781 enum : uint { TC_SF_X_YINDEP = 0x00000020 }
1782 enum : uint { TC_SA_DOUBLE = 0x00000040 }
1783 enum : uint { TC_SA_INTEGER = 0x00000080 }
1784 enum : uint { TC_SA_CONTIN = 0x00000100 }
1785 enum : uint { TC_EA_DOUBLE = 0x00000200 }
1786 enum : uint { TC_IA_ABLE = 0x00000400 }
1787 enum : uint { TC_UA_ABLE = 0x00000800 }
1788 enum : uint { TC_SO_ABLE = 0x00001000 }
1789 enum : uint { TC_RA_ABLE = 0x00002000 }
1790 enum : uint { TC_VA_ABLE = 0x00004000 }
1791 enum : uint { TC_RESERVED = 0x00008000 }
1792 enum : uint { TC_SCROLLBLT = 0x00010000 }
1793
1794 // #endif /* NOGDICAPMASKS */
1795
1796 // #define RC_NONE
1797 enum : uint { RC_BITBLT = 1 }
1798 enum : uint { RC_BANDING = 2 }
1799 enum : uint { RC_SCALING = 4 }
1800 enum : uint { RC_BITMAP64 = 8 }
1801 enum : uint { RC_GDI20_OUTPUT = 0x0010 }
1802 enum : uint { RC_GDI20_STATE = 0x0020 }
1803 enum : uint { RC_SAVEBITMAP = 0x0040 }
1804 enum : uint { RC_DI_BITMAP = 0x0080 }
1805 enum : uint { RC_PALETTE = 0x0100 }
1806 enum : uint { RC_DIBTODEV = 0x0200 }
1807 enum : uint { RC_BIGFONT = 0x0400 }
1808 enum : uint { RC_STRETCHBLT = 0x0800 }
1809 enum : uint { RC_FLOODFILL = 0x1000 }
1810 enum : uint { RC_STRETCHDIB = 0x2000 }
1811 enum : uint { RC_OP_DX_OUTPUT = 0x4000 }
1812 enum : uint { RC_DEVBITS = 0x8000 }
1813
1814 // #if(WINVER >= 0x0500)
1815
1816 enum : uint { SB_NONE = 0x00000000 }
1817 enum : uint { SB_CONST_ALPHA = 0x00000001 }
1818 enum : uint { SB_PIXEL_ALPHA = 0x00000002 }
1819 enum : uint { SB_PREMULT_ALPHA = 0x00000004 }
1820
1821 enum : uint { SB_GRAD_RECT = 0x00000010 }
1822 enum : uint { SB_GRAD_TRI = 0x00000020 }
1823
1824 enum : uint { CM_NONE = 0x00000000 }
1825 enum : uint { CM_DEVICE_ICM = 0x00000001 }
1826 enum : uint { CM_GAMMA_RAMP = 0x00000002 }
1827 enum : uint { CM_CMYK_COLOR = 0x00000004 }
1828
1829 // #endif /* WINVER >= 0x0500 */
1830
1831 enum : uint { DIB_RGB_COLORS = 0 }
1832 enum : uint { DIB_PAL_COLORS = 1 }
1833
1834 enum : uint { SYSPAL_ERROR = 0 }
1835 enum : uint { SYSPAL_STATIC = 1 }
1836 enum : uint { SYSPAL_NOSTATIC = 2 }
1837 enum : uint { SYSPAL_NOSTATIC256 = 3 }
1838
1839 enum : uint { CBM_INIT = 0x04 }
1840
1841 enum : uint { FLOODFILLBORDER = 0 }
1842 enum : uint { FLOODFILLSURFACE = 1 }
1843
1844 enum : uint { CCHDEVICENAME = 32 }
1845
1846 enum : uint { CCHFORMNAME = 32 }
1847
1848 struct _devicemodeA {
1849 BYTE dmDeviceName[CCHDEVICENAME];
1850 WORD dmSpecVersion;
1851 WORD dmDriverVersion;
1852 WORD dmSize;
1853 WORD dmDriverExtra;
1854 DWORD dmFields;
1855 union {
1856 struct {
1857 short dmOrientation;
1858 short dmPaperSize;
1859 short dmPaperLength;
1860 short dmPaperWidth;
1861 }
1862
1863 POINTL dmPosition;
1864 }
1865
1866 short dmScale;
1867 short dmCopies;
1868 short dmDefaultSource;
1869 short dmPrintQuality;
1870 short dmColor;
1871 short dmDuplex;
1872 short dmYResolution;
1873 short dmTTOption;
1874 short dmCollate;
1875 BYTE dmFormName[CCHFORMNAME];
1876 WORD dmLogPixels;
1877 DWORD dmBitsPerPel;
1878 DWORD dmPelsWidth;
1879 DWORD dmPelsHeight;
1880 union {
1881 DWORD dmDisplayFlags;
1882 DWORD dmNup;
1883 }
1884
1885 DWORD dmDisplayFrequency;
1886 // #if(WINVER >= 0x0400)
1887 DWORD dmICMMethod;
1888 DWORD dmICMIntent;
1889 DWORD dmMediaType;
1890 DWORD dmDitherType;
1891 DWORD dmReserved1;
1892 DWORD dmReserved2;
1893 // #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
1894 DWORD dmPanningWidth;
1895 DWORD dmPanningHeight;
1896 // #endif
1897 // #endif /* WINVER >= 0x0400 */
1898 }
1899 alias _devicemodeA DEVMODEA;
1900 alias _devicemodeA* PDEVMODEA;
1901 alias _devicemodeA* NPDEVMODEA;
1902 alias _devicemodeA* LPDEVMODEA;
1903
1904 struct _devicemodeW {
1905 WCHAR dmDeviceName[CCHDEVICENAME];
1906 WORD dmSpecVersion;
1907 WORD dmDriverVersion;
1908 WORD dmSize;
1909 WORD dmDriverExtra;
1910 DWORD dmFields;
1911 union {
1912 struct {
1913 short dmOrientation;
1914 short dmPaperSize;
1915 short dmPaperLength;
1916 short dmPaperWidth;
1917 }
1918
1919 POINTL dmPosition;
1920 }
1921
1922 short dmScale;
1923 short dmCopies;
1924 short dmDefaultSource;
1925 short dmPrintQuality;
1926 short dmColor;
1927 short dmDuplex;
1928 short dmYResolution;
1929 short dmTTOption;
1930 short dmCollate;
1931 WCHAR dmFormName[CCHFORMNAME];
1932 WORD dmLogPixels;
1933 DWORD dmBitsPerPel;
1934 DWORD dmPelsWidth;
1935 DWORD dmPelsHeight;
1936 union {
1937 DWORD dmDisplayFlags;
1938 DWORD dmNup;
1939 }
1940
1941 DWORD dmDisplayFrequency;
1942 // #if(WINVER >= 0x0400)
1943 DWORD dmICMMethod;
1944 DWORD dmICMIntent;
1945 DWORD dmMediaType;
1946 DWORD dmDitherType;
1947 DWORD dmReserved1;
1948 DWORD dmReserved2;
1949 // #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
1950 DWORD dmPanningWidth;
1951 DWORD dmPanningHeight;
1952 // #endif
1953 // #endif /* WINVER >= 0x0400 */
1954 }
1955 alias _devicemodeW DEVMODEW;
1956 alias _devicemodeW* PDEVMODEW;
1957 alias _devicemodeW* NPDEVMODEW;
1958 alias _devicemodeW* LPDEVMODEW;
1959
1960 // #ifdef UNICODE
1961 alias DEVMODEW DEVMODE;
1962 alias PDEVMODEW PDEVMODE;
1963 alias NPDEVMODEW NPDEVMODE;
1964 alias LPDEVMODEW LPDEVMODE;
1965 // #else
1966 // ...
1967 // #endif // UNICODE
1968
1969 // #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
1970 enum : uint { DM_SPECVERSION = 0x0401 }
1971 // #elif (WINVER >= 0x0400)
1972 // #...
1973 // #else
1974 // #...
1975 // #endif /* WINVER */
1976
1977 enum : uint { DM_ORIENTATION = 0x00000001 }
1978 enum : uint { DM_PAPERSIZE = 0x00000002 }
1979 enum : uint { DM_PAPERLENGTH = 0x00000004 }
1980 enum : uint { DM_PAPERWIDTH = 0x00000008 }
1981 enum : uint { DM_SCALE = 0x00000010 }
1982 // #if(WINVER >= 0x0500)
1983 enum : uint { DM_POSITION = 0x00000020 }
1984 enum : uint { DM_NUP = 0x00000040 }
1985 // #endif /* WINVER >= 0x0500 */
1986 enum : uint { DM_COPIES = 0x00000100 }
1987 enum : uint { DM_DEFAULTSOURCE = 0x00000200 }
1988 enum : uint { DM_PRINTQUALITY = 0x00000400 }
1989 enum : uint { DM_COLOR = 0x00000800 }
1990 enum : uint { DM_DUPLEX = 0x00001000 }
1991 enum : uint { DM_YRESOLUTION = 0x00002000 }
1992 enum : uint { DM_TTOPTION = 0x00004000 }
1993 enum : uint { DM_COLLATE = 0x00008000 }
1994 enum : uint { DM_FORMNAME = 0x00010000 }
1995 enum : uint { DM_LOGPIXELS = 0x00020000 }
1996 enum : uint { DM_BITSPERPEL = 0x00040000 }
1997 enum : uint { DM_PELSWIDTH = 0x00080000 }
1998 enum : uint { DM_PELSHEIGHT = 0x00100000 }
1999 enum : uint { DM_DISPLAYFLAGS = 0x00200000 }
2000 enum : uint { DM_DISPLAYFREQUENCY = 0x00400000 }
2001 // #if(WINVER >= 0x0400)
2002 enum : uint { DM_ICMMETHOD = 0x00800000 }
2003 enum : uint { DM_ICMINTENT = 0x01000000 }
2004 enum : uint { DM_MEDIATYPE = 0x02000000 }
2005 enum : uint { DM_DITHERTYPE = 0x04000000 }
2006 enum : uint { DM_PANNINGWIDTH = 0x08000000 }
2007 enum : uint { DM_PANNINGHEIGHT = 0x10000000 }
2008 // #endif /* WINVER >= 0x0400 */
2009
2010 enum : uint { DMORIENT_PORTRAIT = 1 }
2011 enum : uint { DMORIENT_LANDSCAPE = 2 }
2012
2013 enum { DMPAPER_FIRST = 1 }
2014 enum : uint { DMPAPER_LETTER = 1 }
2015 enum : uint { DMPAPER_LETTERSMALL = 2 }
2016 enum : uint { DMPAPER_TABLOID = 3 }
2017 enum : uint { DMPAPER_LEDGER = 4 }
2018 enum : uint { DMPAPER_LEGAL = 5 }
2019 enum : uint { DMPAPER_STATEMENT = 6 }
2020 enum : uint { DMPAPER_EXECUTIVE = 7 }
2021 enum : uint { DMPAPER_A3 = 8 }
2022 enum : uint { DMPAPER_A4 = 9 }
2023 enum : uint { DMPAPER_A4SMALL = 10 }
2024 enum : uint { DMPAPER_A5 = 11 }
2025 enum : uint { DMPAPER_B4 = 12 }
2026 enum : uint { DMPAPER_B5 = 13 }
2027 enum : uint { DMPAPER_FOLIO = 14 }
2028 enum : uint { DMPAPER_QUARTO = 15 }
2029 enum : uint { DMPAPER_10X14 = 16 }
2030 enum : uint { DMPAPER_11X17 = 17 }
2031 enum : uint { DMPAPER_NOTE = 18 }
2032 enum : uint { DMPAPER_ENV_9 = 19 }
2033 enum : uint { DMPAPER_ENV_10 = 20 }
2034 enum : uint { DMPAPER_ENV_11 = 21 }
2035 enum : uint { DMPAPER_ENV_12 = 22 }
2036 enum : uint { DMPAPER_ENV_14 = 23 }
2037 enum : uint { DMPAPER_CSHEET = 24 }
2038 enum : uint { DMPAPER_DSHEET = 25 }
2039 enum : uint { DMPAPER_ESHEET = 26 }
2040 enum : uint { DMPAPER_ENV_DL = 27 }
2041 enum : uint { DMPAPER_ENV_C5 = 28 }
2042 enum : uint { DMPAPER_ENV_C3 = 29 }
2043 enum : uint { DMPAPER_ENV_C4 = 30 }
2044 enum : uint { DMPAPER_ENV_C6 = 31 }
2045 enum : uint { DMPAPER_ENV_C65 = 32 }
2046 enum : uint { DMPAPER_ENV_B4 = 33 }
2047 enum : uint { DMPAPER_ENV_B5 = 34 }
2048 enum : uint { DMPAPER_ENV_B6 = 35 }
2049 enum : uint { DMPAPER_ENV_ITALY = 36 }
2050 enum : uint { DMPAPER_ENV_MONARCH = 37 }
2051 enum : uint { DMPAPER_ENV_PERSONAL = 38 }
2052 enum : uint { DMPAPER_FANFOLD_US = 39 }
2053 enum : uint { DMPAPER_FANFOLD_STD_GERMAN = 40 }
2054 enum : uint { DMPAPER_FANFOLD_LGL_GERMAN = 41 }
2055 // #if(WINVER >= 0x0400)
2056 enum : uint { DMPAPER_ISO_B4 = 42 }
2057 enum : uint { DMPAPER_JAPANESE_POSTCARD = 43 }
2058 enum : uint { DMPAPER_9X11 = 44 }
2059 enum : uint { DMPAPER_10X11 = 45 }
2060 enum : uint { DMPAPER_15X11 = 46 }
2061 enum : uint { DMPAPER_ENV_INVITE = 47 }
2062 enum : uint { DMPAPER_RESERVED_48 = 48 }
2063 enum : uint { DMPAPER_RESERVED_49 = 49 }
2064 enum : uint { DMPAPER_LETTER_EXTRA = 50 }
2065 enum : uint { DMPAPER_LEGAL_EXTRA = 51 }
2066 enum : uint { DMPAPER_TABLOID_EXTRA = 52 }
2067 enum : uint { DMPAPER_A4_EXTRA = 53 }
2068 enum : uint { DMPAPER_LETTER_TRANSVERSE = 54 }
2069 enum : uint { DMPAPER_A4_TRANSVERSE = 55 }
2070 enum : uint { DMPAPER_LETTER_EXTRA_TRANSVERSE = 56 }
2071 enum : uint { DMPAPER_A_PLUS = 57 }
2072 enum : uint { DMPAPER_B_PLUS = 58 }
2073 enum : uint { DMPAPER_LETTER_PLUS = 59 }
2074 enum : uint { DMPAPER_A4_PLUS = 60 }
2075 enum : uint { DMPAPER_A5_TRANSVERSE = 61 }
2076 enum : uint { DMPAPER_B5_TRANSVERSE = 62 }
2077 enum : uint { DMPAPER_A3_EXTRA = 63 }
2078 enum : uint { DMPAPER_A5_EXTRA = 64 }
2079 enum : uint { DMPAPER_B5_EXTRA = 65 }
2080 enum : uint { DMPAPER_A2 = 66 }
2081 enum : uint { DMPAPER_A3_TRANSVERSE = 67 }
2082 enum : uint { DMPAPER_A3_EXTRA_TRANSVERSE = 68 }
2083 // #endif /* WINVER >= 0x0400 */
2084
2085 // #if(WINVER >= 0x0500)
2086 enum : uint { DMPAPER_DBL_JAPANESE_POSTCARD = 69 }
2087 enum : uint { DMPAPER_A6 = 70 }
2088 enum : uint { DMPAPER_JENV_KAKU2 = 71 }
2089 enum : uint { DMPAPER_JENV_KAKU3 = 72 }
2090 enum : uint { DMPAPER_JENV_CHOU3 = 73 }
2091 enum : uint { DMPAPER_JENV_CHOU4 = 74 }
2092 enum : uint { DMPAPER_LETTER_ROTATED = 75 }
2093 enum : uint { DMPAPER_A3_ROTATED = 76 }
2094 enum : uint { DMPAPER_A4_ROTATED = 77 }
2095 enum : uint { DMPAPER_A5_ROTATED = 78 }
2096 enum : uint { DMPAPER_B4_JIS_ROTATED = 79 }
2097 enum : uint { DMPAPER_B5_JIS_ROTATED = 80 }
2098 enum : uint { DMPAPER_JAPANESE_POSTCARD_ROTATED = 81 }
2099 enum : uint { DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED = 82 }
2100 enum : uint { DMPAPER_A6_ROTATED = 83 }
2101 enum : uint { DMPAPER_JENV_KAKU2_ROTATED = 84 }
2102 enum : uint { DMPAPER_JENV_KAKU3_ROTATED = 85 }
2103 enum : uint { DMPAPER_JENV_CHOU3_ROTATED = 86 }
2104 enum : uint { DMPAPER_JENV_CHOU4_ROTATED = 87 }
2105 enum : uint { DMPAPER_B6_JIS = 88 }
2106 enum : uint { DMPAPER_B6_JIS_ROTATED = 89 }
2107 enum : uint { DMPAPER_12X11 = 90 }
2108 enum : uint { DMPAPER_JENV_YOU4 = 91 }
2109 enum : uint { DMPAPER_JENV_YOU4_ROTATED = 92 }
2110 enum : uint { DMPAPER_P16K = 93 }
2111 enum : uint { DMPAPER_P32K = 94 }
2112 enum : uint { DMPAPER_P32KBIG = 95 }
2113 enum : uint { DMPAPER_PENV_1 = 96 }
2114 enum : uint { DMPAPER_PENV_2 = 97 }
2115 enum : uint { DMPAPER_PENV_3 = 98 }
2116 enum : uint { DMPAPER_PENV_4 = 99 }
2117 enum : uint { DMPAPER_PENV_5 = 100 }
2118 enum : uint { DMPAPER_PENV_6 = 101 }
2119 enum : uint { DMPAPER_PENV_7 = 102 }
2120 enum : uint { DMPAPER_PENV_8 = 103 }
2121 enum : uint { DMPAPER_PENV_9 = 104 }
2122 enum : uint { DMPAPER_PENV_10 = 105 }
2123 enum : uint { DMPAPER_P16K_ROTATED = 106 }
2124 enum : uint { DMPAPER_P32K_ROTATED = 107 }
2125 enum : uint { DMPAPER_P32KBIG_ROTATED = 108 }
2126 enum : uint { DMPAPER_PENV_1_ROTATED = 109 }
2127 enum : uint { DMPAPER_PENV_2_ROTATED = 110 }
2128 enum : uint { DMPAPER_PENV_3_ROTATED = 111 }
2129 enum : uint { DMPAPER_PENV_4_ROTATED = 112 }
2130 enum : uint { DMPAPER_PENV_5_ROTATED = 113 }
2131 enum : uint { DMPAPER_PENV_6_ROTATED = 114 }
2132 enum : uint { DMPAPER_PENV_7_ROTATED = 115 }
2133 enum : uint { DMPAPER_PENV_8_ROTATED = 116 }
2134 enum : uint { DMPAPER_PENV_9_ROTATED = 117 }
2135 enum : uint { DMPAPER_PENV_10_ROTATED = 118 }
2136 // #endif /* WINVER >= 0x0500 */
2137
2138 // #if (WINVER >= 0x0500)
2139 alias DMPAPER_PENV_10_ROTATED DMPAPER_LAST;
2140 // #elif (WINVER >= 0x0400)
2141 // #...
2142 // #else
2143 // #...
2144 // #endif
2145
2146 enum : uint { DMPAPER_USER = 256 }
2147
2148 enum { DMBIN_FIRST = 1 }
2149 enum : uint { DMBIN_UPPER = 1 }
2150 enum : uint { DMBIN_ONLYONE = 1 }
2151 enum : uint { DMBIN_LOWER = 2 }
2152 enum : uint { DMBIN_MIDDLE = 3 }
2153 enum : uint { DMBIN_MANUAL = 4 }
2154 enum : uint { DMBIN_ENVELOPE = 5 }
2155 enum : uint { DMBIN_ENVMANUAL = 6 }
2156 enum : uint { DMBIN_AUTO = 7 }
2157 enum : uint { DMBIN_TRACTOR = 8 }
2158 enum : uint { DMBIN_SMALLFMT = 9 }
2159 enum : uint { DMBIN_LARGEFMT = 10 }
2160 enum : uint { DMBIN_LARGECAPACITY = 11 }
2161 enum : uint { DMBIN_CASSETTE = 14 }
2162 enum : uint { DMBIN_FORMSOURCE = 15 }
2163 alias DMBIN_FORMSOURCE DMBIN_LAST;
2164
2165 enum : uint { DMBIN_USER = 256 }
2166
2167 enum { DMRES_DRAFT = -1 }
2168 enum { DMRES_LOW = -2 }
2169 enum { DMRES_MEDIUM = -3 }
2170 enum { DMRES_HIGH = -4 }
2171
2172 enum : uint { DMCOLOR_MONOCHROME = 1 }
2173 enum : uint { DMCOLOR_COLOR = 2 }
2174
2175 enum : uint { DMDUP_SIMPLEX = 1 }
2176 enum : uint { DMDUP_VERTICAL = 2 }
2177 enum : uint { DMDUP_HORIZONTAL = 3 }
2178
2179 enum : uint { DMTT_BITMAP = 1 }
2180 enum : uint { DMTT_DOWNLOAD = 2 }
2181 enum : uint { DMTT_SUBDEV = 3 }
2182 // #if(WINVER >= 0x0400)
2183 enum : uint { DMTT_DOWNLOAD_OUTLINE = 4 }
2184 // #endif /* WINVER >= 0x0400 */
2185
2186 enum : uint { DMCOLLATE_FALSE = 0 }
2187 enum : uint { DMCOLLATE_TRUE = 1 }
2188
2189 enum : uint { DMDISPLAYFLAGS_TEXTMODE = 0x00000004 }
2190
2191 enum : uint { DMNUP_SYSTEM = 1 }
2192 enum : uint { DMNUP_ONEUP = 2 }
2193
2194 // #if(WINVER >= 0x0400)
2195
2196 enum : uint { DMICMMETHOD_NONE = 1 }
2197 enum : uint { DMICMMETHOD_SYSTEM = 2 }
2198 enum : uint { DMICMMETHOD_DRIVER = 3 }
2199 enum : uint { DMICMMETHOD_DEVICE = 4 }
2200
2201 enum : uint { DMICMMETHOD_USER = 256 }
2202
2203 enum : uint { DMICM_SATURATE = 1 }
2204 enum : uint { DMICM_CONTRAST = 2 }
2205 enum : uint { DMICM_COLORIMETRIC = 3 }
2206 enum : uint { DMICM_ABS_COLORIMETRIC = 4 }
2207
2208 enum : uint { DMICM_USER = 256 }
2209
2210 enum : uint { DMMEDIA_STANDARD = 1 }
2211 enum : uint { DMMEDIA_TRANSPARENCY = 2 }
2212 enum : uint { DMMEDIA_GLOSSY = 3 }
2213
2214 enum : uint { DMMEDIA_USER = 256 }
2215
2216 enum : uint { DMDITHER_NONE = 1 }
2217 enum : uint { DMDITHER_COARSE = 2 }
2218 enum : uint { DMDITHER_FINE = 3 }
2219 enum : uint { DMDITHER_LINEART = 4 }
2220 enum : uint { DMDITHER_ERRORDIFFUSION = 5 }
2221 enum : uint { DMDITHER_RESERVED6 = 6 }
2222 enum : uint { DMDITHER_RESERVED7 = 7 }
2223 enum : uint { DMDITHER_RESERVED8 = 8 }
2224 enum : uint { DMDITHER_RESERVED9 = 9 }
2225 enum : uint { DMDITHER_GRAYSCALE = 10 }
2226
2227 enum : uint { DMDITHER_USER = 256 }
2228 // #endif /* WINVER >= 0x0400 */
2229
2230 struct _DISPLAY_DEVICEA {
2231 DWORD cb;
2232 CHAR DeviceName[32];
2233 CHAR DeviceString[128];
2234 DWORD StateFlags;
2235 CHAR DeviceID[128];
2236 CHAR DeviceKey[128];
2237 }
2238 alias _DISPLAY_DEVICEA DISPLAY_DEVICEA;
2239 alias _DISPLAY_DEVICEA* PDISPLAY_DEVICEA;
2240 alias _DISPLAY_DEVICEA* LPDISPLAY_DEVICEA;
2241
2242 struct _DISPLAY_DEVICEW {
2243 DWORD cb;
2244 WCHAR DeviceName[32];
2245 WCHAR DeviceString[128];
2246 DWORD StateFlags;
2247 WCHAR DeviceID[128];
2248 WCHAR DeviceKey[128];
2249 }
2250 alias _DISPLAY_DEVICEW DISPLAY_DEVICEW;
2251 alias _DISPLAY_DEVICEW* PDISPLAY_DEVICEW;
2252 alias _DISPLAY_DEVICEW* LPDISPLAY_DEVICEW;
2253
2254 // #ifdef UNICODE
2255 alias DISPLAY_DEVICEW DISPLAY_DEVICE;
2256 alias PDISPLAY_DEVICEW PDISPLAY_DEVICE;
2257 alias LPDISPLAY_DEVICEW LPDISPLAY_DEVICE;
2258 // #else
2259 // ...
2260 // #endif // UNICODE
2261
2262 enum : uint { DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001 }
2263 enum : uint { DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002 }
2264 enum : uint { DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004 }
2265 enum : uint { DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008 }
2266 enum : uint { DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010 }
2267 enum : uint { DISPLAY_DEVICE_REMOVABLE = 0x00000020 }
2268 enum : uint { DISPLAY_DEVICE_MODESPRUNED = 0x08000000 }
2269 enum : uint { DISPLAY_DEVICE_REMOTE = 0x04000000 }
2270 enum : uint { DISPLAY_DEVICE_DISCONNECT = 0x02000000 }
2271
2272 enum : uint { DISPLAY_DEVICE_ACTIVE = 0x00000001 }
2273 enum : uint { DISPLAY_DEVICE_ATTACHED = 0x00000002 }
2274
2275 enum : uint { RDH_RECTANGLES = 1 }
2276
2277 struct _RGNDATAHEADER {
2278 DWORD dwSize;
2279 DWORD iType;
2280 DWORD nCount;
2281 DWORD nRgnSize;
2282 RECT rcBound;
2283 }
2284 alias _RGNDATAHEADER RGNDATAHEADER;
2285 alias _RGNDATAHEADER* PRGNDATAHEADER;
2286
2287 struct _RGNDATA {
2288 RGNDATAHEADER rdh;
2289 char Buffer[1];
2290 }
2291 alias _RGNDATA RGNDATA;
2292 alias _RGNDATA* PRGNDATA;
2293 alias _RGNDATA* NPRGNDATA;
2294 alias _RGNDATA* LPRGNDATA;
2295
2296 enum : uint { SYSRGN = 4 }
2297
2298 struct _ABC {
2299 int abcA;
2300 UINT abcB;
2301 int abcC;
2302 }
2303 alias _ABC ABC;
2304 alias _ABC* PABC;
2305 alias _ABC* NPABC;
2306 alias _ABC* LPABC;
2307
2308 struct _ABCFLOAT {
2309 FLOAT abcfA;
2310 FLOAT abcfB;
2311 FLOAT abcfC;
2312 }
2313 alias _ABCFLOAT ABCFLOAT;
2314 alias _ABCFLOAT* PABCFLOAT;
2315 alias _ABCFLOAT* NPABCFLOAT;
2316 alias _ABCFLOAT* LPABCFLOAT;
2317
2318 // #ifndef NOTEXTMETRIC
2319
2320 // #ifdef _MAC
2321 // #...
2322 // #endif
2323 struct _OUTLINETEXTMETRICA {
2324 UINT otmSize;
2325 TEXTMETRICA otmTextMetrics;
2326 BYTE otmFiller;
2327 PANOSE otmPanoseNumber;
2328 UINT otmfsSelection;
2329 UINT otmfsType;
2330 int otmsCharSlopeRise;
2331 int otmsCharSlopeRun;
2332 int otmItalicAngle;
2333 UINT otmEMSquare;
2334 int otmAscent;
2335 int otmDescent;
2336 UINT otmLineGap;
2337 UINT otmsCapEmHeight;
2338 UINT otmsXHeight;
2339 RECT otmrcFontBox;
2340 int otmMacAscent;
2341 int otmMacDescent;
2342 UINT otmMacLineGap;
2343 UINT otmusMinimumPPEM;
2344 POINT otmptSubscriptSize;
2345 POINT otmptSubscriptOffset;
2346 POINT otmptSuperscriptSize;
2347 POINT otmptSuperscriptOffset;
2348 UINT otmsStrikeoutSize;
2349 int otmsStrikeoutPosition;
2350 int otmsUnderscoreSize;
2351 int otmsUnderscorePosition;
2352 PSTR otmpFamilyName;
2353 PSTR otmpFaceName;
2354 PSTR otmpStyleName;
2355 PSTR otmpFullName;
2356 }
2357 alias _OUTLINETEXTMETRICA OUTLINETEXTMETRICA;
2358 alias _OUTLINETEXTMETRICA* POUTLINETEXTMETRICA;
2359 alias _OUTLINETEXTMETRICA* NPOUTLINETEXTMETRICA;
2360 alias _OUTLINETEXTMETRICA* LPOUTLINETEXTMETRICA;
2361
2362 struct _OUTLINETEXTMETRICW {
2363 UINT otmSize;
2364 TEXTMETRICW otmTextMetrics;
2365 BYTE otmFiller;
2366 PANOSE otmPanoseNumber;
2367 UINT otmfsSelection;
2368 UINT otmfsType;
2369 int otmsCharSlopeRise;
2370 int otmsCharSlopeRun;
2371 int otmItalicAngle;
2372 UINT otmEMSquare;
2373 int otmAscent;
2374 int otmDescent;
2375 UINT otmLineGap;
2376 UINT otmsCapEmHeight;
2377 UINT otmsXHeight;
2378 RECT otmrcFontBox;
2379 int otmMacAscent;
2380 int otmMacDescent;
2381 UINT otmMacLineGap;
2382 UINT otmusMinimumPPEM;
2383 POINT otmptSubscriptSize;
2384 POINT otmptSubscriptOffset;
2385 POINT otmptSuperscriptSize;
2386 POINT otmptSuperscriptOffset;
2387 UINT otmsStrikeoutSize;
2388 int otmsStrikeoutPosition;
2389 int otmsUnderscoreSize;
2390 int otmsUnderscorePosition;
2391 PSTR otmpFamilyName;
2392 PSTR otmpFaceName;
2393 PSTR otmpStyleName;
2394 PSTR otmpFullName;
2395 }
2396 alias _OUTLINETEXTMETRICW OUTLINETEXTMETRICW;
2397 alias _OUTLINETEXTMETRICW* POUTLINETEXTMETRICW;
2398 alias _OUTLINETEXTMETRICW* NPOUTLINETEXTMETRICW;
2399 alias _OUTLINETEXTMETRICW* LPOUTLINETEXTMETRICW;
2400
2401 // #ifdef UNICODE
2402 alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC;
2403 alias POUTLINETEXTMETRICW POUTLINETEXTMETRIC;
2404 alias NPOUTLINETEXTMETRICW NPOUTLINETEXTMETRIC;
2405 alias LPOUTLINETEXTMETRICW LPOUTLINETEXTMETRIC;
2406 // #else
2407 // ...
2408 // #endif // UNICODE
2409
2410 // #ifdef _MAC
2411 // #...
2412 // #endif
2413
2414 // #endif /* NOTEXTMETRIC */
2415
2416 struct tagPOLYTEXTA {
2417 int x;
2418 int y;
2419 UINT n;
2420 LPCSTR lpstr;
2421 UINT uiFlags;
2422 RECT rcl;
2423 int *pdx;
2424 }
2425 alias tagPOLYTEXTA POLYTEXTA;
2426 alias tagPOLYTEXTA* PPOLYTEXTA;
2427 alias tagPOLYTEXTA* NPPOLYTEXTA;
2428 alias tagPOLYTEXTA* LPPOLYTEXTA;
2429
2430 struct tagPOLYTEXTW {
2431 int x;
2432 int y;
2433 UINT n;
2434 LPCWSTR lpstr;
2435 UINT uiFlags;
2436 RECT rcl;
2437 int *pdx;
2438 }
2439 alias tagPOLYTEXTW POLYTEXTW;
2440 alias tagPOLYTEXTW* PPOLYTEXTW;
2441 alias tagPOLYTEXTW* NPPOLYTEXTW;
2442 alias tagPOLYTEXTW* LPPOLYTEXTW;
2443
2444 // #ifdef UNICODE
2445 alias POLYTEXTW POLYTEXT;
2446 alias PPOLYTEXTW PPOLYTEXT;
2447 alias NPPOLYTEXTW NPPOLYTEXT;
2448 alias LPPOLYTEXTW LPPOLYTEXT;
2449 // #else
2450 // ...
2451 // #endif // UNICODE
2452
2453 struct _FIXED {
2454 // #ifndef _MAC
2455 WORD fract;
2456 short value;
2457 // #else
2458 // ...
2459 // #endif
2460 }
2461 alias _FIXED FIXED;
2462
2463 struct _MAT2 {
2464 FIXED eM11;
2465 FIXED eM12;
2466 FIXED eM21;
2467 FIXED eM22;
2468 }
2469 alias _MAT2 MAT2;
2470 alias _MAT2* LPMAT2;
2471
2472 struct _GLYPHMETRICS {
2473 UINT gmBlackBoxX;
2474 UINT gmBlackBoxY;
2475 POINT gmptGlyphOrigin;
2476 short gmCellIncX;
2477 short gmCellIncY;
2478 }
2479 alias _GLYPHMETRICS GLYPHMETRICS;
2480 alias _GLYPHMETRICS* LPGLYPHMETRICS;
2481
2482 enum : uint { GGO_METRICS = 0 }
2483 enum : uint { GGO_BITMAP = 1 }
2484 enum : uint { GGO_NATIVE = 2 }
2485 enum : uint { GGO_BEZIER = 3 }
2486
2487 // #if(WINVER >= 0x0400)
2488 enum : uint { GGO_GRAY2_BITMAP = 4 }
2489 enum : uint { GGO_GRAY4_BITMAP = 5 }
2490 enum : uint { GGO_GRAY8_BITMAP = 6 }
2491 enum : uint { GGO_GLYPH_INDEX = 0x0080 }
2492 // #endif /* WINVER >= 0x0400 */
2493
2494 // #if (_WIN32_WINNT >= 0x0500)
2495 enum : uint { GGO_UNHINTED = 0x0100 }
2496 // #endif // (_WIN32_WINNT >= 0x0500)
2497
2498 enum : uint { TT_POLYGON_TYPE = 24 }
2499
2500 enum : uint { TT_PRIM_LINE = 1 }
2501 enum : uint { TT_PRIM_QSPLINE = 2 }
2502 enum : uint { TT_PRIM_CSPLINE = 3 }
2503
2504 struct tagPOINTFX {
2505 FIXED x;
2506 FIXED y;
2507 }
2508 alias tagPOINTFX POINTFX;
2509 alias tagPOINTFX* LPPOINTFX;
2510
2511 struct tagTTPOLYCURVE {
2512 WORD wType;
2513 WORD cpfx;
2514 POINTFX apfx[1];
2515 }
2516 alias tagTTPOLYCURVE TTPOLYCURVE;
2517 alias tagTTPOLYCURVE* LPTTPOLYCURVE;
2518
2519 struct tagTTPOLYGONHEADER {
2520 DWORD cb;
2521 DWORD dwType;
2522 POINTFX pfxStart;
2523 }
2524 alias tagTTPOLYGONHEADER TTPOLYGONHEADER;
2525 alias tagTTPOLYGONHEADER* LPTTPOLYGONHEADER;
2526
2527 // #if(WINVER >= 0x0400)
2528 enum : uint { GCP_DBCS = 0x0001 }
2529 enum : uint { GCP_REORDER = 0x0002 }
2530 enum : uint { GCP_USEKERNING = 0x0008 }
2531 enum : uint { GCP_GLYPHSHAPE = 0x0010 }
2532 enum : uint { GCP_LIGATE = 0x0020 }
2533
2534 enum : uint { GCP_DIACRITIC = 0x0100 }
2535 enum : uint { GCP_KASHIDA = 0x0400 }
2536 enum : uint { GCP_ERROR = 0x8000 }
2537 enum : uint { FLI_MASK = 0x103B }
2538
2539 enum : uint { GCP_JUSTIFY = 0x00010000 }
2540
2541 enum : uint { FLI_GLYPHS = 0x00040000 }
2542 enum : uint { GCP_CLASSIN = 0x00080000 }
2543 enum : uint { GCP_MAXEXTENT = 0x00100000 }
2544 enum : uint { GCP_JUSTIFYIN = 0x00200000 }
2545 enum : uint { GCP_DISPLAYZWG = 0x00400000 }
2546 enum : uint { GCP_SYMSWAPOFF = 0x00800000 }
2547 enum : uint { GCP_NUMERICOVERRIDE = 0x01000000 }
2548 enum : uint { GCP_NEUTRALOVERRIDE = 0x02000000 }
2549 enum : uint { GCP_NUMERICSLATIN = 0x04000000 }
2550 enum : uint { GCP_NUMERICSLOCAL = 0x08000000 }
2551
2552 enum : uint { GCPCLASS_LATIN = 1 }
2553 enum : uint { GCPCLASS_HEBREW = 2 }
2554 enum : uint { GCPCLASS_ARABIC = 2 }
2555 enum : uint { GCPCLASS_NEUTRAL = 3 }
2556 enum : uint { GCPCLASS_LOCALNUMBER = 4 }
2557 enum : uint { GCPCLASS_LATINNUMBER = 5 }
2558 enum : uint { GCPCLASS_LATINNUMERICTERMINATOR = 6 }
2559 enum : uint { GCPCLASS_LATINNUMERICSEPARATOR = 7 }
2560 enum : uint { GCPCLASS_NUMERICSEPARATOR = 8 }
2561 enum : uint { GCPCLASS_PREBOUNDLTR = 0x80 }
2562 enum : uint { GCPCLASS_PREBOUNDRTL = 0x40 }
2563 enum : uint { GCPCLASS_POSTBOUNDLTR = 0x20 }
2564 enum : uint { GCPCLASS_POSTBOUNDRTL = 0x10 }
2565
2566 enum : uint { GCPGLYPH_LINKBEFORE = 0x8000 }
2567 enum : uint { GCPGLYPH_LINKAFTER = 0x4000 }
2568
2569 struct tagGCP_RESULTSA {
2570 DWORD lStructSize;
2571 LPSTR lpOutString;
2572 UINT *lpOrder;
2573 int *lpDx;
2574 int *lpCaretPos;
2575 LPSTR lpClass;
2576 LPWSTR lpGlyphs;
2577 UINT nGlyphs;
2578 int nMaxFit;
2579 }
2580 alias tagGCP_RESULTSA GCP_RESULTSA;
2581 alias tagGCP_RESULTSA* LPGCP_RESULTSA;
2582
2583 struct tagGCP_RESULTSW {
2584 DWORD lStructSize;
2585 LPWSTR lpOutString;
2586 UINT *lpOrder;
2587 int *lpDx;
2588 int *lpCaretPos;
2589 LPSTR lpClass;
2590 LPWSTR lpGlyphs;
2591 UINT nGlyphs;
2592 int nMaxFit;
2593 }
2594 alias tagGCP_RESULTSW GCP_RESULTSW;
2595 alias tagGCP_RESULTSW* LPGCP_RESULTSW;
2596
2597 // #ifdef UNICODE
2598 alias GCP_RESULTSW GCP_RESULTS;
2599 alias LPGCP_RESULTSW LPGCP_RESULTS;
2600 // #else
2601 // ...
2602 // #endif // UNICODE
2603 // #endif /* WINVER >= 0x0400 */
2604
2605 struct _RASTERIZER_STATUS {
2606 short nSize;
2607 short wFlags;
2608 short nLanguageID;
2609 }
2610 alias _RASTERIZER_STATUS RASTERIZER_STATUS;
2611 alias _RASTERIZER_STATUS* LPRASTERIZER_STATUS;
2612
2613 enum : uint { TT_AVAILABLE = 0x0001 }
2614 enum : uint { TT_ENABLED = 0x0002 }
2615
2616 struct tagPIXELFORMATDESCRIPTOR {
2617 WORD nSize;
2618 WORD nVersion;
2619 DWORD dwFlags;
2620 BYTE iPixelType;
2621 BYTE cColorBits;
2622 BYTE cRedBits;
2623 BYTE cRedShift;
2624 BYTE cGreenBits;
2625 BYTE cGreenShift;
2626 BYTE cBlueBits;
2627 BYTE cBlueShift;
2628 BYTE cAlphaBits;
2629 BYTE cAlphaShift;
2630 BYTE cAccumBits;
2631 BYTE cAccumRedBits;
2632 BYTE cAccumGreenBits;
2633 BYTE cAccumBlueBits;
2634 BYTE cAccumAlphaBits;
2635 BYTE cDepthBits;
2636 BYTE cStencilBits;
2637 BYTE cAuxBuffers;
2638 BYTE iLayerType;
2639 BYTE bReserved;
2640 DWORD dwLayerMask;
2641 DWORD dwVisibleMask;
2642 DWORD dwDamageMask;
2643 }
2644 alias tagPIXELFORMATDESCRIPTOR PIXELFORMATDESCRIPTOR;
2645 alias tagPIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR;
2646 alias tagPIXELFORMATDESCRIPTOR* LPPIXELFORMATDESCRIPTOR;
2647
2648 enum : uint { PFD_TYPE_RGBA = 0 }
2649 enum : uint { PFD_TYPE_COLORINDEX = 1 }
2650
2651 enum : uint { PFD_MAIN_PLANE = 0 }
2652 enum : uint { PFD_OVERLAY_PLANE = 1 }
2653 enum { PFD_UNDERLAY_PLANE = -1 }
2654
2655 enum : uint { PFD_DOUBLEBUFFER = 0x00000001 }
2656 enum : uint { PFD_STEREO = 0x00000002 }
2657 enum : uint { PFD_DRAW_TO_WINDOW = 0x00000004 }
2658 enum : uint { PFD_DRAW_TO_BITMAP = 0x00000008 }
2659 enum : uint { PFD_SUPPORT_GDI = 0x00000010 }
2660 enum : uint { PFD_SUPPORT_OPENGL = 0x00000020 }
2661 enum : uint { PFD_GENERIC_FORMAT = 0x00000040 }
2662 enum : uint { PFD_NEED_PALETTE = 0x00000080 }
2663 enum : uint { PFD_NEED_SYSTEM_PALETTE = 0x00000100 }
2664 enum : uint { PFD_SWAP_EXCHANGE = 0x00000200 }
2665 enum : uint { PFD_SWAP_COPY = 0x00000400 }
2666 enum : uint { PFD_SWAP_LAYER_BUFFERS = 0x00000800 }
2667 enum : uint { PFD_GENERIC_ACCELERATED = 0x00001000 }
2668 enum : uint { PFD_SUPPORT_DIRECTDRAW = 0x00002000 }
2669
2670 enum : uint { PFD_DEPTH_DONTCARE = 0x20000000 }
2671 enum : uint { PFD_DOUBLEBUFFER_DONTCARE = 0x40000000 }
2672 enum : uint { PFD_STEREO_DONTCARE = 0x80000000 }
2673
2674 // #ifdef STRICT
2675 // #if !defined(NOTEXTMETRIC)
2676 extern(Windows) alias int function( LOGFONTA *, TEXTMETRICA *, DWORD, LPARAM) OLDFONTENUMPROCA;
2677 extern(Windows) alias int function( LOGFONTW *, TEXTMETRICW *, DWORD, LPARAM) OLDFONTENUMPROCW;
2678 // #ifdef UNICODE
2679 alias OLDFONTENUMPROCW OLDFONTENUMPROC;
2680 // #else
2681 // #...
2682 // #endif // !UNICODE
2683 // #else
2684 // ...
2685 // #ifdef UNICODE
2686 // #...
2687 // #else
2688 // #...
2689 // #endif // !UNICODE
2690 // #endif
2691
2692 alias OLDFONTENUMPROCA FONTENUMPROCA;
2693 alias OLDFONTENUMPROCW FONTENUMPROCW;
2694 // #ifdef UNICODE
2695 alias FONTENUMPROCW FONTENUMPROC;
2696 // #else
2697 // ...
2698 // #endif // UNICODE
2699
2700 extern(Windows) alias int function(LPVOID, LPARAM) GOBJENUMPROC;
2701 extern(Windows) alias VOID function(int, int, LPARAM) LINEDDAPROC;
2702 // #else
2703 // ...
2704 // #ifdef UNICODE
2705 // ...
2706 // #else
2707 // ...
2708 // #endif // UNICODE
2709 // ...
2710 // #endif
2711
2712 extern(Windows) export int AddFontResourceA(LPCSTR);
2713 extern(Windows) export int AddFontResourceW(LPCWSTR);
2714 // #ifdef UNICODE
2715 alias AddFontResourceW AddFontResource;
2716 // #else
2717 // #...
2718 // #endif // !UNICODE
2719
2720 extern(Windows) export BOOL AnimatePalette(HPALETTE, UINT, UINT, PALETTEENTRY *);
2721 extern(Windows) export BOOL Arc(HDC, int, int, int, int, int, int, int, int);
2722 extern(Windows) export BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
2723 extern(Windows) export BOOL CancelDC(HDC);
2724 extern(Windows) export BOOL Chord(HDC, int, int, int, int, int, int, int, int);
2725 extern(Windows) export int ChoosePixelFormat(HDC, PIXELFORMATDESCRIPTOR *);
2726 extern(Windows) export HMETAFILE CloseMetaFile(HDC);
2727 extern(Windows) export int CombineRgn(HRGN, HRGN, HRGN, int);
2728 extern(Windows) export HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR);
2729 extern(Windows) export HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR);
2730 // #ifdef UNICODE
2731 alias CopyMetaFileW CopyMetaFile;
2732 // #else
2733 // #...
2734 // #endif // !UNICODE
2735 extern(Windows) export HBITMAP CreateBitmap(int, int, UINT, UINT, VOID *);
2736 extern(Windows) export HBITMAP CreateBitmapIndirect(BITMAP *);
2737 extern(Windows) export HBRUSH CreateBrushIndirect(LOGBRUSH *);
2738 extern(Windows) export HBITMAP CreateCompatibleBitmap(HDC, int, int);
2739 extern(Windows) export HBITMAP CreateDiscardableBitmap(HDC, int, int);
2740 extern(Windows) export HDC CreateCompatibleDC(HDC);
2741 extern(Windows) export HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, DEVMODEA *);
2742 extern(Windows) export HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, DEVMODEW *);
2743 // #ifdef UNICODE
2744 alias CreateDCW CreateDC;
2745 // #else
2746 // #...
2747 // #endif // !UNICODE
2748 extern(Windows) export HBITMAP CreateDIBitmap(HDC, BITMAPINFOHEADER *, DWORD, VOID *, BITMAPINFO *, UINT);
2749 extern(Windows) export HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT);
2750 extern(Windows) export HBRUSH CreateDIBPatternBrushPt(VOID *, UINT);
2751 extern(Windows) export HRGN CreateEllipticRgn(int, int, int, int);
2752 extern(Windows) export HRGN CreateEllipticRgnIndirect(RECT *);
2753 extern(Windows) export HFONT CreateFontIndirectA(LOGFONTA *);
2754 extern(Windows) export HFONT CreateFontIndirectW(LOGFONTW *);
2755 // #ifdef UNICODE
2756 alias CreateFontIndirectW CreateFontIndirect;
2757 // #else
2758 // #...
2759 // #endif // !UNICODE
2760 extern(Windows) export HFONT CreateFontA(int, int, int, int, int, DWORD,
2761 DWORD, DWORD, DWORD, DWORD, DWORD,
2762 DWORD, DWORD, LPCSTR);
2763 extern(Windows) export HFONT CreateFontW(int, int, int, int, int, DWORD,
2764 DWORD, DWORD, DWORD, DWORD, DWORD,
2765 DWORD, DWORD, LPCWSTR);
2766 // #ifdef UNICODE
2767 alias CreateFontW CreateFont;
2768 // #else
2769 // #...
2770 // #endif // !UNICODE
2771
2772 extern(Windows) export HBRUSH CreateHatchBrush(int, COLORREF);
2773 extern(Windows) export HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, DEVMODEA *);
2774 extern(Windows) export HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, DEVMODEW *);
2775 // #ifdef UNICODE
2776 alias CreateICW CreateIC;
2777 // #else
2778 // #...
2779 // #endif // !UNICODE
2780 extern(Windows) export HDC CreateMetaFileA(LPCSTR);
2781 extern(Windows) export HDC CreateMetaFileW(LPCWSTR);
2782 // #ifdef UNICODE
2783 alias CreateMetaFileW CreateMetaFile;
2784 // #else
2785 // #...
2786 // #endif // !UNICODE
2787 extern(Windows) export HPALETTE CreatePalette(LOGPALETTE *);
2788 extern(Windows) export HPEN CreatePen(int, int, COLORREF);
2789 extern(Windows) export HPEN CreatePenIndirect(LOGPEN *);
2790 extern(Windows) export HRGN CreatePolyPolygonRgn(POINT *, INT *, int, int);
2791 extern(Windows) export HBRUSH CreatePatternBrush(HBITMAP);
2792 extern(Windows) export HRGN CreateRectRgn(int, int, int, int);
2793 extern(Windows) export HRGN CreateRectRgnIndirect(RECT *);
2794 extern(Windows) export HRGN CreateRoundRectRgn(int, int, int, int, int, int);
2795 extern(Windows) export BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR);
2796 extern(Windows) export BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR);
2797 // #ifdef UNICODE
2798 alias CreateScalableFontResourceW CreateScalableFontResource;
2799 // #else
2800 // #...
2801 // #endif // !UNICODE
2802 extern(Windows) export HBRUSH CreateSolidBrush(COLORREF);
2803
2804 extern(Windows) export BOOL DeleteDC(HDC);
2805 extern(Windows) export BOOL DeleteMetaFile(HMETAFILE);
2806 extern(Windows) export BOOL DeleteObject(HGDIOBJ);
2807 extern(Windows) export int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
2808
2809 extern(Windows) alias UINT function(HWND, HMODULE, LPDEVMODE, LPSTR, LPSTR, LPDEVMODE, LPSTR, UINT) LPFNDEVMODE;
2810
2811 extern(Windows) alias DWORD function(LPSTR, LPSTR, UINT, LPSTR, LPDEVMODE) LPFNDEVCAPS;
2812
2813 enum : uint { DM_UPDATE = 1 }
2814 enum : uint { DM_COPY = 2 }
2815 enum : uint { DM_PROMPT = 4 }
2816 enum : uint { DM_MODIFY = 8 }
2817
2818 alias DM_MODIFY DM_IN_BUFFER;
2819 alias DM_PROMPT DM_IN_PROMPT;
2820 alias DM_COPY DM_OUT_BUFFER;
2821 alias DM_UPDATE DM_OUT_DEFAULT;
2822
2823 enum : uint { DC_FIELDS = 1 }
2824 enum : uint { DC_PAPERS = 2 }
2825 enum : uint { DC_PAPERSIZE = 3 }
2826 enum : uint { DC_MINEXTENT = 4 }
2827 enum : uint { DC_MAXEXTENT = 5 }
2828 enum : uint { DC_BINS = 6 }
2829 enum : uint { DC_DUPLEX = 7 }
2830 enum : uint { DC_SIZE = 8 }
2831 enum : uint { DC_EXTRA = 9 }
2832 enum : uint { DC_VERSION = 10 }
2833 enum : uint { DC_DRIVER = 11 }
2834 enum : uint { DC_BINNAMES = 12 }
2835 enum : uint { DC_ENUMRESOLUTIONS = 13 }
2836 enum : uint { DC_FILEDEPENDENCIES = 14 }
2837 enum : uint { DC_TRUETYPE = 15 }
2838 enum : uint { DC_PAPERNAMES = 16 }
2839 enum : uint { DC_ORIENTATION = 17 }
2840 enum : uint { DC_COPIES = 18 }
2841 // #if(WINVER >= 0x0400)
2842 enum : uint { DC_BINADJUST = 19 }
2843 enum : uint { DC_EMF_COMPLIANT = 20 }
2844 enum : uint { DC_DATATYPE_PRODUCED = 21 }
2845 enum : uint { DC_COLLATE = 22 }
2846 enum : uint { DC_MANUFACTURER = 23 }
2847 enum : uint { DC_MODEL = 24 }
2848 // #endif /* WINVER >= 0x0400 */
2849
2850 // #if(WINVER >= 0x0500)
2851 enum : uint { DC_PERSONALITY = 25 }
2852 enum : uint { DC_PRINTRATE = 26 }
2853 enum : uint { DC_PRINTRATEUNIT = 27 }
2854 enum : uint { PRINTRATEUNIT_PPM = 1 }
2855 enum : uint { PRINTRATEUNIT_CPS = 2 }
2856 enum : uint { PRINTRATEUNIT_LPM = 3 }
2857 enum : uint { PRINTRATEUNIT_IPM = 4 }
2858 enum : uint { DC_PRINTERMEM = 28 }
2859 enum : uint { DC_MEDIAREADY = 29 }
2860 enum : uint { DC_STAPLE = 30 }
2861 enum : uint { DC_PRINTRATEPPM = 31 }
2862 enum : uint { DC_COLORDEVICE = 32 }
2863 enum : uint { DC_NUP = 33 }
2864 enum : uint { DC_MEDIATYPENAMES = 34 }
2865 enum : uint { DC_MEDIATYPES = 35 }
2866 // #endif /* WINVER >= 0x0500 */
2867
2868 enum : uint { DCTT_BITMAP = 0x0000001 }
2869 enum : uint { DCTT_DOWNLOAD = 0x0000002 }
2870 enum : uint { DCTT_SUBDEV = 0x0000004 }
2871 // #if(WINVER >= 0x0400)
2872 enum : uint { DCTT_DOWNLOAD_OUTLINE = 0x0000008 }
2873
2874 enum : uint { DCBA_FACEUPNONE = 0x0000 }
2875 enum : uint { DCBA_FACEUPCENTER = 0x0001 }
2876 enum : uint { DCBA_FACEUPLEFT = 0x0002 }
2877 enum : uint { DCBA_FACEUPRIGHT = 0x0003 }
2878 enum : uint { DCBA_FACEDOWNNONE = 0x0100 }
2879 enum : uint { DCBA_FACEDOWNCENTER = 0x0101 }
2880 enum : uint { DCBA_FACEDOWNLEFT = 0x0102 }
2881 enum : uint { DCBA_FACEDOWNRIGHT = 0x0103 }
2882 // #endif /* WINVER >= 0x0400 */
2883
2884 extern(Windows) export int DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD,
2885 LPSTR, DEVMODEA *);
2886 extern(Windows) export int DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD,
2887 LPWSTR, DEVMODEW *);
2888 // #ifdef UNICODE
2889 alias DeviceCapabilitiesW DeviceCapabilities;
2890 // #else
2891 // #...
2892 // #endif // !UNICODE
2893
2894 extern(Windows) export int DrawEscape(HDC, int, int, LPCSTR);
2895 extern(Windows) export BOOL Ellipse(HDC, int, int, int, int);
2896
2897 // #if(WINVER >= 0x0400)
2898 extern(Windows) export int EnumFontFamiliesExA(HDC, LPLOGFONTA, FONTENUMPROCA, LPARAM, DWORD);
2899 extern(Windows) export int EnumFontFamiliesExW(HDC, LPLOGFONTW, FONTENUMPROCW, LPARAM, DWORD);
2900 // #ifdef UNICODE
2901 alias EnumFontFamiliesExW EnumFontFamiliesEx;
2902 // #else
2903 // #...
2904 // #endif // !UNICODE
2905 // #endif /* WINVER >= 0x0400 */
2906
2907 extern(Windows) export int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM);
2908 extern(Windows) export int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM);
2909 // #ifdef UNICODE
2910 alias EnumFontFamiliesW EnumFontFamilies;
2911 // #else
2912 // #...
2913 // #endif // !UNICODE
2914 extern(Windows) export int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM);
2915 extern(Windows) export int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM);
2916 // #ifdef UNICODE
2917 alias EnumFontsW EnumFonts;
2918 // #else
2919 // #...
2920 // #endif // !UNICODE
2921
2922 // #ifdef STRICT
2923 extern(Windows) export int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM);
2924 // #else
2925 // ...
2926 // #endif
2927
2928 extern(Windows) export BOOL EqualRgn(HRGN, HRGN);
2929 extern(Windows) export int Escape(HDC, int, int, LPCSTR, LPVOID);
2930 extern(Windows) export int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR);
2931 extern(Windows) export int ExcludeClipRect(HDC, int, int, int, int);
2932 extern(Windows) export HRGN ExtCreateRegion(XFORM *, DWORD, RGNDATA *);
2933 extern(Windows) export BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT);
2934 extern(Windows) export BOOL FillRgn(HDC, HRGN, HBRUSH);
2935 extern(Windows) export BOOL FloodFill(HDC, int, int, COLORREF);
2936 extern(Windows) export BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int);
2937 extern(Windows) export int GetROP2(HDC);
2938 extern(Windows) export BOOL GetAspectRatioFilterEx(HDC, LPSIZE);
2939 extern(Windows) export COLORREF GetBkColor(HDC);
2940
2941 // #if (_WIN32_WINNT >= 0x0500)
2942 extern(Windows) export COLORREF GetDCBrushColor(HDC);
2943 extern(Windows) export COLORREF GetDCPenColor(HDC);
2944 // #endif
2945
2946 extern(Windows) export int GetBkMode(HDC);
2947 extern(Windows) export LONG GetBitmapBits(HBITMAP, LONG, LPVOID);
2948 extern(Windows) export BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE);
2949 extern(Windows) export UINT GetBoundsRect(HDC, LPRECT, UINT);
2950
2951 extern(Windows) export BOOL GetBrushOrgEx(HDC, LPPOINT);
2952
2953 extern(Windows) export BOOL GetCharWidthA(HDC, UINT, UINT, LPINT);
2954 extern(Windows) export BOOL GetCharWidthW(HDC, UINT, UINT, LPINT);
2955 // #ifdef UNICODE
2956 alias GetCharWidthW GetCharWidth;
2957 // #else
2958 // #...
2959 // #endif // !UNICODE
2960 extern(Windows) export BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT);
2961 extern(Windows) export BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT);
2962 // #ifdef UNICODE
2963 alias GetCharWidth32W GetCharWidth32;
2964 // #else
2965 // #...
2966 // #endif // !UNICODE
2967 extern(Windows) export BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT);
2968 extern(Windows) export BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT);
2969 // #ifdef UNICODE
2970 alias GetCharWidthFloatW GetCharWidthFloat;
2971 // #else
2972 // #...
2973 // #endif // !UNICODE
2974 extern(Windows) export BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC);
2975 extern(Windows) export BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC);
2976 // #ifdef UNICODE
2977 alias GetCharABCWidthsW GetCharABCWidths;
2978 // #else
2979 // #...
2980 // #endif // !UNICODE
2981 extern(Windows) export BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT);
2982 extern(Windows) export BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT);
2983 // #ifdef UNICODE
2984 alias GetCharABCWidthsFloatW GetCharABCWidthsFloat;
2985 // #else
2986 // #...
2987 // #endif // !UNICODE
2988 extern(Windows) export int GetClipBox(HDC, LPRECT);
2989 extern(Windows) export int GetClipRgn(HDC, HRGN);
2990 extern(Windows) export int GetMetaRgn(HDC, HRGN);
2991 extern(Windows) export HGDIOBJ GetCurrentObject(HDC, UINT);
2992 extern(Windows) export BOOL GetCurrentPositionEx(HDC, LPPOINT);
2993 extern(Windows) export int GetDeviceCaps(HDC, int);
2994 extern(Windows) export int GetDIBits(HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT);
2995 extern(Windows) export DWORD GetFontData(HDC, DWORD, DWORD, LPVOID, DWORD);
2996 extern(Windows) export DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, MAT2 *);
2997 extern(Windows) export DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, MAT2 *);
2998 // #ifdef UNICODE
2999 alias GetGlyphOutlineW GetGlyphOutline;
3000 // #else
3001 // #...
3002 // #endif // !UNICODE
3003 extern(Windows) export int GetGraphicsMode(HDC);
3004 extern(Windows) export int GetMapMode(HDC);
3005 extern(Windows) export UINT GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID);
3006 extern(Windows) export HMETAFILE GetMetaFileA(LPCSTR);
3007 extern(Windows) export HMETAFILE GetMetaFileW(LPCWSTR);
3008 // #ifdef UNICODE
3009 alias GetMetaFileW GetMetaFile;
3010 // #else
3011 // #...
3012 // #endif // !UNICODE
3013 extern(Windows) export COLORREF GetNearestColor(HDC, COLORREF);
3014 extern(Windows) export UINT GetNearestPaletteIndex(HPALETTE, COLORREF);
3015 extern(Windows) export DWORD GetObjectType(HGDIOBJ h);
3016
3017 // #ifndef NOTEXTMETRIC
3018
3019 extern(Windows) export UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA);
3020 extern(Windows) export UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW);
3021 // #ifdef UNICODE
3022 alias GetOutlineTextMetricsW GetOutlineTextMetrics;
3023 // #else
3024 // #...
3025 // #endif // !UNICODE
3026
3027 // #endif /* NOTEXTMETRIC */
3028
3029 extern(Windows) export UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY);
3030 extern(Windows) export COLORREF GetPixel(HDC, int, int);
3031 extern(Windows) export int GetPixelFormat(HDC);
3032 extern(Windows) export int GetPolyFillMode(HDC);
3033 extern(Windows) export BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT);
3034 extern(Windows) export int GetRandomRgn(HDC, HRGN, INT);
3035 extern(Windows) export DWORD GetRegionData(HRGN, DWORD, LPRGNDATA);
3036 extern(Windows) export int GetRgnBox(HRGN, LPRECT);
3037 extern(Windows) export HGDIOBJ GetStockObject(int);
3038 extern(Windows) export int GetStretchBltMode(HDC);
3039 extern(Windows) export UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY);
3040 extern(Windows) export UINT GetSystemPaletteUse(HDC);
3041 extern(Windows) export int GetTextCharacterExtra(HDC);
3042 extern(Windows) export UINT GetTextAlign(HDC);
3043 extern(Windows) export COLORREF GetTextColor(HDC);
3044
3045 extern(Windows) export BOOL GetTextExtentPointA(
3046 HDC,
3047 LPCSTR,
3048 int,
3049 LPSIZE);
3050 extern(Windows) export BOOL GetTextExtentPointW(
3051 HDC,
3052 LPCWSTR,
3053 int,
3054 LPSIZE);
3055 // #ifdef UNICODE
3056 alias GetTextExtentPointW GetTextExtentPoint;
3057 // #else
3058 // #...
3059 // #endif // !UNICODE
3060
3061 extern(Windows) export BOOL GetTextExtentPoint32A(
3062 HDC,
3063 LPCSTR,
3064 int,
3065 LPSIZE);
3066 extern(Windows) export BOOL GetTextExtentPoint32W(
3067 HDC,
3068 LPCWSTR,
3069 int,
3070 LPSIZE);
3071 // #ifdef UNICODE
3072 alias GetTextExtentPoint32W GetTextExtentPoint32;
3073 // #else
3074 // #...
3075 // #endif // !UNICODE
3076
3077 extern(Windows) export BOOL GetTextExtentExPointA(
3078 HDC,
3079 LPCSTR,
3080 int,
3081 int,
3082 LPINT,
3083 LPINT,
3084 LPSIZE);
3085 extern(Windows) export BOOL GetTextExtentExPointW(
3086 HDC,
3087 LPCWSTR,
3088 int,
3089 int,
3090 LPINT,
3091 LPINT,
3092 LPSIZE);
3093 // #ifdef UNICODE
3094 alias GetTextExtentExPointW GetTextExtentExPoint;
3095 // #else
3096 // #...
3097 // #endif // !UNICODE
3098 // #if(WINVER >= 0x0400)
3099 extern(Windows) export int GetTextCharset(HDC hdc);
3100 extern(Windows) export int GetTextCharsetInfo(HDC hdc, LPFONTSIGNATURE lpSig, DWORD dwFlags);
3101 extern(Windows) export BOOL TranslateCharsetInfo(DWORD *lpSrc, LPCHARSETINFO lpCs, DWORD dwFlags);
3102 extern(Windows) export DWORD GetFontLanguageInfo(HDC );
3103 extern(Windows) export DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD);
3104 extern(Windows) export DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD);
3105 // #ifdef UNICODE
3106 alias GetCharacterPlacementW GetCharacterPlacement;
3107 // #else
3108 // #...
3109 // #endif // !UNICODE
3110 // #endif /* WINVER >= 0x0400 */
3111
3112 // #if (_WIN32_WINNT >= 0x0500)
3113
3114 struct tagWCRANGE {
3115 WCHAR wcLow;
3116 USHORT cGlyphs;
3117 }
3118 alias tagWCRANGE WCRANGE;
3119 alias tagWCRANGE* PWCRANGE;
3120 alias tagWCRANGE* LPWCRANGE;
3121
3122 struct tagGLYPHSET {
3123 DWORD cbThis;
3124 DWORD flAccel;
3125 DWORD cGlyphsSupported;
3126 DWORD cRanges;
3127 WCRANGE ranges[1];
3128 }
3129 alias tagGLYPHSET GLYPHSET;
3130 alias tagGLYPHSET* PGLYPHSET;
3131 alias tagGLYPHSET* LPGLYPHSET;
3132
3133 enum : uint { GS_8BIT_INDICES = 0x00000001 }
3134
3135 enum : uint { GGI_MARK_NONEXISTING_GLYPHS = 0X0001 }
3136
3137 extern(Windows) export DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET);
3138 extern(Windows) export DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD);
3139 extern(Windows) export DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD);
3140 // #ifdef UNICODE
3141 alias GetGlyphIndicesW GetGlyphIndices;
3142 // #else
3143 // #...
3144 // #endif // !UNICODE
3145 extern(Windows) export BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE);
3146 extern(Windows) export BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE);
3147 extern(Windows) export BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT);
3148 extern(Windows) export BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC);
3149
3150 enum : uint { STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8) }
3151 enum : uint { STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8) }
3152 enum : uint { MM_MAX_NUMAXES = 16 }
3153
3154 struct tagDESIGNVECTOR {
3155 DWORD dvReserved;
3156 DWORD dvNumAxes;
3157 LONG dvValues[MM_MAX_NUMAXES];
3158 }
3159 alias tagDESIGNVECTOR DESIGNVECTOR;
3160 alias tagDESIGNVECTOR* PDESIGNVECTOR;
3161 alias tagDESIGNVECTOR* LPDESIGNVECTOR;
3162
3163 extern(Windows) export int AddFontResourceExA(LPCSTR, DWORD, PVOID);
3164 extern(Windows) export int AddFontResourceExW(LPCWSTR, DWORD, PVOID);
3165 // #ifdef UNICODE
3166 alias AddFontResourceExW AddFontResourceEx;
3167 // #else
3168 // #...
3169 // #endif // !UNICODE
3170 extern(Windows) export BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID);
3171 extern(Windows) export BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID);
3172 // #ifdef UNICODE
3173 alias RemoveFontResourceExW RemoveFontResourceEx;
3174 // #else
3175 // #...
3176 // #endif // !UNICODE
3177 extern(Windows) export HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID , DWORD*);
3178 extern(Windows) export BOOL RemoveFontMemResourceEx(HANDLE);
3179 enum : uint { FR_PRIVATE = 0x10 }
3180 enum : uint { FR_NOT_ENUM = 0x20 }
3181
3182 enum : uint { MM_MAX_AXES_NAMELEN = 16 }
3183
3184 struct tagAXISINFOA {
3185 LONG axMinValue;
3186 LONG axMaxValue;
3187 BYTE axAxisName[MM_MAX_AXES_NAMELEN];
3188 }
3189 alias tagAXISINFOA AXISINFOA;
3190 alias tagAXISINFOA* PAXISINFOA;
3191 alias tagAXISINFOA* LPAXISINFOA;
3192
3193 struct tagAXISINFOW {
3194 LONG axMinValue;
3195 LONG axMaxValue;
3196 WCHAR axAxisName[MM_MAX_AXES_NAMELEN];
3197 }
3198 alias tagAXISINFOW AXISINFOW;
3199 alias tagAXISINFOW* PAXISINFOW;
3200 alias tagAXISINFOW* LPAXISINFOW;
3201
3202 // #ifdef UNICODE
3203 alias AXISINFOW AXISINFO;
3204 alias PAXISINFOW PAXISINFO;
3205 alias LPAXISINFOW LPAXISINFO;
3206 // #else
3207 // ...
3208 // #endif // UNICODE
3209
3210 struct tagAXESLISTA {
3211 DWORD axlReserved;
3212 DWORD axlNumAxes;
3213 AXISINFOA axlAxisInfo[MM_MAX_NUMAXES];
3214 }
3215 alias tagAXESLISTA AXESLISTA;
3216 alias tagAXESLISTA* PAXESLISTA;
3217 alias tagAXESLISTA* LPAXESLISTA;
3218
3219 struct tagAXESLISTW {
3220 DWORD axlReserved;
3221 DWORD axlNumAxes;
3222 AXISINFOW axlAxisInfo[MM_MAX_NUMAXES];
3223 }
3224 alias tagAXESLISTW AXESLISTW;
3225 alias tagAXESLISTW* PAXESLISTW;
3226 alias tagAXESLISTW* LPAXESLISTW;
3227
3228 // #ifdef UNICODE
3229 alias AXESLISTW AXESLIST;
3230 alias PAXESLISTW PAXESLIST;
3231 alias LPAXESLISTW LPAXESLIST;
3232 // #else
3233 // ...
3234 // #endif // UNICODE
3235
3236 struct tagENUMLOGFONTEXDVA {
3237 ENUMLOGFONTEXA elfEnumLogfontEx;
3238 DESIGNVECTOR elfDesignVector;
3239 }
3240 alias tagENUMLOGFONTEXDVA ENUMLOGFONTEXDVA;
3241 alias tagENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA;
3242 alias tagENUMLOGFONTEXDVA* LPENUMLOGFONTEXDVA;
3243
3244 struct tagENUMLOGFONTEXDVW {
3245 ENUMLOGFONTEXW elfEnumLogfontEx;
3246 DESIGNVECTOR elfDesignVector;
3247 }
3248 alias tagENUMLOGFONTEXDVW ENUMLOGFONTEXDVW;
3249 alias tagENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW;
3250 alias tagENUMLOGFONTEXDVW* LPENUMLOGFONTEXDVW;
3251
3252 // #ifdef UNICODE
3253 alias ENUMLOGFONTEXDVW ENUMLOGFONTEXDV;
3254 alias PENUMLOGFONTEXDVW PENUMLOGFONTEXDV;
3255 alias LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV;
3256 // #else
3257 // ...
3258 // #endif // UNICODE
3259
3260 extern(Windows) export HFONT CreateFontIndirectExA(ENUMLOGFONTEXDVA *);
3261 extern(Windows) export HFONT CreateFontIndirectExW(ENUMLOGFONTEXDVW *);
3262 // #ifdef UNICODE
3263 alias CreateFontIndirectExW CreateFontIndirectEx;
3264 // #else
3265 // #...
3266 // #endif // !UNICODE
3267
3268 // #ifndef NOTEXTMETRIC
3269 struct tagENUMTEXTMETRICA {
3270 NEWTEXTMETRICEXA etmNewTextMetricEx;
3271 AXESLISTA etmAxesList;
3272 }
3273 alias tagENUMTEXTMETRICA ENUMTEXTMETRICA;
3274 alias tagENUMTEXTMETRICA* PENUMTEXTMETRICA;
3275 alias tagENUMTEXTMETRICA* LPENUMTEXTMETRICA;
3276
3277 struct tagENUMTEXTMETRICW {
3278 NEWTEXTMETRICEXW etmNewTextMetricEx;
3279 AXESLISTW etmAxesList;
3280 }
3281 alias tagENUMTEXTMETRICW ENUMTEXTMETRICW;
3282 alias tagENUMTEXTMETRICW* PENUMTEXTMETRICW;
3283 alias tagENUMTEXTMETRICW* LPENUMTEXTMETRICW;
3284
3285 // #ifdef UNICODE
3286 alias ENUMTEXTMETRICW ENUMTEXTMETRIC;
3287 alias PENUMTEXTMETRICW PENUMTEXTMETRIC;
3288 alias LPENUMTEXTMETRICW LPENUMTEXTMETRIC;
3289 // #else
3290 // ...
3291 // #endif // UNICODE
3292 // #endif /* NOTEXTMETRIC */
3293
3294 // #endif // (_WIN32_WINNT >= 0x0500)
3295
3296 extern(Windows) export BOOL GetViewportExtEx(HDC, LPSIZE);
3297 extern(Windows) export BOOL GetViewportOrgEx(HDC, LPPOINT);
3298 extern(Windows) export BOOL GetWindowExtEx(HDC, LPSIZE);
3299 extern(Windows) export BOOL GetWindowOrgEx(HDC, LPPOINT);
3300
3301 extern(Windows) export int IntersectClipRect(HDC, int, int, int, int);
3302 extern(Windows) export BOOL InvertRgn(HDC, HRGN);
3303 extern(Windows) export BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM);
3304 extern(Windows) export BOOL LineTo(HDC, int, int);
3305 extern(Windows) export BOOL MaskBlt(HDC, int, int, int, int,
3306 HDC, int, int, HBITMAP, int, int, DWORD);
3307 extern(Windows) export BOOL PlgBlt(HDC, POINT *, HDC, int, int, int,
3308 int, HBITMAP, int, int);
3309
3310 extern(Windows) export int OffsetClipRgn(HDC, int, int);
3311 extern(Windows) export int OffsetRgn(HRGN, int, int);
3312 extern(Windows) export BOOL PatBlt(HDC, int, int, int, int, DWORD);
3313 extern(Windows) export BOOL Pie(HDC, int, int, int, int, int, int, int, int);
3314 extern(Windows) export BOOL PlayMetaFile(HDC, HMETAFILE);
3315 extern(Windows) export BOOL PaintRgn(HDC, HRGN);
3316 extern(Windows) export BOOL PolyPolygon(HDC, POINT *, INT *, int);
3317 extern(Windows) export BOOL PtInRegion(HRGN, int, int);
3318 extern(Windows) export BOOL PtVisible(HDC, int, int);
3319 extern(Windows) export BOOL RectInRegion(HRGN, RECT *);
3320 extern(Windows) export BOOL RectVisible(HDC, RECT *);
3321 extern(Windows) export BOOL Rectangle(HDC, int, int, int, int);
3322 extern(Windows) export BOOL RestoreDC(HDC, int);
3323 extern(Windows) export HDC ResetDCA(HDC, DEVMODEA *);
3324 extern(Windows) export HDC ResetDCW(HDC, DEVMODEW *);
3325 // #ifdef UNICODE
3326 alias ResetDCW ResetDC;
3327 // #else
3328 // #...
3329 // #endif // !UNICODE
3330 extern(Windows) export UINT RealizePalette(HDC);
3331 extern(Windows) export BOOL RemoveFontResourceA(LPCSTR);
3332 extern(Windows) export BOOL RemoveFontResourceW(LPCWSTR);
3333 // #ifdef UNICODE
3334 alias RemoveFontResourceW RemoveFontResource;
3335 // #else
3336 // #...
3337 // #endif // !UNICODE
3338 extern(Windows) export BOOL RoundRect(HDC, int, int, int, int, int, int);
3339 extern(Windows) export BOOL ResizePalette(HPALETTE, UINT);
3340
3341 extern(Windows) export int SaveDC(HDC);
3342 extern(Windows) export int SelectClipRgn(HDC, HRGN);
3343 extern(Windows) export int ExtSelectClipRgn(HDC, HRGN, int);
3344 extern(Windows) export int SetMetaRgn(HDC);
3345 extern(Windows) export HGDIOBJ SelectObject(HDC, HGDIOBJ);
3346 extern(Windows) export HPALETTE SelectPalette(HDC, HPALETTE, BOOL);
3347 extern(Windows) export COLORREF SetBkColor(HDC, COLORREF);
3348
3349 // #if (_WIN32_WINNT >= 0x0500)
3350 extern(Windows) export COLORREF SetDCBrushColor(HDC, COLORREF);
3351 extern(Windows) export COLORREF SetDCPenColor(HDC, COLORREF);
3352 // #endif
3353
3354 extern(Windows) export int SetBkMode(HDC, int);
3355 extern(Windows) export LONG SetBitmapBits(HBITMAP, DWORD, VOID *);
3356
3357 extern(Windows) export UINT SetBoundsRect(HDC, RECT *, UINT);
3358 extern(Windows) export int SetDIBits(HDC, HBITMAP, UINT, UINT, VOID *, BITMAPINFO *, UINT);
3359 extern(Windows) export int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int,
3360 int, UINT, UINT, VOID *, BITMAPINFO *, UINT);
3361 extern(Windows) export DWORD SetMapperFlags(HDC, DWORD);
3362 extern(Windows) export int SetGraphicsMode(HDC hdc, int iMode);
3363 extern(Windows) export int SetMapMode(HDC, int);
3364
3365 // #if(WINVER >= 0x0500)
3366 extern(Windows) export DWORD SetLayout(HDC, DWORD);
3367 extern(Windows) export DWORD GetLayout(HDC);
3368 // #endif /* WINVER >= 0x0500 */
3369
3370 extern(Windows) export HMETAFILE SetMetaFileBitsEx(UINT, BYTE *);
3371 extern(Windows) export UINT SetPaletteEntries(HPALETTE, UINT, UINT, PALETTEENTRY *);
3372 extern(Windows) export COLORREF SetPixel(HDC, int, int, COLORREF);
3373 extern(Windows) export BOOL SetPixelV(HDC, int, int, COLORREF);
3374 extern(Windows) export BOOL SetPixelFormat(HDC, int, PIXELFORMATDESCRIPTOR *);
3375 extern(Windows) export int SetPolyFillMode(HDC, int);
3376 extern(Windows) export BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
3377 extern(Windows) export BOOL SetRectRgn(HRGN, int, int, int, int);
3378 extern(Windows) export int StretchDIBits(HDC, int, int, int, int, int, int, int, int,
3379 VOID *, BITMAPINFO *, UINT, DWORD);
3380 extern(Windows) export int SetROP2(HDC, int);
3381 extern(Windows) export int SetStretchBltMode(HDC, int);
3382 extern(Windows) export UINT SetSystemPaletteUse(HDC, UINT);
3383 extern(Windows) export int SetTextCharacterExtra(HDC, int);
3384 extern(Windows) export COLORREF SetTextColor(HDC, COLORREF);
3385 extern(Windows) export UINT SetTextAlign(HDC, UINT);
3386 extern(Windows) export BOOL SetTextJustification(HDC, int, int);
3387 extern(Windows) export BOOL UpdateColors(HDC);
3388
3389 // #if (WINVER >= 0x0400)
3390
3391 alias USHORT COLOR16;
3392
3393 struct _TRIVERTEX {
3394 LONG x;
3395 LONG y;
3396 COLOR16 Red;
3397 COLOR16 Green;
3398 COLOR16 Blue;
3399 COLOR16 Alpha;
3400 }
3401 alias _TRIVERTEX TRIVERTEX;
3402 alias _TRIVERTEX* PTRIVERTEX;
3403 alias _TRIVERTEX* LPTRIVERTEX;
3404
3405 struct _GRADIENT_TRIANGLE {
3406 ULONG Vertex1;
3407 ULONG Vertex2;
3408 ULONG Vertex3;
3409 }
3410 alias _GRADIENT_TRIANGLE GRADIENT_TRIANGLE;
3411 alias _GRADIENT_TRIANGLE* PGRADIENT_TRIANGLE;
3412 alias _GRADIENT_TRIANGLE* LPGRADIENT_TRIANGLE;
3413
3414 struct _GRADIENT_RECT {
3415 ULONG UpperLeft;
3416 ULONG LowerRight;
3417 }
3418 alias _GRADIENT_RECT GRADIENT_RECT;
3419 alias _GRADIENT_RECT* PGRADIENT_RECT;
3420 alias _GRADIENT_RECT* LPGRADIENT_RECT;
3421
3422 struct _BLENDFUNCTION {
3423 BYTE BlendOp;
3424 BYTE BlendFlags;
3425 BYTE SourceConstantAlpha;
3426 BYTE AlphaFormat;
3427 }
3428 alias _BLENDFUNCTION BLENDFUNCTION;
3429 alias _BLENDFUNCTION* PBLENDFUNCTION;
3430
3431 enum : uint { AC_SRC_OVER = 0x00 }
3432
3433 enum : uint { AC_SRC_ALPHA = 0x01 }
3434
3435 extern(Windows) export BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION);
3436
3437 extern(Windows) export BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT);
3438
3439 enum : uint { GRADIENT_FILL_RECT_H = 0x00000000 }
3440 enum : uint { GRADIENT_FILL_RECT_V = 0x00000001 }
3441 enum : uint { GRADIENT_FILL_TRIANGLE = 0x00000002 }
3442 enum : uint { GRADIENT_FILL_OP_FLAG = 0x000000ff }
3443
3444 extern(Windows) export BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG);
3445
3446 // #endif
3447
3448 // #ifndef NOMETAFILE
3449
3450 extern(Windows) export BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT);
3451 extern(Windows) alias int function( HDC, HANDLETABLE *, METARECORD *, int, LPARAM) MFENUMPROC;
3452 extern(Windows) export BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM);
3453
3454 extern(Windows) alias int function(HDC, HANDLETABLE *, ENHMETARECORD *, int, LPARAM) ENHMFENUMPROC;
3455
3456 extern(Windows) export HENHMETAFILE CloseEnhMetaFile(HDC);
3457 extern(Windows) export HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR);
3458 extern(Windows) export HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR);
3459 // #ifdef UNICODE
3460 alias CopyEnhMetaFileW CopyEnhMetaFile;
3461 // #else
3462 // #...
3463 // #endif // !UNICODE
3464 extern(Windows) export HDC CreateEnhMetaFileA(HDC, LPCSTR, RECT *, LPCSTR);
3465 extern(Windows) export HDC CreateEnhMetaFileW(HDC, LPCWSTR, RECT *, LPCWSTR);
3466 // #ifdef UNICODE
3467 alias CreateEnhMetaFileW CreateEnhMetaFile;
3468 // #else
3469 // #...
3470 // #endif // !UNICODE
3471 extern(Windows) export BOOL DeleteEnhMetaFile(HENHMETAFILE);
3472 extern(Windows) export BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC,
3473 LPVOID, RECT *);
3474 extern(Windows) export HENHMETAFILE GetEnhMetaFileA(LPCSTR);
3475 extern(Windows) export HENHMETAFILE GetEnhMetaFileW(LPCWSTR);
3476 // #ifdef UNICODE
3477 alias GetEnhMetaFileW GetEnhMetaFile;
3478 // #else
3479 // #...
3480 // #endif // !UNICODE
3481 extern(Windows) export UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE);
3482 extern(Windows) export UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR );
3483 extern(Windows) export UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR );
3484 // #ifdef UNICODE
3485 alias GetEnhMetaFileDescriptionW GetEnhMetaFileDescription;
3486 // #else
3487 // #...
3488 // #endif // !UNICODE
3489 extern(Windows) export UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER );
3490 extern(Windows) export UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY );
3491 extern(Windows) export UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, UINT,
3492 PIXELFORMATDESCRIPTOR *);
3493 extern(Windows) export UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC);
3494 extern(Windows) export BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, RECT *);
3495 extern(Windows) export BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, ENHMETARECORD *, UINT);
3496 extern(Windows) export HENHMETAFILE SetEnhMetaFileBits(UINT, BYTE *);
3497 extern(Windows) export HENHMETAFILE SetWinMetaFileBits(UINT, BYTE *, HDC, METAFILEPICT *);
3498 extern(Windows) export BOOL GdiComment(HDC, UINT, BYTE *);
3499
3500 // #endif /* NOMETAFILE */
3501
3502 // #ifndef NOTEXTMETRIC
3503
3504 extern(Windows) export BOOL GetTextMetricsA(HDC, LPTEXTMETRICA);
3505 extern(Windows) export BOOL GetTextMetricsW(HDC, LPTEXTMETRICW);
3506 // #ifdef UNICODE
3507 alias GetTextMetricsW GetTextMetrics;
3508 // #else
3509 // #...
3510 // #endif // !UNICODE
3511
3512 // #endif
3513
3514 struct tagDIBSECTION {
3515 BITMAP dsBm;
3516 BITMAPINFOHEADER dsBmih;
3517 DWORD dsBitfields[3];
3518 HANDLE dshSection;
3519 DWORD dsOffset;
3520 }
3521 alias tagDIBSECTION DIBSECTION;
3522 alias tagDIBSECTION* LPDIBSECTION;
3523 alias tagDIBSECTION* PDIBSECTION;
3524
3525 extern(Windows) export BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT);
3526 extern(Windows) export BOOL PolyPolyline(HDC, POINT *, DWORD *, DWORD);
3527 extern(Windows) export BOOL GetWorldTransform(HDC, LPXFORM);
3528 extern(Windows) export BOOL SetWorldTransform(HDC, XFORM *);
3529 extern(Windows) export BOOL ModifyWorldTransform(HDC, XFORM *, DWORD);
3530 extern(Windows) export BOOL CombineTransform(LPXFORM, XFORM *, XFORM *);
3531 extern(Windows) export HBITMAP CreateDIBSection(HDC, BITMAPINFO *, UINT, VOID **, HANDLE, DWORD);
3532 extern(Windows) export UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD *);
3533 extern(Windows) export UINT SetDIBColorTable(HDC, UINT, UINT, RGBQUAD *);
3534
3535 enum : uint { CA_NEGATIVE = 0x0001 }
3536 enum : uint { CA_LOG_FILTER = 0x0002 }
3537
3538 enum : uint { ILLUMINANT_DEVICE_DEFAULT = 0 }
3539 enum : uint { ILLUMINANT_A = 1 }
3540 enum : uint { ILLUMINANT_B = 2 }
3541 enum : uint { ILLUMINANT_C = 3 }
3542 enum : uint { ILLUMINANT_D50 = 4 }
3543 enum : uint { ILLUMINANT_D55 = 5 }
3544 enum : uint { ILLUMINANT_D65 = 6 }
3545 enum : uint { ILLUMINANT_D75 = 7 }
3546 enum : uint { ILLUMINANT_F2 = 8 }
3547 alias ILLUMINANT_F2 ILLUMINANT_MAX_INDEX;
3548
3549 alias ILLUMINANT_A ILLUMINANT_TUNGSTEN;
3550 alias ILLUMINANT_C ILLUMINANT_DAYLIGHT;
3551 alias ILLUMINANT_F2 ILLUMINANT_FLUORESCENT;
3552 alias ILLUMINANT_C ILLUMINANT_NTSC;
3553
3554 enum : WORD { RGB_GAMMA_MIN = 02500 }
3555 enum : WORD { RGB_GAMMA_MAX = 65000 }
3556
3557 enum : WORD { REFERENCE_WHITE_MIN = 6000 }
3558 enum : WORD { REFERENCE_WHITE_MAX = 10000 }
3559 enum : WORD { REFERENCE_BLACK_MIN = 0 }
3560 enum : WORD { REFERENCE_BLACK_MAX = 4000 }
3561
3562 enum : SHORT { COLOR_ADJ_MIN = -100 }
3563 enum : SHORT { COLOR_ADJ_MAX = 100 }
3564
3565 struct tagCOLORADJUSTMENT {
3566 WORD caSize;
3567 WORD caFlags;
3568 WORD caIlluminantIndex;
3569 WORD caRedGamma;
3570 WORD caGreenGamma;
3571 WORD caBlueGamma;
3572 WORD caReferenceBlack;
3573 WORD caReferenceWhite;
3574 SHORT caContrast;
3575 SHORT caBrightness;
3576 SHORT caColorfulness;
3577 SHORT caRedGreenTint;
3578 }
3579 alias tagCOLORADJUSTMENT COLORADJUSTMENT;
3580 alias tagCOLORADJUSTMENT* PCOLORADJUSTMENT;
3581 alias tagCOLORADJUSTMENT* LPCOLORADJUSTMENT;
3582
3583 extern(Windows) export BOOL SetColorAdjustment(HDC, COLORADJUSTMENT *);
3584 extern(Windows) export BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
3585 extern(Windows) export HPALETTE CreateHalftonePalette(HDC);
3586
3587 // #ifdef STRICT
3588 extern(Windows) alias BOOL function( HDC, int) ABORTPROC;
3589 // #else
3590 // ...
3591 // #endif
3592
3593 struct _DOCINFOA {
3594 int cbSize;
3595 LPCSTR lpszDocName;
3596 LPCSTR lpszOutput;
3597 // #if (WINVER >= 0x0400)
3598 LPCSTR lpszDatatype;
3599 DWORD fwType;
3600 // #endif /* WINVER */
3601 }
3602 alias _DOCINFOA DOCINFOA;
3603 alias _DOCINFOA* LPDOCINFOA;
3604
3605 struct _DOCINFOW {
3606 int cbSize;
3607 LPCWSTR lpszDocName;
3608 LPCWSTR lpszOutput;
3609 // #if (WINVER >= 0x0400)
3610 LPCWSTR lpszDatatype;
3611 DWORD fwType;
3612 // #endif /* WINVER */
3613 }
3614 alias _DOCINFOW DOCINFOW;
3615 alias _DOCINFOW* LPDOCINFOW;
3616
3617 // #ifdef UNICODE
3618 alias DOCINFOW DOCINFO;
3619 alias LPDOCINFOW LPDOCINFO;
3620 // #else
3621 // ...
3622 // #endif // UNICODE
3623
3624 // #if(WINVER >= 0x0400)
3625 enum : uint { DI_APPBANDING = 0x00000001 }
3626 enum : uint { DI_ROPS_READ_DESTINATION = 0x00000002 }
3627 // #endif /* WINVER >= 0x0400 */
3628
3629 extern(Windows) export int StartDocA(HDC, DOCINFOA *);
3630 extern(Windows) export int StartDocW(HDC, DOCINFOW *);
3631 // #ifdef UNICODE
3632 alias StartDocW StartDoc;
3633 // #else
3634 // #...
3635 // #endif // !UNICODE
3636 extern(Windows) export int EndDoc(HDC);
3637 extern(Windows) export int StartPage(HDC);
3638 extern(Windows) export int EndPage(HDC);
3639 extern(Windows) export int AbortDoc(HDC);
3640 extern(Windows) export int SetAbortProc(HDC, ABORTPROC);
3641
3642 extern(Windows) export BOOL AbortPath(HDC);
3643 extern(Windows) export BOOL ArcTo(HDC, int, int, int, int, int, int, int, int);
3644 extern(Windows) export BOOL BeginPath(HDC);
3645 extern(Windows) export BOOL CloseFigure(HDC);
3646 extern(Windows) export BOOL EndPath(HDC);
3647 extern(Windows) export BOOL FillPath(HDC);
3648 extern(Windows) export BOOL FlattenPath(HDC);
3649 extern(Windows) export int GetPath(HDC, LPPOINT, LPBYTE, int);
3650 extern(Windows) export HRGN PathToRegion(HDC);
3651 extern(Windows) export BOOL PolyDraw(HDC, POINT *, BYTE *, int);
3652 extern(Windows) export BOOL SelectClipPath(HDC, int);
3653 extern(Windows) export int SetArcDirection(HDC, int);
3654 extern(Windows) export BOOL SetMiterLimit(HDC, FLOAT, PFLOAT);
3655 extern(Windows) export BOOL StrokeAndFillPath(HDC);
3656 extern(Windows) export BOOL StrokePath(HDC);
3657 extern(Windows) export BOOL WidenPath(HDC);
3658 extern(Windows) export HPEN ExtCreatePen(DWORD, DWORD, LOGBRUSH *, DWORD, DWORD *);
3659 extern(Windows) export BOOL GetMiterLimit(HDC, PFLOAT);
3660 extern(Windows) export int GetArcDirection(HDC);
3661
3662 extern(Windows) export int GetObjectA(HGDIOBJ, int, LPVOID);
3663 extern(Windows) export int GetObjectW(HGDIOBJ, int, LPVOID);
3664 // #ifdef UNICODE
3665 alias GetObjectW GetObject;
3666 // #else
3667 // #...
3668 // #endif // !UNICODE
3669 extern(Windows) export BOOL MoveToEx(HDC, int, int, LPPOINT);
3670 extern(Windows) export BOOL TextOutA(HDC, int, int, LPCSTR, int);
3671 extern(Windows) export BOOL TextOutW(HDC, int, int, LPCWSTR, int);
3672 // #ifdef UNICODE
3673 alias TextOutW TextOut;
3674 // #else
3675 // #...
3676 // #endif // !UNICODE
3677 extern(Windows) export BOOL ExtTextOutA(HDC, int, int, UINT, RECT *, LPCSTR, UINT, INT *);
3678 extern(Windows) export BOOL ExtTextOutW(HDC, int, int, UINT, RECT *, LPCWSTR, UINT, INT *);
3679 // #ifdef UNICODE
3680 alias ExtTextOutW ExtTextOut;
3681 // #else
3682 // #...
3683 // #endif // !UNICODE
3684 extern(Windows) export BOOL PolyTextOutA(HDC, POLYTEXTA *, int);
3685 extern(Windows) export BOOL PolyTextOutW(HDC, POLYTEXTW *, int);
3686 // #ifdef UNICODE
3687 alias PolyTextOutW PolyTextOut;
3688 // #else
3689 // #...
3690 // #endif // !UNICODE
3691
3692 extern(Windows) export HRGN CreatePolygonRgn(POINT *, int, int);
3693 extern(Windows) export BOOL DPtoLP(HDC, LPPOINT, int);
3694 extern(Windows) export BOOL LPtoDP(HDC, LPPOINT, int);
3695 extern(Windows) export BOOL Polygon(HDC, POINT *, int);
3696 extern(Windows) export BOOL Polyline(HDC, POINT *, int);
3697
3698 extern(Windows) export BOOL PolyBezier(HDC, POINT *, DWORD);
3699 extern(Windows) export BOOL PolyBezierTo(HDC, POINT *, DWORD);
3700 extern(Windows) export BOOL PolylineTo(HDC, POINT *, DWORD);
3701
3702 extern(Windows) export BOOL SetViewportExtEx(HDC, int, int, LPSIZE);
3703 extern(Windows) export BOOL SetViewportOrgEx(HDC, int, int, LPPOINT);
3704 extern(Windows) export BOOL SetWindowExtEx(HDC, int, int, LPSIZE);
3705 extern(Windows) export BOOL SetWindowOrgEx(HDC, int, int, LPPOINT);
3706
3707 extern(Windows) export BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT);
3708 extern(Windows) export BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT);
3709 extern(Windows) export BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE);
3710 extern(Windows) export BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE);
3711 extern(Windows) export BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE);
3712 extern(Windows) export BOOL SetBrushOrgEx(HDC, int, int, LPPOINT);
3713
3714 extern(Windows) export int GetTextFaceA(HDC, int, LPSTR);
3715 extern(Windows) export int GetTextFaceW(HDC, int, LPWSTR);
3716 // #ifdef UNICODE
3717 alias GetTextFaceW GetTextFace;
3718 // #else
3719 // #...
3720 // #endif // !UNICODE
3721
3722 enum : uint { FONTMAPPER_MAX = 10 }
3723
3724 struct tagKERNINGPAIR {
3725 WORD wFirst;
3726 WORD wSecond;
3727 int iKernAmount;
3728 }
3729 alias tagKERNINGPAIR KERNINGPAIR;
3730 alias tagKERNINGPAIR* LPKERNINGPAIR;
3731
3732 extern(Windows) export DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR);
3733 extern(Windows) export DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR);
3734 // #ifdef UNICODE
3735 alias GetKerningPairsW GetKerningPairs;
3736 // #else
3737 // #...
3738 // #endif // !UNICODE
3739
3740 extern(Windows) export BOOL GetDCOrgEx(HDC, LPPOINT);
3741 extern(Windows) export BOOL FixBrushOrgEx(HDC, int, int, LPPOINT);
3742 extern(Windows) export BOOL UnrealizeObject(HGDIOBJ);
3743
3744 extern(Windows) export BOOL GdiFlush();
3745 extern(Windows) export DWORD GdiSetBatchLimit(DWORD);
3746 extern(Windows) export DWORD GdiGetBatchLimit();
3747
3748 // #if(WINVER >= 0x0400)
3749
3750 enum : uint { ICM_OFF = 1 }
3751 enum : uint { ICM_ON = 2 }
3752 enum : uint { ICM_QUERY = 3 }
3753 enum : uint { ICM_DONE_OUTSIDEDC = 4 }
3754
3755 extern(Windows) alias int function(LPSTR, LPARAM) ICMENUMPROCA;
3756 extern(Windows) alias int function(LPWSTR, LPARAM) ICMENUMPROCW;
3757 // #ifdef UNICODE
3758 alias ICMENUMPROCW ICMENUMPROC;
3759 // #else
3760 // #...
3761 // #endif // !UNICODE
3762
3763 extern(Windows) export int SetICMMode(HDC, int);
3764 extern(Windows) export BOOL CheckColorsInGamut(HDC, LPVOID, LPVOID, DWORD);
3765 extern(Windows) export HCOLORSPACE GetColorSpace(HDC);
3766 extern(Windows) export BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD);
3767 extern(Windows) export BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD);
3768 // #ifdef UNICODE
3769 alias GetLogColorSpaceW GetLogColorSpace;
3770 // #else
3771 // #...
3772 // #endif // !UNICODE
3773 extern(Windows) export HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA);
3774 extern(Windows) export HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW);
3775 // #ifdef UNICODE
3776 alias CreateColorSpaceW CreateColorSpace;
3777 // #else
3778 // #...
3779 // #endif // !UNICODE
3780 extern(Windows) export HCOLORSPACE SetColorSpace(HDC, HCOLORSPACE);
3781 extern(Windows) export BOOL DeleteColorSpace(HCOLORSPACE);
3782 extern(Windows) export BOOL GetICMProfileA(HDC, LPDWORD, LPSTR);
3783 extern(Windows) export BOOL GetICMProfileW(HDC, LPDWORD, LPWSTR);
3784 // #ifdef UNICODE
3785 alias GetICMProfileW GetICMProfile;
3786 // #else
3787 // #...
3788 // #endif // !UNICODE
3789 extern(Windows) export BOOL SetICMProfileA(HDC, LPSTR);
3790 extern(Windows) export BOOL SetICMProfileW(HDC, LPWSTR);
3791 // #ifdef UNICODE
3792 alias SetICMProfileW SetICMProfile;
3793 // #else
3794 // #...
3795 // #endif // !UNICODE
3796 extern(Windows) export BOOL GetDeviceGammaRamp(HDC, LPVOID);
3797 extern(Windows) export BOOL SetDeviceGammaRamp(HDC, LPVOID);
3798 extern(Windows) export BOOL ColorMatchToTarget(HDC, HDC, DWORD);
3799 extern(Windows) export int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM);
3800 extern(Windows) export int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM);
3801 // #ifdef UNICODE
3802 alias EnumICMProfilesW EnumICMProfiles;
3803 // #else
3804 // #...
3805 // #endif // !UNICODE
3806 extern(Windows) export BOOL UpdateICMRegKeyA(DWORD, LPSTR, LPSTR, UINT);
3807 extern(Windows) export BOOL UpdateICMRegKeyW(DWORD, LPWSTR, LPWSTR, UINT);
3808 // #ifdef UNICODE
3809 alias UpdateICMRegKeyW UpdateICMRegKey;
3810 // #else
3811 // #...
3812 // #endif // !UNICODE
3813 // #endif /* WINVER >= 0x0400 */
3814
3815 // #if (WINVER >= 0x0500)
3816 extern(Windows) export BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD);
3817 // #endif
3818
3819 // #ifndef NOMETAFILE
3820
3821 // #ifndef _MAC
3822 enum : uint { ENHMETA_SIGNATURE = 0x464D4520 }
3823 // #else
3824 // #...
3825 // #endif
3826
3827 enum : uint { ENHMETA_STOCK_OBJECT = 0x80000000 }
3828
3829 enum : uint { EMR_HEADER = 1 }
3830 enum : uint { EMR_POLYBEZIER = 2 }
3831 enum : uint { EMR_POLYGON = 3 }
3832 enum : uint { EMR_POLYLINE = 4 }
3833 enum : uint { EMR_POLYBEZIERTO = 5 }
3834 enum : uint { EMR_POLYLINETO = 6 }
3835 enum : uint { EMR_POLYPOLYLINE = 7 }
3836 enum : uint { EMR_POLYPOLYGON = 8 }
3837 enum : uint { EMR_SETWINDOWEXTEX = 9 }
3838 enum : uint { EMR_SETWINDOWORGEX = 10 }
3839 enum : uint { EMR_SETVIEWPORTEXTEX = 11 }
3840 enum : uint { EMR_SETVIEWPORTORGEX = 12 }
3841 enum : uint { EMR_SETBRUSHORGEX = 13 }
3842 enum : uint { EMR_EOF = 14 }
3843 enum : uint { EMR_SETPIXELV = 15 }
3844 enum : uint { EMR_SETMAPPERFLAGS = 16 }
3845 enum : uint { EMR_SETMAPMODE = 17 }
3846 enum : uint { EMR_SETBKMODE = 18 }
3847 enum : uint { EMR_SETPOLYFILLMODE = 19 }
3848 enum : uint { EMR_SETROP2 = 20 }
3849 enum : uint { EMR_SETSTRETCHBLTMODE = 21 }
3850 enum : uint { EMR_SETTEXTALIGN = 22 }
3851 enum : uint { EMR_SETCOLORADJUSTMENT = 23 }
3852 enum : uint { EMR_SETTEXTCOLOR = 24 }
3853 enum : uint { EMR_SETBKCOLOR = 25 }
3854 enum : uint { EMR_OFFSETCLIPRGN = 26 }
3855 enum : uint { EMR_MOVETOEX = 27 }
3856 enum : uint { EMR_SETMETARGN = 28 }
3857 enum : uint { EMR_EXCLUDECLIPRECT = 29 }
3858 enum : uint { EMR_INTERSECTCLIPRECT = 30 }
3859 enum : uint { EMR_SCALEVIEWPORTEXTEX = 31 }
3860 enum : uint { EMR_SCALEWINDOWEXTEX = 32 }
3861 enum : uint { EMR_SAVEDC = 33 }
3862 enum : uint { EMR_RESTOREDC = 34 }
3863 enum : uint { EMR_SETWORLDTRANSFORM = 35 }
3864 enum : uint { EMR_MODIFYWORLDTRANSFORM = 36 }
3865 enum : uint { EMR_SELECTOBJECT = 37 }
3866 enum : uint { EMR_CREATEPEN = 38 }
3867 enum : uint { EMR_CREATEBRUSHINDIRECT = 39 }
3868 enum : uint { EMR_DELETEOBJECT = 40 }
3869 enum : uint { EMR_ANGLEARC = 41 }
3870 enum : uint { EMR_ELLIPSE = 42 }
3871 enum : uint { EMR_RECTANGLE = 43 }
3872 enum : uint { EMR_ROUNDRECT = 44 }
3873 enum : uint { EMR_ARC = 45 }
3874 enum : uint { EMR_CHORD = 46 }
3875 enum : uint { EMR_PIE = 47 }
3876 enum : uint { EMR_SELECTPALETTE = 48 }
3877 enum : uint { EMR_CREATEPALETTE = 49 }
3878 enum : uint { EMR_SETPALETTEENTRIES = 50 }
3879 enum : uint { EMR_RESIZEPALETTE = 51 }
3880 enum : uint { EMR_REALIZEPALETTE = 52 }
3881 enum : uint { EMR_EXTFLOODFILL = 53 }
3882 enum : uint { EMR_LINETO = 54 }
3883 enum : uint { EMR_ARCTO = 55 }
3884 enum : uint { EMR_POLYDRAW = 56 }
3885 enum : uint { EMR_SETARCDIRECTION = 57 }
3886 enum : uint { EMR_SETMITERLIMIT = 58 }
3887 enum : uint { EMR_BEGINPATH = 59 }
3888 enum : uint { EMR_ENDPATH = 60 }
3889 enum : uint { EMR_CLOSEFIGURE = 61 }
3890 enum : uint { EMR_FILLPATH = 62 }
3891 enum : uint { EMR_STROKEANDFILLPATH = 63 }
3892 enum : uint { EMR_STROKEPATH = 64 }
3893 enum : uint { EMR_FLATTENPATH = 65 }
3894 enum : uint { EMR_WIDENPATH = 66 }
3895 enum : uint { EMR_SELECTCLIPPATH = 67 }
3896 enum : uint { EMR_ABORTPATH = 68 }
3897
3898 enum : uint { EMR_GDICOMMENT = 70 }
3899 enum : uint { EMR_FILLRGN = 71 }
3900 enum : uint { EMR_FRAMERGN = 72 }
3901 enum : uint { EMR_INVERTRGN = 73 }
3902 enum : uint { EMR_PAINTRGN = 74 }
3903 enum : uint { EMR_EXTSELECTCLIPRGN = 75 }
3904 enum : uint { EMR_BITBLT = 76 }
3905 enum : uint { EMR_STRETCHBLT = 77 }
3906 enum : uint { EMR_MASKBLT = 78 }
3907 enum : uint { EMR_PLGBLT = 79 }
3908 enum : uint { EMR_SETDIBITSTODEVICE = 80 }
3909 enum : uint { EMR_STRETCHDIBITS = 81 }
3910 enum : uint { EMR_EXTCREATEFONTINDIRECTW = 82 }
3911 enum : uint { EMR_EXTTEXTOUTA = 83 }
3912 enum : uint { EMR_EXTTEXTOUTW = 84 }
3913 enum : uint { EMR_POLYBEZIER16 = 85 }
3914 enum : uint { EMR_POLYGON16 = 86 }
3915 enum : uint { EMR_POLYLINE16 = 87 }
3916 enum : uint { EMR_POLYBEZIERTO16 = 88 }
3917 enum : uint { EMR_POLYLINETO16 = 89 }
3918 enum : uint { EMR_POLYPOLYLINE16 = 90 }
3919 enum : uint { EMR_POLYPOLYGON16 = 91 }
3920 enum : uint { EMR_POLYDRAW16 = 92 }
3921 enum : uint { EMR_CREATEMONOBRUSH = 93 }
3922 enum : uint { EMR_CREATEDIBPATTERNBRUSHPT = 94 }
3923 enum : uint { EMR_EXTCREATEPEN = 95 }
3924 enum : uint { EMR_POLYTEXTOUTA = 96 }
3925 enum : uint { EMR_POLYTEXTOUTW = 97 }
3926
3927 // #if(WINVER >= 0x0400)
3928 enum : uint { EMR_SETICMMODE = 98 }
3929 enum : uint { EMR_CREATECOLORSPACE = 99 }
3930 enum : uint { EMR_SETCOLORSPACE = 100 }
3931 enum : uint { EMR_DELETECOLORSPACE = 101 }
3932 enum : uint { EMR_GLSRECORD = 102 }
3933 enum : uint { EMR_GLSBOUNDEDRECORD = 103 }
3934 enum : uint { EMR_PIXELFORMAT = 104 }
3935 // #endif /* WINVER >= 0x0400 */
3936
3937 // #if(WINVER >= 0x0500)
3938 enum : uint { EMR_RESERVED_105 = 105 }
3939 enum : uint { EMR_RESERVED_106 = 106 }
3940 enum : uint { EMR_RESERVED_107 = 107 }
3941 enum : uint { EMR_RESERVED_108 = 108 }
3942 enum : uint { EMR_RESERVED_109 = 109 }
3943 enum : uint { EMR_RESERVED_110 = 110 }
3944 enum : uint { EMR_COLORCORRECTPALETTE = 111 }
3945 enum : uint { EMR_SETICMPROFILEA = 112 }
3946 enum : uint { EMR_SETICMPROFILEW = 113 }
3947 enum : uint { EMR_ALPHABLEND = 114 }
3948 enum : uint { EMR_SETLAYOUT = 115 }
3949 enum : uint { EMR_TRANSPARENTBLT = 116 }
3950 enum : uint { EMR_RESERVED_117 = 117 }
3951 enum : uint { EMR_GRADIENTFILL = 118 }
3952 enum : uint { EMR_RESERVED_119 = 119 }
3953 enum : uint { EMR_RESERVED_120 = 120 }
3954 enum : uint { EMR_COLORMATCHTOTARGETW = 121 }
3955 enum : uint { EMR_CREATECOLORSPACEW = 122 }
3956 // #endif /* WINVER >= 0x0500 */
3957
3958 enum : uint { EMR_MIN = 1 }
3959
3960 // #if (WINVER >= 0x0500)
3961 enum : uint { EMR_MAX = 122 }
3962 // #elif (WINVER >= 0x0400)
3963 // #...
3964 // #else
3965 // #...
3966 // #endif
3967
3968 struct tagEMR {
3969 DWORD iType;
3970 DWORD nSize;
3971
3972 }
3973 alias tagEMR EMR;
3974 alias tagEMR* PEMR;
3975
3976 struct tagEMRTEXT {
3977 POINTL ptlReference;
3978 DWORD nChars;
3979 DWORD offString;
3980 DWORD fOptions;
3981 RECTL rcl;
3982 DWORD offDx;
3983
3984 }
3985 alias tagEMRTEXT EMRTEXT;
3986 alias tagEMRTEXT* PEMRTEXT;
3987
3988 struct tagABORTPATH {
3989 EMR emr;
3990 }
3991 alias tagABORTPATH EMRABORTPATH;
3992 alias tagABORTPATH* PEMRABORTPATH;
3993 alias tagABORTPATH EMRBEGINPATH;
3994 alias tagABORTPATH* PEMRBEGINPATH;
3995 alias tagABORTPATH EMRENDPATH;
3996 alias tagABORTPATH* PEMRENDPATH;
3997 alias tagABORTPATH EMRCLOSEFIGURE;
3998 alias tagABORTPATH* PEMRCLOSEFIGURE;
3999 alias tagABORTPATH EMRFLATTENPATH;
4000 alias tagABORTPATH* PEMRFLATTENPATH;
4001 alias tagABORTPATH EMRWIDENPATH;
4002 alias tagABORTPATH* PEMRWIDENPATH;
4003 alias tagABORTPATH EMRSETMETARGN;
4004 alias tagABORTPATH* PEMRSETMETARGN;
4005 alias tagABORTPATH EMRSAVEDC;
4006 alias tagABORTPATH* PEMRSAVEDC;
4007 alias tagABORTPATH EMRREALIZEPALETTE;
4008 alias tagABORTPATH* PEMRREALIZEPALETTE;
4009
4010 struct tagEMRSELECTCLIPPATH {
4011 EMR emr;
4012 DWORD iMode;
4013 }
4014 alias tagEMRSELECTCLIPPATH EMRSELECTCLIPPATH;
4015 alias tagEMRSELECTCLIPPATH* PEMRSELECTCLIPPATH;
4016 alias tagEMRSELECTCLIPPATH EMRSETBKMODE;
4017 alias tagEMRSELECTCLIPPATH* PEMRSETBKMODE;
4018 alias tagEMRSELECTCLIPPATH EMRSETMAPMODE;
4019 alias tagEMRSELECTCLIPPATH* PEMRSETMAPMODE;
4020 alias tagEMRSELECTCLIPPATH EMRSETLAYOUT;
4021 alias tagEMRSELECTCLIPPATH* PEMRSETLAYOUT;
4022 alias tagEMRSELECTCLIPPATH EMRSETPOLYFILLMODE;
4023 alias tagEMRSELECTCLIPPATH* PEMRSETPOLYFILLMODE;
4024 alias tagEMRSELECTCLIPPATH EMRSETROP2;
4025 alias tagEMRSELECTCLIPPATH* PEMRSETROP2;
4026 alias tagEMRSELECTCLIPPATH EMRSETSTRETCHBLTMODE;
4027 alias tagEMRSELECTCLIPPATH* PEMRSETSTRETCHBLTMODE;
4028 alias tagEMRSELECTCLIPPATH EMRSETICMMODE;
4029 alias tagEMRSELECTCLIPPATH* PEMRSETICMMODE;
4030 alias tagEMRSELECTCLIPPATH EMRSETTEXTALIGN;
4031 alias tagEMRSELECTCLIPPATH* PEMRSETTEXTALIGN;
4032
4033 struct tagEMRSETMITERLIMIT {
4034 EMR emr;
4035 FLOAT eMiterLimit;
4036 }
4037 alias tagEMRSETMITERLIMIT EMRSETMITERLIMIT;
4038 alias tagEMRSETMITERLIMIT* PEMRSETMITERLIMIT;
4039
4040 struct tagEMRRESTOREDC {
4041 EMR emr;
4042 LONG iRelative;
4043 }
4044 alias tagEMRRESTOREDC EMRRESTOREDC;
4045 alias tagEMRRESTOREDC* PEMRRESTOREDC;
4046
4047 struct tagEMRSETARCDIRECTION {
4048 EMR emr;
4049 DWORD iArcDirection;
4050
4051 }
4052 alias tagEMRSETARCDIRECTION EMRSETARCDIRECTION;
4053 alias tagEMRSETARCDIRECTION* PEMRSETARCDIRECTION;
4054
4055 struct tagEMRSETMAPPERFLAGS {
4056 EMR emr;
4057 DWORD dwFlags;
4058 }
4059 alias tagEMRSETMAPPERFLAGS EMRSETMAPPERFLAGS;
4060 alias tagEMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS;
4061
4062 struct tagEMRSETTEXTCOLOR {
4063 EMR emr;
4064 COLORREF crColor;
4065 }
4066 alias tagEMRSETTEXTCOLOR EMRSETBKCOLOR;
4067 alias tagEMRSETTEXTCOLOR* PEMRSETBKCOLOR;
4068 alias tagEMRSETTEXTCOLOR EMRSETTEXTCOLOR;
4069 alias tagEMRSETTEXTCOLOR* PEMRSETTEXTCOLOR;
4070
4071 struct tagEMRSELECTOBJECT {
4072 EMR emr;
4073 DWORD ihObject;
4074 }
4075 alias tagEMRSELECTOBJECT EMRSELECTOBJECT;
4076 alias tagEMRSELECTOBJECT* PEMRSELECTOBJECT;
4077 alias tagEMRSELECTOBJECT EMRDELETEOBJECT;
4078 alias tagEMRSELECTOBJECT* PEMRDELETEOBJECT;
4079
4080 struct tagEMRSELECTPALETTE {
4081 EMR emr;
4082 DWORD ihPal;
4083 }
4084 alias tagEMRSELECTPALETTE EMRSELECTPALETTE;
4085 alias tagEMRSELECTPALETTE* PEMRSELECTPALETTE;
4086
4087 struct tagEMRRESIZEPALETTE {
4088 EMR emr;
4089 DWORD ihPal;
4090 DWORD cEntries;
4091 }
4092 alias tagEMRRESIZEPALETTE EMRRESIZEPALETTE;
4093 alias tagEMRRESIZEPALETTE* PEMRRESIZEPALETTE;
4094
4095 struct tagEMRSETPALETTEENTRIES {
4096 EMR emr;
4097 DWORD ihPal;
4098 DWORD iStart;
4099 DWORD cEntries;
4100 PALETTEENTRY aPalEntries[1];
4101 }
4102 alias tagEMRSETPALETTEENTRIES EMRSETPALETTEENTRIES;
4103 alias tagEMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES;
4104
4105 struct tagEMRSETCOLORADJUSTMENT {
4106 EMR emr;
4107 COLORADJUSTMENT ColorAdjustment;
4108 }
4109 alias tagEMRSETCOLORADJUSTMENT EMRSETCOLORADJUSTMENT;
4110 alias tagEMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT;
4111
4112 struct tagEMRGDICOMMENT {
4113 EMR emr;
4114 DWORD cbData;
4115 BYTE Data[1];
4116 }
4117 alias tagEMRGDICOMMENT EMRGDICOMMENT;
4118 alias tagEMRGDICOMMENT* PEMRGDICOMMENT;
4119
4120 struct tagEMREOF {
4121 EMR emr;
4122 DWORD nPalEntries;
4123 DWORD offPalEntries;
4124 DWORD nSizeLast;
4125
4126 }
4127 alias tagEMREOF EMREOF;
4128 alias tagEMREOF* PEMREOF;
4129
4130 struct tagEMRLINETO {
4131 EMR emr;
4132 POINTL ptl;
4133 }
4134 alias tagEMRLINETO EMRLINETO;
4135 alias tagEMRLINETO* PEMRLINETO;
4136 alias tagEMRLINETO EMRMOVETOEX;
4137 alias tagEMRLINETO* PEMRMOVETOEX;
4138
4139 struct tagEMROFFSETCLIPRGN {
4140 EMR emr;
4141 POINTL ptlOffset;
4142 }
4143 alias tagEMROFFSETCLIPRGN EMROFFSETCLIPRGN;
4144 alias tagEMROFFSETCLIPRGN* PEMROFFSETCLIPRGN;
4145
4146 struct tagEMRFILLPATH {
4147 EMR emr;
4148 RECTL rclBounds;
4149 }
4150 alias tagEMRFILLPATH EMRFILLPATH;
4151 alias tagEMRFILLPATH* PEMRFILLPATH;
4152 alias tagEMRFILLPATH EMRSTROKEANDFILLPATH;
4153 alias tagEMRFILLPATH* PEMRSTROKEANDFILLPATH;
4154 alias tagEMRFILLPATH EMRSTROKEPATH;
4155 alias tagEMRFILLPATH* PEMRSTROKEPATH;
4156
4157 struct tagEMREXCLUDECLIPRECT {
4158 EMR emr;
4159 RECTL rclClip;
4160 }
4161 alias tagEMREXCLUDECLIPRECT EMREXCLUDECLIPRECT;
4162 alias tagEMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT;
4163 alias tagEMREXCLUDECLIPRECT EMRINTERSECTCLIPRECT;
4164 alias tagEMREXCLUDECLIPRECT* PEMRINTERSECTCLIPRECT;
4165
4166 struct tagEMRSETVIEWPORTORGEX {
4167 EMR emr;
4168 POINTL ptlOrigin;
4169 }
4170 alias tagEMRSETVIEWPORTORGEX EMRSETVIEWPORTORGEX;
4171 alias tagEMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX;
4172 alias tagEMRSETVIEWPORTORGEX EMRSETWINDOWORGEX;
4173 alias tagEMRSETVIEWPORTORGEX* PEMRSETWINDOWORGEX;
4174 alias tagEMRSETVIEWPORTORGEX EMRSETBRUSHORGEX;
4175 alias tagEMRSETVIEWPORTORGEX* PEMRSETBRUSHORGEX;
4176
4177 struct tagEMRSETVIEWPORTEXTEX {
4178 EMR emr;
4179 SIZEL szlExtent;
4180 }
4181 alias tagEMRSETVIEWPORTEXTEX EMRSETVIEWPORTEXTEX;
4182 alias tagEMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX;
4183 alias tagEMRSETVIEWPORTEXTEX EMRSETWINDOWEXTEX;
4184 alias tagEMRSETVIEWPORTEXTEX* PEMRSETWINDOWEXTEX;
4185
4186 struct tagEMRSCALEVIEWPORTEXTEX {
4187 EMR emr;
4188 LONG xNum;
4189 LONG xDenom;
4190 LONG yNum;
4191 LONG yDenom;
4192 }
4193 alias tagEMRSCALEVIEWPORTEXTEX EMRSCALEVIEWPORTEXTEX;
4194 alias tagEMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX;
4195 alias tagEMRSCALEVIEWPORTEXTEX EMRSCALEWINDOWEXTEX;
4196 alias tagEMRSCALEVIEWPORTEXTEX* PEMRSCALEWINDOWEXTEX;
4197
4198 struct tagEMRSETWORLDTRANSFORM {
4199 EMR emr;
4200 XFORM xform;
4201 }
4202 alias tagEMRSETWORLDTRANSFORM EMRSETWORLDTRANSFORM;
4203 alias tagEMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM;
4204
4205 struct tagEMRMODIFYWORLDTRANSFORM {
4206 EMR emr;
4207 XFORM xform;
4208 DWORD iMode;
4209 }
4210 alias tagEMRMODIFYWORLDTRANSFORM EMRMODIFYWORLDTRANSFORM;
4211 alias tagEMRMODIFYWORLDTRANSFORM* PEMRMODIFYWORLDTRANSFORM;
4212
4213 struct tagEMRSETPIXELV {
4214 EMR emr;
4215 POINTL ptlPixel;
4216 COLORREF crColor;
4217 }
4218 alias tagEMRSETPIXELV EMRSETPIXELV;
4219 alias tagEMRSETPIXELV* PEMRSETPIXELV;
4220
4221 struct tagEMREXTFLOODFILL {
4222 EMR emr;
4223 POINTL ptlStart;
4224 COLORREF crColor;
4225 DWORD iMode;
4226 }
4227 alias tagEMREXTFLOODFILL EMREXTFLOODFILL;
4228 alias tagEMREXTFLOODFILL* PEMREXTFLOODFILL;
4229
4230 struct tagEMRELLIPSE {
4231 EMR emr;
4232 RECTL rclBox;
4233 }
4234 alias tagEMRELLIPSE EMRELLIPSE;
4235 alias tagEMRELLIPSE* PEMRELLIPSE;
4236 alias tagEMRELLIPSE EMRRECTANGLE;
4237 alias tagEMRELLIPSE* PEMRRECTANGLE;
4238
4239 struct tagEMRROUNDRECT {
4240 EMR emr;
4241 RECTL rclBox;
4242 SIZEL szlCorner;
4243 }
4244 alias tagEMRROUNDRECT EMRROUNDRECT;
4245 alias tagEMRROUNDRECT* PEMRROUNDRECT;
4246
4247 struct tagEMRARC {
4248 EMR emr;
4249 RECTL rclBox;
4250 POINTL ptlStart;
4251 POINTL ptlEnd;
4252 }
4253 alias tagEMRARC EMRARC;
4254 alias tagEMRARC* PEMRARC;
4255 alias tagEMRARC EMRARCTO;
4256 alias tagEMRARC* PEMRARCTO;
4257 alias tagEMRARC EMRCHORD;
4258 alias tagEMRARC* PEMRCHORD;
4259 alias tagEMRARC EMRPIE;
4260 alias tagEMRARC* PEMRPIE;
4261
4262 struct tagEMRANGLEARC {
4263 EMR emr;
4264 POINTL ptlCenter;
4265 DWORD nRadius;
4266 FLOAT eStartAngle;
4267 FLOAT eSweepAngle;
4268 }
4269 alias tagEMRANGLEARC EMRANGLEARC;
4270 alias tagEMRANGLEARC* PEMRANGLEARC;
4271
4272 struct tagEMRPOLYLINE {
4273 EMR emr;
4274 RECTL rclBounds;
4275 DWORD cptl;
4276 POINTL aptl[1];
4277 }
4278 alias tagEMRPOLYLINE EMRPOLYLINE;
4279 alias tagEMRPOLYLINE* PEMRPOLYLINE;
4280 alias tagEMRPOLYLINE EMRPOLYBEZIER;
4281 alias tagEMRPOLYLINE* PEMRPOLYBEZIER;
4282 alias tagEMRPOLYLINE EMRPOLYGON;
4283 alias tagEMRPOLYLINE* PEMRPOLYGON;
4284 alias tagEMRPOLYLINE EMRPOLYBEZIERTO;
4285 alias tagEMRPOLYLINE* PEMRPOLYBEZIERTO;
4286 alias tagEMRPOLYLINE EMRPOLYLINETO;
4287 alias tagEMRPOLYLINE* PEMRPOLYLINETO;
4288
4289 struct tagEMRPOLYLINE16 {
4290 EMR emr;
4291 RECTL rclBounds;
4292 DWORD cpts;
4293 POINTS apts[1];
4294 }
4295 alias tagEMRPOLYLINE16 EMRPOLYLINE16;
4296 alias tagEMRPOLYLINE16* PEMRPOLYLINE16;
4297 alias tagEMRPOLYLINE16 EMRPOLYBEZIER16;
4298 alias tagEMRPOLYLINE16* PEMRPOLYBEZIER16;
4299 alias tagEMRPOLYLINE16 EMRPOLYGON16;
4300 alias tagEMRPOLYLINE16* PEMRPOLYGON16;
4301 alias tagEMRPOLYLINE16 EMRPOLYBEZIERTO16;
4302 alias tagEMRPOLYLINE16* PEMRPOLYBEZIERTO16;
4303 alias tagEMRPOLYLINE16 EMRPOLYLINETO16;
4304 alias tagEMRPOLYLINE16* PEMRPOLYLINETO16;
4305
4306 struct tagEMRPOLYDRAW {
4307 EMR emr;
4308 RECTL rclBounds;
4309 DWORD cptl;
4310 POINTL aptl[1];
4311 BYTE abTypes[1];
4312 }
4313 alias tagEMRPOLYDRAW EMRPOLYDRAW;
4314 alias tagEMRPOLYDRAW* PEMRPOLYDRAW;
4315
4316 struct tagEMRPOLYDRAW16 {
4317 EMR emr;
4318 RECTL rclBounds;
4319 DWORD cpts;
4320 POINTS apts[1];
4321 BYTE abTypes[1];
4322 }
4323 alias tagEMRPOLYDRAW16 EMRPOLYDRAW16;
4324 alias tagEMRPOLYDRAW16* PEMRPOLYDRAW16;
4325
4326 struct tagEMRPOLYPOLYLINE {
4327 EMR emr;
4328 RECTL rclBounds;
4329 DWORD nPolys;
4330 DWORD cptl;
4331 DWORD aPolyCounts[1];
4332 POINTL aptl[1];
4333 }
4334 alias tagEMRPOLYPOLYLINE EMRPOLYPOLYLINE;
4335 alias tagEMRPOLYPOLYLINE* PEMRPOLYPOLYLINE;
4336 alias tagEMRPOLYPOLYLINE EMRPOLYPOLYGON;
4337 alias tagEMRPOLYPOLYLINE* PEMRPOLYPOLYGON;
4338
4339 struct tagEMRPOLYPOLYLINE16 {
4340 EMR emr;
4341 RECTL rclBounds;
4342 DWORD nPolys;
4343 DWORD cpts;
4344 DWORD aPolyCounts[1];
4345 POINTS apts[1];
4346 }
4347 alias tagEMRPOLYPOLYLINE16 EMRPOLYPOLYLINE16;
4348 alias tagEMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16;
4349 alias tagEMRPOLYPOLYLINE16 EMRPOLYPOLYGON16;
4350 alias tagEMRPOLYPOLYLINE16* PEMRPOLYPOLYGON16;
4351
4352 struct tagEMRINVERTRGN {
4353 EMR emr;
4354 RECTL rclBounds;
4355 DWORD cbRgnData;
4356 BYTE RgnData[1];
4357 }
4358 alias tagEMRINVERTRGN EMRINVERTRGN;
4359 alias tagEMRINVERTRGN* PEMRINVERTRGN;
4360 alias tagEMRINVERTRGN EMRPAINTRGN;
4361 alias tagEMRINVERTRGN* PEMRPAINTRGN;
4362
4363 struct tagEMRFILLRGN {
4364 EMR emr;
4365 RECTL rclBounds;
4366 DWORD cbRgnData;
4367 DWORD ihBrush;
4368 BYTE RgnData[1];
4369 }
4370 alias tagEMRFILLRGN EMRFILLRGN;
4371 alias tagEMRFILLRGN* PEMRFILLRGN;
4372
4373 struct tagEMRFRAMERGN {
4374 EMR emr;
4375 RECTL rclBounds;
4376 DWORD cbRgnData;
4377 DWORD ihBrush;
4378 SIZEL szlStroke;
4379 BYTE RgnData[1];
4380 }
4381 alias tagEMRFRAMERGN EMRFRAMERGN;
4382 alias tagEMRFRAMERGN* PEMRFRAMERGN;
4383
4384 struct tagEMREXTSELECTCLIPRGN {
4385 EMR emr;
4386 DWORD cbRgnData;
4387 DWORD iMode;
4388 BYTE RgnData[1];
4389 }
4390 alias tagEMREXTSELECTCLIPRGN EMREXTSELECTCLIPRGN;
4391 alias tagEMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN;
4392
4393 struct tagEMREXTTEXTOUTA {
4394 EMR emr;
4395 RECTL rclBounds;
4396 DWORD iGraphicsMode;
4397 FLOAT exScale;
4398 FLOAT eyScale;
4399 EMRTEXT emrtext;
4400
4401 }
4402 alias tagEMREXTTEXTOUTA EMREXTTEXTOUTA;
4403 alias tagEMREXTTEXTOUTA* PEMREXTTEXTOUTA;
4404 alias tagEMREXTTEXTOUTA EMREXTTEXTOUTW;
4405 alias tagEMREXTTEXTOUTA* PEMREXTTEXTOUTW;
4406
4407 struct tagEMRPOLYTEXTOUTA {
4408 EMR emr;
4409 RECTL rclBounds;
4410 DWORD iGraphicsMode;
4411 FLOAT exScale;
4412 FLOAT eyScale;
4413 LONG cStrings;
4414 EMRTEXT aemrtext[1];
4415
4416 }
4417 alias tagEMRPOLYTEXTOUTA EMRPOLYTEXTOUTA;
4418 alias tagEMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA;
4419 alias tagEMRPOLYTEXTOUTA EMRPOLYTEXTOUTW;
4420 alias tagEMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTW;
4421
4422 struct tagEMRBITBLT {
4423 EMR emr;
4424 RECTL rclBounds;
4425 LONG xDest;
4426 LONG yDest;
4427 LONG cxDest;
4428 LONG cyDest;
4429 DWORD dwRop;
4430 LONG xSrc;
4431 LONG ySrc;
4432 XFORM xformSrc;
4433 COLORREF crBkColorSrc;
4434 DWORD iUsageSrc;
4435
4436 DWORD offBmiSrc;
4437 DWORD cbBmiSrc;
4438 DWORD offBitsSrc;
4439 DWORD cbBitsSrc;
4440 }
4441 alias tagEMRBITBLT EMRBITBLT;
4442 alias tagEMRBITBLT* PEMRBITBLT;
4443
4444 struct tagEMRSTRETCHBLT {
4445 EMR emr;
4446 RECTL rclBounds;
4447 LONG xDest;
4448 LONG yDest;
4449 LONG cxDest;
4450 LONG cyDest;
4451 DWORD dwRop;
4452 LONG xSrc;
4453 LONG ySrc;
4454 XFORM xformSrc;
4455 COLORREF crBkColorSrc;
4456 DWORD iUsageSrc;
4457
4458 DWORD offBmiSrc;
4459 DWORD cbBmiSrc;
4460 DWORD offBitsSrc;
4461 DWORD cbBitsSrc;
4462 LONG cxSrc;
4463 LONG cySrc;
4464 }
4465 alias tagEMRSTRETCHBLT EMRSTRETCHBLT;
4466 alias tagEMRSTRETCHBLT* PEMRSTRETCHBLT;
4467
4468 struct tagEMRMASKBLT {
4469 EMR emr;
4470 RECTL rclBounds;
4471 LONG xDest;
4472 LONG yDest;
4473 LONG cxDest;
4474 LONG cyDest;
4475 DWORD dwRop;
4476 LONG xSrc;
4477 LONG ySrc;
4478 XFORM xformSrc;
4479 COLORREF crBkColorSrc;
4480 DWORD iUsageSrc;
4481
4482 DWORD offBmiSrc;
4483 DWORD cbBmiSrc;
4484 DWORD offBitsSrc;
4485 DWORD cbBitsSrc;
4486 LONG xMask;
4487 LONG yMask;
4488 DWORD iUsageMask;
4489 DWORD offBmiMask;
4490 DWORD cbBmiMask;
4491 DWORD offBitsMask;
4492 DWORD cbBitsMask;
4493 }
4494 alias tagEMRMASKBLT EMRMASKBLT;
4495 alias tagEMRMASKBLT* PEMRMASKBLT;
4496
4497 struct tagEMRPLGBLT {
4498 EMR emr;
4499 RECTL rclBounds;
4500 POINTL aptlDest[3];
4501 LONG xSrc;
4502 LONG ySrc;
4503 LONG cxSrc;
4504 LONG cySrc;
4505 XFORM xformSrc;
4506 COLORREF crBkColorSrc;
4507 DWORD iUsageSrc;
4508
4509 DWORD offBmiSrc;
4510 DWORD cbBmiSrc;
4511 DWORD offBitsSrc;
4512 DWORD cbBitsSrc;
4513 LONG xMask;
4514 LONG yMask;
4515 DWORD iUsageMask;
4516 DWORD offBmiMask;
4517 DWORD cbBmiMask;
4518 DWORD offBitsMask;
4519 DWORD cbBitsMask;
4520 }
4521 alias tagEMRPLGBLT EMRPLGBLT;
4522 alias tagEMRPLGBLT* PEMRPLGBLT;
4523
4524 struct tagEMRSETDIBITSTODEVICE {
4525 EMR emr;
4526 RECTL rclBounds;
4527 LONG xDest;
4528 LONG yDest;
4529 LONG xSrc;
4530 LONG ySrc;
4531 LONG cxSrc;
4532 LONG cySrc;
4533 DWORD offBmiSrc;
4534 DWORD cbBmiSrc;
4535 DWORD offBitsSrc;
4536 DWORD cbBitsSrc;
4537 DWORD iUsageSrc;
4538 DWORD iStartScan;
4539 DWORD cScans;
4540 }
4541 alias tagEMRSETDIBITSTODEVICE EMRSETDIBITSTODEVICE;
4542 alias tagEMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE;
4543
4544 struct tagEMRSTRETCHDIBITS {
4545 EMR emr;
4546 RECTL rclBounds;
4547 LONG xDest;
4548 LONG yDest;
4549 LONG xSrc;
4550 LONG ySrc;
4551 LONG cxSrc;
4552 LONG cySrc;
4553 DWORD offBmiSrc;
4554 DWORD cbBmiSrc;
4555 DWORD offBitsSrc;
4556 DWORD cbBitsSrc;
4557 DWORD iUsageSrc;
4558 DWORD dwRop;
4559 LONG cxDest;
4560 LONG cyDest;
4561 }
4562 alias tagEMRSTRETCHDIBITS EMRSTRETCHDIBITS;
4563 alias tagEMRSTRETCHDIBITS* PEMRSTRETCHDIBITS;
4564
4565 struct tagEMREXTCREATEFONTINDIRECTW {
4566 EMR emr;
4567 DWORD ihFont;
4568 EXTLOGFONTW elfw;
4569 }
4570 alias tagEMREXTCREATEFONTINDIRECTW EMREXTCREATEFONTINDIRECTW;
4571 alias tagEMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW;
4572
4573 struct tagEMRCREATEPALETTE {
4574 EMR emr;
4575 DWORD ihPal;
4576 LOGPALETTE lgpl;
4577
4578 }
4579 alias tagEMRCREATEPALETTE EMRCREATEPALETTE;
4580 alias tagEMRCREATEPALETTE* PEMRCREATEPALETTE;
4581
4582 struct tagEMRCREATEPEN {
4583 EMR emr;
4584 DWORD ihPen;
4585 LOGPEN lopn;
4586 }
4587 alias tagEMRCREATEPEN EMRCREATEPEN;
4588 alias tagEMRCREATEPEN* PEMRCREATEPEN;
4589
4590 struct tagEMREXTCREATEPEN {
4591 EMR emr;
4592 DWORD ihPen;
4593 DWORD offBmi;
4594 DWORD cbBmi;
4595
4596 DWORD offBits;
4597 DWORD cbBits;
4598 EXTLOGPEN elp;
4599 }
4600 alias tagEMREXTCREATEPEN EMREXTCREATEPEN;
4601 alias tagEMREXTCREATEPEN* PEMREXTCREATEPEN;
4602
4603 struct tagEMRCREATEBRUSHINDIRECT {
4604 EMR emr;
4605 DWORD ihBrush;
4606 LOGBRUSH32 lb;
4607
4608 }
4609 alias tagEMRCREATEBRUSHINDIRECT EMRCREATEBRUSHINDIRECT;
4610 alias tagEMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT;
4611
4612 struct tagEMRCREATEMONOBRUSH {
4613 EMR emr;
4614 DWORD ihBrush;
4615 DWORD iUsage;
4616 DWORD offBmi;
4617 DWORD cbBmi;
4618 DWORD offBits;
4619 DWORD cbBits;
4620 }
4621 alias tagEMRCREATEMONOBRUSH EMRCREATEMONOBRUSH;
4622 alias tagEMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH;
4623
4624 struct tagEMRCREATEDIBPATTERNBRUSHPT {
4625 EMR emr;
4626 DWORD ihBrush;
4627 DWORD iUsage;
4628 DWORD offBmi;
4629 DWORD cbBmi;
4630
4631 DWORD offBits;
4632 DWORD cbBits;
4633 }
4634 alias tagEMRCREATEDIBPATTERNBRUSHPT EMRCREATEDIBPATTERNBRUSHPT;
4635 alias tagEMRCREATEDIBPATTERNBRUSHPT* PEMRCREATEDIBPATTERNBRUSHPT;
4636
4637 struct tagEMRFORMAT {
4638 DWORD dSignature;
4639 DWORD nVersion;
4640 DWORD cbData;
4641 DWORD offData;
4642
4643 }
4644 alias tagEMRFORMAT EMRFORMAT;
4645 alias tagEMRFORMAT* PEMRFORMAT;
4646
4647 // #if(WINVER >= 0x0400)
4648
4649 struct tagEMRGLSRECORD {
4650 EMR emr;
4651 DWORD cbData;
4652 BYTE Data[1];
4653 }
4654 alias tagEMRGLSRECORD EMRGLSRECORD;
4655 alias tagEMRGLSRECORD* PEMRGLSRECORD;
4656
4657 struct tagEMRGLSBOUNDEDRECORD {
4658 EMR emr;
4659 RECTL rclBounds;
4660 DWORD cbData;
4661 BYTE Data[1];
4662 }
4663 alias tagEMRGLSBOUNDEDRECORD EMRGLSBOUNDEDRECORD;
4664 alias tagEMRGLSBOUNDEDRECORD* PEMRGLSBOUNDEDRECORD;
4665
4666 struct tagEMRPIXELFORMAT {
4667 EMR emr;
4668 PIXELFORMATDESCRIPTOR pfd;
4669 }
4670 alias tagEMRPIXELFORMAT EMRPIXELFORMAT;
4671 alias tagEMRPIXELFORMAT* PEMRPIXELFORMAT;
4672
4673 struct tagEMRCREATECOLORSPACE {
4674 EMR emr;
4675 DWORD ihCS;
4676 LOGCOLORSPACEA lcs;
4677 }
4678 alias tagEMRCREATECOLORSPACE EMRCREATECOLORSPACE;
4679 alias tagEMRCREATECOLORSPACE* PEMRCREATECOLORSPACE;
4680
4681 struct tagEMRSETCOLORSPACE {
4682 EMR emr;
4683 DWORD ihCS;
4684 }
4685 alias tagEMRSETCOLORSPACE EMRSETCOLORSPACE;
4686 alias tagEMRSETCOLORSPACE* PEMRSETCOLORSPACE;
4687 alias tagEMRSETCOLORSPACE EMRSELECTCOLORSPACE;
4688 alias tagEMRSETCOLORSPACE* PEMRSELECTCOLORSPACE;
4689 alias tagEMRSETCOLORSPACE EMRDELETECOLORSPACE;
4690 alias tagEMRSETCOLORSPACE* PEMRDELETECOLORSPACE;
4691
4692 // #endif /* WINVER >= 0x0400 */
4693
4694 // #if(WINVER >= 0x0500)
4695
4696 struct tagEMREXTESCAPE {
4697 EMR emr;
4698 INT iEscape;
4699 INT cbEscData;
4700 BYTE EscData[1];
4701 }
4702 alias tagEMREXTESCAPE EMREXTESCAPE;
4703 alias tagEMREXTESCAPE* PEMREXTESCAPE;
4704 alias tagEMREXTESCAPE EMRDRAWESCAPE;
4705 alias tagEMREXTESCAPE* PEMRDRAWESCAPE;
4706
4707 struct tagEMRNAMEDESCAPE {
4708 EMR emr;
4709 INT iEscape;
4710 INT cbDriver;
4711 INT cbEscData;
4712 BYTE EscData[1];
4713 }
4714 alias tagEMRNAMEDESCAPE EMRNAMEDESCAPE;
4715 alias tagEMRNAMEDESCAPE* PEMRNAMEDESCAPE;
4716
4717 enum : uint { SETICMPROFILE_EMBEDED = 0x00000001 }
4718
4719 struct tagEMRSETICMPROFILE {
4720 EMR emr;
4721 DWORD dwFlags;
4722 DWORD cbName;
4723 DWORD cbData;
4724 BYTE Data[1];
4725 }
4726 alias tagEMRSETICMPROFILE EMRSETICMPROFILE;
4727 alias tagEMRSETICMPROFILE* PEMRSETICMPROFILE;
4728 alias tagEMRSETICMPROFILE EMRSETICMPROFILEA;
4729 alias tagEMRSETICMPROFILE* PEMRSETICMPROFILEA;
4730 alias tagEMRSETICMPROFILE EMRSETICMPROFILEW;
4731 alias tagEMRSETICMPROFILE* PEMRSETICMPROFILEW;
4732
4733 enum : uint { CREATECOLORSPACE_EMBEDED = 0x00000001 }
4734
4735 struct tagEMRCREATECOLORSPACEW {
4736 EMR emr;
4737 DWORD ihCS;
4738 LOGCOLORSPACEW lcs;
4739 DWORD dwFlags;
4740 DWORD cbData;
4741 BYTE Data[1];
4742 }
4743 alias tagEMRCREATECOLORSPACEW EMRCREATECOLORSPACEW;
4744 alias tagEMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW;
4745
4746 enum : uint { COLORMATCHTOTARGET_EMBEDED = 0x00000001 }
4747
4748 struct tagCOLORMATCHTOTARGET {
4749 EMR emr;
4750 DWORD dwAction;
4751 DWORD dwFlags;
4752 DWORD cbName;
4753 DWORD cbData;
4754 BYTE Data[1];
4755 }
4756 alias tagCOLORMATCHTOTARGET EMRCOLORMATCHTOTARGET;
4757 alias tagCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET;
4758
4759 struct tagCOLORCORRECTPALETTE {
4760 EMR emr;
4761 DWORD ihPalette;
4762 DWORD nFirstEntry;
4763 DWORD nPalEntries;
4764 DWORD nReserved;
4765 }
4766 alias tagCOLORCORRECTPALETTE EMRCOLORCORRECTPALETTE;
4767 alias tagCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE;
4768
4769 struct tagEMRALPHABLEND {
4770 EMR emr;
4771 RECTL rclBounds;
4772 LONG xDest;
4773 LONG yDest;
4774 LONG cxDest;
4775 LONG cyDest;
4776 DWORD dwRop;
4777 LONG xSrc;
4778 LONG ySrc;
4779 XFORM xformSrc;
4780 COLORREF crBkColorSrc;
4781 DWORD iUsageSrc;
4782
4783 DWORD offBmiSrc;
4784 DWORD cbBmiSrc;
4785 DWORD offBitsSrc;
4786 DWORD cbBitsSrc;
4787 LONG cxSrc;
4788 LONG cySrc;
4789 }
4790 alias tagEMRALPHABLEND EMRALPHABLEND;
4791 alias tagEMRALPHABLEND* PEMRALPHABLEND;
4792
4793 struct tagEMRGRADIENTFILL {
4794 EMR emr;
4795 RECTL rclBounds;
4796 DWORD nVer;
4797 DWORD nTri;
4798 ULONG ulMode;
4799 TRIVERTEX Ver[1];
4800 }
4801 alias tagEMRGRADIENTFILL EMRGRADIENTFILL;
4802 alias tagEMRGRADIENTFILL* PEMRGRADIENTFILL;
4803
4804 struct tagEMRTRANSPARENTBLT {
4805 EMR emr;
4806 RECTL rclBounds;
4807 LONG xDest;
4808 LONG yDest;
4809 LONG cxDest;
4810 LONG cyDest;
4811 DWORD dwRop;
4812 LONG xSrc;
4813 LONG ySrc;
4814 XFORM xformSrc;
4815 COLORREF crBkColorSrc;
4816 DWORD iUsageSrc;
4817
4818 DWORD offBmiSrc;
4819 DWORD cbBmiSrc;
4820 DWORD offBitsSrc;
4821 DWORD cbBitsSrc;
4822 LONG cxSrc;
4823 LONG cySrc;
4824 }
4825 alias tagEMRTRANSPARENTBLT EMRTRANSPARENTBLT;
4826 alias tagEMRTRANSPARENTBLT* PEMRTRANSPARENTBLT;
4827
4828 // #endif /* WINVER >= 0x0500 */
4829
4830 enum : uint { GDICOMMENT_IDENTIFIER = 0x43494447 }
4831 enum : uint { GDICOMMENT_WINDOWS_METAFILE = 0x80000001 }
4832 enum : uint { GDICOMMENT_BEGINGROUP = 0x00000002 }
4833 enum : uint { GDICOMMENT_ENDGROUP = 0x00000003 }
4834 enum : uint { GDICOMMENT_MULTIFORMATS = 0x40000004 }
4835 enum : uint { EPS_SIGNATURE = 0x46535045 }
4836 enum : uint { GDICOMMENT_UNICODE_STRING = 0x00000040 }
4837 enum : uint { GDICOMMENT_UNICODE_END = 0x00000080 }
4838
4839 // #endif /* NOMETAFILE */
4840
4841 extern(Windows) export BOOL wglCopyContext(HGLRC, HGLRC, UINT);
4842 extern(Windows) export HGLRC wglCreateContext(HDC);
4843 extern(Windows) export HGLRC wglCreateLayerContext(HDC, int);
4844 extern(Windows) export BOOL wglDeleteContext(HGLRC);
4845 extern(Windows) export HGLRC wglGetCurrentContext();
4846 extern(Windows) export HDC wglGetCurrentDC();
4847 extern(Windows) export PROC wglGetProcAddress(LPCSTR);
4848 extern(Windows) export BOOL wglMakeCurrent(HDC, HGLRC);
4849 extern(Windows) export BOOL wglShareLists(HGLRC, HGLRC);
4850 extern(Windows) export BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD);
4851 extern(Windows) export BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD);
4852 // #ifdef UNICODE
4853 alias wglUseFontBitmapsW wglUseFontBitmaps;
4854 // #else
4855 // #...
4856 // #endif // !UNICODE
4857 extern(Windows) export BOOL SwapBuffers(HDC);
4858
4859 struct _POINTFLOAT {
4860 FLOAT x;
4861 FLOAT y;
4862 }
4863 alias _POINTFLOAT POINTFLOAT;
4864 alias _POINTFLOAT* PPOINTFLOAT;
4865
4866 struct _GLYPHMETRICSFLOAT {
4867 FLOAT gmfBlackBoxX;
4868 FLOAT gmfBlackBoxY;
4869 POINTFLOAT gmfptGlyphOrigin;
4870 FLOAT gmfCellIncX;
4871 FLOAT gmfCellIncY;
4872 }
4873 alias _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT;
4874 alias _GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT;
4875 alias _GLYPHMETRICSFLOAT* LPGLYPHMETRICSFLOAT;
4876
4877 enum : uint { WGL_FONT_LINES = 0 }
4878 enum : uint { WGL_FONT_POLYGONS = 1 }
4879 extern(Windows) export BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT,
4880 FLOAT, int, LPGLYPHMETRICSFLOAT);
4881 extern(Windows) export BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT,
4882 FLOAT, int, LPGLYPHMETRICSFLOAT);
4883 // #ifdef UNICODE
4884 alias wglUseFontOutlinesW wglUseFontOutlines;
4885 // #else
4886 // #...
4887 // #endif // !UNICODE
4888
4889 struct tagLAYERPLANEDESCRIPTOR {
4890 WORD nSize;
4891 WORD nVersion;
4892 DWORD dwFlags;
4893 BYTE iPixelType;
4894 BYTE cColorBits;
4895 BYTE cRedBits;
4896 BYTE cRedShift;
4897 BYTE cGreenBits;
4898 BYTE cGreenShift;
4899 BYTE cBlueBits;
4900 BYTE cBlueShift;
4901 BYTE cAlphaBits;
4902 BYTE cAlphaShift;
4903 BYTE cAccumBits;
4904 BYTE cAccumRedBits;
4905 BYTE cAccumGreenBits;
4906 BYTE cAccumBlueBits;
4907 BYTE cAccumAlphaBits;
4908 BYTE cDepthBits;
4909 BYTE cStencilBits;
4910 BYTE cAuxBuffers;
4911 BYTE iLayerPlane;
4912 BYTE bReserved;
4913 COLORREF crTransparent;
4914 }
4915 alias tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR;
4916 alias tagLAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR;
4917 alias tagLAYERPLANEDESCRIPTOR* LPLAYERPLANEDESCRIPTOR;
4918
4919 enum : uint { LPD_DOUBLEBUFFER = 0x00000001 }
4920 enum : uint { LPD_STEREO = 0x00000002 }
4921 enum : uint { LPD_SUPPORT_GDI = 0x00000010 }
4922 enum : uint { LPD_SUPPORT_OPENGL = 0x00000020 }
4923 enum : uint { LPD_SHARE_DEPTH = 0x00000040 }
4924 enum : uint { LPD_SHARE_STENCIL = 0x00000080 }
4925 enum : uint { LPD_SHARE_ACCUM = 0x00000100 }
4926 enum : uint { LPD_SWAP_EXCHANGE = 0x00000200 }
4927 enum : uint { LPD_SWAP_COPY = 0x00000400 }
4928 enum : uint { LPD_TRANSPARENT = 0x00001000 }
4929
4930 enum : uint { LPD_TYPE_RGBA = 0 }
4931 enum : uint { LPD_TYPE_COLORINDEX = 1 }
4932
4933 enum : uint { WGL_SWAP_MAIN_PLANE = 0x00000001 }
4934 enum : uint { WGL_SWAP_OVERLAY1 = 0x00000002 }
4935 enum : uint { WGL_SWAP_OVERLAY2 = 0x00000004 }
4936 enum : uint { WGL_SWAP_OVERLAY3 = 0x00000008 }
4937 enum : uint { WGL_SWAP_OVERLAY4 = 0x00000010 }
4938 enum : uint { WGL_SWAP_OVERLAY5 = 0x00000020 }
4939 enum : uint { WGL_SWAP_OVERLAY6 = 0x00000040 }
4940 enum : uint { WGL_SWAP_OVERLAY7 = 0x00000080 }
4941 enum : uint { WGL_SWAP_OVERLAY8 = 0x00000100 }
4942 enum : uint { WGL_SWAP_OVERLAY9 = 0x00000200 }
4943 enum : uint { WGL_SWAP_OVERLAY10 = 0x00000400 }
4944 enum : uint { WGL_SWAP_OVERLAY11 = 0x00000800 }
4945 enum : uint { WGL_SWAP_OVERLAY12 = 0x00001000 }
4946 enum : uint { WGL_SWAP_OVERLAY13 = 0x00002000 }
4947 enum : uint { WGL_SWAP_OVERLAY14 = 0x00004000 }
4948 enum : uint { WGL_SWAP_OVERLAY15 = 0x00008000 }
4949 enum : uint { WGL_SWAP_UNDERLAY1 = 0x00010000 }
4950 enum : uint { WGL_SWAP_UNDERLAY2 = 0x00020000 }
4951 enum : uint { WGL_SWAP_UNDERLAY3 = 0x00040000 }
4952 enum : uint { WGL_SWAP_UNDERLAY4 = 0x00080000 }
4953 enum : uint { WGL_SWAP_UNDERLAY5 = 0x00100000 }
4954 enum : uint { WGL_SWAP_UNDERLAY6 = 0x00200000 }
4955 enum : uint { WGL_SWAP_UNDERLAY7 = 0x00400000 }
4956 enum : uint { WGL_SWAP_UNDERLAY8 = 0x00800000 }
4957 enum : uint { WGL_SWAP_UNDERLAY9 = 0x01000000 }
4958 enum : uint { WGL_SWAP_UNDERLAY10 = 0x02000000 }
4959 enum : uint { WGL_SWAP_UNDERLAY11 = 0x04000000 }
4960 enum : uint { WGL_SWAP_UNDERLAY12 = 0x08000000 }
4961 enum : uint { WGL_SWAP_UNDERLAY13 = 0x10000000 }
4962 enum : uint { WGL_SWAP_UNDERLAY14 = 0x20000000 }
4963 enum : uint { WGL_SWAP_UNDERLAY15 = 0x40000000 }
4964
4965 extern(Windows) export BOOL wglDescribeLayerPlane(HDC, int, int, UINT,
4966 LPLAYERPLANEDESCRIPTOR);
4967 extern(Windows) export int wglSetLayerPaletteEntries(HDC, int, int, int,
4968 COLORREF *);
4969 extern(Windows) export int wglGetLayerPaletteEntries(HDC, int, int, int,
4970 COLORREF *);
4971 extern(Windows) export BOOL wglRealizeLayerPalette(HDC, int, BOOL);
4972 extern(Windows) export BOOL wglSwapLayerBuffers(HDC, UINT);
4973
4974 // #if (WINVER >= 0x0500)
4975
4976 struct _WGLSWAP {
4977 HDC hdc;
4978 UINT uiFlags;
4979 }
4980 alias _WGLSWAP WGLSWAP;
4981 alias _WGLSWAP* PWGLSWAP;
4982 alias _WGLSWAP* LPWGLSWAP;
4983
4984 enum : uint { WGL_SWAPMULTIPLE_MAX = 16 }
4985
4986 extern(Windows) export DWORD wglSwapMultipleBuffers(UINT, WGLSWAP *);
4987
4988 // #endif // (WINVER >= 0x0500)
4989
4990 // #endif /* NOGDI */
4991
4992 // #ifdef __cplusplus
4993 // }
4994 // #endif
4995
4996 // #endif /* _WINGDI_ */
4997