source: trunk/include/win/wingdi.h@ 2015

Last change on this file since 2015 was 1702, checked in by sandervl, 26 years ago

wingdi.h

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