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

Last change on this file since 10313 was 10294, checked in by sandervl, 22 years ago

update

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