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