Removed dst_handle in duplicate_handle request.
[wine] / include / wingdi.h
1 #ifndef __WINE_WINGDI_H
2 #define __WINE_WINGDI_H
3
4 #include "wintypes.h"
5
6 #pragma pack(1)
7
8 typedef struct _ABCFLOAT {
9     FLOAT   abcfA;
10     FLOAT   abcfB;
11     FLOAT   abcfC;
12 } ABCFLOAT, *PABCFLOAT, *LPABCFLOAT;
13
14 typedef struct
15 {
16     WORD   wFirst;
17     WORD   wSecond;
18     INT16  iKernAmount;
19 } KERNINGPAIR16, *LPKERNINGPAIR16;
20
21 typedef struct
22 {
23     WORD   wFirst;
24     WORD   wSecond;
25     INT  iKernAmount;
26 } KERNINGPAIR, *LPKERNINGPAIR;
27
28
29 typedef struct
30 {
31     HDC16   hdc;
32     BOOL16  fErase;
33     RECT16  rcPaint;
34     BOOL16  fRestore;
35     BOOL16  fIncUpdate;
36     BYTE    rgbReserved[16];
37 } PAINTSTRUCT16, *LPPAINTSTRUCT16;
38
39 typedef struct
40 {
41     HDC   hdc;
42     BOOL  fErase;
43     RECT  rcPaint;
44     BOOL  fRestore;
45     BOOL  fIncUpdate;
46     BYTE    rgbReserved[32];
47 } PAINTSTRUCT, *LPPAINTSTRUCT;
48
49
50
51 typedef struct tagPIXELFORMATDESCRIPTOR {
52     WORD  nSize;
53     WORD  nVersion;
54     DWORD dwFlags;
55     BYTE  iPixelType;
56     BYTE  cColorBits;
57     BYTE  cRedBits;
58     BYTE  cRedShift;
59     BYTE  cGreenBits;
60     BYTE  cGreenShift;
61     BYTE  cBlueBits;
62     BYTE  cBlueShift;
63     BYTE  cAlphaBits;
64     BYTE  cAlphaShift;
65     BYTE  cAccumBits;
66     BYTE  cAccumRedBits;
67     BYTE  cAccumGreenBits;
68     BYTE  cAccumBlueBits;
69     BYTE  cAccumAlphaBits;
70     BYTE  cDepthBits;
71     BYTE  cStencilBits;
72     BYTE  cAuxBuffers;
73     BYTE  iLayerType;
74     BYTE  bReserved;
75     DWORD dwLayerMask;
76     DWORD dwVisibleMask;
77     DWORD dwDamageMask;
78 } PIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
79
80 typedef struct tagCOLORADJUSTMENT
81 {
82         WORD   caSize;
83         WORD   caFlags;
84         WORD   caIlluminantIndex;
85         WORD   caRedGamma;
86         WORD   caGreenGamma;
87         WORD   caBlueGamma;
88         WORD   caReferenceBlack;
89         WORD   caReferenceWhite;
90         SHORT  caContrast;
91         SHORT  caBrightness;
92         SHORT  caColorfulness;
93         SHORT  caRedGreenTint;
94 } COLORADJUSTMENT, *PCOLORADJUSTMENT, *LPCOLORADJUSTMENT;
95
96 #define DC_FIELDS               1
97 #define DC_PAPERS               2
98 #define DC_PAPERSIZE            3
99 #define DC_MINEXTENT            4
100 #define DC_MAXEXTENT            5
101 #define DC_BINS                 6
102 #define DC_DUPLEX               7
103 #define DC_SIZE                 8
104 #define DC_EXTRA                9
105 #define DC_VERSION              10
106 #define DC_DRIVER               11
107 #define DC_BINNAMES             12
108 #define DC_ENUMRESOLUTIONS      13
109 #define DC_FILEDEPENDENCIES     14
110 #define DC_TRUETYPE             15
111 #define DC_PAPERNAMES           16
112 #define DC_ORIENTATION          17
113 #define DC_COPIES               18
114
115 /* Flag returned from Escape QUERYDIBSUPPORT */
116 #define QDI_SETDIBITS           1
117 #define QDI_GETDIBITS           2
118 #define QDI_DIBTOSCREEN         4
119 #define QDI_STRETCHDIB          8
120
121
122 #define PR_JOBSTATUS    0x0000
123
124
125 /* GDI Escape commands */
126 #define NEWFRAME                1
127 #define ABORTDOC                2
128 #define NEXTBAND                3
129 #define SETCOLORTABLE           4
130 #define GETCOLORTABLE           5
131 #define FLUSHOUTPUT             6
132 #define DRAFTMODE               7
133 #define QUERYESCSUPPORT         8
134 #define SETABORTPROC            9
135 #define STARTDOC                10
136 #define ENDDOC                  11
137 #define GETPHYSPAGESIZE         12
138 #define GETPRINTINGOFFSET       13
139 #define GETSCALINGFACTOR        14
140 #define MFCOMMENT               15
141 #define GETPENWIDTH             16
142 #define SETCOPYCOUNT            17
143 #define SELECTPAPERSOURCE       18
144 #define DEVICEDATA              19
145 #define PASSTHROUGH             19
146 #define GETTECHNOLGY            20
147 #define GETTECHNOLOGY           20 /* yes, both of them */
148 #define SETLINECAP              21
149 #define SETLINEJOIN             22
150 #define SETMITERLIMIT           23
151 #define BANDINFO                24
152 #define DRAWPATTERNRECT         25
153 #define GETVECTORPENSIZE        26
154 #define GETVECTORBRUSHSIZE      27
155 #define ENABLEDUPLEX            28
156 #define GETSETPAPERBINS         29
157 #define GETSETPRINTORIENT       30
158 #define ENUMPAPERBINS           31
159 #define SETDIBSCALING           32
160 #define EPSPRINTING             33
161 #define ENUMPAPERMETRICS        34
162 #define GETSETPAPERMETRICS      35
163 #define POSTSCRIPT_DATA         37
164 #define POSTSCRIPT_IGNORE       38
165 #define MOUSETRAILS             39
166 #define GETDEVICEUNITS          42
167
168 #define GETEXTENDEDTEXTMETRICS  256
169 #define GETEXTENTTABLE          257
170 #define GETPAIRKERNTABLE        258
171 #define GETTRACKKERNTABLE       259
172 #define EXTTEXTOUT              512
173 #define GETFACENAME             513
174 #define DOWNLOADFACE            514
175 #define ENABLERELATIVEWIDTHS    768
176 #define ENABLEPAIRKERNING       769
177 #define SETKERNTRACK            770
178 #define SETALLJUSTVALUES        771
179 #define SETCHARSET              772
180
181 #define STRETCHBLT              2048
182 #define GETSETSCREENPARAMS      3072
183 #define QUERYDIBSUPPORT         3073
184 #define BEGIN_PATH              4096
185 #define CLIP_TO_PATH            4097
186 #define END_PATH                4098
187 #define EXT_DEVICE_CAPS         4099
188 #define RESTORE_CTM             4100
189 #define SAVE_CTM                4101
190 #define SET_ARC_DIRECTION       4102
191 #define SET_BACKGROUND_COLOR    4103
192 #define SET_POLY_MODE           4104
193 #define SET_SCREEN_ANGLE        4105
194 #define SET_SPREAD              4106
195 #define TRANSFORM_CTM           4107
196 #define SET_CLIP_BOX            4108
197 #define SET_BOUNDS              4109
198 #define SET_MIRROR_MODE         4110
199 #define OPENCHANNEL             4110
200 #define DOWNLOADHEADER          4111
201 #define CLOSECHANNEL            4112
202 #define POSTSCRIPT_PASSTHROUGH  4115
203 #define ENCAPSULATED_POSTSCRIPT 4116
204
205 /* Spooler Error Codes */
206 #define SP_NOTREPORTED  0x4000
207 #define SP_ERROR        (-1)
208 #define SP_APPABORT     (-2)
209 #define SP_USERABORT    (-3)
210 #define SP_OUTOFDISK    (-4)
211 #define SP_OUTOFMEMORY  (-5)
212
213
214   /* Raster operations */
215
216 #define R2_BLACK         1
217 #define R2_NOTMERGEPEN   2
218 #define R2_MASKNOTPEN    3
219 #define R2_NOTCOPYPEN    4
220 #define R2_MASKPENNOT    5
221 #define R2_NOT           6
222 #define R2_XORPEN        7
223 #define R2_NOTMASKPEN    8
224 #define R2_MASKPEN       9
225 #define R2_NOTXORPEN    10
226 #define R2_NOP          11
227 #define R2_MERGENOTPEN  12
228 #define R2_COPYPEN      13
229 #define R2_MERGEPENNOT  14
230 #define R2_MERGEPEN     15
231 #define R2_WHITE        16
232
233 #define SRCCOPY         0xcc0020
234 #define SRCPAINT        0xee0086
235 #define SRCAND          0x8800c6
236 #define SRCINVERT       0x660046
237 #define SRCERASE        0x440328
238 #define NOTSRCCOPY      0x330008
239 #define NOTSRCERASE     0x1100a6
240 #define MERGECOPY       0xc000ca
241 #define MERGEPAINT      0xbb0226
242 #define PATCOPY         0xf00021
243 #define PATPAINT        0xfb0a09
244 #define PATINVERT       0x5a0049
245 #define DSTINVERT       0x550009
246 #define BLACKNESS       0x000042
247 #define WHITENESS       0xff0062
248
249   /* StretchBlt() modes */
250 #define BLACKONWHITE         1
251 #define WHITEONBLACK         2
252 #define COLORONCOLOR         3
253
254 #define STRETCH_ANDSCANS     BLACKONWHITE
255 #define STRETCH_ORSCANS      WHITEONBLACK
256 #define STRETCH_DELETESCANS  COLORONCOLOR
257
258   /* Colors */
259
260 typedef DWORD COLORREF;
261
262 #define RGB(r,g,b)          ((COLORREF)((r) | ((g) << 8) | ((b) << 16)))
263 #define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
264 #define PALETTEINDEX(i)     ((COLORREF)(0x01000000 | (WORD)(i)))
265
266 #define GetRValue(rgb)      ((rgb) & 0xff)
267 #define GetGValue(rgb)      (((rgb) >> 8) & 0xff)
268 #define GetBValue(rgb)      (((rgb) >> 16) & 0xff)
269
270 #define COLOR_SCROLLBAR             0
271 #define COLOR_BACKGROUND            1
272 #define COLOR_ACTIVECAPTION         2
273 #define COLOR_INACTIVECAPTION       3
274 #define COLOR_MENU                  4
275 #define COLOR_WINDOW                5
276 #define COLOR_WINDOWFRAME           6
277 #define COLOR_MENUTEXT              7
278 #define COLOR_WINDOWTEXT            8
279 #define COLOR_CAPTIONTEXT           9
280 #define COLOR_ACTIVEBORDER         10
281 #define COLOR_INACTIVEBORDER       11
282 #define COLOR_APPWORKSPACE         12
283 #define COLOR_HIGHLIGHT            13
284 #define COLOR_HIGHLIGHTTEXT        14
285 #define COLOR_BTNFACE              15
286 #define COLOR_BTNSHADOW            16
287 #define COLOR_GRAYTEXT             17
288 #define COLOR_BTNTEXT              18
289 #define COLOR_INACTIVECAPTIONTEXT  19
290 #define COLOR_BTNHIGHLIGHT         20
291 /* win95 colors */
292 #define COLOR_3DDKSHADOW           21
293 #define COLOR_3DLIGHT              22
294 #define COLOR_INFOTEXT             23
295 #define COLOR_INFOBK               24
296 #define COLOR_DESKTOP              COLOR_BACKGROUND
297 #define COLOR_3DFACE               COLOR_BTNFACE
298 #define COLOR_3DSHADOW             COLOR_BTNSHADOW
299 #define COLOR_3DHIGHLIGHT          COLOR_BTNHIGHLIGHT
300 #define COLOR_3DHILIGHT            COLOR_BTNHIGHLIGHT
301 #define COLOR_BTNHILIGHT           COLOR_BTNHIGHLIGHT
302 /* win98 colors */
303 #define COLOR_ALTERNATEBTNFACE         25  /* undocumented, constant's name unknown */
304 #define COLOR_HOTLIGHT                 26
305 #define COLOR_GRADIENTACTIVECAPTION    27
306 #define COLOR_GRADIENTINACTIVECAPTION  28
307
308   /* WM_CTLCOLOR values */
309 #define CTLCOLOR_MSGBOX             0
310 #define CTLCOLOR_EDIT               1
311 #define CTLCOLOR_LISTBOX            2
312 #define CTLCOLOR_BTN                3
313 #define CTLCOLOR_DLG                4
314 #define CTLCOLOR_SCROLLBAR          5
315 #define CTLCOLOR_STATIC             6
316
317 #define ICM_OFF   1
318 #define ICM_ON    2
319 #define ICM_QUERY 3
320
321   /* Bounds Accumulation APIs */
322 #define DCB_RESET       0x0001
323 #define DCB_ACCUMULATE  0x0002
324 #define DCB_DIRTY       DCB_ACCUMULATE
325 #define DCB_SET         (DCB_RESET | DCB_ACCUMULATE)
326 #define DCB_ENABLE      0x0004
327 #define DCB_DISABLE     0x0008
328
329   /* Bitmaps */
330
331 typedef struct
332 {
333     INT16  bmType;
334     INT16  bmWidth;
335     INT16  bmHeight;
336     INT16  bmWidthBytes;
337     BYTE   bmPlanes;
338     BYTE   bmBitsPixel;
339     SEGPTR bmBits WINE_PACKED;
340 } BITMAP16, *LPBITMAP16;
341
342 typedef struct
343 {
344     INT  bmType;
345     INT  bmWidth;
346     INT  bmHeight;
347     INT  bmWidthBytes;
348     WORD   bmPlanes;
349     WORD   bmBitsPixel;
350     LPVOID bmBits WINE_PACKED;
351 } BITMAP, *LPBITMAP;
352
353
354   /* Brushes */
355
356 typedef struct
357
358     UINT16     lbStyle;
359     COLORREF   lbColor WINE_PACKED;
360     INT16      lbHatch;
361 } LOGBRUSH16, *LPLOGBRUSH16;
362
363 typedef struct
364
365     UINT     lbStyle;
366     COLORREF   lbColor;
367     INT      lbHatch;
368 } LOGBRUSH, *LPLOGBRUSH;
369
370
371   /* Brush styles */
372 #define BS_SOLID            0
373 #define BS_NULL             1
374 #define BS_HOLLOW           1
375 #define BS_HATCHED          2
376 #define BS_PATTERN          3
377 #define BS_INDEXED          4
378 #define BS_DIBPATTERN       5
379 #define BS_DIBPATTERNPT     6
380 #define BS_PATTERN8X8       7
381 #define BS_DIBPATTERN8X8    8
382 #define BS_MONOPATTERN      9
383
384   /* Hatch styles */
385 #define HS_HORIZONTAL       0
386 #define HS_VERTICAL         1
387 #define HS_FDIAGONAL        2
388 #define HS_BDIAGONAL        3
389 #define HS_CROSS            4
390 #define HS_DIAGCROSS        5
391
392   /* Fonts */
393
394 #define LF_FACESIZE     32
395 #define LF_FULLFACESIZE 64
396
397 #define RASTER_FONTTYPE     0x0001
398 #define DEVICE_FONTTYPE     0x0002
399 #define TRUETYPE_FONTTYPE   0x0004
400
401 typedef struct
402 {
403     INT16  lfHeight;
404     INT16  lfWidth;
405     INT16  lfEscapement;
406     INT16  lfOrientation;
407     INT16  lfWeight;
408     BYTE   lfItalic;
409     BYTE   lfUnderline;
410     BYTE   lfStrikeOut;
411     BYTE   lfCharSet;
412     BYTE   lfOutPrecision;
413     BYTE   lfClipPrecision;
414     BYTE   lfQuality;
415     BYTE   lfPitchAndFamily;
416     CHAR   lfFaceName[LF_FACESIZE] WINE_PACKED;
417 } LOGFONT16, *LPLOGFONT16;
418
419 typedef struct
420 {
421     INT  lfHeight;
422     INT  lfWidth;
423     INT  lfEscapement;
424     INT  lfOrientation;
425     INT  lfWeight;
426     BYTE   lfItalic;
427     BYTE   lfUnderline;
428     BYTE   lfStrikeOut;
429     BYTE   lfCharSet;
430     BYTE   lfOutPrecision;
431     BYTE   lfClipPrecision;
432     BYTE   lfQuality;
433     BYTE   lfPitchAndFamily;
434     CHAR   lfFaceName[LF_FACESIZE];
435 } LOGFONTA, *LPLOGFONTA;
436
437 typedef struct
438 {
439     INT  lfHeight;
440     INT  lfWidth;
441     INT  lfEscapement;
442     INT  lfOrientation;
443     INT  lfWeight;
444     BYTE   lfItalic;
445     BYTE   lfUnderline;
446     BYTE   lfStrikeOut;
447     BYTE   lfCharSet;
448     BYTE   lfOutPrecision;
449     BYTE   lfClipPrecision;
450     BYTE   lfQuality;
451     BYTE   lfPitchAndFamily;
452     WCHAR  lfFaceName[LF_FACESIZE];
453 } LOGFONTW, *LPLOGFONTW;
454
455 DECL_WINELIB_TYPE_AW(LOGFONT)
456 DECL_WINELIB_TYPE_AW(LPLOGFONT)
457
458 typedef struct
459 {
460   LOGFONT16  elfLogFont;
461   BYTE       elfFullName[LF_FULLFACESIZE] WINE_PACKED;
462   BYTE       elfStyle[LF_FACESIZE] WINE_PACKED;
463 } ENUMLOGFONT16, *LPENUMLOGFONT16;
464
465 typedef struct
466 {
467   LOGFONTA elfLogFont;
468   BYTE       elfFullName[LF_FULLFACESIZE] WINE_PACKED;
469   BYTE       elfStyle[LF_FACESIZE] WINE_PACKED;
470 } ENUMLOGFONTA, *LPENUMLOGFONTA;
471
472 typedef struct
473 {
474   LOGFONTW elfLogFont;
475   WCHAR      elfFullName[LF_FULLFACESIZE] WINE_PACKED;
476   WCHAR      elfStyle[LF_FACESIZE] WINE_PACKED;
477 } ENUMLOGFONTW, *LPENUMLOGFONTW;
478
479 typedef struct
480 {
481   LOGFONT16  elfLogFont;
482   BYTE       elfFullName[LF_FULLFACESIZE] WINE_PACKED;
483   BYTE       elfStyle[LF_FACESIZE] WINE_PACKED;
484   BYTE       elfScript[LF_FACESIZE] WINE_PACKED;
485 } ENUMLOGFONTEX16, *LPENUMLOGFONTEX16;
486
487 typedef struct
488 {
489   LOGFONTA elfLogFont;
490   BYTE       elfFullName[LF_FULLFACESIZE] WINE_PACKED;
491   BYTE       elfStyle[LF_FACESIZE] WINE_PACKED;
492   BYTE       elfScript[LF_FACESIZE] WINE_PACKED;
493 } ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
494
495 typedef struct
496 {
497   LOGFONTW elfLogFont;
498   WCHAR      elfFullName[LF_FULLFACESIZE] WINE_PACKED;
499   WCHAR      elfStyle[LF_FACESIZE] WINE_PACKED;
500   WCHAR      elfScript[LF_FACESIZE] WINE_PACKED;
501 } ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
502
503 DECL_WINELIB_TYPE_AW(ENUMLOGFONT)
504 DECL_WINELIB_TYPE_AW(LPENUMLOGFONT)
505 DECL_WINELIB_TYPE_AW(LPENUMLOGFONTEX)
506
507 /*
508  * The FONTSIGNATURE tells which Unicode ranges and which code pages
509  * have glyphs in a font.
510  *
511  * fsUsb  128-bit bitmap. The most significant bits are 10 (magic number).
512  *        The remaining 126 bits map the Unicode ISO 10646 subranges
513  *        for which the font provides glyphs.
514  *
515  * fsCsb  64-bit bitmap. The low 32 bits map the Windows codepages for
516  *        which the font provides glyphs. The high 32 bits are for 
517  *        non Windows codepages.
518  */
519 typedef struct
520 {
521   DWORD fsUsb[4];
522   DWORD fsCsb[2];
523 } FONTSIGNATURE,*LPFONTSIGNATURE;
524
525 typedef struct 
526 {
527   UINT  ciCharset; /* character set */
528   UINT  ciACP; /* ANSI code page */
529   FONTSIGNATURE fs;
530 } CHARSETINFO,*LPCHARSETINFO;
531
532 /* Flags for TranslateCharsetInfo */
533 #define TCI_SRCCHARSET    1
534 #define TCI_SRCCODEPAGE   2
535 #define TCI_SRCFONTSIG    3
536
537 /* Flags for ModifyWorldTransform */
538 #define MWT_IDENTITY      1
539 #define MWT_LEFTMULTIPLY  2
540 #define MWT_RIGHTMULTIPLY 3
541
542 /* Object Definitions for EnumObjects() */
543 #define OBJ_PEN             1
544 #define OBJ_BRUSH           2
545 #define OBJ_DC              3
546 #define OBJ_METADC          4
547 #define OBJ_PAL             5
548 #define OBJ_FONT            6
549 #define OBJ_BITMAP          7
550 #define OBJ_REGION          8
551 #define OBJ_METAFILE        9
552 #define OBJ_MEMDC           10
553 #define OBJ_EXTPEN          11
554 #define OBJ_ENHMETADC       12
555 #define OBJ_ENHMETAFILE     13
556
557  
558 typedef struct
559 {
560     FLOAT  eM11;
561     FLOAT  eM12;
562     FLOAT  eM21;
563     FLOAT  eM22;
564     FLOAT  eDx;
565     FLOAT  eDy;
566 } XFORM, *LPXFORM;
567
568 typedef struct 
569 {
570     INT16  txfHeight;
571     INT16  txfWidth;
572     INT16  txfEscapement;
573     INT16  txfOrientation;
574     INT16  txfWeight;
575     CHAR   txfItalic;
576     CHAR   txfUnderline;
577     CHAR   txfStrikeOut;
578     CHAR   txfOutPrecision;
579     CHAR   txfClipPrecision;
580     INT16  txfAccelerator WINE_PACKED;
581     INT16  txfOverhang WINE_PACKED;
582 } TEXTXFORM16, *LPTEXTXFORM16;
583
584 typedef struct
585 {
586     INT16 dfType;
587     INT16 dfPoints;
588     INT16 dfVertRes;
589     INT16 dfHorizRes;
590     INT16 dfAscent;
591     INT16 dfInternalLeading;
592     INT16 dfExternalLeading;
593     CHAR  dfItalic;
594     CHAR  dfUnderline;
595     CHAR  dfStrikeOut;
596     INT16 dfWeight;
597     BYTE  dfCharSet;
598     INT16 dfPixWidth;
599     INT16 dfPixHeight;
600     CHAR  dfPitchAndFamily;
601     INT16 dfAvgWidth;
602     INT16 dfMaxWidth;
603     CHAR  dfFirstChar;
604     CHAR  dfLastChar;
605     CHAR  dfDefaultChar;
606     CHAR  dfBreakChar;
607     INT16 dfWidthBytes;
608     LONG  dfDevice;
609     LONG  dfFace;
610     LONG  dfBitsPointer;
611     LONG  dfBitsOffset;
612     CHAR  dfReserved;
613     LONG  dfFlags;
614     INT16 dfAspace;
615     INT16 dfBspace;
616     INT16 dfCspace;
617     LONG  dfColorPointer;
618     LONG  dfReserved1[4];
619 } FONTINFO16, *LPFONTINFO16;
620
621   /* lfWeight values */
622 #define FW_DONTCARE         0
623 #define FW_THIN             100
624 #define FW_EXTRALIGHT       200
625 #define FW_ULTRALIGHT       200
626 #define FW_LIGHT            300
627 #define FW_NORMAL           400
628 #define FW_REGULAR          400
629 #define FW_MEDIUM           500
630 #define FW_SEMIBOLD         600
631 #define FW_DEMIBOLD         600
632 #define FW_BOLD             700
633 #define FW_EXTRABOLD        800
634 #define FW_ULTRABOLD        800
635 #define FW_HEAVY            900
636 #define FW_BLACK            900
637
638   /* lfCharSet values */
639 #define ANSI_CHARSET          (BYTE)0   /* CP1252, ansi-0, iso8859-{1,15} */
640 #define DEFAULT_CHARSET       (BYTE)1
641 #define SYMBOL_CHARSET        (BYTE)2
642 #define SHIFTJIS_CHARSET      (BYTE)128 /* CP932 */
643 #define HANGEUL_CHARSET       (BYTE)129 /* CP949, ksc5601.1987-0 */
644 #define HANGUL_CHARSET        HANGEUL_CHARSET
645 #define GB2312_CHARSET        (BYTE)134 /* CP936, gb2312.1980-0 */
646 #define CHINESEBIG5_CHARSET   (BYTE)136 /* CP950, big5.et-0 */
647 #define GREEK_CHARSET         (BYTE)161 /* CP1253 */
648 #define TURKISH_CHARSET       (BYTE)162 /* CP1254, -iso8859-9 */
649 #define HEBREW_CHARSET        (BYTE)177 /* CP1255, -iso8859-8 */
650 #define ARABIC_CHARSET        (BYTE)178 /* CP1256, -iso8859-6 */
651 #define BALTIC_CHARSET        (BYTE)186 /* CP1257, -iso8859-10 */
652 #define RUSSIAN_CHARSET       (BYTE)204 /* CP1251, -iso8859-5 */
653 #define EE_CHARSET            (BYTE)238 /* CP1250, -iso8859-2 */
654 #define EASTEUROPE_CHARSET    EE_CHARSET
655 #define THAI_CHARSET          (BYTE)222 /* CP874, iso8859-11, tis620 */
656 #define JOHAB_CHARSET         (BYTE)130 /* korean (johab) CP1361 */
657 #define OEM_CHARSET           (BYTE)255
658 /* I don't know if the values of *_CHARSET macros are defined in Windows
659  * or if we can choose them as we want. -- srtxg
660  */
661 #define VISCII_CHARSET        (BYTE)240 /* viscii1.1-1 */
662 #define TCVN_CHARSET          (BYTE)241 /* tcvn-0 */
663 #define KOI8_CHARSET          (BYTE)242 /* koi8-{r,u,ru} */
664 #define ISO3_CHARSET          (BYTE)243 /* iso8859-3 */
665 #define ISO4_CHARSET          (BYTE)244 /* iso8859-4 */
666
667   /* lfOutPrecision values */
668 #define OUT_DEFAULT_PRECIS      0
669 #define OUT_STRING_PRECIS       1
670 #define OUT_CHARACTER_PRECIS    2
671 #define OUT_STROKE_PRECIS       3
672 #define OUT_TT_PRECIS           4
673 #define OUT_DEVICE_PRECIS       5
674 #define OUT_RASTER_PRECIS       6
675 #define OUT_TT_ONLY_PRECIS      7
676
677   /* lfClipPrecision values */
678 #define CLIP_DEFAULT_PRECIS     0x00
679 #define CLIP_CHARACTER_PRECIS   0x01
680 #define CLIP_STROKE_PRECIS      0x02
681 #define CLIP_MASK               0x0F
682 #define CLIP_LH_ANGLES          0x10
683 #define CLIP_TT_ALWAYS          0x20
684 #define CLIP_EMBEDDED           0x80
685
686   /* lfQuality values */
687 #define DEFAULT_QUALITY     0
688 #define DRAFT_QUALITY       1
689 #define PROOF_QUALITY       2
690
691   /* lfPitchAndFamily pitch values */
692 #define DEFAULT_PITCH       0x00
693 #define FIXED_PITCH         0x01
694 #define VARIABLE_PITCH      0x02
695 #define FF_DONTCARE         0x00
696 #define FF_ROMAN            0x10
697 #define FF_SWISS            0x20
698 #define FF_MODERN           0x30
699 #define FF_SCRIPT           0x40
700 #define FF_DECORATIVE       0x50
701
702 typedef struct
703 {
704     INT16     tmHeight;
705     INT16     tmAscent;
706     INT16     tmDescent;
707     INT16     tmInternalLeading;
708     INT16     tmExternalLeading;
709     INT16     tmAveCharWidth;
710     INT16     tmMaxCharWidth;
711     INT16     tmWeight;
712     BYTE      tmItalic;
713     BYTE      tmUnderlined;
714     BYTE      tmStruckOut;
715     BYTE      tmFirstChar;
716     BYTE      tmLastChar;
717     BYTE      tmDefaultChar;
718     BYTE      tmBreakChar;
719     BYTE      tmPitchAndFamily;
720     BYTE      tmCharSet;
721     INT16     tmOverhang WINE_PACKED;
722     INT16     tmDigitizedAspectX WINE_PACKED;
723     INT16     tmDigitizedAspectY WINE_PACKED;
724 } TEXTMETRIC16, *LPTEXTMETRIC16;
725
726 typedef struct
727 {
728     INT     tmHeight;
729     INT     tmAscent;
730     INT     tmDescent;
731     INT     tmInternalLeading;
732     INT     tmExternalLeading;
733     INT     tmAveCharWidth;
734     INT     tmMaxCharWidth;
735     INT     tmWeight;
736     INT     tmOverhang;
737     INT     tmDigitizedAspectX;
738     INT     tmDigitizedAspectY;
739     BYTE      tmFirstChar;
740     BYTE      tmLastChar;
741     BYTE      tmDefaultChar;
742     BYTE      tmBreakChar;
743     BYTE      tmItalic;
744     BYTE      tmUnderlined;
745     BYTE      tmStruckOut;
746     BYTE      tmPitchAndFamily;
747     BYTE      tmCharSet;
748 } TEXTMETRICA, *LPTEXTMETRICA;
749
750 typedef struct
751 {
752     INT     tmHeight;
753     INT     tmAscent;
754     INT     tmDescent;
755     INT     tmInternalLeading;
756     INT     tmExternalLeading;
757     INT     tmAveCharWidth;
758     INT     tmMaxCharWidth;
759     INT     tmWeight;
760     INT     tmOverhang;
761     INT     tmDigitizedAspectX;
762     INT     tmDigitizedAspectY;
763     WCHAR     tmFirstChar;
764     WCHAR     tmLastChar;
765     WCHAR     tmDefaultChar;
766     WCHAR     tmBreakChar;
767     BYTE      tmItalic;
768     BYTE      tmUnderlined;
769     BYTE      tmStruckOut;
770     BYTE      tmPitchAndFamily;
771     BYTE      tmCharSet;
772 } TEXTMETRICW, *LPTEXTMETRICW;
773
774 DECL_WINELIB_TYPE_AW(TEXTMETRIC)
775 DECL_WINELIB_TYPE_AW(LPTEXTMETRIC)
776
777
778 typedef struct tagPANOSE
779 {
780     BYTE bFamilyType;
781     BYTE bSerifStyle;
782     BYTE bWeight;
783     BYTE bProportion;
784     BYTE bContrast;
785     BYTE bStrokeVariation;
786     BYTE bArmStyle;
787     BYTE bLetterform;
788     BYTE bMidline;
789     BYTE bXHeight;
790 } PANOSE;
791
792
793 typedef struct _OUTLINETEXTMETRICA
794 {
795     UINT          otmSize;
796     TEXTMETRICA   otmTextMetrics;
797     BYTE            otmFilter;
798     PANOSE          otmPanoseNumber;
799     UINT          otmfsSelection;
800     UINT          otmfsType;
801     INT           otmsCharSlopeRise;
802     INT           otmsCharSlopeRun;
803     INT           otmItalicAngle;
804     UINT          otmEMSquare;
805     INT           otmAscent;
806     INT           otmDescent;
807     UINT          otmLineGap;
808     UINT          otmsCapEmHeight;
809     UINT          otmsXHeight;
810     RECT          otmrcFontBox;
811     INT           otmMacAscent;
812     INT           otmMacDescent;
813     UINT          otmMacLineGap;
814     UINT          otmusMinimumPPEM;
815     POINT         otmptSubscriptSize;
816     POINT         otmptSubscriptOffset;
817     POINT         otmptSuperscriptSize;
818     POINT         otmptSuperscriptOffset;
819     UINT          otmsStrikeoutSize;
820     INT           otmsStrikeoutPosition;
821     INT           otmsUnderscoreSize;
822     INT           otmsUnderscorePosition;
823     LPSTR           otmpFamilyName;
824     LPSTR           otmpFaceName;
825     LPSTR           otmpStyleName;
826     LPSTR           otmpFullName;
827 } OUTLINETEXTMETRICA, *LPOUTLINETEXTMETRICA;
828
829 typedef struct _OUTLINETEXTMETRICW
830 {
831     UINT          otmSize;
832     TEXTMETRICW   otmTextMetrics;
833     BYTE            otmFilter;
834     PANOSE          otmPanoseNumber;
835     UINT          otmfsSelection;
836     UINT          otmfsType;
837     INT           otmsCharSlopeRise;
838     INT           otmsCharSlopeRun;
839     INT           otmItalicAngle;
840     UINT          otmEMSquare;
841     INT           otmAscent;
842     INT           otmDescent;
843     UINT          otmLineGap;
844     UINT          otmsCapEmHeight;
845     UINT          otmsXHeight;
846     RECT          otmrcFontBox;
847     INT           otmMacAscent;
848     INT           otmMacDescent;
849     UINT          otmMacLineGap;
850     UINT          otmusMinimumPPEM;
851     POINT         otmptSubscriptSize;
852     POINT         otmptSubscriptOffset;
853     POINT         otmptSuperscriptSize;
854     POINT         otmptSuperscriptOffset;
855     UINT          otmsStrikeoutSize;
856     INT           otmsStrikeoutPosition;
857     INT           otmsUnderscoreSize;
858     INT           otmsUnderscorePosition;
859     LPSTR           otmpFamilyName;
860     LPSTR           otmpFaceName;
861     LPSTR           otmpStyleName;
862     LPSTR           otmpFullName;
863 } OUTLINETEXTMETRICW, *LPOUTLINETEXTMETRICW;
864
865 typedef struct _OUTLINETEXTMETRIC16
866 {
867     UINT16          otmSize;
868     TEXTMETRIC16    otmTextMetrics;
869     BYTE            otmFilter;
870     PANOSE          otmPanoseNumber;
871     UINT16          otmfsSelection;
872     UINT16          otmfsType;
873     INT16           otmsCharSlopeRise;
874     INT16           otmsCharSlopeRun;
875     INT16           otmItalicAngle;
876     UINT16          otmEMSquare;
877     INT16           otmAscent;
878     INT16           otmDescent;
879     UINT16          otmLineGap;
880     UINT16          otmsCapEmHeight;
881     UINT16          otmsXHeight;
882     RECT16          otmrcFontBox;
883     INT16           otmMacAscent;
884     INT16           otmMacDescent;
885     UINT16          otmMacLineGap;
886     UINT16          otmusMinimumPPEM;
887     POINT16         otmptSubscriptSize;
888     POINT16         otmptSubscriptOffset;
889     POINT16         otmptSuperscriptSize;
890     POINT16         otmptSuperscriptOffset;
891     UINT16          otmsStrikeoutSize;
892     INT16           otmsStrikeoutPosition;
893     INT16           otmsUnderscoreSize;
894     INT           otmsUnderscorePosition;
895     LPSTR           otmpFamilyName;
896     LPSTR           otmpFaceName;
897     LPSTR           otmpStyleName;
898     LPSTR           otmpFullName;
899 } OUTLINETEXTMETRIC16,*LPOUTLINETEXTMETRIC16;
900
901 DECL_WINELIB_TYPE_AW(OUTLINETEXTMETRIC)
902 DECL_WINELIB_TYPE_AW(LPOUTLINETEXTMETRIC)
903
904
905
906 /* ntmFlags field flags */
907 #define NTM_REGULAR     0x00000040L
908 #define NTM_BOLD        0x00000020L
909 #define NTM_ITALIC      0x00000001L
910
911 typedef struct
912 {
913     INT16     tmHeight;
914     INT16     tmAscent;
915     INT16     tmDescent;
916     INT16     tmInternalLeading;
917     INT16     tmExternalLeading;
918     INT16     tmAveCharWidth;
919     INT16     tmMaxCharWidth;
920     INT16     tmWeight;
921     BYTE      tmItalic;
922     BYTE      tmUnderlined;
923     BYTE      tmStruckOut;
924     BYTE      tmFirstChar;
925     BYTE      tmLastChar;
926     BYTE      tmDefaultChar;
927     BYTE      tmBreakChar;
928     BYTE      tmPitchAndFamily;
929     BYTE      tmCharSet;
930     INT16     tmOverhang WINE_PACKED;
931     INT16     tmDigitizedAspectX WINE_PACKED;
932     INT16     tmDigitizedAspectY WINE_PACKED;
933     DWORD     ntmFlags;
934     UINT16    ntmSizeEM;
935     UINT16    ntmCellHeight;
936     UINT16    ntmAvgWidth;
937 } NEWTEXTMETRIC16,*LPNEWTEXTMETRIC16;
938
939 typedef struct
940 {
941     INT     tmHeight;
942     INT     tmAscent;
943     INT     tmDescent;
944     INT     tmInternalLeading;
945     INT     tmExternalLeading;
946     INT     tmAveCharWidth;
947     INT     tmMaxCharWidth;
948     INT     tmWeight;
949     INT     tmOverhang;
950     INT     tmDigitizedAspectX;
951     INT     tmDigitizedAspectY;
952     BYTE      tmFirstChar;
953     BYTE      tmLastChar;
954     BYTE      tmDefaultChar;
955     BYTE      tmBreakChar;
956     BYTE      tmItalic;
957     BYTE      tmUnderlined;
958     BYTE      tmStruckOut;
959     BYTE      tmPitchAndFamily;
960     BYTE      tmCharSet;
961     DWORD     ntmFlags;
962     UINT    ntmSizeEM;
963     UINT    ntmCellHeight;
964     UINT    ntmAvgWidth;
965 } NEWTEXTMETRICA, *LPNEWTEXTMETRICA;
966
967 typedef struct
968 {
969     INT     tmHeight;
970     INT     tmAscent;
971     INT     tmDescent;
972     INT     tmInternalLeading;
973     INT     tmExternalLeading;
974     INT     tmAveCharWidth;
975     INT     tmMaxCharWidth;
976     INT     tmWeight;
977     INT     tmOverhang;
978     INT     tmDigitizedAspectX;
979     INT     tmDigitizedAspectY;
980     WCHAR     tmFirstChar;
981     WCHAR     tmLastChar;
982     WCHAR     tmDefaultChar;
983     WCHAR     tmBreakChar;
984     BYTE      tmItalic;
985     BYTE      tmUnderlined;
986     BYTE      tmStruckOut;
987     BYTE      tmPitchAndFamily;
988     BYTE      tmCharSet;
989     DWORD     ntmFlags;
990     UINT    ntmSizeEM;
991     UINT    ntmCellHeight;
992     UINT    ntmAvgWidth;
993 } NEWTEXTMETRICW, *LPNEWTEXTMETRICW;
994
995 DECL_WINELIB_TYPE_AW(NEWTEXTMETRIC)
996 DECL_WINELIB_TYPE_AW(LPNEWTEXTMETRIC)
997
998 typedef struct
999 {
1000     NEWTEXTMETRIC16     ntmetm;
1001     FONTSIGNATURE       ntmeFontSignature;
1002 } NEWTEXTMETRICEX16,*LPNEWTEXTMETRICEX16;
1003
1004 typedef struct
1005 {
1006     NEWTEXTMETRICA      ntmetm;
1007     FONTSIGNATURE       ntmeFontSignature;
1008 } NEWTEXTMETRICEXA,*LPNEWTEXTMETRICEXA;
1009
1010 typedef struct
1011 {
1012     NEWTEXTMETRICW      ntmetm;
1013     FONTSIGNATURE       ntmeFontSignature;
1014 } NEWTEXTMETRICEXW,*LPNEWTEXTMETRICEXW;
1015
1016 DECL_WINELIB_TYPE_AW(NEWTEXTMETRICEX)
1017 DECL_WINELIB_TYPE_AW(LPNEWTEXTMETRICEX)
1018
1019
1020 typedef INT16 (CALLBACK *FONTENUMPROC16)(SEGPTR,SEGPTR,UINT16,LPARAM);
1021 typedef INT (CALLBACK *FONTENUMPROCA)(LPENUMLOGFONTA,LPNEWTEXTMETRICA,
1022                                           UINT,LPARAM);
1023 typedef INT (CALLBACK *FONTENUMPROCW)(LPENUMLOGFONTW,LPNEWTEXTMETRICW,
1024                                           UINT,LPARAM);
1025 DECL_WINELIB_TYPE_AW(FONTENUMPROC)
1026
1027 typedef INT16 (CALLBACK *FONTENUMPROCEX16)(SEGPTR,SEGPTR,UINT16,LPARAM);
1028 typedef INT (CALLBACK *FONTENUMPROCEXA)(LPENUMLOGFONTEXA,LPNEWTEXTMETRICEXA,UINT,LPARAM);
1029 typedef INT (CALLBACK *FONTENUMPROCEXW)(LPENUMLOGFONTEXW,LPNEWTEXTMETRICEXW,UINT,LPARAM);
1030 DECL_WINELIB_TYPE_AW(FONTENUMPROCEX)
1031
1032   /* tmPitchAndFamily bits */
1033 #define TMPF_FIXED_PITCH    1           /* means variable pitch */
1034 #define TMPF_VECTOR         2
1035 #define TMPF_TRUETYPE       4
1036 #define TMPF_DEVICE         8
1037
1038   /* Text alignment */
1039 #define TA_NOUPDATECP       0x00
1040 #define TA_UPDATECP         0x01
1041 #define TA_LEFT             0x00
1042 #define TA_RIGHT            0x02
1043 #define TA_CENTER           0x06
1044 #define TA_TOP              0x00
1045 #define TA_BOTTOM           0x08
1046 #define TA_BASELINE         0x18
1047
1048   /* ExtTextOut() parameters */
1049 #define ETO_GRAYED          0x01
1050 #define ETO_OPAQUE          0x02
1051 #define ETO_CLIPPED         0x04
1052
1053 typedef struct
1054 {
1055     UINT16      gmBlackBoxX;
1056     UINT16      gmBlackBoxY;
1057     POINT16     gmptGlyphOrigin;
1058     INT16       gmCellIncX;
1059     INT16       gmCellIncY;
1060 } GLYPHMETRICS16, *LPGLYPHMETRICS16;
1061
1062 typedef struct
1063 {
1064     UINT        gmBlackBoxX;
1065     UINT        gmBlackBoxY;
1066     POINT       gmptGlyphOrigin;
1067     INT16       gmCellIncX;
1068     INT16       gmCellIncY;
1069 } GLYPHMETRICS, *LPGLYPHMETRICS;
1070
1071
1072 #define GGO_METRICS         0
1073 #define GGO_BITMAP          1
1074 #define GGO_NATIVE          2
1075
1076 typedef struct
1077 {
1078     UINT16  fract;
1079     INT16   value;
1080 } FIXED;
1081
1082 typedef struct
1083 {
1084      FIXED  eM11;
1085      FIXED  eM12;
1086      FIXED  eM21;
1087      FIXED  eM22;
1088 } MAT2, *LPMAT2;
1089
1090   /* for GetCharABCWidths() */
1091 typedef struct
1092 {
1093     INT16   abcA;
1094     UINT16  abcB;
1095     INT16   abcC;
1096 } ABC16, *LPABC16;
1097
1098 typedef struct
1099 {
1100     INT   abcA;
1101     UINT  abcB;
1102     INT   abcC;
1103 } ABC, *LPABC;
1104
1105
1106   /* for GetCharacterPlacement () */
1107 typedef struct tagGCP_RESULTSA
1108 {
1109     DWORD  lStructSize;
1110     LPSTR  lpOutString;
1111     UINT *lpOrder;
1112     INT  *lpDx;
1113     INT  *lpCaretPos;
1114     LPSTR  lpClass;
1115     UINT *lpGlyphs;
1116     UINT nGlyphs;
1117     UINT nMaxFit;
1118 } GCP_RESULTSA;
1119
1120 typedef struct tagGCP_RESULTSW
1121 {
1122     DWORD  lStructSize;
1123     LPWSTR lpOutString;
1124     UINT *lpOrder;
1125     INT  *lpDx;
1126     INT  *lpCaretPos;
1127     LPWSTR lpClass;
1128     UINT *lpGlyphs;
1129     UINT nGlyphs;
1130     UINT nMaxFit;
1131 } GCP_RESULTSW;
1132
1133 DECL_WINELIB_TYPE_AW(GCP_RESULTS)
1134
1135   /* Rasterizer status */
1136 typedef struct
1137 {
1138     INT16 nSize;
1139     INT16 wFlags;
1140     INT16 nLanguageID;
1141 } RASTERIZER_STATUS, *LPRASTERIZER_STATUS;
1142
1143 #define TT_AVAILABLE        0x0001
1144 #define TT_ENABLED          0x0002
1145
1146 /* Get/SetSystemPaletteUse() values */
1147 #define SYSPAL_STATIC   1
1148 #define SYSPAL_NOSTATIC 2
1149
1150 typedef struct tagPALETTEENTRY
1151 {
1152         BYTE peRed, peGreen, peBlue, peFlags;
1153 } PALETTEENTRY, *LPPALETTEENTRY;
1154
1155 /* Logical palette entry flags */
1156 #define PC_RESERVED     0x01
1157 #define PC_EXPLICIT     0x02
1158 #define PC_NOCOLLAPSE   0x04
1159
1160 typedef struct
1161
1162     WORD           palVersion;
1163     WORD           palNumEntries;
1164     PALETTEENTRY   palPalEntry[1] WINE_PACKED;
1165 } LOGPALETTE, *LPLOGPALETTE;
1166
1167   /* Pens */
1168
1169 typedef struct
1170 {
1171     UINT16   lopnStyle; 
1172     POINT16  lopnWidth WINE_PACKED;
1173     COLORREF lopnColor WINE_PACKED;
1174 } LOGPEN16, *LPLOGPEN16;
1175
1176 typedef struct
1177 {
1178     UINT   lopnStyle; 
1179     POINT  lopnWidth WINE_PACKED;
1180     COLORREF lopnColor WINE_PACKED;
1181 } LOGPEN, *LPLOGPEN;
1182
1183
1184 typedef struct tagEXTLOGPEN
1185 {
1186         DWORD elpPenStyle;
1187         DWORD elpWidth;
1188         DWORD elpBrushStyle;
1189         DWORD elpColor;
1190         DWORD elpNumEntries;
1191         DWORD elpStyleEntry[1];
1192 } EXTLOGPEN, *PEXTLOGPEN, *NPEXTLOGPEN, *LPEXTLOGPEN;
1193
1194 #define PS_SOLID         0x00000000
1195 #define PS_DASH          0x00000001
1196 #define PS_DOT           0x00000002
1197 #define PS_DASHDOT       0x00000003
1198 #define PS_DASHDOTDOT    0x00000004
1199 #define PS_NULL          0x00000005
1200 #define PS_INSIDEFRAME   0x00000006
1201 #define PS_USERSTYLE     0x00000007
1202 #define PS_ALTERNATE     0x00000008
1203 #define PS_STYLE_MASK    0x0000000f
1204
1205 #define PS_ENDCAP_ROUND  0x00000000
1206 #define PS_ENDCAP_SQUARE 0x00000100
1207 #define PS_ENDCAP_FLAT   0x00000200
1208 #define PS_ENDCAP_MASK   0x00000f00
1209
1210 #define PS_JOIN_ROUND    0x00000000
1211 #define PS_JOIN_BEVEL    0x00001000
1212 #define PS_JOIN_MITER    0x00002000
1213 #define PS_JOIN_MASK     0x0000f000
1214
1215 #define PS_COSMETIC      0x00000000
1216 #define PS_GEOMETRIC     0x00010000
1217 #define PS_TYPE_MASK     0x000f0000
1218
1219   /* Regions */
1220
1221 #define ERROR             0
1222 #define NULLREGION        1
1223 #define SIMPLEREGION      2
1224 #define COMPLEXREGION     3
1225
1226 #define RGN_AND           1
1227 #define RGN_OR            2
1228 #define RGN_XOR           3
1229 #define RGN_DIFF          4
1230 #define RGN_COPY          5
1231
1232   /* Device contexts */
1233
1234 /* GetDCEx flags */
1235 #define DCX_WINDOW           0x00000001
1236 #define DCX_CACHE            0x00000002
1237 #define DCX_CLIPCHILDREN     0x00000008
1238 #define DCX_CLIPSIBLINGS     0x00000010
1239 #define DCX_PARENTCLIP       0x00000020
1240 #define DCX_EXCLUDERGN       0x00000040
1241 #define DCX_INTERSECTRGN     0x00000080
1242 #define DCX_LOCKWINDOWUPDATE 0x00000400
1243 #define DCX_USESTYLE         0x00010000
1244
1245   /* Polygon modes */
1246 #define ALTERNATE         1
1247 #define WINDING           2
1248
1249   /* Background modes */
1250 #ifdef TRANSPARENT  /*Apparently some broken svr4 includes define TRANSPARENT*/
1251 #undef TRANSPARENT
1252 #endif
1253 #define TRANSPARENT       1
1254 #define OPAQUE            2
1255
1256
1257   /* Graphics Modes */
1258 #define GM_COMPATIBLE     1
1259 #define GM_ADVANCED       2
1260 #define GM_LAST           2
1261
1262   /* Arc direction modes */
1263 #define AD_COUNTERCLOCKWISE 1
1264 #define AD_CLOCKWISE        2
1265
1266   /* Map modes */
1267 #define MM_TEXT           1
1268 #define MM_LOMETRIC       2
1269 #define MM_HIMETRIC       3
1270 #define MM_LOENGLISH      4
1271 #define MM_HIENGLISH      5
1272 #define MM_TWIPS          6
1273 #define MM_ISOTROPIC      7
1274 #define MM_ANISOTROPIC    8
1275
1276   /* Coordinate modes */
1277 #define ABSOLUTE          1
1278 #define RELATIVE          2
1279
1280   /* Flood fill modes */
1281 #define FLOODFILLBORDER   0
1282 #define FLOODFILLSURFACE  1
1283
1284   /* Device parameters for GetDeviceCaps() */
1285 #define DRIVERVERSION     0
1286 #define TECHNOLOGY        2
1287 #define HORZSIZE          4
1288 #define VERTSIZE          6
1289 #define HORZRES           8
1290 #define VERTRES           10
1291 #define BITSPIXEL         12
1292 #define PLANES            14
1293 #define NUMBRUSHES        16
1294 #define NUMPENS           18
1295 #define NUMMARKERS        20
1296 #define NUMFONTS          22
1297 #define NUMCOLORS         24
1298 #define PDEVICESIZE       26
1299 #define CURVECAPS         28
1300 #define LINECAPS          30
1301 #define POLYGONALCAPS     32
1302 #define TEXTCAPS          34
1303 #define CLIPCAPS          36
1304 #define RASTERCAPS        38
1305 #define ASPECTX           40
1306 #define ASPECTY           42
1307 #define ASPECTXY          44
1308 #define LOGPIXELSX        88
1309 #define LOGPIXELSY        90
1310 #define SIZEPALETTE       104
1311 #define NUMRESERVED       106
1312 #define COLORRES          108
1313
1314 /* TECHNOLOGY */
1315 #define DT_PLOTTER        0
1316 #define DT_RASDISPLAY     1
1317 #define DT_RASPRINTER     2
1318 #define DT_RASCAMERA      3
1319 #define DT_CHARSTREAM     4
1320 #define DT_METAFILE       5
1321 #define DT_DISPFILE       6
1322
1323 /* CURVECAPS */
1324 #define CC_NONE           0x0000
1325 #define CC_CIRCLES        0x0001
1326 #define CC_PIE            0x0002
1327 #define CC_CHORD          0x0004
1328 #define CC_ELLIPSES       0x0008
1329 #define CC_WIDE           0x0010
1330 #define CC_STYLED         0x0020
1331 #define CC_WIDESTYLED     0x0040
1332 #define CC_INTERIORS      0x0080
1333 #define CC_ROUNDRECT      0x0100
1334
1335 /* LINECAPS */
1336 #define LC_NONE           0x0000
1337 #define LC_POLYLINE       0x0002
1338 #define LC_MARKER         0x0004
1339 #define LC_POLYMARKER     0x0008
1340 #define LC_WIDE           0x0010
1341 #define LC_STYLED         0x0020
1342 #define LC_WIDESTYLED     0x0040
1343 #define LC_INTERIORS      0x0080
1344
1345 /* POLYGONALCAPS */
1346 #define PC_NONE           0x0000
1347 #define PC_POLYGON        0x0001
1348 #define PC_RECTANGLE      0x0002
1349 #define PC_WINDPOLYGON    0x0004
1350 #define PC_SCANLINE       0x0008
1351 #define PC_WIDE           0x0010
1352 #define PC_STYLED         0x0020
1353 #define PC_WIDESTYLED     0x0040
1354 #define PC_INTERIORS      0x0080
1355
1356 /* TEXTCAPS */
1357 #define TC_OP_CHARACTER   0x0001
1358 #define TC_OP_STROKE      0x0002
1359 #define TC_CP_STROKE      0x0004
1360 #define TC_CR_90          0x0008
1361 #define TC_CR_ANY         0x0010
1362 #define TC_SF_X_YINDEP    0x0020
1363 #define TC_SA_DOUBLE      0x0040
1364 #define TC_SA_INTEGER     0x0080
1365 #define TC_SA_CONTIN      0x0100
1366 #define TC_EA_DOUBLE      0x0200
1367 #define TC_IA_ABLE        0x0400
1368 #define TC_UA_ABLE        0x0800
1369 #define TC_SO_ABLE        0x1000
1370 #define TC_RA_ABLE        0x2000
1371 #define TC_VA_ABLE        0x4000
1372 #define TC_RESERVED       0x8000
1373
1374 /* CLIPCAPS */
1375 #define CP_NONE           0x0000
1376 #define CP_RECTANGLE      0x0001
1377 #define CP_REGION         0x0002
1378
1379 /* RASTERCAPS */
1380 #define RC_NONE           0x0000
1381 #define RC_BITBLT         0x0001
1382 #define RC_BANDING        0x0002
1383 #define RC_SCALING        0x0004
1384 #define RC_BITMAP64       0x0008
1385 #define RC_GDI20_OUTPUT   0x0010
1386 #define RC_GDI20_STATE    0x0020
1387 #define RC_SAVEBITMAP     0x0040
1388 #define RC_DI_BITMAP      0x0080
1389 #define RC_PALETTE        0x0100
1390 #define RC_DIBTODEV       0x0200
1391 #define RC_BIGFONT        0x0400
1392 #define RC_STRETCHBLT     0x0800
1393 #define RC_FLOODFILL      0x1000
1394 #define RC_STRETCHDIB     0x2000
1395 #define RC_OP_DX_OUTPUT   0x4000
1396 #define RC_DEVBITS        0x8000
1397
1398   /* GetSystemMetrics() codes */
1399 #define SM_CXSCREEN            0
1400 #define SM_CYSCREEN            1
1401 #define SM_CXVSCROLL           2
1402 #define SM_CYHSCROLL           3
1403 #define SM_CYCAPTION           4
1404 #define SM_CXBORDER            5
1405 #define SM_CYBORDER            6
1406 #define SM_CXDLGFRAME          7
1407 #define SM_CYDLGFRAME          8
1408 #define SM_CYVTHUMB            9
1409 #define SM_CXHTHUMB           10
1410 #define SM_CXICON             11
1411 #define SM_CYICON             12
1412 #define SM_CXCURSOR           13
1413 #define SM_CYCURSOR           14
1414 #define SM_CYMENU             15
1415 #define SM_CXFULLSCREEN       16
1416 #define SM_CYFULLSCREEN       17
1417 #define SM_CYKANJIWINDOW      18
1418 #define SM_MOUSEPRESENT       19
1419 #define SM_CYVSCROLL          20
1420 #define SM_CXHSCROLL          21
1421 #define SM_DEBUG              22
1422 #define SM_SWAPBUTTON         23
1423 #define SM_RESERVED1          24
1424 #define SM_RESERVED2          25
1425 #define SM_RESERVED3          26
1426 #define SM_RESERVED4          27
1427 #define SM_CXMIN              28
1428 #define SM_CYMIN              29
1429 #define SM_CXSIZE             30
1430 #define SM_CYSIZE             31
1431 #define SM_CXFRAME            32
1432 #define SM_CYFRAME            33
1433 #define SM_CXMINTRACK         34
1434 #define SM_CYMINTRACK         35
1435 #define SM_CXDOUBLECLK        36
1436 #define SM_CYDOUBLECLK        37
1437 #define SM_CXICONSPACING      38
1438 #define SM_CYICONSPACING      39
1439 #define SM_MENUDROPALIGNMENT  40
1440 #define SM_PENWINDOWS         41
1441 #define SM_DBCSENABLED        42
1442 #define SM_CMOUSEBUTTONS      43
1443 #define SM_CXFIXEDFRAME       SM_CXDLGFRAME
1444 #define SM_CYFIXEDFRAME       SM_CYDLGFRAME
1445 #define SM_CXSIZEFRAME        SM_CXFRAME
1446 #define SM_CYSIZEFRAME        SM_CYFRAME
1447 #define SM_SECURE             44
1448 #define SM_CXEDGE             45
1449 #define SM_CYEDGE             46
1450 #define SM_CXMINSPACING       47
1451 #define SM_CYMINSPACING       48
1452 #define SM_CXSMICON           49
1453 #define SM_CYSMICON           50
1454 #define SM_CYSMCAPTION        51
1455 #define SM_CXSMSIZE           52
1456 #define SM_CYSMSIZE           53
1457 #define SM_CXMENUSIZE         54
1458 #define SM_CYMENUSIZE         55
1459 #define SM_ARRANGE            56
1460 #define SM_CXMINIMIZED        57
1461 #define SM_CYMINIMIZED        58
1462 #define SM_CXMAXTRACK         59
1463 #define SM_CYMAXTRACK         60
1464 #define SM_CXMAXIMIZED        61
1465 #define SM_CYMAXIMIZED        62
1466 #define SM_NETWORK            63
1467 #define SM_CLEANBOOT          67
1468 #define SM_CXDRAG             68
1469 #define SM_CYDRAG             69
1470 #define SM_SHOWSOUNDS         70
1471 #define SM_CXMENUCHECK        71
1472 #define SM_CYMENUCHECK        72
1473 #define SM_SLOWMACHINE        73
1474 #define SM_MIDEASTENABLED     74
1475 #define SM_MOUSEWHEELPRESENT  75
1476 #define SM_XVIRTUALSCREEN     76
1477 #define SM_YVIRTUALSCREEN     77
1478 #define SM_CXVIRTUALSCREEN    78
1479 #define SM_CYVIRTUALSCREEN    79
1480 #define SM_CMONITORS          80
1481 #define SM_SAMEDISPLAYFORMAT  81
1482 #define SM_CMETRICS           83
1483
1484
1485   /* Device-independent bitmaps */
1486
1487 typedef struct { BYTE rgbBlue, rgbGreen, rgbRed, rgbReserved; } RGBQUAD;
1488 typedef struct { BYTE rgbtBlue, rgbtGreen, rgbtRed; } RGBTRIPLE;
1489
1490 typedef struct
1491 {
1492     UINT16  bfType;
1493     DWORD   bfSize WINE_PACKED;
1494     UINT16  bfReserved1 WINE_PACKED;
1495     UINT16  bfReserved2 WINE_PACKED;
1496     DWORD   bfOffBits WINE_PACKED;
1497 } BITMAPFILEHEADER;
1498
1499 typedef struct
1500 {
1501     DWORD       biSize;
1502     LONG        biWidth;
1503     LONG        biHeight;
1504     WORD        biPlanes;
1505     WORD        biBitCount;
1506     DWORD       biCompression;
1507     DWORD       biSizeImage;
1508     LONG        biXPelsPerMeter;
1509     LONG        biYPelsPerMeter;
1510     DWORD       biClrUsed;
1511     DWORD       biClrImportant;
1512 } BITMAPINFOHEADER, *LPBITMAPINFOHEADER;
1513
1514   /* biCompression */
1515 #define BI_RGB           0
1516 #define BI_RLE8          1
1517 #define BI_RLE4          2
1518
1519 typedef struct {
1520         BITMAPINFOHEADER bmiHeader;
1521         RGBQUAD bmiColors[1];
1522 } BITMAPINFO;
1523 typedef BITMAPINFO *LPBITMAPINFO;
1524 typedef BITMAPINFO *NPBITMAPINFO;
1525 typedef BITMAPINFO *PBITMAPINFO;
1526
1527 typedef struct
1528 {
1529     DWORD   bcSize;
1530     UINT16  bcWidth;
1531     UINT16  bcHeight;
1532     UINT16  bcPlanes;
1533     UINT16  bcBitCount;
1534 } BITMAPCOREHEADER;
1535
1536 typedef struct
1537 {
1538     BITMAPCOREHEADER bmciHeader;
1539     RGBTRIPLE        bmciColors[1];
1540 } BITMAPCOREINFO, *LPBITMAPCOREINFO;
1541
1542 #define DIB_RGB_COLORS   0
1543 #define DIB_PAL_COLORS   1
1544 #define CBM_INIT         4
1545
1546 typedef struct 
1547 {
1548         BITMAP          dsBm;
1549         BITMAPINFOHEADER        dsBmih;
1550         DWORD                   dsBitfields[3];
1551         HANDLE          dshSection;
1552         DWORD                   dsOffset;
1553 } DIBSECTION,*LPDIBSECTION;
1554
1555   /* Stock GDI objects for GetStockObject() */
1556
1557 #define WHITE_BRUSH         0
1558 #define LTGRAY_BRUSH        1
1559 #define GRAY_BRUSH          2
1560 #define DKGRAY_BRUSH        3
1561 #define BLACK_BRUSH         4
1562 #define NULL_BRUSH          5
1563 #define HOLLOW_BRUSH        5
1564 #define WHITE_PEN           6
1565 #define BLACK_PEN           7
1566 #define NULL_PEN            8
1567 #define OEM_FIXED_FONT      10
1568 #define ANSI_FIXED_FONT     11
1569 #define ANSI_VAR_FONT       12
1570 #define SYSTEM_FONT         13
1571 #define DEVICE_DEFAULT_FONT 14
1572 #define DEFAULT_PALETTE     15
1573 #define SYSTEM_FIXED_FONT   16
1574 #define DEFAULT_GUI_FONT    17
1575
1576 #define STOCK_LAST          17
1577
1578 /* Metafile header structure */
1579 typedef struct
1580 {
1581     WORD       mtType;
1582     WORD       mtHeaderSize;
1583     WORD       mtVersion;
1584     DWORD      mtSize WINE_PACKED;
1585     WORD       mtNoObjects;
1586     DWORD      mtMaxRecord WINE_PACKED;
1587     WORD       mtNoParameters;
1588 } METAHEADER;
1589
1590 /* Metafile typical record structure */
1591 typedef struct
1592 {
1593     DWORD      rdSize;
1594     WORD       rdFunction;
1595     WORD       rdParm[1];
1596 } METARECORD;
1597 typedef METARECORD *PMETARECORD;
1598 typedef METARECORD *LPMETARECORD;
1599
1600 /* Handle table structure */
1601
1602 typedef struct
1603 {
1604     HGDIOBJ16 objectHandle[1];
1605 } HANDLETABLE16, *LPHANDLETABLE16;
1606
1607 typedef struct
1608 {
1609     HGDIOBJ objectHandle[1];
1610 } HANDLETABLE, *LPHANDLETABLE;
1611
1612
1613 /* Clipboard metafile picture structure */
1614 typedef struct
1615 {
1616     INT16        mm;
1617     INT16        xExt;
1618     INT16        yExt;
1619     HMETAFILE16  hMF;
1620 } METAFILEPICT16, *LPMETAFILEPICT16;
1621
1622 typedef struct
1623 {
1624     INT        mm;
1625     INT        xExt;
1626     INT        yExt;
1627     HMETAFILE  hMF;
1628 } METAFILEPICT, *LPMETAFILEPICT;
1629
1630
1631 /* Metafile functions */
1632 #define META_SETBKCOLOR              0x0201
1633 #define META_SETBKMODE               0x0102
1634 #define META_SETMAPMODE              0x0103
1635 #define META_SETROP2                 0x0104
1636 #define META_SETRELABS               0x0105
1637 #define META_SETPOLYFILLMODE         0x0106
1638 #define META_SETSTRETCHBLTMODE       0x0107
1639 #define META_SETTEXTCHAREXTRA        0x0108
1640 #define META_SETTEXTCOLOR            0x0209
1641 #define META_SETTEXTJUSTIFICATION    0x020A
1642 #define META_SETWINDOWORG            0x020B
1643 #define META_SETWINDOWEXT            0x020C
1644 #define META_SETVIEWPORTORG          0x020D
1645 #define META_SETVIEWPORTEXT          0x020E
1646 #define META_OFFSETWINDOWORG         0x020F
1647 #define META_SCALEWINDOWEXT          0x0410
1648 #define META_OFFSETVIEWPORTORG       0x0211
1649 #define META_SCALEVIEWPORTEXT        0x0412
1650 #define META_LINETO                  0x0213
1651 #define META_MOVETO                  0x0214
1652 #define META_EXCLUDECLIPRECT         0x0415
1653 #define META_INTERSECTCLIPRECT       0x0416
1654 #define META_ARC                     0x0817
1655 #define META_ELLIPSE                 0x0418
1656 #define META_FLOODFILL               0x0419
1657 #define META_PIE                     0x081A
1658 #define META_RECTANGLE               0x041B
1659 #define META_ROUNDRECT               0x061C
1660 #define META_PATBLT                  0x061D
1661 #define META_SAVEDC                  0x001E
1662 #define META_SETPIXEL                0x041F
1663 #define META_OFFSETCLIPRGN           0x0220
1664 #define META_TEXTOUT                 0x0521
1665 #define META_BITBLT                  0x0922
1666 #define META_STRETCHBLT              0x0B23
1667 #define META_POLYGON                 0x0324
1668 #define META_POLYLINE                0x0325
1669 #define META_ESCAPE                  0x0626
1670 #define META_RESTOREDC               0x0127
1671 #define META_FILLREGION              0x0228
1672 #define META_FRAMEREGION             0x0429
1673 #define META_INVERTREGION            0x012A
1674 #define META_PAINTREGION             0x012B
1675 #define META_SELECTCLIPREGION        0x012C
1676 #define META_SELECTOBJECT            0x012D
1677 #define META_SETTEXTALIGN            0x012E
1678 #define META_DRAWTEXT                0x062F
1679 #define META_CHORD                   0x0830
1680 #define META_SETMAPPERFLAGS          0x0231
1681 #define META_EXTTEXTOUT              0x0A32
1682 #define META_SETDIBTODEV             0x0D33
1683 #define META_SELECTPALETTE           0x0234
1684 #define META_REALIZEPALETTE          0x0035
1685 #define META_ANIMATEPALETTE          0x0436
1686 #define META_SETPALENTRIES           0x0037
1687 #define META_POLYPOLYGON             0x0538
1688 #define META_RESIZEPALETTE           0x0139
1689 #define META_DIBBITBLT               0x0940
1690 #define META_DIBSTRETCHBLT           0x0B41
1691 #define META_DIBCREATEPATTERNBRUSH   0x0142
1692 #define META_STRETCHDIB              0x0F43
1693 #define META_EXTFLOODFILL            0x0548
1694 #define META_RESETDC                 0x014C
1695 #define META_STARTDOC                0x014D
1696 #define META_STARTPAGE               0x004F
1697 #define META_ENDPAGE                 0x0050
1698 #define META_ABORTDOC                0x0052
1699 #define META_ENDDOC                  0x005E
1700 #define META_DELETEOBJECT            0x01F0
1701 #define META_CREATEPALETTE           0x00F7
1702 #define META_CREATEBRUSH             0x00F8
1703 #define META_CREATEPATTERNBRUSH      0x01F9
1704 #define META_CREATEPENINDIRECT       0x02FA
1705 #define META_CREATEFONTINDIRECT      0x02FB
1706 #define META_CREATEBRUSHINDIRECT     0x02FC
1707 #define META_CREATEBITMAPINDIRECT    0x02FD
1708 #define META_CREATEBITMAP            0x06FE
1709 #define META_CREATEREGION            0x06FF
1710 #define META_UNKNOWN                 0x0529  /* FIXME: unknown meta magic */
1711
1712 typedef INT16 (CALLBACK *MFENUMPROC16)(HDC16,HANDLETABLE16*,METARECORD*,
1713                                        INT16,LPARAM);
1714 typedef INT (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,
1715                                        INT,LPARAM);
1716
1717 /* enhanced metafile structures and functions */
1718
1719 /* note that ENHMETAHEADER is just a particular kind of ENHMETARECORD,
1720    ie. the header is just the first record in the metafile */
1721 typedef struct {
1722     DWORD iType; 
1723     DWORD nSize; 
1724     RECT rclBounds; 
1725     RECT rclFrame; 
1726     DWORD dSignature; 
1727     DWORD nVersion; 
1728     DWORD nBytes; 
1729     DWORD nRecords; 
1730     WORD  nHandles; 
1731     WORD  sReserved; 
1732     DWORD nDescription; 
1733     DWORD offDescription; 
1734     DWORD nPalEntries; 
1735     SIZE szlDevice; 
1736     SIZE szlMillimeters;
1737     DWORD cbPixelFormat;
1738     DWORD offPixelFormat;
1739     DWORD bOpenGL;
1740 } ENHMETAHEADER, *LPENHMETAHEADER; 
1741
1742 typedef struct {
1743     DWORD iType; 
1744     DWORD nSize; 
1745     DWORD dParm[1]; 
1746 } ENHMETARECORD, *LPENHMETARECORD; 
1747
1748 typedef INT (CALLBACK *ENHMFENUMPROC)(HDC, LPHANDLETABLE, 
1749                                           LPENHMETARECORD, INT, LPVOID);
1750
1751 #define EMR_HEADER      1
1752 #define EMR_POLYBEZIER  2
1753 #define EMR_POLYGON     3
1754 #define EMR_POLYLINE    4
1755 #define EMR_POLYBEZIERTO        5
1756 #define EMR_POLYLINETO  6
1757 #define EMR_POLYPOLYLINE        7
1758 #define EMR_POLYPOLYGON 8
1759 #define EMR_SETWINDOWEXTEX      9
1760 #define EMR_SETWINDOWORGEX      10
1761 #define EMR_SETVIEWPORTEXTEX    11
1762 #define EMR_SETVIEWPORTORGEX    12
1763 #define EMR_SETBRUSHORGEX       13
1764 #define EMR_EOF 14
1765 #define EMR_SETPIXELV   15
1766 #define EMR_SETMAPPERFLAGS      16
1767 #define EMR_SETMAPMODE  17
1768 #define EMR_SETBKMODE   18
1769 #define EMR_SETPOLYFILLMODE     19
1770 #define EMR_SETROP2     20
1771 #define EMR_SETSTRETCHBLTMODE   21
1772 #define EMR_SETTEXTALIGN        22
1773 #define EMR_SETCOLORADJUSTMENT  23
1774 #define EMR_SETTEXTCOLOR        24
1775 #define EMR_SETBKCOLOR  25
1776 #define EMR_OFFSETCLIPRGN       26
1777 #define EMR_MOVETOEX    27
1778 #define EMR_SETMETARGN  28
1779 #define EMR_EXCLUDECLIPRECT     29
1780 #define EMR_INTERSECTCLIPRECT   30
1781 #define EMR_SCALEVIEWPORTEXTEX  31
1782 #define EMR_SCALEWINDOWEXTEX    32
1783 #define EMR_SAVEDC      33
1784 #define EMR_RESTOREDC   34
1785 #define EMR_SETWORLDTRANSFORM   35
1786 #define EMR_MODIFYWORLDTRANSFORM        36
1787 #define EMR_SELECTOBJECT        37
1788 #define EMR_CREATEPEN   38
1789 #define EMR_CREATEBRUSHINDIRECT 39
1790 #define EMR_DELETEOBJECT        40
1791 #define EMR_ANGLEARC    41
1792 #define EMR_ELLIPSE     42
1793 #define EMR_RECTANGLE   43
1794 #define EMR_ROUNDRECT   44
1795 #define EMR_ARC 45
1796 #define EMR_CHORD       46
1797 #define EMR_PIE 47
1798 #define EMR_SELECTPALETTE       48
1799 #define EMR_CREATEPALETTE       49
1800 #define EMR_SETPALETTEENTRIES   50
1801 #define EMR_RESIZEPALETTE       51
1802 #define EMR_REALIZEPALETTE      52
1803 #define EMR_EXTFLOODFILL        53
1804 #define EMR_LINETO      54
1805 #define EMR_ARCTO       55
1806 #define EMR_POLYDRAW    56
1807 #define EMR_SETARCDIRECTION     57
1808 #define EMR_SETMITERLIMIT       58
1809 #define EMR_BEGINPATH   59
1810 #define EMR_ENDPATH     60
1811 #define EMR_CLOSEFIGURE 61
1812 #define EMR_FILLPATH    62
1813 #define EMR_STROKEANDFILLPATH   63
1814 #define EMR_STROKEPATH  64
1815 #define EMR_FLATTENPATH 65
1816 #define EMR_WIDENPATH   66
1817 #define EMR_SELECTCLIPPATH      67
1818 #define EMR_ABORTPATH   68
1819 #define EMR_GDICOMMENT  70
1820 #define EMR_FILLRGN     71
1821 #define EMR_FRAMERGN    72
1822 #define EMR_INVERTRGN   73
1823 #define EMR_PAINTRGN    74
1824 #define EMR_EXTSELECTCLIPRGN    75
1825 #define EMR_BITBLT      76
1826 #define EMR_STRETCHBLT  77
1827 #define EMR_MASKBLT     78
1828 #define EMR_PLGBLT      79
1829 #define EMR_SETDIBITSTODEVICE   80
1830 #define EMR_STRETCHDIBITS       81
1831 #define EMR_EXTCREATEFONTINDIRECTW      82
1832 #define EMR_EXTTEXTOUTA 83
1833 #define EMR_EXTTEXTOUTW 84
1834 #define EMR_POLYBEZIER16        85
1835 #define EMR_POLYGON16   86
1836 #define EMR_POLYLINE16  87
1837 #define EMR_POLYBEZIERTO16      88
1838 #define EMR_POLYLINETO16        89
1839 #define EMR_POLYPOLYLINE16      90
1840 #define EMR_POLYPOLYGON16       91
1841 #define EMR_POLYDRAW16  92
1842 #define EMR_CREATEMONOBRUSH     93
1843 #define EMR_CREATEDIBPATTERNBRUSHPT     94
1844 #define EMR_EXTCREATEPEN        95
1845 #define EMR_POLYTEXTOUTA        96
1846 #define EMR_POLYTEXTOUTW        97
1847 #define EMR_SETICMMODE  98
1848 #define EMR_CREATECOLORSPACE    99
1849 #define EMR_SETCOLORSPACE       100
1850 #define EMR_DELETECOLORSPACE    101
1851 #define EMR_GLSRECORD   102
1852 #define EMR_GLSBOUNDEDRECORD    103
1853 #define EMR_PIXELFORMAT 104
1854
1855 #define ENHMETA_SIGNATURE       1179469088
1856
1857 #define CCHDEVICENAME 32
1858 #define CCHFORMNAME   32
1859
1860 typedef struct
1861 {
1862     BYTE   dmDeviceName[CCHDEVICENAME];
1863     WORD   dmSpecVersion;
1864     WORD   dmDriverVersion;
1865     WORD   dmSize;
1866     WORD   dmDriverExtra;
1867     DWORD  dmFields;
1868     INT16  dmOrientation;
1869     INT16  dmPaperSize;
1870     INT16  dmPaperLength;
1871     INT16  dmPaperWidth;
1872     INT16  dmScale;
1873     INT16  dmCopies;
1874     INT16  dmDefaultSource;
1875     INT16  dmPrintQuality;
1876     INT16  dmColor;
1877     INT16  dmDuplex;
1878     INT16  dmYResolution;
1879     INT16  dmTTOption;
1880     INT16  dmCollate;
1881     BYTE   dmFormName[CCHFORMNAME];
1882     WORD   dmUnusedPadding;
1883     WORD   dmBitsPerPel;
1884     DWORD  dmPelsWidth;
1885     DWORD  dmPelsHeight;
1886     DWORD  dmDisplayFlags;
1887     DWORD  dmDisplayFrequency;
1888 } DEVMODE16, *LPDEVMODE16;
1889
1890 typedef struct
1891 {
1892     BYTE   dmDeviceName[CCHDEVICENAME];
1893     WORD   dmSpecVersion;
1894     WORD   dmDriverVersion;
1895     WORD   dmSize;
1896     WORD   dmDriverExtra;
1897     DWORD  dmFields;
1898     INT16  dmOrientation;
1899     INT16  dmPaperSize;
1900     INT16  dmPaperLength;
1901     INT16  dmPaperWidth;
1902     INT16  dmScale;
1903     INT16  dmCopies;
1904     INT16  dmDefaultSource;
1905     INT16  dmPrintQuality;
1906     INT16  dmColor;
1907     INT16  dmDuplex;
1908     INT16  dmYResolution;
1909     INT16  dmTTOption;
1910     INT16  dmCollate;
1911     BYTE   dmFormName[CCHFORMNAME];
1912     WORD   dmLogPixels;
1913     DWORD  dmBitsPerPel;
1914     DWORD  dmPelsWidth;
1915     DWORD  dmPelsHeight;
1916     DWORD  dmDisplayFlags;
1917     DWORD  dmDisplayFrequency;
1918     DWORD  dmICMMethod;
1919     DWORD  dmICMIntent;
1920     DWORD  dmMediaType;
1921     DWORD  dmDitherType;
1922     DWORD  dmReserved1;
1923     DWORD  dmReserved2;
1924 } DEVMODEA, *LPDEVMODEA;
1925
1926 typedef struct
1927 {
1928     WCHAR  dmDeviceName[CCHDEVICENAME];
1929     WORD   dmSpecVersion;
1930     WORD   dmDriverVersion;
1931     WORD   dmSize;
1932     WORD   dmDriverExtra;
1933     DWORD  dmFields;
1934     INT16  dmOrientation;
1935     INT16  dmPaperSize;
1936     INT16  dmPaperLength;
1937     INT16  dmPaperWidth;
1938     INT16  dmScale;
1939     INT16  dmCopies;
1940     INT16  dmDefaultSource;
1941     INT16  dmPrintQuality;
1942     INT16  dmColor;
1943     INT16  dmDuplex;
1944     INT16  dmYResolution;
1945     INT16  dmTTOption;
1946     INT16  dmCollate;
1947     WCHAR  dmFormName[CCHFORMNAME];
1948     WORD   dmLogPixels;
1949     DWORD  dmBitsPerPel;
1950     DWORD  dmPelsWidth;
1951     DWORD  dmPelsHeight;
1952     DWORD  dmDisplayFlags;
1953     DWORD  dmDisplayFrequency;
1954     DWORD  dmICMMethod;
1955     DWORD  dmICMIntent;
1956     DWORD  dmMediaType;
1957     DWORD  dmDitherType;
1958     DWORD  dmReserved1;
1959     DWORD  dmReserved2;
1960 } DEVMODEW, *LPDEVMODEW;
1961
1962 DECL_WINELIB_TYPE_AW(DEVMODE)
1963 DECL_WINELIB_TYPE_AW(LPDEVMODE)
1964
1965 typedef struct 
1966 {
1967     INT16    cbSize;
1968     SEGPTR   lpszDocName WINE_PACKED;
1969     SEGPTR   lpszOutput WINE_PACKED;
1970 } DOCINFO16, *LPDOCINFO16;
1971
1972 typedef struct 
1973 {
1974     INT    cbSize;
1975     LPCSTR   lpszDocName;
1976     LPCSTR   lpszOutput;
1977     LPCSTR   lpszDatatype;
1978     DWORD    fwType;
1979 } DOCINFOA, *LPDOCINFOA;
1980
1981 typedef struct 
1982 {
1983     INT    cbSize;
1984     LPCWSTR  lpszDocName;
1985     LPCWSTR  lpszOutput;
1986     LPCWSTR  lpszDatatype;
1987     DWORD    fwType;
1988 } DOCINFOW, *LPDOCINFOW;
1989
1990 DECL_WINELIB_TYPE_AW(DOCINFO)
1991 DECL_WINELIB_TYPE_AW(LPDOCINFO)
1992
1993 typedef struct {
1994         UINT16          cbSize;
1995         INT16           iBorderWidth;
1996         INT16           iScrollWidth;
1997         INT16           iScrollHeight;
1998         INT16           iCaptionWidth;
1999         INT16           iCaptionHeight;
2000         LOGFONT16       lfCaptionFont;
2001         INT16           iSmCaptionWidth;
2002         INT16           iSmCaptionHeight;
2003         LOGFONT16       lfSmCaptionFont;
2004         INT16           iMenuWidth;
2005         INT16           iMenuHeight;
2006         LOGFONT16       lfMenuFont;
2007         LOGFONT16       lfStatusFont;
2008         LOGFONT16       lfMessageFont;
2009 } NONCLIENTMETRICS16,*LPNONCLIENTMETRICS16;
2010
2011 typedef struct {
2012         UINT            cbSize;
2013         INT             iBorderWidth;
2014         INT             iScrollWidth;
2015         INT             iScrollHeight;
2016         INT             iCaptionWidth;
2017         INT             iCaptionHeight;
2018         LOGFONTA        lfCaptionFont;
2019         INT             iSmCaptionWidth;
2020         INT             iSmCaptionHeight;
2021         LOGFONTA        lfSmCaptionFont;
2022         INT             iMenuWidth;
2023         INT             iMenuHeight;
2024         LOGFONTA        lfMenuFont;
2025         LOGFONTA        lfStatusFont;
2026         LOGFONTA        lfMessageFont;
2027 } NONCLIENTMETRICSA,*LPNONCLIENTMETRICSA;
2028
2029 typedef struct {
2030         UINT            cbSize;
2031         INT             iBorderWidth;
2032         INT             iScrollWidth;
2033         INT             iScrollHeight;
2034         INT             iCaptionWidth;
2035         INT             iCaptionHeight;
2036         LOGFONTW        lfCaptionFont;
2037         INT             iSmCaptionWidth;
2038         INT             iSmCaptionHeight;
2039         LOGFONTW        lfSmCaptionFont;
2040         INT             iMenuWidth;
2041         INT             iMenuHeight;
2042         LOGFONTW        lfMenuFont;
2043         LOGFONTW        lfStatusFont;
2044         LOGFONTW        lfMessageFont;
2045 } NONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
2046
2047 DECL_WINELIB_TYPE_AW(NONCLIENTMETRICS)
2048 DECL_WINELIB_TYPE_AW(LPNONCLIENTMETRICS)
2049
2050 /* Flags for PolyDraw and GetPath */
2051 #define PT_CLOSEFIGURE          0x0001
2052 #define PT_LINETO               0x0002
2053 #define PT_BEZIERTO             0x0004
2054 #define PT_MOVETO               0x0006
2055
2056 #define RDH_RECTANGLES  1
2057
2058 typedef struct _RGNDATAHEADER {
2059     DWORD       dwSize;
2060     DWORD       iType;
2061     DWORD       nCount;
2062     DWORD       nRgnSize;
2063     RECT        rcBound;
2064 } RGNDATAHEADER,*LPRGNDATAHEADER;
2065
2066 typedef struct _RGNDATA {
2067     RGNDATAHEADER       rdh;
2068     char                Buffer[1];
2069 } RGNDATA,*PRGNDATA,*LPRGNDATA;
2070
2071 typedef BOOL16 (CALLBACK* ABORTPROC16)(HDC16, INT16);
2072 typedef BOOL (CALLBACK* ABORTPROC)(HDC, INT);
2073
2074 #pragma pack(4)
2075
2076 /* Declarations for functions that exist only in Win16 */
2077
2078 VOID        WINAPI Death16(HDC16);
2079 VOID        WINAPI Resurrection16(HDC16,WORD,WORD,WORD,WORD,WORD,WORD);
2080
2081 /* Declarations for functions that exist only in Win32 */
2082
2083 BOOL      WINAPI AngleArc(HDC, INT, INT, DWORD, FLOAT, FLOAT);
2084 BOOL      WINAPI ArcTo(HDC, INT, INT, INT, INT, INT, INT, INT, INT); 
2085 HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
2086 HBRUSH    WINAPI CreateDIBPatternBrushPt(const void*,UINT);
2087 HDC       WINAPI CreateEnhMetaFileA(HDC,LPCSTR,const RECT*,LPCSTR);
2088 HDC       WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,const RECT*,LPCWSTR);
2089 #define     CreateEnhMetaFile WINELIB_NAME_AW(CreateEnhMetaFile)
2090 INT       WINAPI DrawEscape(HDC,INT,INT,LPCSTR);
2091 INT16       WINAPI ExcludeVisRect16(HDC16,INT16,INT16,INT16,INT16);
2092 BOOL16      WINAPI FastWindowFrame16(HDC16,const RECT16*,INT16,INT16,DWORD);
2093 UINT16      WINAPI GDIRealizePalette16(HDC16);
2094 HPALETTE16  WINAPI GDISelectPalette16(HDC16,HPALETTE16,WORD);
2095 BOOL      WINAPI GdiComment(HDC,UINT,const BYTE *);
2096 DWORD       WINAPI GetBitmapDimension16(HBITMAP16);
2097 DWORD       WINAPI GetBrushOrg16(HDC16);
2098 BOOL      WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
2099 BOOL      WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
2100 #define     GetCharABCWidthsFloat WINELIB_NAME_AW(GetCharABCWidthsFloat)
2101 BOOL      WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT);
2102 BOOL      WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT);
2103 #define     GetCharWidthFloat WINELIB_NAME_AW(GetCharWidthFloat)
2104 BOOL      WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
2105 HFONT16     WINAPI GetCurLogFont16(HDC16);
2106 DWORD       WINAPI GetCurrentPosition16(HDC16);
2107 DWORD       WINAPI GetDCHook(HDC16,FARPROC16*);
2108 DWORD       WINAPI GetDCOrg16(HDC16);
2109 HDC16       WINAPI GetDCState16(HDC16);
2110 INT16       WINAPI GetEnvironment16(LPCSTR,LPDEVMODE16,UINT16);
2111 HGLOBAL16   WINAPI GetMetaFileBits16(HMETAFILE16);
2112 BOOL      WINAPI GetMiterLimit(HDC, PFLOAT);
2113 DWORD       WINAPI GetTextExtent16(HDC16,LPCSTR,INT16);
2114 DWORD       WINAPI GetViewportExt16(HDC16);
2115 DWORD       WINAPI GetViewportOrg16(HDC16);
2116 DWORD       WINAPI GetWindowExt16(HDC16);
2117 DWORD       WINAPI GetWindowOrg16(HDC16);
2118 HRGN16      WINAPI InquireVisRgn16(HDC16);
2119 INT16       WINAPI IntersectVisRect16(HDC16,INT16,INT16,INT16,INT16);
2120 BOOL16      WINAPI IsDCCurrentPalette16(HDC16);
2121 BOOL16      WINAPI IsGDIObject16(HGDIOBJ16);
2122 BOOL16      WINAPI IsValidMetaFile16(HMETAFILE16);
2123 BOOL      WINAPI MaskBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,HBITMAP,INT,INT,DWORD);
2124 DWORD       WINAPI MoveTo16(HDC16,INT16,INT16);
2125 DWORD       WINAPI OffsetViewportOrg16(HDC16,INT16,INT16);
2126 INT16       WINAPI OffsetVisRgn16(HDC16,INT16,INT16);
2127 DWORD       WINAPI OffsetWindowOrg16(HDC16,INT16,INT16);
2128 BOOL      WINAPI PlgBlt(HDC,const POINT*,HDC,INT,INT,INT,INT,HBITMAP,INT,INT);
2129 BOOL      WINAPI PolyDraw(HDC,const POINT*,const BYTE*,DWORD);
2130 UINT16      WINAPI RealizeDefaultPalette16(HDC16);
2131 INT16       WINAPI RestoreVisRgn16(HDC16);
2132 HRGN16      WINAPI SaveVisRgn16(HDC16);
2133 DWORD       WINAPI ScaleViewportExt16(HDC16,INT16,INT16,INT16,INT16);
2134 DWORD       WINAPI ScaleWindowExt16(HDC16,INT16,INT16,INT16,INT16);
2135 INT16       WINAPI SelectVisRgn16(HDC16,HRGN16);
2136 DWORD       WINAPI SetBitmapDimension16(HBITMAP16,INT16,INT16);
2137 DWORD       WINAPI SetBrushOrg16(HDC16,INT16,INT16);
2138 BOOL      WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
2139 BOOL16      WINAPI SetDCHook(HDC16,FARPROC16,DWORD);
2140 DWORD       WINAPI SetDCOrg16(HDC16,INT16,INT16);
2141 VOID        WINAPI SetDCState16(HDC16,HDC16);
2142 INT16       WINAPI SetEnvironment16(LPCSTR,LPDEVMODE16,UINT16);
2143 WORD        WINAPI SetHookFlags16(HDC16,WORD);
2144 HMETAFILE16 WINAPI SetMetaFileBits16(HGLOBAL16);
2145 BOOL      WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT);
2146 DWORD       WINAPI SetViewportExt16(HDC16,INT16,INT16);
2147 DWORD       WINAPI SetViewportOrg16(HDC16,INT16,INT16);
2148 DWORD       WINAPI SetWindowExt16(HDC16,INT16,INT16);
2149 DWORD       WINAPI SetWindowOrg16(HDC16,INT16,INT16);
2150 BOOL      WINAPI CombineTransform(LPXFORM,const XFORM *,const XFORM *);
2151 HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
2152 HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
2153 #define     CopyEnhMetaFile WINELIB_NAME_AW(CopyEnhMetaFile)
2154 HPALETTE  WINAPI CreateHalftonePalette(HDC);
2155 BOOL      WINAPI DeleteEnhMetaFile(HENHMETAFILE);
2156 INT       WINAPI ExtSelectClipRgn(HDC,HRGN,INT);
2157 HRGN      WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*);
2158 INT       WINAPI ExtEscape(HDC,INT,INT,LPCSTR,INT,LPSTR);
2159 BOOL      WINAPI FixBrushOrgEx(HDC,INT,INT,LPPOINT);
2160 HANDLE    WINAPI GetCurrentObject(HDC,UINT);
2161 BOOL      WINAPI GetDCOrgEx(HDC,LPPOINT);
2162 HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
2163 HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
2164 #define     GetEnhMetaFile WINELIB_NAME_AW(GetEnhMetaFile)
2165 UINT      WINAPI GetEnhMetaFileBits(HENHMETAFILE,UINT,LPBYTE);
2166 UINT      WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
2167 UINT      WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
2168 INT       WINAPI GetGraphicsMode(HDC);
2169 UINT      WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,LPVOID);
2170 DWORD       WINAPI GetObjectType(HANDLE);
2171 UINT      WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD);
2172 BOOL      WINAPI GetTextExtentExPointA(HDC,LPCSTR,INT,INT,
2173                                            LPINT,LPINT,LPSIZE);
2174 BOOL      WINAPI GetTextExtentExPointW(HDC,LPCWSTR,INT,INT,
2175                                            LPINT,LPINT,LPSIZE);
2176 #define     GetTextExtentExPoint WINELIB_NAME_AW(GetTextExtentExPoint)
2177 BOOL      WINAPI GetWorldTransform(HDC,LPXFORM);
2178 BOOL      WINAPI ModifyWorldTransform(HDC,const XFORM *, DWORD);
2179 BOOL      WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,const RECT*);
2180 BOOL      WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT);
2181 BOOL      WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD);
2182 BOOL      WINAPI SetBrushOrgEx(HDC,INT,INT,LPPOINT);
2183 HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE *);
2184 INT       WINAPI SetGraphicsMode(HDC,INT);
2185 HMETAFILE WINAPI SetMetaFileBitsEx(UINT,const BYTE*);
2186 BOOL      WINAPI SetWorldTransform(HDC,const XFORM*);
2187 BOOL      WINAPI TranslateCharsetInfo(LPDWORD,LPCHARSETINFO,DWORD);
2188
2189 /* Declarations for functions that change between Win16 and Win32 */
2190
2191 INT16       WINAPI AbortDoc16(HDC16);
2192 INT       WINAPI AbortDoc(HDC);
2193 BOOL16      WINAPI AbortPath16(HDC16);
2194 BOOL      WINAPI AbortPath(HDC);
2195 INT16       WINAPI AddFontResource16(LPCSTR);
2196 INT       WINAPI AddFontResourceA(LPCSTR);
2197 INT       WINAPI AddFontResourceW(LPCWSTR);
2198 #define     AddFontResource WINELIB_NAME_AW(AddFontResource)
2199 void        WINAPI AnimatePalette16(HPALETTE16,UINT16,UINT16,const PALETTEENTRY*);
2200 BOOL      WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
2201 BOOL16      WINAPI Arc16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
2202 BOOL      WINAPI Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
2203 BOOL16      WINAPI BeginPath16(HDC16);
2204 BOOL      WINAPI BeginPath(HDC);
2205 BOOL16      WINAPI BitBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16,DWORD);
2206 BOOL      WINAPI BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD);
2207 INT       WINAPI ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR*);
2208 BOOL16      WINAPI Chord16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
2209 BOOL      WINAPI Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
2210 BOOL16      WINAPI CloseFigure16(HDC16);
2211 BOOL      WINAPI CloseFigure(HDC);
2212 HMETAFILE16 WINAPI CloseMetaFile16(HDC16);
2213 HMETAFILE WINAPI CloseMetaFile(HDC);
2214 INT16       WINAPI CombineRgn16(HRGN16,HRGN16,HRGN16,INT16);
2215 INT       WINAPI CombineRgn(HRGN,HRGN,HRGN,INT);
2216 HMETAFILE16 WINAPI CopyMetaFile16(HMETAFILE16,LPCSTR);
2217 HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
2218 HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
2219 #define     CopyMetaFile WINELIB_NAME_AW(CopyMetaFile)
2220 HBITMAP16   WINAPI CreateBitmap16(INT16,INT16,UINT16,UINT16,LPCVOID);
2221 HBITMAP   WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID);
2222 HBITMAP16   WINAPI CreateBitmapIndirect16(const BITMAP16*);
2223 HBITMAP   WINAPI CreateBitmapIndirect(const BITMAP*);
2224 HBRUSH16    WINAPI CreateBrushIndirect16(const LOGBRUSH16*);
2225 HBRUSH    WINAPI CreateBrushIndirect(const LOGBRUSH*);
2226 HBITMAP16   WINAPI CreateCompatibleBitmap16(HDC16,INT16,INT16);
2227 HBITMAP   WINAPI CreateCompatibleBitmap(HDC,INT,INT);
2228 HDC16       WINAPI CreateCompatibleDC16(HDC16);
2229 HDC       WINAPI CreateCompatibleDC(HDC);
2230 HDC16       WINAPI CreateDC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODE16*);
2231 HDC       WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
2232 HDC       WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
2233 #define     CreateDC WINELIB_NAME_AW(CreateDC)
2234 HBITMAP16   WINAPI CreateDIBitmap16(HDC16,const BITMAPINFOHEADER*,DWORD,
2235                                     LPCVOID,const BITMAPINFO*,UINT16);
2236 HBITMAP   WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,
2237                                     LPCVOID,const BITMAPINFO*,UINT);
2238 HBRUSH16    WINAPI CreateDIBPatternBrush16(HGLOBAL16,UINT16);
2239 HBRUSH    WINAPI CreateDIBPatternBrush(HGLOBAL,UINT);
2240 HBITMAP16   WINAPI CreateDIBSection16 (HDC16, BITMAPINFO *, UINT16,
2241                                        SEGPTR *, HANDLE, DWORD offset);
2242 HBITMAP   WINAPI CreateDIBSection (HDC, BITMAPINFO *, UINT,
2243                                        LPVOID *, HANDLE, DWORD offset);
2244 HBITMAP16   WINAPI CreateDiscardableBitmap16(HDC16,INT16,INT16);
2245 HBITMAP   WINAPI CreateDiscardableBitmap(HDC,INT,INT);
2246 HRGN16      WINAPI CreateEllipticRgn16(INT16,INT16,INT16,INT16);
2247 HRGN      WINAPI CreateEllipticRgn(INT,INT,INT,INT);
2248 HRGN16      WINAPI CreateEllipticRgnIndirect16(const RECT16 *);
2249 HRGN      WINAPI CreateEllipticRgnIndirect(const RECT *);
2250 HFONT16     WINAPI CreateFont16(INT16,INT16,INT16,INT16,INT16,BYTE,BYTE,BYTE,
2251                                 BYTE,BYTE,BYTE,BYTE,BYTE,LPCSTR);
2252 HFONT     WINAPI CreateFontA(INT,INT,INT,INT,INT,DWORD,DWORD,
2253                                  DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
2254 HFONT     WINAPI CreateFontW(INT,INT,INT,INT,INT,DWORD,DWORD,
2255                                  DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
2256 #define     CreateFont WINELIB_NAME_AW(CreateFont)
2257 HFONT16     WINAPI CreateFontIndirect16(const LOGFONT16*);
2258 HFONT     WINAPI CreateFontIndirectA(const LOGFONTA*);
2259 HFONT     WINAPI CreateFontIndirectW(const LOGFONTW*);
2260 #define     CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect)
2261 HBRUSH16    WINAPI CreateHatchBrush16(INT16,COLORREF);
2262 HBRUSH    WINAPI CreateHatchBrush(INT,COLORREF);
2263 HDC16       WINAPI CreateIC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODE16*);
2264 HDC       WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
2265 HDC       WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
2266 #define     CreateIC WINELIB_NAME_AW(CreateIC)
2267 HDC16       WINAPI CreateMetaFile16(LPCSTR);
2268 HDC       WINAPI CreateMetaFileA(LPCSTR);
2269 HDC       WINAPI CreateMetaFileW(LPCWSTR);
2270 #define     CreateMetaFile WINELIB_NAME_AW(CreateMetaFile)
2271 HPALETTE16  WINAPI CreatePalette16(const LOGPALETTE*);
2272 HPALETTE  WINAPI CreatePalette(const LOGPALETTE*);
2273 HBRUSH16    WINAPI CreatePatternBrush16(HBITMAP16);
2274 HBRUSH    WINAPI CreatePatternBrush(HBITMAP);
2275 HPEN16      WINAPI CreatePen16(INT16,INT16,COLORREF);
2276 HPEN      WINAPI CreatePen(INT,INT,COLORREF);
2277 HPEN16      WINAPI CreatePenIndirect16(const LOGPEN16*);
2278 HPEN      WINAPI CreatePenIndirect(const LOGPEN*);
2279 HRGN16      WINAPI CreatePolyPolygonRgn16(const POINT16*,const INT16*,INT16,INT16);
2280 HRGN      WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,INT,INT);
2281 HRGN16      WINAPI CreatePolygonRgn16(const POINT16*,INT16,INT16);
2282 HRGN      WINAPI CreatePolygonRgn(const POINT*,INT,INT);
2283 HRGN16      WINAPI CreateRectRgn16(INT16,INT16,INT16,INT16);
2284 HRGN      WINAPI CreateRectRgn(INT,INT,INT,INT);
2285 HRGN16      WINAPI CreateRectRgnIndirect16(const RECT16*);
2286 HRGN      WINAPI CreateRectRgnIndirect(const RECT*);
2287 HRGN16      WINAPI CreateRoundRectRgn16(INT16,INT16,INT16,INT16,INT16,INT16);
2288 HRGN      WINAPI CreateRoundRectRgn(INT,INT,INT,INT,INT,INT);
2289 BOOL16      WINAPI CreateScalableFontResource16(UINT16,LPCSTR,LPCSTR,LPCSTR);
2290 BOOL      WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR);
2291 BOOL      WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
2292 #define     CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource)
2293 HBRUSH16    WINAPI CreateSolidBrush16(COLORREF);
2294 HBRUSH    WINAPI CreateSolidBrush(COLORREF);
2295 BOOL16      WINAPI DeleteDC16(HDC16);
2296 BOOL      WINAPI DeleteDC(HDC);
2297 BOOL16      WINAPI DeleteMetaFile16(HMETAFILE16);
2298 BOOL      WINAPI DeleteMetaFile(HMETAFILE);
2299 BOOL16      WINAPI DeleteObject16(HGDIOBJ16);
2300 BOOL      WINAPI DeleteObject(HGDIOBJ);
2301 INT       WINAPI DescribePixelFormat(HDC,int,UINT,
2302                                        LPPIXELFORMATDESCRIPTOR);
2303 BOOL16      WINAPI DPtoLP16(HDC16,LPPOINT16,INT16);
2304 BOOL      WINAPI DPtoLP(HDC,LPPOINT,INT);
2305 BOOL16      WINAPI Ellipse16(HDC16,INT16,INT16,INT16,INT16);
2306 BOOL      WINAPI Ellipse(HDC,INT,INT,INT,INT);
2307 INT16       WINAPI EndDoc16(HDC16);
2308 INT       WINAPI EndDoc(HDC);
2309 BOOL16      WINAPI EndPath16(HDC16);
2310 BOOL      WINAPI EndPath(HDC);
2311 INT16       WINAPI EnumFontFamilies16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM);
2312 INT       WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
2313 INT       WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
2314 #define     EnumFontFamilies WINELIB_NAME_AW(EnumFontFamilies)
2315 INT16       WINAPI EnumFontFamiliesEx16(HDC16,LPLOGFONT16,FONTENUMPROCEX16,LPARAM,DWORD);
2316 INT       WINAPI EnumFontFamiliesExA(HDC,LPLOGFONTA,FONTENUMPROCEXA,LPARAM,DWORD);
2317 INT       WINAPI EnumFontFamiliesExW(HDC,LPLOGFONTW,FONTENUMPROCEXW,LPARAM,DWORD);
2318 #define     EnumFontFamiliesEx WINELIB_NAME_AW(EnumFontFamiliesEx)
2319 INT16       WINAPI EnumFonts16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM);
2320 INT       WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
2321 INT       WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
2322 #define     EnumFonts WINELIB_NAME_AW(EnumFonts)
2323 BOOL16      WINAPI EnumMetaFile16(HDC16,HMETAFILE16,MFENUMPROC16,LPARAM);
2324 BOOL      WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
2325 INT16       WINAPI EnumObjects16(HDC16,INT16,GOBJENUMPROC16,LPARAM);
2326 INT       WINAPI EnumObjects(HDC,INT,GOBJENUMPROC,LPARAM);
2327 BOOL16      WINAPI EqualRgn16(HRGN16,HRGN16);
2328 BOOL      WINAPI EqualRgn(HRGN,HRGN);
2329 INT16       WINAPI Escape16(HDC16,INT16,INT16,SEGPTR,SEGPTR);
2330 INT       WINAPI Escape(HDC,INT,INT,LPCSTR,LPVOID);
2331 INT16       WINAPI ExcludeClipRect16(HDC16,INT16,INT16,INT16,INT16);
2332 INT       WINAPI ExcludeClipRect(HDC,INT,INT,INT,INT);
2333 HPEN16      WINAPI ExtCreatePen16(DWORD,DWORD,const LOGBRUSH16*,DWORD,const DWORD*);
2334 HPEN      WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*);
2335 BOOL16      WINAPI ExtFloodFill16(HDC16,INT16,INT16,COLORREF,UINT16);
2336 BOOL      WINAPI ExtFloodFill(HDC,INT,INT,COLORREF,UINT);
2337 BOOL16      WINAPI ExtTextOut16(HDC16,INT16,INT16,UINT16,const RECT16*,
2338                                 LPCSTR,UINT16,const INT16*);
2339 BOOL      WINAPI ExtTextOutA(HDC,INT,INT,UINT,const RECT*,
2340                                  LPCSTR,UINT,const INT*);
2341 BOOL      WINAPI ExtTextOutW(HDC,INT,INT,UINT,const RECT*,
2342                                  LPCWSTR,UINT,const INT*);
2343 #define     ExtTextOut WINELIB_NAME_AW(ExtTextOut)
2344 BOOL16      WINAPI FillPath16(HDC16);
2345 BOOL      WINAPI FillPath(HDC);
2346 BOOL16      WINAPI FillRgn16(HDC16,HRGN16,HBRUSH16);
2347 BOOL      WINAPI FillRgn(HDC,HRGN,HBRUSH);
2348 BOOL16      WINAPI FlattenPath16(HDC16);
2349 BOOL      WINAPI FlattenPath(HDC);
2350 BOOL16      WINAPI FloodFill16(HDC16,INT16,INT16,COLORREF);
2351 BOOL      WINAPI FloodFill(HDC,INT,INT,COLORREF);
2352 BOOL16      WINAPI FrameRgn16(HDC16,HRGN16,HBRUSH16,INT16,INT16);
2353 BOOL      WINAPI FrameRgn(HDC,HRGN,HBRUSH,INT,INT);
2354 INT16       WINAPI GetArcDirection16(HDC16);
2355 INT       WINAPI GetArcDirection(HDC);
2356 BOOL16      WINAPI GetAspectRatioFilterEx16(HDC16,LPSIZE16);
2357 BOOL      WINAPI GetAspectRatioFilterEx(HDC,LPSIZE);
2358 LONG        WINAPI GetBitmapBits16(HBITMAP16,LONG,LPVOID);
2359 LONG        WINAPI GetBitmapBits(HBITMAP,LONG,LPVOID);
2360 BOOL16      WINAPI GetBitmapDimensionEx16(HBITMAP16,LPSIZE16);
2361 BOOL      WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE);
2362 BOOL16      WINAPI GetBrushOrgEx16(HDC16,LPPOINT16);
2363 BOOL      WINAPI GetBrushOrgEx(HDC,LPPOINT);
2364 COLORREF    WINAPI GetBkColor16(HDC16);
2365 COLORREF    WINAPI GetBkColor(HDC);
2366 INT16       WINAPI GetBkMode16(HDC16);
2367 INT       WINAPI GetBkMode(HDC);
2368 UINT16      WINAPI GetBoundsRect16(HDC16,LPRECT16,UINT16);
2369 UINT      WINAPI GetBoundsRect(HDC,LPRECT,UINT);
2370 BOOL16      WINAPI GetCharABCWidths16(HDC16,UINT16,UINT16,LPABC16);
2371 BOOL      WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
2372 BOOL      WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
2373 #define     GetCharABCWidths WINELIB_NAME_AW(GetCharABCWidths)
2374 DWORD       WINAPI GetCharacterPlacementA(HDC,LPCSTR,INT,INT,GCP_RESULTSA*,DWORD);
2375 DWORD       WINAPI GetCharacterPlacementW(HDC,LPCWSTR,INT,INT,GCP_RESULTSW*,DWORD);
2376 #define     GetCharacterPlacement WINELIB_NAME_AW(GetCharacterPlacement)
2377 BOOL16      WINAPI GetCharWidth16(HDC16,UINT16,UINT16,LPINT16);
2378 BOOL      WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT);
2379 BOOL      WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT);
2380 #define     GetCharWidth WINELIB_NAME_AW(GetCharWidth)
2381 INT16       WINAPI GetClipBox16(HDC16,LPRECT16);
2382 INT       WINAPI GetClipBox(HDC,LPRECT);
2383 HRGN16      WINAPI GetClipRgn16(HDC16);
2384 INT       WINAPI GetClipRgn(HDC,HRGN);
2385 BOOL16      WINAPI GetCurrentPositionEx16(HDC16,LPPOINT16);
2386 BOOL      WINAPI GetCurrentPositionEx(HDC,LPPOINT);
2387 INT16       WINAPI GetDeviceCaps16(HDC16,INT16);
2388 INT       WINAPI GetDeviceCaps(HDC,INT);
2389 UINT16      WINAPI GetDIBColorTable16(HDC16,UINT16,UINT16,RGBQUAD*);
2390 UINT      WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
2391 INT16       WINAPI GetDIBits16(HDC16,HBITMAP16,UINT16,UINT16,LPVOID,LPBITMAPINFO,UINT16);
2392 INT       WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,LPVOID,LPBITMAPINFO,UINT);
2393 DWORD       WINAPI GetFontData(HDC,DWORD,DWORD,LPVOID,DWORD);
2394 DWORD       WINAPI GetFontLanguageInfo16(HDC16);
2395 DWORD       WINAPI GetFontLanguageInfo(HDC);
2396 DWORD       WINAPI GetGlyphOutline16(HDC16,UINT16,UINT16,LPGLYPHMETRICS16,DWORD,LPVOID,const MAT2*);
2397 DWORD       WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
2398 DWORD       WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
2399 #define     GetGlyphOutline WINELIB_NAME_AW(GetGlyphOutline)
2400 INT16       WINAPI GetKerningPairs16(HDC16,INT16,LPKERNINGPAIR16);
2401 DWORD       WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR);
2402 DWORD       WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR);
2403 #define     GetKerningPairs WINELIB_NAME_AW(GetKerningPairs)
2404 INT16       WINAPI GetMapMode16(HDC16);
2405 INT       WINAPI GetMapMode(HDC);
2406 HMETAFILE16 WINAPI GetMetaFile16(LPCSTR);
2407 HMETAFILE WINAPI GetMetaFileA(LPCSTR);
2408 HMETAFILE WINAPI GetMetaFileW(LPCWSTR);
2409 #define     GetMetaFile WINELIB_NAME_AW(GetMetaFile)
2410 DWORD       WINAPI GetNearestColor16(HDC16,DWORD);
2411 DWORD       WINAPI GetNearestColor(HDC,DWORD);
2412 UINT16      WINAPI GetNearestPaletteIndex16(HPALETTE16,COLORREF);
2413 UINT      WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF);
2414 INT16       WINAPI GetObject16(HANDLE16,INT16,LPVOID);
2415 INT       WINAPI GetObjectA(HANDLE,INT,LPVOID);
2416 INT       WINAPI GetObjectW(HANDLE,INT,LPVOID);
2417 #define     GetObject WINELIB_NAME_AW(GetObject)
2418 UINT16      WINAPI GetOutlineTextMetrics16(HDC16,UINT16,LPOUTLINETEXTMETRIC16);
2419 UINT      WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA);
2420 UINT      WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW);
2421 #define     GetOutlineTextMetrics WINELIB_NAME_AW(GetOutlineTextMetrics)
2422 UINT16      WINAPI GetPaletteEntries16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY);
2423 UINT      WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
2424 INT16       WINAPI GetPath16(HDC16,LPPOINT16,LPBYTE,INT16);
2425 INT       WINAPI GetPath(HDC,LPPOINT,LPBYTE,INT);
2426 COLORREF    WINAPI GetPixel16(HDC16,INT16,INT16);
2427 COLORREF    WINAPI GetPixel(HDC,INT,INT);
2428 INT       WINAPI GetPixelFormat(HDC);
2429 INT16       WINAPI GetPolyFillMode16(HDC16);
2430 INT       WINAPI GetPolyFillMode(HDC);
2431 BOOL16      WINAPI GetRasterizerCaps16(LPRASTERIZER_STATUS,UINT16);
2432 BOOL      WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
2433 DWORD       WINAPI GetRegionData16(HRGN16,DWORD,LPRGNDATA);
2434 DWORD       WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA);
2435 INT16       WINAPI GetRelAbs16(HDC16);
2436 INT       WINAPI GetRelAbs(HDC);
2437 INT16       WINAPI GetRgnBox16(HRGN16,LPRECT16);
2438 INT       WINAPI GetRgnBox(HRGN,LPRECT);
2439 INT16       WINAPI GetROP216(HDC16);
2440 INT       WINAPI GetROP2(HDC);
2441 HGDIOBJ16   WINAPI GetStockObject16(INT16);
2442 HGDIOBJ   WINAPI GetStockObject(INT);
2443 INT16       WINAPI GetStretchBltMode16(HDC16);
2444 INT       WINAPI GetStretchBltMode(HDC);
2445 UINT16      WINAPI GetSystemPaletteEntries16(HDC16,UINT16,UINT16,LPPALETTEENTRY);
2446 UINT      WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY);
2447 UINT16      WINAPI GetSystemPaletteUse16(HDC16);
2448 UINT      WINAPI GetSystemPaletteUse(HDC);
2449 UINT16      WINAPI GetTextAlign16(HDC16);
2450 UINT      WINAPI GetTextAlign(HDC);
2451 INT16       WINAPI GetTextCharacterExtra16(HDC16);
2452 INT       WINAPI GetTextCharacterExtra(HDC);
2453 UINT16      WINAPI GetTextCharset16(HDC16);
2454 UINT      WINAPI GetTextCharset(HDC);
2455 COLORREF    WINAPI GetTextColor16(HDC16);
2456 COLORREF    WINAPI GetTextColor(HDC);
2457 /* this one is different, because Win32 has *both* 
2458  * GetTextExtentPoint and GetTextExtentPoint32 !
2459  */
2460 BOOL16      WINAPI GetTextExtentPoint16(HDC16,LPCSTR,INT16,LPSIZE16);
2461 BOOL      WINAPI GetTextExtentPoint32A(HDC,LPCSTR,INT,LPSIZE);
2462 BOOL      WINAPI GetTextExtentPoint32W(HDC,LPCWSTR,INT,LPSIZE);
2463 BOOL      WINAPI GetTextExtentPointA(HDC,LPCSTR,INT,LPSIZE);
2464 BOOL      WINAPI GetTextExtentPointW(HDC,LPCWSTR,INT,LPSIZE);
2465 #ifdef UNICODE
2466 #define     GetTextExtentPoint GetTextExtentPointW
2467 #define     GetTextExtentPoint32 GetTextExtentPoint32W
2468 #else
2469 #define     GetTextExtentPoint GetTextExtentPointA
2470 #define     GetTextExtentPoint32 GetTextExtentPoint32A
2471 #endif
2472 INT16       WINAPI GetTextFace16(HDC16,INT16,LPSTR);
2473 INT       WINAPI GetTextFaceA(HDC,INT,LPSTR);
2474 INT       WINAPI GetTextFaceW(HDC,INT,LPWSTR);
2475 #define     GetTextFace WINELIB_NAME_AW(GetTextFace)
2476 BOOL16      WINAPI GetTextMetrics16(HDC16,LPTEXTMETRIC16);
2477 BOOL      WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA);
2478 BOOL      WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW);
2479 #define     GetTextMetrics WINELIB_NAME_AW(GetTextMetrics)
2480 BOOL16      WINAPI GetViewportExtEx16(HDC16,LPSIZE16);
2481 BOOL      WINAPI GetViewportExtEx(HDC,LPSIZE);
2482 BOOL16      WINAPI GetViewportOrgEx16(HDC16,LPPOINT16);
2483 BOOL      WINAPI GetViewportOrgEx(HDC,LPPOINT);
2484 BOOL16      WINAPI GetWindowExtEx16(HDC16,LPSIZE16);
2485 BOOL      WINAPI GetWindowExtEx(HDC,LPSIZE);
2486 BOOL16      WINAPI GetWindowOrgEx16(HDC16,LPPOINT16);
2487 BOOL      WINAPI GetWindowOrgEx(HDC,LPPOINT);
2488 INT16       WINAPI IntersectClipRect16(HDC16,INT16,INT16,INT16,INT16);
2489 INT       WINAPI IntersectClipRect(HDC,INT,INT,INT,INT);
2490 BOOL16      WINAPI InvertRgn16(HDC16,HRGN16);
2491 BOOL      WINAPI InvertRgn(HDC,HRGN);
2492 VOID        WINAPI LineDDA16(INT16,INT16,INT16,INT16,LINEDDAPROC16,LPARAM);
2493 BOOL      WINAPI LineDDA(INT,INT,INT,INT,LINEDDAPROC,LPARAM);
2494 BOOL16      WINAPI LineTo16(HDC16,INT16,INT16);
2495 BOOL      WINAPI LineTo(HDC,INT,INT);
2496 BOOL16      WINAPI LPtoDP16(HDC16,LPPOINT16,INT16);
2497 BOOL      WINAPI LPtoDP(HDC,LPPOINT,INT);
2498 BOOL16      WINAPI MoveToEx16(HDC16,INT16,INT16,LPPOINT16);
2499 BOOL      WINAPI MoveToEx(HDC,INT,INT,LPPOINT);
2500 INT16       WINAPI MulDiv16(INT16,INT16,INT16);
2501 /* FIXME This is defined in kernel32.spec !?*/
2502 INT       WINAPI MulDiv(INT,INT,INT);
2503 INT16       WINAPI OffsetClipRgn16(HDC16,INT16,INT16);
2504 INT       WINAPI OffsetClipRgn(HDC,INT,INT);
2505 INT16       WINAPI OffsetRgn16(HRGN16,INT16,INT16);
2506 INT       WINAPI OffsetRgn(HRGN,INT,INT);
2507 BOOL16      WINAPI OffsetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16);
2508 BOOL      WINAPI OffsetViewportOrgEx(HDC,INT,INT,LPPOINT);
2509 BOOL16      WINAPI OffsetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16);
2510 BOOL      WINAPI OffsetWindowOrgEx(HDC,INT,INT,LPPOINT);
2511 BOOL16      WINAPI PaintRgn16(HDC16,HRGN16);
2512 BOOL      WINAPI PaintRgn(HDC,HRGN);
2513 BOOL16      WINAPI PatBlt16(HDC16,INT16,INT16,INT16,INT16,DWORD);
2514 BOOL      WINAPI PatBlt(HDC,INT,INT,INT,INT,DWORD);
2515 HRGN16      WINAPI PathToRegion16(HDC16);
2516 HRGN      WINAPI PathToRegion(HDC);
2517 BOOL16      WINAPI Pie16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
2518 BOOL      WINAPI Pie(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
2519 BOOL16      WINAPI PlayMetaFile16(HDC16,HMETAFILE16);
2520 BOOL      WINAPI PlayMetaFile(HDC,HMETAFILE);
2521 VOID        WINAPI PlayMetaFileRecord16(HDC16,LPHANDLETABLE16,LPMETARECORD,UINT16);
2522 BOOL      WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT);
2523 BOOL16      WINAPI PolyBezier16(HDC16,const POINT16*,INT16);
2524 BOOL      WINAPI PolyBezier(HDC,const POINT*,DWORD);
2525 BOOL16      WINAPI PolyBezierTo16(HDC16,const POINT16*,INT16);
2526 BOOL      WINAPI PolyBezierTo(HDC,const POINT*,DWORD);
2527 BOOL16      WINAPI PolyPolygon16(HDC16,const POINT16*,const INT16*,UINT16);
2528 BOOL      WINAPI PolyPolygon(HDC,const POINT*,const INT*,UINT);
2529 BOOL16      WINAPI Polygon16(HDC16,const POINT16*,INT16);
2530 BOOL      WINAPI Polygon(HDC,const POINT*,INT);
2531 BOOL16      WINAPI Polyline16(HDC16,const POINT16*,INT16);
2532 BOOL      WINAPI Polyline(HDC,const POINT*,INT);
2533 BOOL      WINAPI PolylineTo(HDC,const POINT*,DWORD);
2534 BOOL16      WINAPI PtInRegion16(HRGN16,INT16,INT16);
2535 BOOL      WINAPI PtInRegion(HRGN,INT,INT);
2536 BOOL16      WINAPI PtVisible16(HDC16,INT16,INT16);
2537 BOOL      WINAPI PtVisible(HDC,INT,INT);
2538 /* FIXME This is defined in user.spec !? */
2539 UINT16      WINAPI RealizePalette16(HDC16);
2540 UINT      WINAPI RealizePalette(HDC);
2541 BOOL16      WINAPI Rectangle16(HDC16,INT16,INT16,INT16,INT16);
2542 BOOL      WINAPI Rectangle(HDC,INT,INT,INT,INT);
2543 BOOL16      WINAPI RectInRegion16(HRGN16,const RECT16 *);
2544 BOOL      WINAPI RectInRegion(HRGN,const RECT *);
2545 BOOL16      WINAPI RectVisible16(HDC16,const RECT16*);
2546 BOOL      WINAPI RectVisible(HDC,const RECT*);
2547 BOOL16      WINAPI RemoveFontResource16(SEGPTR);
2548 BOOL      WINAPI RemoveFontResourceA(LPCSTR);
2549 BOOL      WINAPI RemoveFontResourceW(LPCWSTR);
2550 #define     RemoveFontResource WINELIB_NAME_AW(RemoveFontResource)
2551 HDC16       WINAPI ResetDC16(HDC16,const DEVMODE16 *);
2552 HDC       WINAPI ResetDCA(HDC,const DEVMODEA *);
2553 HDC       WINAPI ResetDCW(HDC,const DEVMODEW *);
2554 #define     ResetDC WINELIB_NAME_AW(ResetDC)
2555 BOOL16      WINAPI ResizePalette16(HPALETTE16,UINT16);
2556 BOOL      WINAPI ResizePalette(HPALETTE,UINT);
2557 BOOL16      WINAPI RestoreDC16(HDC16,INT16);
2558 BOOL      WINAPI RestoreDC(HDC,INT);
2559 BOOL16      WINAPI RoundRect16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16);
2560 BOOL      WINAPI RoundRect(HDC,INT,INT,INT,INT,INT,INT);
2561 INT16       WINAPI SaveDC16(HDC16);
2562 INT       WINAPI SaveDC(HDC);
2563 BOOL16      WINAPI ScaleViewportExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16);
2564 BOOL      WINAPI ScaleViewportExtEx(HDC,INT,INT,INT,INT,LPSIZE);
2565 BOOL16      WINAPI ScaleWindowExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16);
2566 BOOL      WINAPI ScaleWindowExtEx(HDC,INT,INT,INT,INT,LPSIZE);
2567 BOOL16      WINAPI SelectClipPath16(HDC16,INT16);
2568 BOOL      WINAPI SelectClipPath(HDC,INT);
2569 INT16       WINAPI SelectClipRgn16(HDC16,HRGN16);
2570 INT       WINAPI SelectClipRgn(HDC,HRGN);
2571 HGDIOBJ16   WINAPI SelectObject16(HDC16,HGDIOBJ16);
2572 HGDIOBJ   WINAPI SelectObject(HDC,HGDIOBJ);
2573 /* FIXME This is defined in user.spec !? */
2574 HPALETTE16  WINAPI SelectPalette16(HDC16,HPALETTE16,BOOL16);
2575 HPALETTE  WINAPI SelectPalette(HDC,HPALETTE,BOOL);
2576 INT16       WINAPI SetAbortProc16(HDC16,SEGPTR);
2577 INT       WINAPI SetAbortProc(HDC,ABORTPROC);
2578 INT16       WINAPI SetArcDirection16(HDC16,INT16);
2579 INT       WINAPI SetArcDirection(HDC,INT);
2580 LONG        WINAPI SetBitmapBits16(HBITMAP16,LONG,LPCVOID);
2581 LONG        WINAPI SetBitmapBits(HBITMAP,LONG,LPCVOID);
2582 BOOL16      WINAPI SetBitmapDimensionEx16(HBITMAP16,INT16,INT16,LPSIZE16);
2583 BOOL      WINAPI SetBitmapDimensionEx(HBITMAP,INT,INT,LPSIZE);
2584 COLORREF    WINAPI SetBkColor16(HDC16,COLORREF);
2585 COLORREF    WINAPI SetBkColor(HDC,COLORREF);
2586 INT16       WINAPI SetBkMode16(HDC16,INT16);
2587 INT       WINAPI SetBkMode(HDC,INT);
2588 UINT16      WINAPI SetBoundsRect16(HDC16,const RECT16*,UINT16);
2589 UINT      WINAPI SetBoundsRect(HDC,const RECT*,UINT);
2590 UINT16      WINAPI SetDIBColorTable16(HDC16,UINT16,UINT16,RGBQUAD*);
2591 UINT      WINAPI SetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
2592 INT16       WINAPI SetDIBits16(HDC16,HBITMAP16,UINT16,UINT16,LPCVOID,const BITMAPINFO*,UINT16);
2593 INT       WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
2594 INT16       WINAPI SetDIBitsToDevice16(HDC16,INT16,INT16,INT16,INT16,INT16,
2595                          INT16,UINT16,UINT16,LPCVOID,const BITMAPINFO*,UINT16);
2596 INT       WINAPI SetDIBitsToDevice(HDC,INT,INT,DWORD,DWORD,INT,
2597                          INT,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
2598 INT16       WINAPI SetMapMode16(HDC16,INT16);
2599 INT       WINAPI SetMapMode(HDC,INT);
2600 DWORD       WINAPI SetMapperFlags16(HDC16,DWORD);
2601 DWORD       WINAPI SetMapperFlags(HDC,DWORD);
2602 UINT16      WINAPI SetPaletteEntries16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY);
2603 UINT      WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
2604 COLORREF    WINAPI SetPixel16(HDC16,INT16,INT16,COLORREF);
2605 COLORREF    WINAPI SetPixel(HDC,INT,INT,COLORREF);
2606 BOOL      WINAPI SetPixelV(HDC,INT,INT,COLORREF);
2607 BOOL      WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
2608 INT16       WINAPI SetPolyFillMode16(HDC16,INT16);
2609 INT       WINAPI SetPolyFillMode(HDC,INT);
2610 VOID        WINAPI SetRectRgn16(HRGN16,INT16,INT16,INT16,INT16);
2611 VOID        WINAPI SetRectRgn(HRGN,INT,INT,INT,INT);
2612 INT16       WINAPI SetRelAbs16(HDC16,INT16);
2613 INT       WINAPI SetRelAbs(HDC,INT);
2614 INT16       WINAPI SetROP216(HDC16,INT16);
2615 INT       WINAPI SetROP2(HDC,INT);
2616 INT16       WINAPI SetStretchBltMode16(HDC16,INT16);
2617 INT       WINAPI SetStretchBltMode(HDC,INT);
2618 UINT16      WINAPI SetSystemPaletteUse16(HDC16,UINT16);
2619 UINT      WINAPI SetSystemPaletteUse(HDC,UINT);
2620 UINT16      WINAPI SetTextAlign16(HDC16,UINT16);
2621 UINT      WINAPI SetTextAlign(HDC,UINT);
2622 INT16       WINAPI SetTextCharacterExtra16(HDC16,INT16);
2623 INT       WINAPI SetTextCharacterExtra(HDC,INT);
2624 COLORREF    WINAPI SetTextColor16(HDC16,COLORREF);
2625 COLORREF    WINAPI SetTextColor(HDC,COLORREF);
2626 INT16       WINAPI SetTextJustification16(HDC16,INT16,INT16);
2627 BOOL      WINAPI SetTextJustification(HDC,INT,INT);
2628 BOOL16      WINAPI SetViewportExtEx16(HDC16,INT16,INT16,LPSIZE16);
2629 BOOL      WINAPI SetViewportExtEx(HDC,INT,INT,LPSIZE);
2630 BOOL16      WINAPI SetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16);
2631 BOOL      WINAPI SetViewportOrgEx(HDC,INT,INT,LPPOINT);
2632 BOOL16      WINAPI SetWindowExtEx16(HDC16,INT16,INT16,LPSIZE16);
2633 BOOL      WINAPI SetWindowExtEx(HDC,INT,INT,LPSIZE);
2634 BOOL16      WINAPI SetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16);
2635 BOOL      WINAPI SetWindowOrgEx(HDC,INT,INT,LPPOINT);
2636 HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,CONST BYTE*,HDC,CONST METAFILEPICT *);
2637 INT16       WINAPI StartDoc16(HDC16,const DOCINFO16*);
2638 INT       WINAPI StartDocA(HDC,const DOCINFOA*);
2639 INT       WINAPI StartDocW(HDC,const DOCINFOW*);
2640 #define     StartDoc WINELIB_NAME_AW(StartDoc)
2641 INT16       WINAPI StartPage16(HDC16);
2642 INT       WINAPI StartPage(HDC);
2643 INT16       WINAPI EndPage16(HDC16);
2644 INT       WINAPI EndPage(HDC);
2645 BOOL16      WINAPI StretchBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,
2646                                 INT16,INT16,INT16,DWORD);
2647 BOOL      WINAPI StretchBlt(HDC,INT,INT,INT,INT,HDC,INT,
2648                                 INT,INT,INT,DWORD);
2649 INT16       WINAPI StretchDIBits16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,
2650                        INT16,INT16,const VOID*,const BITMAPINFO*,UINT16,DWORD);
2651 INT       WINAPI StretchDIBits(HDC,INT,INT,INT,INT,INT,INT,
2652                        INT,INT,const VOID*,const BITMAPINFO*,UINT,DWORD);
2653 BOOL16      WINAPI StrokeAndFillPath16(HDC16);
2654 BOOL      WINAPI StrokeAndFillPath(HDC);
2655 BOOL16      WINAPI StrokePath16(HDC16);
2656 BOOL      WINAPI StrokePath(HDC);
2657 BOOL      WINAPI SwapBuffers(HDC);
2658 BOOL16      WINAPI TextOut16(HDC16,INT16,INT16,LPCSTR,INT16);
2659 BOOL      WINAPI TextOutA(HDC,INT,INT,LPCSTR,INT);
2660 BOOL      WINAPI TextOutW(HDC,INT,INT,LPCWSTR,INT);
2661 #define     TextOut WINELIB_NAME_AW(TextOut)
2662 BOOL16      WINAPI UnrealizeObject16(HGDIOBJ16);
2663 BOOL      WINAPI UnrealizeObject(HGDIOBJ);
2664 INT16       WINAPI UpdateColors16(HDC16);
2665 BOOL      WINAPI UpdateColors(HDC);
2666 BOOL16      WINAPI WidenPath16(HDC16);
2667 BOOL      WINAPI WidenPath(HDC);
2668
2669 #endif /* __WINE_WINGDI_H */