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