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