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