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

Last change on this file since 10367 was 10318, checked in by sandervl, 22 years ago

updates

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