Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _WINGDI_
      7 #define _WINGDI_
      8 
      9 #include <winapifamily.h>
     10 #include <_mingw_unicode.h>
     11 
     12 #ifdef _GDI32_
     13 #define WINGDIAPI
     14 #else
     15 #define WINGDIAPI DECLSPEC_IMPORT
     16 #endif
     17 
     18 #ifdef _SPOOL32_
     19 #define WINSPOOLAPI
     20 #else
     21 #define WINSPOOLAPI DECLSPEC_IMPORT
     22 #endif
     23 
     24 #ifdef __cplusplus
     25 extern "C" {
     26 #endif
     27 
     28 #ifndef WINVER
     29 #define WINVER 0x0502
     30 #endif
     31 
     32 #ifndef NOGDI
     33 #ifndef NORASTEROPS
     34 #define R2_BLACK 1
     35 #define R2_NOTMERGEPEN 2
     36 #define R2_MASKNOTPEN 3
     37 #define R2_NOTCOPYPEN 4
     38 #define R2_MASKPENNOT 5
     39 #define R2_NOT 6
     40 #define R2_XORPEN 7
     41 #define R2_NOTMASKPEN 8
     42 #define R2_MASKPEN 9
     43 #define R2_NOTXORPEN 10
     44 #define R2_NOP 11
     45 #define R2_MERGENOTPEN 12
     46 #define R2_COPYPEN 13
     47 #define R2_MERGEPENNOT 14
     48 #define R2_MERGEPEN 15
     49 #define R2_WHITE 16
     50 #define R2_LAST 16
     51 
     52 #define SRCCOPY (DWORD)0x00CC0020
     53 #define SRCPAINT (DWORD)0x00EE0086
     54 #define SRCAND (DWORD)0x008800C6
     55 #define SRCINVERT (DWORD)0x00660046
     56 #define SRCERASE (DWORD)0x00440328
     57 #define NOTSRCCOPY (DWORD)0x00330008
     58 #define NOTSRCERASE (DWORD)0x001100A6
     59 #define MERGECOPY (DWORD)0x00C000CA
     60 #define MERGEPAINT (DWORD)0x00BB0226
     61 #define PATCOPY (DWORD)0x00F00021
     62 #define PATPAINT (DWORD)0x00FB0A09
     63 #define PATINVERT (DWORD)0x005A0049
     64 #define DSTINVERT (DWORD)0x00550009
     65 #define BLACKNESS (DWORD)0x00000042
     66 #define WHITENESS (DWORD)0x00FF0062
     67 #define NOMIRRORBITMAP (DWORD)0x80000000
     68 #define CAPTUREBLT (DWORD)0x40000000
     69 #define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))
     70 #endif
     71 
     72 #define GDI_ERROR (__MSABI_LONG(0xFFFFFFFF))
     73 #define HGDI_ERROR (LongToHandle(0xFFFFFFFF))
     74 
     75 #define ERROR 0
     76 #define NULLREGION 1
     77 #define SIMPLEREGION 2
     78 #define COMPLEXREGION 3
     79 #define RGN_ERROR ERROR
     80 
     81 #define RGN_AND 1
     82 #define RGN_OR 2
     83 #define RGN_XOR 3
     84 #define RGN_DIFF 4
     85 #define RGN_COPY 5
     86 #define RGN_MIN RGN_AND
     87 #define RGN_MAX RGN_COPY
     88 
     89 #define BLACKONWHITE 1
     90 #define WHITEONBLACK 2
     91 #define COLORONCOLOR 3
     92 #define HALFTONE 4
     93 #define MAXSTRETCHBLTMODE 4
     94 
     95 #define STRETCH_ANDSCANS BLACKONWHITE
     96 #define STRETCH_ORSCANS WHITEONBLACK
     97 #define STRETCH_DELETESCANS COLORONCOLOR
     98 #define STRETCH_HALFTONE HALFTONE
     99 
    100 #define ALTERNATE 1
    101 #define WINDING 2
    102 #define POLYFILL_LAST 2
    103 
    104 #define LAYOUT_RTL 0x00000001
    105 #define LAYOUT_BTT 0x00000002
    106 #define LAYOUT_VBH 0x00000004
    107 #define LAYOUT_ORIENTATIONMASK (LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH)
    108 #define LAYOUT_BITMAPORIENTATIONPRESERVED 0x00000008
    109 
    110 #define TA_NOUPDATECP 0
    111 #define TA_UPDATECP 1
    112 
    113 #define TA_LEFT 0
    114 #define TA_RIGHT 2
    115 #define TA_CENTER 6
    116 
    117 #define TA_TOP 0
    118 #define TA_BOTTOM 8
    119 #define TA_BASELINE 24
    120 #define TA_RTLREADING 256
    121 #define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING)
    122 
    123 #define VTA_BASELINE TA_BASELINE
    124 #define VTA_LEFT TA_BOTTOM
    125 #define VTA_RIGHT TA_TOP
    126 #define VTA_CENTER TA_CENTER
    127 #define VTA_BOTTOM TA_RIGHT
    128 #define VTA_TOP TA_LEFT
    129 
    130 #define ETO_OPAQUE 0x0002
    131 #define ETO_CLIPPED 0x0004
    132 #define ETO_GLYPH_INDEX 0x0010
    133 #define ETO_RTLREADING 0x0080
    134 #define ETO_NUMERICSLOCAL 0x0400
    135 #define ETO_NUMERICSLATIN 0x0800
    136 #define ETO_IGNORELANGUAGE 0x1000
    137 #define ETO_PDY 0x2000
    138 #if _WIN32_WINNT >= 0x0600
    139 #define ETO_REVERSE_INDEX_MAP 0x10000
    140 #endif
    141 
    142 #define ASPECT_FILTERING 0x0001
    143 
    144 #define DCB_RESET 0x0001
    145 #define DCB_ACCUMULATE 0x0002
    146 #define DCB_DIRTY DCB_ACCUMULATE
    147 #define DCB_SET (DCB_RESET | DCB_ACCUMULATE)
    148 #define DCB_ENABLE 0x0004
    149 #define DCB_DISABLE 0x0008
    150 
    151 #ifndef NOMETAFILE
    152 
    153 #define META_SETBKCOLOR 0x0201
    154 #define META_SETBKMODE 0x0102
    155 #define META_SETMAPMODE 0x0103
    156 #define META_SETROP2 0x0104
    157 #define META_SETRELABS 0x0105
    158 #define META_SETPOLYFILLMODE 0x0106
    159 #define META_SETSTRETCHBLTMODE 0x0107
    160 #define META_SETTEXTCHAREXTRA 0x0108
    161 #define META_SETTEXTCOLOR 0x0209
    162 #define META_SETTEXTJUSTIFICATION 0x020A
    163 #define META_SETWINDOWORG 0x020B
    164 #define META_SETWINDOWEXT 0x020C
    165 #define META_SETVIEWPORTORG 0x020D
    166 #define META_SETVIEWPORTEXT 0x020E
    167 #define META_OFFSETWINDOWORG 0x020F
    168 #define META_SCALEWINDOWEXT 0x0410
    169 #define META_OFFSETVIEWPORTORG 0x0211
    170 #define META_SCALEVIEWPORTEXT 0x0412
    171 #define META_LINETO 0x0213
    172 #define META_MOVETO 0x0214
    173 #define META_EXCLUDECLIPRECT 0x0415
    174 #define META_INTERSECTCLIPRECT 0x0416
    175 #define META_ARC 0x0817
    176 #define META_ELLIPSE 0x0418
    177 #define META_FLOODFILL 0x0419
    178 #define META_PIE 0x081A
    179 #define META_RECTANGLE 0x041B
    180 #define META_ROUNDRECT 0x061C
    181 #define META_PATBLT 0x061D
    182 #define META_SAVEDC 0x001E
    183 #define META_SETPIXEL 0x041F
    184 #define META_OFFSETCLIPRGN 0x0220
    185 #define META_TEXTOUT 0x0521
    186 #define META_BITBLT 0x0922
    187 #define META_STRETCHBLT 0x0B23
    188 #define META_POLYGON 0x0324
    189 #define META_POLYLINE 0x0325
    190 #define META_ESCAPE 0x0626
    191 #define META_RESTOREDC 0x0127
    192 #define META_FILLREGION 0x0228
    193 #define META_FRAMEREGION 0x0429
    194 #define META_INVERTREGION 0x012A
    195 #define META_PAINTREGION 0x012B
    196 #define META_SELECTCLIPREGION 0x012C
    197 #define META_SELECTOBJECT 0x012D
    198 #define META_SETTEXTALIGN 0x012E
    199 #define META_CHORD 0x0830
    200 #define META_SETMAPPERFLAGS 0x0231
    201 #define META_EXTTEXTOUT 0x0a32
    202 #define META_SETDIBTODEV 0x0d33
    203 #define META_SELECTPALETTE 0x0234
    204 #define META_REALIZEPALETTE 0x0035
    205 #define META_ANIMATEPALETTE 0x0436
    206 #define META_SETPALENTRIES 0x0037
    207 #define META_POLYPOLYGON 0x0538
    208 #define META_RESIZEPALETTE 0x0139
    209 #define META_DIBBITBLT 0x0940
    210 #define META_DIBSTRETCHBLT 0x0b41
    211 #define META_DIBCREATEPATTERNBRUSH 0x0142
    212 #define META_STRETCHDIB 0x0f43
    213 #define META_EXTFLOODFILL 0x0548
    214 #define META_SETLAYOUT 0x0149
    215 #define META_DELETEOBJECT 0x01f0
    216 #define META_CREATEPALETTE 0x00f7
    217 #define META_CREATEPATTERNBRUSH 0x01F9
    218 #define META_CREATEPENINDIRECT 0x02FA
    219 #define META_CREATEFONTINDIRECT 0x02FB
    220 #define META_CREATEBRUSHINDIRECT 0x02FC
    221 #define META_CREATEREGION 0x06FF
    222 
    223 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    224   typedef struct _DRAWPATRECT {
    225     POINT ptPosition;
    226     POINT ptSize;
    227     WORD wStyle;
    228     WORD wPattern;
    229   } DRAWPATRECT,*PDRAWPATRECT;
    230 #endif
    231 
    232 #endif
    233 
    234 #define NEWFRAME 1
    235 #define ABORTDOC 2
    236 #define NEXTBAND 3
    237 #define SETCOLORTABLE 4
    238 #define GETCOLORTABLE 5
    239 #define FLUSHOUTPUT 6
    240 #define DRAFTMODE 7
    241 #define QUERYESCSUPPORT 8
    242 #define SETABORTPROC 9
    243 #define STARTDOC 10
    244 #define ENDDOC 11
    245 #define GETPHYSPAGESIZE 12
    246 #define GETPRINTINGOFFSET 13
    247 #define GETSCALINGFACTOR 14
    248 #define MFCOMMENT 15
    249 #define GETPENWIDTH 16
    250 #define SETCOPYCOUNT 17
    251 #define SELECTPAPERSOURCE 18
    252 #define DEVICEDATA 19
    253 #define PASSTHROUGH 19
    254 #define GETTECHNOLGY 20
    255 #define GETTECHNOLOGY 20
    256 #define SETLINECAP 21
    257 #define SETLINEJOIN 22
    258 #define SETMITERLIMIT 23
    259 #define BANDINFO 24
    260 #define DRAWPATTERNRECT 25
    261 #define GETVECTORPENSIZE 26
    262 #define GETVECTORBRUSHSIZE 27
    263 #define ENABLEDUPLEX 28
    264 #define GETSETPAPERBINS 29
    265 #define GETSETPRINTORIENT 30
    266 #define ENUMPAPERBINS 31
    267 #define SETDIBSCALING 32
    268 #define EPSPRINTING 33
    269 #define ENUMPAPERMETRICS 34
    270 #define GETSETPAPERMETRICS 35
    271 #define POSTSCRIPT_DATA 37
    272 #define POSTSCRIPT_IGNORE 38
    273 #define MOUSETRAILS 39
    274 #define GETDEVICEUNITS 42
    275 
    276 #define GETEXTENDEDTEXTMETRICS 256
    277 #define GETEXTENTTABLE 257
    278 #define GETPAIRKERNTABLE 258
    279 #define GETTRACKKERNTABLE 259
    280 #define EXTTEXTOUT 512
    281 #define GETFACENAME 513
    282 #define DOWNLOADFACE 514
    283 #define ENABLERELATIVEWIDTHS 768
    284 #define ENABLEPAIRKERNING 769
    285 #define SETKERNTRACK 770
    286 #define SETALLJUSTVALUES 771
    287 #define SETCHARSET 772
    288 
    289 #define STRETCHBLT 2048
    290 #define METAFILE_DRIVER 2049
    291 #define GETSETSCREENPARAMS 3072
    292 #define QUERYDIBSUPPORT 3073
    293 #define BEGIN_PATH 4096
    294 #define CLIP_TO_PATH 4097
    295 #define END_PATH 4098
    296 #define EXT_DEVICE_CAPS 4099
    297 #define RESTORE_CTM 4100
    298 #define SAVE_CTM 4101
    299 #define SET_ARC_DIRECTION 4102
    300 #define SET_BACKGROUND_COLOR 4103
    301 #define SET_POLY_MODE 4104
    302 #define SET_SCREEN_ANGLE 4105
    303 #define SET_SPREAD 4106
    304 #define TRANSFORM_CTM 4107
    305 #define SET_CLIP_BOX 4108
    306 #define SET_BOUNDS 4109
    307 #define SET_MIRROR_MODE 4110
    308 #define OPENCHANNEL 4110
    309 #define DOWNLOADHEADER 4111
    310 #define CLOSECHANNEL 4112
    311 #define POSTSCRIPT_PASSTHROUGH 4115
    312 #define ENCAPSULATED_POSTSCRIPT 4116
    313 
    314 #define POSTSCRIPT_IDENTIFY 4117
    315 #define POSTSCRIPT_INJECTION 4118
    316 
    317 #define CHECKJPEGFORMAT 4119
    318 #define CHECKPNGFORMAT 4120
    319 
    320 #define GET_PS_FEATURESETTING 4121
    321 #define GDIPLUS_TS_QUERYVER 4122
    322 #define GDIPLUS_TS_RECORD 4123
    323 
    324 #if _WIN32_WINNT >= 0x0600
    325 #define MILCORE_TS_QUERYVER_RESULT_FALSE 0x0
    326 #define MILCORE_TS_QUERYVER_RESULT_TRUE  0x7FFFFFFF
    327 #endif
    328 
    329 #define SPCLPASSTHROUGH2 4568
    330 
    331 #define PSIDENT_GDICENTRIC 0
    332 #define PSIDENT_PSCENTRIC 1
    333 
    334 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    335   typedef struct _PSINJECTDATA {
    336     DWORD DataBytes;
    337     WORD InjectionPoint;
    338     WORD PageNumber;
    339   } PSINJECTDATA,*PPSINJECTDATA;
    340 #endif
    341 
    342 #define PSINJECT_BEGINSTREAM 1
    343 #define PSINJECT_PSADOBE 2
    344 #define PSINJECT_PAGESATEND 3
    345 #define PSINJECT_PAGES 4
    346 
    347 #define PSINJECT_DOCNEEDEDRES 5
    348 #define PSINJECT_DOCSUPPLIEDRES 6
    349 #define PSINJECT_PAGEORDER 7
    350 #define PSINJECT_ORIENTATION 8
    351 #define PSINJECT_BOUNDINGBOX 9
    352 #define PSINJECT_DOCUMENTPROCESSCOLORS 10
    353 
    354 #define PSINJECT_COMMENTS 11
    355 #define PSINJECT_BEGINDEFAULTS 12
    356 #define PSINJECT_ENDDEFAULTS 13
    357 #define PSINJECT_BEGINPROLOG 14
    358 #define PSINJECT_ENDPROLOG 15
    359 #define PSINJECT_BEGINSETUP 16
    360 #define PSINJECT_ENDSETUP 17
    361 #define PSINJECT_TRAILER 18
    362 #define PSINJECT_EOF 19
    363 #define PSINJECT_ENDSTREAM 20
    364 #define PSINJECT_DOCUMENTPROCESSCOLORSATEND 21
    365 
    366 #define PSINJECT_PAGENUMBER 100
    367 #define PSINJECT_BEGINPAGESETUP 101
    368 #define PSINJECT_ENDPAGESETUP 102
    369 #define PSINJECT_PAGETRAILER 103
    370 #define PSINJECT_PLATECOLOR 104
    371 
    372 #define PSINJECT_SHOWPAGE 105
    373 #define PSINJECT_PAGEBBOX 106
    374 #define PSINJECT_ENDPAGECOMMENTS 107
    375 
    376 #define PSINJECT_VMSAVE 200
    377 #define PSINJECT_VMRESTORE 201
    378 
    379 #define FEATURESETTING_NUP 0
    380 #define FEATURESETTING_OUTPUT 1
    381 #define FEATURESETTING_PSLEVEL 2
    382 #define FEATURESETTING_CUSTPAPER 3
    383 #define FEATURESETTING_MIRROR 4
    384 #define FEATURESETTING_NEGATIVE 5
    385 #define FEATURESETTING_PROTOCOL 6
    386 
    387 #define FEATURESETTING_PRIVATE_BEGIN 0x1000
    388 #define FEATURESETTING_PRIVATE_END 0x1FFF
    389 
    390 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    391   typedef struct _PSFEATURE_OUTPUT {
    392     WINBOOL bPageIndependent;
    393     WINBOOL bSetPageDevice;
    394   } PSFEATURE_OUTPUT,*PPSFEATURE_OUTPUT;
    395 
    396   typedef struct _PSFEATURE_CUSTPAPER {
    397     LONG lOrientation;
    398     LONG lWidth;
    399     LONG lHeight;
    400     LONG lWidthOffset;
    401     LONG lHeightOffset;
    402   } PSFEATURE_CUSTPAPER,*PPSFEATURE_CUSTPAPER;
    403 #endif
    404 
    405 #define PSPROTOCOL_ASCII 0
    406 #define PSPROTOCOL_BCP 1
    407 #define PSPROTOCOL_TBCP 2
    408 #define PSPROTOCOL_BINARY 3
    409 
    410 #define QDI_SETDIBITS 1
    411 #define QDI_GETDIBITS 2
    412 #define QDI_DIBTOSCREEN 4
    413 #define QDI_STRETCHDIB 8
    414 
    415 #define SP_NOTREPORTED 0x4000
    416 #define SP_ERROR (-1)
    417 #define SP_APPABORT (-2)
    418 #define SP_USERABORT (-3)
    419 #define SP_OUTOFDISK (-4)
    420 #define SP_OUTOFMEMORY (-5)
    421 
    422 #define PR_JOBSTATUS 0x0000
    423 
    424 #define OBJ_PEN 1
    425 #define OBJ_BRUSH 2
    426 #define OBJ_DC 3
    427 #define OBJ_METADC 4
    428 #define OBJ_PAL 5
    429 #define OBJ_FONT 6
    430 #define OBJ_BITMAP 7
    431 #define OBJ_REGION 8
    432 #define OBJ_METAFILE 9
    433 #define OBJ_MEMDC 10
    434 #define OBJ_EXTPEN 11
    435 #define OBJ_ENHMETADC 12
    436 #define OBJ_ENHMETAFILE 13
    437 #define OBJ_COLORSPACE 14
    438 
    439 #define GDI_OBJ_LAST OBJ_COLORSPACE
    440 
    441 #define MWT_IDENTITY 1
    442 #define MWT_LEFTMULTIPLY 2
    443 #define MWT_RIGHTMULTIPLY 3
    444 
    445 #define MWT_MIN MWT_IDENTITY
    446 #define MWT_MAX MWT_RIGHTMULTIPLY
    447 
    448 #define _XFORM_
    449 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    450   typedef struct tagXFORM {
    451     FLOAT eM11;
    452     FLOAT eM12;
    453     FLOAT eM21;
    454     FLOAT eM22;
    455     FLOAT eDx;
    456     FLOAT eDy;
    457   } XFORM,*PXFORM,*LPXFORM;
    458 
    459   typedef struct tagBITMAP {
    460     LONG bmType;
    461     LONG bmWidth;
    462     LONG bmHeight;
    463     LONG bmWidthBytes;
    464     WORD bmPlanes;
    465     WORD bmBitsPixel;
    466     LPVOID bmBits;
    467   } BITMAP,*PBITMAP,*NPBITMAP,*LPBITMAP;
    468 
    469 #include <pshpack1.h>
    470   typedef struct tagRGBTRIPLE {
    471     BYTE rgbtBlue;
    472     BYTE rgbtGreen;
    473     BYTE rgbtRed;
    474   } RGBTRIPLE;
    475 #include <poppack.h>
    476 
    477   typedef struct tagRGBQUAD {
    478     BYTE rgbBlue;
    479     BYTE rgbGreen;
    480     BYTE rgbRed;
    481     BYTE rgbReserved;
    482   } RGBQUAD;
    483 #endif
    484 
    485 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    486   typedef RGBQUAD *LPRGBQUAD;
    487 #endif
    488 
    489 #define CS_ENABLE __MSABI_LONG(0x00000001)
    490 #define CS_DISABLE __MSABI_LONG(0x00000002)
    491 #define CS_DELETE_TRANSFORM __MSABI_LONG(0x00000003)
    492 
    493 #define LCS_SIGNATURE 'PSOC'
    494 
    495 #define LCS_sRGB 'sRGB'
    496 #define LCS_WINDOWS_COLOR_SPACE 'Win '
    497 
    498 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    499   typedef LONG LCSCSTYPE;
    500 #define LCS_CALIBRATED_RGB __MSABI_LONG(0x00000000)
    501 
    502   typedef LONG LCSGAMUTMATCH;
    503 #define LCS_GM_BUSINESS __MSABI_LONG(0x00000001)
    504 #define LCS_GM_GRAPHICS __MSABI_LONG(0x00000002)
    505 #define LCS_GM_IMAGES __MSABI_LONG(0x00000004)
    506 #define LCS_GM_ABS_COLORIMETRIC __MSABI_LONG(0x00000008)
    507 
    508 #define CM_OUT_OF_GAMUT 255
    509 #define CM_IN_GAMUT 0
    510 
    511 #define ICM_ADDPROFILE 1
    512 #define ICM_DELETEPROFILE 2
    513 #define ICM_QUERYPROFILE 3
    514 #define ICM_SETDEFAULTPROFILE 4
    515 #define ICM_REGISTERICMATCHER 5
    516 #define ICM_UNREGISTERICMATCHER 6
    517 #define ICM_QUERYMATCH 7
    518 
    519 #define GetKValue(cmyk) ((BYTE)(cmyk))
    520 #define GetYValue(cmyk) ((BYTE)((cmyk)>> 8))
    521 #define GetMValue(cmyk) ((BYTE)((cmyk)>>16))
    522 #define GetCValue(cmyk) ((BYTE)((cmyk)>>24))
    523 
    524 #define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24)))
    525 
    526   typedef __LONG32 FXPT16DOT16,*LPFXPT16DOT16;
    527   typedef __LONG32 FXPT2DOT30,*LPFXPT2DOT30;
    528 
    529   typedef struct tagCIEXYZ {
    530     FXPT2DOT30 ciexyzX;
    531     FXPT2DOT30 ciexyzY;
    532     FXPT2DOT30 ciexyzZ;
    533   } CIEXYZ;
    534 #endif
    535 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    536   typedef CIEXYZ *LPCIEXYZ;
    537 #endif
    538 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    539   typedef struct tagICEXYZTRIPLE {
    540     CIEXYZ ciexyzRed;
    541     CIEXYZ ciexyzGreen;
    542     CIEXYZ ciexyzBlue;
    543   } CIEXYZTRIPLE;
    544 #endif
    545 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    546   typedef CIEXYZTRIPLE *LPCIEXYZTRIPLE;
    547 #endif
    548 
    549 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    550   typedef struct tagLOGCOLORSPACEA {
    551     DWORD lcsSignature;
    552     DWORD lcsVersion;
    553     DWORD lcsSize;
    554     LCSCSTYPE lcsCSType;
    555     LCSGAMUTMATCH lcsIntent;
    556     CIEXYZTRIPLE lcsEndpoints;
    557     DWORD lcsGammaRed;
    558     DWORD lcsGammaGreen;
    559     DWORD lcsGammaBlue;
    560     CHAR lcsFilename[MAX_PATH];
    561   } LOGCOLORSPACEA,*LPLOGCOLORSPACEA;
    562 
    563   typedef struct tagLOGCOLORSPACEW {
    564     DWORD lcsSignature;
    565     DWORD lcsVersion;
    566     DWORD lcsSize;
    567     LCSCSTYPE lcsCSType;
    568     LCSGAMUTMATCH lcsIntent;
    569     CIEXYZTRIPLE lcsEndpoints;
    570     DWORD lcsGammaRed;
    571     DWORD lcsGammaGreen;
    572     DWORD lcsGammaBlue;
    573     WCHAR lcsFilename[MAX_PATH];
    574   } LOGCOLORSPACEW,*LPLOGCOLORSPACEW;
    575 
    576   __MINGW_TYPEDEF_AW(LOGCOLORSPACE)
    577   __MINGW_TYPEDEF_AW(LPLOGCOLORSPACE)
    578 #endif
    579 
    580 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    581   typedef struct tagBITMAPCOREHEADER {
    582     DWORD bcSize;
    583     WORD bcWidth;
    584     WORD bcHeight;
    585     WORD bcPlanes;
    586     WORD bcBitCount;
    587   } BITMAPCOREHEADER,*LPBITMAPCOREHEADER,*PBITMAPCOREHEADER;
    588 #endif
    589 
    590 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    591   typedef struct tagBITMAPINFOHEADER {
    592     DWORD biSize;
    593     LONG biWidth;
    594     LONG biHeight;
    595     WORD biPlanes;
    596     WORD biBitCount;
    597     DWORD biCompression;
    598     DWORD biSizeImage;
    599     LONG biXPelsPerMeter;
    600     LONG biYPelsPerMeter;
    601     DWORD biClrUsed;
    602     DWORD biClrImportant;
    603   } BITMAPINFOHEADER,*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER;
    604 #endif
    605 
    606 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    607   typedef struct {
    608     DWORD bV4Size;
    609     LONG bV4Width;
    610     LONG bV4Height;
    611     WORD bV4Planes;
    612     WORD bV4BitCount;
    613     DWORD bV4V4Compression;
    614     DWORD bV4SizeImage;
    615     LONG bV4XPelsPerMeter;
    616     LONG bV4YPelsPerMeter;
    617     DWORD bV4ClrUsed;
    618     DWORD bV4ClrImportant;
    619     DWORD bV4RedMask;
    620     DWORD bV4GreenMask;
    621     DWORD bV4BlueMask;
    622     DWORD bV4AlphaMask;
    623     DWORD bV4CSType;
    624     CIEXYZTRIPLE bV4Endpoints;
    625     DWORD bV4GammaRed;
    626     DWORD bV4GammaGreen;
    627     DWORD bV4GammaBlue;
    628   } BITMAPV4HEADER,*LPBITMAPV4HEADER,*PBITMAPV4HEADER;
    629 
    630   typedef struct {
    631     DWORD bV5Size;
    632     LONG bV5Width;
    633     LONG bV5Height;
    634     WORD bV5Planes;
    635     WORD bV5BitCount;
    636     DWORD bV5Compression;
    637     DWORD bV5SizeImage;
    638     LONG bV5XPelsPerMeter;
    639     LONG bV5YPelsPerMeter;
    640     DWORD bV5ClrUsed;
    641     DWORD bV5ClrImportant;
    642     DWORD bV5RedMask;
    643     DWORD bV5GreenMask;
    644     DWORD bV5BlueMask;
    645     DWORD bV5AlphaMask;
    646     DWORD bV5CSType;
    647     CIEXYZTRIPLE bV5Endpoints;
    648     DWORD bV5GammaRed;
    649     DWORD bV5GammaGreen;
    650     DWORD bV5GammaBlue;
    651     DWORD bV5Intent;
    652     DWORD bV5ProfileData;
    653     DWORD bV5ProfileSize;
    654     DWORD bV5Reserved;
    655   } BITMAPV5HEADER,*LPBITMAPV5HEADER,*PBITMAPV5HEADER;
    656 #endif
    657 
    658 #define PROFILE_LINKED 'LINK'
    659 #define PROFILE_EMBEDDED 'MBED'
    660 
    661 #define BI_RGB __MSABI_LONG(0)
    662 #define BI_RLE8 __MSABI_LONG(1)
    663 #define BI_RLE4 __MSABI_LONG(2)
    664 #define BI_BITFIELDS __MSABI_LONG(3)
    665 #define BI_JPEG __MSABI_LONG(4)
    666 #define BI_PNG __MSABI_LONG(5)
    667 
    668 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    669   typedef struct tagBITMAPINFO {
    670     BITMAPINFOHEADER bmiHeader;
    671     RGBQUAD bmiColors[1];
    672   } BITMAPINFO,*LPBITMAPINFO,*PBITMAPINFO;
    673 #endif
    674 
    675 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    676   typedef struct tagBITMAPCOREINFO {
    677     BITMAPCOREHEADER bmciHeader;
    678     RGBTRIPLE bmciColors[1];
    679   } BITMAPCOREINFO,*LPBITMAPCOREINFO,*PBITMAPCOREINFO;
    680 
    681 #include <pshpack2.h>
    682   typedef struct tagBITMAPFILEHEADER {
    683     WORD bfType;
    684     DWORD bfSize;
    685     WORD bfReserved1;
    686     WORD bfReserved2;
    687     DWORD bfOffBits;
    688   } BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
    689 #include <poppack.h>
    690 #endif
    691 
    692 #define MAKEPOINTS(l) (*((POINTS *)&(l)))
    693 
    694 #ifndef NOFONTSIG
    695 
    696 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    697   typedef struct tagFONTSIGNATURE {
    698     DWORD fsUsb[4];
    699     DWORD fsCsb[2];
    700   } FONTSIGNATURE,*PFONTSIGNATURE,*LPFONTSIGNATURE;
    701 
    702   typedef struct tagCHARSETINFO {
    703     UINT ciCharset;
    704     UINT ciACP;
    705     FONTSIGNATURE fs;
    706   } CHARSETINFO,*PCHARSETINFO,*NPCHARSETINFO,*LPCHARSETINFO;
    707 #endif
    708 
    709 #define TCI_SRCCHARSET 1
    710 #define TCI_SRCCODEPAGE 2
    711 #define TCI_SRCFONTSIG 3
    712 #define TCI_SRCLOCALE 0x1000
    713 
    714 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    715   typedef struct tagLOCALESIGNATURE {
    716     DWORD lsUsb[4];
    717     DWORD lsCsbDefault[2];
    718     DWORD lsCsbSupported[2];
    719   } LOCALESIGNATURE,*PLOCALESIGNATURE,*LPLOCALESIGNATURE;
    720 #endif
    721 #endif
    722 
    723 #ifndef NOMETAFILE
    724 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    725   typedef struct tagHANDLETABLE {
    726     HGDIOBJ objectHandle[1];
    727   } HANDLETABLE,*PHANDLETABLE,*LPHANDLETABLE;
    728 
    729   typedef struct tagMETARECORD {
    730     DWORD rdSize;
    731     WORD rdFunction;
    732     WORD rdParm[1];
    733   } METARECORD;
    734 #endif
    735 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    736   typedef struct tagMETARECORD UNALIGNED *PMETARECORD;
    737 #endif
    738 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    739   typedef struct tagMETARECORD UNALIGNED *LPMETARECORD;
    740 
    741   typedef struct tagMETAFILEPICT {
    742     LONG mm;
    743     LONG xExt;
    744     LONG yExt;
    745     HMETAFILE hMF;
    746   } METAFILEPICT,*LPMETAFILEPICT;
    747 #endif
    748 
    749 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    750 #include <pshpack2.h>
    751   typedef struct tagMETAHEADER {
    752     WORD mtType;
    753     WORD mtHeaderSize;
    754     WORD mtVersion;
    755     DWORD mtSize;
    756     WORD mtNoObjects;
    757     DWORD mtMaxRecord;
    758     WORD mtNoParameters;
    759   } METAHEADER;
    760   typedef struct tagMETAHEADER UNALIGNED *PMETAHEADER;
    761   typedef struct tagMETAHEADER UNALIGNED *LPMETAHEADER;
    762 
    763 #include <poppack.h>
    764 #endif
    765 
    766 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    767   typedef struct tagENHMETARECORD {
    768     DWORD iType;
    769     DWORD nSize;
    770     DWORD dParm[1];
    771   } ENHMETARECORD,*PENHMETARECORD,*LPENHMETARECORD;
    772 
    773   typedef struct tagENHMETAHEADER {
    774     DWORD iType;
    775     DWORD nSize;
    776     RECTL rclBounds;
    777     RECTL rclFrame;
    778     DWORD dSignature;
    779     DWORD nVersion;
    780     DWORD nBytes;
    781     DWORD nRecords;
    782     WORD nHandles;
    783     WORD sReserved;
    784     DWORD nDescription;
    785     DWORD offDescription;
    786     DWORD nPalEntries;
    787     SIZEL szlDevice;
    788     SIZEL szlMillimeters;
    789     DWORD cbPixelFormat;
    790     DWORD offPixelFormat;
    791     DWORD bOpenGL;
    792     SIZEL szlMicrometers;
    793   } ENHMETAHEADER,*PENHMETAHEADER,*LPENHMETAHEADER;
    794 #endif
    795 #endif
    796 
    797 #ifndef NOTEXTMETRIC
    798 #define TMPF_FIXED_PITCH 0x01
    799 #define TMPF_VECTOR 0x02
    800 #define TMPF_DEVICE 0x08
    801 #define TMPF_TRUETYPE 0x04
    802 
    803 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    804 #if defined(UNICODE)
    805   typedef WCHAR BCHAR;
    806 #else
    807   typedef BYTE BCHAR;
    808 #endif
    809 #endif
    810 
    811 #ifndef _TEXTMETRIC_DEFINED
    812 #define _TEXTMETRIC_DEFINED
    813 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    814 #include <pshpack4.h>
    815 
    816   typedef struct tagTEXTMETRICA {
    817     LONG tmHeight;
    818     LONG tmAscent;
    819     LONG tmDescent;
    820     LONG tmInternalLeading;
    821     LONG tmExternalLeading;
    822     LONG tmAveCharWidth;
    823     LONG tmMaxCharWidth;
    824     LONG tmWeight;
    825     LONG tmOverhang;
    826     LONG tmDigitizedAspectX;
    827     LONG tmDigitizedAspectY;
    828     BYTE tmFirstChar;
    829     BYTE tmLastChar;
    830     BYTE tmDefaultChar;
    831     BYTE tmBreakChar;
    832     BYTE tmItalic;
    833     BYTE tmUnderlined;
    834     BYTE tmStruckOut;
    835     BYTE tmPitchAndFamily;
    836     BYTE tmCharSet;
    837   } TEXTMETRICA,*PTEXTMETRICA,*NPTEXTMETRICA,*LPTEXTMETRICA;
    838 
    839   typedef struct tagTEXTMETRICW {
    840     LONG tmHeight;
    841     LONG tmAscent;
    842     LONG tmDescent;
    843     LONG tmInternalLeading;
    844     LONG tmExternalLeading;
    845     LONG tmAveCharWidth;
    846     LONG tmMaxCharWidth;
    847     LONG tmWeight;
    848     LONG tmOverhang;
    849     LONG tmDigitizedAspectX;
    850     LONG tmDigitizedAspectY;
    851     WCHAR tmFirstChar;
    852     WCHAR tmLastChar;
    853     WCHAR tmDefaultChar;
    854     WCHAR tmBreakChar;
    855     BYTE tmItalic;
    856     BYTE tmUnderlined;
    857     BYTE tmStruckOut;
    858     BYTE tmPitchAndFamily;
    859     BYTE tmCharSet;
    860   } TEXTMETRICW,*PTEXTMETRICW,*NPTEXTMETRICW,*LPTEXTMETRICW;
    861 
    862   __MINGW_TYPEDEF_AW(TEXTMETRIC)
    863   __MINGW_TYPEDEF_AW(PTEXTMETRIC)
    864   __MINGW_TYPEDEF_AW(NPTEXTMETRIC)
    865   __MINGW_TYPEDEF_AW(LPTEXTMETRIC)
    866 #include <poppack.h>
    867 #endif
    868 #endif
    869 
    870 #define NTM_REGULAR __MSABI_LONG(0x00000040)
    871 #define NTM_BOLD __MSABI_LONG(0x00000020)
    872 #define NTM_ITALIC __MSABI_LONG(0x00000001)
    873 
    874 #define NTM_NONNEGATIVE_AC 0x00010000
    875 #define NTM_PS_OPENTYPE 0x00020000
    876 #define NTM_TT_OPENTYPE 0x00040000
    877 #define NTM_MULTIPLEMASTER 0x00080000
    878 #define NTM_TYPE1 0x00100000
    879 #define NTM_DSIG 0x00200000
    880 
    881 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    882 #include <pshpack4.h>
    883   typedef struct tagNEWTEXTMETRICA {
    884     LONG tmHeight;
    885     LONG tmAscent;
    886     LONG tmDescent;
    887     LONG tmInternalLeading;
    888     LONG tmExternalLeading;
    889     LONG tmAveCharWidth;
    890     LONG tmMaxCharWidth;
    891     LONG tmWeight;
    892     LONG tmOverhang;
    893     LONG tmDigitizedAspectX;
    894     LONG tmDigitizedAspectY;
    895     BYTE tmFirstChar;
    896     BYTE tmLastChar;
    897     BYTE tmDefaultChar;
    898     BYTE tmBreakChar;
    899     BYTE tmItalic;
    900     BYTE tmUnderlined;
    901     BYTE tmStruckOut;
    902     BYTE tmPitchAndFamily;
    903     BYTE tmCharSet;
    904     DWORD ntmFlags;
    905     UINT ntmSizeEM;
    906     UINT ntmCellHeight;
    907     UINT ntmAvgWidth;
    908   } NEWTEXTMETRICA,*PNEWTEXTMETRICA,*NPNEWTEXTMETRICA,*LPNEWTEXTMETRICA;
    909 
    910   typedef struct tagNEWTEXTMETRICW {
    911     LONG tmHeight;
    912     LONG tmAscent;
    913     LONG tmDescent;
    914     LONG tmInternalLeading;
    915     LONG tmExternalLeading;
    916     LONG tmAveCharWidth;
    917     LONG tmMaxCharWidth;
    918     LONG tmWeight;
    919     LONG tmOverhang;
    920     LONG tmDigitizedAspectX;
    921     LONG tmDigitizedAspectY;
    922     WCHAR tmFirstChar;
    923     WCHAR tmLastChar;
    924     WCHAR tmDefaultChar;
    925     WCHAR tmBreakChar;
    926     BYTE tmItalic;
    927     BYTE tmUnderlined;
    928     BYTE tmStruckOut;
    929     BYTE tmPitchAndFamily;
    930     BYTE tmCharSet;
    931     DWORD ntmFlags;
    932     UINT ntmSizeEM;
    933     UINT ntmCellHeight;
    934     UINT ntmAvgWidth;
    935   } NEWTEXTMETRICW,*PNEWTEXTMETRICW,*NPNEWTEXTMETRICW,*LPNEWTEXTMETRICW;
    936 
    937   __MINGW_TYPEDEF_AW(NEWTEXTMETRIC)
    938   __MINGW_TYPEDEF_AW(PNEWTEXTMETRIC)
    939   __MINGW_TYPEDEF_AW(NPNEWTEXTMETRIC)
    940   __MINGW_TYPEDEF_AW(LPNEWTEXTMETRIC)
    941 
    942 #include <poppack.h>
    943 
    944   typedef struct tagNEWTEXTMETRICEXA {
    945     NEWTEXTMETRICA ntmTm;
    946     FONTSIGNATURE ntmFontSig;
    947   } NEWTEXTMETRICEXA;
    948 
    949   typedef struct tagNEWTEXTMETRICEXW {
    950     NEWTEXTMETRICW ntmTm;
    951     FONTSIGNATURE ntmFontSig;
    952   } NEWTEXTMETRICEXW;
    953 
    954   __MINGW_TYPEDEF_AW(NEWTEXTMETRICEX)
    955 #endif
    956 #endif
    957 
    958 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    959   typedef struct tagPELARRAY {
    960     LONG paXCount;
    961     LONG paYCount;
    962     LONG paXExt;
    963     LONG paYExt;
    964     BYTE paRGBs;
    965   } PELARRAY,*PPELARRAY,*NPPELARRAY,*LPPELARRAY;
    966 #endif
    967 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    968   typedef struct tagLOGBRUSH {
    969     UINT lbStyle;
    970     COLORREF lbColor;
    971     ULONG_PTR lbHatch;
    972   } LOGBRUSH,*PLOGBRUSH,*NPLOGBRUSH,*LPLOGBRUSH;
    973 
    974   typedef struct tagLOGBRUSH32 {
    975     UINT lbStyle;
    976     COLORREF lbColor;
    977     ULONG lbHatch;
    978   } LOGBRUSH32,*PLOGBRUSH32,*NPLOGBRUSH32,*LPLOGBRUSH32;
    979 #endif
    980 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    981   typedef LOGBRUSH PATTERN;
    982   typedef PATTERN *PPATTERN;
    983   typedef PATTERN *NPPATTERN;
    984   typedef PATTERN *LPPATTERN;
    985 #endif
    986 
    987 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
    988   typedef struct tagLOGPEN {
    989     UINT lopnStyle;
    990     POINT lopnWidth;
    991     COLORREF lopnColor;
    992   } LOGPEN,*PLOGPEN,*NPLOGPEN,*LPLOGPEN;
    993 #endif
    994 
    995 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    996   typedef struct tagEXTLOGPEN {
    997     DWORD elpPenStyle;
    998     DWORD elpWidth;
    999     UINT elpBrushStyle;
   1000     COLORREF elpColor;
   1001     ULONG_PTR elpHatch;
   1002     DWORD elpNumEntries;
   1003     DWORD elpStyleEntry[1];
   1004   } EXTLOGPEN,*PEXTLOGPEN,*NPEXTLOGPEN,*LPEXTLOGPEN;
   1005 #endif
   1006 
   1007 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   1008   typedef struct tagEXTLOGPEN32 {
   1009     DWORD elpPenStyle;
   1010     DWORD elpWidth;
   1011     UINT elpBrushStyle;
   1012     COLORREF elpColor;
   1013     ULONG elpHatch;
   1014     DWORD elpNumEntries;
   1015     DWORD elpStyleEntry[1];
   1016   } EXTLOGPEN32, *PEXTLOGPEN32, *NPEXTLOGPEN32, *LPEXTLOGPEN32;
   1017 
   1018 #ifndef _PALETTEENTRY_DEFINED
   1019 #define _PALETTEENTRY_DEFINED
   1020   typedef struct tagPALETTEENTRY {
   1021     BYTE peRed;
   1022     BYTE peGreen;
   1023     BYTE peBlue;
   1024     BYTE peFlags;
   1025   } PALETTEENTRY,*PPALETTEENTRY,*LPPALETTEENTRY;
   1026 #endif
   1027 
   1028 #ifndef _LOGPALETTE_DEFINED
   1029 #define _LOGPALETTE_DEFINED
   1030   typedef struct tagLOGPALETTE {
   1031     WORD palVersion;
   1032     WORD palNumEntries;
   1033     PALETTEENTRY palPalEntry[1];
   1034   } LOGPALETTE,*PLOGPALETTE,*NPLOGPALETTE,*LPLOGPALETTE;
   1035 #endif
   1036 
   1037 #ifndef LF_FACESIZE
   1038 #define LF_FACESIZE 32
   1039 #endif
   1040 
   1041   typedef struct tagLOGFONTA {
   1042     LONG lfHeight;
   1043     LONG lfWidth;
   1044     LONG lfEscapement;
   1045     LONG lfOrientation;
   1046     LONG lfWeight;
   1047     BYTE lfItalic;
   1048     BYTE lfUnderline;
   1049     BYTE lfStrikeOut;
   1050     BYTE lfCharSet;
   1051     BYTE lfOutPrecision;
   1052     BYTE lfClipPrecision;
   1053     BYTE lfQuality;
   1054     BYTE lfPitchAndFamily;
   1055     CHAR lfFaceName[LF_FACESIZE];
   1056   } LOGFONTA,*PLOGFONTA,*NPLOGFONTA,*LPLOGFONTA;
   1057 
   1058   typedef struct tagLOGFONTW {
   1059     LONG lfHeight;
   1060     LONG lfWidth;
   1061     LONG lfEscapement;
   1062     LONG lfOrientation;
   1063     LONG lfWeight;
   1064     BYTE lfItalic;
   1065     BYTE lfUnderline;
   1066     BYTE lfStrikeOut;
   1067     BYTE lfCharSet;
   1068     BYTE lfOutPrecision;
   1069     BYTE lfClipPrecision;
   1070     BYTE lfQuality;
   1071     BYTE lfPitchAndFamily;
   1072     WCHAR lfFaceName[LF_FACESIZE];
   1073   } LOGFONTW,*PLOGFONTW,*NPLOGFONTW,*LPLOGFONTW;
   1074 
   1075   __MINGW_TYPEDEF_AW(LOGFONT)
   1076   __MINGW_TYPEDEF_AW(PLOGFONT)
   1077   __MINGW_TYPEDEF_AW(NPLOGFONT)
   1078   __MINGW_TYPEDEF_AW(LPLOGFONT)
   1079 #endif /* WINAPI_PARTITION_APP */
   1080 
   1081 #define LF_FULLFACESIZE 64
   1082 
   1083 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   1084   typedef struct tagENUMLOGFONTA {
   1085     LOGFONTA elfLogFont;
   1086     BYTE elfFullName[LF_FULLFACESIZE];
   1087     BYTE elfStyle[LF_FACESIZE];
   1088   } ENUMLOGFONTA,*LPENUMLOGFONTA;
   1089 
   1090   typedef struct tagENUMLOGFONTW {
   1091     LOGFONTW elfLogFont;
   1092     WCHAR elfFullName[LF_FULLFACESIZE];
   1093     WCHAR elfStyle[LF_FACESIZE];
   1094   } ENUMLOGFONTW,*LPENUMLOGFONTW;
   1095 
   1096   __MINGW_TYPEDEF_AW(ENUMLOGFONT)
   1097   __MINGW_TYPEDEF_AW(LPENUMLOGFONT)
   1098 
   1099   typedef struct tagENUMLOGFONTEXA {
   1100     LOGFONTA elfLogFont;
   1101     BYTE elfFullName[LF_FULLFACESIZE];
   1102     BYTE elfStyle[LF_FACESIZE];
   1103     BYTE elfScript[LF_FACESIZE];
   1104   } ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
   1105 
   1106   typedef struct tagENUMLOGFONTEXW {
   1107     LOGFONTW elfLogFont;
   1108     WCHAR elfFullName[LF_FULLFACESIZE];
   1109     WCHAR elfStyle[LF_FACESIZE];
   1110     WCHAR elfScript[LF_FACESIZE];
   1111   } ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
   1112 
   1113   __MINGW_TYPEDEF_AW(ENUMLOGFONTEX)
   1114   __MINGW_TYPEDEF_AW(LPENUMLOGFONTEX)
   1115 #endif /* WINAPI_PARTITION_DESKTOP */
   1116 
   1117 #define OUT_DEFAULT_PRECIS 0
   1118 #define OUT_STRING_PRECIS 1
   1119 #define OUT_CHARACTER_PRECIS 2
   1120 #define OUT_STROKE_PRECIS 3
   1121 #define OUT_TT_PRECIS 4
   1122 #define OUT_DEVICE_PRECIS 5
   1123 #define OUT_RASTER_PRECIS 6
   1124 #define OUT_TT_ONLY_PRECIS 7
   1125 #define OUT_OUTLINE_PRECIS 8
   1126 #define OUT_SCREEN_OUTLINE_PRECIS 9
   1127 #define OUT_PS_ONLY_PRECIS 10
   1128 
   1129 #define CLIP_DEFAULT_PRECIS 0
   1130 #define CLIP_CHARACTER_PRECIS 1
   1131 #define CLIP_STROKE_PRECIS 2
   1132 #define CLIP_MASK 0xf
   1133 #define CLIP_LH_ANGLES (1<<4)
   1134 #define CLIP_TT_ALWAYS (2<<4)
   1135 #if _WIN32_WINNT >= 0x0600
   1136 #define CLIP_DFA_DISABLE (4<<4)
   1137 #endif
   1138 #define CLIP_EMBEDDED (8<<4)
   1139 
   1140 #define DEFAULT_QUALITY 0
   1141 #define DRAFT_QUALITY 1
   1142 #define PROOF_QUALITY 2
   1143 #define NONANTIALIASED_QUALITY 3
   1144 #define ANTIALIASED_QUALITY 4
   1145 
   1146 #define CLEARTYPE_QUALITY 5
   1147 #define CLEARTYPE_NATURAL_QUALITY 6
   1148 
   1149 #define DEFAULT_PITCH 0
   1150 #define FIXED_PITCH 1
   1151 #define VARIABLE_PITCH 2
   1152 #define MONO_FONT 8
   1153 
   1154 #define ANSI_CHARSET 0
   1155 #define DEFAULT_CHARSET 1
   1156 #define SYMBOL_CHARSET 2
   1157 #define SHIFTJIS_CHARSET 128
   1158 #define HANGEUL_CHARSET 129
   1159 #define HANGUL_CHARSET 129
   1160 #define GB2312_CHARSET 134
   1161 #define CHINESEBIG5_CHARSET 136
   1162 #define OEM_CHARSET 255
   1163 #define JOHAB_CHARSET 130
   1164 #define HEBREW_CHARSET 177
   1165 #define ARABIC_CHARSET 178
   1166 #define GREEK_CHARSET 161
   1167 #define TURKISH_CHARSET 162
   1168 #define VIETNAMESE_CHARSET 163
   1169 #define THAI_CHARSET 222
   1170 #define EASTEUROPE_CHARSET 238
   1171 #define RUSSIAN_CHARSET 204
   1172 
   1173 #define MAC_CHARSET 77
   1174 #define BALTIC_CHARSET 186
   1175 
   1176 #define FS_LATIN1 __MSABI_LONG(0x00000001)
   1177 #define FS_LATIN2 __MSABI_LONG(0x00000002)
   1178 #define FS_CYRILLIC __MSABI_LONG(0x00000004)
   1179 #define FS_GREEK __MSABI_LONG(0x00000008)
   1180 #define FS_TURKISH __MSABI_LONG(0x00000010)
   1181 #define FS_HEBREW __MSABI_LONG(0x00000020)
   1182 #define FS_ARABIC __MSABI_LONG(0x00000040)
   1183 #define FS_BALTIC __MSABI_LONG(0x00000080)
   1184 #define FS_VIETNAMESE __MSABI_LONG(0x00000100)
   1185 #define FS_THAI __MSABI_LONG(0x00010000)
   1186 #define FS_JISJAPAN __MSABI_LONG(0x00020000)
   1187 #define FS_CHINESESIMP __MSABI_LONG(0x00040000)
   1188 #define FS_WANSUNG __MSABI_LONG(0x00080000)
   1189 #define FS_CHINESETRAD __MSABI_LONG(0x00100000)
   1190 #define FS_JOHAB __MSABI_LONG(0x00200000)
   1191 #define FS_SYMBOL __MSABI_LONG(0x80000000)
   1192 
   1193 #define FF_DONTCARE (0<<4)
   1194 #define FF_ROMAN (1<<4)
   1195 
   1196 #define FF_SWISS (2<<4)
   1197 
   1198 #define FF_MODERN (3<<4)
   1199 
   1200 #define FF_SCRIPT (4<<4)
   1201 #define FF_DECORATIVE (5<<4)
   1202 
   1203 #define FW_DONTCARE 0
   1204 #define FW_THIN 100
   1205 #define FW_EXTRALIGHT 200
   1206 #define FW_LIGHT 300
   1207 #define FW_NORMAL 400
   1208 #define FW_MEDIUM 500
   1209 #define FW_SEMIBOLD 600
   1210 #define FW_BOLD 700
   1211 #define FW_EXTRABOLD 800
   1212 #define FW_HEAVY 900
   1213 
   1214 #define FW_ULTRALIGHT FW_EXTRALIGHT
   1215 #define FW_REGULAR FW_NORMAL
   1216 #define FW_DEMIBOLD FW_SEMIBOLD
   1217 #define FW_ULTRABOLD FW_EXTRABOLD
   1218 #define FW_BLACK FW_HEAVY
   1219 
   1220 #define PANOSE_COUNT 10
   1221 #define PAN_FAMILYTYPE_INDEX 0
   1222 #define PAN_SERIFSTYLE_INDEX 1
   1223 #define PAN_WEIGHT_INDEX 2
   1224 #define PAN_PROPORTION_INDEX 3
   1225 #define PAN_CONTRAST_INDEX 4
   1226 #define PAN_STROKEVARIATION_INDEX 5
   1227 #define PAN_ARMSTYLE_INDEX 6
   1228 #define PAN_LETTERFORM_INDEX 7
   1229 #define PAN_MIDLINE_INDEX 8
   1230 #define PAN_XHEIGHT_INDEX 9
   1231 
   1232 #define PAN_CULTURE_LATIN 0
   1233 
   1234 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   1235   typedef struct tagPANOSE {
   1236     BYTE bFamilyType;
   1237     BYTE bSerifStyle;
   1238     BYTE bWeight;
   1239     BYTE bProportion;
   1240     BYTE bContrast;
   1241     BYTE bStrokeVariation;
   1242     BYTE bArmStyle;
   1243     BYTE bLetterform;
   1244     BYTE bMidline;
   1245     BYTE bXHeight;
   1246   } PANOSE,*LPPANOSE;
   1247 
   1248 #define PAN_ANY 0
   1249 #define PAN_NO_FIT 1
   1250 
   1251 #define PAN_FAMILY_TEXT_DISPLAY 2
   1252 #define PAN_FAMILY_SCRIPT 3
   1253 #define PAN_FAMILY_DECORATIVE 4
   1254 #define PAN_FAMILY_PICTORIAL 5
   1255 
   1256 #define PAN_SERIF_COVE 2
   1257 #define PAN_SERIF_OBTUSE_COVE 3
   1258 #define PAN_SERIF_SQUARE_COVE 4
   1259 #define PAN_SERIF_OBTUSE_SQUARE_COVE 5
   1260 #define PAN_SERIF_SQUARE 6
   1261 #define PAN_SERIF_THIN 7
   1262 #define PAN_SERIF_BONE 8
   1263 #define PAN_SERIF_EXAGGERATED 9
   1264 #define PAN_SERIF_TRIANGLE 10
   1265 #define PAN_SERIF_NORMAL_SANS 11
   1266 #define PAN_SERIF_OBTUSE_SANS 12
   1267 #define PAN_SERIF_PERP_SANS 13
   1268 #define PAN_SERIF_FLARED 14
   1269 #define PAN_SERIF_ROUNDED 15
   1270 
   1271 #define PAN_WEIGHT_VERY_LIGHT 2
   1272 #define PAN_WEIGHT_LIGHT 3
   1273 #define PAN_WEIGHT_THIN 4
   1274 #define PAN_WEIGHT_BOOK 5
   1275 #define PAN_WEIGHT_MEDIUM 6
   1276 #define PAN_WEIGHT_DEMI 7
   1277 #define PAN_WEIGHT_BOLD 8
   1278 #define PAN_WEIGHT_HEAVY 9
   1279 #define PAN_WEIGHT_BLACK 10
   1280 #define PAN_WEIGHT_NORD 11
   1281 
   1282 #define PAN_PROP_OLD_STYLE 2
   1283 #define PAN_PROP_MODERN 3
   1284 #define PAN_PROP_EVEN_WIDTH 4
   1285 #define PAN_PROP_EXPANDED 5
   1286 #define PAN_PROP_CONDENSED 6
   1287 #define PAN_PROP_VERY_EXPANDED 7
   1288 #define PAN_PROP_VERY_CONDENSED 8
   1289 #define PAN_PROP_MONOSPACED 9
   1290 
   1291 #define PAN_CONTRAST_NONE 2
   1292 #define PAN_CONTRAST_VERY_LOW 3
   1293 #define PAN_CONTRAST_LOW 4
   1294 #define PAN_CONTRAST_MEDIUM_LOW 5
   1295 #define PAN_CONTRAST_MEDIUM 6
   1296 #define PAN_CONTRAST_MEDIUM_HIGH 7
   1297 #define PAN_CONTRAST_HIGH 8
   1298 #define PAN_CONTRAST_VERY_HIGH 9
   1299 
   1300 #define PAN_STROKE_GRADUAL_DIAG 2
   1301 #define PAN_STROKE_GRADUAL_TRAN 3
   1302 #define PAN_STROKE_GRADUAL_VERT 4
   1303 #define PAN_STROKE_GRADUAL_HORZ 5
   1304 #define PAN_STROKE_RAPID_VERT 6
   1305 #define PAN_STROKE_RAPID_HORZ 7
   1306 #define PAN_STROKE_INSTANT_VERT 8
   1307 
   1308 #define PAN_STRAIGHT_ARMS_HORZ 2
   1309 #define PAN_STRAIGHT_ARMS_WEDGE 3
   1310 #define PAN_STRAIGHT_ARMS_VERT 4
   1311 #define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5
   1312 #define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6
   1313 #define PAN_BENT_ARMS_HORZ 7
   1314 #define PAN_BENT_ARMS_WEDGE 8
   1315 #define PAN_BENT_ARMS_VERT 9
   1316 #define PAN_BENT_ARMS_SINGLE_SERIF 10
   1317 #define PAN_BENT_ARMS_DOUBLE_SERIF 11
   1318 
   1319 #define PAN_LETT_NORMAL_CONTACT 2
   1320 #define PAN_LETT_NORMAL_WEIGHTED 3
   1321 #define PAN_LETT_NORMAL_BOXED 4
   1322 #define PAN_LETT_NORMAL_FLATTENED 5
   1323 #define PAN_LETT_NORMAL_ROUNDED 6
   1324 #define PAN_LETT_NORMAL_OFF_CENTER 7
   1325 #define PAN_LETT_NORMAL_SQUARE 8
   1326 #define PAN_LETT_OBLIQUE_CONTACT 9
   1327 #define PAN_LETT_OBLIQUE_WEIGHTED 10
   1328 #define PAN_LETT_OBLIQUE_BOXED 11
   1329 #define PAN_LETT_OBLIQUE_FLATTENED 12
   1330 #define PAN_LETT_OBLIQUE_ROUNDED 13
   1331 #define PAN_LETT_OBLIQUE_OFF_CENTER 14
   1332 #define PAN_LETT_OBLIQUE_SQUARE 15
   1333 
   1334 #define PAN_MIDLINE_STANDARD_TRIMMED 2
   1335 #define PAN_MIDLINE_STANDARD_POINTED 3
   1336 #define PAN_MIDLINE_STANDARD_SERIFED 4
   1337 #define PAN_MIDLINE_HIGH_TRIMMED 5
   1338 #define PAN_MIDLINE_HIGH_POINTED 6
   1339 #define PAN_MIDLINE_HIGH_SERIFED 7
   1340 #define PAN_MIDLINE_CONSTANT_TRIMMED 8
   1341 #define PAN_MIDLINE_CONSTANT_POINTED 9
   1342 #define PAN_MIDLINE_CONSTANT_SERIFED 10
   1343 #define PAN_MIDLINE_LOW_TRIMMED 11
   1344 #define PAN_MIDLINE_LOW_POINTED 12
   1345 #define PAN_MIDLINE_LOW_SERIFED 13
   1346 
   1347 #define PAN_XHEIGHT_CONSTANT_SMALL 2
   1348 #define PAN_XHEIGHT_CONSTANT_STD 3
   1349 #define PAN_XHEIGHT_CONSTANT_LARGE 4
   1350 #define PAN_XHEIGHT_DUCKING_SMALL 5
   1351 #define PAN_XHEIGHT_DUCKING_STD 6
   1352 #define PAN_XHEIGHT_DUCKING_LARGE 7
   1353 
   1354 #define ELF_VENDOR_SIZE 4
   1355 
   1356   typedef struct tagEXTLOGFONTA {
   1357     LOGFONTA elfLogFont;
   1358     BYTE elfFullName[LF_FULLFACESIZE];
   1359     BYTE elfStyle[LF_FACESIZE];
   1360     DWORD elfVersion;
   1361     DWORD elfStyleSize;
   1362     DWORD elfMatch;
   1363     DWORD elfReserved;
   1364     BYTE elfVendorId[ELF_VENDOR_SIZE];
   1365     DWORD elfCulture;
   1366     PANOSE elfPanose;
   1367   } EXTLOGFONTA,*PEXTLOGFONTA,*NPEXTLOGFONTA,*LPEXTLOGFONTA;
   1368 
   1369   typedef struct tagEXTLOGFONTW {
   1370     LOGFONTW elfLogFont;
   1371     WCHAR elfFullName[LF_FULLFACESIZE];
   1372     WCHAR elfStyle[LF_FACESIZE];
   1373     DWORD elfVersion;
   1374     DWORD elfStyleSize;
   1375     DWORD elfMatch;
   1376     DWORD elfReserved;
   1377     BYTE elfVendorId[ELF_VENDOR_SIZE];
   1378     DWORD elfCulture;
   1379     PANOSE elfPanose;
   1380   } EXTLOGFONTW,*PEXTLOGFONTW,*NPEXTLOGFONTW,*LPEXTLOGFONTW;
   1381 
   1382   __MINGW_TYPEDEF_AW(EXTLOGFONT)
   1383   __MINGW_TYPEDEF_AW(PEXTLOGFONT)
   1384   __MINGW_TYPEDEF_AW(NPEXTLOGFONT)
   1385   __MINGW_TYPEDEF_AW(LPEXTLOGFONT)
   1386 #endif /* WINAPI_PARTITION_APP */
   1387 
   1388 #define ELF_VERSION 0
   1389 #define ELF_CULTURE_LATIN 0
   1390 
   1391 #define RASTER_FONTTYPE 0x0001
   1392 #define DEVICE_FONTTYPE 0x002
   1393 #define TRUETYPE_FONTTYPE 0x004
   1394 
   1395 #define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
   1396 #define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b))
   1397 #define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
   1398 
   1399 #define PC_RESERVED 0x01
   1400 #define PC_EXPLICIT 0x02
   1401 #define PC_NOCOLLAPSE 0x04
   1402 
   1403 #define GetRValue(rgb) (LOBYTE(rgb))
   1404 #define GetGValue(rgb) (LOBYTE(((WORD)(rgb)) >> 8))
   1405 #define GetBValue(rgb) (LOBYTE((rgb)>>16))
   1406 
   1407 #define TRANSPARENT 1
   1408 #define OPAQUE 2
   1409 #define BKMODE_LAST 2
   1410 
   1411 #define GM_COMPATIBLE 1
   1412 #define GM_ADVANCED 2
   1413 #define GM_LAST 2
   1414 
   1415 #define PT_CLOSEFIGURE 0x01
   1416 #define PT_LINETO 0x02
   1417 #define PT_BEZIERTO 0x04
   1418 #define PT_MOVETO 0x06
   1419 
   1420 #define MM_TEXT 1
   1421 #define MM_LOMETRIC 2
   1422 #define MM_HIMETRIC 3
   1423 #define MM_LOENGLISH 4
   1424 #define MM_HIENGLISH 5
   1425 #define MM_TWIPS 6
   1426 #define MM_ISOTROPIC 7
   1427 #define MM_ANISOTROPIC 8
   1428 
   1429 #define MM_MIN MM_TEXT
   1430 #define MM_MAX MM_ANISOTROPIC
   1431 #define MM_MAX_FIXEDSCALE MM_TWIPS
   1432 
   1433 #define ABSOLUTE 1
   1434 #define RELATIVE 2
   1435 
   1436 #define WHITE_BRUSH 0
   1437 #define LTGRAY_BRUSH 1
   1438 #define GRAY_BRUSH 2
   1439 #define DKGRAY_BRUSH 3
   1440 #define BLACK_BRUSH 4
   1441 #define NULL_BRUSH 5
   1442 #define HOLLOW_BRUSH NULL_BRUSH
   1443 #define WHITE_PEN 6
   1444 #define BLACK_PEN 7
   1445 #define NULL_PEN 8
   1446 #define OEM_FIXED_FONT 10
   1447 #define ANSI_FIXED_FONT 11
   1448 #define ANSI_VAR_FONT 12
   1449 #define SYSTEM_FONT 13
   1450 #define DEVICE_DEFAULT_FONT 14
   1451 #define DEFAULT_PALETTE 15
   1452 #define SYSTEM_FIXED_FONT 16
   1453 #define DEFAULT_GUI_FONT 17
   1454 #define DC_BRUSH 18
   1455 #define DC_PEN 19
   1456 
   1457 #define STOCK_LAST 19
   1458 
   1459 #define CLR_INVALID 0xFFFFFFFF
   1460 
   1461 #define BS_SOLID 0
   1462 #define BS_NULL 1
   1463 #define BS_HOLLOW BS_NULL
   1464 #define BS_HATCHED 2
   1465 #define BS_PATTERN 3
   1466 #define BS_INDEXED 4
   1467 #define BS_DIBPATTERN 5
   1468 #define BS_DIBPATTERNPT 6
   1469 #define BS_PATTERN8X8 7
   1470 #define BS_DIBPATTERN8X8 8
   1471 #define BS_MONOPATTERN 9
   1472 
   1473 #define HS_HORIZONTAL 0
   1474 #define HS_VERTICAL 1
   1475 #define HS_FDIAGONAL 2
   1476 #define HS_BDIAGONAL 3
   1477 #define HS_CROSS 4
   1478 #define HS_DIAGCROSS 5
   1479 #define HS_API_MAX 12
   1480 
   1481 #define PS_SOLID 0
   1482 #define PS_DASH 1
   1483 #define PS_DOT 2
   1484 #define PS_DASHDOT 3
   1485 #define PS_DASHDOTDOT 4
   1486 #define PS_NULL 5
   1487 #define PS_INSIDEFRAME 6
   1488 #define PS_USERSTYLE 7
   1489 #define PS_ALTERNATE 8
   1490 #define PS_STYLE_MASK 0x0000000F
   1491 
   1492 #define PS_ENDCAP_ROUND 0x00000000
   1493 #define PS_ENDCAP_SQUARE 0x00000100
   1494 #define PS_ENDCAP_FLAT 0x00000200
   1495 #define PS_ENDCAP_MASK 0x00000F00
   1496 
   1497 #define PS_JOIN_ROUND 0x00000000
   1498 #define PS_JOIN_BEVEL 0x00001000
   1499 #define PS_JOIN_MITER 0x00002000
   1500 #define PS_JOIN_MASK 0x0000F000
   1501 
   1502 #define PS_COSMETIC 0x00000000
   1503 #define PS_GEOMETRIC 0x00010000
   1504 #define PS_TYPE_MASK 0x000F0000
   1505 
   1506 #define AD_COUNTERCLOCKWISE 1
   1507 #define AD_CLOCKWISE 2
   1508 
   1509 #define DRIVERVERSION 0
   1510 #define TECHNOLOGY 2
   1511 #define HORZSIZE 4
   1512 #define VERTSIZE 6
   1513 #define HORZRES 8
   1514 #define VERTRES 10
   1515 #define BITSPIXEL 12
   1516 #define PLANES 14
   1517 #define NUMBRUSHES 16
   1518 #define NUMPENS 18
   1519 #define NUMMARKERS 20
   1520 #define NUMFONTS 22
   1521 #define NUMCOLORS 24
   1522 #define PDEVICESIZE 26
   1523 #define CURVECAPS 28
   1524 #define LINECAPS 30
   1525 #define POLYGONALCAPS 32
   1526 #define TEXTCAPS 34
   1527 #define CLIPCAPS 36
   1528 #define RASTERCAPS 38
   1529 #define ASPECTX 40
   1530 #define ASPECTY 42
   1531 #define ASPECTXY 44
   1532 
   1533 #define LOGPIXELSX 88
   1534 #define LOGPIXELSY 90
   1535 
   1536 #define SIZEPALETTE 104
   1537 #define NUMRESERVED 106
   1538 #define COLORRES 108
   1539 
   1540 #define PHYSICALWIDTH 110
   1541 #define PHYSICALHEIGHT 111
   1542 #define PHYSICALOFFSETX 112
   1543 #define PHYSICALOFFSETY 113
   1544 #define SCALINGFACTORX 114
   1545 #define SCALINGFACTORY 115
   1546 
   1547 #define VREFRESH 116
   1548 #define DESKTOPVERTRES 117
   1549 #define DESKTOPHORZRES 118
   1550 #define BLTALIGNMENT 119
   1551 
   1552 #define SHADEBLENDCAPS 120
   1553 #define COLORMGMTCAPS 121
   1554 
   1555 #ifndef NOGDICAPMASKS
   1556 #define DT_PLOTTER 0
   1557 #define DT_RASDISPLAY 1
   1558 #define DT_RASPRINTER 2
   1559 #define DT_RASCAMERA 3
   1560 #define DT_CHARSTREAM 4
   1561 #define DT_METAFILE 5
   1562 #define DT_DISPFILE 6
   1563 
   1564 #define CC_NONE 0
   1565 #define CC_CIRCLES 1
   1566 #define CC_PIE 2
   1567 #define CC_CHORD 4
   1568 #define CC_ELLIPSES 8
   1569 #define CC_WIDE 16
   1570 #define CC_STYLED 32
   1571 #define CC_WIDESTYLED 64
   1572 #define CC_INTERIORS 128
   1573 #define CC_ROUNDRECT 256
   1574 
   1575 #define LC_NONE 0
   1576 #define LC_POLYLINE 2
   1577 #define LC_MARKER 4
   1578 #define LC_POLYMARKER 8
   1579 #define LC_WIDE 16
   1580 #define LC_STYLED 32
   1581 #define LC_WIDESTYLED 64
   1582 #define LC_INTERIORS 128
   1583 
   1584 #define PC_NONE 0
   1585 #define PC_POLYGON 1
   1586 #define PC_RECTANGLE 2
   1587 #define PC_WINDPOLYGON 4
   1588 #define PC_TRAPEZOID 4
   1589 #define PC_SCANLINE 8
   1590 #define PC_WIDE 16
   1591 #define PC_STYLED 32
   1592 #define PC_WIDESTYLED 64
   1593 #define PC_INTERIORS 128
   1594 #define PC_POLYPOLYGON 256
   1595 #define PC_PATHS 512
   1596 
   1597 #define CP_NONE 0
   1598 #define CP_RECTANGLE 1
   1599 #define CP_REGION 2
   1600 
   1601 #define TC_OP_CHARACTER 0x00000001
   1602 #define TC_OP_STROKE 0x00000002
   1603 #define TC_CP_STROKE 0x00000004
   1604 #define TC_CR_90 0x00000008
   1605 #define TC_CR_ANY 0x00000010
   1606 #define TC_SF_X_YINDEP 0x00000020
   1607 #define TC_SA_DOUBLE 0x00000040
   1608 #define TC_SA_INTEGER 0x00000080
   1609 #define TC_SA_CONTIN 0x00000100
   1610 #define TC_EA_DOUBLE 0x00000200
   1611 #define TC_IA_ABLE 0x00000400
   1612 #define TC_UA_ABLE 0x00000800
   1613 #define TC_SO_ABLE 0x00001000
   1614 #define TC_RA_ABLE 0x00002000
   1615 #define TC_VA_ABLE 0x00004000
   1616 #define TC_RESERVED 0x00008000
   1617 #define TC_SCROLLBLT 0x00010000
   1618 #endif
   1619 
   1620 #define RC_NONE
   1621 #define RC_BITBLT 1
   1622 #define RC_BANDING 2
   1623 #define RC_SCALING 4
   1624 #define RC_BITMAP64 8
   1625 #define RC_GDI20_OUTPUT 0x0010
   1626 #define RC_GDI20_STATE 0x0020
   1627 #define RC_SAVEBITMAP 0x0040
   1628 #define RC_DI_BITMAP 0x0080
   1629 #define RC_PALETTE 0x0100
   1630 #define RC_DIBTODEV 0x0200
   1631 #define RC_BIGFONT 0x0400
   1632 #define RC_STRETCHBLT 0x0800
   1633 #define RC_FLOODFILL 0x1000
   1634 #define RC_STRETCHDIB 0x2000
   1635 #define RC_OP_DX_OUTPUT 0x4000
   1636 #define RC_DEVBITS 0x8000
   1637 
   1638 #define SB_NONE 0x00000000
   1639 #define SB_CONST_ALPHA 0x00000001
   1640 #define SB_PIXEL_ALPHA 0x00000002
   1641 #define SB_PREMULT_ALPHA 0x00000004
   1642 
   1643 #define SB_GRAD_RECT 0x00000010
   1644 #define SB_GRAD_TRI 0x00000020
   1645 
   1646 #define CM_NONE 0x00000000
   1647 #define CM_DEVICE_ICM 0x00000001
   1648 #define CM_GAMMA_RAMP 0x00000002
   1649 #define CM_CMYK_COLOR 0x00000004
   1650 
   1651 #define DIB_RGB_COLORS 0
   1652 #define DIB_PAL_COLORS 1
   1653 
   1654 #define SYSPAL_ERROR 0
   1655 #define SYSPAL_STATIC 1
   1656 #define SYSPAL_NOSTATIC 2
   1657 #define SYSPAL_NOSTATIC256 3
   1658 
   1659 #define CBM_INIT __MSABI_LONG(0x04)
   1660 
   1661 #define FLOODFILLBORDER 0
   1662 #define FLOODFILLSURFACE 1
   1663 
   1664 #define CCHDEVICENAME 32
   1665 
   1666 #define CCHFORMNAME 32
   1667 
   1668 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   1669   typedef struct _devicemodeA {
   1670     BYTE dmDeviceName[CCHDEVICENAME];
   1671     WORD dmSpecVersion;
   1672     WORD dmDriverVersion;
   1673     WORD dmSize;
   1674     WORD dmDriverExtra;
   1675     DWORD dmFields;
   1676     __C89_NAMELESS union {
   1677       __C89_NAMELESS struct {
   1678 	short dmOrientation;
   1679 	short dmPaperSize;
   1680 	short dmPaperLength;
   1681 	short dmPaperWidth;
   1682 	short dmScale;
   1683 	short dmCopies;
   1684 	short dmDefaultSource;
   1685 	short dmPrintQuality;
   1686       };
   1687       struct {
   1688 	POINTL dmPosition;
   1689 	DWORD dmDisplayOrientation;
   1690 	DWORD dmDisplayFixedOutput;
   1691       };
   1692     };
   1693     short dmColor;
   1694     short dmDuplex;
   1695     short dmYResolution;
   1696     short dmTTOption;
   1697     short dmCollate;
   1698     BYTE dmFormName[CCHFORMNAME];
   1699     WORD dmLogPixels;
   1700     DWORD dmBitsPerPel;
   1701     DWORD dmPelsWidth;
   1702     DWORD dmPelsHeight;
   1703     __C89_NAMELESS union {
   1704       DWORD dmDisplayFlags;
   1705       DWORD dmNup;
   1706     };
   1707     DWORD dmDisplayFrequency;
   1708     DWORD dmICMMethod;
   1709     DWORD dmICMIntent;
   1710     DWORD dmMediaType;
   1711     DWORD dmDitherType;
   1712     DWORD dmReserved1;
   1713     DWORD dmReserved2;
   1714     DWORD dmPanningWidth;
   1715     DWORD dmPanningHeight;
   1716   } DEVMODEA,*PDEVMODEA,*NPDEVMODEA,*LPDEVMODEA;
   1717 
   1718   typedef struct _devicemodeW {
   1719     WCHAR dmDeviceName[CCHDEVICENAME];
   1720     WORD dmSpecVersion;
   1721     WORD dmDriverVersion;
   1722     WORD dmSize;
   1723     WORD dmDriverExtra;
   1724     DWORD dmFields;
   1725     __C89_NAMELESS union {
   1726       __C89_NAMELESS struct {
   1727 	short dmOrientation;
   1728 	short dmPaperSize;
   1729 	short dmPaperLength;
   1730 	short dmPaperWidth;
   1731 	short dmScale;
   1732 	short dmCopies;
   1733 	short dmDefaultSource;
   1734 	short dmPrintQuality;
   1735       };
   1736       __C89_NAMELESS struct {
   1737 	POINTL dmPosition;
   1738 	DWORD dmDisplayOrientation;
   1739 	DWORD dmDisplayFixedOutput;
   1740       };
   1741     };
   1742     short dmColor;
   1743     short dmDuplex;
   1744     short dmYResolution;
   1745     short dmTTOption;
   1746     short dmCollate;
   1747     WCHAR dmFormName[CCHFORMNAME];
   1748     WORD dmLogPixels;
   1749     DWORD dmBitsPerPel;
   1750     DWORD dmPelsWidth;
   1751     DWORD dmPelsHeight;
   1752     __C89_NAMELESS union {
   1753       DWORD dmDisplayFlags;
   1754       DWORD dmNup;
   1755     };
   1756     DWORD dmDisplayFrequency;
   1757     DWORD dmICMMethod;
   1758     DWORD dmICMIntent;
   1759     DWORD dmMediaType;
   1760     DWORD dmDitherType;
   1761     DWORD dmReserved1;
   1762     DWORD dmReserved2;
   1763     DWORD dmPanningWidth;
   1764     DWORD dmPanningHeight;
   1765   } DEVMODEW,*PDEVMODEW,*NPDEVMODEW,*LPDEVMODEW;
   1766 
   1767   __MINGW_TYPEDEF_AW(DEVMODE)
   1768   __MINGW_TYPEDEF_AW(PDEVMODE)
   1769   __MINGW_TYPEDEF_AW(NPDEVMODE)
   1770   __MINGW_TYPEDEF_AW(LPDEVMODE)
   1771 #endif
   1772 
   1773 #define DM_SPECVERSION 0x0401
   1774 
   1775 #define DM_ORIENTATION __MSABI_LONG(0x00000001)
   1776 #define DM_PAPERSIZE __MSABI_LONG(0x00000002)
   1777 #define DM_PAPERLENGTH __MSABI_LONG(0x00000004)
   1778 #define DM_PAPERWIDTH __MSABI_LONG(0x00000008)
   1779 #define DM_SCALE __MSABI_LONG(0x00000010)
   1780 #define DM_POSITION __MSABI_LONG(0x00000020)
   1781 #define DM_NUP __MSABI_LONG(0x00000040)
   1782 #define DM_DISPLAYORIENTATION __MSABI_LONG(0x00000080)
   1783 #define DM_COPIES __MSABI_LONG(0x00000100)
   1784 #define DM_DEFAULTSOURCE __MSABI_LONG(0x00000200)
   1785 #define DM_PRINTQUALITY __MSABI_LONG(0x00000400)
   1786 #define DM_COLOR __MSABI_LONG(0x00000800)
   1787 #define DM_DUPLEX __MSABI_LONG(0x00001000)
   1788 #define DM_YRESOLUTION __MSABI_LONG(0x00002000)
   1789 #define DM_TTOPTION __MSABI_LONG(0x00004000)
   1790 #define DM_COLLATE __MSABI_LONG(0x00008000)
   1791 #define DM_FORMNAME __MSABI_LONG(0x00010000)
   1792 #define DM_LOGPIXELS __MSABI_LONG(0x00020000)
   1793 #define DM_BITSPERPEL __MSABI_LONG(0x00040000)
   1794 #define DM_PELSWIDTH __MSABI_LONG(0x00080000)
   1795 #define DM_PELSHEIGHT __MSABI_LONG(0x00100000)
   1796 #define DM_DISPLAYFLAGS __MSABI_LONG(0x00200000)
   1797 #define DM_DISPLAYFREQUENCY __MSABI_LONG(0x00400000)
   1798 #define DM_ICMMETHOD __MSABI_LONG(0x00800000)
   1799 #define DM_ICMINTENT __MSABI_LONG(0x01000000)
   1800 #define DM_MEDIATYPE __MSABI_LONG(0x02000000)
   1801 #define DM_DITHERTYPE __MSABI_LONG(0x04000000)
   1802 #define DM_PANNINGWIDTH __MSABI_LONG(0x08000000)
   1803 #define DM_PANNINGHEIGHT __MSABI_LONG(0x10000000)
   1804 #define DM_DISPLAYFIXEDOUTPUT __MSABI_LONG(0x20000000)
   1805 
   1806 #define DMORIENT_PORTRAIT 1
   1807 #define DMORIENT_LANDSCAPE 2
   1808 
   1809 #define DMPAPER_FIRST DMPAPER_LETTER
   1810 #define DMPAPER_LETTER 1
   1811 #define DMPAPER_LETTERSMALL 2
   1812 #define DMPAPER_TABLOID 3
   1813 #define DMPAPER_LEDGER 4
   1814 #define DMPAPER_LEGAL 5
   1815 #define DMPAPER_STATEMENT 6
   1816 #define DMPAPER_EXECUTIVE 7
   1817 #define DMPAPER_A3 8
   1818 #define DMPAPER_A4 9
   1819 #define DMPAPER_A4SMALL 10
   1820 #define DMPAPER_A5 11
   1821 #define DMPAPER_B4 12
   1822 #define DMPAPER_B5 13
   1823 #define DMPAPER_FOLIO 14
   1824 #define DMPAPER_QUARTO 15
   1825 #define DMPAPER_10X14 16
   1826 #define DMPAPER_11X17 17
   1827 #define DMPAPER_NOTE 18
   1828 #define DMPAPER_ENV_9 19
   1829 #define DMPAPER_ENV_10 20
   1830 #define DMPAPER_ENV_11 21
   1831 #define DMPAPER_ENV_12 22
   1832 #define DMPAPER_ENV_14 23
   1833 #define DMPAPER_CSHEET 24
   1834 #define DMPAPER_DSHEET 25
   1835 #define DMPAPER_ESHEET 26
   1836 #define DMPAPER_ENV_DL 27
   1837 #define DMPAPER_ENV_C5 28
   1838 #define DMPAPER_ENV_C3 29
   1839 #define DMPAPER_ENV_C4 30
   1840 #define DMPAPER_ENV_C6 31
   1841 #define DMPAPER_ENV_C65 32
   1842 #define DMPAPER_ENV_B4 33
   1843 #define DMPAPER_ENV_B5 34
   1844 #define DMPAPER_ENV_B6 35
   1845 #define DMPAPER_ENV_ITALY 36
   1846 #define DMPAPER_ENV_MONARCH 37
   1847 #define DMPAPER_ENV_PERSONAL 38
   1848 #define DMPAPER_FANFOLD_US 39
   1849 #define DMPAPER_FANFOLD_STD_GERMAN 40
   1850 #define DMPAPER_FANFOLD_LGL_GERMAN 41
   1851 #define DMPAPER_ISO_B4 42
   1852 #define DMPAPER_JAPANESE_POSTCARD 43
   1853 #define DMPAPER_9X11 44
   1854 #define DMPAPER_10X11 45
   1855 #define DMPAPER_15X11 46
   1856 #define DMPAPER_ENV_INVITE 47
   1857 #define DMPAPER_RESERVED_48 48
   1858 #define DMPAPER_RESERVED_49 49
   1859 #define DMPAPER_LETTER_EXTRA 50
   1860 #define DMPAPER_LEGAL_EXTRA 51
   1861 #define DMPAPER_TABLOID_EXTRA 52
   1862 #define DMPAPER_A4_EXTRA 53
   1863 #define DMPAPER_LETTER_TRANSVERSE 54
   1864 #define DMPAPER_A4_TRANSVERSE 55
   1865 #define DMPAPER_LETTER_EXTRA_TRANSVERSE 56
   1866 #define DMPAPER_A_PLUS 57
   1867 #define DMPAPER_B_PLUS 58
   1868 #define DMPAPER_LETTER_PLUS 59
   1869 #define DMPAPER_A4_PLUS 60
   1870 #define DMPAPER_A5_TRANSVERSE 61
   1871 #define DMPAPER_B5_TRANSVERSE 62
   1872 #define DMPAPER_A3_EXTRA 63
   1873 #define DMPAPER_A5_EXTRA 64
   1874 #define DMPAPER_B5_EXTRA 65
   1875 #define DMPAPER_A2 66
   1876 #define DMPAPER_A3_TRANSVERSE 67
   1877 #define DMPAPER_A3_EXTRA_TRANSVERSE 68
   1878 #define DMPAPER_DBL_JAPANESE_POSTCARD 69
   1879 #define DMPAPER_A6 70
   1880 #define DMPAPER_JENV_KAKU2 71
   1881 #define DMPAPER_JENV_KAKU3 72
   1882 #define DMPAPER_JENV_CHOU3 73
   1883 #define DMPAPER_JENV_CHOU4 74
   1884 #define DMPAPER_LETTER_ROTATED 75
   1885 #define DMPAPER_A3_ROTATED 76
   1886 #define DMPAPER_A4_ROTATED 77
   1887 #define DMPAPER_A5_ROTATED 78
   1888 #define DMPAPER_B4_JIS_ROTATED 79
   1889 #define DMPAPER_B5_JIS_ROTATED 80
   1890 #define DMPAPER_JAPANESE_POSTCARD_ROTATED 81
   1891 #define DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED 82
   1892 #define DMPAPER_A6_ROTATED 83
   1893 #define DMPAPER_JENV_KAKU2_ROTATED 84
   1894 #define DMPAPER_JENV_KAKU3_ROTATED 85
   1895 #define DMPAPER_JENV_CHOU3_ROTATED 86
   1896 #define DMPAPER_JENV_CHOU4_ROTATED 87
   1897 #define DMPAPER_B6_JIS 88
   1898 #define DMPAPER_B6_JIS_ROTATED 89
   1899 #define DMPAPER_12X11 90
   1900 #define DMPAPER_JENV_YOU4 91
   1901 #define DMPAPER_JENV_YOU4_ROTATED 92
   1902 #define DMPAPER_P16K 93
   1903 #define DMPAPER_P32K 94
   1904 #define DMPAPER_P32KBIG 95
   1905 #define DMPAPER_PENV_1 96
   1906 #define DMPAPER_PENV_2 97
   1907 #define DMPAPER_PENV_3 98
   1908 #define DMPAPER_PENV_4 99
   1909 #define DMPAPER_PENV_5 100
   1910 #define DMPAPER_PENV_6 101
   1911 #define DMPAPER_PENV_7 102
   1912 #define DMPAPER_PENV_8 103
   1913 #define DMPAPER_PENV_9 104
   1914 #define DMPAPER_PENV_10 105
   1915 #define DMPAPER_P16K_ROTATED 106
   1916 #define DMPAPER_P32K_ROTATED 107
   1917 #define DMPAPER_P32KBIG_ROTATED 108
   1918 #define DMPAPER_PENV_1_ROTATED 109
   1919 #define DMPAPER_PENV_2_ROTATED 110
   1920 #define DMPAPER_PENV_3_ROTATED 111
   1921 #define DMPAPER_PENV_4_ROTATED 112
   1922 #define DMPAPER_PENV_5_ROTATED 113
   1923 #define DMPAPER_PENV_6_ROTATED 114
   1924 #define DMPAPER_PENV_7_ROTATED 115
   1925 #define DMPAPER_PENV_8_ROTATED 116
   1926 #define DMPAPER_PENV_9_ROTATED 117
   1927 #define DMPAPER_PENV_10_ROTATED 118
   1928 
   1929 #define DMPAPER_LAST DMPAPER_PENV_10_ROTATED
   1930 
   1931 #define DMPAPER_USER 256
   1932 
   1933 #define DMBIN_FIRST DMBIN_UPPER
   1934 #define DMBIN_UPPER 1
   1935 #define DMBIN_ONLYONE 1
   1936 #define DMBIN_LOWER 2
   1937 #define DMBIN_MIDDLE 3
   1938 #define DMBIN_MANUAL 4
   1939 #define DMBIN_ENVELOPE 5
   1940 #define DMBIN_ENVMANUAL 6
   1941 #define DMBIN_AUTO 7
   1942 #define DMBIN_TRACTOR 8
   1943 #define DMBIN_SMALLFMT 9
   1944 #define DMBIN_LARGEFMT 10
   1945 #define DMBIN_LARGECAPACITY 11
   1946 #define DMBIN_CASSETTE 14
   1947 #define DMBIN_FORMSOURCE 15
   1948 #define DMBIN_LAST DMBIN_FORMSOURCE
   1949 
   1950 #define DMBIN_USER 256
   1951 
   1952 #define DMRES_DRAFT (-1)
   1953 #define DMRES_LOW (-2)
   1954 #define DMRES_MEDIUM (-3)
   1955 #define DMRES_HIGH (-4)
   1956 
   1957 #define DMCOLOR_MONOCHROME 1
   1958 #define DMCOLOR_COLOR 2
   1959 
   1960 #define DMDUP_SIMPLEX 1
   1961 #define DMDUP_VERTICAL 2
   1962 #define DMDUP_HORIZONTAL 3
   1963 
   1964 #define DMTT_BITMAP 1
   1965 #define DMTT_DOWNLOAD 2
   1966 #define DMTT_SUBDEV 3
   1967 #define DMTT_DOWNLOAD_OUTLINE 4
   1968 
   1969 #define DMCOLLATE_FALSE 0
   1970 #define DMCOLLATE_TRUE 1
   1971 
   1972 #define DMDO_DEFAULT 0
   1973 #define DMDO_90 1
   1974 #define DMDO_180 2
   1975 #define DMDO_270 3
   1976 
   1977 #define DMDFO_DEFAULT 0
   1978 #define DMDFO_STRETCH 1
   1979 #define DMDFO_CENTER 2
   1980 
   1981 #define DM_INTERLACED 0x00000002
   1982 #define DMDISPLAYFLAGS_TEXTMODE 0x00000004
   1983 
   1984 #define DMNUP_SYSTEM 1
   1985 #define DMNUP_ONEUP 2
   1986 
   1987 #define DMICMMETHOD_NONE 1
   1988 #define DMICMMETHOD_SYSTEM 2
   1989 #define DMICMMETHOD_DRIVER 3
   1990 #define DMICMMETHOD_DEVICE 4
   1991 
   1992 #define DMICMMETHOD_USER 256
   1993 
   1994 #define DMICM_SATURATE 1
   1995 #define DMICM_CONTRAST 2
   1996 #define DMICM_COLORIMETRIC 3
   1997 #define DMICM_ABS_COLORIMETRIC 4
   1998 
   1999 #define DMICM_USER 256
   2000 
   2001 #define DMMEDIA_STANDARD 1
   2002 #define DMMEDIA_TRANSPARENCY 2
   2003 #define DMMEDIA_GLOSSY 3
   2004 
   2005 #define DMMEDIA_USER 256
   2006 
   2007 #define DMDITHER_NONE 1
   2008 #define DMDITHER_COARSE 2
   2009 #define DMDITHER_FINE 3
   2010 #define DMDITHER_LINEART 4
   2011 #define DMDITHER_ERRORDIFFUSION 5
   2012 #define DMDITHER_RESERVED6 6
   2013 #define DMDITHER_RESERVED7 7
   2014 #define DMDITHER_RESERVED8 8
   2015 #define DMDITHER_RESERVED9 9
   2016 #define DMDITHER_GRAYSCALE 10
   2017 
   2018 #define DMDITHER_USER 256
   2019 
   2020 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   2021   typedef struct _DISPLAY_DEVICEA {
   2022     DWORD cb;
   2023     CHAR DeviceName[32];
   2024     CHAR DeviceString[128];
   2025     DWORD StateFlags;
   2026     CHAR DeviceID[128];
   2027     CHAR DeviceKey[128];
   2028   } DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA;
   2029 
   2030   typedef struct _DISPLAY_DEVICEW {
   2031     DWORD cb;
   2032     WCHAR DeviceName[32];
   2033     WCHAR DeviceString[128];
   2034     DWORD StateFlags;
   2035     WCHAR DeviceID[128];
   2036     WCHAR DeviceKey[128];
   2037   } DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW;
   2038 
   2039   __MINGW_TYPEDEF_AW(DISPLAY_DEVICE)
   2040   __MINGW_TYPEDEF_AW(PDISPLAY_DEVICE)
   2041   __MINGW_TYPEDEF_AW(LPDISPLAY_DEVICE)
   2042 #endif
   2043 
   2044 #define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001
   2045 #define DISPLAY_DEVICE_MULTI_DRIVER 0x00000002
   2046 #define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004
   2047 #define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008
   2048 #define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010
   2049 #define DISPLAY_DEVICE_REMOVABLE 0x00000020
   2050 #if _WIN32_WINNT >= 0x0602
   2051 #define DISPLAY_DEVICE_ACC_DRIVER 0x00000040
   2052 #endif
   2053 #define DISPLAY_DEVICE_TS_COMPATIBLE 0x00200000
   2054 #if _WIN32_WINNT >= 0x0600
   2055 #define DISPLAY_DEVICE_UNSAFE_MODES_ON 0x00080000
   2056 #endif
   2057 #define DISPLAY_DEVICE_MODESPRUNED 0x08000000
   2058 #define DISPLAY_DEVICE_REMOTE 0x04000000
   2059 #define DISPLAY_DEVICE_DISCONNECT 0x02000000
   2060 
   2061 #define DISPLAY_DEVICE_ACTIVE 0x00000001
   2062 #define DISPLAY_DEVICE_ATTACHED 0x00000002
   2063 
   2064 #if WINVER >= 0x0601
   2065 #define DISPLAYCONFIG_MAXPATH 1024
   2066 
   2067 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   2068   typedef struct DISPLAYCONFIG_RATIONAL {
   2069     UINT32 Numerator;
   2070     UINT32 Denominator;
   2071   } DISPLAYCONFIG_RATIONAL;
   2072 
   2073   typedef enum {
   2074     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1,
   2075     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 =  0,
   2076     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO =  1,
   2077     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO =  2,
   2078     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO =  3,
   2079     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI =  4,
   2080     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI =  5,
   2081     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS =  6,
   2082     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN  =  8,
   2083     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI =  9,
   2084     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = 10,
   2085     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = 11,
   2086     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = 12,
   2087     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = 13,
   2088     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = 14,
   2089     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = 0x80000000,
   2090     DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = 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(