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