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(HBITMAP hbm,DWORD cb,CONST VOID *pvBits);
   3069   WINGDIAPI UINT WINAPI SetBoundsRect(HDC hdc,CONST RECT *lprect,UINT flags);
   3070   WINGDIAPI int WINAPI SetDIBits(HDC hdc,HBITMAP hbm,UINT start,UINT cLines,CONST VOID *lpBits,CONST BITMAPINFO *lpbmi,UINT ColorUse);
   3071   WINGDIAPI int WINAPI SetDIBitsToDevice(HDC hdc,int xDest,int yDest,DWORD w,DWORD h,int xSrc,int ySrc,UINT StartScan,UINT cLines,CONST VOID *lpvBits,CONST BITMAPINFO *lpbmi,UINT ColorUse);
   3072   WINGDIAPI DWORD WINAPI SetMapperFlags(HDC hdc,DWORD flags);
   3073   WINGDIAPI int WINAPI SetGraphicsMode(HDC hdc,int iMode);
   3074   WINGDIAPI int WINAPI SetMapMode(HDC hdc,int iMode);
   3075   WINGDIAPI DWORD WINAPI SetLayout(HDC hdc,DWORD l);
   3076   WINGDIAPI DWORD WINAPI GetLayout(HDC hdc);
   3077   WINGDIAPI HMETAFILE WINAPI SetMetaFileBitsEx(UINT cbBuffer,CONST BYTE *lpData);
   3078   WINGDIAPI UINT WINAPI SetPaletteEntries(HPALETTE hpal,UINT iStart,UINT cEntries,CONST PALETTEENTRY *pPalEntries);
   3079   WINGDIAPI COLORREF WINAPI SetPixel(HDC hdc,int x,int y,COLORREF color);
   3080   WINGDIAPI WINBOOL WINAPI SetPixelV(HDC hdc,int x,int y,COLORREF color);
   3081   WINGDIAPI WINBOOL WINAPI SetPixelFormat(HDC hdc,int format,CONST PIXELFORMATDESCRIPTOR *ppfd);
   3082   WINGDIAPI int WINAPI SetPolyFillMode(HDC hdc,int mode);
   3083   WINGDIAPI WINBOOL WINAPI StretchBlt(HDC hdcDest,int xDest,int yDest,int wDest,int hDest,HDC hdcSrc,int xSrc,int ySrc,int wSrc,int hSrc,DWORD rop);
   3084   WINGDIAPI WINBOOL WINAPI SetRectRgn(HRGN hrgn,int left,int top,int right,int bottom);
   3085   WINGDIAPI int WINAPI StretchDIBits(HDC hdc,int xDest,int yDest,int DestWidth,int DestHeight,int xSrc,int ySrc,int SrcWidth,int SrcHeight,CONST VOID *lpBits,CONST BITMAPINFO *lpbmi,UINT iUsage,DWORD rop);
   3086   WINGDIAPI int WINAPI SetROP2(HDC hdc,int rop2);
   3087   WINGDIAPI int WINAPI SetStretchBltMode(HDC hdc,int mode);
   3088   WINGDIAPI UINT WINAPI SetSystemPaletteUse(HDC hdc,UINT use);
   3089   WINGDIAPI int WINAPI SetTextCharacterExtra(HDC hdc,int extra);
   3090   WINGDIAPI COLORREF WINAPI SetTextColor(HDC hdc,COLORREF color);
   3091   WINGDIAPI UINT WINAPI SetTextAlign(HDC hdc,UINT align);
   3092   WINGDIAPI WINBOOL WINAPI SetTextJustification(HDC hdc,int extra,int count);
   3093   WINGDIAPI WINBOOL WINAPI UpdateColors(HDC hdc);
   3094 
   3095 #if defined (COMBOX_SANDBOX) &&  _WIN32_WINNT >= 0x0600
   3096   typedef PVOID (WINAPI *GDIMARSHALLOC)(DWORD dwSize, LPVOID pGdiRef);
   3097   typedef HRESULT (WINAPI *DDRAWMARSHCALLBACKMARSHAL)(HGDIOBJ hGdiObj,
   3098                    LPVOID pGdiRef, LPVOID *ppDDrawRef);
   3099   typedef HRESULT (WINAPI *DDRAWMARSHCALLBACKUNMARSHAL)(LPVOID pData, HDC *phdc,
   3100                    LPVOID *ppDDrawRef);
   3101   typedef HRESULT (WINAPI *DDRAWMARSHCALLBACKRELEASE)(LPVOID pDDrawRef);
   3102 
   3103 #define GDIREGISTERDDRAWPACKETVERSION 0x1
   3104 
   3105   typedef struct {
   3106     DWORD dwSize;
   3107     DWORD dwVersion;
   3108     DDRAWMARSHCALLBACKMARSHAL pfnDdMarshal;
   3109     DDRAWMARSHCALLBACKUNMARSHAL pfnDdUnmarshal;
   3110     DDRAWMARSHCALLBACKRELEASE pfnDdRelease;
   3111   } GDIREGISTERDDRAWPACKET, *PGDIREGISTERDDRAWPACKET;
   3112 
   3113 WINGDIAPI BOOL WINAPI GdiRegisterDdraw(PGDIREGISTERDDRAWPACKET pPacket,
   3114                                        GDIMARSHALLOC *ppfnGdiAlloc);
   3115 WINGDIAPI ULONG WINAPI GdiMarshalSize(VOID);
   3116 WINGDIAPI VOID WINAPI GdiMarshal(DWORD dwProcessIdTo, HGDIOBJ hGdiObj,
   3117                                  PVOID pData, ULONG ulFlags);
   3118 WINGDIAPI HGDIOBJ WINAPI GdiUnmarshal(PVOID pData, ULONG ulFlags);
   3119 #endif
   3120 
   3121 #endif /* WINAPI_PARTITION_DESKTOP */
   3122 
   3123 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   3124   typedef USHORT COLOR16;
   3125 
   3126   typedef struct _TRIVERTEX {
   3127     LONG x;
   3128     LONG y;
   3129     COLOR16 Red;
   3130     COLOR16 Green;
   3131     COLOR16 Blue;
   3132     COLOR16 Alpha;
   3133   } TRIVERTEX,*PTRIVERTEX,*LPTRIVERTEX;
   3134 #endif
   3135 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   3136   typedef struct _GRADIENT_TRIANGLE {
   3137     ULONG Vertex1;
   3138     ULONG Vertex2;
   3139     ULONG Vertex3;
   3140   } GRADIENT_TRIANGLE,*PGRADIENT_TRIANGLE,*LPGRADIENT_TRIANGLE;
   3141 
   3142   typedef struct _GRADIENT_RECT {
   3143     ULONG UpperLeft;
   3144     ULONG LowerRight;
   3145   } GRADIENT_RECT,*PGRADIENT_RECT,*LPGRADIENT_RECT;
   3146 #endif
   3147 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
   3148   typedef struct _BLENDFUNCTION {
   3149     BYTE BlendOp;
   3150     BYTE BlendFlags;
   3151     BYTE SourceConstantAlpha;
   3152     BYTE AlphaFormat;
   3153   } BLENDFUNCTION,*PBLENDFUNCTION;
   3154 #endif
   3155 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   3156 #define AC_SRC_OVER 0x00
   3157 #define AC_SRC_ALPHA 0x01
   3158 
   3159   WINGDIAPI WINBOOL WINAPI AlphaBlend(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,BLENDFUNCTION ftn);
   3160   WINGDIAPI WINBOOL WINAPI GdiAlphaBlend(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,BLENDFUNCTION ftn);
   3161   WINGDIAPI WINBOOL WINAPI TransparentBlt(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,UINT crTransparent);
   3162   WINGDIAPI WINBOOL WINAPI GdiTransparentBlt(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,UINT crTransparent);
   3163 
   3164 #define GRADIENT_FILL_RECT_H 0x00000000
   3165 #define GRADIENT_FILL_RECT_V 0x00000001
   3166 #define GRADIENT_FILL_TRIANGLE 0x00000002
   3167 #define GRADIENT_FILL_OP_FLAG 0x000000ff
   3168 
   3169   WINGDIAPI WINBOOL WINAPI GradientFill(HDC hdc,PTRIVERTEX pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,ULONG ulMode);
   3170   WINGDIAPI WINBOOL WINAPI GdiGradientFill(HDC hdc,PTRIVERTEX pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,ULONG ulMode);
   3171 
   3172 #ifndef NOMETAFILE
   3173 
   3174 #define CopyEnhMetaFile __MINGW_NAME_AW(CopyEnhMetaFile)
   3175 #define CreateEnhMetaFile __MINGW_NAME_AW(CreateEnhMetaFile)
   3176 #define GetEnhMetaFile __MINGW_NAME_AW(GetEnhMetaFile)
   3177 #define GetEnhMetaFileDescription __MINGW_NAME_AW(GetEnhMetaFileDescription)
   3178 
   3179   WINGDIAPI WINBOOL WINAPI PlayMetaFileRecord(HDC hdc,LPHANDLETABLE lpHandleTable,LPMETARECORD lpMR,UINT noObjs);
   3180 
   3181   typedef int (CALLBACK *MFENUMPROC)(HDC hdc,HANDLETABLE *lpht,METARECORD *lpMR,int nObj,LPARAM lParam);
   3182 
   3183   WINGDIAPI WINBOOL WINAPI EnumMetaFile(HDC hdc,HMETAFILE hmf,MFENUMPROC lpProc,LPARAM lParam);
   3184 
   3185   typedef int (CALLBACK *ENHMFENUMPROC)(HDC hdc,HANDLETABLE *lpht,CONST ENHMETARECORD *lpmr,int hHandles,LPARAM data);
   3186 
   3187   WINGDIAPI HENHMETAFILE WINAPI CloseEnhMetaFile(HDC hdc);
   3188   WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE hEnh,LPCSTR lpFileName);
   3189   WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE hEnh,LPCWSTR lpFileName);
   3190   WINGDIAPI HDC WINAPI CreateEnhMetaFileA(HDC hdc,LPCSTR lpFilename,CONST RECT *lprc,LPCSTR lpDesc);
   3191   WINGDIAPI HDC WINAPI CreateEnhMetaFileW(HDC hdc,LPCWSTR lpFilename,CONST RECT *lprc,LPCWSTR lpDesc);
   3192   WINGDIAPI WINBOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE hmf);
   3193   WINGDIAPI WINBOOL WINAPI EnumEnhMetaFile(HDC hdc,HENHMETAFILE hmf,ENHMFENUMPROC lpProc,LPVOID lpParam,CONST RECT *lpRect);
   3194   WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR lpName);
   3195   WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR lpName);
   3196   WINGDIAPI UINT WINAPI GetEnhMetaFileBits(HENHMETAFILE hEMF,UINT nSize,LPBYTE lpData);
   3197   WINGDIAPI UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE hemf,UINT cchBuffer,LPSTR lpDescription);
   3198   WINGDIAPI UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE hemf,UINT cchBuffer,LPWSTR lpDescription);
   3199   WINGDIAPI UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE hemf,UINT nSize,LPENHMETAHEADER lpEnhMetaHeader);
   3200   WINGDIAPI UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE hemf,UINT nNumEntries,LPPALETTEENTRY lpPaletteEntries);
   3201   WINGDIAPI UINT WINAPI GetEnhMetaFilePixelFormat(HENHMETAFILE hemf,UINT cbBuffer,PIXELFORMATDESCRIPTOR *ppfd);
   3202   WINGDIAPI UINT WINAPI GetWinMetaFileBits(HENHMETAFILE hemf,UINT cbData16,LPBYTE pData16,INT iMapMode,HDC hdcRef);
   3203   WINGDIAPI WINBOOL WINAPI PlayEnhMetaFile(HDC hdc,HENHMETAFILE hmf,CONST RECT *lprect);
   3204   WINGDIAPI WINBOOL WINAPI PlayEnhMetaFileRecord(HDC hdc,LPHANDLETABLE pht,CONST ENHMETARECORD *pmr,UINT cht);
   3205   WINGDIAPI HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT nSize,CONST BYTE *pb);
   3206   WINGDIAPI HENHMETAFILE WINAPI SetWinMetaFileBits(UINT nSize,CONST BYTE *lpMeta16Data,HDC hdcRef,CONST METAFILEPICT *lpMFP);
   3207   WINGDIAPI WINBOOL WINAPI GdiComment(HDC hdc,UINT nSize,CONST BYTE *lpData);
   3208 #endif
   3209 
   3210 #ifndef NOTEXTMETRIC
   3211 #define GetTextMetrics __MINGW_NAME_AW(GetTextMetrics)
   3212 
   3213   WINGDIAPI WINBOOL WINAPI GetTextMetricsA(HDC hdc,LPTEXTMETRICA lptm);
   3214   WINGDIAPI WINBOOL WINAPI GetTextMetricsW(HDC hdc,LPTEXTMETRICW lptm);
   3215 #endif
   3216 
   3217   typedef struct tagDIBSECTION {
   3218     BITMAP dsBm;
   3219     BITMAPINFOHEADER dsBmih;
   3220     DWORD dsBitfields[3];
   3221     HANDLE dshSection;
   3222     DWORD dsOffset;
   3223   } DIBSECTION,*LPDIBSECTION,*PDIBSECTION;
   3224 
   3225   WINGDIAPI WINBOOL WINAPI AngleArc(HDC hdc,int x,int y,DWORD r,FLOAT StartAngle,FLOAT SweepAngle);
   3226   WINGDIAPI WINBOOL WINAPI PolyPolyline(HDC hdc,CONST POINT *apt,CONST DWORD *asz,DWORD csz);
   3227   WINGDIAPI WINBOOL WINAPI GetWorldTransform(HDC hdc,LPXFORM lpxf);
   3228   WINGDIAPI WINBOOL WINAPI SetWorldTransform(HDC hdc,CONST XFORM *lpxf);
   3229   WINGDIAPI WINBOOL WINAPI ModifyWorldTransform(HDC hdc,CONST XFORM *lpxf,DWORD mode);
   3230   WINGDIAPI WINBOOL WINAPI CombineTransform(LPXFORM lpxfOut,CONST XFORM *lpxf1,CONST XFORM *lpxf2);
   3231   WINGDIAPI HBITMAP WINAPI CreateDIBSection(HDC hdc,CONST BITMAPINFO *lpbmi,UINT usage,VOID **ppvBits,HANDLE hSection,DWORD offset);
   3232   WINGDIAPI UINT WINAPI GetDIBColorTable(HDC hdc,UINT iStart,UINT cEntries,RGBQUAD *prgbq);
   3233   WINGDIAPI UINT WINAPI SetDIBColorTable(HDC hdc,UINT iStart,UINT cEntries,CONST RGBQUAD *prgbq);
   3234 
   3235 #define CA_NEGATIVE 0x0001
   3236 #define CA_LOG_FILTER 0x0002
   3237 
   3238 #define ILLUMINANT_DEVICE_DEFAULT 0
   3239 #define ILLUMINANT_A 1
   3240 #define ILLUMINANT_B 2
   3241 #define ILLUMINANT_C 3
   3242 #define ILLUMINANT_D50 4
   3243 #define ILLUMINANT_D55 5
   3244 #define ILLUMINANT_D65 6
   3245 #define ILLUMINANT_D75 7
   3246 #define ILLUMINANT_F2 8
   3247 #define ILLUMINANT_MAX_INDEX ILLUMINANT_F2
   3248 
   3249 #define ILLUMINANT_TUNGSTEN ILLUMINANT_A
   3250 #define ILLUMINANT_DAYLIGHT ILLUMINANT_C
   3251 #define ILLUMINANT_FLUORESCENT ILLUMINANT_F2
   3252 #define ILLUMINANT_NTSC ILLUMINANT_C
   3253 
   3254 #define RGB_GAMMA_MIN (WORD)02500
   3255 #define RGB_GAMMA_MAX (WORD)65000
   3256 
   3257 #define REFERENCE_WHITE_MIN (WORD)6000
   3258 #define REFERENCE_WHITE_MAX (WORD)10000
   3259 #define REFERENCE_BLACK_MIN (WORD)0
   3260 #define REFERENCE_BLACK_MAX (WORD)4000
   3261 
   3262 #define COLOR_ADJ_MIN (SHORT)-100
   3263 #define COLOR_ADJ_MAX (SHORT)100
   3264 
   3265   typedef struct tagCOLORADJUSTMENT {
   3266     WORD caSize;
   3267     WORD caFlags;
   3268     WORD caIlluminantIndex;
   3269     WORD caRedGamma;
   3270     WORD caGreenGamma;
   3271     WORD caBlueGamma;
   3272     WORD caReferenceBlack;
   3273     WORD caReferenceWhite;
   3274     SHORT caContrast;
   3275     SHORT caBrightness;
   3276     SHORT caColorfulness;
   3277     SHORT caRedGreenTint;
   3278   } COLORADJUSTMENT,*PCOLORADJUSTMENT,*LPCOLORADJUSTMENT;
   3279 
   3280   WINGDIAPI WINBOOL WINAPI SetColorAdjustment(HDC hdc,CONST COLORADJUSTMENT *lpca);
   3281   WINGDIAPI WINBOOL WINAPI GetColorAdjustment(HDC hdc,LPCOLORADJUSTMENT lpca);
   3282   WINGDIAPI HPALETTE WINAPI CreateHalftonePalette(HDC hdc);
   3283 
   3284   typedef WINBOOL (CALLBACK *ABORTPROC)(HDC,int);
   3285 
   3286   typedef struct _DOCINFOA {
   3287     int cbSize;
   3288     LPCSTR lpszDocName;
   3289     LPCSTR lpszOutput;
   3290     LPCSTR lpszDatatype;
   3291     DWORD fwType;
   3292   } DOCINFOA,*LPDOCINFOA;
   3293 
   3294   typedef struct _DOCINFOW {
   3295     int cbSize;
   3296     LPCWSTR lpszDocName;
   3297     LPCWSTR lpszOutput;
   3298     LPCWSTR lpszDatatype;
   3299     DWORD fwType;
   3300   } DOCINFOW,*LPDOCINFOW;
   3301 
   3302   __MINGW_TYPEDEF_AW(DOCINFO)
   3303   __MINGW_TYPEDEF_AW(LPDOCINFO)
   3304 
   3305 #define DI_APPBANDING 0x00000001
   3306 #define DI_ROPS_READ_DESTINATION 0x00000002
   3307 
   3308 #define StartDoc __MINGW_NAME_AW(StartDoc)
   3309 #define GetObject __MINGW_NAME_AW(GetObject)
   3310 #define TextOut __MINGW_NAME_AW(TextOut)
   3311 #define ExtTextOut __MINGW_NAME_AW(ExtTextOut)
   3312 #define PolyTextOut __MINGW_NAME_AW(PolyTextOut)
   3313 #define GetTextFace __MINGW_NAME_AW(GetTextFace)
   3314 
   3315   WINGDIAPI int WINAPI StartDocA(HDC hdc,CONST DOCINFOA *lpdi);
   3316   WINGDIAPI int WINAPI StartDocW(HDC hdc,CONST DOCINFOW *lpdi);
   3317   WINGDIAPI int WINAPI EndDoc(HDC hdc);
   3318   WINGDIAPI int WINAPI StartPage(HDC hdc);
   3319   WINGDIAPI int WINAPI EndPage(HDC hdc);
   3320   WINGDIAPI int WINAPI AbortDoc(HDC hdc);
   3321   WINGDIAPI int WINAPI SetAbortProc(HDC hdc,ABORTPROC lpProc);
   3322   WINGDIAPI WINBOOL WINAPI AbortPath(HDC hdc);
   3323   WINGDIAPI WINBOOL WINAPI ArcTo(HDC hdc,int left,int top,int right,int bottom,int xr1,int yr1,int xr2,int yr2);
   3324   WINGDIAPI WINBOOL WINAPI BeginPath(HDC hdc);
   3325   WINGDIAPI WINBOOL WINAPI CloseFigure(HDC hdc);
   3326   WINGDIAPI WINBOOL WINAPI EndPath(HDC hdc);
   3327   WINGDIAPI WINBOOL WINAPI FillPath(HDC hdc);
   3328   WINGDIAPI WINBOOL WINAPI FlattenPath(HDC hdc);
   3329   WINGDIAPI int WINAPI GetPath(HDC hdc,LPPOINT apt,LPBYTE aj,int cpt);
   3330   WINGDIAPI HRGN WINAPI PathToRegion(HDC hdc);
   3331   WINGDIAPI WINBOOL WINAPI PolyDraw(HDC hdc,CONST POINT *apt,CONST BYTE *aj,int cpt);
   3332   WINGDIAPI WINBOOL WINAPI SelectClipPath(HDC hdc,int mode);
   3333   WINGDIAPI int WINAPI SetArcDirection(HDC hdc,int dir);
   3334   WINGDIAPI WINBOOL WINAPI SetMiterLimit(HDC hdc,FLOAT limit,PFLOAT old);
   3335   WINGDIAPI WINBOOL WINAPI StrokeAndFillPath(HDC hdc);
   3336   WINGDIAPI WINBOOL WINAPI StrokePath(HDC hdc);
   3337   WINGDIAPI WINBOOL WINAPI WidenPath(HDC hdc);
   3338   WINGDIAPI HPEN WINAPI ExtCreatePen(DWORD iPenStyle,DWORD cWidth,CONST LOGBRUSH *plbrush,DWORD cStyle,CONST DWORD *pstyle);
   3339   WINGDIAPI WINBOOL WINAPI GetMiterLimit(HDC hdc,PFLOAT plimit);
   3340   WINGDIAPI int WINAPI GetArcDirection(HDC hdc);
   3341   WINGDIAPI int WINAPI GetObjectA(HANDLE h,int c,LPVOID pv);
   3342   WINGDIAPI int WINAPI GetObjectW(HANDLE h,int c,LPVOID pv);
   3343   WINGDIAPI WINBOOL WINAPI MoveToEx(HDC hdc,int x,int y,LPPOINT lppt);
   3344   WINGDIAPI WINBOOL WINAPI TextOutA(HDC hdc,int x,int y,LPCSTR lpString,int c);
   3345   WINGDIAPI WINBOOL WINAPI TextOutW(HDC hdc,int x,int y,LPCWSTR lpString,int c);
   3346   WINGDIAPI WINBOOL WINAPI ExtTextOutA(HDC hdc,int x,int y,UINT options,CONST RECT *lprect,LPCSTR lpString,UINT c,CONST INT *lpDx);
   3347   WINGDIAPI WINBOOL WINAPI ExtTextOutW(HDC hdc,int x,int y,UINT options,CONST RECT *lprect,LPCWSTR lpString,UINT c,CONST INT *lpDx);
   3348   WINGDIAPI WINBOOL WINAPI PolyTextOutA(HDC hdc,CONST POLYTEXTA *ppt,int nstrings);
   3349   WINGDIAPI WINBOOL WINAPI PolyTextOutW(HDC hdc,CONST POLYTEXTW *ppt,int nstrings);
   3350   WINGDIAPI HRGN WINAPI CreatePolygonRgn(CONST POINT *pptl,int cPoint,int iMode);
   3351   WINGDIAPI WINBOOL WINAPI DPtoLP(HDC hdc,LPPOINT lppt,int c);
   3352   WINGDIAPI WINBOOL WINAPI LPtoDP(HDC hdc,LPPOINT lppt,int c);
   3353   WINGDIAPI WINBOOL WINAPI Polygon(HDC hdc,CONST POINT *apt,int cpt);
   3354   WINGDIAPI WINBOOL WINAPI Polyline(HDC hdc,CONST POINT *apt,int cpt);
   3355   WINGDIAPI WINBOOL WINAPI PolyBezier(HDC hdc,CONST POINT *apt,DWORD cpt);
   3356   WINGDIAPI WINBOOL WINAPI PolyBezierTo(HDC hdc,CONST POINT *apt,DWORD cpt);
   3357   WINGDIAPI WINBOOL WINAPI PolylineTo(HDC hdc,CONST POINT *apt,DWORD cpt);
   3358   WINGDIAPI WINBOOL WINAPI SetViewportExtEx(HDC hdc,int x,int y,LPSIZE lpsz);
   3359   WINGDIAPI WINBOOL WINAPI SetViewportOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
   3360   WINGDIAPI WINBOOL WINAPI SetWindowExtEx(HDC hdc,int x,int y,LPSIZE lpsz);
   3361   WINGDIAPI WINBOOL WINAPI SetWindowOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
   3362   WINGDIAPI WINBOOL WINAPI OffsetViewportOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
   3363   WINGDIAPI WINBOOL WINAPI OffsetWindowOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
   3364   WINGDIAPI WINBOOL WINAPI ScaleViewportExtEx(HDC hdc,int xn,int dx,int yn,int yd,LPSIZE lpsz);
   3365   WINGDIAPI WINBOOL WINAPI ScaleWindowExtEx(HDC hdc,int xn,int xd,int yn,int yd,LPSIZE lpsz);
   3366   WINGDIAPI WINBOOL WINAPI SetBitmapDimensionEx(HBITMAP hbm,int w,int h,LPSIZE lpsz);
   3367   WINGDIAPI WINBOOL WINAPI SetBrushOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
   3368   WINGDIAPI int WINAPI GetTextFaceA(HDC hdc,int c,LPSTR lpName);
   3369   WINGDIAPI int WINAPI GetTextFaceW(HDC hdc,int c,LPWSTR lpName);
   3370 
   3371 #define FONTMAPPER_MAX 10
   3372 
   3373   typedef struct tagKERNINGPAIR {
   3374     WORD wFirst;
   3375     WORD wSecond;
   3376     int iKernAmount;
   3377   } KERNINGPAIR,*LPKERNINGPAIR;
   3378 
   3379 #define GetKerningPairs __MINGW_NAME_AW(GetKerningPairs)
   3380 
   3381   WINGDIAPI DWORD WINAPI GetKerningPairsA(HDC hdc,DWORD nPairs,LPKERNINGPAIR lpKernPair);
   3382   WINGDIAPI DWORD WINAPI GetKerningPairsW(HDC hdc,DWORD nPairs,LPKERNINGPAIR lpKernPair);
   3383   WINGDIAPI WINBOOL WINAPI GetDCOrgEx(HDC hdc,LPPOINT lppt);
   3384   WINGDIAPI WINBOOL WINAPI FixBrushOrgEx(HDC hdc,int x,int y,LPPOINT ptl);
   3385   WINGDIAPI WINBOOL WINAPI UnrealizeObject(HGDIOBJ h);
   3386   WINGDIAPI WINBOOL WINAPI GdiFlush();
   3387   WINGDIAPI DWORD WINAPI GdiSetBatchLimit(DWORD dw);
   3388   WINGDIAPI DWORD WINAPI GdiGetBatchLimit();
   3389 
   3390 #define ICM_OFF 1
   3391 #define ICM_ON 2
   3392 #define ICM_QUERY 3
   3393 #define ICM_DONE_OUTSIDEDC 4
   3394 
   3395   typedef int (CALLBACK *ICMENUMPROCA)(LPSTR,LPARAM);
   3396   typedef int (CALLBACK *ICMENUMPROCW)(LPWSTR,LPARAM);
   3397 
   3398 #define ICMENUMPROC __MINGW_NAME_AW(ICMENUMPROC)
   3399 #define EnumICMProfiles __MINGW_NAME_AW(EnumICMProfiles)
   3400 #define UpdateICMRegKey __MINGW_NAME_AW(UpdateICMRegKey)
   3401 #define GetLogColorSpace __MINGW_NAME_AW(GetLogColorSpace)
   3402 #define CreateColorSpace __MINGW_NAME_AW(CreateColorSpace)
   3403 #define GetICMProfile __MINGW_NAME_AW(GetICMProfile)
   3404 #define SetICMProfile __MINGW_NAME_AW(SetICMProfile)
   3405 
   3406   WINGDIAPI int WINAPI SetICMMode(HDC hdc,int mode);
   3407   WINGDIAPI WINBOOL WINAPI CheckColorsInGamut(HDC hdc,LPVOID lpRGBTriple,LPVOID dlpBuffer,DWORD nCount);
   3408   WINGDIAPI HCOLORSPACE WINAPI GetColorSpace(HDC hdc);
   3409   WINGDIAPI WINBOOL WINAPI GetLogColorSpaceA(HCOLORSPACE hColorSpace,LPLOGCOLORSPACEA lpBuffer,DWORD nSize);
   3410   WINGDIAPI WINBOOL WINAPI GetLogColorSpaceW(HCOLORSPACE hColorSpace,LPLOGCOLORSPACEW lpBuffer,DWORD nSize);
   3411   WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA lplcs);
   3412   WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW lplcs);
   3413   WINGDIAPI HCOLORSPACE WINAPI SetColorSpace(HDC hdc,HCOLORSPACE hcs);
   3414   WINGDIAPI WINBOOL WINAPI DeleteColorSpace(HCOLORSPACE hcs);
   3415   WINGDIAPI WINBOOL WINAPI GetICMProfileA(HDC hdc,LPDWORD pBufSize,LPSTR pszFilename);
   3416   WINGDIAPI WINBOOL WINAPI GetICMProfileW(HDC hdc,LPDWORD pBufSize,LPWSTR pszFilename);
   3417   WINGDIAPI WINBOOL WINAPI SetICMProfileA(HDC hdc,LPSTR lpFileName);
   3418   WINGDIAPI WINBOOL WINAPI SetICMProfileW(HDC hdc,LPWSTR lpFileName);
   3419   WINGDIAPI WINBOOL WINAPI GetDeviceGammaRamp(HDC hdc,LPVOID lpRamp);
   3420   WINGDIAPI WINBOOL WINAPI SetDeviceGammaRamp(HDC hdc,LPVOID lpRamp);
   3421   WINGDIAPI WINBOOL WINAPI ColorMatchToTarget(HDC hdc,HDC hdcTarget,DWORD action);
   3422   WINGDIAPI int WINAPI EnumICMProfilesA(HDC hdc,ICMENUMPROCA lpProc,LPARAM lParam);
   3423   WINGDIAPI int WINAPI EnumICMProfilesW(HDC hdc,ICMENUMPROCW lpProc,LPARAM lParam);
   3424   WINGDIAPI WINBOOL WINAPI UpdateICMRegKeyA(DWORD reserved,LPSTR lpszCMID,LPSTR lpszFileName,UINT command);
   3425   WINGDIAPI WINBOOL WINAPI UpdateICMRegKeyW(DWORD reserved,LPWSTR lpszCMID,LPWSTR lpszFileName,UINT command);
   3426   WINGDIAPI WINBOOL WINAPI ColorCorrectPalette(HDC hdc,HPALETTE hPal,DWORD deFirst,DWORD num);
   3427 
   3428 #ifndef NOMETAFILE
   3429 
   3430 #define ENHMETA_SIGNATURE 0x464D4520
   3431 #define ENHMETA_STOCK_OBJECT 0x80000000
   3432 
   3433 #define EMR_HEADER 1
   3434 #define EMR_POLYBEZIER 2
   3435 #define EMR_POLYGON 3
   3436 #define EMR_POLYLINE 4
   3437 #define EMR_POLYBEZIERTO 5
   3438 #define EMR_POLYLINETO 6
   3439 #define EMR_POLYPOLYLINE 7
   3440 #define EMR_POLYPOLYGON 8
   3441 #define EMR_SETWINDOWEXTEX 9
   3442 #define EMR_SETWINDOWORGEX 10
   3443 #define EMR_SETVIEWPORTEXTEX 11
   3444 #define EMR_SETVIEWPORTORGEX 12
   3445 #define EMR_SETBRUSHORGEX 13
   3446 #define EMR_EOF 14
   3447 #define EMR_SETPIXELV 15
   3448 #define EMR_SETMAPPERFLAGS 16
   3449 #define EMR_SETMAPMODE 17
   3450 #define EMR_SETBKMODE 18
   3451 #define EMR_SETPOLYFILLMODE 19
   3452 #define EMR_SETROP2 20
   3453 #define EMR_SETSTRETCHBLTMODE 21
   3454 #define EMR_SETTEXTALIGN 22
   3455 #define EMR_SETCOLORADJUSTMENT 23
   3456 #define EMR_SETTEXTCOLOR 24
   3457 #define EMR_SETBKCOLOR 25
   3458 #define EMR_OFFSETCLIPRGN 26
   3459 #define EMR_MOVETOEX 27
   3460 #define EMR_SETMETARGN 28
   3461 #define EMR_EXCLUDECLIPRECT 29
   3462 #define EMR_INTERSECTCLIPRECT 30
   3463 #define EMR_SCALEVIEWPORTEXTEX 31
   3464 #define EMR_SCALEWINDOWEXTEX 32
   3465 #define EMR_SAVEDC 33
   3466 #define EMR_RESTOREDC 34
   3467 #define EMR_SETWORLDTRANSFORM 35
   3468 #define EMR_MODIFYWORLDTRANSFORM 36
   3469 #define EMR_SELECTOBJECT 37
   3470 #define EMR_CREATEPEN 38
   3471 #define EMR_CREATEBRUSHINDIRECT 39
   3472 #define EMR_DELETEOBJECT 40
   3473 #define EMR_ANGLEARC 41
   3474 #define EMR_ELLIPSE 42
   3475 #define EMR_RECTANGLE 43
   3476 #define EMR_ROUNDRECT 44
   3477 #define EMR_ARC 45
   3478 #define EMR_CHORD 46
   3479 #define EMR_PIE 47
   3480 #define EMR_SELECTPALETTE 48
   3481 #define EMR_CREATEPALETTE 49
   3482 #define EMR_SETPALETTEENTRIES 50
   3483 #define EMR_RESIZEPALETTE 51
   3484 #define EMR_REALIZEPALETTE 52
   3485 #define EMR_EXTFLOODFILL 53
   3486 #define EMR_LINETO 54
   3487 #define EMR_ARCTO 55
   3488 #define EMR_POLYDRAW 56
   3489 #define EMR_SETARCDIRECTION 57
   3490 #define EMR_SETMITERLIMIT 58
   3491 #define EMR_BEGINPATH 59
   3492 #define EMR_ENDPATH 60
   3493 #define EMR_CLOSEFIGURE 61
   3494 #define EMR_FILLPATH 62
   3495 #define EMR_STROKEANDFILLPATH 63
   3496 #define EMR_STROKEPATH 64
   3497 #define EMR_FLATTENPATH 65
   3498 #define EMR_WIDENPATH 66
   3499 #define EMR_SELECTCLIPPATH 67
   3500 #define EMR_ABORTPATH 68
   3501 
   3502 #define EMR_GDICOMMENT 70
   3503 #define EMR_FILLRGN 71
   3504 #define EMR_FRAMERGN 72
   3505 #define EMR_INVERTRGN 73
   3506 #define EMR_PAINTRGN 74
   3507 #define EMR_EXTSELECTCLIPRGN 75
   3508 #define EMR_BITBLT 76
   3509 #define EMR_STRETCHBLT 77
   3510 #define EMR_MASKBLT 78
   3511 #define EMR_PLGBLT 79
   3512 #define EMR_SETDIBITSTODEVICE 80
   3513 #define EMR_STRETCHDIBITS 81
   3514 #define EMR_EXTCREATEFONTINDIRECTW 82
   3515 #define EMR_EXTTEXTOUTA 83
   3516 #define EMR_EXTTEXTOUTW 84
   3517 #define EMR_POLYBEZIER16 85
   3518 #define EMR_POLYGON16 86
   3519 #define EMR_POLYLINE16 87
   3520 #define EMR_POLYBEZIERTO16 88
   3521 #define EMR_POLYLINETO16 89
   3522 #define EMR_POLYPOLYLINE16 90
   3523 #define EMR_POLYPOLYGON16 91
   3524 #define EMR_POLYDRAW16 92
   3525 #define EMR_CREATEMONOBRUSH 93
   3526 #define EMR_CREATEDIBPATTERNBRUSHPT 94
   3527 #define EMR_EXTCREATEPEN 95
   3528 #define EMR_POLYTEXTOUTA 96
   3529 #define EMR_POLYTEXTOUTW 97
   3530 
   3531 #define EMR_SETICMMODE 98
   3532 #define EMR_CREATECOLORSPACE 99
   3533 #define EMR_SETCOLORSPACE 100
   3534 #define EMR_DELETECOLORSPACE 101
   3535 #define EMR_GLSRECORD 102
   3536 #define EMR_GLSBOUNDEDRECORD 103
   3537 #define EMR_PIXELFORMAT 104
   3538 #define EMR_RESERVED_105 105
   3539 #define EMR_RESERVED_106 106
   3540 #define EMR_RESERVED_107 107
   3541 #define EMR_RESERVED_108 108
   3542 #define EMR_RESERVED_109 109
   3543 #define EMR_RESERVED_110 110
   3544 #define EMR_COLORCORRECTPALETTE 111
   3545 #define EMR_SETICMPROFILEA 112
   3546 #define EMR_SETICMPROFILEW 113
   3547 #define EMR_ALPHABLEND 114
   3548 #define EMR_SETLAYOUT 115
   3549 #define EMR_TRANSPARENTBLT 116
   3550 #define EMR_RESERVED_117 117
   3551 #define EMR_GRADIENTFILL 118
   3552 #define EMR_RESERVED_119 119
   3553 #define EMR_RESERVED_120 120
   3554 #define EMR_COLORMATCHTOTARGETW 121
   3555 #define EMR_CREATECOLORSPACEW 122
   3556 
   3557 #define EMR_MIN 1
   3558 
   3559 #define EMR_MAX 122
   3560 
   3561   typedef struct tagEMR {
   3562     DWORD iType;
   3563     DWORD nSize;
   3564   } EMR,*PEMR;
   3565 
   3566   typedef struct tagEMRTEXT {
   3567     POINTL ptlReference;
   3568     DWORD nChars;
   3569     DWORD offString;
   3570     DWORD fOptions;
   3571     RECTL rcl;
   3572     DWORD offDx;
   3573   } EMRTEXT,*PEMRTEXT;
   3574 
   3575   typedef struct tagABORTPATH {
   3576     EMR emr;
   3577   } EMRABORTPATH,*PEMRABORTPATH,EMRBEGINPATH,*PEMRBEGINPATH,EMRENDPATH,*PEMRENDPATH,EMRCLOSEFIGURE,*PEMRCLOSEFIGURE,EMRFLATTENPATH,*PEMRFLATTENPATH,EMRWIDENPATH,*PEMRWIDENPATH,EMRSETMETARGN,*PEMRSETMETARGN,EMRSAVEDC,*PEMRSAVEDC,EMRREALIZEPALETTE,*PEMRREALIZEPALETTE;
   3578 
   3579   typedef struct tagEMRSELECTCLIPPATH {
   3580     EMR emr;
   3581     DWORD iMode;
   3582   } EMRSELECTCLIPPATH,*PEMRSELECTCLIPPATH,EMRSETBKMODE,*PEMRSETBKMODE,EMRSETMAPMODE,*PEMRSETMAPMODE,EMRSETLAYOUT,*PEMRSETLAYOUT,
   3583     EMRSETPOLYFILLMODE,*PEMRSETPOLYFILLMODE,EMRSETROP2,*PEMRSETROP2,EMRSETSTRETCHBLTMODE,*PEMRSETSTRETCHBLTMODE,EMRSETICMMODE,
   3584     *PEMRSETICMMODE,EMRSETTEXTALIGN,*PEMRSETTEXTALIGN;
   3585 
   3586   typedef struct tagEMRSETMITERLIMIT {
   3587     EMR emr;
   3588     FLOAT eMiterLimit;
   3589   } EMRSETMITERLIMIT,*PEMRSETMITERLIMIT;
   3590 
   3591   typedef struct tagEMRRESTOREDC {
   3592     EMR emr;
   3593     LONG iRelative;
   3594   } EMRRESTOREDC,*PEMRRESTOREDC;
   3595 
   3596   typedef struct tagEMRSETARCDIRECTION {
   3597     EMR emr;
   3598     DWORD iArcDirection;
   3599 
   3600   } EMRSETARCDIRECTION,*PEMRSETARCDIRECTION;
   3601 
   3602   typedef struct tagEMRSETMAPPERFLAGS {
   3603     EMR emr;
   3604     DWORD dwFlags;
   3605   } EMRSETMAPPERFLAGS,*PEMRSETMAPPERFLAGS;
   3606 
   3607   typedef struct tagEMRSETTEXTCOLOR {
   3608     EMR emr;
   3609     COLORREF crColor;
   3610   } EMRSETBKCOLOR,*PEMRSETBKCOLOR,EMRSETTEXTCOLOR,*PEMRSETTEXTCOLOR;
   3611 
   3612   typedef struct tagEMRSELECTOBJECT {
   3613     EMR emr;
   3614     DWORD ihObject;
   3615   } EMRSELECTOBJECT,*PEMRSELECTOBJECT,EMRDELETEOBJECT,*PEMRDELETEOBJECT;
   3616 
   3617   typedef struct tagEMRSELECTPALETTE {
   3618     EMR emr;
   3619     DWORD ihPal;
   3620   } EMRSELECTPALETTE,*PEMRSELECTPALETTE;
   3621 
   3622   typedef struct tagEMRRESIZEPALETTE {
   3623     EMR emr;
   3624     DWORD ihPal;
   3625     DWORD cEntries;
   3626   } EMRRESIZEPALETTE,*PEMRRESIZEPALETTE;
   3627 
   3628   typedef struct tagEMRSETPALETTEENTRIES {
   3629     EMR emr;
   3630     DWORD ihPal;
   3631     DWORD iStart;
   3632     DWORD cEntries;
   3633     PALETTEENTRY aPalEntries[1];
   3634   } EMRSETPALETTEENTRIES,*PEMRSETPALETTEENTRIES;
   3635 
   3636   typedef struct tagEMRSETCOLORADJUSTMENT {
   3637     EMR emr;
   3638     COLORADJUSTMENT ColorAdjustment;
   3639   } EMRSETCOLORADJUSTMENT,*PEMRSETCOLORADJUSTMENT;
   3640 
   3641   typedef struct tagEMRGDICOMMENT {
   3642     EMR emr;
   3643     DWORD cbData;
   3644     BYTE Data[1];
   3645   } EMRGDICOMMENT,*PEMRGDICOMMENT;
   3646 
   3647   typedef struct tagEMREOF {
   3648     EMR emr;
   3649     DWORD nPalEntries;
   3650     DWORD offPalEntries;
   3651     DWORD nSizeLast;
   3652   } EMREOF,*PEMREOF;
   3653 
   3654   typedef struct tagEMRLINETO {
   3655     EMR emr;
   3656     POINTL ptl;
   3657   } EMRLINETO,*PEMRLINETO,EMRMOVETOEX,*PEMRMOVETOEX;
   3658 
   3659   typedef struct tagEMROFFSETCLIPRGN {
   3660     EMR emr;
   3661     POINTL ptlOffset;
   3662   } EMROFFSETCLIPRGN,*PEMROFFSETCLIPRGN;
   3663 
   3664   typedef struct tagEMRFILLPATH {
   3665     EMR emr;
   3666     RECTL rclBounds;
   3667   } EMRFILLPATH,*PEMRFILLPATH,EMRSTROKEANDFILLPATH,*PEMRSTROKEANDFILLPATH,EMRSTROKEPATH,*PEMRSTROKEPATH;
   3668 
   3669   typedef struct tagEMREXCLUDECLIPRECT {
   3670     EMR emr;
   3671     RECTL rclClip;
   3672   } EMREXCLUDECLIPRECT,*PEMREXCLUDECLIPRECT,EMRINTERSECTCLIPRECT,*PEMRINTERSECTCLIPRECT;
   3673 
   3674   typedef struct tagEMRSETVIEWPORTORGEX {
   3675     EMR emr;
   3676     POINTL ptlOrigin;
   3677   } EMRSETVIEWPORTORGEX,*PEMRSETVIEWPORTORGEX,EMRSETWINDOWORGEX,*PEMRSETWINDOWORGEX,EMRSETBRUSHORGEX,*PEMRSETBRUSHORGEX;
   3678 
   3679   typedef struct tagEMRSETVIEWPORTEXTEX {
   3680     EMR emr;
   3681     SIZEL szlExtent;
   3682   } EMRSETVIEWPORTEXTEX,*PEMRSETVIEWPORTEXTEX,EMRSETWINDOWEXTEX,*PEMRSETWINDOWEXTEX;
   3683 
   3684   typedef struct tagEMRSCALEVIEWPORTEXTEX {
   3685     EMR emr;
   3686     LONG xNum;
   3687     LONG xDenom;
   3688     LONG yNum;
   3689     LONG yDenom;
   3690   } EMRSCALEVIEWPORTEXTEX,*PEMRSCALEVIEWPORTEXTEX,EMRSCALEWINDOWEXTEX,*PEMRSCALEWINDOWEXTEX;
   3691 
   3692   typedef struct tagEMRSETWORLDTRANSFORM {
   3693     EMR emr;
   3694     XFORM xform;
   3695   } EMRSETWORLDTRANSFORM,*PEMRSETWORLDTRANSFORM;
   3696 
   3697   typedef struct tagEMRMODIFYWORLDTRANSFORM {
   3698     EMR emr;
   3699     XFORM xform;
   3700     DWORD iMode;
   3701   } EMRMODIFYWORLDTRANSFORM,*PEMRMODIFYWORLDTRANSFORM;
   3702 
   3703   typedef struct tagEMRSETPIXELV {
   3704     EMR emr;
   3705     POINTL ptlPixel;
   3706     COLORREF crColor;
   3707   } EMRSETPIXELV,*PEMRSETPIXELV;
   3708 
   3709   typedef struct tagEMREXTFLOODFILL {
   3710     EMR emr;
   3711     POINTL ptlStart;
   3712     COLORREF crColor;
   3713     DWORD iMode;
   3714   } EMREXTFLOODFILL,*PEMREXTFLOODFILL;
   3715 
   3716   typedef struct tagEMRELLIPSE {
   3717     EMR emr;
   3718     RECTL rclBox;
   3719   } EMRELLIPSE,*PEMRELLIPSE,EMRRECTANGLE,*PEMRRECTANGLE;
   3720 
   3721   typedef struct tagEMRROUNDRECT {
   3722     EMR emr;
   3723     RECTL rclBox;
   3724     SIZEL szlCorner;
   3725   } EMRROUNDRECT,*PEMRROUNDRECT;
   3726 
   3727   typedef struct tagEMRARC {
   3728     EMR emr;
   3729     RECTL rclBox;
   3730     POINTL ptlStart;
   3731     POINTL ptlEnd;
   3732   } EMRARC,*PEMRARC,EMRARCTO,*PEMRARCTO,EMRCHORD,*PEMRCHORD,EMRPIE,*PEMRPIE;
   3733 
   3734   typedef struct tagEMRANGLEARC {
   3735     EMR emr;
   3736     POINTL ptlCenter;
   3737     DWORD nRadius;
   3738     FLOAT eStartAngle;
   3739     FLOAT eSweepAngle;
   3740   } EMRANGLEARC,*PEMRANGLEARC;
   3741 
   3742   typedef struct tagEMRPOLYLINE {
   3743     EMR emr;
   3744     RECTL rclBounds;
   3745     DWORD cptl;
   3746     POINTL aptl[1];
   3747   } EMRPOLYLINE,*PEMRPOLYLINE,EMRPOLYBEZIER,*PEMRPOLYBEZIER,EMRPOLYGON,*PEMRPOLYGON,EMRPOLYBEZIERTO,*PEMRPOLYBEZIERTO,EMRPOLYLINETO,*PEMRPOLYLINETO;
   3748 
   3749   typedef struct tagEMRPOLYLINE16 {
   3750     EMR emr;
   3751     RECTL rclBounds;
   3752     DWORD cpts;
   3753     POINTS apts[1];
   3754   } EMRPOLYLINE16,*PEMRPOLYLINE16,EMRPOLYBEZIER16,*PEMRPOLYBEZIER16,EMRPOLYGON16,*PEMRPOLYGON16,EMRPOLYBEZIERTO16,*PEMRPOLYBEZIERTO16,EMRPOLYLINETO16,*PEMRPOLYLINETO16;
   3755 
   3756   typedef struct tagEMRPOLYDRAW {
   3757     EMR emr;
   3758     RECTL rclBounds;
   3759     DWORD cptl;
   3760     POINTL aptl[1];
   3761     BYTE abTypes[1];
   3762   } EMRPOLYDRAW,*PEMRPOLYDRAW;
   3763 
   3764   typedef struct tagEMRPOLYDRAW16 {
   3765     EMR emr;
   3766     RECTL rclBounds;
   3767     DWORD cpts;
   3768     POINTS apts[1];
   3769     BYTE abTypes[1];
   3770   } EMRPOLYDRAW16,*PEMRPOLYDRAW16;
   3771 
   3772   typedef struct tagEMRPOLYPOLYLINE {
   3773     EMR emr;
   3774     RECTL rclBounds;
   3775     DWORD nPolys;
   3776     DWORD cptl;
   3777     DWORD aPolyCounts[1];
   3778     POINTL aptl[1];
   3779   } EMRPOLYPOLYLINE,*PEMRPOLYPOLYLINE,EMRPOLYPOLYGON,*PEMRPOLYPOLYGON;
   3780 
   3781   typedef struct tagEMRPOLYPOLYLINE16 {
   3782     EMR emr;
   3783     RECTL rclBounds;
   3784     DWORD nPolys;
   3785     DWORD cpts;
   3786     DWORD aPolyCounts[1];
   3787     POINTS apts[1];
   3788   } EMRPOLYPOLYLINE16,*PEMRPOLYPOLYLINE16,EMRPOLYPOLYGON16,*PEMRPOLYPOLYGON16;
   3789 
   3790   typedef struct tagEMRINVERTRGN {
   3791     EMR emr;
   3792     RECTL rclBounds;
   3793     DWORD cbRgnData;
   3794     BYTE RgnData[1];
   3795   } EMRINVERTRGN,*PEMRINVERTRGN,EMRPAINTRGN,*PEMRPAINTRGN;
   3796 
   3797   typedef struct tagEMRFILLRGN {
   3798     EMR emr;
   3799     RECTL rclBounds;
   3800     DWORD cbRgnData;
   3801     DWORD ihBrush;
   3802     BYTE RgnData[1];
   3803   } EMRFILLRGN,*PEMRFILLRGN;
   3804 
   3805   typedef struct tagEMRFRAMERGN {
   3806     EMR emr;
   3807     RECTL rclBounds;
   3808     DWORD cbRgnData;
   3809     DWORD ihBrush;
   3810     SIZEL szlStroke;
   3811     BYTE RgnData[1];
   3812   } EMRFRAMERGN,*PEMRFRAMERGN;
   3813 
   3814   typedef struct tagEMREXTSELECTCLIPRGN {
   3815     EMR emr;
   3816     DWORD cbRgnData;
   3817     DWORD iMode;
   3818     BYTE RgnData[1];
   3819   } EMREXTSELECTCLIPRGN,*PEMREXTSELECTCLIPRGN;
   3820 
   3821   typedef struct tagEMREXTTEXTOUTA {
   3822     EMR emr;
   3823     RECTL rclBounds;
   3824     DWORD iGraphicsMode;
   3825     FLOAT exScale;
   3826     FLOAT eyScale;
   3827     EMRTEXT emrtext;
   3828   } EMREXTTEXTOUTA,*PEMREXTTEXTOUTA,EMREXTTEXTOUTW,*PEMREXTTEXTOUTW;
   3829 
   3830   typedef struct tagEMRPOLYTEXTOUTA {
   3831     EMR emr;
   3832     RECTL rclBounds;
   3833     DWORD iGraphicsMode;
   3834     FLOAT exScale;
   3835     FLOAT eyScale;
   3836     LONG cStrings;
   3837     EMRTEXT aemrtext[1];
   3838   } EMRPOLYTEXTOUTA,*PEMRPOLYTEXTOUTA,EMRPOLYTEXTOUTW,*PEMRPOLYTEXTOUTW;
   3839 
   3840   typedef struct tagEMRBITBLT {
   3841     EMR emr;
   3842     RECTL rclBounds;
   3843     LONG xDest;
   3844     LONG yDest;
   3845     LONG cxDest;
   3846     LONG cyDest;
   3847     DWORD dwRop;
   3848     LONG xSrc;
   3849     LONG ySrc;
   3850     XFORM xformSrc;
   3851     COLORREF crBkColorSrc;
   3852     DWORD iUsageSrc;
   3853     DWORD offBmiSrc;
   3854     DWORD cbBmiSrc;
   3855     DWORD offBitsSrc;
   3856     DWORD cbBitsSrc;
   3857   } EMRBITBLT,*PEMRBITBLT;
   3858 
   3859   typedef struct tagEMRSTRETCHBLT {
   3860     EMR emr;
   3861     RECTL rclBounds;
   3862     LONG xDest;
   3863     LONG yDest;
   3864     LONG cxDest;
   3865     LONG cyDest;
   3866     DWORD dwRop;
   3867     LONG xSrc;
   3868     LONG ySrc;
   3869     XFORM xformSrc;
   3870     COLORREF crBkColorSrc;
   3871     DWORD iUsageSrc;
   3872     DWORD offBmiSrc;
   3873     DWORD cbBmiSrc;
   3874     DWORD offBitsSrc;
   3875     DWORD cbBitsSrc;
   3876     LONG cxSrc;
   3877     LONG cySrc;
   3878   } EMRSTRETCHBLT,*PEMRSTRETCHBLT;
   3879 
   3880   typedef struct tagEMRMASKBLT {
   3881     EMR emr;
   3882     RECTL rclBounds;
   3883     LONG xDest;
   3884     LONG yDest;
   3885     LONG cxDest;
   3886     LONG cyDest;
   3887     DWORD dwRop;
   3888     LONG xSrc;
   3889     LONG ySrc;
   3890     XFORM xformSrc;
   3891     COLORREF crBkColorSrc;
   3892     DWORD iUsageSrc;
   3893     DWORD offBmiSrc;
   3894     DWORD cbBmiSrc;
   3895     DWORD offBitsSrc;
   3896     DWORD cbBitsSrc;
   3897     LONG xMask;
   3898     LONG yMask;
   3899     DWORD iUsageMask;
   3900     DWORD offBmiMask;
   3901     DWORD cbBmiMask;
   3902     DWORD offBitsMask;
   3903     DWORD cbBitsMask;
   3904   } EMRMASKBLT,*PEMRMASKBLT;
   3905 
   3906   typedef struct tagEMRPLGBLT {
   3907     EMR emr;
   3908     RECTL rclBounds;
   3909     POINTL aptlDest[3];
   3910     LONG xSrc;
   3911     LONG ySrc;
   3912     LONG cxSrc;
   3913     LONG cySrc;
   3914     XFORM xformSrc;
   3915     COLORREF crBkColorSrc;
   3916     DWORD iUsageSrc;
   3917     DWORD offBmiSrc;
   3918     DWORD cbBmiSrc;
   3919     DWORD offBitsSrc;
   3920     DWORD cbBitsSrc;
   3921     LONG xMask;
   3922     LONG yMask;
   3923     DWORD iUsageMask;
   3924     DWORD offBmiMask;
   3925     DWORD cbBmiMask;
   3926     DWORD offBitsMask;
   3927     DWORD cbBitsMask;
   3928   } EMRPLGBLT,*PEMRPLGBLT;
   3929 
   3930   typedef struct tagEMRSETDIBITSTODEVICE {
   3931     EMR emr;
   3932     RECTL rclBounds;
   3933     LONG xDest;
   3934     LONG yDest;
   3935     LONG xSrc;
   3936     LONG ySrc;
   3937     LONG cxSrc;
   3938     LONG cySrc;
   3939     DWORD offBmiSrc;
   3940     DWORD cbBmiSrc;
   3941     DWORD offBitsSrc;
   3942     DWORD cbBitsSrc;
   3943     DWORD iUsageSrc;
   3944     DWORD iStartScan;
   3945     DWORD cScans;
   3946   } EMRSETDIBITSTODEVICE,*PEMRSETDIBITSTODEVICE;
   3947 
   3948   typedef struct tagEMRSTRETCHDIBITS {
   3949     EMR emr;
   3950     RECTL rclBounds;
   3951     LONG xDest;
   3952     LONG yDest;
   3953     LONG xSrc;
   3954     LONG ySrc;
   3955     LONG cxSrc;
   3956     LONG cySrc;
   3957     DWORD offBmiSrc;
   3958     DWORD cbBmiSrc;
   3959     DWORD offBitsSrc;
   3960     DWORD cbBitsSrc;
   3961     DWORD iUsageSrc;
   3962     DWORD dwRop;
   3963     LONG cxDest;
   3964     LONG cyDest;
   3965   } EMRSTRETCHDIBITS,*PEMRSTRETCHDIBITS;
   3966 
   3967   typedef struct tagEMREXTCREATEFONTINDIRECTW {
   3968     EMR emr;
   3969     DWORD ihFont;
   3970     EXTLOGFONTW elfw;
   3971   } EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW;
   3972 
   3973   typedef struct tagEMRCREATEPALETTE {
   3974     EMR emr;
   3975     DWORD ihPal;
   3976     LOGPALETTE lgpl;
   3977   } EMRCREATEPALETTE,*PEMRCREATEPALETTE;
   3978 
   3979   typedef struct tagEMRCREATEPEN {
   3980     EMR emr;
   3981     DWORD ihPen;
   3982     LOGPEN lopn;
   3983   } EMRCREATEPEN,*PEMRCREATEPEN;
   3984 
   3985   typedef struct tagEMREXTCREATEPEN {
   3986     EMR emr;
   3987     DWORD ihPen;
   3988     DWORD offBmi;
   3989     DWORD cbBmi;
   3990     DWORD offBits;
   3991     DWORD cbBits;
   3992     EXTLOGPEN elp;
   3993   } EMREXTCREATEPEN,*PEMREXTCREATEPEN;
   3994 
   3995   typedef struct tagEMRCREATEBRUSHINDIRECT {
   3996     EMR emr;
   3997     DWORD ihBrush;
   3998     LOGBRUSH32 lb;
   3999   } EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT;
   4000 
   4001   typedef struct tagEMRCREATEMONOBRUSH {
   4002     EMR emr;
   4003     DWORD ihBrush;
   4004     DWORD iUsage;
   4005     DWORD offBmi;
   4006     DWORD cbBmi;
   4007     DWORD offBits;
   4008     DWORD cbBits;
   4009   } EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH;
   4010 
   4011   typedef struct tagEMRCREATEDIBPATTERNBRUSHPT {
   4012     EMR emr;
   4013     DWORD ihBrush;
   4014     DWORD iUsage;
   4015     DWORD offBmi;
   4016     DWORD cbBmi;
   4017     DWORD offBits;
   4018     DWORD cbBits;
   4019   } EMRCREATEDIBPATTERNBRUSHPT,*PEMRCREATEDIBPATTERNBRUSHPT;
   4020 
   4021   typedef struct tagEMRFORMAT {
   4022     DWORD dSignature;
   4023     DWORD nVersion;
   4024     DWORD cbData;
   4025     DWORD offData;
   4026   } EMRFORMAT,*PEMRFORMAT;
   4027 
   4028   typedef struct tagEMRGLSRECORD {
   4029     EMR emr;
   4030     DWORD cbData;
   4031     BYTE Data[1];
   4032   } EMRGLSRECORD,*PEMRGLSRECORD;
   4033 
   4034   typedef struct tagEMRGLSBOUNDEDRECORD {
   4035     EMR emr;
   4036     RECTL rclBounds;
   4037     DWORD cbData;
   4038     BYTE Data[1];
   4039   } EMRGLSBOUNDEDRECORD,*PEMRGLSBOUNDEDRECORD;
   4040 
   4041   typedef struct tagEMRPIXELFORMAT {
   4042     EMR emr;
   4043     PIXELFORMATDESCRIPTOR pfd;
   4044   } EMRPIXELFORMAT,*PEMRPIXELFORMAT;
   4045 
   4046   typedef struct tagEMRCREATECOLORSPACE {
   4047     EMR emr;
   4048     DWORD ihCS;
   4049     LOGCOLORSPACEA lcs;
   4050   } EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE;
   4051 
   4052   typedef struct tagEMRSETCOLORSPACE {
   4053     EMR emr;
   4054     DWORD ihCS;
   4055   } EMRSETCOLORSPACE,*PEMRSETCOLORSPACE,EMRSELECTCOLORSPACE,*PEMRSELECTCOLORSPACE,EMRDELETECOLORSPACE,*PEMRDELETECOLORSPACE;
   4056 
   4057   typedef struct tagEMREXTESCAPE {
   4058     EMR emr;
   4059     INT iEscape;
   4060     INT cbEscData;
   4061     BYTE EscData[1];
   4062   } EMREXTESCAPE,*PEMREXTESCAPE,EMRDRAWESCAPE,*PEMRDRAWESCAPE;
   4063 
   4064   typedef struct tagEMRNAMEDESCAPE {
   4065     EMR emr;
   4066     INT iEscape;
   4067     INT cbDriver;
   4068     INT cbEscData;
   4069     BYTE EscData[1];
   4070   } EMRNAMEDESCAPE,*PEMRNAMEDESCAPE;
   4071 
   4072 #define SETICMPROFILE_EMBEDED 0x00000001
   4073 
   4074   typedef struct tagEMRSETICMPROFILE {
   4075     EMR emr;
   4076     DWORD dwFlags;
   4077     DWORD cbName;
   4078     DWORD cbData;
   4079     BYTE Data[1];
   4080   } EMRSETICMPROFILE,*PEMRSETICMPROFILE,EMRSETICMPROFILEA,*PEMRSETICMPROFILEA,EMRSETICMPROFILEW,*PEMRSETICMPROFILEW;
   4081 
   4082 #define CREATECOLORSPACE_EMBEDED 0x00000001
   4083 
   4084   typedef struct tagEMRCREATECOLORSPACEW {
   4085     EMR emr;
   4086     DWORD ihCS;
   4087     LOGCOLORSPACEW lcs;
   4088     DWORD dwFlags;
   4089     DWORD cbData;
   4090     BYTE Data[1];
   4091   } EMRCREATECOLORSPACEW,*PEMRCREATECOLORSPACEW;
   4092 
   4093 #define COLORMATCHTOTARGET_EMBEDED 0x00000001
   4094 
   4095   typedef struct tagCOLORMATCHTOTARGET {
   4096     EMR emr;
   4097     DWORD dwAction;
   4098     DWORD dwFlags;
   4099     DWORD cbName;
   4100     DWORD cbData;
   4101     BYTE Data[1];
   4102   } EMRCOLORMATCHTOTARGET,*PEMRCOLORMATCHTOTARGET;
   4103 
   4104   typedef struct tagCOLORCORRECTPALETTE {
   4105     EMR emr;
   4106     DWORD ihPalette;
   4107     DWORD nFirstEntry;
   4108     DWORD nPalEntries;
   4109     DWORD nReserved;
   4110   } EMRCOLORCORRECTPALETTE,*PEMRCOLORCORRECTPALETTE;
   4111 
   4112   typedef struct tagEMRALPHABLEND {
   4113     EMR emr;
   4114     RECTL rclBounds;
   4115     LONG xDest;
   4116     LONG yDest;
   4117     LONG cxDest;
   4118     LONG cyDest;
   4119     DWORD dwRop;
   4120     LONG xSrc;
   4121     LONG ySrc;
   4122     XFORM xformSrc;
   4123     COLORREF crBkColorSrc;
   4124     DWORD iUsageSrc;
   4125     DWORD offBmiSrc;
   4126     DWORD cbBmiSrc;
   4127     DWORD offBitsSrc;
   4128     DWORD cbBitsSrc;
   4129     LONG cxSrc;
   4130     LONG cySrc;
   4131   } EMRALPHABLEND,*PEMRALPHABLEND;
   4132 
   4133   typedef struct tagEMRGRADIENTFILL {
   4134     EMR emr;
   4135     RECTL rclBounds;
   4136     DWORD nVer;
   4137     DWORD nTri;
   4138     ULONG ulMode;
   4139     TRIVERTEX Ver[1];
   4140   } EMRGRADIENTFILL,*PEMRGRADIENTFILL;
   4141 
   4142   typedef struct tagEMRTRANSPARENTBLT {
   4143     EMR emr;
   4144     RECTL rclBounds;
   4145     LONG xDest;
   4146     LONG yDest;
   4147     LONG cxDest;
   4148     LONG cyDest;
   4149     DWORD dwRop;
   4150     LONG xSrc;
   4151     LONG ySrc;
   4152     XFORM xformSrc;
   4153     COLORREF crBkColorSrc;
   4154     DWORD iUsageSrc;
   4155     DWORD offBmiSrc;
   4156     DWORD cbBmiSrc;
   4157     DWORD offBitsSrc;
   4158     DWORD cbBitsSrc;
   4159     LONG cxSrc;
   4160     LONG cySrc;
   4161   } EMRTRANSPARENTBLT,*PEMRTRANSPARENTBLT;
   4162 
   4163 #define GDICOMMENT_IDENTIFIER 0x43494447
   4164 #define GDICOMMENT_WINDOWS_METAFILE 0x80000001
   4165 #define GDICOMMENT_BEGINGROUP 0x00000002
   4166 #define GDICOMMENT_ENDGROUP 0x00000003
   4167 #define GDICOMMENT_MULTIFORMATS 0x40000004
   4168 #define EPS_SIGNATURE 0x46535045
   4169 #define GDICOMMENT_UNICODE_STRING 0x00000040
   4170 #define GDICOMMENT_UNICODE_END 0x00000080
   4171 #endif
   4172 
   4173 #define wglUseFontBitmaps __MINGW_NAME_AW(wglUseFontBitmaps)
   4174 
   4175   WINGDIAPI WINBOOL WINAPI wglCopyContext(HGLRC,HGLRC,UINT);
   4176   WINGDIAPI HGLRC WINAPI wglCreateContext(HDC);
   4177   WINGDIAPI HGLRC WINAPI wglCreateLayerContext(HDC,int);
   4178   WINGDIAPI WINBOOL WINAPI wglDeleteContext(HGLRC);
   4179   WINGDIAPI HGLRC WINAPI wglGetCurrentContext(VOID);
   4180   WINGDIAPI HDC WINAPI wglGetCurrentDC(VOID);
   4181   WINGDIAPI PROC WINAPI wglGetProcAddress(LPCSTR);
   4182   WINGDIAPI WINBOOL WINAPI wglMakeCurrent(HDC,HGLRC);
   4183   WINGDIAPI WINBOOL WINAPI wglShareLists(HGLRC,HGLRC);
   4184   WINGDIAPI WINBOOL WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
   4185   WINGDIAPI WINBOOL WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
   4186   WINGDIAPI WINBOOL WINAPI SwapBuffers(HDC);
   4187 
   4188   typedef struct _POINTFLOAT {
   4189     FLOAT x;
   4190     FLOAT y;
   4191   } POINTFLOAT,*PPOINTFLOAT;
   4192 
   4193   typedef struct _GLYPHMETRICSFLOAT {
   4194     FLOAT gmfBlackBoxX;
   4195     FLOAT gmfBlackBoxY;
   4196     POINTFLOAT gmfptGlyphOrigin;
   4197     FLOAT gmfCellIncX;
   4198     FLOAT gmfCellIncY;
   4199   } GLYPHMETRICSFLOAT,*PGLYPHMETRICSFLOAT,*LPGLYPHMETRICSFLOAT;
   4200 
   4201 #define WGL_FONT_LINES 0
   4202 #define WGL_FONT_POLYGONS 1
   4203 
   4204 #define wglUseFontOutlines __MINGW_NAME_AW(wglUseFontOutlines)
   4205 
   4206   WINGDIAPI WINBOOL WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
   4207   WINGDIAPI WINBOOL WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
   4208 
   4209   typedef struct tagLAYERPLANEDESCRIPTOR {
   4210     WORD nSize;
   4211     WORD nVersion;
   4212     DWORD dwFlags;
   4213     BYTE iPixelType;
   4214     BYTE cColorBits;
   4215     BYTE cRedBits;
   4216     BYTE cRedShift;
   4217     BYTE cGreenBits;
   4218     BYTE cGreenShift;
   4219     BYTE cBlueBits;
   4220     BYTE cBlueShift;
   4221     BYTE cAlphaBits;
   4222     BYTE cAlphaShift;
   4223     BYTE cAccumBits;
   4224     BYTE cAccumRedBits;
   4225     BYTE cAccumGreenBits;
   4226     BYTE cAccumBlueBits;
   4227     BYTE cAccumAlphaBits;
   4228     BYTE cDepthBits;
   4229     BYTE cStencilBits;
   4230     BYTE cAuxBuffers;
   4231     BYTE iLayerPlane;
   4232     BYTE bReserved;
   4233     COLORREF crTransparent;
   4234   } LAYERPLANEDESCRIPTOR,*PLAYERPLANEDESCRIPTOR,*LPLAYERPLANEDESCRIPTOR;
   4235 
   4236 #define LPD_DOUBLEBUFFER 0x00000001
   4237 #define LPD_STEREO 0x00000002
   4238 #define LPD_SUPPORT_GDI 0x00000010
   4239 #define LPD_SUPPORT_OPENGL 0x00000020
   4240 #define LPD_SHARE_DEPTH 0x00000040
   4241 #define LPD_SHARE_STENCIL 0x00000080
   4242 #define LPD_SHARE_ACCUM 0x00000100
   4243 #define LPD_SWAP_EXCHANGE 0x00000200
   4244 #define LPD_SWAP_COPY 0x00000400
   4245 #define LPD_TRANSPARENT 0x00001000
   4246 
   4247 #define LPD_TYPE_RGBA 0
   4248 #define LPD_TYPE_COLORINDEX 1
   4249 
   4250 #define WGL_SWAP_MAIN_PLANE 0x00000001
   4251 #define WGL_SWAP_OVERLAY1 0x00000002
   4252 #define WGL_SWAP_OVERLAY2 0x00000004
   4253 #define WGL_SWAP_OVERLAY3 0x00000008
   4254 #define WGL_SWAP_OVERLAY4 0x00000010
   4255 #define WGL_SWAP_OVERLAY5 0x00000020
   4256 #define WGL_SWAP_OVERLAY6 0x00000040
   4257 #define WGL_SWAP_OVERLAY7 0x00000080
   4258 #define WGL_SWAP_OVERLAY8 0x00000100
   4259 #define WGL_SWAP_OVERLAY9 0x00000200
   4260 #define WGL_SWAP_OVERLAY10 0x00000400
   4261 #define WGL_SWAP_OVERLAY11 0x00000800
   4262 #define WGL_SWAP_OVERLAY12 0x00001000
   4263 #define WGL_SWAP_OVERLAY13 0x00002000
   4264 #define WGL_SWAP_OVERLAY14 0x00004000
   4265 #define WGL_SWAP_OVERLAY15 0x00008000
   4266 #define WGL_SWAP_UNDERLAY1 0x00010000
   4267 #define WGL_SWAP_UNDERLAY2 0x00020000
   4268 #define WGL_SWAP_UNDERLAY3 0x00040000
   4269 #define WGL_SWAP_UNDERLAY4 0x00080000
   4270 #define WGL_SWAP_UNDERLAY5 0x00100000
   4271 #define WGL_SWAP_UNDERLAY6 0x00200000
   4272 #define WGL_SWAP_UNDERLAY7 0x00400000
   4273 #define WGL_SWAP_UNDERLAY8 0x00800000
   4274 #define WGL_SWAP_UNDERLAY9 0x01000000
   4275 #define WGL_SWAP_UNDERLAY10 0x02000000
   4276 #define WGL_SWAP_UNDERLAY11 0x04000000
   4277 #define WGL_SWAP_UNDERLAY12 0x08000000
   4278 #define WGL_SWAP_UNDERLAY13 0x10000000
   4279 #define WGL_SWAP_UNDERLAY14 0x20000000
   4280 #define WGL_SWAP_UNDERLAY15 0x40000000
   4281 
   4282   WINGDIAPI WINBOOL WINAPI wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR);
   4283   WINGDIAPI int WINAPI wglSetLayerPaletteEntries(HDC,int,int,int,CONST COLORREF *);
   4284   WINGDIAPI int WINAPI wglGetLayerPaletteEntries(HDC,int,int,int,COLORREF *);
   4285   WINGDIAPI WINBOOL WINAPI wglRealizeLayerPalette(HDC,int,WINBOOL);
   4286   WINGDIAPI WINBOOL WINAPI wglSwapLayerBuffers(HDC,UINT);
   4287 
   4288   typedef struct _WGLSWAP {
   4289     HDC hdc;
   4290     UINT uiFlags;
   4291   } WGLSWAP,*PWGLSWAP,*LPWGLSWAP;
   4292 
   4293 #define WGL_SWAPMULTIPLE_MAX 16
   4294 
   4295   WINGDIAPI DWORD WINAPI wglSwapMultipleBuffers(UINT,CONST WGLSWAP *);
   4296 #endif
   4297 
   4298 #endif /* WINAPI_PARTITION_DESKTOP */
   4299 
   4300 #ifdef __cplusplus
   4301 }
   4302 #endif
   4303 #endif
   4304