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