wingdi.h 117 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*
 * Copyright (C) the Wine project
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
16
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 18
 */

19 20 21
#ifndef _WINGDI_
#define _WINGDI_
#ifndef NOGDI
22

23 24 25 26
#ifdef __cplusplus
extern "C" {
#endif

27 28 29 30 31 32
#ifdef _GDI32_
#define WINGDIAPI
#else
#define WINGDIAPI DECLSPEC_IMPORT
#endif

33 34 35 36 37 38
typedef struct _ABCFLOAT {
    FLOAT   abcfA;
    FLOAT   abcfB;
    FLOAT   abcfC;
} ABCFLOAT, *PABCFLOAT, *LPABCFLOAT;

39
#define FONTMAPPER_MAX 10
40 41 42 43 44

typedef struct
{
    WORD   wFirst;
    WORD   wSecond;
45 46
    INT  iKernAmount;
} KERNINGPAIR, *LPKERNINGPAIR;
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

typedef struct tagPIXELFORMATDESCRIPTOR {
    WORD  nSize;
    WORD  nVersion;
    DWORD dwFlags;
    BYTE  iPixelType;
    BYTE  cColorBits;
    BYTE  cRedBits;
    BYTE  cRedShift;
    BYTE  cGreenBits;
    BYTE  cGreenShift;
    BYTE  cBlueBits;
    BYTE  cBlueShift;
    BYTE  cAlphaBits;
    BYTE  cAlphaShift;
    BYTE  cAccumBits;
    BYTE  cAccumRedBits;
    BYTE  cAccumGreenBits;
    BYTE  cAccumBlueBits;
    BYTE  cAccumAlphaBits;
    BYTE  cDepthBits;
    BYTE  cStencilBits;
    BYTE  cAuxBuffers;
    BYTE  iLayerType;
    BYTE  bReserved;
    DWORD dwLayerMask;
    DWORD dwVisibleMask;
    DWORD dwDamageMask;
75
} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
76

77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
#define PFD_TYPE_RGBA        0
#define PFD_TYPE_COLORINDEX  1

#define PFD_MAIN_PLANE       0
#define PFD_OVERLAY_PLANE    1
#define PFD_UNDERLAY_PLANE   (-1)

#define PFD_DOUBLEBUFFER          0x00000001
#define PFD_STEREO                0x00000002
#define PFD_DRAW_TO_WINDOW        0x00000004
#define PFD_DRAW_TO_BITMAP        0x00000008
#define PFD_SUPPORT_GDI           0x00000010
#define PFD_SUPPORT_OPENGL        0x00000020
#define PFD_GENERIC_FORMAT        0x00000040
#define PFD_NEED_PALETTE          0x00000080
#define PFD_NEED_SYSTEM_PALETTE   0x00000100
#define PFD_SWAP_EXCHANGE         0x00000200
#define PFD_SWAP_COPY             0x00000400
#define PFD_SWAP_LAYER_BUFFERS    0x00000800
#define PFD_GENERIC_ACCELERATED   0x00001000
97
#define PFD_SUPPORT_COMPOSITION   0x00008000 /* Vista stuff */
98 99 100 101 102

#define PFD_DEPTH_DONTCARE        0x20000000
#define PFD_DOUBLEBUFFER_DONTCARE 0x40000000
#define PFD_STEREO_DONTCARE       0x80000000

103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
typedef struct tagCOLORADJUSTMENT
{
	WORD   caSize;
	WORD   caFlags;
	WORD   caIlluminantIndex;
	WORD   caRedGamma;
	WORD   caGreenGamma;
	WORD   caBlueGamma;
	WORD   caReferenceBlack;
	WORD   caReferenceWhite;
	SHORT  caContrast;
	SHORT  caBrightness;
	SHORT  caColorfulness;
	SHORT  caRedGreenTint;
} COLORADJUSTMENT, *PCOLORADJUSTMENT, *LPCOLORADJUSTMENT;
Brad Pepers's avatar
Brad Pepers committed
118

119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
#define CA_NEGATIVE          0x0001
#define CA_LOG_FILTER        0x0002

#define ILLUMINANT_DEVICE_DEFAULT   0
#define ILLUMINANT_A                1
#define ILLUMINANT_B                2
#define ILLUMINANT_C                3
#define ILLUMINANT_D50              4
#define ILLUMINANT_D55              5
#define ILLUMINANT_D65              6
#define ILLUMINANT_D75              7
#define ILLUMINANT_F2               8
#define ILLUMINANT_MAX_INDEX        ILLUMINANT_F2

#define ILLUMINANT_TUNGSTEN         ILLUMINANT_A
134
#define ILLUMINANT_DAYLIGHT         ILLUMINANT_C
135 136 137 138 139 140 141 142 143 144 145 146 147 148
#define ILLUMINANT_FLUORESCENT      ILLUMINANT_F2
#define ILLUMINANT_NTSC             ILLUMINANT_C

#define RGB_GAMMA_MIN               (WORD)02500
#define RGB_GAMMA_MAX               (WORD)65000

#define REFERENCE_WHITE_MIN         (WORD)6000
#define REFERENCE_WHITE_MAX         (WORD)10000
#define REFERENCE_BLACK_MIN         (WORD)0
#define REFERENCE_BLACK_MAX         (WORD)4000

#define COLOR_ADJ_MIN               ((SHORT)-100)
#define COLOR_ADJ_MAX               (SHORT) 100

149 150 151 152 153
typedef LONG FXPT16DOT16, *LPFXPT16DOT16;
typedef LONG FXPT2DOT30, *LPFXPT2DOT30;
typedef LONG LCSCSTYPE;
typedef LONG LCSGAMUTMATCH;

154 155 156
#define LCS_sRGB                    0x73524742  /* 'sRGB' */
#define LCS_WINDOWS_COLOR_SPACE     0x57696e20  /* 'Win ' */

157 158 159
#define LCS_CALIBRATED_RGB    __MSABI_LONG(0x00000000)
#define LCS_DEVICE_RGB        __MSABI_LONG(0x00000001)
#define LCS_DEVICE_CMYK       __MSABI_LONG(0x00000002)
160

161 162 163
#define LCS_GM_BUSINESS       __MSABI_LONG(0x00000001)
#define LCS_GM_GRAPHICS       __MSABI_LONG(0x00000002)
#define LCS_GM_IMAGES         __MSABI_LONG(0x00000004)
164 165 166 167

#define CM_OUT_OF_GAMUT       255
#define CM_IN_GAMUT           0

168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
typedef struct tagCIEXYZ
{
  FXPT2DOT30 ciexyzX;
  FXPT2DOT30 ciexyzY;
  FXPT2DOT30 ciexyzZ;
} CIEXYZ, *LPCIEXYZ;

typedef struct tagCIEXYZTRIPLE
{
  CIEXYZ ciexyzRed;
  CIEXYZ ciexyzGreen;
  CIEXYZ ciexyzBlue;
} CIEXYZTRIPLE, *LPCIEXYZTRIPLE;

typedef struct tagLOGCOLORSPACEA
{
  DWORD lcsSignature;
  DWORD lcsVersion;
  DWORD lcsSize;
  LCSCSTYPE lcsCSType;
  LCSGAMUTMATCH lcsIntent;
  CIEXYZTRIPLE lcsEndpoints;
  DWORD lcsGammaRed;
  DWORD lcsGammaGreen;
  DWORD lcsGammaBlue;
193
  CHAR lcsFilename[MAX_PATH];
194 195 196 197 198 199 200 201 202 203 204 205 206
} LOGCOLORSPACEA, *LPLOGCOLORSPACEA;

 typedef struct tagLOGCOLORSPACEW
{
  DWORD lcsSignature;
  DWORD lcsVersion;
  DWORD lcsSize;
  LCSCSTYPE lcsCSType;
  LCSGAMUTMATCH lcsIntent;
  CIEXYZTRIPLE lcsEndpoints;
  DWORD lcsGammaRed;
  DWORD lcsGammaGreen;
  DWORD lcsGammaBlue;
207
  WCHAR lcsFilename[MAX_PATH];
208 209 210 211 212
} LOGCOLORSPACEW, *LPLOGCOLORSPACEW;

DECL_WINELIB_TYPE_AW(LPLOGCOLORSPACE)
DECL_WINELIB_TYPE_AW(LOGCOLORSPACE)

Brad Pepers's avatar
Brad Pepers committed
213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
#define DC_FIELDS		1
#define DC_PAPERS		2
#define DC_PAPERSIZE		3
#define DC_MINEXTENT		4
#define DC_MAXEXTENT		5
#define DC_BINS			6
#define DC_DUPLEX		7
#define DC_SIZE			8
#define DC_EXTRA		9
#define DC_VERSION		10
#define DC_DRIVER		11
#define DC_BINNAMES		12
#define DC_ENUMRESOLUTIONS	13
#define DC_FILEDEPENDENCIES	14
#define DC_TRUETYPE		15
#define DC_PAPERNAMES		16
#define DC_ORIENTATION		17
#define DC_COPIES		18
231 232 233 234 235 236
#define DC_BINADJUST            19
#define DC_EMF_COMPLIANT        20
#define DC_DATATYPE_PRODUCED    21
#define DC_COLLATE              22
#define DC_MANUFACTURER         23
#define DC_MODEL                24
237 238 239 240 241 242 243 244 245
#define DC_PERSONALITY          25
#define DC_PRINTRATE            26
#define DC_PRINTRATEUNIT        27
#define DC_PRINTERMEM           28
#define DC_MEDIAREADY           29
#define DC_STAPLE               30
#define DC_PRINTRATEPPM         31
#define DC_COLORDEVICE          32
#define DC_NUP                  33
246 247
#define DC_MEDIATYPENAMES       34
#define DC_MEDIATYPES           35
Brad Pepers's avatar
Brad Pepers committed
248

249 250 251 252
#define DCTT_BITMAP             __MSABI_LONG(0x00000001)
#define DCTT_DOWNLOAD           __MSABI_LONG(0x00000002)
#define DCTT_SUBDEV             __MSABI_LONG(0x00000004)
#define DCTT_DOWNLOAD_OUTLINE   __MSABI_LONG(0x00000008)
253 254 255 256 257 258 259 260 261 262

#define DCBA_FACEUPNONE         0x0000
#define DCBA_FACEUPCENTER       0x0001
#define DCBA_FACEUPLEFT         0x0002
#define DCBA_FACEUPRIGHT        0x0003
#define DCBA_FACEDOWNNONE       0x0100
#define DCBA_FACEDOWNCENTER     0x0101
#define DCBA_FACEDOWNLEFT       0x0102
#define DCBA_FACEDOWNRIGHT      0x0103

263 264 265 266 267
#define PRINTRATEUNIT_PPM       1
#define PRINTRATEUNIT_CPS       2
#define PRINTRATEUNIT_LPM       3
#define PRINTRATEUNIT_IPM       4

Brad Pepers's avatar
Brad Pepers committed
268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353
/* Flag returned from Escape QUERYDIBSUPPORT */
#define	QDI_SETDIBITS		1
#define	QDI_GETDIBITS		2
#define	QDI_DIBTOSCREEN		4
#define	QDI_STRETCHDIB		8


/* GDI Escape commands */
#define	NEWFRAME		1
#define	ABORTDOC		2
#define	NEXTBAND		3
#define	SETCOLORTABLE		4
#define	GETCOLORTABLE		5
#define	FLUSHOUTPUT		6
#define	DRAFTMODE		7
#define	QUERYESCSUPPORT		8
#define	SETABORTPROC		9
#define	STARTDOC		10
#define	ENDDOC			11
#define	GETPHYSPAGESIZE		12
#define	GETPRINTINGOFFSET	13
#define	GETSCALINGFACTOR	14
#define	MFCOMMENT		15
#define	GETPENWIDTH		16
#define	SETCOPYCOUNT		17
#define	SELECTPAPERSOURCE	18
#define	DEVICEDATA		19
#define	PASSTHROUGH		19
#define	GETTECHNOLGY		20
#define	GETTECHNOLOGY		20 /* yes, both of them */
#define	SETLINECAP		21
#define	SETLINEJOIN		22
#define	SETMITERLIMIT		23
#define	BANDINFO		24
#define	DRAWPATTERNRECT		25
#define	GETVECTORPENSIZE	26
#define	GETVECTORBRUSHSIZE	27
#define	ENABLEDUPLEX		28
#define	GETSETPAPERBINS		29
#define	GETSETPRINTORIENT	30
#define	ENUMPAPERBINS		31
#define	SETDIBSCALING		32
#define	EPSPRINTING		33
#define	ENUMPAPERMETRICS	34
#define	GETSETPAPERMETRICS	35
#define	POSTSCRIPT_DATA		37
#define	POSTSCRIPT_IGNORE	38
#define	MOUSETRAILS		39
#define	GETDEVICEUNITS		42

#define	GETEXTENDEDTEXTMETRICS	256
#define	GETEXTENTTABLE		257
#define	GETPAIRKERNTABLE	258
#define	GETTRACKKERNTABLE	259
#define	EXTTEXTOUT		512
#define	GETFACENAME		513
#define	DOWNLOADFACE		514
#define	ENABLERELATIVEWIDTHS	768
#define	ENABLEPAIRKERNING	769
#define	SETKERNTRACK		770
#define	SETALLJUSTVALUES	771
#define	SETCHARSET		772

#define	STRETCHBLT		2048
#define	GETSETSCREENPARAMS	3072
#define	QUERYDIBSUPPORT		3073
#define	BEGIN_PATH		4096
#define	CLIP_TO_PATH		4097
#define	END_PATH		4098
#define	EXT_DEVICE_CAPS		4099
#define	RESTORE_CTM		4100
#define	SAVE_CTM		4101
#define	SET_ARC_DIRECTION	4102
#define	SET_BACKGROUND_COLOR	4103
#define	SET_POLY_MODE		4104
#define	SET_SCREEN_ANGLE	4105
#define	SET_SPREAD		4106
#define	TRANSFORM_CTM		4107
#define	SET_CLIP_BOX		4108
#define	SET_BOUNDS		4109
#define	SET_MIRROR_MODE		4110
#define	OPENCHANNEL		4110
#define	DOWNLOADHEADER		4111
#define CLOSECHANNEL		4112
#define	POSTSCRIPT_PASSTHROUGH	4115
#define	ENCAPSULATED_POSTSCRIPT	4116
354 355
#define	POSTSCRIPT_IDENTIFY	4117
#define	POSTSCRIPT_INJECTION	4118
356 357 358 359 360
#define	CHECKJPEGFORMAT		4119
#define	CHECKPNGFORMAT		4120
#define	GET_PS_FEATURESETTING	4121
#define	GDIPLUS_TS_QUERYVER	4122
#define	GDIPLUS_TS_RECORD	4123
361 362 363 364 365

/* for POSTSCRIPT_IDENTIFY */
#define PSIDENT_GDICENTRIC	0
#define PSIDENT_PSCENTRIC	1

Brad Pepers's avatar
Brad Pepers committed
366

367 368 369 370 371
#define QDI_SETDIBITS           1
#define QDI_GETDIBITS           2
#define QDI_DIBTOSCREEN         4
#define QDI_STRETCHDIB          8

Brad Pepers's avatar
Brad Pepers committed
372 373 374 375 376 377 378 379
/* Spooler Error Codes */
#define	SP_NOTREPORTED	0x4000
#define	SP_ERROR	(-1)
#define	SP_APPABORT	(-2)
#define	SP_USERABORT	(-3)
#define	SP_OUTOFDISK	(-4)
#define	SP_OUTOFMEMORY	(-5)

380
#define PR_JOBSTATUS     0
Brad Pepers's avatar
Brad Pepers committed
381

382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399
  /* Raster operations */

#define R2_BLACK         1
#define R2_NOTMERGEPEN   2
#define R2_MASKNOTPEN    3
#define R2_NOTCOPYPEN    4
#define R2_MASKPENNOT    5
#define R2_NOT           6
#define R2_XORPEN        7
#define R2_NOTMASKPEN    8
#define R2_MASKPEN       9
#define R2_NOTXORPEN    10
#define R2_NOP          11
#define R2_MERGENOTPEN  12
#define R2_COPYPEN      13
#define R2_MERGEPENNOT  14
#define R2_MERGEPEN     15
#define R2_WHITE        16
400
#define R2_LAST         16
401

Kevin Koltzau's avatar
Kevin Koltzau committed
402 403
#define MAKEROP4(fore,back) (DWORD)((((back)<<8)&0xFF000000)|(fore))

404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423
#define SRCCOPY         0xcc0020
#define SRCPAINT        0xee0086
#define SRCAND          0x8800c6
#define SRCINVERT       0x660046
#define SRCERASE        0x440328
#define NOTSRCCOPY      0x330008
#define NOTSRCERASE     0x1100a6
#define MERGECOPY       0xc000ca
#define MERGEPAINT      0xbb0226
#define PATCOPY         0xf00021
#define PATPAINT        0xfb0a09
#define PATINVERT       0x5a0049
#define DSTINVERT       0x550009
#define BLACKNESS       0x000042
#define WHITENESS       0xff0062

  /* StretchBlt() modes */
#define BLACKONWHITE         1
#define WHITEONBLACK         2
#define COLORONCOLOR	     3
424
#define HALFTONE             4
425
#define MAXSTRETCHBLTMODE    4
426 427 428 429

#define STRETCH_ANDSCANS     BLACKONWHITE
#define STRETCH_ORSCANS      WHITEONBLACK
#define STRETCH_DELETESCANS  COLORONCOLOR
430
#define STRETCH_HALFTONE     HALFTONE
431 432 433

  /* Colors */

434
#define RGB(r,g,b)          ((COLORREF)((BYTE)(r) | ((BYTE)(g) << 8) | ((BYTE)(b) << 16)))
435 436 437
#define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
#define PALETTEINDEX(i)     ((COLORREF)(0x01000000 | (WORD)(i)))

438 439 440
#define GetRValue(rgb)      ((BYTE)  (rgb) )
#define GetGValue(rgb)      ((BYTE) ((rgb) >> 8))
#define GetBValue(rgb)      ((BYTE) ((rgb) >> 16))
441

442
#define GetKValue(cmyk)     ((BYTE)  (cmyk) )
443 444 445
#define GetYValue(cmyk)     ((BYTE) ((cmyk) >> 8))
#define GetMValue(cmyk)     ((BYTE) ((cmyk) >> 16))
#define GetCValue(cmyk)     ((BYTE) ((cmyk) >> 24))
446

447
#define CMYK(c,m,y,k)       ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24)))
448

449
/* ICM stuff */
450 451
typedef INT (CALLBACK *ICMENUMPROCA)(LPSTR lpszFilename,LPARAM lParam);
typedef INT (CALLBACK *ICMENUMPROCW)(LPWSTR lpszFilename,LPARAM lParam);
452 453
DECL_WINELIB_TYPE_AW(ICMENUMPROC)

454 455 456 457 458 459 460 461 462 463 464 465 466 467 468

#define ICM_OFF   1
#define ICM_ON    2
#define ICM_QUERY 3

  /* Bounds Accumulation APIs */
#define DCB_RESET       0x0001
#define DCB_ACCUMULATE  0x0002
#define DCB_DIRTY       DCB_ACCUMULATE
#define DCB_SET         (DCB_RESET | DCB_ACCUMULATE)
#define DCB_ENABLE      0x0004
#define DCB_DISABLE     0x0008

typedef struct
{
469 470 471 472 473
    LONG paXCount;
    LONG paYCount;
    LONG paXExt;
    LONG paYExt;
    BYTE paRGBs;
474
} PELARRAY, *PPELARRAY, *LPPELARRAY;
475 476

  /* Bitmaps */
477 478 479

typedef struct
{
480 481 482 483
    INT  bmType;
    INT  bmWidth;
    INT  bmHeight;
    INT  bmWidthBytes;
484 485
    WORD   bmPlanes;
    WORD   bmBitsPixel;
486
    LPVOID bmBits;
487
} BITMAP, *PBITMAP, *LPBITMAP;
488 489 490 491 492


  /* Brushes */

typedef struct
493
{
494
    UINT       lbStyle;
495
    COLORREF   lbColor;
496
    ULONG_PTR  lbHatch;
497
} LOGBRUSH, *PLOGBRUSH, *LPLOGBRUSH;
498

499 500 501 502 503 504 505
typedef struct
{
    UINT       lbStyle;
    COLORREF   lbColor;
    ULONG      lbHatch;
} LOGBRUSH32, *PLOGBRUSH32, *LPLOGBRUSH32;

506
typedef LOGBRUSH PATTERN, *PPATTERN, *LPPATTERN;
507

508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528

  /* Brush styles */
#define BS_SOLID	    0
#define BS_NULL		    1
#define BS_HOLLOW	    1
#define BS_HATCHED	    2
#define BS_PATTERN	    3
#define BS_INDEXED	    4
#define	BS_DIBPATTERN	    5
#define	BS_DIBPATTERNPT	    6
#define BS_PATTERN8X8	    7
#define	BS_DIBPATTERN8X8    8
#define BS_MONOPATTERN      9

  /* Hatch styles */
#define HS_HORIZONTAL       0
#define HS_VERTICAL         1
#define HS_FDIAGONAL        2
#define HS_BDIAGONAL        3
#define HS_CROSS            4
#define HS_DIAGCROSS        5
529
#define HS_API_MAX          12
530 531 532 533 534 535 536 537 538 539

  /* Fonts */

#define LF_FACESIZE     32
#define LF_FULLFACESIZE 64

#define RASTER_FONTTYPE     0x0001
#define DEVICE_FONTTYPE     0x0002
#define TRUETYPE_FONTTYPE   0x0004

540
typedef struct tagLOGFONTA
541
{
542 543 544 545 546
    LONG   lfHeight;
    LONG   lfWidth;
    LONG   lfEscapement;
    LONG   lfOrientation;
    LONG   lfWeight;
547 548 549 550 551 552 553 554 555
    BYTE   lfItalic;
    BYTE   lfUnderline;
    BYTE   lfStrikeOut;
    BYTE   lfCharSet;
    BYTE   lfOutPrecision;
    BYTE   lfClipPrecision;
    BYTE   lfQuality;
    BYTE   lfPitchAndFamily;
    CHAR   lfFaceName[LF_FACESIZE];
556
} LOGFONTA, *PLOGFONTA, *LPLOGFONTA;
557

558
typedef struct tagLOGFONTW
559
{
560 561 562 563 564
    LONG   lfHeight;
    LONG   lfWidth;
    LONG   lfEscapement;
    LONG   lfOrientation;
    LONG   lfWeight;
565 566 567 568 569 570 571 572 573
    BYTE   lfItalic;
    BYTE   lfUnderline;
    BYTE   lfStrikeOut;
    BYTE   lfCharSet;
    BYTE   lfOutPrecision;
    BYTE   lfClipPrecision;
    BYTE   lfQuality;
    BYTE   lfPitchAndFamily;
    WCHAR  lfFaceName[LF_FACESIZE];
574
} LOGFONTW, *PLOGFONTW, *LPLOGFONTW;
575 576

DECL_WINELIB_TYPE_AW(LOGFONT)
577
DECL_WINELIB_TYPE_AW(PLOGFONT)
578 579 580 581
DECL_WINELIB_TYPE_AW(LPLOGFONT)

typedef struct
{
582
  LOGFONTA elfLogFont;
583 584
  BYTE       elfFullName[LF_FULLFACESIZE];
  BYTE       elfStyle[LF_FACESIZE];
585
} ENUMLOGFONTA, *LPENUMLOGFONTA;
586 587 588

typedef struct
{
589
  LOGFONTW elfLogFont;
590 591
  WCHAR      elfFullName[LF_FULLFACESIZE];
  WCHAR      elfStyle[LF_FACESIZE];
592
} ENUMLOGFONTW, *LPENUMLOGFONTW;
593

594 595 596
DECL_WINELIB_TYPE_AW(ENUMLOGFONT)
DECL_WINELIB_TYPE_AW(LPENUMLOGFONT)

597 598
typedef struct
{
599
  LOGFONTA elfLogFont;
600 601 602
  BYTE       elfFullName[LF_FULLFACESIZE];
  BYTE       elfStyle[LF_FACESIZE];
  BYTE       elfScript[LF_FACESIZE];
603
} ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
604 605 606

typedef struct
{
607
  LOGFONTW elfLogFont;
608 609 610
  WCHAR      elfFullName[LF_FULLFACESIZE];
  WCHAR      elfStyle[LF_FACESIZE];
  WCHAR      elfScript[LF_FACESIZE];
611
} ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
612

613
DECL_WINELIB_TYPE_AW(ENUMLOGFONTEX)
614 615
DECL_WINELIB_TYPE_AW(LPENUMLOGFONTEX)

616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639
#define MM_MAX_NUMAXES    16

typedef struct
{
  DWORD      dvReserved;
  DWORD      dvNumAxes;
  LONG       dvValues[MM_MAX_NUMAXES];
} DESIGNVECTOR, *PDESIGNVECTOR;

typedef struct
{
  ENUMLOGFONTEXA    elfEnumLogfontEx;
  DESIGNVECTOR      elfDesignVector;
} ENUMLOGFONTEXDVA, *PENUMLOGFONTEXDVA;

typedef struct
{
  ENUMLOGFONTEXW    elfEnumLogfontEx;
  DESIGNVECTOR      elfDesignVector;
} ENUMLOGFONTEXDVW, *PENUMLOGFONTEXDVW;

DECL_WINELIB_TYPE_AW(ENUMLOGFONTEXDV)
DECL_WINELIB_TYPE_AW(PENUMLOGFONTEXDV)

640 641 642 643 644 645 646 647 648
/*
 * The FONTSIGNATURE tells which Unicode ranges and which code pages
 * have glyphs in a font.
 *
 * fsUsb  128-bit bitmap. The most significant bits are 10 (magic number).
 *        The remaining 126 bits map the Unicode ISO 10646 subranges
 *        for which the font provides glyphs.
 *
 * fsCsb  64-bit bitmap. The low 32 bits map the Windows codepages for
649
 *        which the font provides glyphs. The high 32 bits are for
650 651
 *        non Windows codepages.
 */
652 653 654 655
typedef struct
{
  DWORD fsUsb[4];
  DWORD fsCsb[2];
656
} FONTSIGNATURE, *PFONTSIGNATURE, *LPFONTSIGNATURE;
657

658
typedef struct
659
{
660 661
  UINT	ciCharset; /* character set */
  UINT	ciACP; /* ANSI code page */
662
  FONTSIGNATURE	fs;
663
} CHARSETINFO, *PCHARSETINFO, *LPCHARSETINFO;
664

665
/* Flags for TranslateCharsetInfo */
666 667 668
#define TCI_SRCCHARSET    1
#define TCI_SRCCODEPAGE   2
#define TCI_SRCFONTSIG    3
669

670 671 672 673 674
typedef struct
{
    DWORD lsUsb[4];
    DWORD lsCsbDefault[2];
    DWORD lsCsbSupported[2];
675
} LOCALESIGNATURE, *PLOCALESIGNATURE, *LPLOCALESIGNATURE;
676 677


678 679 680 681
/* Flags for ModifyWorldTransform */
#define MWT_IDENTITY      1
#define MWT_LEFTMULTIPLY  2
#define MWT_RIGHTMULTIPLY 3
682
#define MWT_MIN           MWT_IDENTITY
683
#define MWT_MAX           MWT_RIGHTMULTIPLY
684

685 686 687 688 689 690 691 692 693 694 695 696 697 698
/* Object Definitions for EnumObjects() */
#define OBJ_PEN             1
#define OBJ_BRUSH           2
#define OBJ_DC              3
#define OBJ_METADC          4
#define OBJ_PAL             5
#define OBJ_FONT            6
#define OBJ_BITMAP          7
#define OBJ_REGION          8
#define OBJ_METAFILE        9
#define OBJ_MEMDC           10
#define OBJ_EXTPEN          11
#define OBJ_ENHMETADC       12
#define OBJ_ENHMETAFILE     13
699
#define OBJ_COLORSPACE      14
700

701
typedef struct tagXFORM
702 703 704 705 706 707 708
{
    FLOAT  eM11;
    FLOAT  eM12;
    FLOAT  eM21;
    FLOAT  eM22;
    FLOAT  eDx;
    FLOAT  eDy;
709
} XFORM, *PXFORM, *LPXFORM;
710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728

  /* lfWeight values */
#define FW_DONTCARE	    0
#define FW_THIN 	    100
#define FW_EXTRALIGHT	    200
#define FW_ULTRALIGHT	    200
#define FW_LIGHT	    300
#define FW_NORMAL	    400
#define FW_REGULAR	    400
#define FW_MEDIUM	    500
#define FW_SEMIBOLD	    600
#define FW_DEMIBOLD	    600
#define FW_BOLD 	    700
#define FW_EXTRABOLD	    800
#define FW_ULTRABOLD	    800
#define FW_HEAVY	    900
#define FW_BLACK	    900

  /* lfCharSet values */
729 730 731 732 733 734 735 736 737 738 739 740
#define ANSI_CHARSET	      (BYTE)0   /* CP1252, ansi-0, iso8859-{1,15} */
#define DEFAULT_CHARSET       (BYTE)1
#define SYMBOL_CHARSET	      (BYTE)2
#define SHIFTJIS_CHARSET      (BYTE)128 /* CP932 */
#define HANGEUL_CHARSET       (BYTE)129 /* CP949, ksc5601.1987-0 */
#define HANGUL_CHARSET        HANGEUL_CHARSET
#define GB2312_CHARSET        (BYTE)134 /* CP936, gb2312.1980-0 */
#define CHINESEBIG5_CHARSET   (BYTE)136 /* CP950, big5.et-0 */
#define GREEK_CHARSET         (BYTE)161	/* CP1253 */
#define TURKISH_CHARSET       (BYTE)162	/* CP1254, -iso8859-9 */
#define HEBREW_CHARSET        (BYTE)177	/* CP1255, -iso8859-8 */
#define ARABIC_CHARSET        (BYTE)178	/* CP1256, -iso8859-6 */
741
#define BALTIC_CHARSET        (BYTE)186	/* CP1257, -iso8859-13 */
742
#define VIETNAMESE_CHARSET    (BYTE)163 /* CP1258 */
743 744 745 746 747
#define RUSSIAN_CHARSET       (BYTE)204	/* CP1251, -iso8859-5 */
#define EE_CHARSET	      (BYTE)238	/* CP1250, -iso8859-2 */
#define EASTEUROPE_CHARSET    EE_CHARSET
#define THAI_CHARSET	      (BYTE)222 /* CP874, iso8859-11, tis620 */
#define JOHAB_CHARSET         (BYTE)130 /* korean (johab) CP1361 */
748
#define MAC_CHARSET           (BYTE)77
749
#define OEM_CHARSET	      (BYTE)255
750 751 752
/* I don't know if the values of *_CHARSET macros are defined in Windows
 * or if we can choose them as we want. -- srtxg
 */
753 754 755 756 757
#define VISCII_CHARSET        (BYTE)240 /* viscii1.1-1 */
#define TCVN_CHARSET          (BYTE)241 /* tcvn-0 */
#define KOI8_CHARSET          (BYTE)242 /* koi8-{r,u,ru} */
#define ISO3_CHARSET          (BYTE)243 /* iso8859-3 */
#define ISO4_CHARSET          (BYTE)244 /* iso8859-4 */
758 759
#define ISO10_CHARSET         (BYTE)245 /* iso8859-10 */
#define CELTIC_CHARSET        (BYTE)246 /* iso8859-14 */
760

761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776
#define FS_LATIN1              __MSABI_LONG(0x00000001)
#define FS_LATIN2              __MSABI_LONG(0x00000002)
#define FS_CYRILLIC            __MSABI_LONG(0x00000004)
#define FS_GREEK               __MSABI_LONG(0x00000008)
#define FS_TURKISH             __MSABI_LONG(0x00000010)
#define FS_HEBREW              __MSABI_LONG(0x00000020)
#define FS_ARABIC              __MSABI_LONG(0x00000040)
#define FS_BALTIC              __MSABI_LONG(0x00000080)
#define FS_VIETNAMESE          __MSABI_LONG(0x00000100)
#define FS_THAI                __MSABI_LONG(0x00010000)
#define FS_JISJAPAN            __MSABI_LONG(0x00020000)
#define FS_CHINESESIMP         __MSABI_LONG(0x00040000)
#define FS_WANSUNG             __MSABI_LONG(0x00080000)
#define FS_CHINESETRAD         __MSABI_LONG(0x00100000)
#define FS_JOHAB               __MSABI_LONG(0x00200000)
#define FS_SYMBOL              __MSABI_LONG(0x80000000)
777

778 779 780 781 782 783 784 785 786
  /* lfOutPrecision values */
#define OUT_DEFAULT_PRECIS	0
#define OUT_STRING_PRECIS	1
#define OUT_CHARACTER_PRECIS	2
#define OUT_STROKE_PRECIS	3
#define OUT_TT_PRECIS		4
#define OUT_DEVICE_PRECIS	5
#define OUT_RASTER_PRECIS	6
#define OUT_TT_ONLY_PRECIS	7
787
#define OUT_OUTLINE_PRECIS      8
788 789 790 791 792 793 794 795 796 797 798

  /* lfClipPrecision values */
#define CLIP_DEFAULT_PRECIS     0x00
#define CLIP_CHARACTER_PRECIS   0x01
#define CLIP_STROKE_PRECIS      0x02
#define CLIP_MASK		0x0F
#define CLIP_LH_ANGLES		0x10
#define CLIP_TT_ALWAYS		0x20
#define CLIP_EMBEDDED		0x80

  /* lfQuality values */
799 800 801 802 803
#define DEFAULT_QUALITY        0
#define DRAFT_QUALITY          1
#define PROOF_QUALITY          2
#define NONANTIALIASED_QUALITY 3
#define ANTIALIASED_QUALITY    4
804 805
#define CLEARTYPE_QUALITY          5
#define CLEARTYPE_NATURAL_QUALITY  6
806 807 808 809 810

  /* lfPitchAndFamily pitch values */
#define DEFAULT_PITCH       0x00
#define FIXED_PITCH         0x01
#define VARIABLE_PITCH      0x02
811 812
#define MONO_FONT           0x08

813 814 815 816 817 818 819
#define FF_DONTCARE         0x00
#define FF_ROMAN            0x10
#define FF_SWISS            0x20
#define FF_MODERN           0x30
#define FF_SCRIPT           0x40
#define FF_DECORATIVE       0x50

820 821 822
#ifndef _TEXTMETRIC_DEFINED
#define _TEXTMETRIC_DEFINED

823
typedef struct tagTEXTMETRICA
824
{
825 826 827 828 829 830 831 832 833 834 835
    LONG      tmHeight;
    LONG      tmAscent;
    LONG      tmDescent;
    LONG      tmInternalLeading;
    LONG      tmExternalLeading;
    LONG      tmAveCharWidth;
    LONG      tmMaxCharWidth;
    LONG      tmWeight;
    LONG      tmOverhang;
    LONG      tmDigitizedAspectX;
    LONG      tmDigitizedAspectY;
836 837 838 839 840 841 842 843 844
    BYTE      tmFirstChar;
    BYTE      tmLastChar;
    BYTE      tmDefaultChar;
    BYTE      tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
845
} TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA;
846

847
typedef struct tagTEXTMETRICW
848
{
849 850 851 852 853 854 855 856 857 858 859
    LONG      tmHeight;
    LONG      tmAscent;
    LONG      tmDescent;
    LONG      tmInternalLeading;
    LONG      tmExternalLeading;
    LONG      tmAveCharWidth;
    LONG      tmMaxCharWidth;
    LONG      tmWeight;
    LONG      tmOverhang;
    LONG      tmDigitizedAspectX;
    LONG      tmDigitizedAspectY;
860 861 862 863 864 865 866 867 868
    WCHAR     tmFirstChar;
    WCHAR     tmLastChar;
    WCHAR     tmDefaultChar;
    WCHAR     tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
869
} TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW;
870 871

DECL_WINELIB_TYPE_AW(TEXTMETRIC)
872
DECL_WINELIB_TYPE_AW(PTEXTMETRIC)
873
DECL_WINELIB_TYPE_AW(LPTEXTMETRIC)
874
#endif /* _TEXTMETRIC_DEFINED */
875 876 877 878 879 880 881 882 883 884 885 886 887 888


typedef struct tagPANOSE
{
    BYTE bFamilyType;
    BYTE bSerifStyle;
    BYTE bWeight;
    BYTE bProportion;
    BYTE bContrast;
    BYTE bStrokeVariation;
    BYTE bArmStyle;
    BYTE bLetterform;
    BYTE bMidline;
    BYTE bXHeight;
889
} PANOSE, *LPPANOSE;
890

891 892
#define PANOSE_COUNT                   10

893
#define PAN_FAMILYTYPE_INDEX           0
894 895 896 897 898 899 900 901 902 903
#define PAN_SERIFSTYLE_INDEX           1
#define PAN_WEIGTH_INDEX               2
#define PAN_PROPORTION_INDEX           3
#define PAN_CONTRAST_INDEX             4
#define PAN_STROKEVARIATION_INDEX      5
#define PAN_ARMSTYLE_INDEX             6
#define PAN_LETTERFORM_INDEX           7
#define PAN_MIDLINE_INDEX              8
#define PAN_XHEIGHT_INDEX              9

904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024
#define PAN_CULTURE_LATIN              0

#define PAN_ANY                        0
#define PAN_NO_FIT                     1

#define PAN_FAMILY_TEXT_DISPLAY        2
#define PAN_FAMILY_SCRIPT              3
#define PAN_FAMILY_DECORATIVE          4
#define PAN_FAMILY_PICTORIAL           5

#define PAN_SERIF_COVE                 2
#define PAN_SERIF_OBTUSE_COVE          3
#define PAN_SERIF_SQUARE_COVE          4
#define PAN_SERIF_OBTUSE_SQUARE_COVE   5
#define PAN_SERIF_SQUARE               6
#define PAN_SERIF_THIN                 7
#define PAN_SERIF_BONE                 8
#define PAN_SERIF_EXAGGERATED          9
#define PAN_SERIF_TRIANGLE             10
#define PAN_SERIF_NORMAL_SANS          11
#define PAN_SERIF_OBTUSE_SANS          12
#define PAN_SERIF_PERP_SANS            13
#define PAN_SERIF_FLARED               14
#define PAN_SERIF_ROUNDED              15

#define PAN_WEIGHT_VERY_LIGHT          2
#define PAN_WEIGHT_LIGHT               3
#define PAN_WEIGHT_THIN                4
#define PAN_WEIGHT_BOOK                5
#define PAN_WEIGHT_MEDIUM              6
#define PAN_WEIGHT_DEMI                7
#define PAN_WEIGHT_BOLD                8
#define PAN_WEIGHT_HEAVY               9
#define PAN_WEIGHT_BLACK               10
#define PAN_WEIGHT_NORD                11

#define PAN_PROP_OLD_STYLE             2
#define PAN_PROP_MODERN                3
#define PAN_PROP_EVEN_WIDTH            4
#define PAN_PROP_EXPANDED              5
#define PAN_PROP_CONDENSED             6
#define PAN_PROP_VERY_EXPANDED         7
#define PAN_PROP_VERY_CONDENSED        8
#define PAN_PROP_MONOSPACED            9

#define PAN_CONTRAST_NONE              2
#define PAN_CONTRAST_VERY_LOW          3
#define PAN_CONTRAST_LOW               4
#define PAN_CONTRAST_MEDIUM_LOW        5
#define PAN_CONTRAST_MEDIUM            6
#define PAN_CONTRAST_MEDIUM_HIGH       7
#define PAN_CONTRAST_HIGH              8
#define PAN_CONTRAST_VERY_HIGH         9

#define PAN_STROKE_GRADUAL_DIAG        2
#define PAN_STROKE_GRADUAL_TRAN        3
#define PAN_STROKE_GRADUAL_VERT        4
#define PAN_STROKE_GRADUAL_HORZ        5
#define PAN_STROKE_RAPID_VERT          6
#define PAN_STROKE_RAPID_HORZ          7
#define PAN_STROKE_INSTANT_VERT        8

#define PAN_STRAIGHT_ARMS_HORZ         2
#define PAN_STRAIGHT_ARMS_WEDGE        3
#define PAN_STRAIGHT_ARMS_VERT         4
#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5
#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6
#define PAN_BENT_ARMS_HORZ             7
#define PAN_BENT_ARMS_WEDGE            8
#define PAN_BENT_ARMS_VERT             9
#define PAN_BENT_ARMS_SINGLE_SERIF     10
#define PAN_BENT_ARMS_DOUBLE_SERIF     11

#define PAN_LETT_NORMAL_COMPACT        2
#define PAN_LETT_NORMAL_WEIGHTED       3
#define PAN_LETT_NORMAL_BOXED          4
#define PAN_LETT_NORMAL_FLATTENED      5
#define PAN_LETT_NORMAL_ROUNDED        6
#define PAN_LETT_NORMAL_OFF_CENTER     7
#define PAN_LETT_NORMAL_SQUARE         8
#define PAN_LETT_OBLIQUE_COMPACT       9
#define PAN_LETT_OBLIQUE_WEIGHTED      10
#define PAN_LETT_OBLIQUE_BOXED         11
#define PAN_LETT_OBLIQUE_FLATTENED     12
#define PAN_LETT_OBLIQUE_ROUNDED       13
#define PAN_LETT_OBLIQUE_OFF_CENTER    14
#define PAN_LETT_OBLIQUE_SQUARE        15

#define PAN_MIDLINE_STANDARD_TRIMMED   2
#define PAN_MIDLINE_STANDARD_POINTED   3
#define PAN_MIDLINE_STANDARD_SERIFED   4
#define PAN_MIDLINE_HIGH_TRIMMED       5
#define PAN_MIDLINE_HIGH_POINTED       6
#define PAN_MIDLINE_HIGH_SERIFED       7
#define PAN_MIDLINE_CONSTANT_TRIMMED   8
#define PAN_MIDLINE_CONSTANT_POINTED   9
#define PAN_MIDLINE_CONSTANT_SERIFED   10
#define PAN_MIDLINE_LOW_TRIMMED        11
#define PAN_MIDLINE_LOW_POINTED        12
#define PAN_MIDLINE_LOW_SERIFED        13

#define PAN_XHEIGHT_CONSTANT_SMALL     2
#define PAN_XHEIGHT_CONSTANT_STANDARD  3
#define PAN_XHEIGHT_CONSTANT_LARGE     4
#define PAN_XHEIGHT_DUCKING_SMALL      5
#define PAN_XHEIGHT_DUCKING_STANDARD   6
#define PAN_XHEIGHT_DUCKING_LARGE      7

#define ELF_VENDOR_SIZE 4
typedef struct
{
  LOGFONTA    elfLogFont;
  BYTE        elfFullName[LF_FULLFACESIZE];
  BYTE        elfStyle[LF_FACESIZE];
  DWORD       elfVersion;
  DWORD       elfStyleSize;
  DWORD       elfMatch;
  DWORD       elfReserved;
  BYTE        elfVendorId[ELF_VENDOR_SIZE];
  DWORD       elfCulture;
  PANOSE      elfPanose;
1025
} EXTLOGFONTA, *PEXTLOGFONTA, *LPEXTLOGFONTA;
1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038

typedef struct
{
  LOGFONTW    elfLogFont;
  WCHAR       elfFullName[LF_FULLFACESIZE];
  WCHAR       elfStyle[LF_FACESIZE];
  DWORD       elfVersion;
  DWORD       elfStyleSize;
  DWORD       elfMatch;
  DWORD       elfReserved;
  BYTE        elfVendorId[ELF_VENDOR_SIZE];
  DWORD       elfCulture;
  PANOSE      elfPanose;
1039
} EXTLOGFONTW, *PEXTLOGFONTW, *LPEXTLOGFONTW;
1040 1041 1042

DECL_WINELIB_TYPE_AW(EXTLOGFONT)
DECL_WINELIB_TYPE_AW(PEXTLOGFONT)
1043
DECL_WINELIB_TYPE_AW(LPEXTLOGFONT)
1044

1045 1046 1047
#define ELF_VERSION         0
#define ELF_CULTURE_LATIN   0

1048
typedef struct _OUTLINETEXTMETRICA
1049
{
1050 1051
    UINT          otmSize;
    TEXTMETRICA   otmTextMetrics;
1052
    BYTE            otmFiller;
1053
    PANOSE          otmPanoseNumber;
1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077
    UINT          otmfsSelection;
    UINT          otmfsType;
    INT           otmsCharSlopeRise;
    INT           otmsCharSlopeRun;
    INT           otmItalicAngle;
    UINT          otmEMSquare;
    INT           otmAscent;
    INT           otmDescent;
    UINT          otmLineGap;
    UINT          otmsCapEmHeight;
    UINT          otmsXHeight;
    RECT          otmrcFontBox;
    INT           otmMacAscent;
    INT           otmMacDescent;
    UINT          otmMacLineGap;
    UINT          otmusMinimumPPEM;
    POINT         otmptSubscriptSize;
    POINT         otmptSubscriptOffset;
    POINT         otmptSuperscriptSize;
    POINT         otmptSuperscriptOffset;
    UINT          otmsStrikeoutSize;
    INT           otmsStrikeoutPosition;
    INT           otmsUnderscoreSize;
    INT           otmsUnderscorePosition;
1078 1079 1080 1081
    LPSTR           otmpFamilyName;
    LPSTR           otmpFaceName;
    LPSTR           otmpStyleName;
    LPSTR           otmpFullName;
1082
} OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, *LPOUTLINETEXTMETRICA;
1083

1084
typedef struct _OUTLINETEXTMETRICW
1085
{
1086 1087
    UINT          otmSize;
    TEXTMETRICW   otmTextMetrics;
1088
    BYTE            otmFiller;
1089
    PANOSE          otmPanoseNumber;
1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113
    UINT          otmfsSelection;
    UINT          otmfsType;
    INT           otmsCharSlopeRise;
    INT           otmsCharSlopeRun;
    INT           otmItalicAngle;
    UINT          otmEMSquare;
    INT           otmAscent;
    INT           otmDescent;
    UINT          otmLineGap;
    UINT          otmsCapEmHeight;
    UINT          otmsXHeight;
    RECT          otmrcFontBox;
    INT           otmMacAscent;
    INT           otmMacDescent;
    UINT          otmMacLineGap;
    UINT          otmusMinimumPPEM;
    POINT         otmptSubscriptSize;
    POINT         otmptSubscriptOffset;
    POINT         otmptSuperscriptSize;
    POINT         otmptSuperscriptOffset;
    UINT          otmsStrikeoutSize;
    INT           otmsStrikeoutPosition;
    INT           otmsUnderscoreSize;
    INT           otmsUnderscorePosition;
1114 1115 1116 1117
    LPSTR           otmpFamilyName;
    LPSTR           otmpFaceName;
    LPSTR           otmpStyleName;
    LPSTR           otmpFullName;
1118
} OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, *LPOUTLINETEXTMETRICW;
1119 1120

DECL_WINELIB_TYPE_AW(OUTLINETEXTMETRIC)
1121
DECL_WINELIB_TYPE_AW(POUTLINETEXTMETRIC)
1122 1123
DECL_WINELIB_TYPE_AW(LPOUTLINETEXTMETRIC)

1124 1125 1126 1127 1128 1129 1130 1131 1132
typedef struct
{
    INT       x;
    INT       y;
    UINT      n;
    LPCSTR    lpstr;
    UINT      uiFlags;
    RECT      rcl;
    INT       *pdx;
1133
} POLYTEXTA, *PPOLYTEXTA, *LPPOLYTEXTA;
1134 1135 1136 1137 1138 1139 1140 1141 1142 1143

typedef struct
{
    INT       x;
    INT       y;
    UINT      n;
    LPCWSTR   lpstr;
    UINT      uiFlags;
    RECT      rcl;
    INT       *pdx;
1144
} POLYTEXTW, *PPOLYTEXTW, *LPPOLYTEXTW;
1145 1146 1147

DECL_WINELIB_TYPE_AW(POLYTEXT)
DECL_WINELIB_TYPE_AW(PPOLYTEXT)
1148
DECL_WINELIB_TYPE_AW(LPPOLYTEXT)
1149 1150 1151


/* ntmFlags field flags */
1152 1153 1154
#define NTM_REGULAR     __MSABI_LONG(0x00000040)
#define NTM_BOLD        __MSABI_LONG(0x00000020)
#define NTM_ITALIC      __MSABI_LONG(0x00000001)
1155

1156 1157 1158 1159 1160 1161 1162 1163
#define NTM_NONNEGATIVE_AC  0x00010000
#define NTM_PS_OPENTYPE     0x00020000
#define NTM_TT_OPENTYPE     0x00040000
#define NTM_MULTIPLEMASTER  0x00080000
#define NTM_TYPE1           0x00100000
#define NTM_DSIG            0x00200000


1164 1165
typedef struct
{
1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176
    LONG      tmHeight;
    LONG      tmAscent;
    LONG      tmDescent;
    LONG      tmInternalLeading;
    LONG      tmExternalLeading;
    LONG      tmAveCharWidth;
    LONG      tmMaxCharWidth;
    LONG      tmWeight;
    LONG      tmOverhang;
    LONG      tmDigitizedAspectX;
    LONG      tmDigitizedAspectY;
1177 1178 1179 1180 1181 1182 1183 1184 1185 1186
    BYTE      tmFirstChar;
    BYTE      tmLastChar;
    BYTE      tmDefaultChar;
    BYTE      tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
    DWORD     ntmFlags;
1187 1188 1189
    UINT    ntmSizeEM;
    UINT    ntmCellHeight;
    UINT    ntmAvgWidth;
1190
} NEWTEXTMETRICA, *PNEWTEXTMETRICA, *LPNEWTEXTMETRICA;
1191 1192 1193

typedef struct
{
1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204
    LONG      tmHeight;
    LONG      tmAscent;
    LONG      tmDescent;
    LONG      tmInternalLeading;
    LONG      tmExternalLeading;
    LONG      tmAveCharWidth;
    LONG      tmMaxCharWidth;
    LONG      tmWeight;
    LONG      tmOverhang;
    LONG      tmDigitizedAspectX;
    LONG      tmDigitizedAspectY;
1205 1206 1207 1208 1209 1210 1211 1212 1213 1214
    WCHAR     tmFirstChar;
    WCHAR     tmLastChar;
    WCHAR     tmDefaultChar;
    WCHAR     tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
    DWORD     ntmFlags;
1215 1216 1217
    UINT      ntmSizeEM;
    UINT      ntmCellHeight;
    UINT      ntmAvgWidth;
1218
} NEWTEXTMETRICW, *PNEWTEXTMETRICW, *LPNEWTEXTMETRICW;
1219 1220

DECL_WINELIB_TYPE_AW(NEWTEXTMETRIC)
1221
DECL_WINELIB_TYPE_AW(PNEWTEXTMETRIC)
1222 1223 1224 1225
DECL_WINELIB_TYPE_AW(LPNEWTEXTMETRIC)

typedef struct
{
1226 1227
    NEWTEXTMETRICA	ntmTm;
    FONTSIGNATURE       ntmFontSig;
1228
} NEWTEXTMETRICEXA;
1229 1230 1231

typedef struct
{
1232 1233
    NEWTEXTMETRICW	ntmTm;
    FONTSIGNATURE       ntmFontSig;
1234
} NEWTEXTMETRICEXW;
1235 1236 1237

DECL_WINELIB_TYPE_AW(NEWTEXTMETRICEX)

1238
#if defined(STRICT)
1239 1240 1241 1242 1243 1244 1245 1246

#if !defined(NOTEXTMETRIC)
typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA *, const TEXTMETRICA *, DWORD, LPARAM);
typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW *, const TEXTMETRICW *, DWORD, LPARAM);
#else /* !defined(NOTEXTMETRIC) */
typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA *, const VOID *, DWORD, LPARAM);
typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW *, const VOID *, DWORD, LPARAM);
#endif /* !defined(NOTEXTMETRIC) */
1247 1248
DECL_WINELIB_TYPE_AW(OLDFONTENUMPROC)

1249 1250 1251 1252
typedef OLDFONTENUMPROCA FONTENUMPROCA;
typedef OLDFONTENUMPROCW FONTENUMPROCW;
DECL_WINELIB_TYPE_AW(FONTENUMPROC)

1253 1254
typedef INT (CALLBACK *GOBJENUMPROC)(LPVOID, LPARAM);
typedef VOID (CALLBACK *LINEDDAPROC)(INT, INT, LPARAM);
1255

1256
#else /* defined(STRICT) */
1257 1258 1259 1260 1261 1262 1263 1264 1265 1266

typedef FARPROC OLDFONTENUMPROC;

typedef FARPROC FONTENUMPROCA;
typedef FARPROC FONTENUMPROCW;
DECL_WINELIB_TYPE_AW(FONTENUMPROC)

typedef FARPROC GOBJENUMPROC;
typedef FARPROC LINEDDAPROC;

1267
#endif /* defined(STRICT) */
1268

1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283
  /* tmPitchAndFamily bits */
#define TMPF_FIXED_PITCH    1		/* means variable pitch */
#define TMPF_VECTOR	    2
#define TMPF_TRUETYPE	    4
#define TMPF_DEVICE	    8

  /* Text alignment */
#define TA_NOUPDATECP       0x00
#define TA_UPDATECP         0x01
#define TA_LEFT             0x00
#define TA_RIGHT            0x02
#define TA_CENTER           0x06
#define TA_TOP              0x00
#define TA_BOTTOM           0x08
#define TA_BASELINE         0x18
1284 1285
#define TA_RTLREADING        0x100
#define TA_MASK             TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING
1286 1287 1288 1289 1290 1291 1292 1293

#define VTA_BASELINE        TA_BASELINE
#define VTA_LEFT            TA_BOTTOM
#define VTA_RIGHT           TA_TOP
#define VTA_CENTER          TA_CENTER
#define VTA_BOTTOM          TA_RIGHT
#define VTA_TOP             TA_LEFT

1294 1295

  /* ExtTextOut() parameters */
1296 1297 1298 1299
#define ETO_GRAYED          0x0001
#define ETO_OPAQUE          0x0002
#define ETO_CLIPPED         0x0004
#define ETO_GLYPH_INDEX     0x0010
1300
#define ETO_RTLREADING      0x0080
1301 1302
#define ETO_NUMERICSLOCAL   0x0400
#define ETO_NUMERICSLATIN   0x0800
1303
#define ETO_IGNORELANGUAGE  0x1000
1304
#define ETO_PDY             0x2000
1305

1306
#define ASPECT_FILTERING    0x0001
1307

1308 1309 1310
  /* for GetGlyphIndices() */
#define GGI_MARK_NONEXISTING_GLYPHS  0x0001

1311 1312
typedef struct
{
1313 1314 1315
    UINT	gmBlackBoxX;
    UINT	gmBlackBoxY;
    POINT	gmptGlyphOrigin;
1316 1317
    SHORT	gmCellIncX;
    SHORT	gmCellIncY;
1318
} GLYPHMETRICS, *LPGLYPHMETRICS;
1319 1320 1321 1322 1323


#define GGO_METRICS         0
#define GGO_BITMAP          1
#define GGO_NATIVE          2
1324
#define GGO_BEZIER          3
1325 1326 1327 1328
#define GGO_GRAY2_BITMAP    4
#define GGO_GRAY4_BITMAP    5
#define GGO_GRAY8_BITMAP    6
#define GGO_GLYPH_INDEX     0x80
1329
#define GGO_UNHINTED        0x100
1330

1331
#ifdef __WINESRC__
1332 1333 1334 1335 1336
#define WINE_GGO_GRAY16_BITMAP 0x10
#define WINE_GGO_HRGB_BITMAP   0x11
#define WINE_GGO_HBGR_BITMAP   0x12
#define WINE_GGO_VRGB_BITMAP   0x13
#define WINE_GGO_VBGR_BITMAP   0x14
1337 1338
#endif

1339 1340
typedef struct
{
1341 1342
    WORD    fract;
    SHORT   value;
1343 1344
} FIXED;

1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364
typedef struct tagPOINTFX
{
	FIXED x;
	FIXED y;
} POINTFX, *LPPOINTFX;

typedef struct tagTTPOLYCURVE
{
	WORD wType;
	WORD cpfx;
	POINTFX apfx[1];
} TTPOLYCURVE, *LPTTPOLYCURVE;

typedef struct tagTTPOLYGONHEADER
{
	DWORD cb;
	DWORD dwType;
	POINTFX pfxStart;
} TTPOLYGONHEADER, *LPTTPOLYGONHEADER;

1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375
typedef struct
{
     FIXED  eM11;
     FIXED  eM12;
     FIXED  eM21;
     FIXED  eM22;
} MAT2, *LPMAT2;

  /* for GetCharABCWidths() */
typedef struct
{
1376 1377 1378
    INT   abcA;
    UINT  abcB;
    INT   abcC;
1379
} ABC, *PABC, *LPABC;
1380 1381 1382


  /* for GetCharacterPlacement () */
1383 1384 1385 1386 1387 1388 1389 1390 1391 1392

#define GCP_DBCS          0x0001
#define GCP_REORDER       0x0002
#define GCP_USEKERNING    0x0008
#define GCP_GLYPHSHAPE    0x0010
#define GCP_LIGATE        0x0020
#define GCP_DIACRITIC     0x0100
#define GCP_KASHIDA       0x0200
#define GCP_ERROR         0x8000
#define FLI_MASK          0x103b
1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403
#define GCP_JUSTIFY         __MSABI_LONG(0x00010000)
#define FLI_GLYPHS          __MSABI_LONG(0x00040000)
#define GCP_CLASSIN         __MSABI_LONG(0x00080000)
#define GCP_MAXEXTENT       __MSABI_LONG(0x00100000)
#define GCP_JUSTIFYIN       __MSABI_LONG(0x00200000)
#define GCP_DISPLAYZWG      __MSABI_LONG(0x00400000)
#define GCP_SYMSWAPOFF      __MSABI_LONG(0x00800000)
#define GCP_NUMERICOVERRIDE __MSABI_LONG(0x01000000)
#define GCP_NEUTRALOVERRIDE __MSABI_LONG(0x02000000)
#define GCP_NUMERICSLATIN   __MSABI_LONG(0x04000000)
#define GCP_NUMERICSLOCAL   __MSABI_LONG(0x08000000)
1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423

#define GCPCLASS_LATIN                     1
#define GCPCLASS_HEBREW                    2
#define GCPCLASS_ARABIC                    3
#define GCPCLASS_NEUTRAL                   4
#define GCPCLASS_LOCALNUMBER               5
#define GCPCLASS_LATINNUMBER               6
#define GCPCLASS_LATINNUMERICTERMINATOR    7
#define GCPCLASS_LATINNUMERICSEPARATOR     8
#define GCPCLASS_NUMERICSEPARATOR          9
#define GCPCLASS_PREBOUNDLTR               0x80
#define GCPCLASS_PREBOUNDRLT               0x40
#define GCPCLASS_POSTBOUNDLTR              0x20
#define GCPCLASS_POSTBOUNDRTL              0x10

#define GCPGLYPH_LINKBEFORE                0x8000
#define GCPGLYPH_LINKAFTER                 0x4000


typedef struct tagGCP_RESULTSA{
1424 1425
    DWORD  lStructSize;
    LPSTR  lpOutString;
1426 1427 1428
    UINT   *lpOrder;
    INT    *lpDx;
    INT    *lpCaretPos;
1429
    LPSTR  lpClass;
1430 1431 1432
    LPWSTR lpGlyphs;
    UINT   nGlyphs;
    UINT   nMaxFit;
1433
} GCP_RESULTSA, *LPGCP_RESULTSA;
1434

1435
typedef struct tagGCP_RESULTSW
1436 1437 1438
{
    DWORD  lStructSize;
    LPWSTR lpOutString;
1439 1440 1441
    UINT   *lpOrder;
    INT    *lpDx;
    INT    *lpCaretPos;
1442
    LPSTR  lpClass;
1443 1444 1445
    LPWSTR lpGlyphs;
    UINT   nGlyphs;
    UINT   nMaxFit;
1446
} GCP_RESULTSW, *LPGCP_RESULTSW;
1447 1448

DECL_WINELIB_TYPE_AW(GCP_RESULTS)
1449
DECL_WINELIB_TYPE_AW(LPGCP_RESULTS)
1450 1451 1452 1453

  /* Rasterizer status */
typedef struct
{
1454 1455 1456
    SHORT nSize;
    SHORT wFlags;
    SHORT nLanguageID;
1457 1458 1459 1460 1461
} RASTERIZER_STATUS, *LPRASTERIZER_STATUS;

#define TT_AVAILABLE        0x0001
#define TT_ENABLED          0x0002

1462
#ifdef __WINESRC__
1463
#define WINE_TT_SUBPIXEL_RENDERING_ENABLED 0x4000
1464 1465 1466
#define WINE_TT_HINTER_ENABLED 0x8000
#endif

1467 1468
#define TT_PRIM_LINE    1
#define TT_PRIM_QSPLINE 2
1469
#define TT_PRIM_CSPLINE 3
1470
#define TT_POLYGON_TYPE 24
1471

1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512
  /* OpenGL defines */
typedef struct {
  FLOAT      x;
  FLOAT      y;
} POINTFLOAT, *PPOINTFLOAT;

typedef struct {
  FLOAT      gmfBlackBoxX;
  FLOAT      gmfBlackBoxY;
  POINTFLOAT gmfptGlyphOrigin;
  FLOAT      gmfCellIncX;
  FLOAT      gmfCellIncY;
} GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;

typedef struct {
  WORD  nSize;
  WORD  nVersion;
  DWORD dwFlags;
  BYTE  iPixelType;
  BYTE  cColorBits;
  BYTE  cRedBits;
  BYTE  cRedShift;
  BYTE  cGreenBits;
  BYTE  cGreenShift;
  BYTE  cBlueBits;
  BYTE  cBlueShift;
  BYTE  cAlphaBits;
  BYTE  cAlphaShift;
  BYTE  cAccumBits;
  BYTE  cAccumRedBits;
  BYTE  cAccumGreenBits;
  BYTE  cAccumBlueBits;
  BYTE  cAccumAlphaBits;
  BYTE  cDepthBits;
  BYTE  cStencilBits;
  BYTE  cAuxBuffers;
  BYTE  iLayerPlane;
  BYTE  bReserved;
  COLORREF crTransparent;
} LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;

1513
/* Get/SetSystemPaletteUse() values */
1514 1515 1516 1517 1518
#define SYSPAL_ERROR        0
#define SYSPAL_STATIC       1
#define SYSPAL_NOSTATIC     2
#define SYSPAL_NOSTATIC256  3
    
1519 1520
#ifndef _PALETTEENTRY_DEFINED
#define _PALETTEENTRY_DEFINED
1521 1522 1523
typedef struct tagPALETTEENTRY
{
	BYTE peRed, peGreen, peBlue, peFlags;
1524
} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
1525
#endif
1526 1527 1528 1529 1530 1531

/* Logical palette entry flags */
#define PC_RESERVED     0x01
#define PC_EXPLICIT     0x02
#define PC_NOCOLLAPSE   0x04

1532 1533
#ifndef _LOGPALETTE_DEFINED
#define _LOGPALETTE_DEFINED
1534
typedef struct tagLOGPALETTE
1535
{
1536 1537
    WORD           palVersion;
    WORD           palNumEntries;
1538
    PALETTEENTRY   palPalEntry[1];
1539
} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE, *NPLOGPALETTE;
1540
#endif
1541 1542 1543 1544 1545

  /* Pens */

typedef struct
{
1546
    UINT     lopnStyle;
1547 1548
    POINT    lopnWidth;
    COLORREF lopnColor;
1549
} LOGPEN, *LPLOGPEN;
1550 1551


1552 1553
typedef struct tagEXTLOGPEN
{
1554 1555 1556 1557
    DWORD    elpPenStyle;
    DWORD    elpWidth;
    UINT     elpBrushStyle;
    COLORREF elpColor;
1558
    ULONG_PTR elpHatch;
1559 1560
    DWORD elpNumEntries;
    DWORD elpStyleEntry[1];
1561 1562
} EXTLOGPEN, *PEXTLOGPEN, *NPEXTLOGPEN, *LPEXTLOGPEN;

1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593
#define PS_SOLID         0x00000000
#define PS_DASH          0x00000001
#define PS_DOT           0x00000002
#define PS_DASHDOT       0x00000003
#define PS_DASHDOTDOT    0x00000004
#define PS_NULL          0x00000005
#define PS_INSIDEFRAME   0x00000006
#define PS_USERSTYLE     0x00000007
#define PS_ALTERNATE     0x00000008
#define PS_STYLE_MASK    0x0000000f

#define PS_ENDCAP_ROUND  0x00000000
#define PS_ENDCAP_SQUARE 0x00000100
#define PS_ENDCAP_FLAT   0x00000200
#define PS_ENDCAP_MASK   0x00000f00

#define PS_JOIN_ROUND    0x00000000
#define PS_JOIN_BEVEL    0x00001000
#define PS_JOIN_MITER    0x00002000
#define PS_JOIN_MASK     0x0000f000

#define PS_COSMETIC      0x00000000
#define PS_GEOMETRIC     0x00010000
#define PS_TYPE_MASK     0x000f0000

  /* Regions */

#define ERROR             0
#define NULLREGION        1
#define SIMPLEREGION      2
#define COMPLEXREGION     3
1594
#define RGN_ERROR         ERROR
1595 1596 1597 1598 1599 1600

#define RGN_AND           1
#define RGN_OR            2
#define RGN_XOR           3
#define RGN_DIFF          4
#define RGN_COPY          5
1601 1602
#define RGN_MIN           RGN_AND
#define RGN_MAX           RGN_COPY
1603 1604 1605

#define SYSRGN            4

1606 1607 1608 1609 1610
  /* Device contexts */

  /* Polygon modes */
#define ALTERNATE         1
#define WINDING           2
1611
#define POLYFILL_LAST     2
1612

1613 1614
/* Background modes */
/* Apparently some broken svr4 includes define TRANSPARENT */
1615 1616 1617
#undef TRANSPARENT
#define TRANSPARENT       1
#define OPAQUE            2
1618
#define BKMODE_LAST       2
1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638

  /* Graphics Modes */
#define GM_COMPATIBLE     1
#define GM_ADVANCED       2
#define GM_LAST           2

  /* Arc direction modes */
#define AD_COUNTERCLOCKWISE 1
#define AD_CLOCKWISE        2

  /* Map modes */
#define MM_TEXT		  1
#define MM_LOMETRIC	  2
#define MM_HIMETRIC	  3
#define MM_LOENGLISH	  4
#define MM_HIENGLISH	  5
#define MM_TWIPS	  6
#define MM_ISOTROPIC	  7
#define MM_ANISOTROPIC	  8

1639 1640 1641 1642
#define MM_MIN            MM_TEXT
#define MM_MAX            MM_ANISOTROPIC
#define MM_MAX_FIXEDSCALE MM_TWIPS

1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676
  /* Coordinate modes */
#define ABSOLUTE          1
#define RELATIVE          2

  /* Flood fill modes */
#define FLOODFILLBORDER   0
#define FLOODFILLSURFACE  1

  /* Device parameters for GetDeviceCaps() */
#define DRIVERVERSION     0
#define TECHNOLOGY        2
#define HORZSIZE          4
#define VERTSIZE          6
#define HORZRES           8
#define VERTRES           10
#define BITSPIXEL         12
#define PLANES            14
#define NUMBRUSHES        16
#define NUMPENS           18
#define NUMMARKERS        20
#define NUMFONTS          22
#define NUMCOLORS         24
#define PDEVICESIZE       26
#define CURVECAPS         28
#define LINECAPS          30
#define POLYGONALCAPS     32
#define TEXTCAPS          34
#define CLIPCAPS          36
#define RASTERCAPS        38
#define ASPECTX           40
#define ASPECTY           42
#define ASPECTXY          44
#define LOGPIXELSX        88
#define LOGPIXELSY        90
1677
#define CAPS1             94
1678 1679 1680 1681
#define SIZEPALETTE       104
#define NUMRESERVED       106
#define COLORRES          108

1682 1683 1684 1685 1686 1687 1688 1689 1690
#define PHYSICALWIDTH     110
#define PHYSICALHEIGHT    111
#define PHYSICALOFFSETX   112
#define PHYSICALOFFSETY   113
#define SCALINGFACTORX    114
#define SCALINGFACTORY    115
#define VREFRESH          116
#define DESKTOPVERTRES    117
#define DESKTOPHORZRES    118
1691
#define BLTALIGNMENT      119
1692 1693
#define SHADEBLENDCAPS    120
#define COLORMGMTCAPS     121
1694

1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730
/* TECHNOLOGY */
#define DT_PLOTTER        0
#define DT_RASDISPLAY     1
#define DT_RASPRINTER     2
#define DT_RASCAMERA      3
#define DT_CHARSTREAM     4
#define DT_METAFILE       5
#define DT_DISPFILE       6

/* CURVECAPS */
#define CC_NONE           0x0000
#define CC_CIRCLES        0x0001
#define CC_PIE            0x0002
#define CC_CHORD          0x0004
#define CC_ELLIPSES       0x0008
#define CC_WIDE           0x0010
#define CC_STYLED         0x0020
#define CC_WIDESTYLED     0x0040
#define CC_INTERIORS      0x0080
#define CC_ROUNDRECT      0x0100

/* LINECAPS */
#define LC_NONE           0x0000
#define LC_POLYLINE       0x0002
#define LC_MARKER         0x0004
#define LC_POLYMARKER     0x0008
#define LC_WIDE           0x0010
#define LC_STYLED         0x0020
#define LC_WIDESTYLED     0x0040
#define LC_INTERIORS      0x0080

/* POLYGONALCAPS */
#define PC_NONE           0x0000
#define PC_POLYGON        0x0001
#define PC_RECTANGLE      0x0002
#define PC_WINDPOLYGON    0x0004
1731
#define PC_TRAPEZOID      0x0004
1732 1733 1734 1735 1736
#define PC_SCANLINE       0x0008
#define PC_WIDE           0x0010
#define PC_STYLED         0x0020
#define PC_WIDESTYLED     0x0040
#define PC_INTERIORS      0x0080
1737 1738
#define PC_POLYPOLYGON    0x0100
#define PC_PATHS          0x0200
1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756

/* TEXTCAPS */
#define TC_OP_CHARACTER   0x0001
#define TC_OP_STROKE      0x0002
#define TC_CP_STROKE      0x0004
#define TC_CR_90          0x0008
#define TC_CR_ANY         0x0010
#define TC_SF_X_YINDEP    0x0020
#define TC_SA_DOUBLE      0x0040
#define TC_SA_INTEGER     0x0080
#define TC_SA_CONTIN      0x0100
#define TC_EA_DOUBLE      0x0200
#define TC_IA_ABLE        0x0400
#define TC_UA_ABLE        0x0800
#define TC_SO_ABLE        0x1000
#define TC_RA_ABLE        0x2000
#define TC_VA_ABLE        0x4000
#define TC_RESERVED       0x8000
1757
#define TC_SCROLLBLT      0x00010000
1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782

/* CLIPCAPS */
#define CP_NONE           0x0000
#define CP_RECTANGLE      0x0001
#define CP_REGION         0x0002

/* RASTERCAPS */
#define RC_NONE           0x0000
#define RC_BITBLT         0x0001
#define RC_BANDING        0x0002
#define RC_SCALING        0x0004
#define RC_BITMAP64       0x0008
#define RC_GDI20_OUTPUT   0x0010
#define RC_GDI20_STATE    0x0020
#define RC_SAVEBITMAP     0x0040
#define RC_DI_BITMAP      0x0080
#define RC_PALETTE        0x0100
#define RC_DIBTODEV       0x0200
#define RC_BIGFONT        0x0400
#define RC_STRETCHBLT     0x0800
#define RC_FLOODFILL      0x1000
#define RC_STRETCHDIB     0x2000
#define RC_OP_DX_OUTPUT   0x4000
#define RC_DEVBITS        0x8000

1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797
/* CAPS1 */
#define C1_TRANSPARENT    0x0001
#define TC_TT_ABLE        0x0002
#define C1_TT_CR_ANY      0x0004
#define C1_EMF_COMPLIANT  0x0008
#define C1_DIBENGINE      0x0010
#define C1_GAMMA_RAMP     0x0040
#define C1_REINIT_ABLE    0x0080
#define C1_GLYPH_INDEX    0x0100
#define C1_BIT_PACKED     0x0200
#define C1_BYTE_PACKED    0x0400
#define C1_COLORCURSOR    0x0800
#define C1_CMYK_ABLE      0x1000
#define C1_SLOW_CARD      0x2000

1798 1799 1800 1801 1802 1803 1804 1805
/* SHADEBLENDCAPS */
#define SB_NONE           0x0000
#define SB_CONST_ALPHA    0x0001
#define SB_PIXEL_ALPHA    0x0002
#define SB_PREMULT_ALPHA  0x0004
#define SB_GRAD_RECT      0x0010
#define SB_GRAD_TRI       0x0020

1806 1807
  /* Device-independent bitmaps */

1808
typedef struct tagRGBQUAD {
1809 1810 1811 1812 1813 1814
  BYTE rgbBlue;
  BYTE rgbGreen;
  BYTE rgbRed;
  BYTE rgbReserved;
} RGBQUAD, *LPRGBQUAD;

1815
typedef struct tagRGBTRIPLE {
1816 1817 1818 1819
  BYTE rgbtBlue;
  BYTE rgbtGreen;
  BYTE rgbtRed;
} RGBTRIPLE;
1820

1821
#include <pshpack2.h>
1822 1823
typedef struct
{
1824 1825 1826 1827 1828
    WORD    bfType;
    DWORD   bfSize;
    WORD    bfReserved1;
    WORD    bfReserved2;
    DWORD   bfOffBits;
1829
} BITMAPFILEHEADER, *PBITMAPFILEHEADER, *LPBITMAPFILEHEADER;
1830
#include <poppack.h>
1831

1832 1833
#define MAKEPOINTS(l)  (*((POINTS *)&(l)))

1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846
typedef struct
{
    DWORD 	biSize;
    LONG  	biWidth;
    LONG  	biHeight;
    WORD 	biPlanes;
    WORD 	biBitCount;
    DWORD 	biCompression;
    DWORD 	biSizeImage;
    LONG  	biXPelsPerMeter;
    LONG  	biYPelsPerMeter;
    DWORD 	biClrUsed;
    DWORD 	biClrImportant;
1847
} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
1848

1849 1850 1851 1852 1853 1854 1855
typedef struct
{
    DWORD        bV4Size;
    LONG         bV4Width;
    LONG         bV4Height;
    WORD         bV4Planes;
    WORD         bV4BitCount;
1856
    DWORD        bV4V4Compression;
1857 1858 1859 1860 1861 1862 1863 1864 1865 1866
    DWORD        bV4SizeImage;
    LONG         bV4XPelsPerMeter;
    LONG         bV4YPelsPerMeter;
    DWORD        bV4ClrUsed;
    DWORD        bV4ClrImportant;
    DWORD        bV4RedMask;
    DWORD        bV4GreenMask;
    DWORD        bV4BlueMask;
    DWORD        bV4AlphaMask;
    DWORD        bV4CSType;
1867
    CIEXYZTRIPLE bV4Endpoints;
1868 1869 1870 1871 1872
    DWORD        bV4GammaRed;
    DWORD        bV4GammaGreen;
    DWORD        bV4GammaBlue;
} BITMAPV4HEADER, *PBITMAPV4HEADER;

1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899
typedef struct {
    DWORD        bV5Size;
    LONG         bV5Width;
    LONG         bV5Height;
    WORD         bV5Planes;
    WORD         bV5BitCount;
    DWORD        bV5Compression;
    DWORD        bV5SizeImage;
    LONG         bV5XPelsPerMeter;
    LONG         bV5YPelsPerMeter;
    DWORD        bV5ClrUsed;
    DWORD        bV5ClrImportant;
    DWORD        bV5RedMask;
    DWORD        bV5GreenMask;
    DWORD        bV5BlueMask;
    DWORD        bV5AlphaMask;
    DWORD        bV5CSType;
    CIEXYZTRIPLE bV5Endpoints;
    DWORD        bV5GammaRed;
    DWORD        bV5GammaGreen;
    DWORD        bV5GammaBlue;
    DWORD        bV5Intent;
    DWORD        bV5ProfileData;
    DWORD        bV5ProfileSize;
    DWORD        bV5Reserved;
} BITMAPV5HEADER, *LPBITMAPV5HEADER, *PBITMAPV5HEADER;

1900 1901
#define PROFILE_LINKED   0x4c494e4b     /* 'LINK' */
#define PROFILE_EMBEDDED 0x4d424544     /* 'MBED' */
1902

1903

1904 1905 1906 1907
  /* biCompression */
#define BI_RGB           0
#define BI_RLE8          1
#define BI_RLE4          2
1908
#define BI_BITFIELDS     3
1909 1910
#define BI_JPEG          4
#define BI_PNG           5
1911

1912 1913 1914 1915
typedef struct tagBITMAPINFO
{
    BITMAPINFOHEADER bmiHeader;
    RGBQUAD          bmiColors[1];
1916
} BITMAPINFO, *PBITMAPINFO, *LPBITMAPINFO;
1917 1918 1919 1920

typedef struct
{
    DWORD   bcSize;
1921 1922 1923 1924
    WORD    bcWidth;
    WORD    bcHeight;
    WORD    bcPlanes;
    WORD    bcBitCount;
1925
} BITMAPCOREHEADER, *PBITMAPCOREHEADER, *LPBITMAPCOREHEADER;
1926 1927 1928 1929 1930

typedef struct
{
    BITMAPCOREHEADER bmciHeader;
    RGBTRIPLE        bmciColors[1];
1931
} BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO;
1932 1933 1934 1935 1936

#define DIB_RGB_COLORS   0
#define DIB_PAL_COLORS   1
#define CBM_INIT         4

1937
typedef struct
1938
{
1939
	BITMAP		dsBm;
1940 1941
	BITMAPINFOHEADER	dsBmih;
	DWORD			dsBitfields[3];
1942
	HANDLE		dshSection;
1943
	DWORD			dsOffset;
1944
} DIBSECTION, *PDIBSECTION, *LPDIBSECTION;
1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965

  /* Stock GDI objects for GetStockObject() */

#define WHITE_BRUSH	    0
#define LTGRAY_BRUSH	    1
#define GRAY_BRUSH	    2
#define DKGRAY_BRUSH	    3
#define BLACK_BRUSH	    4
#define NULL_BRUSH	    5
#define HOLLOW_BRUSH	    5
#define WHITE_PEN	    6
#define BLACK_PEN	    7
#define NULL_PEN	    8
#define OEM_FIXED_FONT	    10
#define ANSI_FIXED_FONT     11
#define ANSI_VAR_FONT	    12
#define SYSTEM_FONT	    13
#define DEVICE_DEFAULT_FONT 14
#define DEFAULT_PALETTE     15
#define SYSTEM_FIXED_FONT   16
#define DEFAULT_GUI_FONT    17
1966 1967
#define DC_BRUSH            18
#define DC_PEN              19
1968

1969
#define STOCK_LAST          19
1970

1971
#define CLR_INVALID         0xffffffff
1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014

typedef USHORT COLOR16;

typedef struct _TRIVERTEX
{
    LONG    x;
    LONG    y;
    COLOR16 Red;
    COLOR16 Green;
    COLOR16 Blue;
    COLOR16 Alpha;
} TRIVERTEX, *PTRIVERTEX, *LPTRIVERTEX;

typedef struct _GRADIENT_TRIANGLE
{
    ULONG Vertex1;
    ULONG Vertex2;
    ULONG Vertex3;
} GRADIENT_TRIANGLE, *PGRADIENT_TRIANGLE, *LPGRADIENT_TRIANGLE;

typedef struct _GRADIENT_RECT
{
    ULONG UpperLeft;
    ULONG LowerRight;
} GRADIENT_RECT, *PGRADIENT_RECT, *LPGRADIENT_RECT;

#define AC_SRC_OVER  0x00
#define AC_SRC_ALPHA 0x01

typedef struct _BLENDFUNCTION
{
    BYTE BlendOp;
    BYTE BlendFlags;
    BYTE SourceConstantAlpha;
    BYTE AlphaFormat;
} BLENDFUNCTION, *PBLENDFUNCTION;

#define GRADIENT_FILL_RECT_H      0x00000000
#define GRADIENT_FILL_RECT_V      0x00000001
#define GRADIENT_FILL_TRIANGLE    0x00000002
#define GRADIENT_FILL_OP_FLAG     0x000000ff


2015
/* Metafile header structure */
2016
#include <pshpack2.h>
2017 2018 2019 2020 2021
typedef struct
{
    WORD       mtType;
    WORD       mtHeaderSize;
    WORD       mtVersion;
2022
    DWORD      mtSize;
2023
    WORD       mtNoObjects;
2024
    DWORD      mtMaxRecord;
2025
    WORD       mtNoParameters;
2026
} METAHEADER, *PMETAHEADER, *LPMETAHEADER;
2027
#include <poppack.h>
2028 2029 2030 2031 2032 2033

/* Metafile typical record structure */
typedef struct
{
    DWORD      rdSize;
    WORD       rdFunction;
2034
    WORD       rdParm[1];
2035
} METARECORD, *PMETARECORD, *LPMETARECORD;
2036 2037 2038 2039 2040

/* Handle table structure */

typedef struct
{
2041
    HGDIOBJ objectHandle[1];
2042
} HANDLETABLE, *PHANDLETABLE, *LPHANDLETABLE;
2043 2044 2045 2046 2047


/* Clipboard metafile picture structure */
typedef struct
{
2048 2049 2050
    LONG       mm;
    LONG       xExt;
    LONG       yExt;
2051 2052
    HMETAFILE  hMF;
} METAFILEPICT, *LPMETAFILEPICT;
2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135


/* Metafile functions */
#define META_SETBKCOLOR              0x0201
#define META_SETBKMODE               0x0102
#define META_SETMAPMODE              0x0103
#define META_SETROP2                 0x0104
#define META_SETRELABS               0x0105
#define META_SETPOLYFILLMODE         0x0106
#define META_SETSTRETCHBLTMODE       0x0107
#define META_SETTEXTCHAREXTRA        0x0108
#define META_SETTEXTCOLOR            0x0209
#define META_SETTEXTJUSTIFICATION    0x020A
#define META_SETWINDOWORG            0x020B
#define META_SETWINDOWEXT            0x020C
#define META_SETVIEWPORTORG          0x020D
#define META_SETVIEWPORTEXT          0x020E
#define META_OFFSETWINDOWORG         0x020F
#define META_SCALEWINDOWEXT          0x0410
#define META_OFFSETVIEWPORTORG       0x0211
#define META_SCALEVIEWPORTEXT        0x0412
#define META_LINETO                  0x0213
#define META_MOVETO                  0x0214
#define META_EXCLUDECLIPRECT         0x0415
#define META_INTERSECTCLIPRECT       0x0416
#define META_ARC                     0x0817
#define META_ELLIPSE                 0x0418
#define META_FLOODFILL               0x0419
#define META_PIE                     0x081A
#define META_RECTANGLE               0x041B
#define META_ROUNDRECT               0x061C
#define META_PATBLT                  0x061D
#define META_SAVEDC                  0x001E
#define META_SETPIXEL                0x041F
#define META_OFFSETCLIPRGN           0x0220
#define META_TEXTOUT                 0x0521
#define META_BITBLT                  0x0922
#define META_STRETCHBLT              0x0B23
#define META_POLYGON                 0x0324
#define META_POLYLINE                0x0325
#define META_ESCAPE                  0x0626
#define META_RESTOREDC               0x0127
#define META_FILLREGION              0x0228
#define META_FRAMEREGION             0x0429
#define META_INVERTREGION            0x012A
#define META_PAINTREGION             0x012B
#define META_SELECTCLIPREGION        0x012C
#define META_SELECTOBJECT            0x012D
#define META_SETTEXTALIGN            0x012E
#define META_DRAWTEXT                0x062F
#define META_CHORD                   0x0830
#define META_SETMAPPERFLAGS          0x0231
#define META_EXTTEXTOUT              0x0A32
#define META_SETDIBTODEV             0x0D33
#define META_SELECTPALETTE           0x0234
#define META_REALIZEPALETTE          0x0035
#define META_ANIMATEPALETTE          0x0436
#define META_SETPALENTRIES           0x0037
#define META_POLYPOLYGON             0x0538
#define META_RESIZEPALETTE           0x0139
#define META_DIBBITBLT               0x0940
#define META_DIBSTRETCHBLT           0x0B41
#define META_DIBCREATEPATTERNBRUSH   0x0142
#define META_STRETCHDIB              0x0F43
#define META_EXTFLOODFILL            0x0548
#define META_RESETDC                 0x014C
#define META_STARTDOC                0x014D
#define META_STARTPAGE               0x004F
#define META_ENDPAGE                 0x0050
#define META_ABORTDOC                0x0052
#define META_ENDDOC                  0x005E
#define META_DELETEOBJECT            0x01F0
#define META_CREATEPALETTE           0x00F7
#define META_CREATEBRUSH             0x00F8
#define META_CREATEPATTERNBRUSH      0x01F9
#define META_CREATEPENINDIRECT       0x02FA
#define META_CREATEFONTINDIRECT      0x02FB
#define META_CREATEBRUSHINDIRECT     0x02FC
#define META_CREATEBITMAPINDIRECT    0x02FD
#define META_CREATEBITMAP            0x06FE
#define META_CREATEREGION            0x06FF
#define META_UNKNOWN                 0x0529  /* FIXME: unknown meta magic */

2136
typedef INT (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,
2137
                                       INT,LPARAM);
2138 2139 2140 2141 2142 2143

/* enhanced metafile structures and functions */

/* note that ENHMETAHEADER is just a particular kind of ENHMETARECORD,
   ie. the header is just the first record in the metafile */
typedef struct {
2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157
    DWORD iType;
    DWORD nSize;
    RECTL rclBounds;
    RECTL rclFrame;
    DWORD dSignature;
    DWORD nVersion;
    DWORD nBytes;
    DWORD nRecords;
    WORD  nHandles;
    WORD  sReserved;
    DWORD nDescription;
    DWORD offDescription;
    DWORD nPalEntries;
    SIZEL szlDevice;
2158
    SIZEL szlMillimeters;
2159 2160 2161
    DWORD cbPixelFormat;
    DWORD offPixelFormat;
    DWORD bOpenGL;
2162
    SIZEL szlMicrometers;
2163
} ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER;
2164 2165

typedef struct {
2166 2167 2168 2169
    DWORD iType;
    DWORD nSize;
    DWORD dParm[1];
} ENHMETARECORD, *LPENHMETARECORD;
2170

2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226
typedef struct {
    DWORD iType;
    DWORD nSize;
} EMR, *PEMR;

typedef struct {
    POINTL ptlReference;
    DWORD  nChars;
    DWORD  offString;
    DWORD  fOptions;
    RECTL  rcl;
    DWORD  offDx;
} EMRTEXT, *PEMRTEXT;

typedef struct {
    EMR emr;
} EMRABORTPATH,      *PEMRABORTPATH,
  EMRBEGINPATH,      *PEMRBEGINPATH,
  EMRENDPATH,        *PEMRENDPATH,
  EMRCLOSEFIGURE,    *PEMRCLOSEFIGURE,
  EMRFLATTENPATH,    *PEMRFLATTENPATH,
  EMRWIDENPATH,      *PEMRWIDENPATH,
  EMRSETMETARGN,     *PEMRSETMETARGN,
  EMRSAVEDC,         *PEMRSAVEDC,
  EMRREALIZEPALETTE, *PEMRREALIZEPALETTE;

typedef struct {
    EMR    emr;
    POINTL ptlCenter;
    DWORD  nRadius;
    FLOAT  eStartAngle;
    FLOAT  eSweepAngle;
} EMRANGLEARC, *PEMRANGLEARC;

typedef struct {
    EMR    emr;
    RECTL  rclBox;
    POINTL ptlStart;
    POINTL ptlEnd;
} EMRARC,   *PEMRARC,
  EMRARCTO, *PEMRARCTO,
  EMRCHORD, *PEMRCHORD,
  EMRPIE,   *PEMRPIE;

typedef struct {
    EMR      emr;
    RECTL    rclBounds;
    LONG     xDest;
    LONG     yDest;
    LONG     cxDest;
    LONG     cyDest;
    DWORD    dwRop;
    LONG     xSrc;
    LONG     ySrc;
    XFORM    xformSrc;
    COLORREF crBkColorSrc;
2227
    DWORD    iUsageSrc;
2228 2229 2230 2231 2232 2233 2234
    DWORD    offBmiSrc;
    DWORD    cbBmiSrc;
    DWORD    offBitsSrc;
    DWORD    cbBitsSrc;
} EMRBITBLT, *PEMRBITBLT;

typedef struct {
2235 2236 2237
    EMR        emr;
    DWORD      ihBrush;
    LOGBRUSH32 lb;
2238 2239 2240 2241 2242
} EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT;

typedef struct {
    EMR            emr;
    DWORD          ihCS;
2243
    LOGCOLORSPACEA lcs;
2244 2245
} EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE;

2246 2247 2248 2249 2250 2251 2252 2253 2254
typedef struct {
  EMR            emr;
  DWORD          ihCS;
  LOGCOLORSPACEW lcs;
  DWORD          dwFlags;
  DWORD          cbData;
  BYTE           Data[1];
} EMRCREATECOLORSPACEW, *PEMRCREATECOLORSPACEW;

2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374
typedef struct {
    EMR   emr;
    DWORD ihBrush;
    DWORD iUsage;
    DWORD offBmi;
    DWORD cbBmi;
    DWORD offBits;
    DWORD cbBits;
} EMRCREATEDIBPATTERNBRUSHPT, *PEMRCREATEDIBPATTERNBRUSHPT;

typedef struct {
    EMR   emr;
    DWORD ihBrush;
    DWORD iUsage;
    DWORD offBmi;
    DWORD cbBmi;
    DWORD offBits;
    DWORD cbBits;
} EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH;

typedef struct {
    EMR        emr;
    DWORD      ihPal;
    LOGPALETTE lgpl;
} EMRCREATEPALETTE, *PEMRCREATEPALETTE;

typedef struct {
    EMR    emr;
    DWORD  ihPen;
    LOGPEN lopn;
} EMRCREATEPEN, *PEMRCREATEPEN;

typedef struct {
    EMR           emr;
    DWORD         ihCS;
} EMRDELETECOLORSPACE, *PEMRDELETECOLORSPACE,
  EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE,
  EMRSETCOLORSPACE,    *PEMRSETCOLORSPACE;

typedef struct {
    EMR   emr;
    DWORD ihObject;
} EMRDELETEOBJECT, *PEMRDELETEOBJECT,
  EMRSELECTOBJECT, *PEMRSELECTOBJECT;

typedef struct {
    EMR   emr;
    RECTL rclBox;
} EMRELLIPSE,   *PEMRELLIPSE,
  EMRRECTANGLE, *PEMRRECTANGLE;

typedef struct {
    EMR   emr;
    DWORD nPalEntries;
    DWORD offPalEntries;
    DWORD nSizeLast;
} EMREOF, *PEMREOF;

typedef struct {
    EMR   emr;
    RECTL rclClip;
} EMREXCLUDECLIPRECT,   *PEMREXCLUDECLIPRECT,
  EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT;

typedef struct {
    EMR         emr;
    DWORD       ihFont;
    EXTLOGFONTW elfw;
} EMREXTCREATEFONTINDIRECTW, *PEMREXTCREATEFONTINDIRECTW;

typedef struct {
    EMR       emr;
    DWORD     ihPen;
    DWORD     offBmi;
    DWORD     cbBmi;
    DWORD     offBits;
    DWORD     cbBits;
    EXTLOGPEN elp;
} EMREXTCREATEPEN, *PEMREXTCREATEPEN;

typedef struct {
    EMR      emr;
    POINTL   ptlStart;
    COLORREF crColor;
    DWORD    iMode;
} EMREXTFLOODFILL, *PEMREXTFLOODFILL;

typedef struct {
    EMR   emr;
    DWORD cbRgnData;
    DWORD iMode;
    BYTE  RgnData[1];
} EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN;

typedef struct {
    EMR     emr;
    RECTL   rclBounds;
    DWORD   iGraphicsMode;
    FLOAT   exScale;
    FLOAT   eyScale;
    EMRTEXT emrtext;
} EMREXTTEXTOUTA, *PEMREXTTEXTOUTA,
  EMREXTTEXTOUTW, *PEMREXTTEXTOUTW;

typedef struct {
    EMR emr;
    RECTL rclBounds;
} EMRFILLPATH,          *PEMRFILLPATH,
  EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH,
  EMRSTROKEPATH,        *PEMRSTROKEPATH;

typedef struct {
    EMR   emr;
    RECTL rclBounds;
    DWORD cbRgnData;
    DWORD ihBrush;
    BYTE  RgnData[1];
} EMRFILLRGN, *PEMRFILLRGN;

typedef struct {
2375
    DWORD dSignature;
2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393
    DWORD nVersion;
    DWORD cbData;
    DWORD offData;
} EMRFORMAT, *PEMRFORMAT;

typedef struct {
    EMR   emr;
    RECTL rclBounds;
    DWORD cbRgnData;
    DWORD ihBrush;
    SIZEL szlStroke;
    BYTE  RgnData[1];
} EMRFRAMERGN, *PEMRFRAMERGN;

typedef struct {
    EMR   emr;
    DWORD cbData;
    BYTE  Data[1];
2394
} EMRGDICOMMENT, *PEMRGDICOMMENT;
2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458

typedef struct {
    EMR       emr;
    RECTL     rclBounds;
    DWORD     nVer;
    DWORD     nTri;
    ULONG     ulMode;
    TRIVERTEX Ver[1];
} EMRGRADIENTFILL, *PEMRGRADIENTFILL;

typedef struct {
    EMR   emr;
    RECTL rclBounds;
    DWORD cbRgnData;
    BYTE  RgnData[1];
} EMRINVERTRGN, *PEMRINVERTRGN,
  EMRPAINTRGN,  *PEMRPAINTRGN;

typedef struct {
    EMR    emr;
    POINTL ptl;
} EMRLINETO,   *PEMRLINETO,
  EMRMOVETOEX, *PEMRMOVETOEX;

typedef struct {
    EMR      emr;
    RECTL    rclBounds;
    LONG     xDest;
    LONG     yDest;
    LONG     cxDest;
    LONG     cyDest;
    DWORD    dwRop;
    LONG     xSrc;
    LONG     ySrc;
    XFORM    xformSrc;
    COLORREF crBkColorSrc;
    DWORD    iUsageSrc;
    DWORD    offBmiSrc;
    DWORD    cbBmiSrc;
    DWORD    offBitsSrc;
    DWORD    cbBitsSrc;
    LONG     xMask;
    LONG     yMask;
    DWORD    iUsageMask;
    DWORD    offBmiMask;
    DWORD    cbBmiMask;
    DWORD    offBitsMask;
    DWORD    cbBitsMask;
} EMRMASKBLT, *PEMRMASKBLT;

typedef struct {
    EMR   emr;
    XFORM xform;
    DWORD iMode;
} EMRMODIFYWORLDTRANSFORM, *PEMRMODIFYWORLDTRANSFORM;

typedef struct {
    EMR    emr;
    POINTL ptlOffset;
} EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN;

typedef struct {
    EMR      emr;
    RECTL    rclBounds;
2459
    POINTL   aptlDest[3];
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475
    LONG     xSrc;
    LONG     ySrc;
    LONG     cxSrc;
    LONG     cySrc;
    XFORM    xformSrc;
    COLORREF crBkColorSrc;
    DWORD    iUsageSrc;
    DWORD    offBmiSrc;
    DWORD    cbBmiSrc;
    DWORD    offBitsSrc;
    DWORD    cbBitsSrc;
    LONG     xMask;
    LONG     yMask;
    DWORD    iUsageMask;
    DWORD    offBmiMask;
    DWORD    cbBmiMask;
2476
    DWORD    offBitsMask;
2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490
    DWORD    cbBitsMask;
} EMRPLGBLT, *PEMRPLGBLT;

typedef struct {
    EMR    emr;
    RECTL  rclBounds;
    DWORD  cptl;
    POINTL aptl[1];
} EMRPOLYLINE,     *PEMRPOLYLINE,
  EMRPOLYBEZIER,   *PEMRPOLYBEZIER,
  EMRPOLYGON,      *PEMRPOLYGON,
  EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO,
  EMRPOLYLINETO,   *PEMRPOLYLINETO;

2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519
typedef struct {
    EMR    emr;
    RECTL  rclBounds;
    DWORD  cpts;
    POINTS apts[1];
} EMRPOLYLINE16,     *PEMRPOLYLINE16,
  EMRPOLYBEZIER16,   *PEMRPOLYBEZIER16,
  EMRPOLYGON16,      *PEMRPOLYGON16,
  EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16,
  EMRPOLYLINETO16,   *PEMRPOLYLINETO16;

typedef struct {
    EMR    emr;
    RECTL  rclBounds;
    DWORD  cpts;
    POINTS apts[1];
    BYTE   abTypes[1];
} EMRPOLYDRAW16, *PEMRPOLYDRAW16;

typedef struct {
    EMR     emr;
    RECTL   rclBounds;
    DWORD   nPolys;
    DWORD   cpts;
    DWORD   aPolyCounts[1];
    POINTS  apts[1];
} EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16,
  EMRPOLYPOLYGON16,  *PEMRPOLYPOLYGON16;

2520 2521 2522 2523 2524 2525
typedef struct {
    EMR    emr;
    RECTL  rclBounds;
    DWORD  cptl;
    POINTL aptl[1];
    BYTE   abTypes[1];
2526
} EMRPOLYDRAW, *PEMRPOLYDRAW;
2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574

typedef struct {
    EMR     emr;
    RECTL   rclBounds;
    DWORD   nPolys;
    DWORD   cptl;
    DWORD   aPolyCounts[1];
    POINTL  aptl[1];
} EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE,
  EMRPOLYPOLYGON,  *PEMRPOLYPOLYGON;

typedef struct {
    EMR     emr;
    RECTL   rclBounds;
    DWORD   iGraphicsMode;
    FLOAT   exScale;
    FLOAT   eyScale;
    LONG    cStrings;
    EMRTEXT aemrtext[1];
} EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA,
  EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW;

typedef struct {
    EMR   emr;
    DWORD ihPal;
    DWORD cEntries;
} EMRRESIZEPALETTE, *PEMRRESIZEPALETTE;

typedef struct {
    EMR  emr;
    LONG iRelative;
} EMRRESTOREDC, *PEMRRESTOREDC;

typedef struct {
    EMR   emr;
    RECTL rclBox;
    SIZEL szlCorner;
} EMRROUNDRECT, *PEMRROUNDRECT;

typedef struct {
    EMR  emr;
    LONG xNum;
    LONG xDenom;
    LONG yNum;
    LONG yDenom;
} EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX,
  EMRSCALEWINDOWEXTEX,   *PEMRSCALEWINDOWEXTEX;

2575 2576 2577 2578 2579 2580 2581 2582 2583 2584
typedef struct {
    EMR   emr;
    DWORD iMode;
} EMRSELECTCLIPPATH,    *PEMRSELECTCLIPPATH,
  EMRSETBKMODE,         *PEMRSETBKMODE,
  EMRSETMAPMODE,        *PEMRSETMAPMODE,
  EMRSETPOLYFILLMODE,   *PEMRSETPOLYFILLMODE,
  EMRSETROP2,           *PEMRSETROP2,
  EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
  EMRSETTEXTALIGN,      *PEMRSETTEXTALIGN,
2585
  EMRSETICMMODE,        *PEMRSETICMMODE,
2586 2587
  EMRSETLAYOUT,         *PEMRSETLAYOUT;

2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631
typedef struct {
    EMR   emr;
    DWORD ihPal;
} EMRSELECTPALETTE, *PEMRSELECTPALETTE;

typedef struct {
    EMR   emr;
    DWORD iArcDirection;
} EMRSETARCDIRECTION, *PEMRSETARCDIRECTION;

typedef struct {
    EMR      emr;
    COLORREF crColor;
} EMRSETBKCOLOR,   *PEMRSETBKCOLOR,
  EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR;

typedef struct {
    EMR   emr;
    POINTL ptlOrigin;
} EMRSETBRUSHORGEX,    *PEMRSETBRUSHORGEX,
  EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX,
  EMRSETWINDOWORGEX,   *PEMRSETWINDOWORGEX;

typedef struct {
    EMR  emr;
    COLORADJUSTMENT ColorAdjustment;
} EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT;

typedef struct {
    EMR   emr;
    RECTL rclBounds;
    LONG  xDest;
    LONG  yDest;
    LONG  xSrc;
    LONG  ySrc;
    LONG  cxSrc;
    LONG  cySrc;
    DWORD offBmiSrc;
    DWORD cbBmiSrc;
    DWORD offBitsSrc;
    DWORD cbBitsSrc;
    DWORD iUsageSrc;
    DWORD iStartScan;
    DWORD cScans;
2632
} EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE;
2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689

typedef struct {
    EMR   emr;
    DWORD dwFlags;
} EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS;

typedef struct {
    EMR   emr;
    FLOAT eMiterLimit;
} EMRSETMITERLIMIT, *PEMRSETMITERLIMIT;

typedef struct {
    EMR          emr;
    DWORD        ihPal;
    DWORD        iStart;
    DWORD        cEntries;
    PALETTEENTRY aPalEntries[1];
} EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES;

typedef struct {
    EMR     emr;
    POINTL  ptlPixel;
    COLORREF crColor;
} EMRSETPIXELV, *PEMRSETPIXELV;

typedef struct {
    EMR   emr;
    SIZEL szlExtent;
} EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX,
  EMRSETWINDOWEXTEX,   *PEMRSETWINDOWEXTEX;

typedef struct {
    EMR   emr;
    XFORM xform;
} EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM;

typedef struct {
    EMR      emr;
    RECTL    rclBounds;
    LONG     xDest;
    LONG     yDest;
    LONG     cxDest;
    LONG     cyDest;
    DWORD    dwRop;
    LONG     xSrc;
    LONG     ySrc;
    XFORM    xformSrc;
    COLORREF crBkColorSrc;
    DWORD    iUsageSrc;
    DWORD    offBmiSrc;
    DWORD    cbBmiSrc;
    DWORD    offBitsSrc;
    DWORD    cbBitsSrc;
    LONG     cxSrc;
    LONG     cySrc;
} EMRSTRETCHBLT, *PEMRSTRETCHBLT;

2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710
typedef struct {
    EMR      emr;
    RECTL    rclBounds;
    LONG     xDest;
    LONG     yDest;
    LONG     cxDest;
    LONG     cyDest;
    DWORD    dwRop;
    LONG     xSrc;
    LONG     ySrc;
    XFORM    xformSrc;
    COLORREF crBkColorSrc;
    DWORD    iUsageSrc;
    DWORD    offBmiSrc;
    DWORD    cbBmiSrc;
    DWORD    offBitsSrc;
    DWORD    cbBitsSrc;
    LONG     cxSrc;
    LONG     cySrc;
} EMRALPHABLEND, *PEMRALPHABLEND;

2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723
typedef struct {
    EMR   emr;
    RECTL rclBounds;
    LONG  xDest;
    LONG  yDest;
    LONG  xSrc;
    LONG  ySrc;
    LONG  cxSrc;
    LONG  cySrc;
    DWORD offBmiSrc;
    DWORD cbBmiSrc;
    DWORD offBitsSrc;
    DWORD cbBitsSrc;
2724
    DWORD iUsageSrc;
2725 2726
    DWORD dwRop;
    LONG  cxDest;
2727
    LONG  cyDest;
2728 2729
} EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;

2730
typedef struct {
2731 2732
    EMR                   emr;
    PIXELFORMATDESCRIPTOR pfd;
2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745
} EMRPIXELFORMAT, *PEMRPIXELFORMAT;

typedef struct tagEMRGLSRECORD {
  EMR   emr;
  DWORD cbData;
  BYTE  Data[1];
} EMRGLSRECORD, *PEMRGLSRECORD;

typedef struct {
  EMR   emr;
  RECTL rclBounds;
  DWORD cbData;
  BYTE  Data[1];
2746
} EMRGLSBOUNDEDRECORD, *PEMRGLSBOUNDEDRECORD;
2747

2748 2749
typedef INT (CALLBACK *ENHMFENUMPROC)(HDC, HANDLETABLE *,
                                      const ENHMETARECORD *, INT, LPARAM);
2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853

#define EMR_HEADER	1
#define EMR_POLYBEZIER	2
#define EMR_POLYGON	3
#define EMR_POLYLINE	4
#define EMR_POLYBEZIERTO	5
#define EMR_POLYLINETO	6
#define EMR_POLYPOLYLINE	7
#define EMR_POLYPOLYGON	8
#define EMR_SETWINDOWEXTEX	9
#define EMR_SETWINDOWORGEX	10
#define EMR_SETVIEWPORTEXTEX	11
#define EMR_SETVIEWPORTORGEX	12
#define EMR_SETBRUSHORGEX	13
#define EMR_EOF	14
#define EMR_SETPIXELV	15
#define EMR_SETMAPPERFLAGS	16
#define EMR_SETMAPMODE	17
#define EMR_SETBKMODE	18
#define EMR_SETPOLYFILLMODE	19
#define EMR_SETROP2	20
#define EMR_SETSTRETCHBLTMODE	21
#define EMR_SETTEXTALIGN	22
#define EMR_SETCOLORADJUSTMENT	23
#define EMR_SETTEXTCOLOR	24
#define EMR_SETBKCOLOR	25
#define EMR_OFFSETCLIPRGN	26
#define EMR_MOVETOEX	27
#define EMR_SETMETARGN	28
#define EMR_EXCLUDECLIPRECT	29
#define EMR_INTERSECTCLIPRECT	30
#define EMR_SCALEVIEWPORTEXTEX	31
#define EMR_SCALEWINDOWEXTEX	32
#define EMR_SAVEDC	33
#define EMR_RESTOREDC	34
#define EMR_SETWORLDTRANSFORM	35
#define EMR_MODIFYWORLDTRANSFORM	36
#define EMR_SELECTOBJECT	37
#define EMR_CREATEPEN	38
#define EMR_CREATEBRUSHINDIRECT	39
#define EMR_DELETEOBJECT	40
#define EMR_ANGLEARC	41
#define EMR_ELLIPSE	42
#define EMR_RECTANGLE	43
#define EMR_ROUNDRECT	44
#define EMR_ARC	45
#define EMR_CHORD	46
#define EMR_PIE	47
#define EMR_SELECTPALETTE	48
#define EMR_CREATEPALETTE	49
#define EMR_SETPALETTEENTRIES	50
#define EMR_RESIZEPALETTE	51
#define EMR_REALIZEPALETTE	52
#define EMR_EXTFLOODFILL	53
#define EMR_LINETO	54
#define EMR_ARCTO	55
#define EMR_POLYDRAW	56
#define EMR_SETARCDIRECTION	57
#define EMR_SETMITERLIMIT	58
#define EMR_BEGINPATH	59
#define EMR_ENDPATH	60
#define EMR_CLOSEFIGURE	61
#define EMR_FILLPATH	62
#define EMR_STROKEANDFILLPATH	63
#define EMR_STROKEPATH	64
#define EMR_FLATTENPATH	65
#define EMR_WIDENPATH	66
#define EMR_SELECTCLIPPATH	67
#define EMR_ABORTPATH	68
#define EMR_GDICOMMENT	70
#define EMR_FILLRGN	71
#define EMR_FRAMERGN	72
#define EMR_INVERTRGN	73
#define EMR_PAINTRGN	74
#define EMR_EXTSELECTCLIPRGN	75
#define EMR_BITBLT	76
#define EMR_STRETCHBLT	77
#define EMR_MASKBLT	78
#define EMR_PLGBLT	79
#define EMR_SETDIBITSTODEVICE	80
#define EMR_STRETCHDIBITS	81
#define EMR_EXTCREATEFONTINDIRECTW	82
#define EMR_EXTTEXTOUTA	83
#define EMR_EXTTEXTOUTW	84
#define EMR_POLYBEZIER16	85
#define EMR_POLYGON16	86
#define EMR_POLYLINE16	87
#define EMR_POLYBEZIERTO16	88
#define EMR_POLYLINETO16	89
#define EMR_POLYPOLYLINE16	90
#define EMR_POLYPOLYGON16	91
#define EMR_POLYDRAW16	92
#define EMR_CREATEMONOBRUSH	93
#define EMR_CREATEDIBPATTERNBRUSHPT	94
#define EMR_EXTCREATEPEN	95
#define EMR_POLYTEXTOUTA	96
#define EMR_POLYTEXTOUTW	97
#define EMR_SETICMMODE	98
#define EMR_CREATECOLORSPACE	99
#define EMR_SETCOLORSPACE	100
#define EMR_DELETECOLORSPACE	101
#define EMR_GLSRECORD	102
#define EMR_GLSBOUNDEDRECORD	103
#define EMR_PIXELFORMAT 104
2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871
#define EMR_DRAWESCAPE 	105
#define EMR_EXTESCAPE	106
#define EMR_STARTDOC	107
#define EMR_SMALLTEXTOUT	108
#define EMR_FORCEUFIMAPPING	109
#define EMR_NAMEDESCAPE	110
#define EMR_COLORCORRECTPALETTE	111
#define EMR_SETICMPROFILEA	112
#define EMR_SETICMPROFILEW	113
#define EMR_ALPHABLEND	114
#define EMR_SETLAYOUT	115
#define EMR_TRANSPARENTBLT	116
#define EMR_RESERVED_117	117
#define EMR_GRADIENTFILL	118
#define EMR_SETLINKEDUFI	119
#define EMR_SETTEXTJUSTIFICATION	120
#define EMR_COLORMATCHTOTARGETW	121
#define EMR_CREATECOLORSPACEW	122
2872

2873
#define EMR_MIN 1
2874
#define EMR_MAX 122
2875

2876
#define ENHMETA_SIGNATURE	1179469088
2877 2878
#define ENHMETA_STOCK_OBJECT	0x80000000

2879 2880 2881 2882 2883 2884 2885
#define GDICOMMENT_IDENTIFIER         0x43494447
#define GDICOMMENT_WINDOWS_METAFILE   0x80000001
#define GDICOMMENT_BEGINGROUP         0x00000002
#define GDICOMMENT_ENDGROUP           0x00000003
#define GDICOMMENT_MULTIFORMATS       0x40000004
#define GDICOMMENT_UNICODE_STRING     0x00000040
#define GDICOMMENT_UNICODE_END        0x00000080
2886
#define EPS_SIGNATURE                 0x46535045
2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898

#define CCHDEVICENAME 32
#define CCHFORMNAME   32

typedef struct
{
    BYTE   dmDeviceName[CCHDEVICENAME];
    WORD   dmSpecVersion;
    WORD   dmDriverVersion;
    WORD   dmSize;
    WORD   dmDriverExtra;
    DWORD  dmFields;
2899 2900
    union {
      struct {
2901 2902 2903 2904
	short  dmOrientation;
	short  dmPaperSize;
	short  dmPaperLength;
	short  dmPaperWidth;
2905 2906 2907 2908
        short  dmScale;
        short  dmCopies;
        short  dmDefaultSource;
        short  dmPrintQuality;
2909
      } DUMMYSTRUCTNAME1;
2910 2911 2912 2913 2914
      struct {
        POINTL dmPosition;
        DWORD dmDisplayOrientation;
        DWORD dmDisplayFixedOutput;
      } DUMMYSTRUCTNAME2;
2915
    } DUMMYUNIONNAME1;
2916 2917 2918 2919 2920
    short  dmColor;
    short  dmDuplex;
    short  dmYResolution;
    short  dmTTOption;
    short  dmCollate;
2921 2922 2923 2924 2925
    BYTE   dmFormName[CCHFORMNAME];
    WORD   dmLogPixels;
    DWORD  dmBitsPerPel;
    DWORD  dmPelsWidth;
    DWORD  dmPelsHeight;
2926 2927 2928 2929
    union {
      DWORD dmDisplayFlags;
      DWORD dmNup;
    } DUMMYUNIONNAME2;
2930 2931 2932 2933 2934 2935 2936
    DWORD  dmDisplayFrequency;
    DWORD  dmICMMethod;
    DWORD  dmICMIntent;
    DWORD  dmMediaType;
    DWORD  dmDitherType;
    DWORD  dmReserved1;
    DWORD  dmReserved2;
2937 2938
    DWORD  dmPanningWidth;
    DWORD  dmPanningHeight;
2939
} DEVMODEA, *PDEVMODEA, *LPDEVMODEA;
2940 2941 2942 2943 2944 2945 2946 2947 2948

typedef struct
{
    WCHAR  dmDeviceName[CCHDEVICENAME];
    WORD   dmSpecVersion;
    WORD   dmDriverVersion;
    WORD   dmSize;
    WORD   dmDriverExtra;
    DWORD  dmFields;
2949 2950
    union {
      struct {
2951 2952 2953 2954
	short  dmOrientation;
	short  dmPaperSize;
	short  dmPaperLength;
	short  dmPaperWidth;
2955 2956 2957 2958
        short  dmScale;
        short  dmCopies;
        short  dmDefaultSource;
        short  dmPrintQuality;
2959
      } DUMMYSTRUCTNAME1;
2960 2961 2962 2963 2964
      struct {
        POINTL dmPosition;
        DWORD dmDisplayOrientation;
        DWORD dmDisplayFixedOutput;
      } DUMMYSTRUCTNAME2;
2965
    } DUMMYUNIONNAME1;
2966 2967 2968 2969 2970
    short  dmColor;
    short  dmDuplex;
    short  dmYResolution;
    short  dmTTOption;
    short  dmCollate;
2971 2972 2973 2974 2975
    WCHAR  dmFormName[CCHFORMNAME];
    WORD   dmLogPixels;
    DWORD  dmBitsPerPel;
    DWORD  dmPelsWidth;
    DWORD  dmPelsHeight;
2976 2977 2978 2979
    union {
      DWORD dmDisplayFlags;
      DWORD dmNup;
    } DUMMYUNIONNAME2;
2980 2981 2982 2983 2984 2985 2986
    DWORD  dmDisplayFrequency;
    DWORD  dmICMMethod;
    DWORD  dmICMIntent;
    DWORD  dmMediaType;
    DWORD  dmDitherType;
    DWORD  dmReserved1;
    DWORD  dmReserved2;
2987 2988
    DWORD  dmPanningWidth;
    DWORD  dmPanningHeight;
2989
} DEVMODEW, *PDEVMODEW, *LPDEVMODEW;
2990 2991

DECL_WINELIB_TYPE_AW(DEVMODE)
2992
DECL_WINELIB_TYPE_AW(PDEVMODE)
2993 2994
DECL_WINELIB_TYPE_AW(LPDEVMODE)

2995
#define DM_SPECVERSION  0x401
2996 2997 2998 2999 3000 3001 3002 3003 3004 3005
#define DM_UPDATE	1
#define DM_COPY		2
#define DM_PROMPT	4
#define DM_MODIFY	8

#define DM_IN_BUFFER      DM_MODIFY
#define DM_IN_PROMPT      DM_PROMPT
#define DM_OUT_BUFFER     DM_COPY
#define DM_OUT_DEFAULT    DM_UPDATE

3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034
#define DM_ORIENTATION          __MSABI_LONG(0x00000001)
#define DM_PAPERSIZE            __MSABI_LONG(0x00000002)
#define DM_PAPERLENGTH          __MSABI_LONG(0x00000004)
#define DM_PAPERWIDTH           __MSABI_LONG(0x00000008)
#define DM_SCALE                __MSABI_LONG(0x00000010)
#define DM_POSITION             __MSABI_LONG(0x00000020)
#define DM_NUP                  __MSABI_LONG(0x00000040)
#define DM_DISPLAYORIENTATION   __MSABI_LONG(0x00000080)
#define DM_COPIES               __MSABI_LONG(0x00000100)
#define DM_DEFAULTSOURCE        __MSABI_LONG(0x00000200)
#define DM_PRINTQUALITY         __MSABI_LONG(0x00000400)
#define DM_COLOR                __MSABI_LONG(0x00000800)
#define DM_DUPLEX               __MSABI_LONG(0x00001000)
#define DM_YRESOLUTION          __MSABI_LONG(0x00002000)
#define DM_TTOPTION             __MSABI_LONG(0x00004000)
#define DM_COLLATE              __MSABI_LONG(0x00008000)
#define DM_FORMNAME             __MSABI_LONG(0x00010000)
#define DM_LOGPIXELS            __MSABI_LONG(0x00020000)
#define DM_BITSPERPEL           __MSABI_LONG(0x00040000)
#define DM_PELSWIDTH            __MSABI_LONG(0x00080000)
#define DM_PELSHEIGHT           __MSABI_LONG(0x00100000)
#define DM_DISPLAYFLAGS         __MSABI_LONG(0x00200000)
#define DM_DISPLAYFREQUENCY     __MSABI_LONG(0x00400000)
#define DM_ICMMETHOD            __MSABI_LONG(0x00800000)
#define DM_ICMINTENT            __MSABI_LONG(0x01000000)
#define DM_MEDIATYPE            __MSABI_LONG(0x02000000)
#define DM_DITHERTYPE           __MSABI_LONG(0x04000000)
#define DM_PANNINGWIDTH         __MSABI_LONG(0x08000000)
#define DM_PANNINGHEIGHT        __MSABI_LONG(0x10000000)
3035

3036 3037 3038 3039
#define DM_GRAYSCALE            1
#define DM_INTERLACED           2
#define DMDISPLAYFLAGS_TEXTMODE 4

3040 3041 3042
#define DMORIENT_PORTRAIT	1
#define DMORIENT_LANDSCAPE	2

3043 3044
#define DMPAPER_FIRST              DMPAPER_LETTER
#define DMPAPER_LETTER		   1
3045 3046 3047
#define DMPAPER_LETTERSMALL        2
#define DMPAPER_TABLOID            3
#define DMPAPER_LEDGER             4
3048
#define DMPAPER_LEGAL		   5
3049
#define DMPAPER_STATEMENT          6
3050 3051 3052
#define DMPAPER_EXECUTIVE	   7
#define DMPAPER_A3		   8
#define DMPAPER_A4		   9
3053
#define DMPAPER_A4SMALL            10
3054
#define DMPAPER_A5		   11
3055 3056 3057 3058 3059 3060 3061 3062
#define DMPAPER_B4                 12
#define DMPAPER_B5                 13
#define DMPAPER_FOLIO              14
#define DMPAPER_QUARTO             15
#define DMPAPER_10X14              16
#define DMPAPER_11X17              17
#define DMPAPER_NOTE               18
#define DMPAPER_ENV_9              19
3063
#define DMPAPER_ENV_10		   20
3064 3065 3066 3067 3068 3069
#define DMPAPER_ENV_11             21
#define DMPAPER_ENV_12             22
#define DMPAPER_ENV_14             23
#define DMPAPER_CSHEET             24
#define DMPAPER_DSHEET             25
#define DMPAPER_ESHEET             26
3070 3071
#define DMPAPER_ENV_DL		   27
#define DMPAPER_ENV_C5		   28
3072 3073 3074 3075 3076
#define DMPAPER_ENV_C3             29
#define DMPAPER_ENV_C4             30
#define DMPAPER_ENV_C6             31
#define DMPAPER_ENV_C65            32
#define DMPAPER_ENV_B4             33
3077
#define DMPAPER_ENV_B5		   34
3078 3079
#define DMPAPER_ENV_B6             35
#define DMPAPER_ENV_ITALY          36
3080
#define DMPAPER_ENV_MONARCH	   37
3081 3082 3083 3084
#define DMPAPER_ENV_PERSONAL       38
#define DMPAPER_FANFOLD_US         39
#define DMPAPER_FANFOLD_STD_GERMAN 40
#define DMPAPER_FANFOLD_LGL_GERMAN 41
3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098
#define DMPAPER_ISO_B4             42
#define DMPAPER_JAPANESE_POSTCARD  43
#define DMPAPER_9X11               44
#define DMPAPER_10X11              45
#define DMPAPER_15X11              46
#define DMPAPER_ENV_INVITE         47
#define DMPAPER_RESERVED_48        48
#define DMPAPER_RESERVED_49        49
#define DMPAPER_LETTER_EXTRA       50
#define DMPAPER_LEGAL_EXTRA        51
#define DMPAPER_TABLOID_EXTRA      52
#define DMPAPER_A4_EXTRA           53
#define DMPAPER_LETTER_TRANSVERSE  54
#define DMPAPER_A4_TRANSVERSE      55
3099
#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56
3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110
#define DMPAPER_A_PLUS             57
#define DMPAPER_B_PLUS             58
#define DMPAPER_LETTER_PLUS        59
#define DMPAPER_A4_PLUS            60
#define DMPAPER_A5_TRANSVERSE      61
#define DMPAPER_B5_TRANSVERSE      62
#define DMPAPER_A3_EXTRA           63
#define DMPAPER_A5_EXTRA           64
#define DMPAPER_B5_EXTRA           65
#define DMPAPER_A2                 66
#define DMPAPER_A3_TRANSVERSE      67
3111 3112
#define DMPAPER_A3_EXTRA_TRANSVERSE           68
#define DMPAPER_DBL_JAPANESE_POSTCARD         69
3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123
#define DMPAPER_A6                 70
#define DMPAPER_JENV_KAKU2         71
#define DMPAPER_JENV_KAKU3         72
#define DMPAPER_JENV_CHOU3         73
#define DMPAPER_JENV_CHOU4         74
#define DMPAPER_LETTER_ROTATED     75
#define DMPAPER_A3_ROTATED         76
#define DMPAPER_A4_ROTATED         77
#define DMPAPER_A5_ROTATED         78
#define DMPAPER_B4_JIS_ROTATED     79
#define DMPAPER_B5_JIS_ROTATED     80
3124 3125
#define DMPAPER_JAPANESE_POSTCARD_ROTATED     81
#define DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED 82
3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163
#define DMPAPER_A6_ROTATED         83
#define DMPAPER_JENV_KAKU2_ROTATED 84
#define DMPAPER_JENV_KAKU3_ROTATED 85
#define DMPAPER_JENV_CHOU3_ROTATED 86
#define DMPAPER_JENV_CHOU4_ROTATED 87
#define DMPAPER_B6_JIS             88
#define DMPAPER_B6_JIS_ROTATED     89
#define DMPAPER_12X11              90
#define DMPAPER_JENV_YOU4          91
#define DMPAPER_JENV_YOU4_ROTATED  92
#define DMPAPER_P16K               93
#define DMPAPER_P32K               94
#define DMPAPER_P32KBIG            95
#define DMPAPER_PENV_1             96
#define DMPAPER_PENV_2             97
#define DMPAPER_PENV_3             98
#define DMPAPER_PENV_4             99
#define DMPAPER_PENV_5             100
#define DMPAPER_PENV_6             101
#define DMPAPER_PENV_7             102
#define DMPAPER_PENV_8             103
#define DMPAPER_PENV_9             104
#define DMPAPER_PENV_10            105
#define DMPAPER_P16K_ROTATED       106
#define DMPAPER_P32K_ROTATED       107
#define DMPAPER_P32KBIG_ROTATED    108
#define DMPAPER_PENV_1_ROTATED     109
#define DMPAPER_PENV_2_ROTATED     110
#define DMPAPER_PENV_3_ROTATED     111
#define DMPAPER_PENV_4_ROTATED     112
#define DMPAPER_PENV_5_ROTATED     113
#define DMPAPER_PENV_6_ROTATED     114
#define DMPAPER_PENV_7_ROTATED     115
#define DMPAPER_PENV_8_ROTATED     116
#define DMPAPER_PENV_9_ROTATED     117
#define DMPAPER_PENV_10_ROTATED    118

#define DMPAPER_LAST               DMPAPER_PENV_10_ROTATED
3164
#define DMPAPER_USER               256
3165

3166
#define DMBIN_FIRST             DMBIN_UPPER
3167
#define DMBIN_UPPER		1
3168
#define DMBIN_ONLYONE           1
3169 3170 3171 3172 3173 3174
#define DMBIN_LOWER		2
#define DMBIN_MIDDLE		3
#define DMBIN_MANUAL		4
#define DMBIN_ENVELOPE		5
#define DMBIN_ENVMANUAL		6
#define DMBIN_AUTO		7
3175 3176 3177
#define DMBIN_TRACTOR           8
#define DMBIN_SMALLFMT          9
#define DMBIN_LARGEFMT          10
3178
#define DMBIN_LARGECAPACITY	11
3179 3180 3181 3182 3183 3184 3185 3186 3187
#define DMBIN_CASSETTE          14
#define DMBIN_FORMSOURCE        15
#define DMBIN_LAST              DMBIN_FORMSOURCE
#define DMBIN_USER              256

#define DMRES_DRAFT             (-1)
#define DMRES_LOW               (-2)
#define DMRES_MEDIUM            (-3)
#define DMRES_HIGH              (-4)
3188 3189 3190 3191

#define DMCOLOR_MONOCHROME	1
#define DMCOLOR_COLOR		2

3192 3193 3194 3195
#define DMDUP_SIMPLEX           1
#define DMDUP_VERTICAL          2
#define DMDUP_HORIZONTAL        3

3196 3197 3198
#define DMTT_BITMAP		1
#define DMTT_DOWNLOAD		2
#define DMTT_SUBDEV		3
3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225
#define DMTT_DOWNLOAD_OUTLINE   4

#define DMCOLLATE_FALSE         0
#define DMCOLLATE_TRUE          1

#define DMICMMETHOD_NONE        1
#define DMICMMETHOD_SYSTEM      2
#define DMICMMETHOD_DRIVER      3
#define DMICMMETHOD_DEVICE      4
#define DMICMMETHOD_USER        256

#define DMICM_SATURATE          1
#define DMICM_CONTRAST          2
#define DMICM_COLORMETRIC       3
#define DMICM_USER              256

#define DMMEDIA_STANDARD        1
#define DMMEDIA_TRANSPARENCY    2
#define DMMEDIA_GLOSSY          3
#define DMMEDIA_USER            256

#define DMDITHER_NONE           1
#define DMDITHER_COARSE         2
#define DMDITHER_FINE           3
#define DMDITHER_LINEART        4
#define DMDITHER_GRAYSCALE      5
#define DMDITHER_USER           256
3226

3227 3228 3229 3230 3231
#define DMDO_DEFAULT            0
#define DMDO_90                 1
#define DMDO_180                2
#define DMDO_270                3

3232
typedef struct
3233
{
3234
    INT    cbSize;
3235 3236 3237 3238
    LPCSTR   lpszDocName;
    LPCSTR   lpszOutput;
    LPCSTR   lpszDatatype;
    DWORD    fwType;
3239
} DOCINFOA, *LPDOCINFOA;
3240

3241
typedef struct
3242
{
3243
    INT    cbSize;
3244 3245 3246 3247
    LPCWSTR  lpszDocName;
    LPCWSTR  lpszOutput;
    LPCWSTR  lpszDatatype;
    DWORD    fwType;
3248
} DOCINFOW, *LPDOCINFOW;
3249 3250 3251 3252

DECL_WINELIB_TYPE_AW(DOCINFO)
DECL_WINELIB_TYPE_AW(LPDOCINFO)

3253
#define DI_APPBANDING     0x0001
3254

Brad Pepers's avatar
Brad Pepers committed
3255 3256 3257 3258 3259 3260
/* Flags for PolyDraw and GetPath */
#define PT_CLOSEFIGURE          0x0001
#define PT_LINETO               0x0002
#define PT_BEZIERTO             0x0004
#define PT_MOVETO               0x0006

3261 3262 3263 3264 3265 3266 3267
#define	RDH_RECTANGLES  1

typedef struct _RGNDATAHEADER {
    DWORD	dwSize;
    DWORD	iType;
    DWORD	nCount;
    DWORD	nRgnSize;
3268
    RECT	rcBound;
3269
} RGNDATAHEADER,*PRGNDATAHEADER;
3270 3271 3272 3273 3274 3275

typedef struct _RGNDATA {
    RGNDATAHEADER	rdh;
    char		Buffer[1];
} RGNDATA,*PRGNDATA,*LPRGNDATA;

3276
typedef BOOL (CALLBACK *ABORTPROC)(HDC, INT);
3277

3278 3279
typedef struct {
    DWORD	cb;
3280 3281
    CHAR	DeviceName[32];
    CHAR	DeviceString[128];
3282
    DWORD	StateFlags;
3283 3284
    CHAR	DeviceID[128];
    CHAR	DeviceKey[128];
3285
} DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA;
3286 3287 3288 3289 3290 3291

typedef struct {
    DWORD	cb;
    WCHAR	DeviceName[32];
    WCHAR	DeviceString[128];
    DWORD	StateFlags;
3292 3293
    WCHAR	DeviceID[128];
    WCHAR	DeviceKey[128];
3294
} DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW;
3295 3296 3297
DECL_WINELIB_TYPE_AW(DISPLAY_DEVICE)
DECL_WINELIB_TYPE_AW(PDISPLAY_DEVICE)
DECL_WINELIB_TYPE_AW(LPDISPLAY_DEVICE)
3298 3299 3300 3301 3302 3303 3304 3305

/* DISPLAY_DEVICE.StateFlags (?)*/
#define	DISPLAY_DEVICE_ATTACHED_TO_DESKTOP	0x00000001
#define	DISPLAY_DEVICE_MULTI_DRIVER		0x00000002
#define	DISPLAY_DEVICE_PRIMARY_DEVICE		0x00000004
#define	DISPLAY_DEVICE_MIRRORING_DRIVER		0x00000008
#define	DISPLAY_DEVICE_VGA_COMPATIBLE		0x00000010

3306 3307
#define GDI_ERROR                               (~0u)
#define HGDI_ERROR                              ((HANDLE)~(ULONG_PTR)0)
3308

3309 3310 3311 3312
/* AddFontResourceEx flags */
#define FR_PRIVATE  0x10
#define FR_NOT_ENUM 0x20

3313 3314 3315 3316 3317 3318
/* Mirroring flags */
#define LAYOUT_LTR                         0x00000000
#define LAYOUT_RTL                         0x00000001
#define LAYOUT_BITMAPORIENTATIONPRESERVED  0x00000008
#define NOMIRRORBITMAP                     0x80000000

3319 3320 3321 3322 3323 3324 3325 3326
/* For DRAWPATTERNRECT Escape */
typedef struct _DRAWPATRECT
{
    POINT ptPosition;
    POINT ptSize;
    WORD  wStyle;
    WORD  wPattern;
} DRAWPATRECT, *PDRAWPATRECT;
3327

3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340
typedef struct tagWCRANGE {
  WCHAR  wcLow;
  USHORT cGlyphs;
} WCRANGE, *PWCRANGE, *LPWCRANGE;

typedef struct tagGLYPHSET {
  DWORD    cbThis;
  DWORD    flAccel;
  DWORD    cGlyphsSupported;
  DWORD    cRanges;
  WCRANGE  ranges[1];
} GLYPHSET, *PGLYPHSET, *LPGLYPHSET;

3341 3342
#define GS_8BIT_INDICES 0x00000001

3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398
WINGDIAPI INT         WINAPI AbortDoc(HDC);
WINGDIAPI BOOL        WINAPI AbortPath(HDC);
WINGDIAPI INT         WINAPI AddFontResourceA(LPCSTR);
WINGDIAPI INT         WINAPI AddFontResourceW(LPCWSTR);
#define                      AddFontResource WINELIB_NAME_AW(AddFontResource)
WINGDIAPI INT         WINAPI AddFontResourceExA(LPCSTR, DWORD, PVOID);
WINGDIAPI INT         WINAPI AddFontResourceExW(LPCWSTR, DWORD, PVOID);
#define                      AddFontResourceEx WINELIB_NAME_AW(AddFontResourceEx)
WINGDIAPI HANDLE      WINAPI AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD *);
WINGDIAPI BOOL        WINAPI AlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
WINGDIAPI BOOL        WINAPI AngleArc(HDC, INT, INT, DWORD, FLOAT, FLOAT);
WINGDIAPI BOOL        WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
WINGDIAPI BOOL        WINAPI Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
WINGDIAPI BOOL        WINAPI ArcTo(HDC, INT, INT, INT, INT, INT, INT, INT, INT);
WINGDIAPI BOOL        WINAPI BeginPath(HDC);
WINGDIAPI BOOL        WINAPI BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD);
WINGDIAPI INT         WINAPI ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR*);
WINGDIAPI BOOL        WINAPI Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
WINGDIAPI HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
WINGDIAPI BOOL        WINAPI CloseFigure(HDC);
WINGDIAPI HMETAFILE   WINAPI CloseMetaFile(HDC);
WINGDIAPI INT         WINAPI CombineRgn(HRGN,HRGN,HRGN,INT);
WINGDIAPI BOOL        WINAPI CombineTransform(LPXFORM,const XFORM *,const XFORM *);
WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
#define                      CopyEnhMetaFile WINELIB_NAME_AW(CopyEnhMetaFile)
WINGDIAPI HMETAFILE   WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
WINGDIAPI HMETAFILE   WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
#define                      CopyMetaFile WINELIB_NAME_AW(CopyMetaFile)
WINGDIAPI HBITMAP     WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID);
WINGDIAPI HBITMAP     WINAPI CreateBitmapIndirect(const BITMAP*);
WINGDIAPI HBRUSH      WINAPI CreateBrushIndirect(const LOGBRUSH*);
WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
#define                      CreateColorSpace WINELIB_NAME_AW(CreateColorSpace)
WINGDIAPI HBITMAP     WINAPI CreateCompatibleBitmap(HDC,INT,INT);
WINGDIAPI HDC         WINAPI CreateCompatibleDC(HDC);
WINGDIAPI HDC         WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
WINGDIAPI HDC         WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
#define                      CreateDC WINELIB_NAME_AW(CreateDC)
WINGDIAPI HBITMAP     WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,LPCVOID,const BITMAPINFO*,UINT);
WINGDIAPI HBRUSH      WINAPI CreateDIBPatternBrush(HGLOBAL,UINT);
WINGDIAPI HBRUSH      WINAPI CreateDIBPatternBrushPt(const void*,UINT);
WINGDIAPI HBITMAP     WINAPI CreateDIBSection(HDC, CONST BITMAPINFO *, UINT, VOID **, HANDLE, DWORD offset);
WINGDIAPI HBITMAP     WINAPI CreateDiscardableBitmap(HDC,INT,INT);
WINGDIAPI HRGN        WINAPI CreateEllipticRgn(INT,INT,INT,INT);
WINGDIAPI HRGN        WINAPI CreateEllipticRgnIndirect(const RECT *);
WINGDIAPI HDC         WINAPI CreateEnhMetaFileA(HDC,LPCSTR,const RECT*,LPCSTR);
WINGDIAPI HDC         WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,const RECT*,LPCWSTR);
#define                      CreateEnhMetaFile WINELIB_NAME_AW(CreateEnhMetaFile)
WINGDIAPI HFONT       WINAPI CreateFontA(INT,INT,INT,INT,INT,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
WINGDIAPI HFONT       WINAPI CreateFontW(INT,INT,INT,INT,INT,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
#define                      CreateFont WINELIB_NAME_AW(CreateFont)
WINGDIAPI HFONT       WINAPI CreateFontIndirectA(const LOGFONTA*);
WINGDIAPI HFONT       WINAPI CreateFontIndirectW(const LOGFONTW*);
#define                      CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect)
3399 3400 3401
WINGDIAPI HFONT       WINAPI CreateFontIndirectExA(const ENUMLOGFONTEXDVA*);
WINGDIAPI HFONT       WINAPI CreateFontIndirectExW(const ENUMLOGFONTEXDVW*);
#define                      CreateFontIndirectEx WINELIB_NAME_AW(CreateFontIndirectEx)
3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599
WINGDIAPI HPALETTE    WINAPI CreateHalftonePalette(HDC);
WINGDIAPI HBRUSH      WINAPI CreateHatchBrush(INT,COLORREF);
WINGDIAPI HDC         WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
WINGDIAPI HDC         WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
#define                      CreateIC WINELIB_NAME_AW(CreateIC)
WINGDIAPI HDC         WINAPI CreateMetaFileA(LPCSTR);
WINGDIAPI HDC         WINAPI CreateMetaFileW(LPCWSTR);
#define                      CreateMetaFile WINELIB_NAME_AW(CreateMetaFile)
WINGDIAPI HPALETTE    WINAPI CreatePalette(const LOGPALETTE*);
WINGDIAPI HBRUSH      WINAPI CreatePatternBrush(HBITMAP);
WINGDIAPI HPEN        WINAPI CreatePen(INT,INT,COLORREF);
WINGDIAPI HPEN        WINAPI CreatePenIndirect(const LOGPEN*);
WINGDIAPI HRGN        WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,INT,INT);
WINGDIAPI HRGN        WINAPI CreatePolygonRgn(const POINT*,INT,INT);
WINGDIAPI HRGN        WINAPI CreateRectRgn(INT,INT,INT,INT);
WINGDIAPI HRGN        WINAPI CreateRectRgnIndirect(const RECT*);
WINGDIAPI HRGN        WINAPI CreateRoundRectRgn(INT,INT,INT,INT,INT,INT);
WINGDIAPI BOOL        WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR);
WINGDIAPI BOOL        WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
#define                      CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource)
WINGDIAPI HBRUSH      WINAPI CreateSolidBrush(COLORREF);
WINGDIAPI BOOL        WINAPI DPtoLP(HDC,LPPOINT,INT);
WINGDIAPI BOOL        WINAPI DeleteColorSpace(HCOLORSPACE);
WINGDIAPI BOOL        WINAPI DeleteDC(HDC);
WINGDIAPI BOOL        WINAPI DeleteEnhMetaFile(HENHMETAFILE);
WINGDIAPI BOOL        WINAPI DeleteMetaFile(HMETAFILE);
WINGDIAPI BOOL        WINAPI DeleteObject(HGDIOBJ);
WINGDIAPI INT         WINAPI DescribePixelFormat(HDC,int,UINT,LPPIXELFORMATDESCRIPTOR);
WINGDIAPI INT         WINAPI DrawEscape(HDC,INT,INT,LPCSTR);
WINGDIAPI BOOL        WINAPI Ellipse(HDC,INT,INT,INT,INT);
WINGDIAPI INT         WINAPI EndDoc(HDC);
WINGDIAPI BOOL        WINAPI EndPath(HDC);
WINGDIAPI BOOL        WINAPI EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,LPVOID,const RECT*);
WINGDIAPI INT         WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
WINGDIAPI INT         WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
#define                      EnumFontFamilies WINELIB_NAME_AW(EnumFontFamilies)
WINGDIAPI INT         WINAPI EnumFontFamiliesExA(HDC,LPLOGFONTA,FONTENUMPROCA,LPARAM,DWORD);
WINGDIAPI INT         WINAPI EnumFontFamiliesExW(HDC,LPLOGFONTW,FONTENUMPROCW,LPARAM,DWORD);
#define                      EnumFontFamiliesEx WINELIB_NAME_AW(EnumFontFamiliesEx)
WINGDIAPI INT         WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
WINGDIAPI INT         WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
#define                      EnumFonts WINELIB_NAME_AW(EnumFonts)
WINGDIAPI INT         WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM);
WINGDIAPI INT         WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM);
#define                      EnumICMProfiles WINELIB_NAME_AW(EnumICMProfiles)
WINGDIAPI BOOL        WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
WINGDIAPI INT         WINAPI EnumObjects(HDC,INT,GOBJENUMPROC,LPARAM);
WINGDIAPI BOOL        WINAPI EqualRgn(HRGN,HRGN);
WINGDIAPI INT         WINAPI Escape(HDC,INT,INT,LPCSTR,LPVOID);
WINGDIAPI INT         WINAPI ExcludeClipRect(HDC,INT,INT,INT,INT);
WINGDIAPI HPEN        WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*);
WINGDIAPI HRGN        WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*);
WINGDIAPI INT         WINAPI ExtEscape(HDC,INT,INT,LPCSTR,INT,LPSTR);
WINGDIAPI BOOL        WINAPI ExtFloodFill(HDC,INT,INT,COLORREF,UINT);
WINGDIAPI INT         WINAPI ExtSelectClipRgn(HDC,HRGN,INT);
WINGDIAPI BOOL        WINAPI ExtTextOutA(HDC,INT,INT,UINT,const RECT*,LPCSTR,UINT,const INT*);
WINGDIAPI BOOL        WINAPI ExtTextOutW(HDC,INT,INT,UINT,const RECT*,LPCWSTR,UINT,const INT*);
#define                      ExtTextOut WINELIB_NAME_AW(ExtTextOut)
WINGDIAPI BOOL        WINAPI FillPath(HDC);
WINGDIAPI BOOL        WINAPI FillRgn(HDC,HRGN,HBRUSH);
WINGDIAPI BOOL        WINAPI FixBrushOrgEx(HDC,INT,INT,LPPOINT);
WINGDIAPI BOOL        WINAPI FlattenPath(HDC);
WINGDIAPI BOOL        WINAPI FloodFill(HDC,INT,INT,COLORREF);
WINGDIAPI BOOL        WINAPI FrameRgn(HDC,HRGN,HBRUSH,INT,INT);
WINGDIAPI BOOL        WINAPI GdiAlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
WINGDIAPI BOOL        WINAPI GdiComment(HDC,UINT,const BYTE *);
WINGDIAPI DEVMODEW *  WINAPI GdiConvertToDevmodeW(const DEVMODEA *);
WINGDIAPI BOOL        WINAPI GdiFlush(void);
WINGDIAPI LONG        WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *);
WINGDIAPI DWORD       WINAPI GdiGetCodePage(HDC);
WINGDIAPI BOOL        WINAPI GdiGradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
WINGDIAPI BOOL        WINAPI GdiIsMetaFileDC(HDC);
WINGDIAPI BOOL        WINAPI GdiIsMetaPrintDC(HDC);
WINGDIAPI BOOL        WINAPI GdiIsPlayMetafileDC(HDC);
WINGDIAPI BOOL        WINAPI GdiTransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
WINGDIAPI INT         WINAPI GetArcDirection(HDC);
WINGDIAPI BOOL        WINAPI GetAspectRatioFilterEx(HDC,LPSIZE);
WINGDIAPI LONG        WINAPI GetBitmapBits(HBITMAP,LONG,LPVOID);
WINGDIAPI BOOL        WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE);
WINGDIAPI BOOL        WINAPI GetBrushOrgEx(HDC,LPPOINT);
WINGDIAPI COLORREF    WINAPI GetBkColor(HDC);
WINGDIAPI INT         WINAPI GetBkMode(HDC);
WINGDIAPI UINT        WINAPI GetBoundsRect(HDC,LPRECT,UINT);
WINGDIAPI BOOL        WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
WINGDIAPI BOOL        WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
#define                      GetCharABCWidths WINELIB_NAME_AW(GetCharABCWidths)
WINGDIAPI BOOL        WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
WINGDIAPI BOOL        WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
#define                      GetCharABCWidthsFloat WINELIB_NAME_AW(GetCharABCWidthsFloat)
WINGDIAPI BOOL        WINAPI GetCharABCWidthsI(HDC,UINT,UINT,LPWORD,LPABC);
WINGDIAPI DWORD       WINAPI GetCharacterPlacementA(HDC,LPCSTR,INT,INT,GCP_RESULTSA*,DWORD);
WINGDIAPI DWORD       WINAPI GetCharacterPlacementW(HDC,LPCWSTR,INT,INT,GCP_RESULTSW*,DWORD);
#define                      GetCharacterPlacement WINELIB_NAME_AW(GetCharacterPlacement)
WINGDIAPI BOOL        WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT);
WINGDIAPI BOOL        WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT);
#define                      GetCharWidth32 WINELIB_NAME_AW(GetCharWidth32)
WINGDIAPI BOOL        WINAPI GetCharWidthA(HDC,UINT,UINT,LPINT);
WINGDIAPI BOOL        WINAPI GetCharWidthI(HDC,UINT,UINT,LPWORD,LPINT);
WINGDIAPI BOOL        WINAPI GetCharWidthW(HDC,UINT,UINT,LPINT);
#define                      GetCharWidth WINELIB_NAME_AW(GetCharWidth)
WINGDIAPI BOOL        WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT);
WINGDIAPI BOOL        WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT);
#define                      GetCharWidthFloat WINELIB_NAME_AW(GetCharWidthFloat)
WINGDIAPI INT         WINAPI GetClipBox(HDC,LPRECT);
WINGDIAPI INT         WINAPI GetClipRgn(HDC,HRGN);
WINGDIAPI BOOL        WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
WINGDIAPI HCOLORSPACE WINAPI GetColorSpace(HDC);
WINGDIAPI HGDIOBJ     WINAPI GetCurrentObject(HDC,UINT);
WINGDIAPI BOOL        WINAPI GetCurrentPositionEx(HDC,LPPOINT);
WINGDIAPI INT         WINAPI GetDeviceCaps(HDC,INT);
WINGDIAPI BOOL        WINAPI GetDeviceGammaRamp(HDC,LPVOID);
WINGDIAPI COLORREF    WINAPI GetDCBrushColor(HDC);
WINGDIAPI BOOL        WINAPI GetDCOrgEx(HDC,LPPOINT);
WINGDIAPI COLORREF    WINAPI GetDCPenColor(HDC);
WINGDIAPI UINT        WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
WINGDIAPI INT         WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,LPVOID,LPBITMAPINFO,UINT);
WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
#define                      GetEnhMetaFile WINELIB_NAME_AW(GetEnhMetaFile)
WINGDIAPI UINT        WINAPI GetEnhMetaFileBits(HENHMETAFILE,UINT,LPBYTE);
WINGDIAPI UINT        WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR);
WINGDIAPI UINT        WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR);
#define                      GetEnhMetaFileDescription WINELIB_NAME_AW(GetEnhMetaFileDescription)
WINGDIAPI UINT        WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
WINGDIAPI UINT        WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
WINGDIAPI DWORD       WINAPI GetFontData(HDC,DWORD,DWORD,LPVOID,DWORD);
WINGDIAPI DWORD       WINAPI GetFontLanguageInfo(HDC);
WINGDIAPI DWORD       WINAPI GetFontUnicodeRanges(HDC,LPGLYPHSET);
WINGDIAPI DWORD       WINAPI GetGlyphIndicesA(HDC,LPCSTR,INT,LPWORD,DWORD);
WINGDIAPI DWORD       WINAPI GetGlyphIndicesW(HDC,LPCWSTR,INT,LPWORD,DWORD);
#define                    GetGlyphIndices WINELIB_NAME_AW(GetGlyphIndices)
WINGDIAPI DWORD       WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
WINGDIAPI DWORD       WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
#define                      GetGlyphOutline WINELIB_NAME_AW(GetGlyphOutline)
WINGDIAPI INT         WINAPI GetGraphicsMode(HDC);
WINGDIAPI BOOL        WINAPI GetICMProfileA(HDC,LPDWORD,LPSTR);
WINGDIAPI BOOL        WINAPI GetICMProfileW(HDC,LPDWORD,LPWSTR);
#define                      GetICMProfile WINELIB_NAME_AW(GetICMProfile)
WINGDIAPI DWORD       WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR);
WINGDIAPI DWORD       WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR);
#define                      GetKerningPairs WINELIB_NAME_AW(GetKerningPairs)
WINGDIAPI DWORD       WINAPI GetLayout(HDC);
WINGDIAPI BOOL        WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD);
WINGDIAPI BOOL        WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD);
#define                      GetLogColorSpace WINELIB_NAME_AW(GetLogColorSpace)
WINGDIAPI INT         WINAPI GetMapMode(HDC);
WINGDIAPI HMETAFILE   WINAPI GetMetaFileA(LPCSTR);
WINGDIAPI HMETAFILE   WINAPI GetMetaFileW(LPCWSTR);
#define                      GetMetaFile WINELIB_NAME_AW(GetMetaFile)
WINGDIAPI UINT        WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,LPVOID);
WINGDIAPI INT         WINAPI GetMetaRgn(HDC,HRGN);
WINGDIAPI BOOL        WINAPI GetMiterLimit(HDC, PFLOAT);
WINGDIAPI DWORD       WINAPI GetNearestColor(HDC,DWORD);
WINGDIAPI UINT        WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF);
WINGDIAPI INT         WINAPI GetObjectA(HGDIOBJ,INT,LPVOID);
WINGDIAPI INT         WINAPI GetObjectW(HGDIOBJ,INT,LPVOID);
#define                      GetObject WINELIB_NAME_AW(GetObject)
WINGDIAPI DWORD       WINAPI GetObjectType(HGDIOBJ);
WINGDIAPI UINT        WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA);
WINGDIAPI UINT        WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW);
#define                      GetOutlineTextMetrics WINELIB_NAME_AW(GetOutlineTextMetrics)
WINGDIAPI UINT        WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
WINGDIAPI INT         WINAPI GetPath(HDC,LPPOINT,LPBYTE,INT);
WINGDIAPI COLORREF    WINAPI GetPixel(HDC,INT,INT);
WINGDIAPI INT         WINAPI GetPixelFormat(HDC);
WINGDIAPI INT         WINAPI GetPolyFillMode(HDC);
WINGDIAPI INT         WINAPI GetRandomRgn(HDC,HRGN,INT);
WINGDIAPI BOOL        WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
WINGDIAPI DWORD       WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA);
WINGDIAPI INT         WINAPI GetRelAbs(HDC,DWORD);
WINGDIAPI INT         WINAPI GetRgnBox(HRGN,LPRECT);
WINGDIAPI INT         WINAPI GetROP2(HDC);
WINGDIAPI HGDIOBJ     WINAPI GetStockObject(INT);
WINGDIAPI INT         WINAPI GetStretchBltMode(HDC);
WINGDIAPI UINT        WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY);
WINGDIAPI UINT        WINAPI GetSystemPaletteUse(HDC);
WINGDIAPI UINT        WINAPI GetTextAlign(HDC);
WINGDIAPI INT         WINAPI GetTextCharacterExtra(HDC);
WINGDIAPI UINT        WINAPI GetTextCharset(HDC);
WINGDIAPI UINT        WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD);
WINGDIAPI COLORREF    WINAPI GetTextColor(HDC);
WINGDIAPI BOOL        WINAPI GetTextExtentExPointA(HDC,LPCSTR,INT,INT,LPINT,LPINT,LPSIZE);
WINGDIAPI BOOL        WINAPI GetTextExtentExPointW(HDC,LPCWSTR,INT,INT,LPINT,LPINT,LPSIZE);
#define                      GetTextExtentExPoint WINELIB_NAME_AW(GetTextExtentExPoint)
WINGDIAPI BOOL        WINAPI GetTextExtentPointA(HDC,LPCSTR,INT,LPSIZE);
WINGDIAPI BOOL        WINAPI GetTextExtentPointW(HDC,LPCWSTR,INT,LPSIZE);
#define                      GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint)
WINGDIAPI BOOL        WINAPI GetTextExtentPoint32A(HDC,LPCSTR,INT,LPSIZE);
WINGDIAPI BOOL        WINAPI GetTextExtentPoint32W(HDC,LPCWSTR,INT,LPSIZE);
#define                      GetTextExtentPoint32 WINELIB_NAME_AW(GetTextExtentPoint32)
WINGDIAPI BOOL        WINAPI GetTextExtentExPointI(HDC,const WORD*,INT,INT,LPINT,LPINT,LPSIZE);
WINGDIAPI BOOL        WINAPI GetTextExtentPointI(HDC,const WORD*,INT,LPSIZE);
WINGDIAPI INT         WINAPI GetTextFaceA(HDC,INT,LPSTR);
WINGDIAPI INT         WINAPI GetTextFaceW(HDC,INT,LPWSTR);
#define                      GetTextFace WINELIB_NAME_AW(GetTextFace)
WINGDIAPI BOOL        WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA);
WINGDIAPI BOOL        WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW);
#define                      GetTextMetrics WINELIB_NAME_AW(GetTextMetrics)
3600
WINGDIAPI BOOL        WINAPI GetTransform(HDC,DWORD,XFORM*);
3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613
WINGDIAPI BOOL        WINAPI GetViewportExtEx(HDC,LPSIZE);
WINGDIAPI BOOL        WINAPI GetViewportOrgEx(HDC,LPPOINT);
WINGDIAPI BOOL        WINAPI GetWindowExtEx(HDC,LPSIZE);
WINGDIAPI BOOL        WINAPI GetWindowOrgEx(HDC,LPPOINT);
WINGDIAPI UINT        WINAPI GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC);
WINGDIAPI BOOL        WINAPI GetWorldTransform(HDC,LPXFORM);
WINGDIAPI BOOL        WINAPI GradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
WINGDIAPI INT         WINAPI IntersectClipRect(HDC,INT,INT,INT,INT);
WINGDIAPI BOOL        WINAPI InvertRgn(HDC,HRGN);
WINGDIAPI BOOL        WINAPI LineDDA(INT,INT,INT,INT,LINEDDAPROC,LPARAM);
WINGDIAPI BOOL        WINAPI LineTo(HDC,INT,INT);
WINGDIAPI BOOL        WINAPI LPtoDP(HDC,LPPOINT,INT);
WINGDIAPI BOOL        WINAPI MaskBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,HBITMAP,INT,INT,DWORD);
3614
WINGDIAPI BOOL        WINAPI MirrorRgn(HWND,HRGN);
3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643
WINGDIAPI BOOL        WINAPI ModifyWorldTransform(HDC,const XFORM *, DWORD);
WINGDIAPI BOOL        WINAPI MoveToEx(HDC,INT,INT,LPPOINT);
WINGDIAPI INT         WINAPI OffsetClipRgn(HDC,INT,INT);
WINGDIAPI INT         WINAPI OffsetRgn(HRGN,INT,INT);
WINGDIAPI BOOL        WINAPI OffsetViewportOrgEx(HDC,INT,INT,LPPOINT);
WINGDIAPI BOOL        WINAPI OffsetWindowOrgEx(HDC,INT,INT,LPPOINT);
WINGDIAPI BOOL        WINAPI PaintRgn(HDC,HRGN);
WINGDIAPI BOOL        WINAPI PatBlt(HDC,INT,INT,INT,INT,DWORD);
WINGDIAPI HRGN        WINAPI PathToRegion(HDC);
WINGDIAPI BOOL        WINAPI Pie(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
WINGDIAPI BOOL        WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,const RECT*);
WINGDIAPI BOOL        WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT);
WINGDIAPI BOOL        WINAPI PlayMetaFile(HDC,HMETAFILE);
WINGDIAPI BOOL        WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT);
WINGDIAPI BOOL        WINAPI PlgBlt(HDC,const POINT*,HDC,INT,INT,INT,INT,HBITMAP,INT,INT);
WINGDIAPI BOOL        WINAPI PolyBezier(HDC,const POINT*,DWORD);
WINGDIAPI BOOL        WINAPI PolyBezierTo(HDC,const POINT*,DWORD);
WINGDIAPI BOOL        WINAPI PolyDraw(HDC,const POINT*,const BYTE*,DWORD);
WINGDIAPI BOOL        WINAPI PolyPolygon(HDC,const POINT*,const INT*,UINT);
WINGDIAPI BOOL        WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD);
WINGDIAPI BOOL        WINAPI Polygon(HDC,const POINT*,INT);
WINGDIAPI BOOL        WINAPI Polyline(HDC,const POINT*,INT);
WINGDIAPI BOOL        WINAPI PolylineTo(HDC,const POINT*,DWORD);
WINGDIAPI BOOL        WINAPI PtInRegion(HRGN,INT,INT);
WINGDIAPI BOOL        WINAPI PtVisible(HDC,INT,INT);
WINGDIAPI UINT        WINAPI RealizePalette(HDC);
WINGDIAPI BOOL        WINAPI Rectangle(HDC,INT,INT,INT,INT);
WINGDIAPI BOOL        WINAPI RectInRegion(HRGN,const RECT *);
WINGDIAPI BOOL        WINAPI RectVisible(HDC,const RECT*);
3644
WINGDIAPI BOOL        WINAPI RemoveFontMemResourceEx(HANDLE);
3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735
WINGDIAPI BOOL        WINAPI RemoveFontResourceA(LPCSTR);
WINGDIAPI BOOL        WINAPI RemoveFontResourceW(LPCWSTR);
#define                      RemoveFontResource WINELIB_NAME_AW(RemoveFontResource)
WINGDIAPI BOOL        WINAPI RemoveFontResourceExA(LPCSTR, DWORD, PVOID);
WINGDIAPI BOOL        WINAPI RemoveFontResourceExW(LPCWSTR, DWORD, PVOID);
#define                      RemoveFontResourceEx WINELIB_NAME_AW(RemoveFontResourceEx)
WINGDIAPI HDC         WINAPI ResetDCA(HDC,const DEVMODEA *);
WINGDIAPI HDC         WINAPI ResetDCW(HDC,const DEVMODEW *);
#define                      ResetDC WINELIB_NAME_AW(ResetDC)
WINGDIAPI BOOL        WINAPI ResizePalette(HPALETTE,UINT);
WINGDIAPI BOOL        WINAPI RestoreDC(HDC,INT);
WINGDIAPI BOOL        WINAPI RoundRect(HDC,INT,INT,INT,INT,INT,INT);
WINGDIAPI INT         WINAPI SaveDC(HDC);
WINGDIAPI BOOL        WINAPI ScaleViewportExtEx(HDC,INT,INT,INT,INT,LPSIZE);
WINGDIAPI BOOL        WINAPI ScaleWindowExtEx(HDC,INT,INT,INT,INT,LPSIZE);
WINGDIAPI BOOL        WINAPI SelectClipPath(HDC,INT);
WINGDIAPI INT         WINAPI SelectClipRgn(HDC,HRGN);
WINGDIAPI HGDIOBJ     WINAPI SelectObject(HDC,HGDIOBJ);
WINGDIAPI HPALETTE    WINAPI SelectPalette(HDC,HPALETTE,BOOL);
WINGDIAPI INT         WINAPI SetAbortProc(HDC,ABORTPROC);
WINGDIAPI INT         WINAPI SetArcDirection(HDC,INT);
WINGDIAPI LONG        WINAPI SetBitmapBits(HBITMAP,LONG,LPCVOID);
WINGDIAPI BOOL        WINAPI SetBitmapDimensionEx(HBITMAP,INT,INT,LPSIZE);
WINGDIAPI COLORREF    WINAPI SetBkColor(HDC,COLORREF);
WINGDIAPI INT         WINAPI SetBkMode(HDC,INT);
WINGDIAPI UINT        WINAPI SetBoundsRect(HDC,const RECT*,UINT);
WINGDIAPI BOOL        WINAPI SetBrushOrgEx(HDC,INT,INT,LPPOINT);
WINGDIAPI BOOL        WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
WINGDIAPI HCOLORSPACE WINAPI SetColorSpace(HDC,HCOLORSPACE);
WINGDIAPI BOOL        WINAPI SetDeviceGammaRamp(HDC,LPVOID);
WINGDIAPI COLORREF    WINAPI SetDCBrushColor(HDC,COLORREF);
WINGDIAPI COLORREF    WINAPI SetDCPenColor(HDC, COLORREF);
WINGDIAPI UINT        WINAPI SetDIBColorTable(HDC,UINT,UINT,CONST RGBQUAD*);
WINGDIAPI INT         WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
WINGDIAPI INT         WINAPI SetDIBitsToDevice(HDC,INT,INT,DWORD,DWORD,INT,INT,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
WINGDIAPI HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE *);
WINGDIAPI INT         WINAPI SetGraphicsMode(HDC,INT);
WINGDIAPI INT         WINAPI SetICMMode(HDC,INT);
WINGDIAPI BOOL        WINAPI SetICMProfileA(HDC,LPSTR);
WINGDIAPI BOOL        WINAPI SetICMProfileW(HDC,LPWSTR);
#define                      SetICMProfile WINELIB_NAME_AW(SetICMProfile)
WINGDIAPI DWORD       WINAPI SetLayout(HDC,DWORD);
WINGDIAPI INT         WINAPI SetMapMode(HDC,INT);
WINGDIAPI DWORD       WINAPI SetMapperFlags(HDC,DWORD);
WINGDIAPI HMETAFILE   WINAPI SetMetaFileBitsEx(UINT,const BYTE*);
WINGDIAPI INT         WINAPI SetMetaRgn(HDC);
WINGDIAPI BOOL        WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT);
WINGDIAPI UINT        WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*);
WINGDIAPI COLORREF    WINAPI SetPixel(HDC,INT,INT,COLORREF);
WINGDIAPI BOOL        WINAPI SetPixelV(HDC,INT,INT,COLORREF);
WINGDIAPI BOOL        WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
WINGDIAPI INT         WINAPI SetPolyFillMode(HDC,INT);
WINGDIAPI BOOL        WINAPI SetRectRgn(HRGN,INT,INT,INT,INT);
WINGDIAPI INT         WINAPI SetRelAbs(HDC,INT);
WINGDIAPI INT         WINAPI SetROP2(HDC,INT);
WINGDIAPI INT         WINAPI SetStretchBltMode(HDC,INT);
WINGDIAPI UINT        WINAPI SetSystemPaletteUse(HDC,UINT);
WINGDIAPI UINT        WINAPI SetTextAlign(HDC,UINT);
WINGDIAPI INT         WINAPI SetTextCharacterExtra(HDC,INT);
WINGDIAPI COLORREF    WINAPI SetTextColor(HDC,COLORREF);
WINGDIAPI BOOL        WINAPI SetTextJustification(HDC,INT,INT);
WINGDIAPI BOOL        WINAPI SetViewportExtEx(HDC,INT,INT,LPSIZE);
WINGDIAPI BOOL        WINAPI SetViewportOrgEx(HDC,INT,INT,LPPOINT);
WINGDIAPI BOOL        WINAPI SetWindowExtEx(HDC,INT,INT,LPSIZE);
WINGDIAPI BOOL        WINAPI SetWindowOrgEx(HDC,INT,INT,LPPOINT);
WINGDIAPI HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,CONST BYTE*,HDC,CONST METAFILEPICT *);
WINGDIAPI BOOL        WINAPI SetWorldTransform(HDC,const XFORM*);
WINGDIAPI INT         WINAPI StartDocA(HDC,const DOCINFOA*);
WINGDIAPI INT         WINAPI StartDocW(HDC,const DOCINFOW*);
#define                      StartDoc WINELIB_NAME_AW(StartDoc)
WINGDIAPI INT         WINAPI StartPage(HDC);
WINGDIAPI INT         WINAPI EndPage(HDC);
WINGDIAPI BOOL        WINAPI StretchBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,INT,INT,DWORD);
WINGDIAPI INT         WINAPI StretchDIBits(HDC,INT,INT,INT,INT,INT,INT,INT,INT,const VOID*,const BITMAPINFO*,UINT,DWORD);
WINGDIAPI BOOL        WINAPI StrokeAndFillPath(HDC);
WINGDIAPI BOOL        WINAPI StrokePath(HDC);
WINGDIAPI BOOL        WINAPI SwapBuffers(HDC);
WINGDIAPI BOOL        WINAPI TextOutA(HDC,INT,INT,LPCSTR,INT);
WINGDIAPI BOOL        WINAPI TextOutW(HDC,INT,INT,LPCWSTR,INT);
#define                      TextOut WINELIB_NAME_AW(TextOut)
WINGDIAPI BOOL        WINAPI TranslateCharsetInfo(LPDWORD,LPCHARSETINFO,DWORD);
WINGDIAPI BOOL        WINAPI TransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
WINGDIAPI BOOL        WINAPI UnrealizeObject(HGDIOBJ);
WINGDIAPI BOOL        WINAPI UpdateColors(HDC);
WINGDIAPI BOOL        WINAPI UpdateICMRegKeyA(DWORD,LPSTR,LPSTR,UINT);
WINGDIAPI BOOL        WINAPI UpdateICMRegKeyW(DWORD,LPWSTR,LPWSTR,UINT);
#define                      UpdateICMRegKey WINELIB_NAME_AW(UpdateICMRegKey)
WINGDIAPI BOOL        WINAPI WidenPath(HDC);
WINGDIAPI BOOL        WINAPI PolyTextOutA(HDC,const POLYTEXTA*,INT);
WINGDIAPI BOOL        WINAPI PolyTextOutW(HDC,const POLYTEXTW*,INT);
#define                      PolyTextOut WINELIB_NAME_AW(PolyTextOut)
3736

3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769
/* These defines are used by wglSwapLayerBuffers */
#define WGL_SWAP_MAIN_PLANE (1 <<  0)
#define WGL_SWAP_OVERLAY1   (1 <<  1)
#define WGL_SWAP_OVERLAY2   (1 <<  2)
#define WGL_SWAP_OVERLAY3   (1 <<  3)
#define WGL_SWAP_OVERLAY4   (1 <<  4)
#define WGL_SWAP_OVERLAY5   (1 <<  5)
#define WGL_SWAP_OVERLAY6   (1 <<  6)
#define WGL_SWAP_OVERLAY7   (1 <<  7)
#define WGL_SWAP_OVERLAY8   (1 <<  8)
#define WGL_SWAP_OVERLAY9   (1 <<  9)
#define WGL_SWAP_OVERLAY10  (1 << 10)
#define WGL_SWAP_OVERLAY11  (1 << 11)
#define WGL_SWAP_OVERLAY12  (1 << 12)
#define WGL_SWAP_OVERLAY13  (1 << 13)
#define WGL_SWAP_OVERLAY14  (1 << 14)
#define WGL_SWAP_OVERLAY15  (1 << 15)
#define WGL_SWAP_UNDERLAY1  (1 << 16)
#define WGL_SWAP_UNDERLAY2  (1 << 17)
#define WGL_SWAP_UNDERLAY3  (1 << 18)
#define WGL_SWAP_UNDERLAY4  (1 << 19)
#define WGL_SWAP_UNDERLAY5  (1 << 20)
#define WGL_SWAP_UNDERLAY6  (1 << 21)
#define WGL_SWAP_UNDERLAY7  (1 << 22)
#define WGL_SWAP_UNDERLAY8  (1 << 23)
#define WGL_SWAP_UNDERLAY9  (1 << 24)
#define WGL_SWAP_UNDERLAY10 (1 << 25)
#define WGL_SWAP_UNDERLAY11 (1 << 26)
#define WGL_SWAP_UNDERLAY12 (1 << 27)
#define WGL_SWAP_UNDERLAY13 (1 << 28)
#define WGL_SWAP_UNDERLAY14 (1 << 29)
#define WGL_SWAP_UNDERLAY15 (1 << 30)

3770
/* WGL prototypes */
3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784
WINGDIAPI HGLRC   WINAPI wglCreateContext(HDC);
WINGDIAPI HGLRC   WINAPI wglCreateLayerContext(HDC,INT);
WINGDIAPI BOOL    WINAPI wglCopyContext(HGLRC,HGLRC,UINT);
WINGDIAPI BOOL    WINAPI wglDeleteContext(HGLRC);
WINGDIAPI BOOL    WINAPI wglDescribeLayerPlane(HDC,INT,INT,UINT,LPLAYERPLANEDESCRIPTOR);
WINGDIAPI HGLRC   WINAPI wglGetCurrentContext(void);
WINGDIAPI HDC     WINAPI wglGetCurrentDC(void);
WINGDIAPI INT     WINAPI wglGetLayerPaletteEntries(HDC,INT,INT,INT,const COLORREF *);
WINGDIAPI PROC    WINAPI wglGetProcAddress(LPCSTR);
WINGDIAPI BOOL    WINAPI wglMakeCurrent(HDC,HGLRC);
WINGDIAPI BOOL    WINAPI wglRealizeLayerPalette(HDC,INT,BOOL);
WINGDIAPI INT     WINAPI wglSetLayerPaletteEntries(HDC,INT,INT,INT,const COLORREF *);
WINGDIAPI BOOL    WINAPI wglShareLists(HGLRC,HGLRC);
WINGDIAPI BOOL    WINAPI wglSwapLayerBuffers(HDC,UINT);
3785 3786 3787 3788 3789 3790
WINGDIAPI BOOL    WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
WINGDIAPI BOOL    WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
#define                  wglUseFontBitmaps WINELIB_NAME_AW(wglUseFontBitmaps)
WINGDIAPI BOOL    WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,INT,LPGLYPHMETRICSFLOAT);
WINGDIAPI BOOL    WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,INT,LPGLYPHMETRICSFLOAT);
#define                  wglUseFontOutlines WINELIB_NAME_AW(wglUseFontOutlines)
3791

3792 3793 3794 3795
#ifdef __cplusplus
}
#endif

3796 3797
#endif /* !NOGDI */
#endif /* _WINGDI_ */