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