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
25extern "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
3113WINGDIAPI BOOL WINAPI GdiRegisterDdraw(PGDIREGISTERDDRAWPACKET pPacket,
3114                                       GDIMARSHALLOC *ppfnGdiAlloc);
3115WINGDIAPI ULONG WINAPI GdiMarshalSize(VOID);
3116WINGDIAPI VOID WINAPI GdiMarshal(DWORD dwProcessIdTo, HGDIOBJ hGdiObj,
3117                                 PVOID pData, ULONG ulFlags);
3118WINGDIAPI 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();
3387  WINGDIAPI DWORD WINAPI GdiSetBatchLimit(DWORD dw);
3388  WINGDIAPI DWORD WINAPI GdiGetBatchLimit();
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