oleaut32: Correctly marshal NULL interface ptrs.
[wine] / include / wingdi.h
1 /*
2  * Copyright (C) the Wine project
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * 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 #ifndef _WINGDI_
20 #define _WINGDI_
21 #ifndef NOGDI
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 #ifdef _GDI32_
28 #define WINGDIAPI
29 #else
30 #define WINGDIAPI DECLSPEC_IMPORT
31 #endif
32
33 typedef struct _ABCFLOAT {
34     FLOAT   abcfA;
35     FLOAT   abcfB;
36     FLOAT   abcfC;
37 } ABCFLOAT, *PABCFLOAT, *LPABCFLOAT;
38
39 #define FONTMAPPER_MAX 10
40
41 typedef struct
42 {
43     WORD   wFirst;
44     WORD   wSecond;
45     INT  iKernAmount;
46 } KERNINGPAIR, *LPKERNINGPAIR;
47
48 typedef struct tagPIXELFORMATDESCRIPTOR {
49     WORD  nSize;
50     WORD  nVersion;
51     DWORD dwFlags;
52     BYTE  iPixelType;
53     BYTE  cColorBits;
54     BYTE  cRedBits;
55     BYTE  cRedShift;
56     BYTE  cGreenBits;
57     BYTE  cGreenShift;
58     BYTE  cBlueBits;
59     BYTE  cBlueShift;
60     BYTE  cAlphaBits;
61     BYTE  cAlphaShift;
62     BYTE  cAccumBits;
63     BYTE  cAccumRedBits;
64     BYTE  cAccumGreenBits;
65     BYTE  cAccumBlueBits;
66     BYTE  cAccumAlphaBits;
67     BYTE  cDepthBits;
68     BYTE  cStencilBits;
69     BYTE  cAuxBuffers;
70     BYTE  iLayerType;
71     BYTE  bReserved;
72     DWORD dwLayerMask;
73     DWORD dwVisibleMask;
74     DWORD dwDamageMask;
75 } PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
76
77 #define PFD_TYPE_RGBA        0
78 #define PFD_TYPE_COLORINDEX  1
79
80 #define PFD_MAIN_PLANE       0
81 #define PFD_OVERLAY_PLANE    1
82 #define PFD_UNDERLAY_PLANE   (-1)
83
84 #define PFD_DOUBLEBUFFER          0x00000001
85 #define PFD_STEREO                0x00000002
86 #define PFD_DRAW_TO_WINDOW        0x00000004
87 #define PFD_DRAW_TO_BITMAP        0x00000008
88 #define PFD_SUPPORT_GDI           0x00000010
89 #define PFD_SUPPORT_OPENGL        0x00000020
90 #define PFD_GENERIC_FORMAT        0x00000040
91 #define PFD_NEED_PALETTE          0x00000080
92 #define PFD_NEED_SYSTEM_PALETTE   0x00000100
93 #define PFD_SWAP_EXCHANGE         0x00000200
94 #define PFD_SWAP_COPY             0x00000400
95 #define PFD_SWAP_LAYER_BUFFERS    0x00000800
96 #define PFD_GENERIC_ACCELERATED   0x00001000
97 #define PFD_SUPPORT_COMPOSITION   0x00008000 /* Vista stuff */
98
99 #define PFD_DEPTH_DONTCARE        0x20000000
100 #define PFD_DOUBLEBUFFER_DONTCARE 0x40000000
101 #define PFD_STEREO_DONTCARE       0x80000000
102
103 typedef struct tagCOLORADJUSTMENT
104 {
105         WORD   caSize;
106         WORD   caFlags;
107         WORD   caIlluminantIndex;
108         WORD   caRedGamma;
109         WORD   caGreenGamma;
110         WORD   caBlueGamma;
111         WORD   caReferenceBlack;
112         WORD   caReferenceWhite;
113         SHORT  caContrast;
114         SHORT  caBrightness;
115         SHORT  caColorfulness;
116         SHORT  caRedGreenTint;
117 } COLORADJUSTMENT, *PCOLORADJUSTMENT, *LPCOLORADJUSTMENT;
118
119 #define CA_NEGATIVE          0x0001
120 #define CA_LOG_FILTER        0x0002
121
122 #define ILLUMINANT_DEVICE_DEFAULT   0
123 #define ILLUMINANT_A                1
124 #define ILLUMINANT_B                2
125 #define ILLUMINANT_C                3
126 #define ILLUMINANT_D50              4
127 #define ILLUMINANT_D55              5
128 #define ILLUMINANT_D65              6
129 #define ILLUMINANT_D75              7
130 #define ILLUMINANT_F2               8
131 #define ILLUMINANT_MAX_INDEX        ILLUMINANT_F2
132
133 #define ILLUMINANT_TUNGSTEN         ILLUMINANT_A
134 #define ILLUMINANT_DAYLIGHT         ILLUMINANT_C
135 #define ILLUMINANT_FLUORESCENT      ILLUMINANT_F2
136 #define ILLUMINANT_NTSC             ILLUMINANT_C
137
138 #define RGB_GAMMA_MIN               (WORD)02500
139 #define RGB_GAMMA_MAX               (WORD)65000
140
141 #define REFERENCE_WHITE_MIN         (WORD)6000
142 #define REFERENCE_WHITE_MAX         (WORD)10000
143 #define REFERENCE_BLACK_MIN         (WORD)0
144 #define REFERENCE_BLACK_MAX         (WORD)4000
145
146 #define COLOR_ADJ_MIN               ((SHORT)-100)
147 #define COLOR_ADJ_MAX               (SHORT) 100
148
149 typedef LONG FXPT16DOT16, *LPFXPT16DOT16;
150 typedef LONG FXPT2DOT30, *LPFXPT2DOT30;
151 typedef LONG LCSCSTYPE;
152 typedef LONG LCSGAMUTMATCH;
153
154 #define LCS_sRGB                    0x73524742  /* 'sRGB' */
155 #define LCS_WINDOWS_COLOR_SPACE     0x57696e20  /* 'Win ' */
156
157 #define LCS_CALIBRATED_RGB    0x00000000L
158 #define LCS_DEVICE_RGB        0x00000001L
159 #define LCS_DEVICE_CMYK       0x00000002L
160
161 #define LCS_GM_BUSINESS       0x00000001L
162 #define LCS_GM_GRAPHICS       0x00000002L
163 #define LCS_GM_IMAGES         0x00000004L
164
165 #define CM_OUT_OF_GAMUT       255
166 #define CM_IN_GAMUT           0
167
168 typedef struct tagCIEXYZ
169 {
170   FXPT2DOT30 ciexyzX;
171   FXPT2DOT30 ciexyzY;
172   FXPT2DOT30 ciexyzZ;
173 } CIEXYZ, *LPCIEXYZ;
174
175 typedef struct tagCIEXYZTRIPLE
176 {
177   CIEXYZ ciexyzRed;
178   CIEXYZ ciexyzGreen;
179   CIEXYZ ciexyzBlue;
180 } CIEXYZTRIPLE, *LPCIEXYZTRIPLE;
181
182 typedef struct tagLOGCOLORSPACEA
183 {
184   DWORD lcsSignature;
185   DWORD lcsVersion;
186   DWORD lcsSize;
187   LCSCSTYPE lcsCSType;
188   LCSGAMUTMATCH lcsIntent;
189   CIEXYZTRIPLE lcsEndpoints;
190   DWORD lcsGammaRed;
191   DWORD lcsGammaGreen;
192   DWORD lcsGammaBlue;
193   CHAR lcsFilename[MAX_PATH];
194 } LOGCOLORSPACEA, *LPLOGCOLORSPACEA;
195
196  typedef struct tagLOGCOLORSPACEW
197 {
198   DWORD lcsSignature;
199   DWORD lcsVersion;
200   DWORD lcsSize;
201   LCSCSTYPE lcsCSType;
202   LCSGAMUTMATCH lcsIntent;
203   CIEXYZTRIPLE lcsEndpoints;
204   DWORD lcsGammaRed;
205   DWORD lcsGammaGreen;
206   DWORD lcsGammaBlue;
207   WCHAR lcsFilename[MAX_PATH];
208 } LOGCOLORSPACEW, *LPLOGCOLORSPACEW;
209
210 DECL_WINELIB_TYPE_AW(LPLOGCOLORSPACE)
211 DECL_WINELIB_TYPE_AW(LOGCOLORSPACE)
212
213 #define DC_FIELDS               1
214 #define DC_PAPERS               2
215 #define DC_PAPERSIZE            3
216 #define DC_MINEXTENT            4
217 #define DC_MAXEXTENT            5
218 #define DC_BINS                 6
219 #define DC_DUPLEX               7
220 #define DC_SIZE                 8
221 #define DC_EXTRA                9
222 #define DC_VERSION              10
223 #define DC_DRIVER               11
224 #define DC_BINNAMES             12
225 #define DC_ENUMRESOLUTIONS      13
226 #define DC_FILEDEPENDENCIES     14
227 #define DC_TRUETYPE             15
228 #define DC_PAPERNAMES           16
229 #define DC_ORIENTATION          17
230 #define DC_COPIES               18
231 #define DC_BINADJUST            19
232 #define DC_EMF_COMPLIANT        20
233 #define DC_DATATYPE_PRODUCED    21
234 #define DC_COLLATE              22
235 #define DC_MANUFACTURER         23
236 #define DC_MODEL                24
237 #define DC_PERSONALITY          25
238 #define DC_PRINTRATE            26
239 #define DC_PRINTRATEUNIT        27
240 #define DC_PRINTERMEM           28
241 #define DC_MEDIAREADY           29
242 #define DC_STAPLE               30
243 #define DC_PRINTRATEPPM         31
244 #define DC_COLORDEVICE          32
245 #define DC_NUP                  33
246 #define DC_MEDIATYPENAMES       34
247 #define DC_MEDIATYPES           35
248
249 #define DCTT_BITMAP             0x00000001L
250 #define DCTT_DOWNLOAD           0x00000002L
251 #define DCTT_SUBDEV             0x00000004L
252 #define DCTT_DOWNLOAD_OUTLINE   0x00000008L
253
254 #define DCBA_FACEUPNONE         0x0000
255 #define DCBA_FACEUPCENTER       0x0001
256 #define DCBA_FACEUPLEFT         0x0002
257 #define DCBA_FACEUPRIGHT        0x0003
258 #define DCBA_FACEDOWNNONE       0x0100
259 #define DCBA_FACEDOWNCENTER     0x0101
260 #define DCBA_FACEDOWNLEFT       0x0102
261 #define DCBA_FACEDOWNRIGHT      0x0103
262
263 #define PRINTRATEUNIT_PPM       1
264 #define PRINTRATEUNIT_CPS       2
265 #define PRINTRATEUNIT_LPM       3
266 #define PRINTRATEUNIT_IPM       4
267
268 /* Flag returned from Escape QUERYDIBSUPPORT */
269 #define QDI_SETDIBITS           1
270 #define QDI_GETDIBITS           2
271 #define QDI_DIBTOSCREEN         4
272 #define QDI_STRETCHDIB          8
273
274
275 /* GDI Escape commands */
276 #define NEWFRAME                1
277 #define ABORTDOC                2
278 #define NEXTBAND                3
279 #define SETCOLORTABLE           4
280 #define GETCOLORTABLE           5
281 #define FLUSHOUTPUT             6
282 #define DRAFTMODE               7
283 #define QUERYESCSUPPORT         8
284 #define SETABORTPROC            9
285 #define STARTDOC                10
286 #define ENDDOC                  11
287 #define GETPHYSPAGESIZE         12
288 #define GETPRINTINGOFFSET       13
289 #define GETSCALINGFACTOR        14
290 #define MFCOMMENT               15
291 #define GETPENWIDTH             16
292 #define SETCOPYCOUNT            17
293 #define SELECTPAPERSOURCE       18
294 #define DEVICEDATA              19
295 #define PASSTHROUGH             19
296 #define GETTECHNOLGY            20
297 #define GETTECHNOLOGY           20 /* yes, both of them */
298 #define SETLINECAP              21
299 #define SETLINEJOIN             22
300 #define SETMITERLIMIT           23
301 #define BANDINFO                24
302 #define DRAWPATTERNRECT         25
303 #define GETVECTORPENSIZE        26
304 #define GETVECTORBRUSHSIZE      27
305 #define ENABLEDUPLEX            28
306 #define GETSETPAPERBINS         29
307 #define GETSETPRINTORIENT       30
308 #define ENUMPAPERBINS           31
309 #define SETDIBSCALING           32
310 #define EPSPRINTING             33
311 #define ENUMPAPERMETRICS        34
312 #define GETSETPAPERMETRICS      35
313 #define POSTSCRIPT_DATA         37
314 #define POSTSCRIPT_IGNORE       38
315 #define MOUSETRAILS             39
316 #define GETDEVICEUNITS          42
317
318 #define DESKTOPVERTRES          117
319 #define DESKTOPHORZRES          118
320
321 #define GETEXTENDEDTEXTMETRICS  256
322 #define GETEXTENTTABLE          257
323 #define GETPAIRKERNTABLE        258
324 #define GETTRACKKERNTABLE       259
325 #define EXTTEXTOUT              512
326 #define GETFACENAME             513
327 #define DOWNLOADFACE            514
328 #define ENABLERELATIVEWIDTHS    768
329 #define ENABLEPAIRKERNING       769
330 #define SETKERNTRACK            770
331 #define SETALLJUSTVALUES        771
332 #define SETCHARSET              772
333
334 #define STRETCHBLT              2048
335 #define GETSETSCREENPARAMS      3072
336 #define QUERYDIBSUPPORT         3073
337 #define BEGIN_PATH              4096
338 #define CLIP_TO_PATH            4097
339 #define END_PATH                4098
340 #define EXT_DEVICE_CAPS         4099
341 #define RESTORE_CTM             4100
342 #define SAVE_CTM                4101
343 #define SET_ARC_DIRECTION       4102
344 #define SET_BACKGROUND_COLOR    4103
345 #define SET_POLY_MODE           4104
346 #define SET_SCREEN_ANGLE        4105
347 #define SET_SPREAD              4106
348 #define TRANSFORM_CTM           4107
349 #define SET_CLIP_BOX            4108
350 #define SET_BOUNDS              4109
351 #define SET_MIRROR_MODE         4110
352 #define OPENCHANNEL             4110
353 #define DOWNLOADHEADER          4111
354 #define CLOSECHANNEL            4112
355 #define POSTSCRIPT_PASSTHROUGH  4115
356 #define ENCAPSULATED_POSTSCRIPT 4116
357 #define POSTSCRIPT_IDENTIFY     4117
358 #define POSTSCRIPT_INJECTION    4118
359
360 /* for POSTSCRIPT_IDENTIFY */
361 #define PSIDENT_GDICENTRIC      0
362 #define PSIDENT_PSCENTRIC       1
363
364
365 #define QDI_SETDIBITS           1
366 #define QDI_GETDIBITS           2
367 #define QDI_DIBTOSCREEN         4
368 #define QDI_STRETCHDIB          8
369
370 /* Spooler Error Codes */
371 #define SP_NOTREPORTED  0x4000
372 #define SP_ERROR        (-1)
373 #define SP_APPABORT     (-2)
374 #define SP_USERABORT    (-3)
375 #define SP_OUTOFDISK    (-4)
376 #define SP_OUTOFMEMORY  (-5)
377
378 #define PR_JOBSTATUS     0
379
380   /* Raster operations */
381
382 #define R2_BLACK         1
383 #define R2_NOTMERGEPEN   2
384 #define R2_MASKNOTPEN    3
385 #define R2_NOTCOPYPEN    4
386 #define R2_MASKPENNOT    5
387 #define R2_NOT           6
388 #define R2_XORPEN        7
389 #define R2_NOTMASKPEN    8
390 #define R2_MASKPEN       9
391 #define R2_NOTXORPEN    10
392 #define R2_NOP          11
393 #define R2_MERGENOTPEN  12
394 #define R2_COPYPEN      13
395 #define R2_MERGEPENNOT  14
396 #define R2_MERGEPEN     15
397 #define R2_WHITE        16
398 #define R2_LAST         16
399
400 #define MAKEROP4(fore,back) (DWORD)((((back)<<8)&0xFF000000)|(fore))
401
402 #define SRCCOPY         0xcc0020
403 #define SRCPAINT        0xee0086
404 #define SRCAND          0x8800c6
405 #define SRCINVERT       0x660046
406 #define SRCERASE        0x440328
407 #define NOTSRCCOPY      0x330008
408 #define NOTSRCERASE     0x1100a6
409 #define MERGECOPY       0xc000ca
410 #define MERGEPAINT      0xbb0226
411 #define PATCOPY         0xf00021
412 #define PATPAINT        0xfb0a09
413 #define PATINVERT       0x5a0049
414 #define DSTINVERT       0x550009
415 #define BLACKNESS       0x000042
416 #define WHITENESS       0xff0062
417
418   /* StretchBlt() modes */
419 #define BLACKONWHITE         1
420 #define WHITEONBLACK         2
421 #define COLORONCOLOR         3
422 #define HALFTONE             4
423 #define MAXSTRETCHBLTMODE    4
424
425 #define STRETCH_ANDSCANS     BLACKONWHITE
426 #define STRETCH_ORSCANS      WHITEONBLACK
427 #define STRETCH_DELETESCANS  COLORONCOLOR
428 #define STRETCH_HALFTONE     HALFTONE
429
430   /* Colors */
431
432 #define RGB(r,g,b)          ((COLORREF)((BYTE)(r) | ((BYTE)(g) << 8) | ((BYTE)(b) << 16)))
433 #define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
434 #define PALETTEINDEX(i)     ((COLORREF)(0x01000000 | (WORD)(i)))
435
436 #define GetRValue(rgb)      ((BYTE)  (rgb) )
437 #define GetGValue(rgb)      ((BYTE) ((rgb) >> 8))
438 #define GetBValue(rgb)      ((BYTE) ((rgb) >> 16))
439
440 #define GetKValue(cmyk)     ((BYTE)  (cmyk) )
441 #define GetYValue(cmyk)     ((BYTE) ((cmyk) >> 8))
442 #define GetMValue(cmyk)     ((BYTE) ((cmyk) >> 16))
443 #define GetCValue(cmyk)     ((BYTE) ((cmyk) >> 24))
444
445 #define CMYK(c,m,y,k)       ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24)))
446
447 /* ICM stuff */
448 typedef INT (CALLBACK *ICMENUMPROCA)(LPSTR lpszFilename,LPARAM lParam);
449 typedef INT (CALLBACK *ICMENUMPROCW)(LPWSTR lpszFilename,LPARAM lParam);
450 DECL_WINELIB_TYPE_AW(ICMENUMPROC)
451
452
453 #define ICM_OFF   1
454 #define ICM_ON    2
455 #define ICM_QUERY 3
456
457   /* Bounds Accumulation APIs */
458 #define DCB_RESET       0x0001
459 #define DCB_ACCUMULATE  0x0002
460 #define DCB_DIRTY       DCB_ACCUMULATE
461 #define DCB_SET         (DCB_RESET | DCB_ACCUMULATE)
462 #define DCB_ENABLE      0x0004
463 #define DCB_DISABLE     0x0008
464
465 typedef struct
466 {
467     LONG paXCount;
468     LONG paYCount;
469     LONG paXExt;
470     LONG paYExt;
471     BYTE paRGBs;
472 } PELARRAY, *PPELARRAY, *LPPELARRAY;
473
474   /* Bitmaps */
475
476 typedef struct
477 {
478     INT  bmType;
479     INT  bmWidth;
480     INT  bmHeight;
481     INT  bmWidthBytes;
482     WORD   bmPlanes;
483     WORD   bmBitsPixel;
484     LPVOID bmBits;
485 } BITMAP, *PBITMAP, *LPBITMAP;
486
487
488   /* Brushes */
489
490 typedef struct
491 {
492     UINT       lbStyle;
493     COLORREF   lbColor;
494     ULONG_PTR  lbHatch;
495 } LOGBRUSH, *PLOGBRUSH, *LPLOGBRUSH;
496
497 typedef struct
498 {
499     UINT       lbStyle;
500     COLORREF   lbColor;
501     ULONG      lbHatch;
502 } LOGBRUSH32, *PLOGBRUSH32, *LPLOGBRUSH32;
503
504 typedef LOGBRUSH PATTERN, *PPATTERN, *LPPATTERN;
505
506
507   /* Brush styles */
508 #define BS_SOLID            0
509 #define BS_NULL             1
510 #define BS_HOLLOW           1
511 #define BS_HATCHED          2
512 #define BS_PATTERN          3
513 #define BS_INDEXED          4
514 #define BS_DIBPATTERN       5
515 #define BS_DIBPATTERNPT     6
516 #define BS_PATTERN8X8       7
517 #define BS_DIBPATTERN8X8    8
518 #define BS_MONOPATTERN      9
519
520   /* Hatch styles */
521 #define HS_HORIZONTAL       0
522 #define HS_VERTICAL         1
523 #define HS_FDIAGONAL        2
524 #define HS_BDIAGONAL        3
525 #define HS_CROSS            4
526 #define HS_DIAGCROSS        5
527
528   /* Fonts */
529
530 #define LF_FACESIZE     32
531 #define LF_FULLFACESIZE 64
532
533 #define RASTER_FONTTYPE     0x0001
534 #define DEVICE_FONTTYPE     0x0002
535 #define TRUETYPE_FONTTYPE   0x0004
536
537 typedef struct tagLOGFONTA
538 {
539     LONG   lfHeight;
540     LONG   lfWidth;
541     LONG   lfEscapement;
542     LONG   lfOrientation;
543     LONG   lfWeight;
544     BYTE   lfItalic;
545     BYTE   lfUnderline;
546     BYTE   lfStrikeOut;
547     BYTE   lfCharSet;
548     BYTE   lfOutPrecision;
549     BYTE   lfClipPrecision;
550     BYTE   lfQuality;
551     BYTE   lfPitchAndFamily;
552     CHAR   lfFaceName[LF_FACESIZE];
553 } LOGFONTA, *PLOGFONTA, *LPLOGFONTA;
554
555 typedef struct tagLOGFONTW
556 {
557     LONG   lfHeight;
558     LONG   lfWidth;
559     LONG   lfEscapement;
560     LONG   lfOrientation;
561     LONG   lfWeight;
562     BYTE   lfItalic;
563     BYTE   lfUnderline;
564     BYTE   lfStrikeOut;
565     BYTE   lfCharSet;
566     BYTE   lfOutPrecision;
567     BYTE   lfClipPrecision;
568     BYTE   lfQuality;
569     BYTE   lfPitchAndFamily;
570     WCHAR  lfFaceName[LF_FACESIZE];
571 } LOGFONTW, *PLOGFONTW, *LPLOGFONTW;
572
573 DECL_WINELIB_TYPE_AW(LOGFONT)
574 DECL_WINELIB_TYPE_AW(PLOGFONT)
575 DECL_WINELIB_TYPE_AW(LPLOGFONT)
576
577 typedef struct
578 {
579   LOGFONTA elfLogFont;
580   BYTE       elfFullName[LF_FULLFACESIZE];
581   BYTE       elfStyle[LF_FACESIZE];
582 } ENUMLOGFONTA, *LPENUMLOGFONTA;
583
584 typedef struct
585 {
586   LOGFONTW elfLogFont;
587   WCHAR      elfFullName[LF_FULLFACESIZE];
588   WCHAR      elfStyle[LF_FACESIZE];
589 } ENUMLOGFONTW, *LPENUMLOGFONTW;
590
591 DECL_WINELIB_TYPE_AW(ENUMLOGFONT)
592 DECL_WINELIB_TYPE_AW(LPENUMLOGFONT)
593
594 typedef struct
595 {
596   LOGFONTA elfLogFont;
597   BYTE       elfFullName[LF_FULLFACESIZE];
598   BYTE       elfStyle[LF_FACESIZE];
599   BYTE       elfScript[LF_FACESIZE];
600 } ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
601
602 typedef struct
603 {
604   LOGFONTW elfLogFont;
605   WCHAR      elfFullName[LF_FULLFACESIZE];
606   WCHAR      elfStyle[LF_FACESIZE];
607   WCHAR      elfScript[LF_FACESIZE];
608 } ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
609
610 DECL_WINELIB_TYPE_AW(ENUMLOGFONTEX)
611 DECL_WINELIB_TYPE_AW(LPENUMLOGFONTEX)
612
613 /*
614  * The FONTSIGNATURE tells which Unicode ranges and which code pages
615  * have glyphs in a font.
616  *
617  * fsUsb  128-bit bitmap. The most significant bits are 10 (magic number).
618  *        The remaining 126 bits map the Unicode ISO 10646 subranges
619  *        for which the font provides glyphs.
620  *
621  * fsCsb  64-bit bitmap. The low 32 bits map the Windows codepages for
622  *        which the font provides glyphs. The high 32 bits are for
623  *        non Windows codepages.
624  */
625 typedef struct
626 {
627   DWORD fsUsb[4];
628   DWORD fsCsb[2];
629 } FONTSIGNATURE, *PFONTSIGNATURE, *LPFONTSIGNATURE;
630
631 typedef struct
632 {
633   UINT  ciCharset; /* character set */
634   UINT  ciACP; /* ANSI code page */
635   FONTSIGNATURE fs;
636 } CHARSETINFO, *PCHARSETINFO, *LPCHARSETINFO;
637
638 /* Flags for TranslateCharsetInfo */
639 #define TCI_SRCCHARSET    1
640 #define TCI_SRCCODEPAGE   2
641 #define TCI_SRCFONTSIG    3
642
643 typedef struct
644 {
645     DWORD lsUsb[4];
646     DWORD lsCsbDefault[2];
647     DWORD lsCsbSupported[2];
648 } LOCALESIGNATURE, *PLOCALESIGNATURE, *LPLOCALESIGNATURE;
649
650
651 /* Flags for ModifyWorldTransform */
652 #define MWT_IDENTITY      1
653 #define MWT_LEFTMULTIPLY  2
654 #define MWT_RIGHTMULTIPLY 3
655 #define MWT_MIN           MWT_IDENTITY
656 #define MWT_MAX           MWT_RIGHTMULTIPLY
657
658 /* Object Definitions for EnumObjects() */
659 #define OBJ_PEN             1
660 #define OBJ_BRUSH           2
661 #define OBJ_DC              3
662 #define OBJ_METADC          4
663 #define OBJ_PAL             5
664 #define OBJ_FONT            6
665 #define OBJ_BITMAP          7
666 #define OBJ_REGION          8
667 #define OBJ_METAFILE        9
668 #define OBJ_MEMDC           10
669 #define OBJ_EXTPEN          11
670 #define OBJ_ENHMETADC       12
671 #define OBJ_ENHMETAFILE     13
672 #define OBJ_COLORSPACE      14
673
674 typedef struct tagXFORM
675 {
676     FLOAT  eM11;
677     FLOAT  eM12;
678     FLOAT  eM21;
679     FLOAT  eM22;
680     FLOAT  eDx;
681     FLOAT  eDy;
682 } XFORM, *PXFORM, *LPXFORM;
683
684   /* lfWeight values */
685 #define FW_DONTCARE         0
686 #define FW_THIN             100
687 #define FW_EXTRALIGHT       200
688 #define FW_ULTRALIGHT       200
689 #define FW_LIGHT            300
690 #define FW_NORMAL           400
691 #define FW_REGULAR          400
692 #define FW_MEDIUM           500
693 #define FW_SEMIBOLD         600
694 #define FW_DEMIBOLD         600
695 #define FW_BOLD             700
696 #define FW_EXTRABOLD        800
697 #define FW_ULTRABOLD        800
698 #define FW_HEAVY            900
699 #define FW_BLACK            900
700
701   /* lfCharSet values */
702 #define ANSI_CHARSET          (BYTE)0   /* CP1252, ansi-0, iso8859-{1,15} */
703 #define DEFAULT_CHARSET       (BYTE)1
704 #define SYMBOL_CHARSET        (BYTE)2
705 #define SHIFTJIS_CHARSET      (BYTE)128 /* CP932 */
706 #define HANGEUL_CHARSET       (BYTE)129 /* CP949, ksc5601.1987-0 */
707 #define HANGUL_CHARSET        HANGEUL_CHARSET
708 #define GB2312_CHARSET        (BYTE)134 /* CP936, gb2312.1980-0 */
709 #define CHINESEBIG5_CHARSET   (BYTE)136 /* CP950, big5.et-0 */
710 #define GREEK_CHARSET         (BYTE)161 /* CP1253 */
711 #define TURKISH_CHARSET       (BYTE)162 /* CP1254, -iso8859-9 */
712 #define HEBREW_CHARSET        (BYTE)177 /* CP1255, -iso8859-8 */
713 #define ARABIC_CHARSET        (BYTE)178 /* CP1256, -iso8859-6 */
714 #define BALTIC_CHARSET        (BYTE)186 /* CP1257, -iso8859-13 */
715 #define VIETNAMESE_CHARSET    (BYTE)163 /* CP1258 */
716 #define RUSSIAN_CHARSET       (BYTE)204 /* CP1251, -iso8859-5 */
717 #define EE_CHARSET            (BYTE)238 /* CP1250, -iso8859-2 */
718 #define EASTEUROPE_CHARSET    EE_CHARSET
719 #define THAI_CHARSET          (BYTE)222 /* CP874, iso8859-11, tis620 */
720 #define JOHAB_CHARSET         (BYTE)130 /* korean (johab) CP1361 */
721 #define MAC_CHARSET           (BYTE)77
722 #define OEM_CHARSET           (BYTE)255
723 /* I don't know if the values of *_CHARSET macros are defined in Windows
724  * or if we can choose them as we want. -- srtxg
725  */
726 #define VISCII_CHARSET        (BYTE)240 /* viscii1.1-1 */
727 #define TCVN_CHARSET          (BYTE)241 /* tcvn-0 */
728 #define KOI8_CHARSET          (BYTE)242 /* koi8-{r,u,ru} */
729 #define ISO3_CHARSET          (BYTE)243 /* iso8859-3 */
730 #define ISO4_CHARSET          (BYTE)244 /* iso8859-4 */
731 #define ISO10_CHARSET         (BYTE)245 /* iso8859-10 */
732 #define CELTIC_CHARSET        (BYTE)246 /* iso8859-14 */
733
734 #define FS_LATIN1              0x00000001L
735 #define FS_LATIN2              0x00000002L
736 #define FS_CYRILLIC            0x00000004L
737 #define FS_GREEK               0x00000008L
738 #define FS_TURKISH             0x00000010L
739 #define FS_HEBREW              0x00000020L
740 #define FS_ARABIC              0x00000040L
741 #define FS_BALTIC              0x00000080L
742 #define FS_VIETNAMESE          0x00000100L
743 #define FS_THAI                0x00010000L
744 #define FS_JISJAPAN            0x00020000L
745 #define FS_CHINESESIMP         0x00040000L
746 #define FS_WANSUNG             0x00080000L
747 #define FS_CHINESETRAD         0x00100000L
748 #define FS_JOHAB               0x00200000L
749 #define FS_SYMBOL              0x80000000L
750
751   /* lfOutPrecision values */
752 #define OUT_DEFAULT_PRECIS      0
753 #define OUT_STRING_PRECIS       1
754 #define OUT_CHARACTER_PRECIS    2
755 #define OUT_STROKE_PRECIS       3
756 #define OUT_TT_PRECIS           4
757 #define OUT_DEVICE_PRECIS       5
758 #define OUT_RASTER_PRECIS       6
759 #define OUT_TT_ONLY_PRECIS      7
760 #define OUT_OUTLINE_PRECIS      8
761
762   /* lfClipPrecision values */
763 #define CLIP_DEFAULT_PRECIS     0x00
764 #define CLIP_CHARACTER_PRECIS   0x01
765 #define CLIP_STROKE_PRECIS      0x02
766 #define CLIP_MASK               0x0F
767 #define CLIP_LH_ANGLES          0x10
768 #define CLIP_TT_ALWAYS          0x20
769 #define CLIP_EMBEDDED           0x80
770
771   /* lfQuality values */
772 #define DEFAULT_QUALITY        0
773 #define DRAFT_QUALITY          1
774 #define PROOF_QUALITY          2
775 #define NONANTIALIASED_QUALITY 3
776 #define ANTIALIASED_QUALITY    4
777 #define CLEARTYPE_QUALITY          5
778 #define CLEARTYPE_NATURAL_QUALITY  6
779
780   /* lfPitchAndFamily pitch values */
781 #define DEFAULT_PITCH       0x00
782 #define FIXED_PITCH         0x01
783 #define VARIABLE_PITCH      0x02
784 #define MONO_FONT           0x08
785
786 #define FF_DONTCARE         0x00
787 #define FF_ROMAN            0x10
788 #define FF_SWISS            0x20
789 #define FF_MODERN           0x30
790 #define FF_SCRIPT           0x40
791 #define FF_DECORATIVE       0x50
792
793 #ifndef _TEXTMETRIC_DEFINED
794 #define _TEXTMETRIC_DEFINED
795
796 typedef struct tagTEXTMETRICA
797 {
798     LONG      tmHeight;
799     LONG      tmAscent;
800     LONG      tmDescent;
801     LONG      tmInternalLeading;
802     LONG      tmExternalLeading;
803     LONG      tmAveCharWidth;
804     LONG      tmMaxCharWidth;
805     LONG      tmWeight;
806     LONG      tmOverhang;
807     LONG      tmDigitizedAspectX;
808     LONG      tmDigitizedAspectY;
809     BYTE      tmFirstChar;
810     BYTE      tmLastChar;
811     BYTE      tmDefaultChar;
812     BYTE      tmBreakChar;
813     BYTE      tmItalic;
814     BYTE      tmUnderlined;
815     BYTE      tmStruckOut;
816     BYTE      tmPitchAndFamily;
817     BYTE      tmCharSet;
818 } TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA;
819
820 typedef struct tagTEXTMETRICW
821 {
822     LONG      tmHeight;
823     LONG      tmAscent;
824     LONG      tmDescent;
825     LONG      tmInternalLeading;
826     LONG      tmExternalLeading;
827     LONG      tmAveCharWidth;
828     LONG      tmMaxCharWidth;
829     LONG      tmWeight;
830     LONG      tmOverhang;
831     LONG      tmDigitizedAspectX;
832     LONG      tmDigitizedAspectY;
833     WCHAR     tmFirstChar;
834     WCHAR     tmLastChar;
835     WCHAR     tmDefaultChar;
836     WCHAR     tmBreakChar;
837     BYTE      tmItalic;
838     BYTE      tmUnderlined;
839     BYTE      tmStruckOut;
840     BYTE      tmPitchAndFamily;
841     BYTE      tmCharSet;
842 } TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW;
843
844 DECL_WINELIB_TYPE_AW(TEXTMETRIC)
845 DECL_WINELIB_TYPE_AW(PTEXTMETRIC)
846 DECL_WINELIB_TYPE_AW(LPTEXTMETRIC)
847 #endif /* _TEXTMETRIC_DEFINED */
848
849
850 typedef struct tagPANOSE
851 {
852     BYTE bFamilyType;
853     BYTE bSerifStyle;
854     BYTE bWeight;
855     BYTE bProportion;
856     BYTE bContrast;
857     BYTE bStrokeVariation;
858     BYTE bArmStyle;
859     BYTE bLetterform;
860     BYTE bMidline;
861     BYTE bXHeight;
862 } PANOSE, *LPPANOSE;
863
864 #define PANOSE_COUNT                   10
865
866 #define PAN_FAMILYTYPE_INDEX           0
867 #define PAN_SERIFSTYLE_INDEX           1
868 #define PAN_WEIGTH_INDEX               2
869 #define PAN_PROPORTION_INDEX           3
870 #define PAN_CONTRAST_INDEX             4
871 #define PAN_STROKEVARIATION_INDEX      5
872 #define PAN_ARMSTYLE_INDEX             6
873 #define PAN_LETTERFORM_INDEX           7
874 #define PAN_MIDLINE_INDEX              8
875 #define PAN_XHEIGHT_INDEX              9
876
877 #define PAN_CULTURE_LATIN              0
878
879 #define PAN_ANY                        0
880 #define PAN_NO_FIT                     1
881
882 #define PAN_FAMILY_TEXT_DISPLAY        2
883 #define PAN_FAMILY_SCRIPT              3
884 #define PAN_FAMILY_DECORATIVE          4
885 #define PAN_FAMILY_PICTORIAL           5
886
887 #define PAN_SERIF_COVE                 2
888 #define PAN_SERIF_OBTUSE_COVE          3
889 #define PAN_SERIF_SQUARE_COVE          4
890 #define PAN_SERIF_OBTUSE_SQUARE_COVE   5
891 #define PAN_SERIF_SQUARE               6
892 #define PAN_SERIF_THIN                 7
893 #define PAN_SERIF_BONE                 8
894 #define PAN_SERIF_EXAGGERATED          9
895 #define PAN_SERIF_TRIANGLE             10
896 #define PAN_SERIF_NORMAL_SANS          11
897 #define PAN_SERIF_OBTUSE_SANS          12
898 #define PAN_SERIF_PERP_SANS            13
899 #define PAN_SERIF_FLARED               14
900 #define PAN_SERIF_ROUNDED              15
901
902 #define PAN_WEIGHT_VERY_LIGHT          2
903 #define PAN_WEIGHT_LIGHT               3
904 #define PAN_WEIGHT_THIN                4
905 #define PAN_WEIGHT_BOOK                5
906 #define PAN_WEIGHT_MEDIUM              6
907 #define PAN_WEIGHT_DEMI                7
908 #define PAN_WEIGHT_BOLD                8
909 #define PAN_WEIGHT_HEAVY               9
910 #define PAN_WEIGHT_BLACK               10
911 #define PAN_WEIGHT_NORD                11
912
913 #define PAN_PROP_OLD_STYLE             2
914 #define PAN_PROP_MODERN                3
915 #define PAN_PROP_EVEN_WIDTH            4
916 #define PAN_PROP_EXPANDED              5
917 #define PAN_PROP_CONDENSED             6
918 #define PAN_PROP_VERY_EXPANDED         7
919 #define PAN_PROP_VERY_CONDENSED        8
920 #define PAN_PROP_MONOSPACED            9
921
922 #define PAN_CONTRAST_NONE              2
923 #define PAN_CONTRAST_VERY_LOW          3
924 #define PAN_CONTRAST_LOW               4
925 #define PAN_CONTRAST_MEDIUM_LOW        5
926 #define PAN_CONTRAST_MEDIUM            6
927 #define PAN_CONTRAST_MEDIUM_HIGH       7
928 #define PAN_CONTRAST_HIGH              8
929 #define PAN_CONTRAST_VERY_HIGH         9
930
931 #define PAN_STROKE_GRADUAL_DIAG        2
932 #define PAN_STROKE_GRADUAL_TRAN        3
933 #define PAN_STROKE_GRADUAL_VERT        4
934 #define PAN_STROKE_GRADUAL_HORZ        5
935 #define PAN_STROKE_RAPID_VERT          6
936 #define PAN_STROKE_RAPID_HORZ          7
937 #define PAN_STROKE_INSTANT_VERT        8
938
939 #define PAN_STRAIGHT_ARMS_HORZ         2
940 #define PAN_STRAIGHT_ARMS_WEDGE        3
941 #define PAN_STRAIGHT_ARMS_VERT         4
942 #define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5
943 #define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6
944 #define PAN_BENT_ARMS_HORZ             7
945 #define PAN_BENT_ARMS_WEDGE            8
946 #define PAN_BENT_ARMS_VERT             9
947 #define PAN_BENT_ARMS_SINGLE_SERIF     10
948 #define PAN_BENT_ARMS_DOUBLE_SERIF     11
949
950 #define PAN_LETT_NORMAL_COMPACT        2
951 #define PAN_LETT_NORMAL_WEIGHTED       3
952 #define PAN_LETT_NORMAL_BOXED          4
953 #define PAN_LETT_NORMAL_FLATTENED      5
954 #define PAN_LETT_NORMAL_ROUNDED        6
955 #define PAN_LETT_NORMAL_OFF_CENTER     7
956 #define PAN_LETT_NORMAL_SQUARE         8
957 #define PAN_LETT_OBLIQUE_COMPACT       9
958 #define PAN_LETT_OBLIQUE_WEIGHTED      10
959 #define PAN_LETT_OBLIQUE_BOXED         11
960 #define PAN_LETT_OBLIQUE_FLATTENED     12
961 #define PAN_LETT_OBLIQUE_ROUNDED       13
962 #define PAN_LETT_OBLIQUE_OFF_CENTER    14
963 #define PAN_LETT_OBLIQUE_SQUARE        15
964
965 #define PAN_MIDLINE_STANDARD_TRIMMED   2
966 #define PAN_MIDLINE_STANDARD_POINTED   3
967 #define PAN_MIDLINE_STANDARD_SERIFED   4
968 #define PAN_MIDLINE_HIGH_TRIMMED       5
969 #define PAN_MIDLINE_HIGH_POINTED       6
970 #define PAN_MIDLINE_HIGH_SERIFED       7
971 #define PAN_MIDLINE_CONSTANT_TRIMMED   8
972 #define PAN_MIDLINE_CONSTANT_POINTED   9
973 #define PAN_MIDLINE_CONSTANT_SERIFED   10
974 #define PAN_MIDLINE_LOW_TRIMMED        11
975 #define PAN_MIDLINE_LOW_POINTED        12
976 #define PAN_MIDLINE_LOW_SERIFED        13
977
978 #define PAN_XHEIGHT_CONSTANT_SMALL     2
979 #define PAN_XHEIGHT_CONSTANT_STANDARD  3
980 #define PAN_XHEIGHT_CONSTANT_LARGE     4
981 #define PAN_XHEIGHT_DUCKING_SMALL      5
982 #define PAN_XHEIGHT_DUCKING_STANDARD   6
983 #define PAN_XHEIGHT_DUCKING_LARGE      7
984
985 #define ELF_VENDOR_SIZE 4
986 typedef struct
987 {
988   LOGFONTA    elfLogFont;
989   BYTE        elfFullName[LF_FULLFACESIZE];
990   BYTE        elfStyle[LF_FACESIZE];
991   DWORD       elfVersion;
992   DWORD       elfStyleSize;
993   DWORD       elfMatch;
994   DWORD       elfReserved;
995   BYTE        elfVendorId[ELF_VENDOR_SIZE];
996   DWORD       elfCulture;
997   PANOSE      elfPanose;
998 } EXTLOGFONTA, *PEXTLOGFONTA, *LPEXTLOGFONTA;
999
1000 typedef struct
1001 {
1002   LOGFONTW    elfLogFont;
1003   WCHAR       elfFullName[LF_FULLFACESIZE];
1004   WCHAR       elfStyle[LF_FACESIZE];
1005   DWORD       elfVersion;
1006   DWORD       elfStyleSize;
1007   DWORD       elfMatch;
1008   DWORD       elfReserved;
1009   BYTE        elfVendorId[ELF_VENDOR_SIZE];
1010   DWORD       elfCulture;
1011   PANOSE      elfPanose;
1012 } EXTLOGFONTW, *PEXTLOGFONTW, *LPEXTLOGFONTW;
1013
1014 DECL_WINELIB_TYPE_AW(EXTLOGFONT)
1015 DECL_WINELIB_TYPE_AW(PEXTLOGFONT)
1016 DECL_WINELIB_TYPE_AW(LPEXTLOGFONT)
1017
1018 #define ELF_VERSION         0
1019 #define ELF_CULTURE_LATIN   0
1020
1021 typedef struct _OUTLINETEXTMETRICA
1022 {
1023     UINT          otmSize;
1024     TEXTMETRICA   otmTextMetrics;
1025     BYTE            otmFiller;
1026     PANOSE          otmPanoseNumber;
1027     UINT          otmfsSelection;
1028     UINT          otmfsType;
1029     INT           otmsCharSlopeRise;
1030     INT           otmsCharSlopeRun;
1031     INT           otmItalicAngle;
1032     UINT          otmEMSquare;
1033     INT           otmAscent;
1034     INT           otmDescent;
1035     UINT          otmLineGap;
1036     UINT          otmsCapEmHeight;
1037     UINT          otmsXHeight;
1038     RECT          otmrcFontBox;
1039     INT           otmMacAscent;
1040     INT           otmMacDescent;
1041     UINT          otmMacLineGap;
1042     UINT          otmusMinimumPPEM;
1043     POINT         otmptSubscriptSize;
1044     POINT         otmptSubscriptOffset;
1045     POINT         otmptSuperscriptSize;
1046     POINT         otmptSuperscriptOffset;
1047     UINT          otmsStrikeoutSize;
1048     INT           otmsStrikeoutPosition;
1049     INT           otmsUnderscoreSize;
1050     INT           otmsUnderscorePosition;
1051     LPSTR           otmpFamilyName;
1052     LPSTR           otmpFaceName;
1053     LPSTR           otmpStyleName;
1054     LPSTR           otmpFullName;
1055 } OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, *LPOUTLINETEXTMETRICA;
1056
1057 typedef struct _OUTLINETEXTMETRICW
1058 {
1059     UINT          otmSize;
1060     TEXTMETRICW   otmTextMetrics;
1061     BYTE            otmFiller;
1062     PANOSE          otmPanoseNumber;
1063     UINT          otmfsSelection;
1064     UINT          otmfsType;
1065     INT           otmsCharSlopeRise;
1066     INT           otmsCharSlopeRun;
1067     INT           otmItalicAngle;
1068     UINT          otmEMSquare;
1069     INT           otmAscent;
1070     INT           otmDescent;
1071     UINT          otmLineGap;
1072     UINT          otmsCapEmHeight;
1073     UINT          otmsXHeight;
1074     RECT          otmrcFontBox;
1075     INT           otmMacAscent;
1076     INT           otmMacDescent;
1077     UINT          otmMacLineGap;
1078     UINT          otmusMinimumPPEM;
1079     POINT         otmptSubscriptSize;
1080     POINT         otmptSubscriptOffset;
1081     POINT         otmptSuperscriptSize;
1082     POINT         otmptSuperscriptOffset;
1083     UINT          otmsStrikeoutSize;
1084     INT           otmsStrikeoutPosition;
1085     INT           otmsUnderscoreSize;
1086     INT           otmsUnderscorePosition;
1087     LPSTR           otmpFamilyName;
1088     LPSTR           otmpFaceName;
1089     LPSTR           otmpStyleName;
1090     LPSTR           otmpFullName;
1091 } OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, *LPOUTLINETEXTMETRICW;
1092
1093 DECL_WINELIB_TYPE_AW(OUTLINETEXTMETRIC)
1094 DECL_WINELIB_TYPE_AW(POUTLINETEXTMETRIC)
1095 DECL_WINELIB_TYPE_AW(LPOUTLINETEXTMETRIC)
1096
1097 typedef struct
1098 {
1099     INT       x;
1100     INT       y;
1101     UINT      n;
1102     LPCSTR    lpstr;
1103     UINT      uiFlags;
1104     RECT      rcl;
1105     INT       *pdx;
1106 } POLYTEXTA, *PPOLYTEXTA, *LPPOLYTEXTA;
1107
1108 typedef struct
1109 {
1110     INT       x;
1111     INT       y;
1112     UINT      n;
1113     LPCWSTR   lpstr;
1114     UINT      uiFlags;
1115     RECT      rcl;
1116     INT       *pdx;
1117 } POLYTEXTW, *PPOLYTEXTW, *LPPOLYTEXTW;
1118
1119 DECL_WINELIB_TYPE_AW(POLYTEXT)
1120 DECL_WINELIB_TYPE_AW(PPOLYTEXT)
1121 DECL_WINELIB_TYPE_AW(LPPOLYTEXT)
1122
1123
1124 /* ntmFlags field flags */
1125 #define NTM_REGULAR     0x00000040L
1126 #define NTM_BOLD        0x00000020L
1127 #define NTM_ITALIC      0x00000001L
1128
1129 #define NTM_NONNEGATIVE_AC  0x00010000
1130 #define NTM_PS_OPENTYPE     0x00020000
1131 #define NTM_TT_OPENTYPE     0x00040000
1132 #define NTM_MULTIPLEMASTER  0x00080000
1133 #define NTM_TYPE1           0x00100000
1134 #define NTM_DSIG            0x00200000
1135
1136
1137 typedef struct
1138 {
1139     LONG      tmHeight;
1140     LONG      tmAscent;
1141     LONG      tmDescent;
1142     LONG      tmInternalLeading;
1143     LONG      tmExternalLeading;
1144     LONG      tmAveCharWidth;
1145     LONG      tmMaxCharWidth;
1146     LONG      tmWeight;
1147     LONG      tmOverhang;
1148     LONG      tmDigitizedAspectX;
1149     LONG      tmDigitizedAspectY;
1150     BYTE      tmFirstChar;
1151     BYTE      tmLastChar;
1152     BYTE      tmDefaultChar;
1153     BYTE      tmBreakChar;
1154     BYTE      tmItalic;
1155     BYTE      tmUnderlined;
1156     BYTE      tmStruckOut;
1157     BYTE      tmPitchAndFamily;
1158     BYTE      tmCharSet;
1159     DWORD     ntmFlags;
1160     UINT    ntmSizeEM;
1161     UINT    ntmCellHeight;
1162     UINT    ntmAvgWidth;
1163 } NEWTEXTMETRICA, *PNEWTEXTMETRICA, *LPNEWTEXTMETRICA;
1164
1165 typedef struct
1166 {
1167     LONG      tmHeight;
1168     LONG      tmAscent;
1169     LONG      tmDescent;
1170     LONG      tmInternalLeading;
1171     LONG      tmExternalLeading;
1172     LONG      tmAveCharWidth;
1173     LONG      tmMaxCharWidth;
1174     LONG      tmWeight;
1175     LONG      tmOverhang;
1176     LONG      tmDigitizedAspectX;
1177     LONG      tmDigitizedAspectY;
1178     WCHAR     tmFirstChar;
1179     WCHAR     tmLastChar;
1180     WCHAR     tmDefaultChar;
1181     WCHAR     tmBreakChar;
1182     BYTE      tmItalic;
1183     BYTE      tmUnderlined;
1184     BYTE      tmStruckOut;
1185     BYTE      tmPitchAndFamily;
1186     BYTE      tmCharSet;
1187     DWORD     ntmFlags;
1188     UINT      ntmSizeEM;
1189     UINT      ntmCellHeight;
1190     UINT      ntmAvgWidth;
1191 } NEWTEXTMETRICW, *PNEWTEXTMETRICW, *LPNEWTEXTMETRICW;
1192
1193 DECL_WINELIB_TYPE_AW(NEWTEXTMETRIC)
1194 DECL_WINELIB_TYPE_AW(PNEWTEXTMETRIC)
1195 DECL_WINELIB_TYPE_AW(LPNEWTEXTMETRIC)
1196
1197 typedef struct
1198 {
1199     NEWTEXTMETRICA      ntmTm;
1200     FONTSIGNATURE       ntmFontSig;
1201 } NEWTEXTMETRICEXA;
1202
1203 typedef struct
1204 {
1205     NEWTEXTMETRICW      ntmTm;
1206     FONTSIGNATURE       ntmFontSig;
1207 } NEWTEXTMETRICEXW;
1208
1209 DECL_WINELIB_TYPE_AW(NEWTEXTMETRICEX)
1210
1211 #if defined(STRICT)
1212
1213 #if !defined(NOTEXTMETRIC)
1214 typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA *, const TEXTMETRICA *, DWORD, LPARAM);
1215 typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW *, const TEXTMETRICW *, DWORD, LPARAM);
1216 #else /* !defined(NOTEXTMETRIC) */
1217 typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA *, const VOID *, DWORD, LPARAM);
1218 typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW *, const VOID *, DWORD, LPARAM);
1219 #endif /* !defined(NOTEXTMETRIC) */
1220 DECL_WINELIB_TYPE_AW(OLDFONTENUMPROC)
1221
1222 typedef OLDFONTENUMPROCA FONTENUMPROCA;
1223 typedef OLDFONTENUMPROCW FONTENUMPROCW;
1224 DECL_WINELIB_TYPE_AW(FONTENUMPROC)
1225
1226 typedef INT (CALLBACK *GOBJENUMPROC)(LPVOID, LPARAM);
1227 typedef VOID (CALLBACK *LINEDDAPROC)(INT, INT, LPARAM);
1228
1229 #else /* defined(STRICT) */
1230
1231 typedef FARPROC OLDFONTENUMPROC;
1232
1233 typedef FARPROC FONTENUMPROCA;
1234 typedef FARPROC FONTENUMPROCW;
1235 DECL_WINELIB_TYPE_AW(FONTENUMPROC)
1236
1237 typedef FARPROC GOBJENUMPROC;
1238 typedef FARPROC LINEDDAPROC;
1239
1240 #endif /* defined(STRICT) */
1241
1242   /* tmPitchAndFamily bits */
1243 #define TMPF_FIXED_PITCH    1           /* means variable pitch */
1244 #define TMPF_VECTOR         2
1245 #define TMPF_TRUETYPE       4
1246 #define TMPF_DEVICE         8
1247
1248   /* Text alignment */
1249 #define TA_NOUPDATECP       0x00
1250 #define TA_UPDATECP         0x01
1251 #define TA_LEFT             0x00
1252 #define TA_RIGHT            0x02
1253 #define TA_CENTER           0x06
1254 #define TA_TOP              0x00
1255 #define TA_BOTTOM           0x08
1256 #define TA_BASELINE         0x18
1257 #define TA_RTLREADING        0x100
1258 #define TA_MASK             TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING
1259
1260 #define VTA_BASELINE        TA_BASELINE
1261 #define VTA_LEFT            TA_BOTTOM
1262 #define VTA_RIGHT           TA_TOP
1263 #define VTA_CENTER          TA_CENTER
1264 #define VTA_BOTTOM          TA_RIGHT
1265 #define VTA_TOP             TA_LEFT
1266
1267
1268   /* ExtTextOut() parameters */
1269 #define ETO_GRAYED          0x0001
1270 #define ETO_OPAQUE          0x0002
1271 #define ETO_CLIPPED         0x0004
1272 #define ETO_GLYPH_INDEX     0x0010
1273 #define ETO_RTLREADING      0x0080
1274 #define ETO_NUMERICSLOCAL   0x0400
1275 #define ETO_NUMERICSLATIN   0x0800
1276 #define ETO_IGNORELANGUAGE  0x1000
1277 #define ETO_PDY             0x2000
1278
1279 #define ASPECT_FILTERING    0x0001
1280
1281   /* for GetGlyphIndices() */
1282 #define GGI_MARK_NONEXISTING_GLYPHS  0x0001
1283
1284 typedef struct
1285 {
1286     UINT        gmBlackBoxX;
1287     UINT        gmBlackBoxY;
1288     POINT       gmptGlyphOrigin;
1289     SHORT       gmCellIncX;
1290     SHORT       gmCellIncY;
1291 } GLYPHMETRICS, *LPGLYPHMETRICS;
1292
1293
1294 #define GGO_METRICS         0
1295 #define GGO_BITMAP          1
1296 #define GGO_NATIVE          2
1297 #define GGO_BEZIER          3
1298 #define GGO_GRAY2_BITMAP    4
1299 #define GGO_GRAY4_BITMAP    5
1300 #define GGO_GRAY8_BITMAP    6
1301 #define GGO_GLYPH_INDEX     0x80
1302 #define GGO_UNHINTED        0x100
1303
1304 #ifdef __WINESRC__
1305 #define WINE_GGO_GRAY16_BITMAP 0x10
1306 #define WINE_GGO_HRGB_BITMAP   0x11
1307 #define WINE_GGO_HBGR_BITMAP   0x12
1308 #define WINE_GGO_VRGB_BITMAP   0x13
1309 #define WINE_GGO_VBGR_BITMAP   0x14
1310 #endif
1311
1312 typedef struct
1313 {
1314     WORD    fract;
1315     SHORT   value;
1316 } FIXED;
1317
1318 typedef struct tagPOINTFX
1319 {
1320         FIXED x;
1321         FIXED y;
1322 } POINTFX, *LPPOINTFX;
1323
1324 typedef struct tagTTPOLYCURVE
1325 {
1326         WORD wType;
1327         WORD cpfx;
1328         POINTFX apfx[1];
1329 } TTPOLYCURVE, *LPTTPOLYCURVE;
1330
1331 typedef struct tagTTPOLYGONHEADER
1332 {
1333         DWORD cb;
1334         DWORD dwType;
1335         POINTFX pfxStart;
1336 } TTPOLYGONHEADER, *LPTTPOLYGONHEADER;
1337
1338 typedef struct
1339 {
1340      FIXED  eM11;
1341      FIXED  eM12;
1342      FIXED  eM21;
1343      FIXED  eM22;
1344 } MAT2, *LPMAT2;
1345
1346   /* for GetCharABCWidths() */
1347 typedef struct
1348 {
1349     INT   abcA;
1350     UINT  abcB;
1351     INT   abcC;
1352 } ABC, *PABC, *LPABC;
1353
1354
1355   /* for GetCharacterPlacement () */
1356
1357 #define GCP_DBCS          0x0001
1358 #define GCP_REORDER       0x0002
1359 #define GCP_USEKERNING    0x0008
1360 #define GCP_GLYPHSHAPE    0x0010
1361 #define GCP_LIGATE        0x0020
1362 #define GCP_DIACRITIC     0x0100
1363 #define GCP_KASHIDA       0x0200
1364 #define GCP_ERROR         0x8000
1365 #define FLI_MASK          0x103b
1366 #define GCP_JUSTIFY         0x00010000L
1367 #define FLI_GLYPHS          0x00040000L
1368 #define GCP_CLASSIN         0x00080000L
1369 #define GCP_MAXEXTENT       0x00100000L
1370 #define GCP_JUSTIFYIN       0x00200000L
1371 #define GCP_DISPLAYZWG      0x00400000L
1372 #define GCP_SYMSWAPOFF      0x00800000L
1373 #define GCP_NUMERICOVERRIDE 0x01000000L
1374 #define GCP_NEUTRALOVERRIDE 0x02000000L
1375 #define GCP_NUMERICSLATIN   0x04000000L
1376 #define GCP_NUMERICSLOCAL   0x08000000L
1377
1378 #define GCPCLASS_LATIN                     1
1379 #define GCPCLASS_HEBREW                    2
1380 #define GCPCLASS_ARABIC                    3
1381 #define GCPCLASS_NEUTRAL                   4
1382 #define GCPCLASS_LOCALNUMBER               5
1383 #define GCPCLASS_LATINNUMBER               6
1384 #define GCPCLASS_LATINNUMERICTERMINATOR    7
1385 #define GCPCLASS_LATINNUMERICSEPARATOR     8
1386 #define GCPCLASS_NUMERICSEPARATOR          9
1387 #define GCPCLASS_PREBOUNDLTR               0x80
1388 #define GCPCLASS_PREBOUNDRLT               0x40
1389 #define GCPCLASS_POSTBOUNDLTR              0x20
1390 #define GCPCLASS_POSTBOUNDRTL              0x10
1391
1392 #define GCPGLYPH_LINKBEFORE                0x8000
1393 #define GCPGLYPH_LINKAFTER                 0x4000
1394
1395
1396 typedef struct tagGCP_RESULTSA{
1397     DWORD  lStructSize;
1398     LPSTR  lpOutString;
1399     UINT   *lpOrder;
1400     INT    *lpDx;
1401     INT    *lpCaretPos;
1402     LPSTR  lpClass;
1403     LPWSTR lpGlyphs;
1404     UINT   nGlyphs;
1405     UINT   nMaxFit;
1406 } GCP_RESULTSA, *LPGCP_RESULTSA;
1407
1408 typedef struct tagGCP_RESULTSW
1409 {
1410     DWORD  lStructSize;
1411     LPWSTR lpOutString;
1412     UINT   *lpOrder;
1413     INT    *lpDx;
1414     INT    *lpCaretPos;
1415     LPSTR  lpClass;
1416     LPWSTR lpGlyphs;
1417     UINT   nGlyphs;
1418     UINT   nMaxFit;
1419 } GCP_RESULTSW, *LPGCP_RESULTSW;
1420
1421 DECL_WINELIB_TYPE_AW(GCP_RESULTS)
1422 DECL_WINELIB_TYPE_AW(LPGCP_RESULTS)
1423
1424   /* Rasterizer status */
1425 typedef struct
1426 {
1427     SHORT nSize;
1428     SHORT wFlags;
1429     SHORT nLanguageID;
1430 } RASTERIZER_STATUS, *LPRASTERIZER_STATUS;
1431
1432 #define TT_AVAILABLE        0x0001
1433 #define TT_ENABLED          0x0002
1434
1435 #ifdef __WINESRC__
1436 #define WINE_TT_SUBPIXEL_RENDERING_ENABLED 0x4000
1437 #define WINE_TT_HINTER_ENABLED 0x8000
1438 #endif
1439
1440 #define TT_PRIM_LINE    1
1441 #define TT_PRIM_QSPLINE 2
1442 #define TT_PRIM_CSPLINE 3
1443 #define TT_POLYGON_TYPE 24
1444
1445   /* OpenGL defines */
1446 typedef struct {
1447   FLOAT      x;
1448   FLOAT      y;
1449 } POINTFLOAT, *PPOINTFLOAT;
1450
1451 typedef struct {
1452   FLOAT      gmfBlackBoxX;
1453   FLOAT      gmfBlackBoxY;
1454   POINTFLOAT gmfptGlyphOrigin;
1455   FLOAT      gmfCellIncX;
1456   FLOAT      gmfCellIncY;
1457 } GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;
1458
1459 typedef struct {
1460   WORD  nSize;
1461   WORD  nVersion;
1462   DWORD dwFlags;
1463   BYTE  iPixelType;
1464   BYTE  cColorBits;
1465   BYTE  cRedBits;
1466   BYTE  cRedShift;
1467   BYTE  cGreenBits;
1468   BYTE  cGreenShift;
1469   BYTE  cBlueBits;
1470   BYTE  cBlueShift;
1471   BYTE  cAlphaBits;
1472   BYTE  cAlphaShift;
1473   BYTE  cAccumBits;
1474   BYTE  cAccumRedBits;
1475   BYTE  cAccumGreenBits;
1476   BYTE  cAccumBlueBits;
1477   BYTE  cAccumAlphaBits;
1478   BYTE  cDepthBits;
1479   BYTE  cStencilBits;
1480   BYTE  cAuxBuffers;
1481   BYTE  iLayerPlane;
1482   BYTE  bReserved;
1483   COLORREF crTransparent;
1484 } LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;
1485
1486 /* Get/SetSystemPaletteUse() values */
1487 #define SYSPAL_ERROR        0
1488 #define SYSPAL_STATIC       1
1489 #define SYSPAL_NOSTATIC     2
1490 #define SYSPAL_NOSTATIC256  3
1491     
1492 #ifndef _PALETTEENTRY_DEFINED
1493 #define _PALETTEENTRY_DEFINED
1494 typedef struct tagPALETTEENTRY
1495 {
1496         BYTE peRed, peGreen, peBlue, peFlags;
1497 } PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
1498 #endif
1499
1500 /* Logical palette entry flags */
1501 #define PC_RESERVED     0x01
1502 #define PC_EXPLICIT     0x02
1503 #define PC_NOCOLLAPSE   0x04
1504
1505 #ifndef _LOGPALETTE_DEFINED
1506 #define _LOGPALETTE_DEFINED
1507 typedef struct tagLOGPALETTE
1508 {
1509     WORD           palVersion;
1510     WORD           palNumEntries;
1511     PALETTEENTRY   palPalEntry[1];
1512 } LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE, *NPLOGPALETTE;
1513 #endif
1514
1515   /* Pens */
1516
1517 typedef struct
1518 {
1519     UINT     lopnStyle;
1520     POINT    lopnWidth;
1521     COLORREF lopnColor;
1522 } LOGPEN, *LPLOGPEN;
1523
1524
1525 typedef struct tagEXTLOGPEN
1526 {
1527     DWORD    elpPenStyle;
1528     DWORD    elpWidth;
1529     UINT     elpBrushStyle;
1530     COLORREF elpColor;
1531     ULONG_PTR elpHatch;
1532     DWORD elpNumEntries;
1533     DWORD elpStyleEntry[1];
1534 } EXTLOGPEN, *PEXTLOGPEN, *NPEXTLOGPEN, *LPEXTLOGPEN;
1535
1536 #define PS_SOLID         0x00000000
1537 #define PS_DASH          0x00000001
1538 #define PS_DOT           0x00000002
1539 #define PS_DASHDOT       0x00000003
1540 #define PS_DASHDOTDOT    0x00000004
1541 #define PS_NULL          0x00000005
1542 #define PS_INSIDEFRAME   0x00000006
1543 #define PS_USERSTYLE     0x00000007
1544 #define PS_ALTERNATE     0x00000008
1545 #define PS_STYLE_MASK    0x0000000f
1546
1547 #define PS_ENDCAP_ROUND  0x00000000
1548 #define PS_ENDCAP_SQUARE 0x00000100
1549 #define PS_ENDCAP_FLAT   0x00000200
1550 #define PS_ENDCAP_MASK   0x00000f00
1551
1552 #define PS_JOIN_ROUND    0x00000000
1553 #define PS_JOIN_BEVEL    0x00001000
1554 #define PS_JOIN_MITER    0x00002000
1555 #define PS_JOIN_MASK     0x0000f000
1556
1557 #define PS_COSMETIC      0x00000000
1558 #define PS_GEOMETRIC     0x00010000
1559 #define PS_TYPE_MASK     0x000f0000
1560
1561   /* Regions */
1562
1563 #define ERROR             0
1564 #define NULLREGION        1
1565 #define SIMPLEREGION      2
1566 #define COMPLEXREGION     3
1567 #define RGN_ERROR         ERROR
1568
1569 #define RGN_AND           1
1570 #define RGN_OR            2
1571 #define RGN_XOR           3
1572 #define RGN_DIFF          4
1573 #define RGN_COPY          5
1574 #define RGN_MIN           RGN_AND
1575 #define RGN_MAX           RGN_COPY
1576
1577 #define SYSRGN            4
1578
1579   /* Device contexts */
1580
1581   /* Polygon modes */
1582 #define ALTERNATE         1
1583 #define WINDING           2
1584 #define POLYFILL_LAST     2
1585
1586 /* Background modes */
1587 /* Apparently some broken svr4 includes define TRANSPARENT */
1588 #undef TRANSPARENT
1589 #define TRANSPARENT       1
1590 #define OPAQUE            2
1591 #define BKMODE_LAST       2
1592
1593   /* Graphics Modes */
1594 #define GM_COMPATIBLE     1
1595 #define GM_ADVANCED       2
1596 #define GM_LAST           2
1597
1598   /* Arc direction modes */
1599 #define AD_COUNTERCLOCKWISE 1
1600 #define AD_CLOCKWISE        2
1601
1602   /* Map modes */
1603 #define MM_TEXT           1
1604 #define MM_LOMETRIC       2
1605 #define MM_HIMETRIC       3
1606 #define MM_LOENGLISH      4
1607 #define MM_HIENGLISH      5
1608 #define MM_TWIPS          6
1609 #define MM_ISOTROPIC      7
1610 #define MM_ANISOTROPIC    8
1611
1612 #define MM_MIN            MM_TEXT
1613 #define MM_MAX            MM_ANISOTROPIC
1614 #define MM_MAX_FIXEDSCALE MM_TWIPS
1615
1616   /* Coordinate modes */
1617 #define ABSOLUTE          1
1618 #define RELATIVE          2
1619
1620   /* Flood fill modes */
1621 #define FLOODFILLBORDER   0
1622 #define FLOODFILLSURFACE  1
1623
1624   /* Device parameters for GetDeviceCaps() */
1625 #define DRIVERVERSION     0
1626 #define TECHNOLOGY        2
1627 #define HORZSIZE          4
1628 #define VERTSIZE          6
1629 #define HORZRES           8
1630 #define VERTRES           10
1631 #define BITSPIXEL         12
1632 #define PLANES            14
1633 #define NUMBRUSHES        16
1634 #define NUMPENS           18
1635 #define NUMMARKERS        20
1636 #define NUMFONTS          22
1637 #define NUMCOLORS         24
1638 #define PDEVICESIZE       26
1639 #define CURVECAPS         28
1640 #define LINECAPS          30
1641 #define POLYGONALCAPS     32
1642 #define TEXTCAPS          34
1643 #define CLIPCAPS          36
1644 #define RASTERCAPS        38
1645 #define ASPECTX           40
1646 #define ASPECTY           42
1647 #define ASPECTXY          44
1648 #define LOGPIXELSX        88
1649 #define LOGPIXELSY        90
1650 #define CAPS1             94
1651 #define SIZEPALETTE       104
1652 #define NUMRESERVED       106
1653 #define COLORRES          108
1654
1655 #define PHYSICALWIDTH     110
1656 #define PHYSICALHEIGHT    111
1657 #define PHYSICALOFFSETX   112
1658 #define PHYSICALOFFSETY   113
1659 #define SCALINGFACTORX    114
1660 #define SCALINGFACTORY    115
1661 #define VREFRESH          116
1662 #define DESKTOPVERTRES    117
1663 #define DESKTOPHORZRES    118
1664 #define BLTALIGNMENT      119
1665 #define SHADEBLENDCAPS    120
1666 #define COLORMGMTCAPS     121
1667
1668 /* TECHNOLOGY */
1669 #define DT_PLOTTER        0
1670 #define DT_RASDISPLAY     1
1671 #define DT_RASPRINTER     2
1672 #define DT_RASCAMERA      3
1673 #define DT_CHARSTREAM     4
1674 #define DT_METAFILE       5
1675 #define DT_DISPFILE       6
1676
1677 /* CURVECAPS */
1678 #define CC_NONE           0x0000
1679 #define CC_CIRCLES        0x0001
1680 #define CC_PIE            0x0002
1681 #define CC_CHORD          0x0004
1682 #define CC_ELLIPSES       0x0008
1683 #define CC_WIDE           0x0010
1684 #define CC_STYLED         0x0020
1685 #define CC_WIDESTYLED     0x0040
1686 #define CC_INTERIORS      0x0080
1687 #define CC_ROUNDRECT      0x0100
1688
1689 /* LINECAPS */
1690 #define LC_NONE           0x0000
1691 #define LC_POLYLINE       0x0002
1692 #define LC_MARKER         0x0004
1693 #define LC_POLYMARKER     0x0008
1694 #define LC_WIDE           0x0010
1695 #define LC_STYLED         0x0020
1696 #define LC_WIDESTYLED     0x0040
1697 #define LC_INTERIORS      0x0080
1698
1699 /* POLYGONALCAPS */
1700 #define PC_NONE           0x0000
1701 #define PC_POLYGON        0x0001
1702 #define PC_RECTANGLE      0x0002
1703 #define PC_WINDPOLYGON    0x0004
1704 #define PC_TRAPEZOID      0x0004
1705 #define PC_SCANLINE       0x0008
1706 #define PC_WIDE           0x0010
1707 #define PC_STYLED         0x0020
1708 #define PC_WIDESTYLED     0x0040
1709 #define PC_INTERIORS      0x0080
1710 #define PC_POLYPOLYGON    0x0100
1711 #define PC_PATHS          0x0200
1712
1713 /* TEXTCAPS */
1714 #define TC_OP_CHARACTER   0x0001
1715 #define TC_OP_STROKE      0x0002
1716 #define TC_CP_STROKE      0x0004
1717 #define TC_CR_90          0x0008
1718 #define TC_CR_ANY         0x0010
1719 #define TC_SF_X_YINDEP    0x0020
1720 #define TC_SA_DOUBLE      0x0040
1721 #define TC_SA_INTEGER     0x0080
1722 #define TC_SA_CONTIN      0x0100
1723 #define TC_EA_DOUBLE      0x0200
1724 #define TC_IA_ABLE        0x0400
1725 #define TC_UA_ABLE        0x0800
1726 #define TC_SO_ABLE        0x1000
1727 #define TC_RA_ABLE        0x2000
1728 #define TC_VA_ABLE        0x4000
1729 #define TC_RESERVED       0x8000
1730 #define TC_SCROLLBLT      0x00010000
1731
1732 /* CLIPCAPS */
1733 #define CP_NONE           0x0000
1734 #define CP_RECTANGLE      0x0001
1735 #define CP_REGION         0x0002
1736
1737 /* RASTERCAPS */
1738 #define RC_NONE           0x0000
1739 #define RC_BITBLT         0x0001
1740 #define RC_BANDING        0x0002
1741 #define RC_SCALING        0x0004
1742 #define RC_BITMAP64       0x0008
1743 #define RC_GDI20_OUTPUT   0x0010
1744 #define RC_GDI20_STATE    0x0020
1745 #define RC_SAVEBITMAP     0x0040
1746 #define RC_DI_BITMAP      0x0080
1747 #define RC_PALETTE        0x0100
1748 #define RC_DIBTODEV       0x0200
1749 #define RC_BIGFONT        0x0400
1750 #define RC_STRETCHBLT     0x0800
1751 #define RC_FLOODFILL      0x1000
1752 #define RC_STRETCHDIB     0x2000
1753 #define RC_OP_DX_OUTPUT   0x4000
1754 #define RC_DEVBITS        0x8000
1755
1756 /* CAPS1 */
1757 #define C1_TRANSPARENT    0x0001
1758 #define TC_TT_ABLE        0x0002
1759 #define C1_TT_CR_ANY      0x0004
1760 #define C1_EMF_COMPLIANT  0x0008
1761 #define C1_DIBENGINE      0x0010
1762 #define C1_GAMMA_RAMP     0x0040
1763 #define C1_REINIT_ABLE    0x0080
1764 #define C1_GLYPH_INDEX    0x0100
1765 #define C1_BIT_PACKED     0x0200
1766 #define C1_BYTE_PACKED    0x0400
1767 #define C1_COLORCURSOR    0x0800
1768 #define C1_CMYK_ABLE      0x1000
1769 #define C1_SLOW_CARD      0x2000
1770
1771 /* SHADEBLENDCAPS */
1772 #define SB_NONE           0x0000
1773 #define SB_CONST_ALPHA    0x0001
1774 #define SB_PIXEL_ALPHA    0x0002
1775 #define SB_PREMULT_ALPHA  0x0004
1776 #define SB_GRAD_RECT      0x0010
1777 #define SB_GRAD_TRI       0x0020
1778
1779   /* Device-independent bitmaps */
1780
1781 typedef struct tagRGBQUAD {
1782   BYTE rgbBlue;
1783   BYTE rgbGreen;
1784   BYTE rgbRed;
1785   BYTE rgbReserved;
1786 } RGBQUAD, *LPRGBQUAD;
1787
1788 typedef struct tagRGBTRIPLE {
1789   BYTE rgbtBlue;
1790   BYTE rgbtGreen;
1791   BYTE rgbtRed;
1792 } RGBTRIPLE;
1793
1794 #include <pshpack2.h>
1795 typedef struct
1796 {
1797     WORD    bfType;
1798     DWORD   bfSize;
1799     WORD    bfReserved1;
1800     WORD    bfReserved2;
1801     DWORD   bfOffBits;
1802 } BITMAPFILEHEADER, *PBITMAPFILEHEADER, *LPBITMAPFILEHEADER;
1803 #include <poppack.h>
1804
1805 #define MAKEPOINTS(l)  (*((POINTS *)&(l)))
1806
1807 typedef struct
1808 {
1809     DWORD       biSize;
1810     LONG        biWidth;
1811     LONG        biHeight;
1812     WORD        biPlanes;
1813     WORD        biBitCount;
1814     DWORD       biCompression;
1815     DWORD       biSizeImage;
1816     LONG        biXPelsPerMeter;
1817     LONG        biYPelsPerMeter;
1818     DWORD       biClrUsed;
1819     DWORD       biClrImportant;
1820 } BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
1821
1822 typedef struct
1823 {
1824     DWORD        bV4Size;
1825     LONG         bV4Width;
1826     LONG         bV4Height;
1827     WORD         bV4Planes;
1828     WORD         bV4BitCount;
1829     DWORD        bV4V4Compression;
1830     DWORD        bV4SizeImage;
1831     LONG         bV4XPelsPerMeter;
1832     LONG         bV4YPelsPerMeter;
1833     DWORD        bV4ClrUsed;
1834     DWORD        bV4ClrImportant;
1835     DWORD        bV4RedMask;
1836     DWORD        bV4GreenMask;
1837     DWORD        bV4BlueMask;
1838     DWORD        bV4AlphaMask;
1839     DWORD        bV4CSType;
1840     CIEXYZTRIPLE bV4Endpoints;
1841     DWORD        bV4GammaRed;
1842     DWORD        bV4GammaGreen;
1843     DWORD        bV4GammaBlue;
1844 } BITMAPV4HEADER, *PBITMAPV4HEADER;
1845
1846 typedef struct {
1847     DWORD        bV5Size;
1848     LONG         bV5Width;
1849     LONG         bV5Height;
1850     WORD         bV5Planes;
1851     WORD         bV5BitCount;
1852     DWORD        bV5Compression;
1853     DWORD        bV5SizeImage;
1854     LONG         bV5XPelsPerMeter;
1855     LONG         bV5YPelsPerMeter;
1856     DWORD        bV5ClrUsed;
1857     DWORD        bV5ClrImportant;
1858     DWORD        bV5RedMask;
1859     DWORD        bV5GreenMask;
1860     DWORD        bV5BlueMask;
1861     DWORD        bV5AlphaMask;
1862     DWORD        bV5CSType;
1863     CIEXYZTRIPLE bV5Endpoints;
1864     DWORD        bV5GammaRed;
1865     DWORD        bV5GammaGreen;
1866     DWORD        bV5GammaBlue;
1867     DWORD        bV5Intent;
1868     DWORD        bV5ProfileData;
1869     DWORD        bV5ProfileSize;
1870     DWORD        bV5Reserved;
1871 } BITMAPV5HEADER, *LPBITMAPV5HEADER, *PBITMAPV5HEADER;
1872
1873 #define PROFILE_LINKED   0x4c494e4b     /* 'LINK' */
1874 #define PROFILE_EMBEDDED 0x4d424544     /* 'MBED' */
1875
1876
1877   /* biCompression */
1878 #define BI_RGB           0
1879 #define BI_RLE8          1
1880 #define BI_RLE4          2
1881 #define BI_BITFIELDS     3
1882 #define BI_JPEG          4
1883 #define BI_PNG           5
1884
1885 typedef struct tagBITMAPINFO
1886 {
1887     BITMAPINFOHEADER bmiHeader;
1888     RGBQUAD          bmiColors[1];
1889 } BITMAPINFO, *PBITMAPINFO, *LPBITMAPINFO;
1890
1891 typedef struct
1892 {
1893     DWORD   bcSize;
1894     WORD    bcWidth;
1895     WORD    bcHeight;
1896     WORD    bcPlanes;
1897     WORD    bcBitCount;
1898 } BITMAPCOREHEADER, *PBITMAPCOREHEADER, *LPBITMAPCOREHEADER;
1899
1900 typedef struct
1901 {
1902     BITMAPCOREHEADER bmciHeader;
1903     RGBTRIPLE        bmciColors[1];
1904 } BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO;
1905
1906 #define DIB_RGB_COLORS   0
1907 #define DIB_PAL_COLORS   1
1908 #define CBM_INIT         4
1909
1910 typedef struct
1911 {
1912         BITMAP          dsBm;
1913         BITMAPINFOHEADER        dsBmih;
1914         DWORD                   dsBitfields[3];
1915         HANDLE          dshSection;
1916         DWORD                   dsOffset;
1917 } DIBSECTION, *PDIBSECTION, *LPDIBSECTION;
1918
1919   /* Stock GDI objects for GetStockObject() */
1920
1921 #define WHITE_BRUSH         0
1922 #define LTGRAY_BRUSH        1
1923 #define GRAY_BRUSH          2
1924 #define DKGRAY_BRUSH        3
1925 #define BLACK_BRUSH         4
1926 #define NULL_BRUSH          5
1927 #define HOLLOW_BRUSH        5
1928 #define WHITE_PEN           6
1929 #define BLACK_PEN           7
1930 #define NULL_PEN            8
1931 #define OEM_FIXED_FONT      10
1932 #define ANSI_FIXED_FONT     11
1933 #define ANSI_VAR_FONT       12
1934 #define SYSTEM_FONT         13
1935 #define DEVICE_DEFAULT_FONT 14
1936 #define DEFAULT_PALETTE     15
1937 #define SYSTEM_FIXED_FONT   16
1938 #define DEFAULT_GUI_FONT    17
1939 #define DC_BRUSH            18
1940 #define DC_PEN              19
1941
1942 #define STOCK_LAST          19
1943
1944 #define CLR_INVALID         0xffffffff
1945 /* Metafile header structure */
1946 #include <pshpack2.h>
1947 typedef struct
1948 {
1949     WORD       mtType;
1950     WORD       mtHeaderSize;
1951     WORD       mtVersion;
1952     DWORD      mtSize;
1953     WORD       mtNoObjects;
1954     DWORD      mtMaxRecord;
1955     WORD       mtNoParameters;
1956 } METAHEADER, *PMETAHEADER, *LPMETAHEADER;
1957 #include <poppack.h>
1958
1959 /* Metafile typical record structure */
1960 typedef struct
1961 {
1962     DWORD      rdSize;
1963     WORD       rdFunction;
1964     WORD       rdParm[1];
1965 } METARECORD, *PMETARECORD, *LPMETARECORD;
1966
1967 /* Handle table structure */
1968
1969 typedef struct
1970 {
1971     HGDIOBJ objectHandle[1];
1972 } HANDLETABLE, *PHANDLETABLE, *LPHANDLETABLE;
1973
1974
1975 /* Clipboard metafile picture structure */
1976 typedef struct
1977 {
1978     LONG       mm;
1979     LONG       xExt;
1980     LONG       yExt;
1981     HMETAFILE  hMF;
1982 } METAFILEPICT, *LPMETAFILEPICT;
1983
1984
1985 /* Metafile functions */
1986 #define META_SETBKCOLOR              0x0201
1987 #define META_SETBKMODE               0x0102
1988 #define META_SETMAPMODE              0x0103
1989 #define META_SETROP2                 0x0104
1990 #define META_SETRELABS               0x0105
1991 #define META_SETPOLYFILLMODE         0x0106
1992 #define META_SETSTRETCHBLTMODE       0x0107
1993 #define META_SETTEXTCHAREXTRA        0x0108
1994 #define META_SETTEXTCOLOR            0x0209
1995 #define META_SETTEXTJUSTIFICATION    0x020A
1996 #define META_SETWINDOWORG            0x020B
1997 #define META_SETWINDOWEXT            0x020C
1998 #define META_SETVIEWPORTORG          0x020D
1999 #define META_SETVIEWPORTEXT          0x020E
2000 #define META_OFFSETWINDOWORG         0x020F
2001 #define META_SCALEWINDOWEXT          0x0410
2002 #define META_OFFSETVIEWPORTORG       0x0211
2003 #define META_SCALEVIEWPORTEXT        0x0412
2004 #define META_LINETO                  0x0213
2005 #define META_MOVETO                  0x0214
2006 #define META_EXCLUDECLIPRECT         0x0415
2007 #define META_INTERSECTCLIPRECT       0x0416
2008 #define META_ARC                     0x0817
2009 #define META_ELLIPSE                 0x0418
2010 #define META_FLOODFILL               0x0419
2011 #define META_PIE                     0x081A
2012 #define META_RECTANGLE               0x041B
2013 #define META_ROUNDRECT               0x061C
2014 #define META_PATBLT                  0x061D
2015 #define META_SAVEDC                  0x001E
2016 #define META_SETPIXEL                0x041F
2017 #define META_OFFSETCLIPRGN           0x0220
2018 #define META_TEXTOUT                 0x0521
2019 #define META_BITBLT                  0x0922
2020 #define META_STRETCHBLT              0x0B23
2021 #define META_POLYGON                 0x0324
2022 #define META_POLYLINE                0x0325
2023 #define META_ESCAPE                  0x0626
2024 #define META_RESTOREDC               0x0127
2025 #define META_FILLREGION              0x0228
2026 #define META_FRAMEREGION             0x0429
2027 #define META_INVERTREGION            0x012A
2028 #define META_PAINTREGION             0x012B
2029 #define META_SELECTCLIPREGION        0x012C
2030 #define META_SELECTOBJECT            0x012D
2031 #define META_SETTEXTALIGN            0x012E
2032 #define META_DRAWTEXT                0x062F
2033 #define META_CHORD                   0x0830
2034 #define META_SETMAPPERFLAGS          0x0231
2035 #define META_EXTTEXTOUT              0x0A32
2036 #define META_SETDIBTODEV             0x0D33
2037 #define META_SELECTPALETTE           0x0234
2038 #define META_REALIZEPALETTE          0x0035
2039 #define META_ANIMATEPALETTE          0x0436
2040 #define META_SETPALENTRIES           0x0037
2041 #define META_POLYPOLYGON             0x0538
2042 #define META_RESIZEPALETTE           0x0139
2043 #define META_DIBBITBLT               0x0940
2044 #define META_DIBSTRETCHBLT           0x0B41
2045 #define META_DIBCREATEPATTERNBRUSH   0x0142
2046 #define META_STRETCHDIB              0x0F43
2047 #define META_EXTFLOODFILL            0x0548
2048 #define META_RESETDC                 0x014C
2049 #define META_STARTDOC                0x014D
2050 #define META_STARTPAGE               0x004F
2051 #define META_ENDPAGE                 0x0050
2052 #define META_ABORTDOC                0x0052
2053 #define META_ENDDOC                  0x005E
2054 #define META_DELETEOBJECT            0x01F0
2055 #define META_CREATEPALETTE           0x00F7
2056 #define META_CREATEBRUSH             0x00F8
2057 #define META_CREATEPATTERNBRUSH      0x01F9
2058 #define META_CREATEPENINDIRECT       0x02FA
2059 #define META_CREATEFONTINDIRECT      0x02FB
2060 #define META_CREATEBRUSHINDIRECT     0x02FC
2061 #define META_CREATEBITMAPINDIRECT    0x02FD
2062 #define META_CREATEBITMAP            0x06FE
2063 #define META_CREATEREGION            0x06FF
2064 #define META_UNKNOWN                 0x0529  /* FIXME: unknown meta magic */
2065
2066 typedef INT (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,
2067                                        INT,LPARAM);
2068
2069 /* enhanced metafile structures and functions */
2070
2071 /* note that ENHMETAHEADER is just a particular kind of ENHMETARECORD,
2072    ie. the header is just the first record in the metafile */
2073 typedef struct {
2074     DWORD iType;
2075     DWORD nSize;
2076     RECTL rclBounds;
2077     RECTL rclFrame;
2078     DWORD dSignature;
2079     DWORD nVersion;
2080     DWORD nBytes;
2081     DWORD nRecords;
2082     WORD  nHandles;
2083     WORD  sReserved;
2084     DWORD nDescription;
2085     DWORD offDescription;
2086     DWORD nPalEntries;
2087     SIZEL szlDevice;
2088     SIZEL szlMillimeters;
2089     DWORD cbPixelFormat;
2090     DWORD offPixelFormat;
2091     DWORD bOpenGL;
2092     SIZEL szlMicrometers;
2093 } ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER;
2094
2095 typedef struct {
2096     DWORD iType;
2097     DWORD nSize;
2098     DWORD dParm[1];
2099 } ENHMETARECORD, *LPENHMETARECORD;
2100
2101 typedef struct {
2102     DWORD iType;
2103     DWORD nSize;
2104 } EMR, *PEMR;
2105
2106 typedef struct {
2107     POINTL ptlReference;
2108     DWORD  nChars;
2109     DWORD  offString;
2110     DWORD  fOptions;
2111     RECTL  rcl;
2112     DWORD  offDx;
2113 } EMRTEXT, *PEMRTEXT;
2114
2115 typedef struct {
2116     EMR emr;
2117 } EMRABORTPATH,      *PEMRABORTPATH,
2118   EMRBEGINPATH,      *PEMRBEGINPATH,
2119   EMRENDPATH,        *PEMRENDPATH,
2120   EMRCLOSEFIGURE,    *PEMRCLOSEFIGURE,
2121   EMRFLATTENPATH,    *PEMRFLATTENPATH,
2122   EMRWIDENPATH,      *PEMRWIDENPATH,
2123   EMRSETMETARGN,     *PEMRSETMETARGN,
2124   EMRSAVEDC,         *PEMRSAVEDC,
2125   EMRREALIZEPALETTE, *PEMRREALIZEPALETTE;
2126
2127 typedef struct {
2128     EMR    emr;
2129     POINTL ptlCenter;
2130     DWORD  nRadius;
2131     FLOAT  eStartAngle;
2132     FLOAT  eSweepAngle;
2133 } EMRANGLEARC, *PEMRANGLEARC;
2134
2135 typedef struct {
2136     EMR    emr;
2137     RECTL  rclBox;
2138     POINTL ptlStart;
2139     POINTL ptlEnd;
2140 } EMRARC,   *PEMRARC,
2141   EMRARCTO, *PEMRARCTO,
2142   EMRCHORD, *PEMRCHORD,
2143   EMRPIE,   *PEMRPIE;
2144
2145 typedef struct {
2146     EMR      emr;
2147     RECTL    rclBounds;
2148     LONG     xDest;
2149     LONG     yDest;
2150     LONG     cxDest;
2151     LONG     cyDest;
2152     DWORD    dwRop;
2153     LONG     xSrc;
2154     LONG     ySrc;
2155     XFORM    xformSrc;
2156     COLORREF crBkColorSrc;
2157     DWORD    iUsageSrc;
2158     DWORD    offBmiSrc;
2159     DWORD    cbBmiSrc;
2160     DWORD    offBitsSrc;
2161     DWORD    cbBitsSrc;
2162 } EMRBITBLT, *PEMRBITBLT;
2163
2164 typedef struct {
2165     EMR        emr;
2166     DWORD      ihBrush;
2167     LOGBRUSH32 lb;
2168 } EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT;
2169
2170 typedef struct {
2171     EMR            emr;
2172     DWORD          ihCS;
2173     LOGCOLORSPACEA lcs;
2174 } EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE;
2175
2176 typedef struct {
2177   EMR            emr;
2178   DWORD          ihCS;
2179   LOGCOLORSPACEW lcs;
2180   DWORD          dwFlags;
2181   DWORD          cbData;
2182   BYTE           Data[1];
2183 } EMRCREATECOLORSPACEW, *PEMRCREATECOLORSPACEW;
2184
2185 typedef struct {
2186     EMR   emr;
2187     DWORD ihBrush;
2188     DWORD iUsage;
2189     DWORD offBmi;
2190     DWORD cbBmi;
2191     DWORD offBits;
2192     DWORD cbBits;
2193 } EMRCREATEDIBPATTERNBRUSHPT, *PEMRCREATEDIBPATTERNBRUSHPT;
2194
2195 typedef struct {
2196     EMR   emr;
2197     DWORD ihBrush;
2198     DWORD iUsage;
2199     DWORD offBmi;
2200     DWORD cbBmi;
2201     DWORD offBits;
2202     DWORD cbBits;
2203 } EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH;
2204
2205 typedef struct {
2206     EMR        emr;
2207     DWORD      ihPal;
2208     LOGPALETTE lgpl;
2209 } EMRCREATEPALETTE, *PEMRCREATEPALETTE;
2210
2211 typedef struct {
2212     EMR    emr;
2213     DWORD  ihPen;
2214     LOGPEN lopn;
2215 } EMRCREATEPEN, *PEMRCREATEPEN;
2216
2217 typedef struct {
2218     EMR           emr;
2219     DWORD         ihCS;
2220 } EMRDELETECOLORSPACE, *PEMRDELETECOLORSPACE,
2221   EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE,
2222   EMRSETCOLORSPACE,    *PEMRSETCOLORSPACE;
2223
2224 typedef struct {
2225     EMR   emr;
2226     DWORD ihObject;
2227 } EMRDELETEOBJECT, *PEMRDELETEOBJECT,
2228   EMRSELECTOBJECT, *PEMRSELECTOBJECT;
2229
2230 typedef struct {
2231     EMR   emr;
2232     RECTL rclBox;
2233 } EMRELLIPSE,   *PEMRELLIPSE,
2234   EMRRECTANGLE, *PEMRRECTANGLE;
2235
2236 typedef struct {
2237     EMR   emr;
2238     DWORD nPalEntries;
2239     DWORD offPalEntries;
2240     DWORD nSizeLast;
2241 } EMREOF, *PEMREOF;
2242
2243 typedef struct {
2244     EMR   emr;
2245     RECTL rclClip;
2246 } EMREXCLUDECLIPRECT,   *PEMREXCLUDECLIPRECT,
2247   EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT;
2248
2249 typedef struct {
2250     EMR         emr;
2251     DWORD       ihFont;
2252     EXTLOGFONTW elfw;
2253 } EMREXTCREATEFONTINDIRECTW, *PEMREXTCREATEFONTINDIRECTW;
2254
2255 typedef struct {
2256     EMR       emr;
2257     DWORD     ihPen;
2258     DWORD     offBmi;
2259     DWORD     cbBmi;
2260     DWORD     offBits;
2261     DWORD     cbBits;
2262     EXTLOGPEN elp;
2263 } EMREXTCREATEPEN, *PEMREXTCREATEPEN;
2264
2265 typedef struct {
2266     EMR      emr;
2267     POINTL   ptlStart;
2268     COLORREF crColor;
2269     DWORD    iMode;
2270 } EMREXTFLOODFILL, *PEMREXTFLOODFILL;
2271
2272 typedef struct {
2273     EMR   emr;
2274     DWORD cbRgnData;
2275     DWORD iMode;
2276     BYTE  RgnData[1];
2277 } EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN;
2278
2279 typedef struct {
2280     EMR     emr;
2281     RECTL   rclBounds;
2282     DWORD   iGraphicsMode;
2283     FLOAT   exScale;
2284     FLOAT   eyScale;
2285     EMRTEXT emrtext;
2286 } EMREXTTEXTOUTA, *PEMREXTTEXTOUTA,
2287   EMREXTTEXTOUTW, *PEMREXTTEXTOUTW;
2288
2289 typedef struct {
2290     EMR emr;
2291     RECTL rclBounds;
2292 } EMRFILLPATH,          *PEMRFILLPATH,
2293   EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH,
2294   EMRSTROKEPATH,        *PEMRSTROKEPATH;
2295
2296 typedef struct {
2297     EMR   emr;
2298     RECTL rclBounds;
2299     DWORD cbRgnData;
2300     DWORD ihBrush;
2301     BYTE  RgnData[1];
2302 } EMRFILLRGN, *PEMRFILLRGN;
2303
2304 typedef struct {
2305     DWORD dSignature;
2306     DWORD nVersion;
2307     DWORD cbData;
2308     DWORD offData;
2309 } EMRFORMAT, *PEMRFORMAT;
2310
2311 typedef struct {
2312     EMR   emr;
2313     RECTL rclBounds;
2314     DWORD cbRgnData;
2315     DWORD ihBrush;
2316     SIZEL szlStroke;
2317     BYTE  RgnData[1];
2318 } EMRFRAMERGN, *PEMRFRAMERGN;
2319
2320 typedef struct {
2321     EMR   emr;
2322     DWORD cbData;
2323     BYTE  Data[1];
2324 } EMRGDICOMMENT, *PEMRGDICOMMENT;
2325
2326 #if 0
2327 typedef struct {
2328     EMR       emr;
2329     RECTL     rclBounds;
2330     DWORD     nVer;
2331     DWORD     nTri;
2332     ULONG     ulMode;
2333     TRIVERTEX Ver[1];
2334 } EMRGRADIENTFILL, *PEMRGRADIENTFILL;
2335 #endif
2336
2337 typedef struct {
2338     EMR   emr;
2339     RECTL rclBounds;
2340     DWORD cbRgnData;
2341     BYTE  RgnData[1];
2342 } EMRINVERTRGN, *PEMRINVERTRGN,
2343   EMRPAINTRGN,  *PEMRPAINTRGN;
2344
2345 typedef struct {
2346     EMR    emr;
2347     POINTL ptl;
2348 } EMRLINETO,   *PEMRLINETO,
2349   EMRMOVETOEX, *PEMRMOVETOEX;
2350
2351 typedef struct {
2352     EMR      emr;
2353     RECTL    rclBounds;
2354     LONG     xDest;
2355     LONG     yDest;
2356     LONG     cxDest;
2357     LONG     cyDest;
2358     DWORD    dwRop;
2359     LONG     xSrc;
2360     LONG     ySrc;
2361     XFORM    xformSrc;
2362     COLORREF crBkColorSrc;
2363     DWORD    iUsageSrc;
2364     DWORD    offBmiSrc;
2365     DWORD    cbBmiSrc;
2366     DWORD    offBitsSrc;
2367     DWORD    cbBitsSrc;
2368     LONG     xMask;
2369     LONG     yMask;
2370     DWORD    iUsageMask;
2371     DWORD    offBmiMask;
2372     DWORD    cbBmiMask;
2373     DWORD    offBitsMask;
2374     DWORD    cbBitsMask;
2375 } EMRMASKBLT, *PEMRMASKBLT;
2376
2377 typedef struct {
2378     EMR   emr;
2379     XFORM xform;
2380     DWORD iMode;
2381 } EMRMODIFYWORLDTRANSFORM, *PEMRMODIFYWORLDTRANSFORM;
2382
2383 typedef struct {
2384     EMR    emr;
2385     POINTL ptlOffset;
2386 } EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN;
2387
2388 typedef struct {
2389     EMR      emr;
2390     RECTL    rclBounds;
2391     POINTL   aptlDest[3];
2392     LONG     xSrc;
2393     LONG     ySrc;
2394     LONG     cxSrc;
2395     LONG     cySrc;
2396     XFORM    xformSrc;
2397     COLORREF crBkColorSrc;
2398     DWORD    iUsageSrc;
2399     DWORD    offBmiSrc;
2400     DWORD    cbBmiSrc;
2401     DWORD    offBitsSrc;
2402     DWORD    cbBitsSrc;
2403     LONG     xMask;
2404     LONG     yMask;
2405     DWORD    iUsageMask;
2406     DWORD    offBmiMask;
2407     DWORD    cbBmiMask;
2408     DWORD    offBitsMask;
2409     DWORD    cbBitsMask;
2410 } EMRPLGBLT, *PEMRPLGBLT;
2411
2412 typedef struct {
2413     EMR    emr;
2414     RECTL  rclBounds;
2415     DWORD  cptl;
2416     POINTL aptl[1];
2417 } EMRPOLYLINE,     *PEMRPOLYLINE,
2418   EMRPOLYBEZIER,   *PEMRPOLYBEZIER,
2419   EMRPOLYGON,      *PEMRPOLYGON,
2420   EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO,
2421   EMRPOLYLINETO,   *PEMRPOLYLINETO;
2422
2423 typedef struct {
2424     EMR    emr;
2425     RECTL  rclBounds;
2426     DWORD  cpts;
2427     POINTS apts[1];
2428 } EMRPOLYLINE16,     *PEMRPOLYLINE16,
2429   EMRPOLYBEZIER16,   *PEMRPOLYBEZIER16,
2430   EMRPOLYGON16,      *PEMRPOLYGON16,
2431   EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16,
2432   EMRPOLYLINETO16,   *PEMRPOLYLINETO16;
2433
2434 typedef struct {
2435     EMR    emr;
2436     RECTL  rclBounds;
2437     DWORD  cpts;
2438     POINTS apts[1];
2439     BYTE   abTypes[1];
2440 } EMRPOLYDRAW16, *PEMRPOLYDRAW16;
2441
2442 typedef struct {
2443     EMR     emr;
2444     RECTL   rclBounds;
2445     DWORD   nPolys;
2446     DWORD   cpts;
2447     DWORD   aPolyCounts[1];
2448     POINTS  apts[1];
2449 } EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16,
2450   EMRPOLYPOLYGON16,  *PEMRPOLYPOLYGON16;
2451
2452 typedef struct {
2453     EMR    emr;
2454     RECTL  rclBounds;
2455     DWORD  cptl;
2456     POINTL aptl[1];
2457     BYTE   abTypes[1];
2458 } EMRPOLYDRAW, *PEMRPOLYDRAW;
2459
2460 typedef struct {
2461     EMR     emr;
2462     RECTL   rclBounds;
2463     DWORD   nPolys;
2464     DWORD   cptl;
2465     DWORD   aPolyCounts[1];
2466     POINTL  aptl[1];
2467 } EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE,
2468   EMRPOLYPOLYGON,  *PEMRPOLYPOLYGON;
2469
2470 typedef struct {
2471     EMR     emr;
2472     RECTL   rclBounds;
2473     DWORD   iGraphicsMode;
2474     FLOAT   exScale;
2475     FLOAT   eyScale;
2476     LONG    cStrings;
2477     EMRTEXT aemrtext[1];
2478 } EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA,
2479   EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW;
2480
2481 typedef struct {
2482     EMR   emr;
2483     DWORD ihPal;
2484     DWORD cEntries;
2485 } EMRRESIZEPALETTE, *PEMRRESIZEPALETTE;
2486
2487 typedef struct {
2488     EMR  emr;
2489     LONG iRelative;
2490 } EMRRESTOREDC, *PEMRRESTOREDC;
2491
2492 typedef struct {
2493     EMR   emr;
2494     RECTL rclBox;
2495     SIZEL szlCorner;
2496 } EMRROUNDRECT, *PEMRROUNDRECT;
2497
2498 typedef struct {
2499     EMR  emr;
2500     LONG xNum;
2501     LONG xDenom;
2502     LONG yNum;
2503     LONG yDenom;
2504 } EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX,
2505   EMRSCALEWINDOWEXTEX,   *PEMRSCALEWINDOWEXTEX;
2506
2507 typedef struct {
2508     EMR   emr;
2509     DWORD iMode;
2510 } EMRSELECTCLIPPATH,    *PEMRSELECTCLIPPATH,
2511   EMRSETBKMODE,         *PEMRSETBKMODE,
2512   EMRSETMAPMODE,        *PEMRSETMAPMODE,
2513   EMRSETPOLYFILLMODE,   *PEMRSETPOLYFILLMODE,
2514   EMRSETROP2,           *PEMRSETROP2,
2515   EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
2516   EMRSETTEXTALIGN,      *PEMRSETTEXTALIGN,
2517   EMRSETICMMODE,        *PEMRSETICMMODE,
2518   EMRSETLAYOUT,         *PEMRSETLAYOUT;
2519
2520 typedef struct {
2521     EMR   emr;
2522     DWORD ihPal;
2523 } EMRSELECTPALETTE, *PEMRSELECTPALETTE;
2524
2525 typedef struct {
2526     EMR   emr;
2527     DWORD iArcDirection;
2528 } EMRSETARCDIRECTION, *PEMRSETARCDIRECTION;
2529
2530 typedef struct {
2531     EMR      emr;
2532     COLORREF crColor;
2533 } EMRSETBKCOLOR,   *PEMRSETBKCOLOR,
2534   EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR;
2535
2536 typedef struct {
2537     EMR   emr;
2538     POINTL ptlOrigin;
2539 } EMRSETBRUSHORGEX,    *PEMRSETBRUSHORGEX,
2540   EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX,
2541   EMRSETWINDOWORGEX,   *PEMRSETWINDOWORGEX;
2542
2543 typedef struct {
2544     EMR  emr;
2545     COLORADJUSTMENT ColorAdjustment;
2546 } EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT;
2547
2548 typedef struct {
2549     EMR   emr;
2550     RECTL rclBounds;
2551     LONG  xDest;
2552     LONG  yDest;
2553     LONG  xSrc;
2554     LONG  ySrc;
2555     LONG  cxSrc;
2556     LONG  cySrc;
2557     DWORD offBmiSrc;
2558     DWORD cbBmiSrc;
2559     DWORD offBitsSrc;
2560     DWORD cbBitsSrc;
2561     DWORD iUsageSrc;
2562     DWORD iStartScan;
2563     DWORD cScans;
2564 } EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE;
2565
2566 typedef struct {
2567     EMR   emr;
2568     DWORD dwFlags;
2569 } EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS;
2570
2571 typedef struct {
2572     EMR   emr;
2573     FLOAT eMiterLimit;
2574 } EMRSETMITERLIMIT, *PEMRSETMITERLIMIT;
2575
2576 typedef struct {
2577     EMR          emr;
2578     DWORD        ihPal;
2579     DWORD        iStart;
2580     DWORD        cEntries;
2581     PALETTEENTRY aPalEntries[1];
2582 } EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES;
2583
2584 typedef struct {
2585     EMR     emr;
2586     POINTL  ptlPixel;
2587     COLORREF crColor;
2588 } EMRSETPIXELV, *PEMRSETPIXELV;
2589
2590 typedef struct {
2591     EMR   emr;
2592     SIZEL szlExtent;
2593 } EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX,
2594   EMRSETWINDOWEXTEX,   *PEMRSETWINDOWEXTEX;
2595
2596 typedef struct {
2597     EMR   emr;
2598     XFORM xform;
2599 } EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM;
2600
2601 typedef struct {
2602     EMR      emr;
2603     RECTL    rclBounds;
2604     LONG     xDest;
2605     LONG     yDest;
2606     LONG     cxDest;
2607     LONG     cyDest;
2608     DWORD    dwRop;
2609     LONG     xSrc;
2610     LONG     ySrc;
2611     XFORM    xformSrc;
2612     COLORREF crBkColorSrc;
2613     DWORD    iUsageSrc;
2614     DWORD    offBmiSrc;
2615     DWORD    cbBmiSrc;
2616     DWORD    offBitsSrc;
2617     DWORD    cbBitsSrc;
2618     LONG     cxSrc;
2619     LONG     cySrc;
2620 } EMRSTRETCHBLT, *PEMRSTRETCHBLT;
2621
2622 typedef struct {
2623     EMR      emr;
2624     RECTL    rclBounds;
2625     LONG     xDest;
2626     LONG     yDest;
2627     LONG     cxDest;
2628     LONG     cyDest;
2629     DWORD    dwRop;
2630     LONG     xSrc;
2631     LONG     ySrc;
2632     XFORM    xformSrc;
2633     COLORREF crBkColorSrc;
2634     DWORD    iUsageSrc;
2635     DWORD    offBmiSrc;
2636     DWORD    cbBmiSrc;
2637     DWORD    offBitsSrc;
2638     DWORD    cbBitsSrc;
2639     LONG     cxSrc;
2640     LONG     cySrc;
2641 } EMRALPHABLEND, *PEMRALPHABLEND;
2642
2643 typedef struct {
2644     EMR   emr;
2645     RECTL rclBounds;
2646     LONG  xDest;
2647     LONG  yDest;
2648     LONG  xSrc;
2649     LONG  ySrc;
2650     LONG  cxSrc;
2651     LONG  cySrc;
2652     DWORD offBmiSrc;
2653     DWORD cbBmiSrc;
2654     DWORD offBitsSrc;
2655     DWORD cbBitsSrc;
2656     DWORD iUsageSrc;
2657     DWORD dwRop;
2658     LONG  cxDest;
2659     LONG  cyDest;
2660 } EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;
2661
2662 typedef struct {
2663     EMR                   emr;
2664     PIXELFORMATDESCRIPTOR pfd;
2665 } EMRPIXELFORMAT, *PEMRPIXELFORMAT;
2666
2667 typedef struct tagEMRGLSRECORD {
2668   EMR   emr;
2669   DWORD cbData;
2670   BYTE  Data[1];
2671 } EMRGLSRECORD, *PEMRGLSRECORD;
2672
2673 typedef struct {
2674   EMR   emr;
2675   RECTL rclBounds;
2676   DWORD cbData;
2677   BYTE  Data[1];
2678 } EMRGLSBOUNDEDRECORD, *PEMRGLSBOUNDEDRECORD;
2679
2680 typedef INT (CALLBACK *ENHMFENUMPROC)(HDC, HANDLETABLE *,
2681                                       const ENHMETARECORD *, INT, LPARAM);
2682
2683 #define EMR_HEADER      1
2684 #define EMR_POLYBEZIER  2
2685 #define EMR_POLYGON     3
2686 #define EMR_POLYLINE    4
2687 #define EMR_POLYBEZIERTO        5
2688 #define EMR_POLYLINETO  6
2689 #define EMR_POLYPOLYLINE        7
2690 #define EMR_POLYPOLYGON 8
2691 #define EMR_SETWINDOWEXTEX      9
2692 #define EMR_SETWINDOWORGEX      10
2693 #define EMR_SETVIEWPORTEXTEX    11
2694 #define EMR_SETVIEWPORTORGEX    12
2695 #define EMR_SETBRUSHORGEX       13
2696 #define EMR_EOF 14
2697 #define EMR_SETPIXELV   15
2698 #define EMR_SETMAPPERFLAGS      16
2699 #define EMR_SETMAPMODE  17
2700 #define EMR_SETBKMODE   18
2701 #define EMR_SETPOLYFILLMODE     19
2702 #define EMR_SETROP2     20
2703 #define EMR_SETSTRETCHBLTMODE   21
2704 #define EMR_SETTEXTALIGN        22
2705 #define EMR_SETCOLORADJUSTMENT  23
2706 #define EMR_SETTEXTCOLOR        24
2707 #define EMR_SETBKCOLOR  25
2708 #define EMR_OFFSETCLIPRGN       26
2709 #define EMR_MOVETOEX    27
2710 #define EMR_SETMETARGN  28
2711 #define EMR_EXCLUDECLIPRECT     29
2712 #define EMR_INTERSECTCLIPRECT   30
2713 #define EMR_SCALEVIEWPORTEXTEX  31
2714 #define EMR_SCALEWINDOWEXTEX    32
2715 #define EMR_SAVEDC      33
2716 #define EMR_RESTOREDC   34
2717 #define EMR_SETWORLDTRANSFORM   35
2718 #define EMR_MODIFYWORLDTRANSFORM        36
2719 #define EMR_SELECTOBJECT        37
2720 #define EMR_CREATEPEN   38
2721 #define EMR_CREATEBRUSHINDIRECT 39
2722 #define EMR_DELETEOBJECT        40
2723 #define EMR_ANGLEARC    41
2724 #define EMR_ELLIPSE     42
2725 #define EMR_RECTANGLE   43
2726 #define EMR_ROUNDRECT   44
2727 #define EMR_ARC 45
2728 #define EMR_CHORD       46
2729 #define EMR_PIE 47
2730 #define EMR_SELECTPALETTE       48
2731 #define EMR_CREATEPALETTE       49
2732 #define EMR_SETPALETTEENTRIES   50
2733 #define EMR_RESIZEPALETTE       51
2734 #define EMR_REALIZEPALETTE      52
2735 #define EMR_EXTFLOODFILL        53
2736 #define EMR_LINETO      54
2737 #define EMR_ARCTO       55
2738 #define EMR_POLYDRAW    56
2739 #define EMR_SETARCDIRECTION     57
2740 #define EMR_SETMITERLIMIT       58
2741 #define EMR_BEGINPATH   59
2742 #define EMR_ENDPATH     60
2743 #define EMR_CLOSEFIGURE 61
2744 #define EMR_FILLPATH    62
2745 #define EMR_STROKEANDFILLPATH   63
2746 #define EMR_STROKEPATH  64
2747 #define EMR_FLATTENPATH 65
2748 #define EMR_WIDENPATH   66
2749 #define EMR_SELECTCLIPPATH      67
2750 #define EMR_ABORTPATH   68
2751 #define EMR_GDICOMMENT  70
2752 #define EMR_FILLRGN     71
2753 #define EMR_FRAMERGN    72
2754 #define EMR_INVERTRGN   73
2755 #define EMR_PAINTRGN    74
2756 #define EMR_EXTSELECTCLIPRGN    75
2757 #define EMR_BITBLT      76
2758 #define EMR_STRETCHBLT  77
2759 #define EMR_MASKBLT     78
2760 #define EMR_PLGBLT      79
2761 #define EMR_SETDIBITSTODEVICE   80
2762 #define EMR_STRETCHDIBITS       81
2763 #define EMR_EXTCREATEFONTINDIRECTW      82
2764 #define EMR_EXTTEXTOUTA 83
2765 #define EMR_EXTTEXTOUTW 84
2766 #define EMR_POLYBEZIER16        85
2767 #define EMR_POLYGON16   86
2768 #define EMR_POLYLINE16  87
2769 #define EMR_POLYBEZIERTO16      88
2770 #define EMR_POLYLINETO16        89
2771 #define EMR_POLYPOLYLINE16      90
2772 #define EMR_POLYPOLYGON16       91
2773 #define EMR_POLYDRAW16  92
2774 #define EMR_CREATEMONOBRUSH     93
2775 #define EMR_CREATEDIBPATTERNBRUSHPT     94
2776 #define EMR_EXTCREATEPEN        95
2777 #define EMR_POLYTEXTOUTA        96
2778 #define EMR_POLYTEXTOUTW        97
2779 #define EMR_SETICMMODE  98
2780 #define EMR_CREATECOLORSPACE    99
2781 #define EMR_SETCOLORSPACE       100
2782 #define EMR_DELETECOLORSPACE    101
2783 #define EMR_GLSRECORD   102
2784 #define EMR_GLSBOUNDEDRECORD    103
2785 #define EMR_PIXELFORMAT 104
2786 #define EMR_DRAWESCAPE  105
2787 #define EMR_EXTESCAPE   106
2788 #define EMR_STARTDOC    107
2789 #define EMR_SMALLTEXTOUT        108
2790 #define EMR_FORCEUFIMAPPING     109
2791 #define EMR_NAMEDESCAPE 110
2792 #define EMR_COLORCORRECTPALETTE 111
2793 #define EMR_SETICMPROFILEA      112
2794 #define EMR_SETICMPROFILEW      113
2795 #define EMR_ALPHABLEND  114
2796 #define EMR_SETLAYOUT   115
2797 #define EMR_TRANSPARENTBLT      116
2798 #define EMR_RESERVED_117        117
2799 #define EMR_GRADIENTFILL        118
2800 #define EMR_SETLINKEDUFI        119
2801 #define EMR_SETTEXTJUSTIFICATION        120
2802 #define EMR_COLORMATCHTOTARGETW 121
2803 #define EMR_CREATECOLORSPACEW   122
2804
2805 #define EMR_MIN 1
2806 #define EMR_MAX 122
2807
2808 #define ENHMETA_SIGNATURE       1179469088
2809 #define ENHMETA_STOCK_OBJECT    0x80000000
2810
2811 #define GDICOMMENT_IDENTIFIER         0x43494447
2812 #define GDICOMMENT_WINDOWS_METAFILE   0x80000001
2813 #define GDICOMMENT_BEGINGROUP         0x00000002
2814 #define GDICOMMENT_ENDGROUP           0x00000003
2815 #define GDICOMMENT_MULTIFORMATS       0x40000004
2816 #define GDICOMMENT_UNICODE_STRING     0x00000040
2817 #define GDICOMMENT_UNICODE_END        0x00000080
2818 #define EPS_SIGNATURE                 0x46535045
2819
2820 #define CCHDEVICENAME 32
2821 #define CCHFORMNAME   32
2822
2823 typedef struct
2824 {
2825     BYTE   dmDeviceName[CCHDEVICENAME];
2826     WORD   dmSpecVersion;
2827     WORD   dmDriverVersion;
2828     WORD   dmSize;
2829     WORD   dmDriverExtra;
2830     DWORD  dmFields;
2831     union {
2832       struct {
2833         short  dmOrientation;
2834         short  dmPaperSize;
2835         short  dmPaperLength;
2836         short  dmPaperWidth;
2837         short  dmScale;
2838         short  dmCopies;
2839         short  dmDefaultSource;
2840         short  dmPrintQuality;
2841       } DUMMYSTRUCTNAME1;
2842       struct {
2843         POINTL dmPosition;
2844         DWORD dmDisplayOrientation;
2845         DWORD dmDisplayFixedOutput;
2846       } DUMMYSTRUCTNAME2;
2847     } DUMMYUNIONNAME1;
2848     short  dmColor;
2849     short  dmDuplex;
2850     short  dmYResolution;
2851     short  dmTTOption;
2852     short  dmCollate;
2853     BYTE   dmFormName[CCHFORMNAME];
2854     WORD   dmLogPixels;
2855     DWORD  dmBitsPerPel;
2856     DWORD  dmPelsWidth;
2857     DWORD  dmPelsHeight;
2858     union {
2859       DWORD dmDisplayFlags;
2860       DWORD dmNup;
2861     } DUMMYUNIONNAME2;
2862     DWORD  dmDisplayFrequency;
2863     DWORD  dmICMMethod;
2864     DWORD  dmICMIntent;
2865     DWORD  dmMediaType;
2866     DWORD  dmDitherType;
2867     DWORD  dmReserved1;
2868     DWORD  dmReserved2;
2869     DWORD  dmPanningWidth;
2870     DWORD  dmPanningHeight;
2871 } DEVMODEA, *PDEVMODEA, *LPDEVMODEA;
2872
2873 typedef struct
2874 {
2875     WCHAR  dmDeviceName[CCHDEVICENAME];
2876     WORD   dmSpecVersion;
2877     WORD   dmDriverVersion;
2878     WORD   dmSize;
2879     WORD   dmDriverExtra;
2880     DWORD  dmFields;
2881     union {
2882       struct {
2883         short  dmOrientation;
2884         short  dmPaperSize;
2885         short  dmPaperLength;
2886         short  dmPaperWidth;
2887         short  dmScale;
2888         short  dmCopies;
2889         short  dmDefaultSource;
2890         short  dmPrintQuality;
2891       } DUMMYSTRUCTNAME1;
2892       struct {
2893         POINTL dmPosition;
2894         DWORD dmDisplayOrientation;
2895         DWORD dmDisplayFixedOutput;
2896       } DUMMYSTRUCTNAME2;
2897     } DUMMYUNIONNAME1;
2898     short  dmColor;
2899     short  dmDuplex;
2900     short  dmYResolution;
2901     short  dmTTOption;
2902     short  dmCollate;
2903     WCHAR  dmFormName[CCHFORMNAME];
2904     WORD   dmLogPixels;
2905     DWORD  dmBitsPerPel;
2906     DWORD  dmPelsWidth;
2907     DWORD  dmPelsHeight;
2908     union {
2909       DWORD dmDisplayFlags;
2910       DWORD dmNup;
2911     } DUMMYUNIONNAME2;
2912     DWORD  dmDisplayFrequency;
2913     DWORD  dmICMMethod;
2914     DWORD  dmICMIntent;
2915     DWORD  dmMediaType;
2916     DWORD  dmDitherType;
2917     DWORD  dmReserved1;
2918     DWORD  dmReserved2;
2919     DWORD  dmPanningWidth;
2920     DWORD  dmPanningHeight;
2921 } DEVMODEW, *PDEVMODEW, *LPDEVMODEW;
2922
2923 DECL_WINELIB_TYPE_AW(DEVMODE)
2924 DECL_WINELIB_TYPE_AW(PDEVMODE)
2925 DECL_WINELIB_TYPE_AW(LPDEVMODE)
2926
2927 #define DM_SPECVERSION  0x401
2928 #define DM_UPDATE       1
2929 #define DM_COPY         2
2930 #define DM_PROMPT       4
2931 #define DM_MODIFY       8
2932
2933 #define DM_IN_BUFFER      DM_MODIFY
2934 #define DM_IN_PROMPT      DM_PROMPT
2935 #define DM_OUT_BUFFER     DM_COPY
2936 #define DM_OUT_DEFAULT    DM_UPDATE
2937
2938 #define DM_ORIENTATION          0x00000001L
2939 #define DM_PAPERSIZE            0x00000002L
2940 #define DM_PAPERLENGTH          0x00000004L
2941 #define DM_PAPERWIDTH           0x00000008L
2942 #define DM_SCALE                0x00000010L
2943 #define DM_POSITION             0x00000020L
2944 #define DM_COPIES               0x00000100L
2945 #define DM_DEFAULTSOURCE        0x00000200L
2946 #define DM_PRINTQUALITY         0x00000400L
2947 #define DM_COLOR                0x00000800L
2948 #define DM_DUPLEX               0x00001000L
2949 #define DM_YRESOLUTION          0x00002000L
2950 #define DM_TTOPTION             0x00004000L
2951 #define DM_COLLATE              0x00008000L
2952 #define DM_FORMNAME             0x00010000L
2953 #define DM_LOGPIXELS            0x00020000L
2954 #define DM_BITSPERPEL           0x00040000L
2955 #define DM_PELSWIDTH            0x00080000L
2956 #define DM_PELSHEIGHT           0x00100000L
2957 #define DM_DISPLAYFLAGS         0x00200000L
2958 #define DM_DISPLAYFREQUENCY     0x00400000L
2959 #define DM_ICMMETHOD            0x00800000L
2960 #define DM_ICMINTENT            0x01000000L
2961 #define DM_MEDIATYPE            0x02000000L
2962 #define DM_DITHERTYPE           0x04000000L
2963 #define DM_PANNINGWIDTH         0x08000000L
2964 #define DM_PANNINGHEIGHT        0x10000000L
2965
2966 #define DMORIENT_PORTRAIT       1
2967 #define DMORIENT_LANDSCAPE      2
2968
2969 #define DMPAPER_FIRST              DMPAPER_LETTER
2970 #define DMPAPER_LETTER             1
2971 #define DMPAPER_LETTERSMALL        2
2972 #define DMPAPER_TABLOID            3
2973 #define DMPAPER_LEDGER             4
2974 #define DMPAPER_LEGAL              5
2975 #define DMPAPER_STATEMENT          6
2976 #define DMPAPER_EXECUTIVE          7
2977 #define DMPAPER_A3                 8
2978 #define DMPAPER_A4                 9
2979 #define DMPAPER_A4SMALL            10
2980 #define DMPAPER_A5                 11
2981 #define DMPAPER_B4                 12
2982 #define DMPAPER_B5                 13
2983 #define DMPAPER_FOLIO              14
2984 #define DMPAPER_QUARTO             15
2985 #define DMPAPER_10X14              16
2986 #define DMPAPER_11X17              17
2987 #define DMPAPER_NOTE               18
2988 #define DMPAPER_ENV_9              19
2989 #define DMPAPER_ENV_10             20
2990 #define DMPAPER_ENV_11             21
2991 #define DMPAPER_ENV_12             22
2992 #define DMPAPER_ENV_14             23
2993 #define DMPAPER_CSHEET             24
2994 #define DMPAPER_DSHEET             25
2995 #define DMPAPER_ESHEET             26
2996 #define DMPAPER_ENV_DL             27
2997 #define DMPAPER_ENV_C5             28
2998 #define DMPAPER_ENV_C3             29
2999 #define DMPAPER_ENV_C4             30
3000 #define DMPAPER_ENV_C6             31
3001 #define DMPAPER_ENV_C65            32
3002 #define DMPAPER_ENV_B4             33
3003 #define DMPAPER_ENV_B5             34
3004 #define DMPAPER_ENV_B6             35
3005 #define DMPAPER_ENV_ITALY          36
3006 #define DMPAPER_ENV_MONARCH        37
3007 #define DMPAPER_ENV_PERSONAL       38
3008 #define DMPAPER_FANFOLD_US         39
3009 #define DMPAPER_FANFOLD_STD_GERMAN 40
3010 #define DMPAPER_FANFOLD_LGL_GERMAN 41
3011 #define DMPAPER_ISO_B4             42
3012 #define DMPAPER_JAPANESE_POSTCARD  43
3013 #define DMPAPER_9X11               44
3014 #define DMPAPER_10X11              45
3015 #define DMPAPER_15X11              46
3016 #define DMPAPER_ENV_INVITE         47
3017 #define DMPAPER_RESERVED_48        48
3018 #define DMPAPER_RESERVED_49        49
3019 #define DMPAPER_LETTER_EXTRA       50
3020 #define DMPAPER_LEGAL_EXTRA        51
3021 #define DMPAPER_TABLOID_EXTRA      52
3022 #define DMPAPER_A4_EXTRA           53
3023 #define DMPAPER_LETTER_TRANSVERSE  54
3024 #define DMPAPER_A4_TRANSVERSE      55
3025 #define DMPAPER_LETTER_EXTRA_TRANSVERSE 56
3026 #define DMPAPER_A_PLUS             57
3027 #define DMPAPER_B_PLUS             58
3028 #define DMPAPER_LETTER_PLUS        59
3029 #define DMPAPER_A4_PLUS            60
3030 #define DMPAPER_A5_TRANSVERSE      61
3031 #define DMPAPER_B5_TRANSVERSE      62
3032 #define DMPAPER_A3_EXTRA           63
3033 #define DMPAPER_A5_EXTRA           64
3034 #define DMPAPER_B5_EXTRA           65
3035 #define DMPAPER_A2                 66
3036 #define DMPAPER_A3_TRANSVERSE      67
3037 #define DMPAPER_A3_EXTRA_TRANSVERSE           68
3038 #define DMPAPER_DBL_JAPANESE_POSTCARD         69
3039 #define DMPAPER_A6                 70
3040 #define DMPAPER_JENV_KAKU2         71
3041 #define DMPAPER_JENV_KAKU3         72
3042 #define DMPAPER_JENV_CHOU3         73
3043 #define DMPAPER_JENV_CHOU4         74
3044 #define DMPAPER_LETTER_ROTATED     75
3045 #define DMPAPER_A3_ROTATED         76
3046 #define DMPAPER_A4_ROTATED         77
3047 #define DMPAPER_A5_ROTATED         78
3048 #define DMPAPER_B4_JIS_ROTATED     79
3049 #define DMPAPER_B5_JIS_ROTATED     80
3050 #define DMPAPER_JAPANESE_POSTCARD_ROTATED     81
3051 #define DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED 82
3052 #define DMPAPER_A6_ROTATED         83
3053 #define DMPAPER_JENV_KAKU2_ROTATED 84
3054 #define DMPAPER_JENV_KAKU3_ROTATED 85
3055 #define DMPAPER_JENV_CHOU3_ROTATED 86
3056 #define DMPAPER_JENV_CHOU4_ROTATED 87
3057 #define DMPAPER_B6_JIS             88
3058 #define DMPAPER_B6_JIS_ROTATED     89
3059 #define DMPAPER_12X11              90
3060 #define DMPAPER_JENV_YOU4          91
3061 #define DMPAPER_JENV_YOU4_ROTATED  92
3062 #define DMPAPER_P16K               93
3063 #define DMPAPER_P32K               94
3064 #define DMPAPER_P32KBIG            95
3065 #define DMPAPER_PENV_1             96
3066 #define DMPAPER_PENV_2             97
3067 #define DMPAPER_PENV_3             98
3068 #define DMPAPER_PENV_4             99
3069 #define DMPAPER_PENV_5             100
3070 #define DMPAPER_PENV_6             101
3071 #define DMPAPER_PENV_7             102
3072 #define DMPAPER_PENV_8             103
3073 #define DMPAPER_PENV_9             104
3074 #define DMPAPER_PENV_10            105
3075 #define DMPAPER_P16K_ROTATED       106
3076 #define DMPAPER_P32K_ROTATED       107
3077 #define DMPAPER_P32KBIG_ROTATED    108
3078 #define DMPAPER_PENV_1_ROTATED     109
3079 #define DMPAPER_PENV_2_ROTATED     110
3080 #define DMPAPER_PENV_3_ROTATED     111
3081 #define DMPAPER_PENV_4_ROTATED     112
3082 #define DMPAPER_PENV_5_ROTATED     113
3083 #define DMPAPER_PENV_6_ROTATED     114
3084 #define DMPAPER_PENV_7_ROTATED     115
3085 #define DMPAPER_PENV_8_ROTATED     116
3086 #define DMPAPER_PENV_9_ROTATED     117
3087 #define DMPAPER_PENV_10_ROTATED    118
3088
3089 #define DMPAPER_LAST               DMPAPER_PENV_10_ROTATED
3090 #define DMPAPER_USER               256
3091
3092 #define DMBIN_FIRST             DMBIN_UPPER
3093 #define DMBIN_UPPER             1
3094 #define DMBIN_ONLYONE           1
3095 #define DMBIN_LOWER             2
3096 #define DMBIN_MIDDLE            3
3097 #define DMBIN_MANUAL            4
3098 #define DMBIN_ENVELOPE          5
3099 #define DMBIN_ENVMANUAL         6
3100 #define DMBIN_AUTO              7
3101 #define DMBIN_TRACTOR           8
3102 #define DMBIN_SMALLFMT          9
3103 #define DMBIN_LARGEFMT          10
3104 #define DMBIN_LARGECAPACITY     11
3105 #define DMBIN_CASSETTE          14
3106 #define DMBIN_FORMSOURCE        15
3107 #define DMBIN_LAST              DMBIN_FORMSOURCE
3108 #define DMBIN_USER              256
3109
3110 #define DMRES_DRAFT             (-1)
3111 #define DMRES_LOW               (-2)
3112 #define DMRES_MEDIUM            (-3)
3113 #define DMRES_HIGH              (-4)
3114
3115 #define DMCOLOR_MONOCHROME      1
3116 #define DMCOLOR_COLOR           2
3117
3118 #define DMDUP_SIMPLEX           1
3119 #define DMDUP_VERTICAL          2
3120 #define DMDUP_HORIZONTAL        3
3121
3122 #define DMTT_BITMAP             1
3123 #define DMTT_DOWNLOAD           2
3124 #define DMTT_SUBDEV             3
3125 #define DMTT_DOWNLOAD_OUTLINE   4
3126
3127 #define DMCOLLATE_FALSE         0
3128 #define DMCOLLATE_TRUE          1
3129
3130 #define DMICMMETHOD_NONE        1
3131 #define DMICMMETHOD_SYSTEM      2
3132 #define DMICMMETHOD_DRIVER      3
3133 #define DMICMMETHOD_DEVICE      4
3134 #define DMICMMETHOD_USER        256
3135
3136 #define DMICM_SATURATE          1
3137 #define DMICM_CONTRAST          2
3138 #define DMICM_COLORMETRIC       3
3139 #define DMICM_USER              256
3140
3141 #define DMMEDIA_STANDARD        1
3142 #define DMMEDIA_TRANSPARENCY    2
3143 #define DMMEDIA_GLOSSY          3
3144 #define DMMEDIA_USER            256
3145
3146 #define DMDITHER_NONE           1
3147 #define DMDITHER_COARSE         2
3148 #define DMDITHER_FINE           3
3149 #define DMDITHER_LINEART        4
3150 #define DMDITHER_GRAYSCALE      5
3151 #define DMDITHER_USER           256
3152
3153 typedef struct
3154 {
3155     INT    cbSize;
3156     LPCSTR   lpszDocName;
3157     LPCSTR   lpszOutput;
3158     LPCSTR   lpszDatatype;
3159     DWORD    fwType;
3160 } DOCINFOA, *LPDOCINFOA;
3161
3162 typedef struct
3163 {
3164     INT    cbSize;
3165     LPCWSTR  lpszDocName;
3166     LPCWSTR  lpszOutput;
3167     LPCWSTR  lpszDatatype;
3168     DWORD    fwType;
3169 } DOCINFOW, *LPDOCINFOW;
3170
3171 DECL_WINELIB_TYPE_AW(DOCINFO)
3172 DECL_WINELIB_TYPE_AW(LPDOCINFO)
3173
3174 #define DI_APPBANDING     0x0001
3175
3176 /* Flags for PolyDraw and GetPath */
3177 #define PT_CLOSEFIGURE          0x0001
3178 #define PT_LINETO               0x0002
3179 #define PT_BEZIERTO             0x0004
3180 #define PT_MOVETO               0x0006
3181
3182 #define RDH_RECTANGLES  1
3183
3184 typedef struct _RGNDATAHEADER {
3185     DWORD       dwSize;
3186     DWORD       iType;
3187     DWORD       nCount;
3188     DWORD       nRgnSize;
3189     RECT        rcBound;
3190 } RGNDATAHEADER,*PRGNDATAHEADER;
3191
3192 typedef struct _RGNDATA {
3193     RGNDATAHEADER       rdh;
3194     char                Buffer[1];
3195 } RGNDATA,*PRGNDATA,*LPRGNDATA;
3196
3197 typedef BOOL (CALLBACK *ABORTPROC)(HDC, INT);
3198
3199 typedef struct {
3200     DWORD       cb;
3201     CHAR        DeviceName[32];
3202     CHAR        DeviceString[128];
3203     DWORD       StateFlags;
3204     CHAR        DeviceID[128];
3205     CHAR        DeviceKey[128];
3206 } DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA;
3207
3208 typedef struct {
3209     DWORD       cb;
3210     WCHAR       DeviceName[32];
3211     WCHAR       DeviceString[128];
3212     DWORD       StateFlags;
3213     WCHAR       DeviceID[128];
3214     WCHAR       DeviceKey[128];
3215 } DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW;
3216 DECL_WINELIB_TYPE_AW(DISPLAY_DEVICE)
3217 DECL_WINELIB_TYPE_AW(PDISPLAY_DEVICE)
3218 DECL_WINELIB_TYPE_AW(LPDISPLAY_DEVICE)
3219
3220 /* DISPLAY_DEVICE.StateFlags (?)*/
3221 #define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP      0x00000001
3222 #define DISPLAY_DEVICE_MULTI_DRIVER             0x00000002
3223 #define DISPLAY_DEVICE_PRIMARY_DEVICE           0x00000004
3224 #define DISPLAY_DEVICE_MIRRORING_DRIVER         0x00000008
3225 #define DISPLAY_DEVICE_VGA_COMPATIBLE           0x00000010
3226
3227 typedef USHORT COLOR16;
3228
3229 typedef struct _TRIVERTEX
3230 {
3231     LONG    x;
3232     LONG    y;
3233     COLOR16 Red;
3234     COLOR16 Green;
3235     COLOR16 Blue;
3236     COLOR16 Alpha;
3237 } TRIVERTEX, *PTRIVERTEX, *LPTRIVERTEX;
3238
3239 typedef struct _GRADIENT_TRIANGLE
3240 {
3241     ULONG Vertex1;
3242     ULONG Vertex2;
3243     ULONG Vertex3;
3244 } GRADIENT_TRIANGLE, *PGRADIENT_TRIANGLE, *LPGRADIENT_TRIANGLE;
3245
3246 typedef struct _GRADIENT_RECT
3247 {
3248     ULONG UpperLeft;
3249     ULONG LowerRight;
3250 } GRADIENT_RECT, *PGRADIENT_RECT, *LPGRADIENT_RECT;
3251
3252 #define AC_SRC_OVER  0x00
3253 #define AC_SRC_ALPHA 0x01
3254
3255 typedef struct _BLENDFUNCTION
3256 {
3257     BYTE BlendOp;
3258     BYTE BlendFlags;
3259     BYTE SourceConstantAlpha;
3260     BYTE AlphaFormat;
3261 } BLENDFUNCTION, *PBLENDFUNCTION;
3262
3263 #define GRADIENT_FILL_RECT_H      0x00000000
3264 #define GRADIENT_FILL_RECT_V      0x00000001
3265 #define GRADIENT_FILL_TRIANGLE    0x00000002
3266 #define GRADIENT_FILL_OP_FLAG     0x000000ff
3267
3268 #define GDI_ERROR                               (~0u)
3269 #define HGDI_ERROR                              ((HANDLE)~(ULONG_PTR)0)
3270
3271 /* AddFontResourceEx flags */
3272 #define FR_PRIVATE  0x10
3273 #define FR_NOT_ENUM 0x20
3274
3275 /* Mirroring flags */
3276 #define LAYOUT_LTR                         0x00000000
3277 #define LAYOUT_RTL                         0x00000001
3278 #define LAYOUT_BITMAPORIENTATIONPRESERVED  0x00000008
3279 #define NOMIRRORBITMAP                     0x80000000
3280
3281 /* For DRAWPATTERNRECT Escape */
3282 typedef struct _DRAWPATRECT
3283 {
3284     POINT ptPosition;
3285     POINT ptSize;
3286     WORD  wStyle;
3287     WORD  wPattern;
3288 } DRAWPATRECT, *PDRAWPATRECT;
3289
3290 typedef struct tagWCRANGE {
3291   WCHAR  wcLow;
3292   USHORT cGlyphs;
3293 } WCRANGE, *PWCRANGE, *LPWCRANGE;
3294
3295 typedef struct tagGLYPHSET {
3296   DWORD    cbThis;
3297   DWORD    flAccel;
3298   DWORD    cGlyphsSupported;
3299   DWORD    cRanges;
3300   WCRANGE  ranges[1];
3301 } GLYPHSET, *PGLYPHSET, *LPGLYPHSET;
3302
3303 WINGDIAPI INT         WINAPI AbortDoc(HDC);
3304 WINGDIAPI BOOL        WINAPI AbortPath(HDC);
3305 WINGDIAPI INT         WINAPI AddFontResourceA(LPCSTR);
3306 WINGDIAPI INT         WINAPI AddFontResourceW(LPCWSTR);
3307 #define                      AddFontResource WINELIB_NAME_AW(AddFontResource)
3308 WINGDIAPI INT         WINAPI AddFontResourceExA(LPCSTR, DWORD, PVOID);
3309 WINGDIAPI INT         WINAPI AddFontResourceExW(LPCWSTR, DWORD, PVOID);
3310 #define                      AddFontResourceEx WINELIB_NAME_AW(AddFontResourceEx)
3311 WINGDIAPI HANDLE      WINAPI AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD *);
3312 WINGDIAPI BOOL        WINAPI AlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
3313 WINGDIAPI BOOL        WINAPI AngleArc(HDC, INT, INT, DWORD, FLOAT, FLOAT);
3314 WINGDIAPI BOOL        WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
3315 WINGDIAPI BOOL        WINAPI Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
3316 WINGDIAPI BOOL        WINAPI ArcTo(HDC, INT, INT, INT, INT, INT, INT, INT, INT);
3317 WINGDIAPI BOOL        WINAPI BeginPath(HDC);
3318 WINGDIAPI BOOL        WINAPI BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD);
3319 WINGDIAPI INT         WINAPI ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR*);
3320 WINGDIAPI BOOL        WINAPI Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
3321 WINGDIAPI HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
3322 WINGDIAPI BOOL        WINAPI CloseFigure(HDC);
3323 WINGDIAPI HMETAFILE   WINAPI CloseMetaFile(HDC);
3324 WINGDIAPI INT         WINAPI CombineRgn(HRGN,HRGN,HRGN,INT);
3325 WINGDIAPI BOOL        WINAPI CombineTransform(LPXFORM,const XFORM *,const XFORM *);
3326 WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
3327 WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
3328 #define                      CopyEnhMetaFile WINELIB_NAME_AW(CopyEnhMetaFile)
3329 WINGDIAPI HMETAFILE   WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
3330 WINGDIAPI HMETAFILE   WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
3331 #define                      CopyMetaFile WINELIB_NAME_AW(CopyMetaFile)
3332 WINGDIAPI HBITMAP     WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID);
3333 WINGDIAPI HBITMAP     WINAPI CreateBitmapIndirect(const BITMAP*);
3334 WINGDIAPI HBRUSH      WINAPI CreateBrushIndirect(const LOGBRUSH*);
3335 WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
3336 WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
3337 #define                      CreateColorSpace WINELIB_NAME_AW(CreateColorSpace)
3338 WINGDIAPI HBITMAP     WINAPI CreateCompatibleBitmap(HDC,INT,INT);
3339 WINGDIAPI HDC         WINAPI CreateCompatibleDC(HDC);
3340 WINGDIAPI HDC         WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
3341 WINGDIAPI HDC         WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
3342 #define                      CreateDC WINELIB_NAME_AW(CreateDC)
3343 WINGDIAPI HBITMAP     WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,LPCVOID,const BITMAPINFO*,UINT);
3344 WINGDIAPI HBRUSH      WINAPI CreateDIBPatternBrush(HGLOBAL,UINT);
3345 WINGDIAPI HBRUSH      WINAPI CreateDIBPatternBrushPt(const void*,UINT);
3346 WINGDIAPI HBITMAP     WINAPI CreateDIBSection(HDC, CONST BITMAPINFO *, UINT, VOID **, HANDLE, DWORD offset);
3347 WINGDIAPI HBITMAP     WINAPI CreateDiscardableBitmap(HDC,INT,INT);
3348 WINGDIAPI HRGN        WINAPI CreateEllipticRgn(INT,INT,INT,INT);
3349 WINGDIAPI HRGN        WINAPI CreateEllipticRgnIndirect(const RECT *);
3350 WINGDIAPI HDC         WINAPI CreateEnhMetaFileA(HDC,LPCSTR,const RECT*,LPCSTR);
3351 WINGDIAPI HDC         WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,const RECT*,LPCWSTR);
3352 #define                      CreateEnhMetaFile WINELIB_NAME_AW(CreateEnhMetaFile)
3353 WINGDIAPI HFONT       WINAPI CreateFontA(INT,INT,INT,INT,INT,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
3354 WINGDIAPI HFONT       WINAPI CreateFontW(INT,INT,INT,INT,INT,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
3355 #define                      CreateFont WINELIB_NAME_AW(CreateFont)
3356 WINGDIAPI HFONT       WINAPI CreateFontIndirectA(const LOGFONTA*);
3357 WINGDIAPI HFONT       WINAPI CreateFontIndirectW(const LOGFONTW*);
3358 #define                      CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect)
3359 WINGDIAPI HPALETTE    WINAPI CreateHalftonePalette(HDC);
3360 WINGDIAPI HBRUSH      WINAPI CreateHatchBrush(INT,COLORREF);
3361 WINGDIAPI HDC         WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
3362 WINGDIAPI HDC         WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
3363 #define                      CreateIC WINELIB_NAME_AW(CreateIC)
3364 WINGDIAPI HDC         WINAPI CreateMetaFileA(LPCSTR);
3365 WINGDIAPI HDC         WINAPI CreateMetaFileW(LPCWSTR);
3366 #define                      CreateMetaFile WINELIB_NAME_AW(CreateMetaFile)
3367 WINGDIAPI HPALETTE    WINAPI CreatePalette(const LOGPALETTE*);
3368 WINGDIAPI HBRUSH      WINAPI CreatePatternBrush(HBITMAP);
3369 WINGDIAPI HPEN        WINAPI CreatePen(INT,INT,COLORREF);
3370 WINGDIAPI HPEN        WINAPI CreatePenIndirect(const LOGPEN*);
3371 WINGDIAPI HRGN        WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,INT,INT);
3372 WINGDIAPI HRGN        WINAPI CreatePolygonRgn(const POINT*,INT,INT);
3373 WINGDIAPI HRGN        WINAPI CreateRectRgn(INT,INT,INT,INT);
3374 WINGDIAPI HRGN        WINAPI CreateRectRgnIndirect(const RECT*);
3375 WINGDIAPI HRGN        WINAPI CreateRoundRectRgn(INT,INT,INT,INT,INT,INT);
3376 WINGDIAPI BOOL        WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR);
3377 WINGDIAPI BOOL        WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
3378 #define                      CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource)
3379 WINGDIAPI HBRUSH      WINAPI CreateSolidBrush(COLORREF);
3380 WINGDIAPI BOOL        WINAPI DPtoLP(HDC,LPPOINT,INT);
3381 WINGDIAPI BOOL        WINAPI DeleteColorSpace(HCOLORSPACE);
3382 WINGDIAPI BOOL        WINAPI DeleteDC(HDC);
3383 WINGDIAPI BOOL        WINAPI DeleteEnhMetaFile(HENHMETAFILE);
3384 WINGDIAPI BOOL        WINAPI DeleteMetaFile(HMETAFILE);
3385 WINGDIAPI BOOL        WINAPI DeleteObject(HGDIOBJ);
3386 WINGDIAPI INT         WINAPI DescribePixelFormat(HDC,int,UINT,LPPIXELFORMATDESCRIPTOR);
3387 WINGDIAPI INT         WINAPI DrawEscape(HDC,INT,INT,LPCSTR);
3388 WINGDIAPI BOOL        WINAPI Ellipse(HDC,INT,INT,INT,INT);
3389 WINGDIAPI INT         WINAPI EndDoc(HDC);
3390 WINGDIAPI BOOL        WINAPI EndPath(HDC);
3391 WINGDIAPI BOOL        WINAPI EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,LPVOID,const RECT*);
3392 WINGDIAPI INT         WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
3393 WINGDIAPI INT         WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
3394 #define                      EnumFontFamilies WINELIB_NAME_AW(EnumFontFamilies)
3395 WINGDIAPI INT         WINAPI EnumFontFamiliesExA(HDC,LPLOGFONTA,FONTENUMPROCA,LPARAM,DWORD);
3396 WINGDIAPI INT         WINAPI EnumFontFamiliesExW(HDC,LPLOGFONTW,FONTENUMPROCW,LPARAM,DWORD);
3397 #define                      EnumFontFamiliesEx WINELIB_NAME_AW(EnumFontFamiliesEx)
3398 WINGDIAPI INT         WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
3399 WINGDIAPI INT         WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
3400 #define                      EnumFonts WINELIB_NAME_AW(EnumFonts)
3401 WINGDIAPI INT         WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM);
3402 WINGDIAPI INT         WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM);
3403 #define                      EnumICMProfiles WINELIB_NAME_AW(EnumICMProfiles)
3404 WINGDIAPI BOOL        WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
3405 WINGDIAPI INT         WINAPI EnumObjects(HDC,INT,GOBJENUMPROC,LPARAM);
3406 WINGDIAPI BOOL        WINAPI EqualRgn(HRGN,HRGN);
3407 WINGDIAPI INT         WINAPI Escape(HDC,INT,INT,LPCSTR,LPVOID);
3408 WINGDIAPI INT         WINAPI ExcludeClipRect(HDC,INT,INT,INT,INT);
3409 WINGDIAPI HPEN        WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*);
3410 WINGDIAPI HRGN        WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*);
3411 WINGDIAPI INT         WINAPI ExtEscape(HDC,INT,INT,LPCSTR,INT,LPSTR);
3412 WINGDIAPI BOOL        WINAPI ExtFloodFill(HDC,INT,INT,COLORREF,UINT);
3413 WINGDIAPI INT         WINAPI ExtSelectClipRgn(HDC,HRGN,INT);
3414 WINGDIAPI BOOL        WINAPI ExtTextOutA(HDC,INT,INT,UINT,const RECT*,LPCSTR,UINT,const INT*);
3415 WINGDIAPI BOOL        WINAPI ExtTextOutW(HDC,INT,INT,UINT,const RECT*,LPCWSTR,UINT,const INT*);
3416 #define                      ExtTextOut WINELIB_NAME_AW(ExtTextOut)
3417 WINGDIAPI BOOL        WINAPI FillPath(HDC);
3418 WINGDIAPI BOOL        WINAPI FillRgn(HDC,HRGN,HBRUSH);
3419 WINGDIAPI BOOL        WINAPI FixBrushOrgEx(HDC,INT,INT,LPPOINT);
3420 WINGDIAPI BOOL        WINAPI FlattenPath(HDC);
3421 WINGDIAPI BOOL        WINAPI FloodFill(HDC,INT,INT,COLORREF);
3422 WINGDIAPI BOOL        WINAPI FrameRgn(HDC,HRGN,HBRUSH,INT,INT);
3423 WINGDIAPI BOOL        WINAPI GdiAlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
3424 WINGDIAPI BOOL        WINAPI GdiComment(HDC,UINT,const BYTE *);
3425 WINGDIAPI DEVMODEW *  WINAPI GdiConvertToDevmodeW(const DEVMODEA *);
3426 WINGDIAPI BOOL        WINAPI GdiFlush(void);
3427 WINGDIAPI LONG        WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *);
3428 WINGDIAPI DWORD       WINAPI GdiGetCodePage(HDC);
3429 WINGDIAPI BOOL        WINAPI GdiGradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
3430 WINGDIAPI BOOL        WINAPI GdiIsMetaFileDC(HDC);
3431 WINGDIAPI BOOL        WINAPI GdiIsMetaPrintDC(HDC);
3432 WINGDIAPI BOOL        WINAPI GdiIsPlayMetafileDC(HDC);
3433 WINGDIAPI BOOL        WINAPI GdiTransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
3434 WINGDIAPI INT         WINAPI GetArcDirection(HDC);
3435 WINGDIAPI BOOL        WINAPI GetAspectRatioFilterEx(HDC,LPSIZE);
3436 WINGDIAPI LONG        WINAPI GetBitmapBits(HBITMAP,LONG,LPVOID);
3437 WINGDIAPI BOOL        WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE);
3438 WINGDIAPI BOOL        WINAPI GetBrushOrgEx(HDC,LPPOINT);
3439 WINGDIAPI COLORREF    WINAPI GetBkColor(HDC);
3440 WINGDIAPI INT         WINAPI GetBkMode(HDC);
3441 WINGDIAPI UINT        WINAPI GetBoundsRect(HDC,LPRECT,UINT);
3442 WINGDIAPI BOOL        WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
3443 WINGDIAPI BOOL        WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
3444 #define                      GetCharABCWidths WINELIB_NAME_AW(GetCharABCWidths)
3445 WINGDIAPI BOOL        WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
3446 WINGDIAPI BOOL        WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
3447 #define                      GetCharABCWidthsFloat WINELIB_NAME_AW(GetCharABCWidthsFloat)
3448 WINGDIAPI BOOL        WINAPI GetCharABCWidthsI(HDC,UINT,UINT,LPWORD,LPABC);
3449 WINGDIAPI DWORD       WINAPI GetCharacterPlacementA(HDC,LPCSTR,INT,INT,GCP_RESULTSA*,DWORD);
3450 WINGDIAPI DWORD       WINAPI GetCharacterPlacementW(HDC,LPCWSTR,INT,INT,GCP_RESULTSW*,DWORD);
3451 #define                      GetCharacterPlacement WINELIB_NAME_AW(GetCharacterPlacement)
3452 WINGDIAPI BOOL        WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT);
3453 WINGDIAPI BOOL        WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT);
3454 #define                      GetCharWidth32 WINELIB_NAME_AW(GetCharWidth32)
3455 WINGDIAPI BOOL        WINAPI GetCharWidthA(HDC,UINT,UINT,LPINT);
3456 WINGDIAPI BOOL        WINAPI GetCharWidthI(HDC,UINT,UINT,LPWORD,LPINT);
3457 WINGDIAPI BOOL        WINAPI GetCharWidthW(HDC,UINT,UINT,LPINT);
3458 #define                      GetCharWidth WINELIB_NAME_AW(GetCharWidth)
3459 WINGDIAPI BOOL        WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT);
3460 WINGDIAPI BOOL        WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT);
3461 #define                      GetCharWidthFloat WINELIB_NAME_AW(GetCharWidthFloat)
3462 WINGDIAPI INT         WINAPI GetClipBox(HDC,LPRECT);
3463 WINGDIAPI INT         WINAPI GetClipRgn(HDC,HRGN);
3464 WINGDIAPI BOOL        WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
3465 WINGDIAPI HCOLORSPACE WINAPI GetColorSpace(HDC);
3466 WINGDIAPI HGDIOBJ     WINAPI GetCurrentObject(HDC,UINT);
3467 WINGDIAPI BOOL        WINAPI GetCurrentPositionEx(HDC,LPPOINT);
3468 WINGDIAPI INT         WINAPI GetDeviceCaps(HDC,INT);
3469 WINGDIAPI BOOL        WINAPI GetDeviceGammaRamp(HDC,LPVOID);
3470 WINGDIAPI COLORREF    WINAPI GetDCBrushColor(HDC);
3471 WINGDIAPI BOOL        WINAPI GetDCOrgEx(HDC,LPPOINT);
3472 WINGDIAPI COLORREF    WINAPI GetDCPenColor(HDC);
3473 WINGDIAPI UINT        WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
3474 WINGDIAPI INT         WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,LPVOID,LPBITMAPINFO,UINT);
3475 WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
3476 WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
3477 #define                      GetEnhMetaFile WINELIB_NAME_AW(GetEnhMetaFile)
3478 WINGDIAPI UINT        WINAPI GetEnhMetaFileBits(HENHMETAFILE,UINT,LPBYTE);
3479 WINGDIAPI UINT        WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR);
3480 WINGDIAPI UINT        WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR);
3481 #define                      GetEnhMetaFileDescription WINELIB_NAME_AW(GetEnhMetaFileDescription)
3482 WINGDIAPI UINT        WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
3483 WINGDIAPI UINT        WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
3484 WINGDIAPI DWORD       WINAPI GetFontData(HDC,DWORD,DWORD,LPVOID,DWORD);
3485 WINGDIAPI DWORD       WINAPI GetFontLanguageInfo(HDC);
3486 WINGDIAPI DWORD       WINAPI GetFontUnicodeRanges(HDC,LPGLYPHSET);
3487 WINGDIAPI DWORD       WINAPI GetGlyphIndicesA(HDC,LPCSTR,INT,LPWORD,DWORD);
3488 WINGDIAPI DWORD       WINAPI GetGlyphIndicesW(HDC,LPCWSTR,INT,LPWORD,DWORD);
3489 #define                    GetGlyphIndices WINELIB_NAME_AW(GetGlyphIndices)
3490 WINGDIAPI DWORD       WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
3491 WINGDIAPI DWORD       WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
3492 #define                      GetGlyphOutline WINELIB_NAME_AW(GetGlyphOutline)
3493 WINGDIAPI INT         WINAPI GetGraphicsMode(HDC);
3494 WINGDIAPI BOOL        WINAPI GetICMProfileA(HDC,LPDWORD,LPSTR);
3495 WINGDIAPI BOOL        WINAPI GetICMProfileW(HDC,LPDWORD,LPWSTR);
3496 #define                      GetICMProfile WINELIB_NAME_AW(GetICMProfile)
3497 WINGDIAPI DWORD       WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR);
3498 WINGDIAPI DWORD       WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR);
3499 #define                      GetKerningPairs WINELIB_NAME_AW(GetKerningPairs)
3500 WINGDIAPI DWORD       WINAPI GetLayout(HDC);
3501 WINGDIAPI BOOL        WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD);
3502 WINGDIAPI BOOL        WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD);
3503 #define                      GetLogColorSpace WINELIB_NAME_AW(GetLogColorSpace)
3504 WINGDIAPI INT         WINAPI GetMapMode(HDC);
3505 WINGDIAPI HMETAFILE   WINAPI GetMetaFileA(LPCSTR);
3506 WINGDIAPI HMETAFILE   WINAPI GetMetaFileW(LPCWSTR);
3507 #define                      GetMetaFile WINELIB_NAME_AW(GetMetaFile)
3508 WINGDIAPI UINT        WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,LPVOID);
3509 WINGDIAPI INT         WINAPI GetMetaRgn(HDC,HRGN);
3510 WINGDIAPI BOOL        WINAPI GetMiterLimit(HDC, PFLOAT);
3511 WINGDIAPI DWORD       WINAPI GetNearestColor(HDC,DWORD);
3512 WINGDIAPI UINT        WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF);
3513 WINGDIAPI INT         WINAPI GetObjectA(HGDIOBJ,INT,LPVOID);
3514 WINGDIAPI INT         WINAPI GetObjectW(HGDIOBJ,INT,LPVOID);
3515 #define                      GetObject WINELIB_NAME_AW(GetObject)
3516 WINGDIAPI DWORD       WINAPI GetObjectType(HGDIOBJ);
3517 WINGDIAPI UINT        WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA);
3518 WINGDIAPI UINT        WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW);
3519 #define                      GetOutlineTextMetrics WINELIB_NAME_AW(GetOutlineTextMetrics)
3520 WINGDIAPI UINT        WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
3521 WINGDIAPI INT         WINAPI GetPath(HDC,LPPOINT,LPBYTE,INT);
3522 WINGDIAPI COLORREF    WINAPI GetPixel(HDC,INT,INT);
3523 WINGDIAPI INT         WINAPI GetPixelFormat(HDC);
3524 WINGDIAPI INT         WINAPI GetPolyFillMode(HDC);
3525 WINGDIAPI INT         WINAPI GetRandomRgn(HDC,HRGN,INT);
3526 WINGDIAPI BOOL        WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
3527 WINGDIAPI DWORD       WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA);
3528 WINGDIAPI INT         WINAPI GetRelAbs(HDC,DWORD);
3529 WINGDIAPI INT         WINAPI GetRgnBox(HRGN,LPRECT);
3530 WINGDIAPI INT         WINAPI GetROP2(HDC);
3531 WINGDIAPI HGDIOBJ     WINAPI GetStockObject(INT);
3532 WINGDIAPI INT         WINAPI GetStretchBltMode(HDC);
3533 WINGDIAPI UINT        WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY);
3534 WINGDIAPI UINT        WINAPI GetSystemPaletteUse(HDC);
3535 WINGDIAPI UINT        WINAPI GetTextAlign(HDC);
3536 WINGDIAPI INT         WINAPI GetTextCharacterExtra(HDC);
3537 WINGDIAPI UINT        WINAPI GetTextCharset(HDC);
3538 WINGDIAPI UINT        WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD);
3539 WINGDIAPI COLORREF    WINAPI GetTextColor(HDC);
3540 WINGDIAPI BOOL        WINAPI GetTextExtentExPointA(HDC,LPCSTR,INT,INT,LPINT,LPINT,LPSIZE);
3541 WINGDIAPI BOOL        WINAPI GetTextExtentExPointW(HDC,LPCWSTR,INT,INT,LPINT,LPINT,LPSIZE);
3542 #define                      GetTextExtentExPoint WINELIB_NAME_AW(GetTextExtentExPoint)
3543 WINGDIAPI BOOL        WINAPI GetTextExtentPointA(HDC,LPCSTR,INT,LPSIZE);
3544 WINGDIAPI BOOL        WINAPI GetTextExtentPointW(HDC,LPCWSTR,INT,LPSIZE);
3545 #define                      GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint)
3546 WINGDIAPI BOOL        WINAPI GetTextExtentPoint32A(HDC,LPCSTR,INT,LPSIZE);
3547 WINGDIAPI BOOL        WINAPI GetTextExtentPoint32W(HDC,LPCWSTR,INT,LPSIZE);
3548 #define                      GetTextExtentPoint32 WINELIB_NAME_AW(GetTextExtentPoint32)
3549 WINGDIAPI BOOL        WINAPI GetTextExtentExPointI(HDC,const WORD*,INT,INT,LPINT,LPINT,LPSIZE);
3550 WINGDIAPI BOOL        WINAPI GetTextExtentPointI(HDC,const WORD*,INT,LPSIZE);
3551 WINGDIAPI INT         WINAPI GetTextFaceA(HDC,INT,LPSTR);
3552 WINGDIAPI INT         WINAPI GetTextFaceW(HDC,INT,LPWSTR);
3553 #define                      GetTextFace WINELIB_NAME_AW(GetTextFace)
3554 WINGDIAPI BOOL        WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA);
3555 WINGDIAPI BOOL        WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW);
3556 #define                      GetTextMetrics WINELIB_NAME_AW(GetTextMetrics)
3557 WINGDIAPI BOOL        WINAPI GetViewportExtEx(HDC,LPSIZE);
3558 WINGDIAPI BOOL        WINAPI GetViewportOrgEx(HDC,LPPOINT);
3559 WINGDIAPI BOOL        WINAPI GetWindowExtEx(HDC,LPSIZE);
3560 WINGDIAPI BOOL        WINAPI GetWindowOrgEx(HDC,LPPOINT);
3561 WINGDIAPI UINT        WINAPI GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC);
3562 WINGDIAPI BOOL        WINAPI GetWorldTransform(HDC,LPXFORM);
3563 WINGDIAPI BOOL        WINAPI GradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
3564 WINGDIAPI INT         WINAPI IntersectClipRect(HDC,INT,INT,INT,INT);
3565 WINGDIAPI BOOL        WINAPI InvertRgn(HDC,HRGN);
3566 WINGDIAPI BOOL        WINAPI LineDDA(INT,INT,INT,INT,LINEDDAPROC,LPARAM);
3567 WINGDIAPI BOOL        WINAPI LineTo(HDC,INT,INT);
3568 WINGDIAPI BOOL        WINAPI LPtoDP(HDC,LPPOINT,INT);
3569 WINGDIAPI BOOL        WINAPI MaskBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,HBITMAP,INT,INT,DWORD);
3570 WINGDIAPI BOOL        WINAPI ModifyWorldTransform(HDC,const XFORM *, DWORD);
3571 WINGDIAPI BOOL        WINAPI MoveToEx(HDC,INT,INT,LPPOINT);
3572 WINGDIAPI INT         WINAPI OffsetClipRgn(HDC,INT,INT);
3573 WINGDIAPI INT         WINAPI OffsetRgn(HRGN,INT,INT);
3574 WINGDIAPI BOOL        WINAPI OffsetViewportOrgEx(HDC,INT,INT,LPPOINT);
3575 WINGDIAPI BOOL        WINAPI OffsetWindowOrgEx(HDC,INT,INT,LPPOINT);
3576 WINGDIAPI BOOL        WINAPI PaintRgn(HDC,HRGN);
3577 WINGDIAPI BOOL        WINAPI PatBlt(HDC,INT,INT,INT,INT,DWORD);
3578 WINGDIAPI HRGN        WINAPI PathToRegion(HDC);
3579 WINGDIAPI BOOL        WINAPI Pie(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
3580 WINGDIAPI BOOL        WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,const RECT*);
3581 WINGDIAPI BOOL        WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT);
3582 WINGDIAPI BOOL        WINAPI PlayMetaFile(HDC,HMETAFILE);
3583 WINGDIAPI BOOL        WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT);
3584 WINGDIAPI BOOL        WINAPI PlgBlt(HDC,const POINT*,HDC,INT,INT,INT,INT,HBITMAP,INT,INT);
3585 WINGDIAPI BOOL        WINAPI PolyBezier(HDC,const POINT*,DWORD);
3586 WINGDIAPI BOOL        WINAPI PolyBezierTo(HDC,const POINT*,DWORD);
3587 WINGDIAPI BOOL        WINAPI PolyDraw(HDC,const POINT*,const BYTE*,DWORD);
3588 WINGDIAPI BOOL        WINAPI PolyPolygon(HDC,const POINT*,const INT*,UINT);
3589 WINGDIAPI BOOL        WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD);
3590 WINGDIAPI BOOL        WINAPI Polygon(HDC,const POINT*,INT);
3591 WINGDIAPI BOOL        WINAPI Polyline(HDC,const POINT*,INT);
3592 WINGDIAPI BOOL        WINAPI PolylineTo(HDC,const POINT*,DWORD);
3593 WINGDIAPI BOOL        WINAPI PtInRegion(HRGN,INT,INT);
3594 WINGDIAPI BOOL        WINAPI PtVisible(HDC,INT,INT);
3595 WINGDIAPI UINT        WINAPI RealizePalette(HDC);
3596 WINGDIAPI BOOL        WINAPI Rectangle(HDC,INT,INT,INT,INT);
3597 WINGDIAPI BOOL        WINAPI RectInRegion(HRGN,const RECT *);
3598 WINGDIAPI BOOL        WINAPI RectVisible(HDC,const RECT*);
3599 WINGDIAPI BOOL        WINAPI RemoveFontResourceA(LPCSTR);
3600 WINGDIAPI BOOL        WINAPI RemoveFontResourceW(LPCWSTR);
3601 #define                      RemoveFontResource WINELIB_NAME_AW(RemoveFontResource)
3602 WINGDIAPI BOOL        WINAPI RemoveFontResourceExA(LPCSTR, DWORD, PVOID);
3603 WINGDIAPI BOOL        WINAPI RemoveFontResourceExW(LPCWSTR, DWORD, PVOID);
3604 #define                      RemoveFontResourceEx WINELIB_NAME_AW(RemoveFontResourceEx)
3605 WINGDIAPI HDC         WINAPI ResetDCA(HDC,const DEVMODEA *);
3606 WINGDIAPI HDC         WINAPI ResetDCW(HDC,const DEVMODEW *);
3607 #define                      ResetDC WINELIB_NAME_AW(ResetDC)
3608 WINGDIAPI BOOL        WINAPI ResizePalette(HPALETTE,UINT);
3609 WINGDIAPI BOOL        WINAPI RestoreDC(HDC,INT);
3610 WINGDIAPI BOOL        WINAPI RoundRect(HDC,INT,INT,INT,INT,INT,INT);
3611 WINGDIAPI INT         WINAPI SaveDC(HDC);
3612 WINGDIAPI BOOL        WINAPI ScaleViewportExtEx(HDC,INT,INT,INT,INT,LPSIZE);
3613 WINGDIAPI BOOL        WINAPI ScaleWindowExtEx(HDC,INT,INT,INT,INT,LPSIZE);
3614 WINGDIAPI BOOL        WINAPI SelectClipPath(HDC,INT);
3615 WINGDIAPI INT         WINAPI SelectClipRgn(HDC,HRGN);
3616 WINGDIAPI HGDIOBJ     WINAPI SelectObject(HDC,HGDIOBJ);
3617 WINGDIAPI HPALETTE    WINAPI SelectPalette(HDC,HPALETTE,BOOL);
3618 WINGDIAPI INT         WINAPI SetAbortProc(HDC,ABORTPROC);
3619 WINGDIAPI INT         WINAPI SetArcDirection(HDC,INT);
3620 WINGDIAPI LONG        WINAPI SetBitmapBits(HBITMAP,LONG,LPCVOID);
3621 WINGDIAPI BOOL        WINAPI SetBitmapDimensionEx(HBITMAP,INT,INT,LPSIZE);
3622 WINGDIAPI COLORREF    WINAPI SetBkColor(HDC,COLORREF);
3623 WINGDIAPI INT         WINAPI SetBkMode(HDC,INT);
3624 WINGDIAPI UINT        WINAPI SetBoundsRect(HDC,const RECT*,UINT);
3625 WINGDIAPI BOOL        WINAPI SetBrushOrgEx(HDC,INT,INT,LPPOINT);
3626 WINGDIAPI BOOL        WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
3627 WINGDIAPI HCOLORSPACE WINAPI SetColorSpace(HDC,HCOLORSPACE);
3628 WINGDIAPI BOOL        WINAPI SetDeviceGammaRamp(HDC,LPVOID);
3629 WINGDIAPI COLORREF    WINAPI SetDCBrushColor(HDC,COLORREF);
3630 WINGDIAPI COLORREF    WINAPI SetDCPenColor(HDC, COLORREF);
3631 WINGDIAPI UINT        WINAPI SetDIBColorTable(HDC,UINT,UINT,CONST RGBQUAD*);
3632 WINGDIAPI INT         WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
3633 WINGDIAPI INT         WINAPI SetDIBitsToDevice(HDC,INT,INT,DWORD,DWORD,INT,INT,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
3634 WINGDIAPI HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE *);
3635 WINGDIAPI INT         WINAPI SetGraphicsMode(HDC,INT);
3636 WINGDIAPI INT         WINAPI SetICMMode(HDC,INT);
3637 WINGDIAPI BOOL        WINAPI SetICMProfileA(HDC,LPSTR);
3638 WINGDIAPI BOOL        WINAPI SetICMProfileW(HDC,LPWSTR);
3639 #define                      SetICMProfile WINELIB_NAME_AW(SetICMProfile)
3640 WINGDIAPI DWORD       WINAPI SetLayout(HDC,DWORD);
3641 WINGDIAPI INT         WINAPI SetMapMode(HDC,INT);
3642 WINGDIAPI DWORD       WINAPI SetMapperFlags(HDC,DWORD);
3643 WINGDIAPI HMETAFILE   WINAPI SetMetaFileBitsEx(UINT,const BYTE*);
3644 WINGDIAPI INT         WINAPI SetMetaRgn(HDC);
3645 WINGDIAPI BOOL        WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT);
3646 WINGDIAPI UINT        WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*);
3647 WINGDIAPI COLORREF    WINAPI SetPixel(HDC,INT,INT,COLORREF);
3648 WINGDIAPI BOOL        WINAPI SetPixelV(HDC,INT,INT,COLORREF);
3649 WINGDIAPI BOOL        WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
3650 WINGDIAPI INT         WINAPI SetPolyFillMode(HDC,INT);
3651 WINGDIAPI BOOL        WINAPI SetRectRgn(HRGN,INT,INT,INT,INT);
3652 WINGDIAPI INT         WINAPI SetRelAbs(HDC,INT);
3653 WINGDIAPI INT         WINAPI SetROP2(HDC,INT);
3654 WINGDIAPI INT         WINAPI SetStretchBltMode(HDC,INT);
3655 WINGDIAPI UINT        WINAPI SetSystemPaletteUse(HDC,UINT);
3656 WINGDIAPI UINT        WINAPI SetTextAlign(HDC,UINT);
3657 WINGDIAPI INT         WINAPI SetTextCharacterExtra(HDC,INT);
3658 WINGDIAPI COLORREF    WINAPI SetTextColor(HDC,COLORREF);
3659 WINGDIAPI BOOL        WINAPI SetTextJustification(HDC,INT,INT);
3660 WINGDIAPI BOOL        WINAPI SetViewportExtEx(HDC,INT,INT,LPSIZE);
3661 WINGDIAPI BOOL        WINAPI SetViewportOrgEx(HDC,INT,INT,LPPOINT);
3662 WINGDIAPI BOOL        WINAPI SetWindowExtEx(HDC,INT,INT,LPSIZE);
3663 WINGDIAPI BOOL        WINAPI SetWindowOrgEx(HDC,INT,INT,LPPOINT);
3664 WINGDIAPI HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,CONST BYTE*,HDC,CONST METAFILEPICT *);
3665 WINGDIAPI BOOL        WINAPI SetWorldTransform(HDC,const XFORM*);
3666 WINGDIAPI INT         WINAPI StartDocA(HDC,const DOCINFOA*);
3667 WINGDIAPI INT         WINAPI StartDocW(HDC,const DOCINFOW*);
3668 #define                      StartDoc WINELIB_NAME_AW(StartDoc)
3669 WINGDIAPI INT         WINAPI StartPage(HDC);
3670 WINGDIAPI INT         WINAPI EndPage(HDC);
3671 WINGDIAPI BOOL        WINAPI StretchBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,INT,INT,DWORD);
3672 WINGDIAPI INT         WINAPI StretchDIBits(HDC,INT,INT,INT,INT,INT,INT,INT,INT,const VOID*,const BITMAPINFO*,UINT,DWORD);
3673 WINGDIAPI BOOL        WINAPI StrokeAndFillPath(HDC);
3674 WINGDIAPI BOOL        WINAPI StrokePath(HDC);
3675 WINGDIAPI BOOL        WINAPI SwapBuffers(HDC);
3676 WINGDIAPI BOOL        WINAPI TextOutA(HDC,INT,INT,LPCSTR,INT);
3677 WINGDIAPI BOOL        WINAPI TextOutW(HDC,INT,INT,LPCWSTR,INT);
3678 #define                      TextOut WINELIB_NAME_AW(TextOut)
3679 WINGDIAPI BOOL        WINAPI TranslateCharsetInfo(LPDWORD,LPCHARSETINFO,DWORD);
3680 WINGDIAPI BOOL        WINAPI TransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
3681 WINGDIAPI BOOL        WINAPI UnrealizeObject(HGDIOBJ);
3682 WINGDIAPI BOOL        WINAPI UpdateColors(HDC);
3683 WINGDIAPI BOOL        WINAPI UpdateICMRegKeyA(DWORD,LPSTR,LPSTR,UINT);
3684 WINGDIAPI BOOL        WINAPI UpdateICMRegKeyW(DWORD,LPWSTR,LPWSTR,UINT);
3685 #define                      UpdateICMRegKey WINELIB_NAME_AW(UpdateICMRegKey)
3686 WINGDIAPI BOOL        WINAPI WidenPath(HDC);
3687 WINGDIAPI BOOL        WINAPI PolyTextOutA(HDC,const POLYTEXTA*,INT);
3688 WINGDIAPI BOOL        WINAPI PolyTextOutW(HDC,const POLYTEXTW*,INT);
3689 #define                      PolyTextOut WINELIB_NAME_AW(PolyTextOut)
3690
3691 /* These defines are used by wglSwapLayerBuffers */
3692 #define WGL_SWAP_MAIN_PLANE (1 <<  0)
3693 #define WGL_SWAP_OVERLAY1   (1 <<  1)
3694 #define WGL_SWAP_OVERLAY2   (1 <<  2)
3695 #define WGL_SWAP_OVERLAY3   (1 <<  3)
3696 #define WGL_SWAP_OVERLAY4   (1 <<  4)
3697 #define WGL_SWAP_OVERLAY5   (1 <<  5)
3698 #define WGL_SWAP_OVERLAY6   (1 <<  6)
3699 #define WGL_SWAP_OVERLAY7   (1 <<  7)
3700 #define WGL_SWAP_OVERLAY8   (1 <<  8)
3701 #define WGL_SWAP_OVERLAY9   (1 <<  9)
3702 #define WGL_SWAP_OVERLAY10  (1 << 10)
3703 #define WGL_SWAP_OVERLAY11  (1 << 11)
3704 #define WGL_SWAP_OVERLAY12  (1 << 12)
3705 #define WGL_SWAP_OVERLAY13  (1 << 13)
3706 #define WGL_SWAP_OVERLAY14  (1 << 14)
3707 #define WGL_SWAP_OVERLAY15  (1 << 15)
3708 #define WGL_SWAP_UNDERLAY1  (1 << 16)
3709 #define WGL_SWAP_UNDERLAY2  (1 << 17)
3710 #define WGL_SWAP_UNDERLAY3  (1 << 18)
3711 #define WGL_SWAP_UNDERLAY4  (1 << 19)
3712 #define WGL_SWAP_UNDERLAY5  (1 << 20)
3713 #define WGL_SWAP_UNDERLAY6  (1 << 21)
3714 #define WGL_SWAP_UNDERLAY7  (1 << 22)
3715 #define WGL_SWAP_UNDERLAY8  (1 << 23)
3716 #define WGL_SWAP_UNDERLAY9  (1 << 24)
3717 #define WGL_SWAP_UNDERLAY10 (1 << 25)
3718 #define WGL_SWAP_UNDERLAY11 (1 << 26)
3719 #define WGL_SWAP_UNDERLAY12 (1 << 27)
3720 #define WGL_SWAP_UNDERLAY13 (1 << 28)
3721 #define WGL_SWAP_UNDERLAY14 (1 << 29)
3722 #define WGL_SWAP_UNDERLAY15 (1 << 30)
3723
3724 /* WGL prototypes */
3725 WINGDIAPI HGLRC   WINAPI wglCreateContext(HDC);
3726 WINGDIAPI HGLRC   WINAPI wglCreateLayerContext(HDC,INT);
3727 WINGDIAPI BOOL    WINAPI wglCopyContext(HGLRC,HGLRC,UINT);
3728 WINGDIAPI BOOL    WINAPI wglDeleteContext(HGLRC);
3729 WINGDIAPI BOOL    WINAPI wglDescribeLayerPlane(HDC,INT,INT,UINT,LPLAYERPLANEDESCRIPTOR);
3730 WINGDIAPI HGLRC   WINAPI wglGetCurrentContext(void);
3731 WINGDIAPI HDC     WINAPI wglGetCurrentDC(void);
3732 WINGDIAPI INT     WINAPI wglGetLayerPaletteEntries(HDC,INT,INT,INT,const COLORREF *);
3733 WINGDIAPI PROC    WINAPI wglGetProcAddress(LPCSTR);
3734 WINGDIAPI BOOL    WINAPI wglMakeCurrent(HDC,HGLRC);
3735 WINGDIAPI BOOL    WINAPI wglRealizeLayerPalette(HDC,INT,BOOL);
3736 WINGDIAPI INT     WINAPI wglSetLayerPaletteEntries(HDC,INT,INT,INT,const COLORREF *);
3737 WINGDIAPI BOOL    WINAPI wglShareLists(HGLRC,HGLRC);
3738 WINGDIAPI BOOL    WINAPI wglSwapLayerBuffers(HDC,UINT);
3739 WINGDIAPI BOOL    WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
3740 WINGDIAPI BOOL    WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
3741 #define                  wglUseFontBitmaps WINELIB_NAME_AW(wglUseFontBitmaps)
3742 WINGDIAPI BOOL    WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,INT,LPGLYPHMETRICSFLOAT);
3743 WINGDIAPI BOOL    WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,INT,LPGLYPHMETRICSFLOAT);
3744 #define                  wglUseFontOutlines WINELIB_NAME_AW(wglUseFontOutlines)
3745
3746 #ifdef __WINESRC__
3747 /* the DC hook support is only exported on Win16, the 32-bit version is a Wine extension */
3748
3749 #define DCHC_INVALIDVISRGN      0x0001
3750 #define DCHC_DELETEDC           0x0002
3751 #define DCHF_INVALIDATEVISRGN   0x0001
3752 #define DCHF_VALIDATEVISRGN     0x0002
3753
3754 typedef BOOL (CALLBACK *DCHOOKPROC)(HDC,WORD,DWORD_PTR,LPARAM);
3755
3756 WINGDIAPI DWORD_PTR WINAPI GetDCHook(HDC,DCHOOKPROC*);
3757 WINGDIAPI BOOL      WINAPI SetDCHook(HDC,DCHOOKPROC,DWORD_PTR);
3758 WINGDIAPI WORD      WINAPI SetHookFlags(HDC,WORD);
3759 WINGDIAPI INT       WINAPI SelectVisRgn(HDC,HRGN);
3760 #endif /* __WINESRC__ */
3761
3762 #ifdef __cplusplus
3763 }
3764 #endif
3765
3766 #endif /* !NOGDI */
3767 #endif /* _WINGDI_ */