wingdi.h 108 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
typedef struct _ABCFLOAT {
    FLOAT   abcfA;
    FLOAT   abcfB;
    FLOAT   abcfC;
} ABCFLOAT, *PABCFLOAT, *LPABCFLOAT;

33
#define FONTMAPPER_MAX 10
34 35 36 37 38

typedef struct
{
    WORD   wFirst;
    WORD   wSecond;
39 40
    INT  iKernAmount;
} KERNINGPAIR, *LPKERNINGPAIR;
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

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;
69
} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
70

71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
#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

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

96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
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
111

112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
#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
127
#define ILLUMINANT_DAYLIGHT         ILLUMINANT_C
128 129 130 131 132 133 134 135 136 137 138 139 140 141
#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

142 143 144 145 146
typedef LONG FXPT16DOT16, *LPFXPT16DOT16;
typedef LONG FXPT2DOT30, *LPFXPT2DOT30;
typedef LONG LCSCSTYPE;
typedef LONG LCSGAMUTMATCH;

147 148 149 150 151 152 153 154 155 156 157
#define LCS_CALIBRATED_RGB    0x00000000L
#define LCS_DEVICE_RGB        0x00000001L
#define LCS_DEVICE_CMYK       0x00000002L

#define LCS_GM_BUSINESS       0x00000001L
#define LCS_GM_GRAPHICS       0x00000002L
#define LCS_GM_IMAGES         0x00000004L

#define CM_OUT_OF_GAMUT       255
#define CM_IN_GAMUT           0

158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
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;
183
  CHAR lcsFilename[MAX_PATH];
184 185 186 187 188 189 190 191 192 193 194 195 196
} LOGCOLORSPACEA, *LPLOGCOLORSPACEA;

 typedef struct tagLOGCOLORSPACEW
{
  DWORD lcsSignature;
  DWORD lcsVersion;
  DWORD lcsSize;
  LCSCSTYPE lcsCSType;
  LCSGAMUTMATCH lcsIntent;
  CIEXYZTRIPLE lcsEndpoints;
  DWORD lcsGammaRed;
  DWORD lcsGammaGreen;
  DWORD lcsGammaBlue;
197
  WCHAR lcsFilename[MAX_PATH];
198 199 200 201 202
} LOGCOLORSPACEW, *LPLOGCOLORSPACEW;

DECL_WINELIB_TYPE_AW(LPLOGCOLORSPACE)
DECL_WINELIB_TYPE_AW(LOGCOLORSPACE)

Brad Pepers's avatar
Brad Pepers committed
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
#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
221 222 223 224 225 226
#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
227 228 229 230 231 232 233 234 235
#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
236 237
#define DC_MEDIATYPENAMES       34
#define DC_MEDIATYPES           35
Brad Pepers's avatar
Brad Pepers committed
238

239 240 241 242 243 244 245 246 247 248 249 250 251 252
#define DCTT_BITMAP             0x00000001L
#define DCTT_DOWNLOAD           0x00000002L
#define DCTT_SUBDEV             0x00000004L
#define DCTT_DOWNLOAD_OUTLINE   0x00000008L

#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

253 254 255 256 257
#define PRINTRATEUNIT_PPM       1
#define PRINTRATEUNIT_CPS       2
#define PRINTRATEUNIT_LPM       3
#define PRINTRATEUNIT_IPM       4

Brad Pepers's avatar
Brad Pepers committed
258 259 260 261 262 263 264 265 266 267 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
/* 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

308 309 310
#define DESKTOPVERTRES          117
#define DESKTOPHORZRES          118

Brad Pepers's avatar
Brad Pepers committed
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
#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
347 348 349 350 351 352 353
#define	POSTSCRIPT_IDENTIFY	4117
#define	POSTSCRIPT_INJECTION	4118

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

Brad Pepers's avatar
Brad Pepers committed
354

355 356 357 358 359
#define QDI_SETDIBITS           1
#define QDI_GETDIBITS           2
#define QDI_DIBTOSCREEN         4
#define QDI_STRETCHDIB          8

Brad Pepers's avatar
Brad Pepers committed
360 361 362 363 364 365 366 367
/* 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)

368
#define PR_JOBSTATUS     0
Brad Pepers's avatar
Brad Pepers committed
369

370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388
  /* 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

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

391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
#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
411
#define HALFTONE             4
412
#define MAXSTRETCHBLTMODE    4
413 414 415 416

#define STRETCH_ANDSCANS     BLACKONWHITE
#define STRETCH_ORSCANS      WHITEONBLACK
#define STRETCH_DELETESCANS  COLORONCOLOR
417
#define STRETCH_HALFTONE     HALFTONE
418 419 420

  /* Colors */

421
#define RGB(r,g,b)          ((COLORREF)((BYTE)(r) | ((BYTE)(g) << 8) | ((BYTE)(b) << 16)))
422 423 424
#define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
#define PALETTEINDEX(i)     ((COLORREF)(0x01000000 | (WORD)(i)))

425 426 427
#define GetRValue(rgb)      ((BYTE)  (rgb) )
#define GetGValue(rgb)      ((BYTE) ((rgb) >> 8))
#define GetBValue(rgb)      ((BYTE) ((rgb) >> 16))
428

429
#define GetKValue(cmyk)     ((BYTE)  (cmyk) )
430 431 432
#define GetYValue(cmyk)     ((BYTE) ((cmyk) >> 8))
#define GetMValue(cmyk)     ((BYTE) ((cmyk) >> 16))
#define GetCValue(cmyk)     ((BYTE) ((cmyk) >> 24))
433

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

436
/* ICM stuff */
437 438
typedef INT (CALLBACK *ICMENUMPROCA)(LPSTR lpszFilename,LPARAM lParam);
typedef INT (CALLBACK *ICMENUMPROCW)(LPWSTR lpszFilename,LPARAM lParam);
439 440
DECL_WINELIB_TYPE_AW(ICMENUMPROC)

441 442 443 444 445 446 447 448 449 450 451 452 453 454 455

#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
{
456 457 458 459 460
    LONG paXCount;
    LONG paYCount;
    LONG paXExt;
    LONG paYExt;
    BYTE paRGBs;
461
} PELARRAY, *PPELARRAY, *LPPELARRAY;
462 463

  /* Bitmaps */
464 465 466

typedef struct
{
467 468 469 470
    INT  bmType;
    INT  bmWidth;
    INT  bmHeight;
    INT  bmWidthBytes;
471 472
    WORD   bmPlanes;
    WORD   bmBitsPixel;
473
    LPVOID bmBits;
474
} BITMAP, *PBITMAP, *LPBITMAP;
475 476 477 478 479


  /* Brushes */

typedef struct
480
{
481
    UINT       lbStyle;
482
    COLORREF   lbColor;
483
    ULONG_PTR  lbHatch;
484
} LOGBRUSH, *PLOGBRUSH, *LPLOGBRUSH;
485

486 487 488 489 490 491 492
typedef struct
{
    UINT       lbStyle;
    COLORREF   lbColor;
    ULONG      lbHatch;
} LOGBRUSH32, *PLOGBRUSH32, *LPLOGBRUSH32;

493
typedef LOGBRUSH PATTERN, *PPATTERN, *LPPATTERN;
494

495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525

  /* 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

  /* Fonts */

#define LF_FACESIZE     32
#define LF_FULLFACESIZE 64

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

526
typedef struct tagLOGFONTA
527
{
528 529 530 531 532
    LONG   lfHeight;
    LONG   lfWidth;
    LONG   lfEscapement;
    LONG   lfOrientation;
    LONG   lfWeight;
533 534 535 536 537 538 539 540 541
    BYTE   lfItalic;
    BYTE   lfUnderline;
    BYTE   lfStrikeOut;
    BYTE   lfCharSet;
    BYTE   lfOutPrecision;
    BYTE   lfClipPrecision;
    BYTE   lfQuality;
    BYTE   lfPitchAndFamily;
    CHAR   lfFaceName[LF_FACESIZE];
542
} LOGFONTA, *PLOGFONTA, *LPLOGFONTA;
543

544
typedef struct tagLOGFONTW
545
{
546 547 548 549 550
    LONG   lfHeight;
    LONG   lfWidth;
    LONG   lfEscapement;
    LONG   lfOrientation;
    LONG   lfWeight;
551 552 553 554 555 556 557 558 559
    BYTE   lfItalic;
    BYTE   lfUnderline;
    BYTE   lfStrikeOut;
    BYTE   lfCharSet;
    BYTE   lfOutPrecision;
    BYTE   lfClipPrecision;
    BYTE   lfQuality;
    BYTE   lfPitchAndFamily;
    WCHAR  lfFaceName[LF_FACESIZE];
560
} LOGFONTW, *PLOGFONTW, *LPLOGFONTW;
561 562

DECL_WINELIB_TYPE_AW(LOGFONT)
563
DECL_WINELIB_TYPE_AW(PLOGFONT)
564 565 566 567
DECL_WINELIB_TYPE_AW(LPLOGFONT)

typedef struct
{
568
  LOGFONTA elfLogFont;
569 570
  BYTE       elfFullName[LF_FULLFACESIZE];
  BYTE       elfStyle[LF_FACESIZE];
571
} ENUMLOGFONTA, *LPENUMLOGFONTA;
572 573 574

typedef struct
{
575
  LOGFONTW elfLogFont;
576 577
  WCHAR      elfFullName[LF_FULLFACESIZE];
  WCHAR      elfStyle[LF_FACESIZE];
578
} ENUMLOGFONTW, *LPENUMLOGFONTW;
579

580 581 582
DECL_WINELIB_TYPE_AW(ENUMLOGFONT)
DECL_WINELIB_TYPE_AW(LPENUMLOGFONT)

583 584
typedef struct
{
585
  LOGFONTA elfLogFont;
586 587 588
  BYTE       elfFullName[LF_FULLFACESIZE];
  BYTE       elfStyle[LF_FACESIZE];
  BYTE       elfScript[LF_FACESIZE];
589
} ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
590 591 592

typedef struct
{
593
  LOGFONTW elfLogFont;
594 595 596
  WCHAR      elfFullName[LF_FULLFACESIZE];
  WCHAR      elfStyle[LF_FACESIZE];
  WCHAR      elfScript[LF_FACESIZE];
597
} ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
598

599
DECL_WINELIB_TYPE_AW(ENUMLOGFONTEX)
600 601
DECL_WINELIB_TYPE_AW(LPENUMLOGFONTEX)

602 603 604 605 606 607 608 609 610
/*
 * 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
611
 *        which the font provides glyphs. The high 32 bits are for
612 613
 *        non Windows codepages.
 */
614 615 616 617
typedef struct
{
  DWORD fsUsb[4];
  DWORD fsCsb[2];
618
} FONTSIGNATURE, *PFONTSIGNATURE, *LPFONTSIGNATURE;
619

620
typedef struct
621
{
622 623
  UINT	ciCharset; /* character set */
  UINT	ciACP; /* ANSI code page */
624
  FONTSIGNATURE	fs;
625
} CHARSETINFO, *PCHARSETINFO, *LPCHARSETINFO;
626

627
/* Flags for TranslateCharsetInfo */
628 629 630
#define TCI_SRCCHARSET    1
#define TCI_SRCCODEPAGE   2
#define TCI_SRCFONTSIG    3
631

632 633 634 635 636
typedef struct
{
    DWORD lsUsb[4];
    DWORD lsCsbDefault[2];
    DWORD lsCsbSupported[2];
637
} LOCALESIGNATURE, *PLOCALESIGNATURE, *LPLOCALESIGNATURE;
638 639


640 641 642 643
/* Flags for ModifyWorldTransform */
#define MWT_IDENTITY      1
#define MWT_LEFTMULTIPLY  2
#define MWT_RIGHTMULTIPLY 3
644
#define MWT_MIN           MWT_IDENTITY
645
#define MWT_MAX           MWT_RIGHTMULTIPLY
646

647 648 649 650 651 652 653 654 655 656 657 658 659 660
/* 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
661
#define OBJ_COLORSPACE      14
662

663
typedef struct tagXFORM
664 665 666 667 668 669 670
{
    FLOAT  eM11;
    FLOAT  eM12;
    FLOAT  eM21;
    FLOAT  eM22;
    FLOAT  eDx;
    FLOAT  eDy;
671
} XFORM, *PXFORM, *LPXFORM;
672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690

  /* 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 */
691 692 693 694 695 696 697 698 699 700 701 702
#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 */
703
#define BALTIC_CHARSET        (BYTE)186	/* CP1257, -iso8859-13 */
704
#define VIETNAMESE_CHARSET    (BYTE)163 /* CP1258 */
705 706 707 708 709
#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 */
710
#define MAC_CHARSET           (BYTE)77
711
#define OEM_CHARSET	      (BYTE)255
712 713 714
/* I don't know if the values of *_CHARSET macros are defined in Windows
 * or if we can choose them as we want. -- srtxg
 */
715 716 717 718 719
#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 */
720 721
#define ISO10_CHARSET         (BYTE)245 /* iso8859-10 */
#define CELTIC_CHARSET        (BYTE)246 /* iso8859-14 */
722

723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739
#define FS_LATIN1              0x00000001L
#define FS_LATIN2              0x00000002L
#define FS_CYRILLIC            0x00000004L
#define FS_GREEK               0x00000008L
#define FS_TURKISH             0x00000010L
#define FS_HEBREW              0x00000020L
#define FS_ARABIC              0x00000040L
#define FS_BALTIC              0x00000080L
#define FS_VIETNAMESE          0x00000100L
#define FS_THAI                0x00010000L
#define FS_JISJAPAN            0x00020000L
#define FS_CHINESESIMP         0x00040000L
#define FS_WANSUNG             0x00080000L
#define FS_CHINESETRAD         0x00100000L
#define FS_JOHAB               0x00200000L
#define FS_SYMBOL              0x80000000L

740 741 742 743 744 745 746 747 748
  /* 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
749
#define OUT_OUTLINE_PRECIS      8
750 751 752 753 754 755 756 757 758 759 760

  /* 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 */
761 762 763 764 765
#define DEFAULT_QUALITY        0
#define DRAFT_QUALITY          1
#define PROOF_QUALITY          2
#define NONANTIALIASED_QUALITY 3
#define ANTIALIASED_QUALITY    4
766 767 768 769 770

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

773 774 775 776 777 778 779
#define FF_DONTCARE         0x00
#define FF_ROMAN            0x10
#define FF_SWISS            0x20
#define FF_MODERN           0x30
#define FF_SCRIPT           0x40
#define FF_DECORATIVE       0x50

780 781 782
#ifndef _TEXTMETRIC_DEFINED
#define _TEXTMETRIC_DEFINED

783
typedef struct tagTEXTMETRICA
784
{
785 786 787 788 789 790 791 792 793 794 795
    LONG      tmHeight;
    LONG      tmAscent;
    LONG      tmDescent;
    LONG      tmInternalLeading;
    LONG      tmExternalLeading;
    LONG      tmAveCharWidth;
    LONG      tmMaxCharWidth;
    LONG      tmWeight;
    LONG      tmOverhang;
    LONG      tmDigitizedAspectX;
    LONG      tmDigitizedAspectY;
796 797 798 799 800 801 802 803 804
    BYTE      tmFirstChar;
    BYTE      tmLastChar;
    BYTE      tmDefaultChar;
    BYTE      tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
805
} TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA;
806

807
typedef struct tagTEXTMETRICW
808
{
809 810 811 812 813 814 815 816 817 818 819
    LONG      tmHeight;
    LONG      tmAscent;
    LONG      tmDescent;
    LONG      tmInternalLeading;
    LONG      tmExternalLeading;
    LONG      tmAveCharWidth;
    LONG      tmMaxCharWidth;
    LONG      tmWeight;
    LONG      tmOverhang;
    LONG      tmDigitizedAspectX;
    LONG      tmDigitizedAspectY;
820 821 822 823 824 825 826 827 828
    WCHAR     tmFirstChar;
    WCHAR     tmLastChar;
    WCHAR     tmDefaultChar;
    WCHAR     tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
829
} TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW;
830 831

DECL_WINELIB_TYPE_AW(TEXTMETRIC)
832
DECL_WINELIB_TYPE_AW(PTEXTMETRIC)
833
DECL_WINELIB_TYPE_AW(LPTEXTMETRIC)
834
#endif /* _TEXTMETRIC_DEFINED */
835 836 837 838 839 840 841 842 843 844 845 846 847 848


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

851 852
#define PANOSE_COUNT                   10

853
#define PAN_FAMILYTYPE_INDEX           0
854 855 856 857 858 859 860 861 862 863
#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

864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 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
#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;
985
} EXTLOGFONTA, *PEXTLOGFONTA, *LPEXTLOGFONTA;
986 987 988 989 990 991 992 993 994 995 996 997 998

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;
999
} EXTLOGFONTW, *PEXTLOGFONTW, *LPEXTLOGFONTW;
1000 1001 1002

DECL_WINELIB_TYPE_AW(EXTLOGFONT)
DECL_WINELIB_TYPE_AW(PEXTLOGFONT)
1003
DECL_WINELIB_TYPE_AW(LPEXTLOGFONT)
1004

1005 1006 1007
#define ELF_VERSION         0
#define ELF_CULTURE_LATIN   0

1008
typedef struct _OUTLINETEXTMETRICA
1009
{
1010 1011
    UINT          otmSize;
    TEXTMETRICA   otmTextMetrics;
1012
    BYTE            otmFiller;
1013
    PANOSE          otmPanoseNumber;
1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037
    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;
1038 1039 1040 1041
    LPSTR           otmpFamilyName;
    LPSTR           otmpFaceName;
    LPSTR           otmpStyleName;
    LPSTR           otmpFullName;
1042
} OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, *LPOUTLINETEXTMETRICA;
1043

1044
typedef struct _OUTLINETEXTMETRICW
1045
{
1046 1047
    UINT          otmSize;
    TEXTMETRICW   otmTextMetrics;
1048
    BYTE            otmFiller;
1049
    PANOSE          otmPanoseNumber;
1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073
    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;
1074 1075 1076 1077
    LPSTR           otmpFamilyName;
    LPSTR           otmpFaceName;
    LPSTR           otmpStyleName;
    LPSTR           otmpFullName;
1078
} OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, *LPOUTLINETEXTMETRICW;
1079 1080

DECL_WINELIB_TYPE_AW(OUTLINETEXTMETRIC)
1081
DECL_WINELIB_TYPE_AW(POUTLINETEXTMETRIC)
1082 1083
DECL_WINELIB_TYPE_AW(LPOUTLINETEXTMETRIC)

1084 1085 1086 1087 1088 1089 1090 1091 1092
typedef struct
{
    INT       x;
    INT       y;
    UINT      n;
    LPCSTR    lpstr;
    UINT      uiFlags;
    RECT      rcl;
    INT       *pdx;
1093
} POLYTEXTA, *PPOLYTEXTA, *LPPOLYTEXTA;
1094 1095 1096 1097 1098 1099 1100 1101 1102 1103

typedef struct
{
    INT       x;
    INT       y;
    UINT      n;
    LPCWSTR   lpstr;
    UINT      uiFlags;
    RECT      rcl;
    INT       *pdx;
1104
} POLYTEXTW, *PPOLYTEXTW, *LPPOLYTEXTW;
1105 1106 1107

DECL_WINELIB_TYPE_AW(POLYTEXT)
DECL_WINELIB_TYPE_AW(PPOLYTEXT)
1108
DECL_WINELIB_TYPE_AW(LPPOLYTEXT)
1109 1110 1111 1112 1113 1114 1115


/* ntmFlags field flags */
#define NTM_REGULAR     0x00000040L
#define NTM_BOLD        0x00000020L
#define NTM_ITALIC      0x00000001L

1116 1117 1118 1119 1120 1121 1122 1123
#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


1124 1125
typedef struct
{
1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136
    LONG      tmHeight;
    LONG      tmAscent;
    LONG      tmDescent;
    LONG      tmInternalLeading;
    LONG      tmExternalLeading;
    LONG      tmAveCharWidth;
    LONG      tmMaxCharWidth;
    LONG      tmWeight;
    LONG      tmOverhang;
    LONG      tmDigitizedAspectX;
    LONG      tmDigitizedAspectY;
1137 1138 1139 1140 1141 1142 1143 1144 1145 1146
    BYTE      tmFirstChar;
    BYTE      tmLastChar;
    BYTE      tmDefaultChar;
    BYTE      tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
    DWORD     ntmFlags;
1147 1148 1149
    UINT    ntmSizeEM;
    UINT    ntmCellHeight;
    UINT    ntmAvgWidth;
1150
} NEWTEXTMETRICA, *PNEWTEXTMETRICA, *LPNEWTEXTMETRICA;
1151 1152 1153

typedef struct
{
1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164
    LONG      tmHeight;
    LONG      tmAscent;
    LONG      tmDescent;
    LONG      tmInternalLeading;
    LONG      tmExternalLeading;
    LONG      tmAveCharWidth;
    LONG      tmMaxCharWidth;
    LONG      tmWeight;
    LONG      tmOverhang;
    LONG      tmDigitizedAspectX;
    LONG      tmDigitizedAspectY;
1165 1166 1167 1168 1169 1170 1171 1172 1173 1174
    WCHAR     tmFirstChar;
    WCHAR     tmLastChar;
    WCHAR     tmDefaultChar;
    WCHAR     tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
    DWORD     ntmFlags;
1175 1176 1177
    UINT      ntmSizeEM;
    UINT      ntmCellHeight;
    UINT      ntmAvgWidth;
1178
} NEWTEXTMETRICW, *PNEWTEXTMETRICW, *LPNEWTEXTMETRICW;
1179 1180

DECL_WINELIB_TYPE_AW(NEWTEXTMETRIC)
1181
DECL_WINELIB_TYPE_AW(PNEWTEXTMETRIC)
1182 1183 1184 1185
DECL_WINELIB_TYPE_AW(LPNEWTEXTMETRIC)

typedef struct
{
1186 1187
    NEWTEXTMETRICA	ntmTm;
    FONTSIGNATURE       ntmFontSig;
1188
} NEWTEXTMETRICEXA;
1189 1190 1191

typedef struct
{
1192 1193
    NEWTEXTMETRICW	ntmTm;
    FONTSIGNATURE       ntmFontSig;
1194
} NEWTEXTMETRICEXW;
1195 1196 1197

DECL_WINELIB_TYPE_AW(NEWTEXTMETRICEX)

1198
#if defined(STRICT)
1199 1200 1201 1202 1203 1204 1205 1206

#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) */
1207 1208
DECL_WINELIB_TYPE_AW(OLDFONTENUMPROC)

1209 1210 1211 1212
typedef OLDFONTENUMPROCA FONTENUMPROCA;
typedef OLDFONTENUMPROCW FONTENUMPROCW;
DECL_WINELIB_TYPE_AW(FONTENUMPROC)

1213 1214
typedef INT (CALLBACK *GOBJENUMPROC)(LPVOID, LPARAM);
typedef VOID (CALLBACK *LINEDDAPROC)(INT, INT, LPARAM);
1215

1216
#else /* defined(STRICT) */
1217 1218 1219 1220 1221 1222 1223 1224 1225 1226

typedef FARPROC OLDFONTENUMPROC;

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

typedef FARPROC GOBJENUMPROC;
typedef FARPROC LINEDDAPROC;

1227
#endif /* defined(STRICT) */
1228

1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243
  /* 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
1244 1245
#define TA_RTLREADING        0x100
#define TA_MASK             TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING
1246 1247 1248 1249 1250 1251 1252 1253

#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

1254 1255

  /* ExtTextOut() parameters */
1256 1257 1258 1259
#define ETO_GRAYED          0x0001
#define ETO_OPAQUE          0x0002
#define ETO_CLIPPED         0x0004
#define ETO_GLYPH_INDEX     0x0010
1260
#define ETO_RTLREADING      0x0080
1261 1262
#define ETO_NUMERICSLOCAL   0x0400
#define ETO_NUMERICSLATIN   0x0800
1263
#define ETO_IGNORELANGUAGE  0x1000
1264
#define ETO_PDY             0x2000
1265

1266
#define ASPECT_FILTERING    0x0001
1267

1268 1269 1270
  /* for GetGlyphIndices() */
#define GGI_MARK_NONEXISTING_GLYPHS  0x0001

1271 1272
typedef struct
{
1273 1274 1275
    UINT	gmBlackBoxX;
    UINT	gmBlackBoxY;
    POINT	gmptGlyphOrigin;
1276 1277
    SHORT	gmCellIncX;
    SHORT	gmCellIncY;
1278
} GLYPHMETRICS, *LPGLYPHMETRICS;
1279 1280 1281 1282 1283


#define GGO_METRICS         0
#define GGO_BITMAP          1
#define GGO_NATIVE          2
1284
#define GGO_BEZIER          3
1285 1286 1287 1288
#define GGO_GRAY2_BITMAP    4
#define GGO_GRAY4_BITMAP    5
#define GGO_GRAY8_BITMAP    6
#define GGO_GLYPH_INDEX     0x80
1289

1290 1291
typedef struct
{
1292 1293
    WORD    fract;
    SHORT   value;
1294 1295
} FIXED;

1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315
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;

1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326
typedef struct
{
     FIXED  eM11;
     FIXED  eM12;
     FIXED  eM21;
     FIXED  eM22;
} MAT2, *LPMAT2;

  /* for GetCharABCWidths() */
typedef struct
{
1327 1328 1329
    INT   abcA;
    UINT  abcB;
    INT   abcC;
1330
} ABC, *PABC, *LPABC;
1331 1332 1333


  /* for GetCharacterPlacement () */
1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374

#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
#define GCP_JUSTIFY         0x00010000L
#define FLI_GLYPHS          0x00040000L
#define GCP_CLASSIN         0x00080000L
#define GCP_MAXEXTENT       0x00100000L
#define GCP_JUSTIFYIN       0x00200000L
#define GCP_DISPLAYZWG      0x00400000L
#define GCP_SYMSWAPOFF      0x00800000L
#define GCP_NUMERICOVERRIDE 0x01000000L
#define GCP_NEUTRALOVERRIDE 0x02000000L
#define GCP_NUMERICSLATIN   0x04000000L
#define GCP_NUMERICSLOCAL   0x08000000L

#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{
1375 1376
    DWORD  lStructSize;
    LPSTR  lpOutString;
1377 1378 1379
    UINT   *lpOrder;
    INT    *lpDx;
    INT    *lpCaretPos;
1380
    LPSTR  lpClass;
1381 1382 1383
    LPWSTR lpGlyphs;
    UINT   nGlyphs;
    UINT   nMaxFit;
1384
} GCP_RESULTSA, *LPGCP_RESULTSA;
1385

1386
typedef struct tagGCP_RESULTSW
1387 1388 1389
{
    DWORD  lStructSize;
    LPWSTR lpOutString;
1390 1391 1392
    UINT   *lpOrder;
    INT    *lpDx;
    INT    *lpCaretPos;
1393
    LPSTR  lpClass;
1394 1395 1396
    LPWSTR lpGlyphs;
    UINT   nGlyphs;
    UINT   nMaxFit;
1397
} GCP_RESULTSW, *LPGCP_RESULTSW;
1398 1399

DECL_WINELIB_TYPE_AW(GCP_RESULTS)
1400
DECL_WINELIB_TYPE_AW(LPGCP_RESULTS)
1401 1402 1403 1404

  /* Rasterizer status */
typedef struct
{
1405 1406 1407
    SHORT nSize;
    SHORT wFlags;
    SHORT nLanguageID;
1408 1409 1410 1411 1412
} RASTERIZER_STATUS, *LPRASTERIZER_STATUS;

#define TT_AVAILABLE        0x0001
#define TT_ENABLED          0x0002

1413 1414
#define TT_PRIM_LINE    1
#define TT_PRIM_QSPLINE 2
1415
#define TT_PRIM_CSPLINE 3
1416
#define TT_POLYGON_TYPE 24
1417

1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458
  /* 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;

1459
/* Get/SetSystemPaletteUse() values */
1460 1461 1462 1463 1464
#define SYSPAL_ERROR        0
#define SYSPAL_STATIC       1
#define SYSPAL_NOSTATIC     2
#define SYSPAL_NOSTATIC256  3
    
1465 1466
#ifndef _PALETTEENTRY_DEFINED
#define _PALETTEENTRY_DEFINED
1467 1468 1469
typedef struct tagPALETTEENTRY
{
	BYTE peRed, peGreen, peBlue, peFlags;
1470
} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
1471
#endif
1472 1473 1474 1475 1476 1477

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

1478 1479
#ifndef _LOGPALETTE_DEFINED
#define _LOGPALETTE_DEFINED
1480
typedef struct tagLOGPALETTE
1481
{
1482 1483
    WORD           palVersion;
    WORD           palNumEntries;
1484
    PALETTEENTRY   palPalEntry[1];
1485
} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE, *NPLOGPALETTE;
1486
#endif
1487 1488 1489 1490 1491

  /* Pens */

typedef struct
{
1492
    UINT     lopnStyle;
1493 1494
    POINT    lopnWidth;
    COLORREF lopnColor;
1495
} LOGPEN, *LPLOGPEN;
1496 1497


1498 1499
typedef struct tagEXTLOGPEN
{
1500 1501 1502 1503
    DWORD    elpPenStyle;
    DWORD    elpWidth;
    UINT     elpBrushStyle;
    COLORREF elpColor;
1504
    ULONG_PTR elpHatch;
1505 1506
    DWORD elpNumEntries;
    DWORD elpStyleEntry[1];
1507 1508
} EXTLOGPEN, *PEXTLOGPEN, *NPEXTLOGPEN, *LPEXTLOGPEN;

1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539
#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
1540
#define RGN_ERROR         ERROR
1541 1542 1543 1544 1545 1546

#define RGN_AND           1
#define RGN_OR            2
#define RGN_XOR           3
#define RGN_DIFF          4
#define RGN_COPY          5
1547 1548
#define RGN_MIN           RGN_AND
#define RGN_MAX           RGN_COPY
1549 1550 1551

#define SYSRGN            4

1552 1553 1554 1555 1556
  /* Device contexts */

  /* Polygon modes */
#define ALTERNATE         1
#define WINDING           2
1557
#define POLYFILL_LAST     2
1558

1559 1560
/* Background modes */
/* Apparently some broken svr4 includes define TRANSPARENT */
1561 1562 1563
#undef TRANSPARENT
#define TRANSPARENT       1
#define OPAQUE            2
1564
#define BKMODE_LAST       2
1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584

  /* 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

1585 1586 1587 1588
#define MM_MIN            MM_TEXT
#define MM_MAX            MM_ANISOTROPIC
#define MM_MAX_FIXEDSCALE MM_TWIPS

1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622
  /* 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
1623
#define CAPS1             94
1624 1625 1626 1627
#define SIZEPALETTE       104
#define NUMRESERVED       106
#define COLORRES          108

1628 1629 1630 1631 1632 1633 1634 1635 1636
#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
1637
#define BLTALIGNMENT      119
1638 1639
#define SHADEBLENDCAPS    120
#define COLORMGMTCAPS     121
1640

1641 1642 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
/* 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
1677
#define PC_TRAPEZOID      0x0004
1678 1679 1680 1681 1682
#define PC_SCANLINE       0x0008
#define PC_WIDE           0x0010
#define PC_STYLED         0x0020
#define PC_WIDESTYLED     0x0040
#define PC_INTERIORS      0x0080
1683 1684
#define PC_POLYPOLYGON    0x0100
#define PC_PATHS          0x0200
1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702

/* 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
1703
#define TC_SCROLLBLT      0x00010000
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

/* 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

1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743
/* 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

1744 1745 1746 1747 1748 1749 1750 1751
/* 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

1752 1753
  /* Device-independent bitmaps */

1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765
typedef struct {
  BYTE rgbBlue;
  BYTE rgbGreen;
  BYTE rgbRed;
  BYTE rgbReserved;
} RGBQUAD, *LPRGBQUAD;

typedef struct {
  BYTE rgbtBlue;
  BYTE rgbtGreen;
  BYTE rgbtRed;
} RGBTRIPLE;
1766

1767
#include <pshpack2.h>
1768 1769
typedef struct
{
1770 1771 1772 1773 1774
    WORD    bfType;
    DWORD   bfSize;
    WORD    bfReserved1;
    WORD    bfReserved2;
    DWORD   bfOffBits;
1775
} BITMAPFILEHEADER, *PBITMAPFILEHEADER, *LPBITMAPFILEHEADER;
1776
#include <poppack.h>
1777

1778 1779
#define MAKEPOINTS(l)  (*((POINTS *)&(l)))

1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792
typedef struct
{
    DWORD 	biSize;
    LONG  	biWidth;
    LONG  	biHeight;
    WORD 	biPlanes;
    WORD 	biBitCount;
    DWORD 	biCompression;
    DWORD 	biSizeImage;
    LONG  	biXPelsPerMeter;
    LONG  	biYPelsPerMeter;
    DWORD 	biClrUsed;
    DWORD 	biClrImportant;
1793
} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
1794

1795 1796 1797 1798 1799 1800 1801
typedef struct
{
    DWORD        bV4Size;
    LONG         bV4Width;
    LONG         bV4Height;
    WORD         bV4Planes;
    WORD         bV4BitCount;
1802
    DWORD        bV4V4Compression;
1803 1804 1805 1806 1807 1808 1809 1810 1811 1812
    DWORD        bV4SizeImage;
    LONG         bV4XPelsPerMeter;
    LONG         bV4YPelsPerMeter;
    DWORD        bV4ClrUsed;
    DWORD        bV4ClrImportant;
    DWORD        bV4RedMask;
    DWORD        bV4GreenMask;
    DWORD        bV4BlueMask;
    DWORD        bV4AlphaMask;
    DWORD        bV4CSType;
1813
    CIEXYZTRIPLE bV4Endpoints;
1814 1815 1816 1817 1818
    DWORD        bV4GammaRed;
    DWORD        bV4GammaGreen;
    DWORD        bV4GammaBlue;
} BITMAPV4HEADER, *PBITMAPV4HEADER;

1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848
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;

#define PROFILE_LINKED   'LINK'
#define PROFILE_EMBEDDED 'MBED'

1849

1850 1851 1852 1853
  /* biCompression */
#define BI_RGB           0
#define BI_RLE8          1
#define BI_RLE4          2
1854
#define BI_BITFIELDS     3
1855

1856 1857 1858 1859
typedef struct tagBITMAPINFO
{
    BITMAPINFOHEADER bmiHeader;
    RGBQUAD          bmiColors[1];
1860
} BITMAPINFO, *PBITMAPINFO, *LPBITMAPINFO;
1861 1862 1863 1864

typedef struct
{
    DWORD   bcSize;
1865 1866 1867 1868
    WORD    bcWidth;
    WORD    bcHeight;
    WORD    bcPlanes;
    WORD    bcBitCount;
1869
} BITMAPCOREHEADER, *PBITMAPCOREHEADER, *LPBITMAPCOREHEADER;
1870 1871 1872 1873 1874

typedef struct
{
    BITMAPCOREHEADER bmciHeader;
    RGBTRIPLE        bmciColors[1];
1875
} BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO;
1876 1877 1878 1879 1880

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

1881
typedef struct
1882
{
1883
	BITMAP		dsBm;
1884 1885
	BITMAPINFOHEADER	dsBmih;
	DWORD			dsBitfields[3];
1886
	HANDLE		dshSection;
1887
	DWORD			dsOffset;
1888
} DIBSECTION, *PDIBSECTION, *LPDIBSECTION;
1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909

  /* 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
1910 1911
#define DC_BRUSH            18
#define DC_PEN              19
1912

1913
#define STOCK_LAST          19
1914

1915
#define CLR_INVALID         0xffffffff
1916
/* Metafile header structure */
1917
#include <pshpack2.h>
1918 1919 1920 1921 1922
typedef struct
{
    WORD       mtType;
    WORD       mtHeaderSize;
    WORD       mtVersion;
1923
    DWORD      mtSize;
1924
    WORD       mtNoObjects;
1925
    DWORD      mtMaxRecord;
1926
    WORD       mtNoParameters;
1927
} METAHEADER, *PMETAHEADER, *LPMETAHEADER;
1928
#include <poppack.h>
1929 1930 1931 1932 1933 1934

/* Metafile typical record structure */
typedef struct
{
    DWORD      rdSize;
    WORD       rdFunction;
1935
    WORD       rdParm[1];
1936
} METARECORD, *PMETARECORD, *LPMETARECORD;
1937 1938 1939 1940 1941

/* Handle table structure */

typedef struct
{
1942
    HGDIOBJ objectHandle[1];
1943
} HANDLETABLE, *PHANDLETABLE, *LPHANDLETABLE;
1944 1945 1946 1947 1948


/* Clipboard metafile picture structure */
typedef struct
{
1949 1950 1951
    LONG       mm;
    LONG       xExt;
    LONG       yExt;
1952 1953
    HMETAFILE  hMF;
} METAFILEPICT, *LPMETAFILEPICT;
1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 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 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036


/* 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 */

2037
typedef INT (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,
2038
                                       INT,LPARAM);
2039 2040 2041 2042 2043 2044

/* 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 {
2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058
    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;
2059
    SIZEL szlMillimeters;
2060 2061 2062
    DWORD cbPixelFormat;
    DWORD offPixelFormat;
    DWORD bOpenGL;
2063
    SIZEL szlMicrometers;
2064
} ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER;
2065 2066

typedef struct {
2067 2068 2069 2070
    DWORD iType;
    DWORD nSize;
    DWORD dParm[1];
} ENHMETARECORD, *LPENHMETARECORD;
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
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;
2128
    DWORD    iUsageSrc;
2129 2130 2131 2132 2133 2134 2135
    DWORD    offBmiSrc;
    DWORD    cbBmiSrc;
    DWORD    offBitsSrc;
    DWORD    cbBitsSrc;
} EMRBITBLT, *PEMRBITBLT;

typedef struct {
2136 2137 2138
    EMR        emr;
    DWORD      ihBrush;
    LOGBRUSH32 lb;
2139 2140 2141 2142 2143
} EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT;

typedef struct {
    EMR            emr;
    DWORD          ihCS;
2144
    LOGCOLORSPACEA lcs;
2145 2146
} EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE;

2147 2148 2149 2150 2151 2152 2153 2154 2155
typedef struct {
  EMR            emr;
  DWORD          ihCS;
  LOGCOLORSPACEW lcs;
  DWORD          dwFlags;
  DWORD          cbData;
  BYTE           Data[1];
} EMRCREATECOLORSPACEW, *PEMRCREATECOLORSPACEW;

2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 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 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275
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 {
2276
    DWORD dSignature;
2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294
    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];
2295
} EMRGDICOMMENT, *PEMRGDICOMMENT;
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

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

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;
2362
    POINTL   aptlDest[3];
2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378
    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;
2379
    DWORD    offBitsMask;
2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393
    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;

2394 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
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;

2423 2424 2425 2426 2427 2428
typedef struct {
    EMR    emr;
    RECTL  rclBounds;
    DWORD  cptl;
    POINTL aptl[1];
    BYTE   abTypes[1];
2429
} EMRPOLYDRAW, *PEMRPOLYDRAW;
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 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477

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;

2478 2479 2480 2481 2482 2483 2484 2485 2486 2487
typedef struct {
    EMR   emr;
    DWORD iMode;
} EMRSELECTCLIPPATH,    *PEMRSELECTCLIPPATH,
  EMRSETBKMODE,         *PEMRSETBKMODE,
  EMRSETMAPMODE,        *PEMRSETMAPMODE,
  EMRSETPOLYFILLMODE,   *PEMRSETPOLYFILLMODE,
  EMRSETROP2,           *PEMRSETROP2,
  EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
  EMRSETTEXTALIGN,      *PEMRSETTEXTALIGN,
2488
  EMRSETICMMODE,        *PEMRSETICMMODE,
2489 2490
  EMRSETLAYOUT,         *PEMRSETLAYOUT;

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 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534
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;
2535
} EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE;
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 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592

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;

2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613
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;

2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626
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;
2627
    DWORD iUsageSrc;
2628 2629
    DWORD dwRop;
    LONG  cxDest;
2630
    LONG  cyDest;
2631 2632
} EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;

2633
typedef struct {
2634 2635
    EMR                   emr;
    PIXELFORMATDESCRIPTOR pfd;
2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648
} 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];
2649
} EMRGLSBOUNDEDRECORD, *PEMRGLSBOUNDEDRECORD;
2650

2651 2652
typedef INT (CALLBACK *ENHMFENUMPROC)(HDC, HANDLETABLE *,
                                      const ENHMETARECORD *, INT, LPARAM);
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 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756

#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
2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774
#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
2775

2776
#define EMR_MIN 1
2777
#define EMR_MAX 122
2778

2779
#define ENHMETA_SIGNATURE	1179469088
2780 2781
#define ENHMETA_STOCK_OBJECT	0x80000000

2782 2783 2784 2785 2786 2787 2788
#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
2789
#define EPS_SIGNATURE                 0x46535045
2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801

#define CCHDEVICENAME 32
#define CCHFORMNAME   32

typedef struct
{
    BYTE   dmDeviceName[CCHDEVICENAME];
    WORD   dmSpecVersion;
    WORD   dmDriverVersion;
    WORD   dmSize;
    WORD   dmDriverExtra;
    DWORD  dmFields;
2802 2803
    union {
      struct {
2804 2805 2806 2807
	short  dmOrientation;
	short  dmPaperSize;
	short  dmPaperLength;
	short  dmPaperWidth;
2808
      } DUMMYSTRUCTNAME1;
2809
      POINTL dmPosition;
2810
    } DUMMYUNIONNAME1;
2811 2812 2813 2814 2815 2816 2817 2818 2819
    short  dmScale;
    short  dmCopies;
    short  dmDefaultSource;
    short  dmPrintQuality;
    short  dmColor;
    short  dmDuplex;
    short  dmYResolution;
    short  dmTTOption;
    short  dmCollate;
2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832
    BYTE   dmFormName[CCHFORMNAME];
    WORD   dmLogPixels;
    DWORD  dmBitsPerPel;
    DWORD  dmPelsWidth;
    DWORD  dmPelsHeight;
    DWORD  dmDisplayFlags;
    DWORD  dmDisplayFrequency;
    DWORD  dmICMMethod;
    DWORD  dmICMIntent;
    DWORD  dmMediaType;
    DWORD  dmDitherType;
    DWORD  dmReserved1;
    DWORD  dmReserved2;
2833 2834
    DWORD  dmPanningWidth;
    DWORD  dmPanningHeight;
2835
} DEVMODEA, *PDEVMODEA, *LPDEVMODEA;
2836 2837 2838 2839 2840 2841 2842 2843 2844

typedef struct
{
    WCHAR  dmDeviceName[CCHDEVICENAME];
    WORD   dmSpecVersion;
    WORD   dmDriverVersion;
    WORD   dmSize;
    WORD   dmDriverExtra;
    DWORD  dmFields;
2845 2846
    union {
      struct {
2847 2848 2849 2850
	short  dmOrientation;
	short  dmPaperSize;
	short  dmPaperLength;
	short  dmPaperWidth;
2851
      } DUMMYSTRUCTNAME1;
2852
      POINTL dmPosition;
2853
    } DUMMYUNIONNAME1;
2854 2855 2856 2857 2858 2859 2860 2861 2862
    short  dmScale;
    short  dmCopies;
    short  dmDefaultSource;
    short  dmPrintQuality;
    short  dmColor;
    short  dmDuplex;
    short  dmYResolution;
    short  dmTTOption;
    short  dmCollate;
2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875
    WCHAR  dmFormName[CCHFORMNAME];
    WORD   dmLogPixels;
    DWORD  dmBitsPerPel;
    DWORD  dmPelsWidth;
    DWORD  dmPelsHeight;
    DWORD  dmDisplayFlags;
    DWORD  dmDisplayFrequency;
    DWORD  dmICMMethod;
    DWORD  dmICMIntent;
    DWORD  dmMediaType;
    DWORD  dmDitherType;
    DWORD  dmReserved1;
    DWORD  dmReserved2;
2876 2877
    DWORD  dmPanningWidth;
    DWORD  dmPanningHeight;
2878
} DEVMODEW, *PDEVMODEW, *LPDEVMODEW;
2879 2880

DECL_WINELIB_TYPE_AW(DEVMODE)
2881
DECL_WINELIB_TYPE_AW(PDEVMODE)
2882 2883
DECL_WINELIB_TYPE_AW(LPDEVMODE)

2884
#define DM_SPECVERSION  0x401
2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899
#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

#define DM_ORIENTATION		0x00000001L
#define DM_PAPERSIZE		0x00000002L
#define DM_PAPERLENGTH		0x00000004L
#define DM_PAPERWIDTH		0x00000008L
#define DM_SCALE		0x00000010L
2900
#define DM_POSITION             0x00000020L
2901 2902 2903 2904 2905 2906 2907
#define DM_COPIES		0x00000100L
#define DM_DEFAULTSOURCE	0x00000200L
#define DM_PRINTQUALITY		0x00000400L
#define DM_COLOR		0x00000800L
#define DM_DUPLEX		0x00001000L
#define DM_YRESOLUTION		0x00002000L
#define DM_TTOPTION		0x00004000L
2908 2909 2910
#define DM_COLLATE              0x00008000L
#define DM_FORMNAME             0x00010000L
#define DM_LOGPIXELS            0x00020000L
2911 2912 2913 2914 2915
#define DM_BITSPERPEL           0x00040000L
#define DM_PELSWIDTH            0x00080000L
#define DM_PELSHEIGHT           0x00100000L
#define DM_DISPLAYFLAGS         0x00200000L
#define DM_DISPLAYFREQUENCY     0x00400000L
2916 2917 2918 2919 2920 2921
#define DM_ICMMETHOD            0x00800000L
#define DM_ICMINTENT            0x01000000L
#define DM_MEDIATYPE            0x02000000L
#define DM_DITHERTYPE           0x04000000L
#define DM_PANNINGWIDTH         0x08000000L
#define DM_PANNINGHEIGHT        0x10000000L
2922 2923 2924 2925

#define DMORIENT_PORTRAIT	1
#define DMORIENT_LANDSCAPE	2

2926 2927
#define DMPAPER_FIRST              DMPAPER_LETTER
#define DMPAPER_LETTER		   1
2928 2929 2930
#define DMPAPER_LETTERSMALL        2
#define DMPAPER_TABLOID            3
#define DMPAPER_LEDGER             4
2931
#define DMPAPER_LEGAL		   5
2932
#define DMPAPER_STATEMENT          6
2933 2934 2935
#define DMPAPER_EXECUTIVE	   7
#define DMPAPER_A3		   8
#define DMPAPER_A4		   9
2936
#define DMPAPER_A4SMALL            10
2937
#define DMPAPER_A5		   11
2938 2939 2940 2941 2942 2943 2944 2945
#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
2946
#define DMPAPER_ENV_10		   20
2947 2948 2949 2950 2951 2952
#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
2953 2954
#define DMPAPER_ENV_DL		   27
#define DMPAPER_ENV_C5		   28
2955 2956 2957 2958 2959
#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
2960
#define DMPAPER_ENV_B5		   34
2961 2962
#define DMPAPER_ENV_B6             35
#define DMPAPER_ENV_ITALY          36
2963
#define DMPAPER_ENV_MONARCH	   37
2964 2965 2966 2967
#define DMPAPER_ENV_PERSONAL       38
#define DMPAPER_FANFOLD_US         39
#define DMPAPER_FANFOLD_STD_GERMAN 40
#define DMPAPER_FANFOLD_LGL_GERMAN 41
2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981
#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
2982
#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56
2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993
#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
2994 2995
#define DMPAPER_A3_EXTRA_TRANSVERSE           68
#define DMPAPER_DBL_JAPANESE_POSTCARD         69
2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006
#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
3007 3008
#define DMPAPER_JAPANESE_POSTCARD_ROTATED     81
#define DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED 82
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 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046
#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
3047
#define DMPAPER_USER               256
3048

3049
#define DMBIN_FIRST             DMBIN_UPPER
3050
#define DMBIN_UPPER		1
3051
#define DMBIN_ONLYONE           1
3052 3053 3054 3055 3056 3057
#define DMBIN_LOWER		2
#define DMBIN_MIDDLE		3
#define DMBIN_MANUAL		4
#define DMBIN_ENVELOPE		5
#define DMBIN_ENVMANUAL		6
#define DMBIN_AUTO		7
3058 3059 3060
#define DMBIN_TRACTOR           8
#define DMBIN_SMALLFMT          9
#define DMBIN_LARGEFMT          10
3061
#define DMBIN_LARGECAPACITY	11
3062 3063 3064 3065 3066 3067 3068 3069 3070
#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)
3071 3072 3073 3074

#define DMCOLOR_MONOCHROME	1
#define DMCOLOR_COLOR		2

3075 3076 3077 3078
#define DMDUP_SIMPLEX           1
#define DMDUP_VERTICAL          2
#define DMDUP_HORIZONTAL        3

3079 3080 3081
#define DMTT_BITMAP		1
#define DMTT_DOWNLOAD		2
#define DMTT_SUBDEV		3
3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108
#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
3109

3110
typedef struct
3111
{
3112
    INT    cbSize;
3113 3114 3115 3116
    LPCSTR   lpszDocName;
    LPCSTR   lpszOutput;
    LPCSTR   lpszDatatype;
    DWORD    fwType;
3117
} DOCINFOA, *LPDOCINFOA;
3118

3119
typedef struct
3120
{
3121
    INT    cbSize;
3122 3123 3124 3125
    LPCWSTR  lpszDocName;
    LPCWSTR  lpszOutput;
    LPCWSTR  lpszDatatype;
    DWORD    fwType;
3126
} DOCINFOW, *LPDOCINFOW;
3127 3128 3129 3130

DECL_WINELIB_TYPE_AW(DOCINFO)
DECL_WINELIB_TYPE_AW(LPDOCINFO)

3131
#define DI_APPBANDING     0x0001
3132

Brad Pepers's avatar
Brad Pepers committed
3133 3134 3135 3136 3137 3138
/* Flags for PolyDraw and GetPath */
#define PT_CLOSEFIGURE          0x0001
#define PT_LINETO               0x0002
#define PT_BEZIERTO             0x0004
#define PT_MOVETO               0x0006

3139 3140 3141 3142 3143 3144 3145
#define	RDH_RECTANGLES  1

typedef struct _RGNDATAHEADER {
    DWORD	dwSize;
    DWORD	iType;
    DWORD	nCount;
    DWORD	nRgnSize;
3146
    RECT	rcBound;
3147
} RGNDATAHEADER,*PRGNDATAHEADER;
3148 3149 3150 3151 3152 3153

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

3154
typedef BOOL (CALLBACK *ABORTPROC)(HDC, INT);
3155

3156 3157
typedef struct {
    DWORD	cb;
3158 3159
    CHAR	DeviceName[32];
    CHAR	DeviceString[128];
3160
    DWORD	StateFlags;
3161 3162
    CHAR	DeviceID[128];
    CHAR	DeviceKey[128];
3163
} DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA;
3164 3165 3166 3167 3168 3169

typedef struct {
    DWORD	cb;
    WCHAR	DeviceName[32];
    WCHAR	DeviceString[128];
    DWORD	StateFlags;
3170 3171
    WCHAR	DeviceID[128];
    WCHAR	DeviceKey[128];
3172
} DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW;
3173 3174 3175
DECL_WINELIB_TYPE_AW(DISPLAY_DEVICE)
DECL_WINELIB_TYPE_AW(PDISPLAY_DEVICE)
DECL_WINELIB_TYPE_AW(LPDISPLAY_DEVICE)
3176 3177 3178 3179 3180 3181 3182 3183

/* 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

Leo van den Berg's avatar
Leo van den Berg committed
3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208
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;

3209 3210 3211
#define AC_SRC_OVER  0x00
#define AC_SRC_ALPHA 0x01

Leo van den Berg's avatar
Leo van den Berg committed
3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224
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

3225 3226 3227
#define GDI_ERROR                               (0xFFFFFFFFL)
#define HGDI_ERROR                              ((HANDLE)0xFFFFFFFFL)

3228 3229 3230 3231
/* AddFontResourceEx flags */
#define FR_PRIVATE  0x10
#define FR_NOT_ENUM 0x20

3232 3233 3234 3235 3236 3237
/* Mirroring flags */
#define LAYOUT_LTR                         0x00000000
#define LAYOUT_RTL                         0x00000001
#define LAYOUT_BITMAPORIENTATIONPRESERVED  0x00000008
#define NOMIRRORBITMAP                     0x80000000

3238 3239 3240 3241 3242 3243 3244 3245
/* For DRAWPATTERNRECT Escape */
typedef struct _DRAWPATRECT
{
    POINT ptPosition;
    POINT ptSize;
    WORD  wStyle;
    WORD  wPattern;
} DRAWPATRECT, *PDRAWPATRECT;
3246

3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259
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;

Leo van den Berg's avatar
Leo van den Berg committed
3260 3261 3262 3263
INT         WINAPI AbortDoc(HDC);
BOOL        WINAPI AbortPath(HDC);
INT         WINAPI AddFontResourceA(LPCSTR);
INT         WINAPI AddFontResourceW(LPCWSTR);
3264
#define     AddFontResource WINELIB_NAME_AW(AddFontResource)
3265 3266 3267
INT         WINAPI AddFontResourceExA(LPCSTR, DWORD, PVOID);
INT         WINAPI AddFontResourceExW(LPCWSTR, DWORD, PVOID);
#define     AddFontResourceEx WINELIB_NAME_AW(AddFontResourceEx)
Leo van den Berg's avatar
Leo van den Berg committed
3268 3269 3270 3271
BOOL        WINAPI AlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
BOOL        WINAPI AngleArc(HDC, INT, INT, DWORD, FLOAT, FLOAT);
BOOL        WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
BOOL        WINAPI Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
3272
BOOL        WINAPI ArcTo(HDC, INT, INT, INT, INT, INT, INT, INT, INT);
Leo van den Berg's avatar
Leo van den Berg committed
3273 3274
BOOL        WINAPI BeginPath(HDC);
BOOL        WINAPI BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD);
3275
INT         WINAPI ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR*);
Leo van den Berg's avatar
Leo van den Berg committed
3276
BOOL        WINAPI Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
3277
HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
Leo van den Berg's avatar
Leo van den Berg committed
3278 3279 3280 3281
BOOL        WINAPI CloseFigure(HDC);
HMETAFILE   WINAPI CloseMetaFile(HDC);
INT         WINAPI CombineRgn(HRGN,HRGN,HRGN,INT);
BOOL        WINAPI CombineTransform(LPXFORM,const XFORM *,const XFORM *);
3282 3283 3284
HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
#define     CopyEnhMetaFile WINELIB_NAME_AW(CopyEnhMetaFile)
Leo van den Berg's avatar
Leo van den Berg committed
3285 3286
HMETAFILE   WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
HMETAFILE   WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
3287
#define     CopyMetaFile WINELIB_NAME_AW(CopyMetaFile)
Leo van den Berg's avatar
Leo van den Berg committed
3288 3289 3290
HBITMAP     WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID);
HBITMAP     WINAPI CreateBitmapIndirect(const BITMAP*);
HBRUSH      WINAPI CreateBrushIndirect(const LOGBRUSH*);
3291 3292 3293
HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
#define     CreateColorSpace WINELIB_NAME_AW(CreateColorSpace)
3294 3295 3296 3297
HBITMAP   WINAPI CreateCompatibleBitmap(HDC,INT,INT);
HDC       WINAPI CreateCompatibleDC(HDC);
HDC       WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
HDC       WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
3298
#define     CreateDC WINELIB_NAME_AW(CreateDC)
3299 3300 3301
HBITMAP   WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,
                                    LPCVOID,const BITMAPINFO*,UINT);
HBRUSH    WINAPI CreateDIBPatternBrush(HGLOBAL,UINT);
3302
HBRUSH    WINAPI CreateDIBPatternBrushPt(const void*,UINT);
3303 3304
HBITMAP   WINAPI CreateDIBSection(HDC, CONST BITMAPINFO *, UINT,
                                  VOID **, HANDLE, DWORD offset);
3305 3306 3307
HBITMAP   WINAPI CreateDiscardableBitmap(HDC,INT,INT);
HRGN      WINAPI CreateEllipticRgn(INT,INT,INT,INT);
HRGN      WINAPI CreateEllipticRgnIndirect(const RECT *);
3308 3309 3310
HDC       WINAPI CreateEnhMetaFileA(HDC,LPCSTR,const RECT*,LPCSTR);
HDC       WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,const RECT*,LPCWSTR);
#define     CreateEnhMetaFile WINELIB_NAME_AW(CreateEnhMetaFile)
3311
HFONT     WINAPI CreateFontA(INT,INT,INT,INT,INT,DWORD,DWORD,
3312
                                 DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
3313
HFONT     WINAPI CreateFontW(INT,INT,INT,INT,INT,DWORD,DWORD,
3314 3315
                                 DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
#define     CreateFont WINELIB_NAME_AW(CreateFont)
3316 3317
HFONT     WINAPI CreateFontIndirectA(const LOGFONTA*);
HFONT     WINAPI CreateFontIndirectW(const LOGFONTW*);
3318
#define     CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect)
3319
HPALETTE  WINAPI CreateHalftonePalette(HDC);
3320 3321 3322
HBRUSH    WINAPI CreateHatchBrush(INT,COLORREF);
HDC       WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
HDC       WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
3323
#define     CreateIC WINELIB_NAME_AW(CreateIC)
3324 3325
HDC       WINAPI CreateMetaFileA(LPCSTR);
HDC       WINAPI CreateMetaFileW(LPCWSTR);
3326
#define     CreateMetaFile WINELIB_NAME_AW(CreateMetaFile)
3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337
HPALETTE  WINAPI CreatePalette(const LOGPALETTE*);
HBRUSH    WINAPI CreatePatternBrush(HBITMAP);
HPEN      WINAPI CreatePen(INT,INT,COLORREF);
HPEN      WINAPI CreatePenIndirect(const LOGPEN*);
HRGN      WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,INT,INT);
HRGN      WINAPI CreatePolygonRgn(const POINT*,INT,INT);
HRGN      WINAPI CreateRectRgn(INT,INT,INT,INT);
HRGN      WINAPI CreateRectRgnIndirect(const RECT*);
HRGN      WINAPI CreateRoundRectRgn(INT,INT,INT,INT,INT,INT);
BOOL      WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR);
BOOL      WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
3338
#define     CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource)
3339
HBRUSH    WINAPI CreateSolidBrush(COLORREF);
3340
BOOL      WINAPI DPtoLP(HDC,LPPOINT,INT);
3341
BOOL      WINAPI DeleteColorSpace(HCOLORSPACE);
3342
BOOL      WINAPI DeleteDC(HDC);
3343
BOOL      WINAPI DeleteEnhMetaFile(HENHMETAFILE);
3344 3345 3346
BOOL      WINAPI DeleteMetaFile(HMETAFILE);
BOOL      WINAPI DeleteObject(HGDIOBJ);
INT       WINAPI DescribePixelFormat(HDC,int,UINT,
3347
                                       LPPIXELFORMATDESCRIPTOR);
3348
INT       WINAPI DrawEscape(HDC,INT,INT,LPCSTR);
3349 3350 3351
BOOL      WINAPI Ellipse(HDC,INT,INT,INT,INT);
INT       WINAPI EndDoc(HDC);
BOOL      WINAPI EndPath(HDC);
3352
BOOL      WINAPI EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,LPVOID,const RECT*);
3353 3354
INT       WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
INT       WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
3355
#define     EnumFontFamilies WINELIB_NAME_AW(EnumFontFamilies)
3356 3357
INT       WINAPI EnumFontFamiliesExA(HDC,LPLOGFONTA,FONTENUMPROCA,LPARAM,DWORD);
INT       WINAPI EnumFontFamiliesExW(HDC,LPLOGFONTW,FONTENUMPROCW,LPARAM,DWORD);
3358
#define     EnumFontFamiliesEx WINELIB_NAME_AW(EnumFontFamiliesEx)
3359 3360
INT       WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
INT       WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
3361
#define     EnumFonts WINELIB_NAME_AW(EnumFonts)
3362 3363 3364
INT         WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM);
INT         WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM);
#define     EnumICMProfiles WINELIB_NAME_AW(EnumICMProfiles)
3365 3366 3367 3368 3369 3370
BOOL      WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
INT       WINAPI EnumObjects(HDC,INT,GOBJENUMPROC,LPARAM);
BOOL      WINAPI EqualRgn(HRGN,HRGN);
INT       WINAPI Escape(HDC,INT,INT,LPCSTR,LPVOID);
INT       WINAPI ExcludeClipRect(HDC,INT,INT,INT,INT);
HPEN      WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*);
3371 3372
HRGN      WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*);
INT       WINAPI ExtEscape(HDC,INT,INT,LPCSTR,INT,LPSTR);
3373
BOOL      WINAPI ExtFloodFill(HDC,INT,INT,COLORREF,UINT);
3374
INT       WINAPI ExtSelectClipRgn(HDC,HRGN,INT);
3375 3376 3377 3378
BOOL      WINAPI ExtTextOutA(HDC,INT,INT,UINT,const RECT*,
                                 LPCSTR,UINT,const INT*);
BOOL      WINAPI ExtTextOutW(HDC,INT,INT,UINT,const RECT*,
                                 LPCWSTR,UINT,const INT*);
3379
#define     ExtTextOut WINELIB_NAME_AW(ExtTextOut)
3380 3381
BOOL      WINAPI FillPath(HDC);
BOOL      WINAPI FillRgn(HDC,HRGN,HBRUSH);
3382
BOOL      WINAPI FixBrushOrgEx(HDC,INT,INT,LPPOINT);
3383 3384 3385
BOOL      WINAPI FlattenPath(HDC);
BOOL      WINAPI FloodFill(HDC,INT,INT,COLORREF);
BOOL      WINAPI FrameRgn(HDC,HRGN,HBRUSH,INT,INT);
3386
BOOL      WINAPI GdiAlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
3387
BOOL      WINAPI GdiComment(HDC,UINT,const BYTE *);
3388
DEVMODEW * WINAPI GdiConvertToDevmodeW(const DEVMODEA *);
3389
BOOL      WINAPI GdiFlush(void);
3390
LONG      WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *);
3391
BOOL      WINAPI GdiGradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
3392 3393
BOOL      WINAPI GdiIsMetaFileDC(HDC);
BOOL      WINAPI GdiIsMetaPrintDC(HDC);
3394
BOOL      WINAPI GdiIsPlayMetafileDC(HDC);
3395
BOOL      WINAPI GdiTransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
3396 3397
INT       WINAPI GetArcDirection(HDC);
BOOL      WINAPI GetAspectRatioFilterEx(HDC,LPSIZE);
3398
LONG      WINAPI GetBitmapBits(HBITMAP,LONG,LPVOID);
3399 3400
BOOL      WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE);
BOOL      WINAPI GetBrushOrgEx(HDC,LPPOINT);
3401
COLORREF  WINAPI GetBkColor(HDC);
3402 3403 3404 3405
INT       WINAPI GetBkMode(HDC);
UINT      WINAPI GetBoundsRect(HDC,LPRECT,UINT);
BOOL      WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
BOOL      WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
3406
#define     GetCharABCWidths WINELIB_NAME_AW(GetCharABCWidths)
3407 3408 3409
BOOL      WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
BOOL      WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
#define     GetCharABCWidthsFloat WINELIB_NAME_AW(GetCharABCWidthsFloat)
3410
BOOL        WINAPI GetCharABCWidthsI(HDC,UINT,UINT,LPWORD,LPABC);
3411 3412
DWORD     WINAPI GetCharacterPlacementA(HDC,LPCSTR,INT,INT,GCP_RESULTSA*,DWORD);
DWORD     WINAPI GetCharacterPlacementW(HDC,LPCWSTR,INT,INT,GCP_RESULTSW*,DWORD);
3413
#define     GetCharacterPlacement WINELIB_NAME_AW(GetCharacterPlacement)
3414 3415
BOOL        WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT);
BOOL        WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT);
3416
#define     GetCharWidth32 WINELIB_NAME_AW(GetCharWidth32)
3417 3418
BOOL        WINAPI GetCharWidthA(HDC,UINT,UINT,LPINT);
BOOL        WINAPI GetCharWidthW(HDC,UINT,UINT,LPINT);
3419
#define     GetCharWidth WINELIB_NAME_AW(GetCharWidth)
3420 3421
BOOL        WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT);
BOOL        WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT);
3422
#define     GetCharWidthFloat WINELIB_NAME_AW(GetCharWidthFloat)
3423 3424 3425
INT         WINAPI GetClipBox(HDC,LPRECT);
INT         WINAPI GetClipRgn(HDC,HRGN);
BOOL        WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
3426
HCOLORSPACE WINAPI GetColorSpace(HDC);
3427 3428 3429 3430 3431 3432 3433 3434 3435
HGDIOBJ     WINAPI GetCurrentObject(HDC,UINT);
BOOL        WINAPI GetCurrentPositionEx(HDC,LPPOINT);
INT         WINAPI GetDeviceCaps(HDC,INT);
BOOL        WINAPI GetDeviceGammaRamp(HDC,LPVOID);
COLORREF    WINAPI GetDCBrushColor(HDC);
BOOL        WINAPI GetDCOrgEx(HDC,LPPOINT);
COLORREF    WINAPI GetDCPenColor(HDC);
UINT        WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
INT         WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,LPVOID,LPBITMAPINFO,UINT);
3436 3437 3438 3439
HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
#define     GetEnhMetaFile WINELIB_NAME_AW(GetEnhMetaFile)
UINT      WINAPI GetEnhMetaFileBits(HENHMETAFILE,UINT,LPBYTE);
3440 3441 3442
UINT        WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR);
UINT        WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR);
#define     GetEnhMetaFileDescription WINELIB_NAME_AW(GetEnhMetaFileDescription)
3443 3444 3445 3446
UINT      WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
UINT      WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
DWORD     WINAPI GetFontData(HDC,DWORD,DWORD,LPVOID,DWORD);
DWORD     WINAPI GetFontLanguageInfo(HDC);
3447 3448 3449
DWORD     WINAPI GetGlyphIndicesA(HDC,LPCSTR,INT,LPWORD,DWORD);
DWORD     WINAPI GetGlyphIndicesW(HDC,LPCWSTR,INT,LPWORD,DWORD);
#define   GetGlyphIndices WINELIB_NAME_AW(GetGlyphIndices)
3450 3451
DWORD     WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
DWORD     WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
3452
#define     GetGlyphOutline WINELIB_NAME_AW(GetGlyphOutline)
3453 3454 3455 3456 3457 3458
INT         WINAPI GetGraphicsMode(HDC);
BOOL        WINAPI GetICMProfileA(HDC,LPDWORD,LPSTR);
BOOL        WINAPI GetICMProfileW(HDC,LPDWORD,LPWSTR);
#define     GetICMProfile WINELIB_NAME_AW(GetICMProfile)
DWORD       WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR);
DWORD       WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR);
3459
#define     GetKerningPairs WINELIB_NAME_AW(GetKerningPairs)
3460
DWORD       WINAPI GetLayout(HDC);
3461 3462 3463
BOOL        WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD);
BOOL        WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD);
#define     GetLogColorSpace WINELIB_NAME_AW(GetLogColorSpace)
3464 3465 3466
INT       WINAPI GetMapMode(HDC);
HMETAFILE WINAPI GetMetaFileA(LPCSTR);
HMETAFILE WINAPI GetMetaFileW(LPCWSTR);
3467
#define     GetMetaFile WINELIB_NAME_AW(GetMetaFile)
3468 3469 3470 3471 3472
UINT        WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,LPVOID);
INT         WINAPI GetMetaRgn(HDC,HRGN);
BOOL        WINAPI GetMiterLimit(HDC, PFLOAT);
DWORD       WINAPI GetNearestColor(HDC,DWORD);
UINT        WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF);
3473 3474
INT         WINAPI GetObjectA(HGDIOBJ,INT,LPVOID);
INT         WINAPI GetObjectW(HGDIOBJ,INT,LPVOID);
3475
#define     GetObject WINELIB_NAME_AW(GetObject)
3476 3477 3478
DWORD       WINAPI GetObjectType(HGDIOBJ);
UINT        WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA);
UINT        WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW);
3479
#define     GetOutlineTextMetrics WINELIB_NAME_AW(GetOutlineTextMetrics)
3480 3481
UINT      WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
INT       WINAPI GetPath(HDC,LPPOINT,LPBYTE,INT);
3482
COLORREF  WINAPI GetPixel(HDC,INT,INT);
3483 3484
INT       WINAPI GetPixelFormat(HDC);
INT       WINAPI GetPolyFillMode(HDC);
3485
INT       WINAPI GetRandomRgn(HDC,HRGN,INT);
3486
BOOL      WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
3487
DWORD     WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA);
3488
INT       WINAPI GetRelAbs(HDC,DWORD);
3489 3490 3491 3492 3493 3494 3495 3496 3497
INT       WINAPI GetRgnBox(HRGN,LPRECT);
INT       WINAPI GetROP2(HDC);
HGDIOBJ   WINAPI GetStockObject(INT);
INT       WINAPI GetStretchBltMode(HDC);
UINT      WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY);
UINT      WINAPI GetSystemPaletteUse(HDC);
UINT      WINAPI GetTextAlign(HDC);
INT       WINAPI GetTextCharacterExtra(HDC);
UINT      WINAPI GetTextCharset(HDC);
3498 3499 3500 3501 3502 3503
UINT      WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD);
COLORREF  WINAPI GetTextColor(HDC);
BOOL      WINAPI GetTextExtentExPointA(HDC,LPCSTR,INT,INT,
                                           LPINT,LPINT,LPSIZE);
BOOL      WINAPI GetTextExtentExPointW(HDC,LPCWSTR,INT,INT,
                                           LPINT,LPINT,LPSIZE);
3504
#define     GetTextExtentExPoint WINELIB_NAME_AW(GetTextExtentExPoint)
3505 3506
BOOL      WINAPI GetTextExtentPointA(HDC,LPCSTR,INT,LPSIZE);
BOOL      WINAPI GetTextExtentPointW(HDC,LPCWSTR,INT,LPSIZE);
3507
#define     GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint)
3508 3509
BOOL      WINAPI GetTextExtentPoint32A(HDC,LPCSTR,INT,LPSIZE);
BOOL      WINAPI GetTextExtentPoint32W(HDC,LPCWSTR,INT,LPSIZE);
3510
#define     GetTextExtentPoint32 WINELIB_NAME_AW(GetTextExtentPoint32)
3511 3512
BOOL      WINAPI GetTextExtentExPointI(HDC,const WORD*,INT,INT,LPINT,LPINT,LPSIZE);
BOOL      WINAPI GetTextExtentPointI(HDC,const WORD*,INT,LPSIZE);
3513 3514
INT       WINAPI GetTextFaceA(HDC,INT,LPSTR);
INT       WINAPI GetTextFaceW(HDC,INT,LPWSTR);
3515
#define     GetTextFace WINELIB_NAME_AW(GetTextFace)
3516 3517
BOOL      WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA);
BOOL      WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW);
3518
#define     GetTextMetrics WINELIB_NAME_AW(GetTextMetrics)
Leo van den Berg's avatar
Leo van den Berg committed
3519 3520 3521 3522
BOOL        WINAPI GetViewportExtEx(HDC,LPSIZE);
BOOL        WINAPI GetViewportOrgEx(HDC,LPPOINT);
BOOL        WINAPI GetWindowExtEx(HDC,LPSIZE);
BOOL        WINAPI GetWindowOrgEx(HDC,LPPOINT);
3523
UINT        WINAPI GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC);
Leo van den Berg's avatar
Leo van den Berg committed
3524 3525 3526 3527 3528 3529 3530 3531 3532 3533
BOOL        WINAPI GetWorldTransform(HDC,LPXFORM);
BOOL        WINAPI GradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
INT         WINAPI IntersectClipRect(HDC,INT,INT,INT,INT);
BOOL        WINAPI InvertRgn(HDC,HRGN);
BOOL        WINAPI LineDDA(INT,INT,INT,INT,LINEDDAPROC,LPARAM);
BOOL        WINAPI LineTo(HDC,INT,INT);
BOOL        WINAPI LPtoDP(HDC,LPPOINT,INT);
BOOL        WINAPI MaskBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,HBITMAP,INT,INT,DWORD);
BOOL        WINAPI ModifyWorldTransform(HDC,const XFORM *, DWORD);
BOOL        WINAPI MoveToEx(HDC,INT,INT,LPPOINT);
3534 3535 3536 3537 3538 3539 3540 3541
INT       WINAPI OffsetClipRgn(HDC,INT,INT);
INT       WINAPI OffsetRgn(HRGN,INT,INT);
BOOL      WINAPI OffsetViewportOrgEx(HDC,INT,INT,LPPOINT);
BOOL      WINAPI OffsetWindowOrgEx(HDC,INT,INT,LPPOINT);
BOOL      WINAPI PaintRgn(HDC,HRGN);
BOOL      WINAPI PatBlt(HDC,INT,INT,INT,INT,DWORD);
HRGN      WINAPI PathToRegion(HDC);
BOOL      WINAPI Pie(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
3542 3543
BOOL      WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,const RECT*);
BOOL      WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT);
3544 3545
BOOL      WINAPI PlayMetaFile(HDC,HMETAFILE);
BOOL      WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT);
3546
BOOL      WINAPI PlgBlt(HDC,const POINT*,HDC,INT,INT,INT,INT,HBITMAP,INT,INT);
3547 3548
BOOL      WINAPI PolyBezier(HDC,const POINT*,DWORD);
BOOL      WINAPI PolyBezierTo(HDC,const POINT*,DWORD);
3549
BOOL      WINAPI PolyDraw(HDC,const POINT*,const BYTE*,DWORD);
3550
BOOL      WINAPI PolyPolygon(HDC,const POINT*,const INT*,UINT);
3551
BOOL      WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD);
3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562
BOOL      WINAPI Polygon(HDC,const POINT*,INT);
BOOL      WINAPI Polyline(HDC,const POINT*,INT);
BOOL      WINAPI PolylineTo(HDC,const POINT*,DWORD);
BOOL      WINAPI PtInRegion(HRGN,INT,INT);
BOOL      WINAPI PtVisible(HDC,INT,INT);
UINT      WINAPI RealizePalette(HDC);
BOOL      WINAPI Rectangle(HDC,INT,INT,INT,INT);
BOOL      WINAPI RectInRegion(HRGN,const RECT *);
BOOL      WINAPI RectVisible(HDC,const RECT*);
BOOL      WINAPI RemoveFontResourceA(LPCSTR);
BOOL      WINAPI RemoveFontResourceW(LPCWSTR);
3563
#define     RemoveFontResource WINELIB_NAME_AW(RemoveFontResource)
3564 3565 3566
BOOL        WINAPI RemoveFontResourceExA(LPCSTR, DWORD, PVOID);
BOOL        WINAPI RemoveFontResourceExW(LPCWSTR, DWORD, PVOID);
#define     RemoveFontResourceEx WINELIB_NAME_AW(RemoveFontResourceEx)
3567 3568
HDC       WINAPI ResetDCA(HDC,const DEVMODEA *);
HDC       WINAPI ResetDCW(HDC,const DEVMODEW *);
3569
#define     ResetDC WINELIB_NAME_AW(ResetDC)
3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581
BOOL      WINAPI ResizePalette(HPALETTE,UINT);
BOOL      WINAPI RestoreDC(HDC,INT);
BOOL      WINAPI RoundRect(HDC,INT,INT,INT,INT,INT,INT);
INT       WINAPI SaveDC(HDC);
BOOL      WINAPI ScaleViewportExtEx(HDC,INT,INT,INT,INT,LPSIZE);
BOOL      WINAPI ScaleWindowExtEx(HDC,INT,INT,INT,INT,LPSIZE);
BOOL      WINAPI SelectClipPath(HDC,INT);
INT       WINAPI SelectClipRgn(HDC,HRGN);
HGDIOBJ   WINAPI SelectObject(HDC,HGDIOBJ);
HPALETTE  WINAPI SelectPalette(HDC,HPALETTE,BOOL);
INT       WINAPI SetAbortProc(HDC,ABORTPROC);
INT       WINAPI SetArcDirection(HDC,INT);
3582
LONG      WINAPI SetBitmapBits(HBITMAP,LONG,LPCVOID);
3583
BOOL      WINAPI SetBitmapDimensionEx(HBITMAP,INT,INT,LPSIZE);
3584
COLORREF  WINAPI SetBkColor(HDC,COLORREF);
3585 3586
INT       WINAPI SetBkMode(HDC,INT);
UINT      WINAPI SetBoundsRect(HDC,const RECT*,UINT);
3587 3588
BOOL      WINAPI SetBrushOrgEx(HDC,INT,INT,LPPOINT);
BOOL      WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
3589
HCOLORSPACE WINAPI SetColorSpace(HDC,HCOLORSPACE);
3590
BOOL      WINAPI SetDeviceGammaRamp(HDC,LPVOID);
3591
COLORREF  WINAPI SetDCBrushColor(HDC,COLORREF);
3592
COLORREF  WINAPI SetDCPenColor(HDC, COLORREF);
3593
UINT      WINAPI SetDIBColorTable(HDC,UINT,UINT,CONST RGBQUAD*);
3594 3595 3596
INT       WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
INT       WINAPI SetDIBitsToDevice(HDC,INT,INT,DWORD,DWORD,INT,
                         INT,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
3597
HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE *);
3598
INT         WINAPI SetGraphicsMode(HDC,INT);
3599
INT         WINAPI SetICMMode(HDC,INT);
3600 3601 3602
BOOL        WINAPI SetICMProfileA(HDC,LPSTR);
BOOL        WINAPI SetICMProfileW(HDC,LPWSTR);
#define     SetICMProfile WINELIB_NAME_AW(SetICMProfile)
3603
DWORD       WINAPI SetLayout(HDC,DWORD);
3604 3605 3606 3607
INT         WINAPI SetMapMode(HDC,INT);
DWORD       WINAPI SetMapperFlags(HDC,DWORD);
HMETAFILE   WINAPI SetMetaFileBitsEx(UINT,const BYTE*);
INT         WINAPI SetMetaRgn(HDC);
3608
BOOL      WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT);
3609
UINT      WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*);
3610
COLORREF  WINAPI SetPixel(HDC,INT,INT,COLORREF);
3611 3612 3613
BOOL      WINAPI SetPixelV(HDC,INT,INT,COLORREF);
BOOL      WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
INT       WINAPI SetPolyFillMode(HDC,INT);
3614
BOOL      WINAPI SetRectRgn(HRGN,INT,INT,INT,INT);
3615 3616 3617 3618 3619 3620
INT       WINAPI SetRelAbs(HDC,INT);
INT       WINAPI SetROP2(HDC,INT);
INT       WINAPI SetStretchBltMode(HDC,INT);
UINT      WINAPI SetSystemPaletteUse(HDC,UINT);
UINT      WINAPI SetTextAlign(HDC,UINT);
INT       WINAPI SetTextCharacterExtra(HDC,INT);
3621
COLORREF  WINAPI SetTextColor(HDC,COLORREF);
3622 3623 3624 3625 3626 3627
BOOL      WINAPI SetTextJustification(HDC,INT,INT);
BOOL      WINAPI SetViewportExtEx(HDC,INT,INT,LPSIZE);
BOOL      WINAPI SetViewportOrgEx(HDC,INT,INT,LPPOINT);
BOOL      WINAPI SetWindowExtEx(HDC,INT,INT,LPSIZE);
BOOL      WINAPI SetWindowOrgEx(HDC,INT,INT,LPPOINT);
HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,CONST BYTE*,HDC,CONST METAFILEPICT *);
3628
BOOL      WINAPI SetWorldTransform(HDC,const XFORM*);
3629 3630
INT       WINAPI StartDocA(HDC,const DOCINFOA*);
INT       WINAPI StartDocW(HDC,const DOCINFOW*);
3631
#define     StartDoc WINELIB_NAME_AW(StartDoc)
3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642
INT       WINAPI StartPage(HDC);
INT       WINAPI EndPage(HDC);
BOOL      WINAPI StretchBlt(HDC,INT,INT,INT,INT,HDC,INT,
                                INT,INT,INT,DWORD);
INT       WINAPI StretchDIBits(HDC,INT,INT,INT,INT,INT,INT,
                       INT,INT,const VOID*,const BITMAPINFO*,UINT,DWORD);
BOOL      WINAPI StrokeAndFillPath(HDC);
BOOL      WINAPI StrokePath(HDC);
BOOL      WINAPI SwapBuffers(HDC);
BOOL      WINAPI TextOutA(HDC,INT,INT,LPCSTR,INT);
BOOL      WINAPI TextOutW(HDC,INT,INT,LPCWSTR,INT);
3643
#define     TextOut WINELIB_NAME_AW(TextOut)
3644
BOOL      WINAPI TranslateCharsetInfo(LPDWORD,LPCHARSETINFO,DWORD);
Leo van den Berg's avatar
Leo van den Berg committed
3645
BOOL      WINAPI TransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
3646 3647
BOOL      WINAPI UnrealizeObject(HGDIOBJ);
BOOL      WINAPI UpdateColors(HDC);
3648 3649 3650
BOOL      WINAPI UpdateICMRegKeyA(DWORD,LPSTR,LPSTR,UINT);
BOOL      WINAPI UpdateICMRegKeyW(DWORD,LPWSTR,LPWSTR,UINT);
#define     UpdateICMRegKey WINELIB_NAME_AW(UpdateICMRegKey)
3651
BOOL      WINAPI WidenPath(HDC);
Peter Ganten's avatar
Peter Ganten committed
3652 3653 3654
BOOL      WINAPI PolyTextOutA(HDC,PPOLYTEXTA,INT);
BOOL      WINAPI PolyTextOutW(HDC,PPOLYTEXTW,INT);
#define   PolyTextOut WINELIB_NAME_AW(PolyTextOut)
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
/* 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)

3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706
/* WGL prototypes */
HGLRC   WINAPI wglCreateContext(HDC);
HGLRC   WINAPI wglCreateLayerContext(HDC,INT);
BOOL    WINAPI wglCopyContext(HGLRC,HGLRC,UINT);
BOOL    WINAPI wglDeleteContext(HGLRC);
BOOL    WINAPI wglDescribeLayerPlane(HDC,INT,INT,UINT,LPLAYERPLANEDESCRIPTOR);
HGLRC   WINAPI wglGetCurrentContext(void);
HDC     WINAPI wglGetCurrentDC(void);
INT     WINAPI wglGetLayerPaletteEntries(HDC,INT,INT,INT,const COLORREF *);
PROC    WINAPI wglGetProcAddress(LPCSTR);
BOOL    WINAPI wglMakeCurrent(HDC,HGLRC);
BOOL    WINAPI wglRealizeLayerPalette(HDC,INT,BOOL);
INT     WINAPI wglSetLayerPaletteEntries(HDC,INT,INT,INT,const COLORREF *);
BOOL    WINAPI wglShareLists(HGLRC,HGLRC);
BOOL    WINAPI wglSwapLayerBuffers(HDC,UINT);
BOOL    WINAPI wglUseFontBitmaps(HDC,DWORD,DWORD,DWORD);
BOOL    WINAPI wglUseFontOutlines(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,INT,LPGLYPHMETRICSFLOAT);

3707 3708 3709 3710
#ifdef __cplusplus
}
#endif

3711 3712
#endif /* !NOGDI */
#endif /* _WINGDI_ */