comparison win32/wingdi.d @ 1:4a9dcbd9e54f

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