blob: 611e87cc988b7cb7b7608318a79853379dccbd3d [file] [log] [blame]
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00001/*
2 * Copyright (C) the Wine project
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18
Francois Gouget6371e832000-10-13 23:12:19 +000019#ifndef _WINGDI_
20#define _WINGDI_
21#ifndef NOGDI
Veksler Michael1346a3c1998-12-15 11:15:35 +000022
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +000023#ifdef __cplusplus
24extern "C" {
25#endif
26
Paul Quinn1beaae51998-12-15 15:38:36 +000027typedef struct _ABCFLOAT {
28 FLOAT abcfA;
29 FLOAT abcfB;
30 FLOAT abcfC;
31} ABCFLOAT, *PABCFLOAT, *LPABCFLOAT;
32
Huw D M Daviesa9f55c41999-05-08 12:45:18 +000033#define FONTMAPPER_MAX 10
Veksler Michael1346a3c1998-12-15 11:15:35 +000034
35typedef struct
36{
37 WORD wFirst;
38 WORD wSecond;
Alexandre Julliarda3960291999-02-26 11:11:13 +000039 INT iKernAmount;
40} KERNINGPAIR, *LPKERNINGPAIR;
Veksler Michael1346a3c1998-12-15 11:15:35 +000041
Veksler Michael1346a3c1998-12-15 11:15:35 +000042typedef 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;
Francois Gouget6c97e452000-11-10 22:33:45 +000069} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
Veksler Michael1346a3c1998-12-15 11:15:35 +000070
Huw D M Daviesa9f55c41999-05-08 12:45:18 +000071#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
Paul Quinn1beaae51998-12-15 15:38:36 +000096typedef 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;
Brad Pepers0bdff361999-02-09 15:37:16 +0000111
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000112#define CA_NEGATIVE 0x0001
113#define CA_LOG_FILTER 0x0002
114
115#define ILLUMINANT_DEVICE_DEFAULT 0
116#define ILLUMINANT_A 1
117#define ILLUMINANT_B 2
118#define ILLUMINANT_C 3
119#define ILLUMINANT_D50 4
120#define ILLUMINANT_D55 5
121#define ILLUMINANT_D65 6
122#define ILLUMINANT_D75 7
123#define ILLUMINANT_F2 8
124#define ILLUMINANT_MAX_INDEX ILLUMINANT_F2
125
126#define ILLUMINANT_TUNGSTEN ILLUMINANT_A
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000127#define ILLUMINANT_DAYLIGHT ILLUMINANT_C
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000128#define ILLUMINANT_FLUORESCENT ILLUMINANT_F2
129#define ILLUMINANT_NTSC ILLUMINANT_C
130
131#define RGB_GAMMA_MIN (WORD)02500
132#define RGB_GAMMA_MAX (WORD)65000
133
134#define REFERENCE_WHITE_MIN (WORD)6000
135#define REFERENCE_WHITE_MAX (WORD)10000
136#define REFERENCE_BLACK_MIN (WORD)0
137#define REFERENCE_BLACK_MAX (WORD)4000
138
139#define COLOR_ADJ_MIN ((SHORT)-100)
140#define COLOR_ADJ_MAX (SHORT) 100
141
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +0000142typedef LONG FXPT16DOT16, *LPFXPT16DOT16;
143typedef LONG FXPT2DOT30, *LPFXPT2DOT30;
144typedef LONG LCSCSTYPE;
145typedef LONG LCSGAMUTMATCH;
146
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000147#define LCS_CALIBRATED_RGB 0x00000000L
148#define LCS_DEVICE_RGB 0x00000001L
149#define LCS_DEVICE_CMYK 0x00000002L
150
151#define LCS_GM_BUSINESS 0x00000001L
152#define LCS_GM_GRAPHICS 0x00000002L
153#define LCS_GM_IMAGES 0x00000004L
154
155#define CM_OUT_OF_GAMUT 255
156#define CM_IN_GAMUT 0
157
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +0000158typedef struct tagCIEXYZ
159{
160 FXPT2DOT30 ciexyzX;
161 FXPT2DOT30 ciexyzY;
162 FXPT2DOT30 ciexyzZ;
163} CIEXYZ, *LPCIEXYZ;
164
165typedef struct tagCIEXYZTRIPLE
166{
167 CIEXYZ ciexyzRed;
168 CIEXYZ ciexyzGreen;
169 CIEXYZ ciexyzBlue;
170} CIEXYZTRIPLE, *LPCIEXYZTRIPLE;
171
172typedef struct tagLOGCOLORSPACEA
173{
174 DWORD lcsSignature;
175 DWORD lcsVersion;
176 DWORD lcsSize;
177 LCSCSTYPE lcsCSType;
178 LCSGAMUTMATCH lcsIntent;
179 CIEXYZTRIPLE lcsEndpoints;
180 DWORD lcsGammaRed;
181 DWORD lcsGammaGreen;
182 DWORD lcsGammaBlue;
Francois Gouget6371e832000-10-13 23:12:19 +0000183 CHAR lcsFilename[MAX_PATH];
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +0000184} LOGCOLORSPACEA, *LPLOGCOLORSPACEA;
185
186 typedef struct tagLOGCOLORSPACEW
187{
188 DWORD lcsSignature;
189 DWORD lcsVersion;
190 DWORD lcsSize;
191 LCSCSTYPE lcsCSType;
192 LCSGAMUTMATCH lcsIntent;
193 CIEXYZTRIPLE lcsEndpoints;
194 DWORD lcsGammaRed;
195 DWORD lcsGammaGreen;
196 DWORD lcsGammaBlue;
Francois Gouget6371e832000-10-13 23:12:19 +0000197 WCHAR lcsFilename[MAX_PATH];
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +0000198} LOGCOLORSPACEW, *LPLOGCOLORSPACEW;
199
200DECL_WINELIB_TYPE_AW(LPLOGCOLORSPACE)
201DECL_WINELIB_TYPE_AW(LOGCOLORSPACE)
202
Brad Pepers0bdff361999-02-09 15:37:16 +0000203#define DC_FIELDS 1
204#define DC_PAPERS 2
205#define DC_PAPERSIZE 3
206#define DC_MINEXTENT 4
207#define DC_MAXEXTENT 5
208#define DC_BINS 6
209#define DC_DUPLEX 7
210#define DC_SIZE 8
211#define DC_EXTRA 9
212#define DC_VERSION 10
213#define DC_DRIVER 11
214#define DC_BINNAMES 12
215#define DC_ENUMRESOLUTIONS 13
216#define DC_FILEDEPENDENCIES 14
217#define DC_TRUETYPE 15
218#define DC_PAPERNAMES 16
219#define DC_ORIENTATION 17
220#define DC_COPIES 18
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +0000221#define DC_BINADJUST 19
222#define DC_EMF_COMPLIANT 20
223#define DC_DATATYPE_PRODUCED 21
224#define DC_COLLATE 22
225#define DC_MANUFACTURER 23
226#define DC_MODEL 24
Huw D M Davies4e877161999-09-03 16:43:56 +0000227#define DC_PERSONALITY 25
228#define DC_PRINTRATE 26
229#define DC_PRINTRATEUNIT 27
230#define DC_PRINTERMEM 28
231#define DC_MEDIAREADY 29
232#define DC_STAPLE 30
233#define DC_PRINTRATEPPM 31
234#define DC_COLORDEVICE 32
235#define DC_NUP 33
Andrew John Hughesf1028ea2003-01-31 03:24:33 +0000236#define DC_MEDIATYPENAMES 34
237#define DC_MEDIATYPES 35
Brad Pepers0bdff361999-02-09 15:37:16 +0000238
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000239#define DCTT_BITMAP 0x00000001L
240#define DCTT_DOWNLOAD 0x00000002L
241#define DCTT_SUBDEV 0x00000004L
242#define DCTT_DOWNLOAD_OUTLINE 0x00000008L
243
244#define DCBA_FACEUPNONE 0x0000
245#define DCBA_FACEUPCENTER 0x0001
246#define DCBA_FACEUPLEFT 0x0002
247#define DCBA_FACEUPRIGHT 0x0003
248#define DCBA_FACEDOWNNONE 0x0100
249#define DCBA_FACEDOWNCENTER 0x0101
250#define DCBA_FACEDOWNLEFT 0x0102
251#define DCBA_FACEDOWNRIGHT 0x0103
252
Huw D M Davies4e877161999-09-03 16:43:56 +0000253#define PRINTRATEUNIT_PPM 1
254#define PRINTRATEUNIT_CPS 2
255#define PRINTRATEUNIT_LPM 3
256#define PRINTRATEUNIT_IPM 4
257
Brad Pepers0bdff361999-02-09 15:37:16 +0000258/* Flag returned from Escape QUERYDIBSUPPORT */
259#define QDI_SETDIBITS 1
260#define QDI_GETDIBITS 2
261#define QDI_DIBTOSCREEN 4
262#define QDI_STRETCHDIB 8
263
264
Brad Pepers0bdff361999-02-09 15:37:16 +0000265/* GDI Escape commands */
266#define NEWFRAME 1
267#define ABORTDOC 2
268#define NEXTBAND 3
269#define SETCOLORTABLE 4
270#define GETCOLORTABLE 5
271#define FLUSHOUTPUT 6
272#define DRAFTMODE 7
273#define QUERYESCSUPPORT 8
274#define SETABORTPROC 9
275#define STARTDOC 10
276#define ENDDOC 11
277#define GETPHYSPAGESIZE 12
278#define GETPRINTINGOFFSET 13
279#define GETSCALINGFACTOR 14
280#define MFCOMMENT 15
281#define GETPENWIDTH 16
282#define SETCOPYCOUNT 17
283#define SELECTPAPERSOURCE 18
284#define DEVICEDATA 19
285#define PASSTHROUGH 19
286#define GETTECHNOLGY 20
287#define GETTECHNOLOGY 20 /* yes, both of them */
288#define SETLINECAP 21
289#define SETLINEJOIN 22
290#define SETMITERLIMIT 23
291#define BANDINFO 24
292#define DRAWPATTERNRECT 25
293#define GETVECTORPENSIZE 26
294#define GETVECTORBRUSHSIZE 27
295#define ENABLEDUPLEX 28
296#define GETSETPAPERBINS 29
297#define GETSETPRINTORIENT 30
298#define ENUMPAPERBINS 31
299#define SETDIBSCALING 32
300#define EPSPRINTING 33
301#define ENUMPAPERMETRICS 34
302#define GETSETPAPERMETRICS 35
303#define POSTSCRIPT_DATA 37
304#define POSTSCRIPT_IGNORE 38
305#define MOUSETRAILS 39
306#define GETDEVICEUNITS 42
307
Jim Aston10141fe1999-04-25 12:31:20 +0000308#define DESKTOPVERTRES 117
309#define DESKTOPHORZRES 118
310
Brad Pepers0bdff361999-02-09 15:37:16 +0000311#define GETEXTENDEDTEXTMETRICS 256
312#define GETEXTENTTABLE 257
313#define GETPAIRKERNTABLE 258
314#define GETTRACKKERNTABLE 259
315#define EXTTEXTOUT 512
316#define GETFACENAME 513
317#define DOWNLOADFACE 514
318#define ENABLERELATIVEWIDTHS 768
319#define ENABLEPAIRKERNING 769
320#define SETKERNTRACK 770
321#define SETALLJUSTVALUES 771
322#define SETCHARSET 772
323
324#define STRETCHBLT 2048
325#define GETSETSCREENPARAMS 3072
326#define QUERYDIBSUPPORT 3073
327#define BEGIN_PATH 4096
328#define CLIP_TO_PATH 4097
329#define END_PATH 4098
330#define EXT_DEVICE_CAPS 4099
331#define RESTORE_CTM 4100
332#define SAVE_CTM 4101
333#define SET_ARC_DIRECTION 4102
334#define SET_BACKGROUND_COLOR 4103
335#define SET_POLY_MODE 4104
336#define SET_SCREEN_ANGLE 4105
337#define SET_SPREAD 4106
338#define TRANSFORM_CTM 4107
339#define SET_CLIP_BOX 4108
340#define SET_BOUNDS 4109
341#define SET_MIRROR_MODE 4110
342#define OPENCHANNEL 4110
343#define DOWNLOADHEADER 4111
344#define CLOSECHANNEL 4112
345#define POSTSCRIPT_PASSTHROUGH 4115
346#define ENCAPSULATED_POSTSCRIPT 4116
Marcus Meissnerf30b0352001-05-08 00:10:52 +0000347#define POSTSCRIPT_IDENTIFY 4117
348#define POSTSCRIPT_INJECTION 4118
349
350/* for POSTSCRIPT_IDENTIFY */
351#define PSIDENT_GDICENTRIC 0
352#define PSIDENT_PSCENTRIC 1
353
Brad Pepers0bdff361999-02-09 15:37:16 +0000354
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000355#define QDI_SETDIBITS 1
356#define QDI_GETDIBITS 2
357#define QDI_DIBTOSCREEN 4
358#define QDI_STRETCHDIB 8
359
Brad Pepers0bdff361999-02-09 15:37:16 +0000360/* 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
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000368#define PR_JOBSTATUS 0
Brad Pepers0bdff361999-02-09 15:37:16 +0000369
Veksler Michael1346a3c1998-12-15 11:15:35 +0000370 /* Raster operations */
371
372#define R2_BLACK 1
373#define R2_NOTMERGEPEN 2
374#define R2_MASKNOTPEN 3
375#define R2_NOTCOPYPEN 4
376#define R2_MASKPENNOT 5
377#define R2_NOT 6
378#define R2_XORPEN 7
379#define R2_NOTMASKPEN 8
380#define R2_MASKPEN 9
381#define R2_NOTXORPEN 10
382#define R2_NOP 11
383#define R2_MERGENOTPEN 12
384#define R2_COPYPEN 13
385#define R2_MERGEPENNOT 14
386#define R2_MERGEPEN 15
387#define R2_WHITE 16
388
389#define SRCCOPY 0xcc0020
390#define SRCPAINT 0xee0086
391#define SRCAND 0x8800c6
392#define SRCINVERT 0x660046
393#define SRCERASE 0x440328
394#define NOTSRCCOPY 0x330008
395#define NOTSRCERASE 0x1100a6
396#define MERGECOPY 0xc000ca
397#define MERGEPAINT 0xbb0226
398#define PATCOPY 0xf00021
399#define PATPAINT 0xfb0a09
400#define PATINVERT 0x5a0049
401#define DSTINVERT 0x550009
402#define BLACKNESS 0x000042
403#define WHITENESS 0xff0062
404
405 /* StretchBlt() modes */
406#define BLACKONWHITE 1
407#define WHITEONBLACK 2
408#define COLORONCOLOR 3
Huw D M Davies7603dea1999-04-25 09:24:23 +0000409#define HALFTONE 4
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000410#define MAXSTRETCHBLTMODE 4
Veksler Michael1346a3c1998-12-15 11:15:35 +0000411
412#define STRETCH_ANDSCANS BLACKONWHITE
413#define STRETCH_ORSCANS WHITEONBLACK
414#define STRETCH_DELETESCANS COLORONCOLOR
Huw D M Davies7603dea1999-04-25 09:24:23 +0000415#define STRETCH_HALFTONE HALFTONE
Veksler Michael1346a3c1998-12-15 11:15:35 +0000416
417 /* Colors */
418
Warren Baird93a86872003-02-12 01:15:27 +0000419#define RGB(r,g,b) ((COLORREF)((BYTE)(r) | ((BYTE)(g) << 8) | ((BYTE)(b) << 16)))
Veksler Michael1346a3c1998-12-15 11:15:35 +0000420#define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b))
421#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (WORD)(i)))
422
Dimitrie O. Paun643b7c92003-09-11 20:40:57 +0000423#define GetRValue(rgb) ((BYTE) (rgb) )
424#define GetGValue(rgb) ((BYTE) ((rgb) >> 8))
425#define GetBValue(rgb) ((BYTE) ((rgb) >> 16))
Veksler Michael1346a3c1998-12-15 11:15:35 +0000426
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000427#define GetKValue(cmyk) ((BYTE) (cmyk) )
Vincent BĂ©ron95ee2e22002-09-16 22:35:24 +0000428#define GetYValue(cmyk) ((BYTE) ((cmyk) >> 8))
429#define GetMValue(cmyk) ((BYTE) ((cmyk) >> 16))
430#define GetCValue(cmyk) ((BYTE) ((cmyk) >> 24))
Veksler Michael1346a3c1998-12-15 11:15:35 +0000431
Juraj Hercekfc453962002-09-16 19:28:36 +0000432#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24)))
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000433
Veksler Michael1346a3c1998-12-15 11:15:35 +0000434
435#define ICM_OFF 1
436#define ICM_ON 2
437#define ICM_QUERY 3
438
439 /* Bounds Accumulation APIs */
440#define DCB_RESET 0x0001
441#define DCB_ACCUMULATE 0x0002
442#define DCB_DIRTY DCB_ACCUMULATE
443#define DCB_SET (DCB_RESET | DCB_ACCUMULATE)
444#define DCB_ENABLE 0x0004
445#define DCB_DISABLE 0x0008
446
Veksler Michael1346a3c1998-12-15 11:15:35 +0000447typedef struct
448{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000449 LONG paXCount;
450 LONG paYCount;
451 LONG paXExt;
452 LONG paYExt;
453 BYTE paRGBs;
Francois Gouget6c97e452000-11-10 22:33:45 +0000454} PELARRAY, *PPELARRAY, *LPPELARRAY;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000455
456 /* Bitmaps */
Veksler Michael1346a3c1998-12-15 11:15:35 +0000457
458typedef struct
459{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000460 INT bmType;
461 INT bmWidth;
462 INT bmHeight;
463 INT bmWidthBytes;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000464 WORD bmPlanes;
465 WORD bmBitsPixel;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000466 LPVOID bmBits;
Francois Gouget6c97e452000-11-10 22:33:45 +0000467} BITMAP, *PBITMAP, *LPBITMAP;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000468
Veksler Michael1346a3c1998-12-15 11:15:35 +0000469
470 /* Brushes */
471
472typedef struct
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000473{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000474 UINT lbStyle;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000475 COLORREF lbColor;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000476 INT lbHatch;
Francois Gouget6c97e452000-11-10 22:33:45 +0000477} LOGBRUSH, *PLOGBRUSH, *LPLOGBRUSH;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000478
Francois Gouget6c97e452000-11-10 22:33:45 +0000479typedef LOGBRUSH PATTERN, *PPATTERN, *LPPATTERN;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000480
Veksler Michael1346a3c1998-12-15 11:15:35 +0000481
482 /* Brush styles */
483#define BS_SOLID 0
484#define BS_NULL 1
485#define BS_HOLLOW 1
486#define BS_HATCHED 2
487#define BS_PATTERN 3
488#define BS_INDEXED 4
489#define BS_DIBPATTERN 5
490#define BS_DIBPATTERNPT 6
491#define BS_PATTERN8X8 7
492#define BS_DIBPATTERN8X8 8
493#define BS_MONOPATTERN 9
494
495 /* Hatch styles */
496#define HS_HORIZONTAL 0
497#define HS_VERTICAL 1
498#define HS_FDIAGONAL 2
499#define HS_BDIAGONAL 3
500#define HS_CROSS 4
501#define HS_DIAGCROSS 5
502
503 /* Fonts */
504
505#define LF_FACESIZE 32
506#define LF_FULLFACESIZE 64
507
508#define RASTER_FONTTYPE 0x0001
509#define DEVICE_FONTTYPE 0x0002
510#define TRUETYPE_FONTTYPE 0x0004
511
512typedef struct
513{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000514 LONG lfHeight;
515 LONG lfWidth;
516 LONG lfEscapement;
517 LONG lfOrientation;
518 LONG lfWeight;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000519 BYTE lfItalic;
520 BYTE lfUnderline;
521 BYTE lfStrikeOut;
522 BYTE lfCharSet;
523 BYTE lfOutPrecision;
524 BYTE lfClipPrecision;
525 BYTE lfQuality;
526 BYTE lfPitchAndFamily;
527 CHAR lfFaceName[LF_FACESIZE];
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +0000528} LOGFONTA, *PLOGFONTA, *LPLOGFONTA;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000529
530typedef struct
531{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000532 LONG lfHeight;
533 LONG lfWidth;
534 LONG lfEscapement;
535 LONG lfOrientation;
536 LONG lfWeight;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000537 BYTE lfItalic;
538 BYTE lfUnderline;
539 BYTE lfStrikeOut;
540 BYTE lfCharSet;
541 BYTE lfOutPrecision;
542 BYTE lfClipPrecision;
543 BYTE lfQuality;
544 BYTE lfPitchAndFamily;
545 WCHAR lfFaceName[LF_FACESIZE];
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +0000546} LOGFONTW, *PLOGFONTW, *LPLOGFONTW;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000547
548DECL_WINELIB_TYPE_AW(LOGFONT)
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +0000549DECL_WINELIB_TYPE_AW(PLOGFONT)
Veksler Michael1346a3c1998-12-15 11:15:35 +0000550DECL_WINELIB_TYPE_AW(LPLOGFONT)
551
552typedef struct
553{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000554 LOGFONTA elfLogFont;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000555 BYTE elfFullName[LF_FULLFACESIZE];
556 BYTE elfStyle[LF_FACESIZE];
Alexandre Julliarda3960291999-02-26 11:11:13 +0000557} ENUMLOGFONTA, *LPENUMLOGFONTA;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000558
559typedef struct
560{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000561 LOGFONTW elfLogFont;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000562 WCHAR elfFullName[LF_FULLFACESIZE];
563 WCHAR elfStyle[LF_FACESIZE];
Alexandre Julliarda3960291999-02-26 11:11:13 +0000564} ENUMLOGFONTW, *LPENUMLOGFONTW;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000565
Francois Gouget6c97e452000-11-10 22:33:45 +0000566DECL_WINELIB_TYPE_AW(ENUMLOGFONT)
567DECL_WINELIB_TYPE_AW(LPENUMLOGFONT)
568
Veksler Michael1346a3c1998-12-15 11:15:35 +0000569typedef struct
570{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000571 LOGFONTA elfLogFont;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000572 BYTE elfFullName[LF_FULLFACESIZE];
573 BYTE elfStyle[LF_FACESIZE];
574 BYTE elfScript[LF_FACESIZE];
Alexandre Julliarda3960291999-02-26 11:11:13 +0000575} ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000576
577typedef struct
578{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000579 LOGFONTW elfLogFont;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000580 WCHAR elfFullName[LF_FULLFACESIZE];
581 WCHAR elfStyle[LF_FACESIZE];
582 WCHAR elfScript[LF_FACESIZE];
Alexandre Julliarda3960291999-02-26 11:11:13 +0000583} ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000584
Francois Gouget6c97e452000-11-10 22:33:45 +0000585DECL_WINELIB_TYPE_AW(ENUMLOGFONTEX)
Veksler Michael1346a3c1998-12-15 11:15:35 +0000586DECL_WINELIB_TYPE_AW(LPENUMLOGFONTEX)
587
Douglas Ridgway4f7d9ed1998-12-18 17:38:39 +0000588/*
589 * The FONTSIGNATURE tells which Unicode ranges and which code pages
590 * have glyphs in a font.
591 *
592 * fsUsb 128-bit bitmap. The most significant bits are 10 (magic number).
593 * The remaining 126 bits map the Unicode ISO 10646 subranges
594 * for which the font provides glyphs.
595 *
596 * fsCsb 64-bit bitmap. The low 32 bits map the Windows codepages for
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000597 * which the font provides glyphs. The high 32 bits are for
Douglas Ridgway4f7d9ed1998-12-18 17:38:39 +0000598 * non Windows codepages.
599 */
Veksler Michael1346a3c1998-12-15 11:15:35 +0000600typedef struct
601{
602 DWORD fsUsb[4];
603 DWORD fsCsb[2];
Francois Gouget6c97e452000-11-10 22:33:45 +0000604} FONTSIGNATURE, *PFONTSIGNATURE, *LPFONTSIGNATURE;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000605
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000606typedef struct
Veksler Michael1346a3c1998-12-15 11:15:35 +0000607{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000608 UINT ciCharset; /* character set */
609 UINT ciACP; /* ANSI code page */
Veksler Michael1346a3c1998-12-15 11:15:35 +0000610 FONTSIGNATURE fs;
Francois Gouget6c97e452000-11-10 22:33:45 +0000611} CHARSETINFO, *PCHARSETINFO, *LPCHARSETINFO;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000612
Douglas Ridgway4f7d9ed1998-12-18 17:38:39 +0000613/* Flags for TranslateCharsetInfo */
Douglas Ridgwayab9e8bc1999-01-01 18:41:22 +0000614#define TCI_SRCCHARSET 1
615#define TCI_SRCCODEPAGE 2
616#define TCI_SRCFONTSIG 3
Douglas Ridgway4f7d9ed1998-12-18 17:38:39 +0000617
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000618typedef struct
619{
620 DWORD lsUsb[4];
621 DWORD lsCsbDefault[2];
622 DWORD lsCsbSupported[2];
Patrik Stridvallba9dc782002-11-04 22:43:24 +0000623} LOCALESIGNATURE, *PLOCALESIGNATURE, *LPLOCALESIGNATURE;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000624
625
Veksler Michael1346a3c1998-12-15 11:15:35 +0000626/* Flags for ModifyWorldTransform */
627#define MWT_IDENTITY 1
628#define MWT_LEFTMULTIPLY 2
629#define MWT_RIGHTMULTIPLY 3
Patrik Stridvall564d3802000-10-22 23:55:15 +0000630#define MWT_MIN MWT_IDENTITY
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000631#define MWT_MAX MWT_RIGHTMULTIPLY
Veksler Michael1346a3c1998-12-15 11:15:35 +0000632
Alexandre Julliard8da12c41999-01-17 16:55:11 +0000633/* Object Definitions for EnumObjects() */
634#define OBJ_PEN 1
635#define OBJ_BRUSH 2
636#define OBJ_DC 3
637#define OBJ_METADC 4
638#define OBJ_PAL 5
639#define OBJ_FONT 6
640#define OBJ_BITMAP 7
641#define OBJ_REGION 8
642#define OBJ_METAFILE 9
643#define OBJ_MEMDC 10
644#define OBJ_EXTPEN 11
645#define OBJ_ENHMETADC 12
646#define OBJ_ENHMETAFILE 13
647
Veksler Michael1346a3c1998-12-15 11:15:35 +0000648typedef struct
649{
650 FLOAT eM11;
651 FLOAT eM12;
652 FLOAT eM21;
653 FLOAT eM22;
654 FLOAT eDx;
655 FLOAT eDy;
Francois Gouget6c97e452000-11-10 22:33:45 +0000656} XFORM, *PXFORM, *LPXFORM;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000657
Veksler Michael1346a3c1998-12-15 11:15:35 +0000658 /* lfWeight values */
659#define FW_DONTCARE 0
660#define FW_THIN 100
661#define FW_EXTRALIGHT 200
662#define FW_ULTRALIGHT 200
663#define FW_LIGHT 300
664#define FW_NORMAL 400
665#define FW_REGULAR 400
666#define FW_MEDIUM 500
667#define FW_SEMIBOLD 600
668#define FW_DEMIBOLD 600
669#define FW_BOLD 700
670#define FW_EXTRABOLD 800
671#define FW_ULTRABOLD 800
672#define FW_HEAVY 900
673#define FW_BLACK 900
674
675 /* lfCharSet values */
Douglas Ridgwayab9e8bc1999-01-01 18:41:22 +0000676#define ANSI_CHARSET (BYTE)0 /* CP1252, ansi-0, iso8859-{1,15} */
677#define DEFAULT_CHARSET (BYTE)1
678#define SYMBOL_CHARSET (BYTE)2
679#define SHIFTJIS_CHARSET (BYTE)128 /* CP932 */
680#define HANGEUL_CHARSET (BYTE)129 /* CP949, ksc5601.1987-0 */
681#define HANGUL_CHARSET HANGEUL_CHARSET
682#define GB2312_CHARSET (BYTE)134 /* CP936, gb2312.1980-0 */
683#define CHINESEBIG5_CHARSET (BYTE)136 /* CP950, big5.et-0 */
684#define GREEK_CHARSET (BYTE)161 /* CP1253 */
685#define TURKISH_CHARSET (BYTE)162 /* CP1254, -iso8859-9 */
686#define HEBREW_CHARSET (BYTE)177 /* CP1255, -iso8859-8 */
687#define ARABIC_CHARSET (BYTE)178 /* CP1256, -iso8859-6 */
Nerijus Baliunasc4b8b262000-11-11 00:34:32 +0000688#define BALTIC_CHARSET (BYTE)186 /* CP1257, -iso8859-13 */
Huw D M Davies8da26fb2002-06-22 01:19:29 +0000689#define VIETNAMESE_CHARSET (BYTE)163 /* CP1258 */
Douglas Ridgwayab9e8bc1999-01-01 18:41:22 +0000690#define RUSSIAN_CHARSET (BYTE)204 /* CP1251, -iso8859-5 */
691#define EE_CHARSET (BYTE)238 /* CP1250, -iso8859-2 */
692#define EASTEUROPE_CHARSET EE_CHARSET
693#define THAI_CHARSET (BYTE)222 /* CP874, iso8859-11, tis620 */
694#define JOHAB_CHARSET (BYTE)130 /* korean (johab) CP1361 */
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000695#define MAC_CHARSET (BYTE)77
Douglas Ridgwayab9e8bc1999-01-01 18:41:22 +0000696#define OEM_CHARSET (BYTE)255
Veksler Michael1346a3c1998-12-15 11:15:35 +0000697/* I don't know if the values of *_CHARSET macros are defined in Windows
698 * or if we can choose them as we want. -- srtxg
699 */
Douglas Ridgwayab9e8bc1999-01-01 18:41:22 +0000700#define VISCII_CHARSET (BYTE)240 /* viscii1.1-1 */
701#define TCVN_CHARSET (BYTE)241 /* tcvn-0 */
702#define KOI8_CHARSET (BYTE)242 /* koi8-{r,u,ru} */
703#define ISO3_CHARSET (BYTE)243 /* iso8859-3 */
704#define ISO4_CHARSET (BYTE)244 /* iso8859-4 */
Nerijus Baliunasc4b8b262000-11-11 00:34:32 +0000705#define ISO10_CHARSET (BYTE)245 /* iso8859-10 */
706#define CELTIC_CHARSET (BYTE)246 /* iso8859-14 */
Veksler Michael1346a3c1998-12-15 11:15:35 +0000707
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000708#define FS_LATIN1 0x00000001L
709#define FS_LATIN2 0x00000002L
710#define FS_CYRILLIC 0x00000004L
711#define FS_GREEK 0x00000008L
712#define FS_TURKISH 0x00000010L
713#define FS_HEBREW 0x00000020L
714#define FS_ARABIC 0x00000040L
715#define FS_BALTIC 0x00000080L
716#define FS_VIETNAMESE 0x00000100L
717#define FS_THAI 0x00010000L
718#define FS_JISJAPAN 0x00020000L
719#define FS_CHINESESIMP 0x00040000L
720#define FS_WANSUNG 0x00080000L
721#define FS_CHINESETRAD 0x00100000L
722#define FS_JOHAB 0x00200000L
723#define FS_SYMBOL 0x80000000L
724
Veksler Michael1346a3c1998-12-15 11:15:35 +0000725 /* lfOutPrecision values */
726#define OUT_DEFAULT_PRECIS 0
727#define OUT_STRING_PRECIS 1
728#define OUT_CHARACTER_PRECIS 2
729#define OUT_STROKE_PRECIS 3
730#define OUT_TT_PRECIS 4
731#define OUT_DEVICE_PRECIS 5
732#define OUT_RASTER_PRECIS 6
733#define OUT_TT_ONLY_PRECIS 7
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000734#define OUT_OUTLINE_PRECIS 8
Veksler Michael1346a3c1998-12-15 11:15:35 +0000735
736 /* lfClipPrecision values */
737#define CLIP_DEFAULT_PRECIS 0x00
738#define CLIP_CHARACTER_PRECIS 0x01
739#define CLIP_STROKE_PRECIS 0x02
740#define CLIP_MASK 0x0F
741#define CLIP_LH_ANGLES 0x10
742#define CLIP_TT_ALWAYS 0x20
743#define CLIP_EMBEDDED 0x80
744
745 /* lfQuality values */
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000746#define DEFAULT_QUALITY 0
747#define DRAFT_QUALITY 1
748#define PROOF_QUALITY 2
749#define NONANTIALIASED_QUALITY 3
750#define ANTIALIASED_QUALITY 4
Veksler Michael1346a3c1998-12-15 11:15:35 +0000751
752 /* lfPitchAndFamily pitch values */
753#define DEFAULT_PITCH 0x00
754#define FIXED_PITCH 0x01
755#define VARIABLE_PITCH 0x02
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000756#define MONO_FONT 0x08
757
Veksler Michael1346a3c1998-12-15 11:15:35 +0000758#define FF_DONTCARE 0x00
759#define FF_ROMAN 0x10
760#define FF_SWISS 0x20
761#define FF_MODERN 0x30
762#define FF_SCRIPT 0x40
763#define FF_DECORATIVE 0x50
764
Jon Griffiths7c6ebdd2003-03-15 19:35:52 +0000765#ifndef _TEXTMETRIC_DEFINED
766#define _TEXTMETRIC_DEFINED
767
Veksler Michael1346a3c1998-12-15 11:15:35 +0000768typedef struct
769{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000770 LONG tmHeight;
771 LONG tmAscent;
772 LONG tmDescent;
773 LONG tmInternalLeading;
774 LONG tmExternalLeading;
775 LONG tmAveCharWidth;
776 LONG tmMaxCharWidth;
777 LONG tmWeight;
778 LONG tmOverhang;
779 LONG tmDigitizedAspectX;
780 LONG tmDigitizedAspectY;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000781 BYTE tmFirstChar;
782 BYTE tmLastChar;
783 BYTE tmDefaultChar;
784 BYTE tmBreakChar;
785 BYTE tmItalic;
786 BYTE tmUnderlined;
787 BYTE tmStruckOut;
788 BYTE tmPitchAndFamily;
789 BYTE tmCharSet;
Matthew Cline4ecb75b2000-02-12 19:26:07 +0000790} TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000791
792typedef struct
793{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000794 LONG tmHeight;
795 LONG tmAscent;
796 LONG tmDescent;
797 LONG tmInternalLeading;
798 LONG tmExternalLeading;
799 LONG tmAveCharWidth;
800 LONG tmMaxCharWidth;
801 LONG tmWeight;
802 LONG tmOverhang;
803 LONG tmDigitizedAspectX;
804 LONG tmDigitizedAspectY;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000805 WCHAR tmFirstChar;
806 WCHAR tmLastChar;
807 WCHAR tmDefaultChar;
808 WCHAR tmBreakChar;
809 BYTE tmItalic;
810 BYTE tmUnderlined;
811 BYTE tmStruckOut;
812 BYTE tmPitchAndFamily;
813 BYTE tmCharSet;
Matthew Cline4ecb75b2000-02-12 19:26:07 +0000814} TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000815
816DECL_WINELIB_TYPE_AW(TEXTMETRIC)
Matthew Cline4ecb75b2000-02-12 19:26:07 +0000817DECL_WINELIB_TYPE_AW(PTEXTMETRIC)
Veksler Michael1346a3c1998-12-15 11:15:35 +0000818DECL_WINELIB_TYPE_AW(LPTEXTMETRIC)
Jon Griffiths7c6ebdd2003-03-15 19:35:52 +0000819#endif /* _TEXTMETRIC_DEFINED */
Veksler Michael1346a3c1998-12-15 11:15:35 +0000820
821
822typedef struct tagPANOSE
823{
824 BYTE bFamilyType;
825 BYTE bSerifStyle;
826 BYTE bWeight;
827 BYTE bProportion;
828 BYTE bContrast;
829 BYTE bStrokeVariation;
830 BYTE bArmStyle;
831 BYTE bLetterform;
832 BYTE bMidline;
833 BYTE bXHeight;
Francois Gouget6c97e452000-11-10 22:33:45 +0000834} PANOSE, *LPPANOSE;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000835
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000836#define PANOSE_COUNT 10
837
Huw D M Daviesd44b4282002-02-08 17:10:18 +0000838#define PAN_FAMILYTYPE_INDEX 0
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000839#define PAN_SERIFSTYLE_INDEX 1
840#define PAN_WEIGTH_INDEX 2
841#define PAN_PROPORTION_INDEX 3
842#define PAN_CONTRAST_INDEX 4
843#define PAN_STROKEVARIATION_INDEX 5
844#define PAN_ARMSTYLE_INDEX 6
845#define PAN_LETTERFORM_INDEX 7
846#define PAN_MIDLINE_INDEX 8
847#define PAN_XHEIGHT_INDEX 9
848
Huw D M Daviesad1e06e1999-04-24 11:47:26 +0000849#define PAN_CULTURE_LATIN 0
850
851#define PAN_ANY 0
852#define PAN_NO_FIT 1
853
854#define PAN_FAMILY_TEXT_DISPLAY 2
855#define PAN_FAMILY_SCRIPT 3
856#define PAN_FAMILY_DECORATIVE 4
857#define PAN_FAMILY_PICTORIAL 5
858
859#define PAN_SERIF_COVE 2
860#define PAN_SERIF_OBTUSE_COVE 3
861#define PAN_SERIF_SQUARE_COVE 4
862#define PAN_SERIF_OBTUSE_SQUARE_COVE 5
863#define PAN_SERIF_SQUARE 6
864#define PAN_SERIF_THIN 7
865#define PAN_SERIF_BONE 8
866#define PAN_SERIF_EXAGGERATED 9
867#define PAN_SERIF_TRIANGLE 10
868#define PAN_SERIF_NORMAL_SANS 11
869#define PAN_SERIF_OBTUSE_SANS 12
870#define PAN_SERIF_PERP_SANS 13
871#define PAN_SERIF_FLARED 14
872#define PAN_SERIF_ROUNDED 15
873
874#define PAN_WEIGHT_VERY_LIGHT 2
875#define PAN_WEIGHT_LIGHT 3
876#define PAN_WEIGHT_THIN 4
877#define PAN_WEIGHT_BOOK 5
878#define PAN_WEIGHT_MEDIUM 6
879#define PAN_WEIGHT_DEMI 7
880#define PAN_WEIGHT_BOLD 8
881#define PAN_WEIGHT_HEAVY 9
882#define PAN_WEIGHT_BLACK 10
883#define PAN_WEIGHT_NORD 11
884
885#define PAN_PROP_OLD_STYLE 2
886#define PAN_PROP_MODERN 3
887#define PAN_PROP_EVEN_WIDTH 4
888#define PAN_PROP_EXPANDED 5
889#define PAN_PROP_CONDENSED 6
890#define PAN_PROP_VERY_EXPANDED 7
891#define PAN_PROP_VERY_CONDENSED 8
892#define PAN_PROP_MONOSPACED 9
893
894#define PAN_CONTRAST_NONE 2
895#define PAN_CONTRAST_VERY_LOW 3
896#define PAN_CONTRAST_LOW 4
897#define PAN_CONTRAST_MEDIUM_LOW 5
898#define PAN_CONTRAST_MEDIUM 6
899#define PAN_CONTRAST_MEDIUM_HIGH 7
900#define PAN_CONTRAST_HIGH 8
901#define PAN_CONTRAST_VERY_HIGH 9
902
903#define PAN_STROKE_GRADUAL_DIAG 2
904#define PAN_STROKE_GRADUAL_TRAN 3
905#define PAN_STROKE_GRADUAL_VERT 4
906#define PAN_STROKE_GRADUAL_HORZ 5
907#define PAN_STROKE_RAPID_VERT 6
908#define PAN_STROKE_RAPID_HORZ 7
909#define PAN_STROKE_INSTANT_VERT 8
910
911#define PAN_STRAIGHT_ARMS_HORZ 2
912#define PAN_STRAIGHT_ARMS_WEDGE 3
913#define PAN_STRAIGHT_ARMS_VERT 4
914#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5
915#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6
916#define PAN_BENT_ARMS_HORZ 7
917#define PAN_BENT_ARMS_WEDGE 8
918#define PAN_BENT_ARMS_VERT 9
919#define PAN_BENT_ARMS_SINGLE_SERIF 10
920#define PAN_BENT_ARMS_DOUBLE_SERIF 11
921
922#define PAN_LETT_NORMAL_COMPACT 2
923#define PAN_LETT_NORMAL_WEIGHTED 3
924#define PAN_LETT_NORMAL_BOXED 4
925#define PAN_LETT_NORMAL_FLATTENED 5
926#define PAN_LETT_NORMAL_ROUNDED 6
927#define PAN_LETT_NORMAL_OFF_CENTER 7
928#define PAN_LETT_NORMAL_SQUARE 8
929#define PAN_LETT_OBLIQUE_COMPACT 9
930#define PAN_LETT_OBLIQUE_WEIGHTED 10
931#define PAN_LETT_OBLIQUE_BOXED 11
932#define PAN_LETT_OBLIQUE_FLATTENED 12
933#define PAN_LETT_OBLIQUE_ROUNDED 13
934#define PAN_LETT_OBLIQUE_OFF_CENTER 14
935#define PAN_LETT_OBLIQUE_SQUARE 15
936
937#define PAN_MIDLINE_STANDARD_TRIMMED 2
938#define PAN_MIDLINE_STANDARD_POINTED 3
939#define PAN_MIDLINE_STANDARD_SERIFED 4
940#define PAN_MIDLINE_HIGH_TRIMMED 5
941#define PAN_MIDLINE_HIGH_POINTED 6
942#define PAN_MIDLINE_HIGH_SERIFED 7
943#define PAN_MIDLINE_CONSTANT_TRIMMED 8
944#define PAN_MIDLINE_CONSTANT_POINTED 9
945#define PAN_MIDLINE_CONSTANT_SERIFED 10
946#define PAN_MIDLINE_LOW_TRIMMED 11
947#define PAN_MIDLINE_LOW_POINTED 12
948#define PAN_MIDLINE_LOW_SERIFED 13
949
950#define PAN_XHEIGHT_CONSTANT_SMALL 2
951#define PAN_XHEIGHT_CONSTANT_STANDARD 3
952#define PAN_XHEIGHT_CONSTANT_LARGE 4
953#define PAN_XHEIGHT_DUCKING_SMALL 5
954#define PAN_XHEIGHT_DUCKING_STANDARD 6
955#define PAN_XHEIGHT_DUCKING_LARGE 7
956
957#define ELF_VENDOR_SIZE 4
958typedef struct
959{
960 LOGFONTA elfLogFont;
961 BYTE elfFullName[LF_FULLFACESIZE];
962 BYTE elfStyle[LF_FACESIZE];
963 DWORD elfVersion;
964 DWORD elfStyleSize;
965 DWORD elfMatch;
966 DWORD elfReserved;
967 BYTE elfVendorId[ELF_VENDOR_SIZE];
968 DWORD elfCulture;
969 PANOSE elfPanose;
Francois Gouget6c97e452000-11-10 22:33:45 +0000970} EXTLOGFONTA, *PEXTLOGFONTA, *LPEXTLOGFONTA;
Huw D M Daviesad1e06e1999-04-24 11:47:26 +0000971
972typedef struct
973{
974 LOGFONTW elfLogFont;
975 WCHAR elfFullName[LF_FULLFACESIZE];
976 WCHAR elfStyle[LF_FACESIZE];
977 DWORD elfVersion;
978 DWORD elfStyleSize;
979 DWORD elfMatch;
980 DWORD elfReserved;
981 BYTE elfVendorId[ELF_VENDOR_SIZE];
982 DWORD elfCulture;
983 PANOSE elfPanose;
Francois Gouget6c97e452000-11-10 22:33:45 +0000984} EXTLOGFONTW, *PEXTLOGFONTW, *LPEXTLOGFONTW;
Huw D M Daviesad1e06e1999-04-24 11:47:26 +0000985
986DECL_WINELIB_TYPE_AW(EXTLOGFONT)
987DECL_WINELIB_TYPE_AW(PEXTLOGFONT)
Francois Gouget6c97e452000-11-10 22:33:45 +0000988DECL_WINELIB_TYPE_AW(LPEXTLOGFONT)
Veksler Michael1346a3c1998-12-15 11:15:35 +0000989
Huw D M Daviesa9f55c41999-05-08 12:45:18 +0000990#define ELF_VERSION 0
991#define ELF_CULTURE_LATIN 0
992
Alexandre Julliarda3960291999-02-26 11:11:13 +0000993typedef struct _OUTLINETEXTMETRICA
Veksler Michael1346a3c1998-12-15 11:15:35 +0000994{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000995 UINT otmSize;
996 TEXTMETRICA otmTextMetrics;
Huw D M Davies916a1a62001-03-13 23:31:40 +0000997 BYTE otmFiller;
Veksler Michael1346a3c1998-12-15 11:15:35 +0000998 PANOSE otmPanoseNumber;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000999 UINT otmfsSelection;
1000 UINT otmfsType;
1001 INT otmsCharSlopeRise;
1002 INT otmsCharSlopeRun;
1003 INT otmItalicAngle;
1004 UINT otmEMSquare;
1005 INT otmAscent;
1006 INT otmDescent;
1007 UINT otmLineGap;
1008 UINT otmsCapEmHeight;
1009 UINT otmsXHeight;
1010 RECT otmrcFontBox;
1011 INT otmMacAscent;
1012 INT otmMacDescent;
1013 UINT otmMacLineGap;
1014 UINT otmusMinimumPPEM;
1015 POINT otmptSubscriptSize;
1016 POINT otmptSubscriptOffset;
1017 POINT otmptSuperscriptSize;
1018 POINT otmptSuperscriptOffset;
1019 UINT otmsStrikeoutSize;
1020 INT otmsStrikeoutPosition;
1021 INT otmsUnderscoreSize;
1022 INT otmsUnderscorePosition;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001023 LPSTR otmpFamilyName;
1024 LPSTR otmpFaceName;
1025 LPSTR otmpStyleName;
1026 LPSTR otmpFullName;
Francois Gouget6c97e452000-11-10 22:33:45 +00001027} OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, *LPOUTLINETEXTMETRICA;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001028
Alexandre Julliarda3960291999-02-26 11:11:13 +00001029typedef struct _OUTLINETEXTMETRICW
Veksler Michael1346a3c1998-12-15 11:15:35 +00001030{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001031 UINT otmSize;
1032 TEXTMETRICW otmTextMetrics;
Huw D M Davies916a1a62001-03-13 23:31:40 +00001033 BYTE otmFiller;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001034 PANOSE otmPanoseNumber;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001035 UINT otmfsSelection;
1036 UINT otmfsType;
1037 INT otmsCharSlopeRise;
1038 INT otmsCharSlopeRun;
1039 INT otmItalicAngle;
1040 UINT otmEMSquare;
1041 INT otmAscent;
1042 INT otmDescent;
1043 UINT otmLineGap;
1044 UINT otmsCapEmHeight;
1045 UINT otmsXHeight;
1046 RECT otmrcFontBox;
1047 INT otmMacAscent;
1048 INT otmMacDescent;
1049 UINT otmMacLineGap;
1050 UINT otmusMinimumPPEM;
1051 POINT otmptSubscriptSize;
1052 POINT otmptSubscriptOffset;
1053 POINT otmptSuperscriptSize;
1054 POINT otmptSuperscriptOffset;
1055 UINT otmsStrikeoutSize;
1056 INT otmsStrikeoutPosition;
1057 INT otmsUnderscoreSize;
1058 INT otmsUnderscorePosition;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001059 LPSTR otmpFamilyName;
1060 LPSTR otmpFaceName;
1061 LPSTR otmpStyleName;
1062 LPSTR otmpFullName;
Francois Gouget6c97e452000-11-10 22:33:45 +00001063} OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, *LPOUTLINETEXTMETRICW;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001064
Veksler Michael1346a3c1998-12-15 11:15:35 +00001065DECL_WINELIB_TYPE_AW(OUTLINETEXTMETRIC)
Francois Gouget6c97e452000-11-10 22:33:45 +00001066DECL_WINELIB_TYPE_AW(POUTLINETEXTMETRIC)
Veksler Michael1346a3c1998-12-15 11:15:35 +00001067DECL_WINELIB_TYPE_AW(LPOUTLINETEXTMETRIC)
1068
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001069typedef struct
1070{
1071 INT x;
1072 INT y;
1073 UINT n;
1074 LPCSTR lpstr;
1075 UINT uiFlags;
1076 RECT rcl;
1077 INT *pdx;
Francois Gouget6c97e452000-11-10 22:33:45 +00001078} POLYTEXTA, *PPOLYTEXTA, *LPPOLYTEXTA;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001079
1080typedef struct
1081{
1082 INT x;
1083 INT y;
1084 UINT n;
1085 LPCWSTR lpstr;
1086 UINT uiFlags;
1087 RECT rcl;
1088 INT *pdx;
Francois Gouget6c97e452000-11-10 22:33:45 +00001089} POLYTEXTW, *PPOLYTEXTW, *LPPOLYTEXTW;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001090
1091DECL_WINELIB_TYPE_AW(POLYTEXT)
1092DECL_WINELIB_TYPE_AW(PPOLYTEXT)
Francois Gouget6c97e452000-11-10 22:33:45 +00001093DECL_WINELIB_TYPE_AW(LPPOLYTEXT)
Veksler Michael1346a3c1998-12-15 11:15:35 +00001094
1095
1096/* ntmFlags field flags */
1097#define NTM_REGULAR 0x00000040L
1098#define NTM_BOLD 0x00000020L
1099#define NTM_ITALIC 0x00000001L
1100
1101typedef struct
1102{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001103 LONG tmHeight;
1104 LONG tmAscent;
1105 LONG tmDescent;
1106 LONG tmInternalLeading;
1107 LONG tmExternalLeading;
1108 LONG tmAveCharWidth;
1109 LONG tmMaxCharWidth;
1110 LONG tmWeight;
1111 LONG tmOverhang;
1112 LONG tmDigitizedAspectX;
1113 LONG tmDigitizedAspectY;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001114 BYTE tmFirstChar;
1115 BYTE tmLastChar;
1116 BYTE tmDefaultChar;
1117 BYTE tmBreakChar;
1118 BYTE tmItalic;
1119 BYTE tmUnderlined;
1120 BYTE tmStruckOut;
1121 BYTE tmPitchAndFamily;
1122 BYTE tmCharSet;
1123 DWORD ntmFlags;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001124 UINT ntmSizeEM;
1125 UINT ntmCellHeight;
1126 UINT ntmAvgWidth;
Francois Gouget6c97e452000-11-10 22:33:45 +00001127} NEWTEXTMETRICA, *PNEWTEXTMETRICA, *LPNEWTEXTMETRICA;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001128
1129typedef struct
1130{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001131 LONG tmHeight;
1132 LONG tmAscent;
1133 LONG tmDescent;
1134 LONG tmInternalLeading;
1135 LONG tmExternalLeading;
1136 LONG tmAveCharWidth;
1137 LONG tmMaxCharWidth;
1138 LONG tmWeight;
1139 LONG tmOverhang;
1140 LONG tmDigitizedAspectX;
1141 LONG tmDigitizedAspectY;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001142 WCHAR tmFirstChar;
1143 WCHAR tmLastChar;
1144 WCHAR tmDefaultChar;
1145 WCHAR tmBreakChar;
1146 BYTE tmItalic;
1147 BYTE tmUnderlined;
1148 BYTE tmStruckOut;
1149 BYTE tmPitchAndFamily;
1150 BYTE tmCharSet;
1151 DWORD ntmFlags;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001152 UINT ntmSizeEM;
1153 UINT ntmCellHeight;
1154 UINT ntmAvgWidth;
Francois Gouget6c97e452000-11-10 22:33:45 +00001155} NEWTEXTMETRICW, *PNEWTEXTMETRICW, *LPNEWTEXTMETRICW;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001156
1157DECL_WINELIB_TYPE_AW(NEWTEXTMETRIC)
Francois Gouget6c97e452000-11-10 22:33:45 +00001158DECL_WINELIB_TYPE_AW(PNEWTEXTMETRIC)
Veksler Michael1346a3c1998-12-15 11:15:35 +00001159DECL_WINELIB_TYPE_AW(LPNEWTEXTMETRIC)
1160
1161typedef struct
1162{
Huw D M Davies26ee2ca2001-04-04 00:09:53 +00001163 NEWTEXTMETRICA ntmTm;
1164 FONTSIGNATURE ntmFontSig;
Patrik Stridvallba9dc782002-11-04 22:43:24 +00001165} NEWTEXTMETRICEXA;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001166
1167typedef struct
1168{
Huw D M Davies26ee2ca2001-04-04 00:09:53 +00001169 NEWTEXTMETRICW ntmTm;
1170 FONTSIGNATURE ntmFontSig;
Patrik Stridvallba9dc782002-11-04 22:43:24 +00001171} NEWTEXTMETRICEXW;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001172
1173DECL_WINELIB_TYPE_AW(NEWTEXTMETRICEX)
Veksler Michael1346a3c1998-12-15 11:15:35 +00001174
Dimitrie O. Pauncef59612003-01-03 19:12:55 +00001175#if defined(STRICT)
Patrik Stridvallc99c0222002-11-13 04:13:42 +00001176
1177#if !defined(NOTEXTMETRIC)
1178typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA *, const TEXTMETRICA *, DWORD, LPARAM);
1179typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW *, const TEXTMETRICW *, DWORD, LPARAM);
1180#else /* !defined(NOTEXTMETRIC) */
1181typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA *, const VOID *, DWORD, LPARAM);
1182typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW *, const VOID *, DWORD, LPARAM);
1183#endif /* !defined(NOTEXTMETRIC) */
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001184DECL_WINELIB_TYPE_AW(OLDFONTENUMPROC)
1185
Francois Gouget6c97e452000-11-10 22:33:45 +00001186typedef OLDFONTENUMPROCA FONTENUMPROCA;
1187typedef OLDFONTENUMPROCW FONTENUMPROCW;
1188DECL_WINELIB_TYPE_AW(FONTENUMPROC)
1189
Patrik Stridvallc99c0222002-11-13 04:13:42 +00001190typedef INT (CALLBACK *GOBJENUMPROC)(LPVOID, LPARAM);
1191typedef VOID (CALLBACK *LINEDDAPROC)(INT, INT, LPARAM);
Veksler Michael1346a3c1998-12-15 11:15:35 +00001192
Dimitrie O. Pauncef59612003-01-03 19:12:55 +00001193#else /* defined(STRICT) */
Patrik Stridvallc99c0222002-11-13 04:13:42 +00001194
1195typedef FARPROC OLDFONTENUMPROC;
1196
1197typedef FARPROC FONTENUMPROCA;
1198typedef FARPROC FONTENUMPROCW;
1199DECL_WINELIB_TYPE_AW(FONTENUMPROC)
1200
1201typedef FARPROC GOBJENUMPROC;
1202typedef FARPROC LINEDDAPROC;
1203
Dimitrie O. Pauncef59612003-01-03 19:12:55 +00001204#endif /* defined(STRICT) */
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001205
Veksler Michael1346a3c1998-12-15 11:15:35 +00001206 /* tmPitchAndFamily bits */
1207#define TMPF_FIXED_PITCH 1 /* means variable pitch */
1208#define TMPF_VECTOR 2
1209#define TMPF_TRUETYPE 4
1210#define TMPF_DEVICE 8
1211
1212 /* Text alignment */
1213#define TA_NOUPDATECP 0x00
1214#define TA_UPDATECP 0x01
1215#define TA_LEFT 0x00
1216#define TA_RIGHT 0x02
1217#define TA_CENTER 0x06
1218#define TA_TOP 0x00
1219#define TA_BOTTOM 0x08
1220#define TA_BASELINE 0x18
Francois Gouget6c97e452000-11-10 22:33:45 +00001221#define TA_RTLREADING 0x100
1222#define TA_MASK TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001223
1224#define VTA_BASELINE TA_BASELINE
1225#define VTA_LEFT TA_BOTTOM
1226#define VTA_RIGHT TA_TOP
1227#define VTA_CENTER TA_CENTER
1228#define VTA_BOTTOM TA_RIGHT
1229#define VTA_TOP TA_LEFT
1230
Veksler Michael1346a3c1998-12-15 11:15:35 +00001231
1232 /* ExtTextOut() parameters */
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001233#define ETO_GRAYED 0x0001
1234#define ETO_OPAQUE 0x0002
1235#define ETO_CLIPPED 0x0004
1236#define ETO_GLYPH_INDEX 0x0010
Matthew Lake18727102000-07-08 18:31:43 +00001237#define ETO_RTLREADING 0x0080
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001238#define ETO_IGNORELANGUAGE 0x1000
Veksler Michael1346a3c1998-12-15 11:15:35 +00001239
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001240#define ASPECT_FILTERING 0x0001
Veksler Michael1346a3c1998-12-15 11:15:35 +00001241
Dmitry Timoshkov2903ca12002-04-03 20:41:14 +00001242 /* for GetGlyphIndices() */
1243#define GGI_MARK_NONEXISTING_GLYPHS 0x0001
1244
Veksler Michael1346a3c1998-12-15 11:15:35 +00001245typedef struct
1246{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001247 UINT gmBlackBoxX;
1248 UINT gmBlackBoxY;
1249 POINT gmptGlyphOrigin;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001250 SHORT gmCellIncX;
1251 SHORT gmCellIncY;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001252} GLYPHMETRICS, *LPGLYPHMETRICS;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001253
Veksler Michael1346a3c1998-12-15 11:15:35 +00001254
1255#define GGO_METRICS 0
1256#define GGO_BITMAP 1
1257#define GGO_NATIVE 2
Huw D M Davies8da26fb2002-06-22 01:19:29 +00001258#define GGO_BEZIER 3
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001259#define GGO_GRAY2_BITMAP 4
1260#define GGO_GRAY4_BITMAP 5
1261#define GGO_GRAY8_BITMAP 6
1262#define GGO_GLYPH_INDEX 0x80
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00001263
Veksler Michael1346a3c1998-12-15 11:15:35 +00001264typedef struct
1265{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001266 WORD fract;
1267 SHORT value;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001268} FIXED;
1269
Paul Quinn89b21b41999-03-14 13:47:00 +00001270typedef struct tagPOINTFX
1271{
1272 FIXED x;
1273 FIXED y;
1274} POINTFX, *LPPOINTFX;
1275
1276typedef struct tagTTPOLYCURVE
1277{
1278 WORD wType;
1279 WORD cpfx;
1280 POINTFX apfx[1];
1281} TTPOLYCURVE, *LPTTPOLYCURVE;
1282
1283typedef struct tagTTPOLYGONHEADER
1284{
1285 DWORD cb;
1286 DWORD dwType;
1287 POINTFX pfxStart;
1288} TTPOLYGONHEADER, *LPTTPOLYGONHEADER;
1289
Veksler Michael1346a3c1998-12-15 11:15:35 +00001290typedef struct
1291{
1292 FIXED eM11;
1293 FIXED eM12;
1294 FIXED eM21;
1295 FIXED eM22;
1296} MAT2, *LPMAT2;
1297
1298 /* for GetCharABCWidths() */
1299typedef struct
1300{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001301 INT abcA;
1302 UINT abcB;
1303 INT abcC;
Francois Gouget6c97e452000-11-10 22:33:45 +00001304} ABC, *PABC, *LPABC;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001305
Veksler Michael1346a3c1998-12-15 11:15:35 +00001306
1307 /* for GetCharacterPlacement () */
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001308
1309#define GCP_DBCS 0x0001
1310#define GCP_REORDER 0x0002
1311#define GCP_USEKERNING 0x0008
1312#define GCP_GLYPHSHAPE 0x0010
1313#define GCP_LIGATE 0x0020
1314#define GCP_DIACRITIC 0x0100
1315#define GCP_KASHIDA 0x0200
1316#define GCP_ERROR 0x8000
1317#define FLI_MASK 0x103b
1318#define GCP_JUSTIFY 0x00010000L
1319#define FLI_GLYPHS 0x00040000L
1320#define GCP_CLASSIN 0x00080000L
1321#define GCP_MAXEXTENT 0x00100000L
1322#define GCP_JUSTIFYIN 0x00200000L
1323#define GCP_DISPLAYZWG 0x00400000L
1324#define GCP_SYMSWAPOFF 0x00800000L
1325#define GCP_NUMERICOVERRIDE 0x01000000L
1326#define GCP_NEUTRALOVERRIDE 0x02000000L
1327#define GCP_NUMERICSLATIN 0x04000000L
1328#define GCP_NUMERICSLOCAL 0x08000000L
1329
1330#define GCPCLASS_LATIN 1
1331#define GCPCLASS_HEBREW 2
1332#define GCPCLASS_ARABIC 3
1333#define GCPCLASS_NEUTRAL 4
1334#define GCPCLASS_LOCALNUMBER 5
1335#define GCPCLASS_LATINNUMBER 6
1336#define GCPCLASS_LATINNUMERICTERMINATOR 7
1337#define GCPCLASS_LATINNUMERICSEPARATOR 8
1338#define GCPCLASS_NUMERICSEPARATOR 9
1339#define GCPCLASS_PREBOUNDLTR 0x80
1340#define GCPCLASS_PREBOUNDRLT 0x40
1341#define GCPCLASS_POSTBOUNDLTR 0x20
1342#define GCPCLASS_POSTBOUNDRTL 0x10
1343
1344#define GCPGLYPH_LINKBEFORE 0x8000
1345#define GCPGLYPH_LINKAFTER 0x4000
1346
1347
1348typedef struct tagGCP_RESULTSA{
Veksler Michael1346a3c1998-12-15 11:15:35 +00001349 DWORD lStructSize;
1350 LPSTR lpOutString;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001351 UINT *lpOrder;
1352 INT *lpDx;
1353 INT *lpCaretPos;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001354 LPSTR lpClass;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001355 LPWSTR lpGlyphs;
1356 UINT nGlyphs;
1357 UINT nMaxFit;
Francois Gouget6c97e452000-11-10 22:33:45 +00001358} GCP_RESULTSA, *LPGCP_RESULTSA;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001359
Alexandre Julliarda3960291999-02-26 11:11:13 +00001360typedef struct tagGCP_RESULTSW
Veksler Michael1346a3c1998-12-15 11:15:35 +00001361{
1362 DWORD lStructSize;
1363 LPWSTR lpOutString;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001364 UINT *lpOrder;
1365 INT *lpDx;
1366 INT *lpCaretPos;
Huw D M Davies5b01b502002-04-03 22:08:27 +00001367 LPSTR lpClass;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001368 LPWSTR lpGlyphs;
1369 UINT nGlyphs;
1370 UINT nMaxFit;
Francois Gouget6c97e452000-11-10 22:33:45 +00001371} GCP_RESULTSW, *LPGCP_RESULTSW;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001372
1373DECL_WINELIB_TYPE_AW(GCP_RESULTS)
Francois Gouget6c97e452000-11-10 22:33:45 +00001374DECL_WINELIB_TYPE_AW(LPGCP_RESULTS)
Veksler Michael1346a3c1998-12-15 11:15:35 +00001375
1376 /* Rasterizer status */
1377typedef struct
1378{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001379 SHORT nSize;
1380 SHORT wFlags;
1381 SHORT nLanguageID;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001382} RASTERIZER_STATUS, *LPRASTERIZER_STATUS;
1383
1384#define TT_AVAILABLE 0x0001
1385#define TT_ENABLED 0x0002
1386
Jim Aston10141fe1999-04-25 12:31:20 +00001387#define TT_PRIM_LINE 1
1388#define TT_PRIM_QSPLINE 2
Huw D M Davies8da26fb2002-06-22 01:19:29 +00001389#define TT_PRIM_CSPLINE 3
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00001390#define TT_POLYGON_TYPE 24
Jim Aston10141fe1999-04-25 12:31:20 +00001391
Veksler Michael1346a3c1998-12-15 11:15:35 +00001392/* Get/SetSystemPaletteUse() values */
Andrew John Hughes6f929652003-02-01 00:36:38 +00001393#define SYSPAL_ERROR 0
1394#define SYSPAL_STATIC 1
1395#define SYSPAL_NOSTATIC 2
1396#define SYSPAL_NOSTATIC256 3
1397
Ove Kaaven0e32a2b2002-12-02 18:58:46 +00001398#ifndef _PALETTEENTRY_DEFINED
1399#define _PALETTEENTRY_DEFINED
Veksler Michael1346a3c1998-12-15 11:15:35 +00001400typedef struct tagPALETTEENTRY
1401{
1402 BYTE peRed, peGreen, peBlue, peFlags;
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +00001403} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
Ove Kaaven0e32a2b2002-12-02 18:58:46 +00001404#endif
Veksler Michael1346a3c1998-12-15 11:15:35 +00001405
1406/* Logical palette entry flags */
1407#define PC_RESERVED 0x01
1408#define PC_EXPLICIT 0x02
1409#define PC_NOCOLLAPSE 0x04
1410
Ove Kaaven0e32a2b2002-12-02 18:58:46 +00001411#ifndef _LOGPALETTE_DEFINED
1412#define _LOGPALETTE_DEFINED
Michael Veksler4405f3c1999-08-18 18:35:57 +00001413typedef struct tagLOGPALETTE
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00001414{
Veksler Michael1346a3c1998-12-15 11:15:35 +00001415 WORD palVersion;
1416 WORD palNumEntries;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001417 PALETTEENTRY palPalEntry[1];
Paul Quinnaaa83061999-06-05 15:23:20 +00001418} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE, *NPLOGPALETTE;
Ove Kaaven0e32a2b2002-12-02 18:58:46 +00001419#endif
Veksler Michael1346a3c1998-12-15 11:15:35 +00001420
1421 /* Pens */
1422
1423typedef struct
1424{
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00001425 UINT lopnStyle;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001426 POINT lopnWidth;
1427 COLORREF lopnColor;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001428} LOGPEN, *LPLOGPEN;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001429
Veksler Michael1346a3c1998-12-15 11:15:35 +00001430
Paul Quinn1beaae51998-12-15 15:38:36 +00001431typedef struct tagEXTLOGPEN
1432{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001433 DWORD elpPenStyle;
1434 DWORD elpWidth;
1435 UINT elpBrushStyle;
1436 COLORREF elpColor;
1437 LONG elpHatch;
1438 DWORD elpNumEntries;
1439 DWORD elpStyleEntry[1];
Paul Quinn1beaae51998-12-15 15:38:36 +00001440} EXTLOGPEN, *PEXTLOGPEN, *NPEXTLOGPEN, *LPEXTLOGPEN;
1441
Veksler Michael1346a3c1998-12-15 11:15:35 +00001442#define PS_SOLID 0x00000000
1443#define PS_DASH 0x00000001
1444#define PS_DOT 0x00000002
1445#define PS_DASHDOT 0x00000003
1446#define PS_DASHDOTDOT 0x00000004
1447#define PS_NULL 0x00000005
1448#define PS_INSIDEFRAME 0x00000006
1449#define PS_USERSTYLE 0x00000007
1450#define PS_ALTERNATE 0x00000008
1451#define PS_STYLE_MASK 0x0000000f
1452
1453#define PS_ENDCAP_ROUND 0x00000000
1454#define PS_ENDCAP_SQUARE 0x00000100
1455#define PS_ENDCAP_FLAT 0x00000200
1456#define PS_ENDCAP_MASK 0x00000f00
1457
1458#define PS_JOIN_ROUND 0x00000000
1459#define PS_JOIN_BEVEL 0x00001000
1460#define PS_JOIN_MITER 0x00002000
1461#define PS_JOIN_MASK 0x0000f000
1462
1463#define PS_COSMETIC 0x00000000
1464#define PS_GEOMETRIC 0x00010000
1465#define PS_TYPE_MASK 0x000f0000
1466
1467 /* Regions */
1468
1469#define ERROR 0
1470#define NULLREGION 1
1471#define SIMPLEREGION 2
1472#define COMPLEXREGION 3
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001473#define RGN_ERROR ERROR
Veksler Michael1346a3c1998-12-15 11:15:35 +00001474
1475#define RGN_AND 1
1476#define RGN_OR 2
1477#define RGN_XOR 3
1478#define RGN_DIFF 4
1479#define RGN_COPY 5
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001480#define RGN_MIN RGN_AND
1481#define RGN_MAX RGN_COPY
Huw Daviesfa28b5e2003-05-19 19:03:19 +00001482
1483#define SYSRGN 4
1484
Veksler Michael1346a3c1998-12-15 11:15:35 +00001485 /* Device contexts */
1486
Veksler Michael1346a3c1998-12-15 11:15:35 +00001487 /* Polygon modes */
1488#define ALTERNATE 1
1489#define WINDING 2
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001490#define POLYFILL_LAST 2
Veksler Michael1346a3c1998-12-15 11:15:35 +00001491
Francois Gouget6371e832000-10-13 23:12:19 +00001492/* Background modes */
1493/* Apparently some broken svr4 includes define TRANSPARENT */
Veksler Michael1346a3c1998-12-15 11:15:35 +00001494#undef TRANSPARENT
Veksler Michael1346a3c1998-12-15 11:15:35 +00001495#define TRANSPARENT 1
1496#define OPAQUE 2
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001497#define BKMODE_LAST 2
Veksler Michael1346a3c1998-12-15 11:15:35 +00001498
1499 /* Graphics Modes */
1500#define GM_COMPATIBLE 1
1501#define GM_ADVANCED 2
1502#define GM_LAST 2
1503
1504 /* Arc direction modes */
1505#define AD_COUNTERCLOCKWISE 1
1506#define AD_CLOCKWISE 2
1507
1508 /* Map modes */
1509#define MM_TEXT 1
1510#define MM_LOMETRIC 2
1511#define MM_HIMETRIC 3
1512#define MM_LOENGLISH 4
1513#define MM_HIENGLISH 5
1514#define MM_TWIPS 6
1515#define MM_ISOTROPIC 7
1516#define MM_ANISOTROPIC 8
1517
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001518#define MM_MIN MM_TEXT
1519#define MM_MAX MM_ANISOTROPIC
1520#define MM_MAX_FIXEDSCALE MM_TWIPS
1521
Veksler Michael1346a3c1998-12-15 11:15:35 +00001522 /* Coordinate modes */
1523#define ABSOLUTE 1
1524#define RELATIVE 2
1525
1526 /* Flood fill modes */
1527#define FLOODFILLBORDER 0
1528#define FLOODFILLSURFACE 1
1529
1530 /* Device parameters for GetDeviceCaps() */
1531#define DRIVERVERSION 0
1532#define TECHNOLOGY 2
1533#define HORZSIZE 4
1534#define VERTSIZE 6
1535#define HORZRES 8
1536#define VERTRES 10
1537#define BITSPIXEL 12
1538#define PLANES 14
1539#define NUMBRUSHES 16
1540#define NUMPENS 18
1541#define NUMMARKERS 20
1542#define NUMFONTS 22
1543#define NUMCOLORS 24
1544#define PDEVICESIZE 26
1545#define CURVECAPS 28
1546#define LINECAPS 30
1547#define POLYGONALCAPS 32
1548#define TEXTCAPS 34
1549#define CLIPCAPS 36
1550#define RASTERCAPS 38
1551#define ASPECTX 40
1552#define ASPECTY 42
1553#define ASPECTXY 44
1554#define LOGPIXELSX 88
1555#define LOGPIXELSY 90
Brian Teague161bc832000-11-29 20:02:46 +00001556#define CAPS1 94
Veksler Michael1346a3c1998-12-15 11:15:35 +00001557#define SIZEPALETTE 104
1558#define NUMRESERVED 106
1559#define COLORRES 108
1560
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001561#define PHYSICALWIDTH 110
1562#define PHYSICALHEIGHT 111
1563#define PHYSICALOFFSETX 112
1564#define PHYSICALOFFSETY 113
1565#define SCALINGFACTORX 114
1566#define SCALINGFACTORY 115
1567#define VREFRESH 116
1568#define DESKTOPVERTRES 117
1569#define DESKTOPHORZRES 118
1570#define BTLALIGNMENT 119
1571
Veksler Michael1346a3c1998-12-15 11:15:35 +00001572/* TECHNOLOGY */
1573#define DT_PLOTTER 0
1574#define DT_RASDISPLAY 1
1575#define DT_RASPRINTER 2
1576#define DT_RASCAMERA 3
1577#define DT_CHARSTREAM 4
1578#define DT_METAFILE 5
1579#define DT_DISPFILE 6
1580
1581/* CURVECAPS */
1582#define CC_NONE 0x0000
1583#define CC_CIRCLES 0x0001
1584#define CC_PIE 0x0002
1585#define CC_CHORD 0x0004
1586#define CC_ELLIPSES 0x0008
1587#define CC_WIDE 0x0010
1588#define CC_STYLED 0x0020
1589#define CC_WIDESTYLED 0x0040
1590#define CC_INTERIORS 0x0080
1591#define CC_ROUNDRECT 0x0100
1592
1593/* LINECAPS */
1594#define LC_NONE 0x0000
1595#define LC_POLYLINE 0x0002
1596#define LC_MARKER 0x0004
1597#define LC_POLYMARKER 0x0008
1598#define LC_WIDE 0x0010
1599#define LC_STYLED 0x0020
1600#define LC_WIDESTYLED 0x0040
1601#define LC_INTERIORS 0x0080
1602
1603/* POLYGONALCAPS */
1604#define PC_NONE 0x0000
1605#define PC_POLYGON 0x0001
1606#define PC_RECTANGLE 0x0002
1607#define PC_WINDPOLYGON 0x0004
Francois Gouget6c97e452000-11-10 22:33:45 +00001608#define PC_TRAPEZOID 0x0004
Veksler Michael1346a3c1998-12-15 11:15:35 +00001609#define PC_SCANLINE 0x0008
1610#define PC_WIDE 0x0010
1611#define PC_STYLED 0x0020
1612#define PC_WIDESTYLED 0x0040
1613#define PC_INTERIORS 0x0080
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001614#define PC_POLYPOLYGON 0x0100
1615#define PC_PATHS 0x0200
Veksler Michael1346a3c1998-12-15 11:15:35 +00001616
1617/* TEXTCAPS */
1618#define TC_OP_CHARACTER 0x0001
1619#define TC_OP_STROKE 0x0002
1620#define TC_CP_STROKE 0x0004
1621#define TC_CR_90 0x0008
1622#define TC_CR_ANY 0x0010
1623#define TC_SF_X_YINDEP 0x0020
1624#define TC_SA_DOUBLE 0x0040
1625#define TC_SA_INTEGER 0x0080
1626#define TC_SA_CONTIN 0x0100
1627#define TC_EA_DOUBLE 0x0200
1628#define TC_IA_ABLE 0x0400
1629#define TC_UA_ABLE 0x0800
1630#define TC_SO_ABLE 0x1000
1631#define TC_RA_ABLE 0x2000
1632#define TC_VA_ABLE 0x4000
1633#define TC_RESERVED 0x8000
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001634#define TC_SCROLLBLT 0x00010000
Veksler Michael1346a3c1998-12-15 11:15:35 +00001635
1636/* CLIPCAPS */
1637#define CP_NONE 0x0000
1638#define CP_RECTANGLE 0x0001
1639#define CP_REGION 0x0002
1640
1641/* RASTERCAPS */
1642#define RC_NONE 0x0000
1643#define RC_BITBLT 0x0001
1644#define RC_BANDING 0x0002
1645#define RC_SCALING 0x0004
1646#define RC_BITMAP64 0x0008
1647#define RC_GDI20_OUTPUT 0x0010
1648#define RC_GDI20_STATE 0x0020
1649#define RC_SAVEBITMAP 0x0040
1650#define RC_DI_BITMAP 0x0080
1651#define RC_PALETTE 0x0100
1652#define RC_DIBTODEV 0x0200
1653#define RC_BIGFONT 0x0400
1654#define RC_STRETCHBLT 0x0800
1655#define RC_FLOODFILL 0x1000
1656#define RC_STRETCHDIB 0x2000
1657#define RC_OP_DX_OUTPUT 0x4000
1658#define RC_DEVBITS 0x8000
1659
Brian Teague161bc832000-11-29 20:02:46 +00001660/* CAPS1 */
1661
1662#define C1_TRANSPARENT 0x0001
1663#define TC_TT_ABLE 0x0002
1664#define C1_TT_CR_ANY 0x0004
1665#define C1_EMF_COMPLIANT 0x0008
1666#define C1_DIBENGINE 0x0010
1667#define C1_GAMMA_RAMP 0x0040
1668#define C1_REINIT_ABLE 0x0080
1669#define C1_GLYPH_INDEX 0x0100
1670#define C1_BIT_PACKED 0x0200
1671#define C1_BYTE_PACKED 0x0400
1672#define C1_COLORCURSOR 0x0800
1673#define C1_CMYK_ABLE 0x1000
1674#define C1_SLOW_CARD 0x2000
1675
Veksler Michael1346a3c1998-12-15 11:15:35 +00001676 /* Device-independent bitmaps */
1677
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +00001678typedef struct {
1679 BYTE rgbBlue;
1680 BYTE rgbGreen;
1681 BYTE rgbRed;
1682 BYTE rgbReserved;
1683} RGBQUAD, *LPRGBQUAD;
1684
1685typedef struct {
1686 BYTE rgbtBlue;
1687 BYTE rgbtGreen;
1688 BYTE rgbtRed;
1689} RGBTRIPLE;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001690
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00001691#include <pshpack2.h>
Veksler Michael1346a3c1998-12-15 11:15:35 +00001692typedef struct
1693{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001694 WORD bfType;
1695 DWORD bfSize;
1696 WORD bfReserved1;
1697 WORD bfReserved2;
1698 DWORD bfOffBits;
Francois Gouget6c97e452000-11-10 22:33:45 +00001699} BITMAPFILEHEADER, *PBITMAPFILEHEADER, *LPBITMAPFILEHEADER;
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00001700#include <poppack.h>
Veksler Michael1346a3c1998-12-15 11:15:35 +00001701
Alexandre Julliard83f52d12000-09-26 22:20:14 +00001702#define MAKEPOINTS(l) (*((POINTS *)&(l)))
1703
Veksler Michael1346a3c1998-12-15 11:15:35 +00001704typedef struct
1705{
1706 DWORD biSize;
1707 LONG biWidth;
1708 LONG biHeight;
1709 WORD biPlanes;
1710 WORD biBitCount;
1711 DWORD biCompression;
1712 DWORD biSizeImage;
1713 LONG biXPelsPerMeter;
1714 LONG biYPelsPerMeter;
1715 DWORD biClrUsed;
1716 DWORD biClrImportant;
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +00001717} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001718
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001719typedef struct
1720{
1721 DWORD bV4Size;
1722 LONG bV4Width;
1723 LONG bV4Height;
1724 WORD bV4Planes;
1725 WORD bV4BitCount;
Patrik Stridvall1298eb42002-10-23 18:50:10 +00001726 DWORD bV4V4Compression;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001727 DWORD bV4SizeImage;
1728 LONG bV4XPelsPerMeter;
1729 LONG bV4YPelsPerMeter;
1730 DWORD bV4ClrUsed;
1731 DWORD bV4ClrImportant;
1732 DWORD bV4RedMask;
1733 DWORD bV4GreenMask;
1734 DWORD bV4BlueMask;
1735 DWORD bV4AlphaMask;
1736 DWORD bV4CSType;
Steven Edwardsca14f242002-09-04 18:47:32 +00001737 CIEXYZTRIPLE bV4Endpoints;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001738 DWORD bV4GammaRed;
1739 DWORD bV4GammaGreen;
1740 DWORD bV4GammaBlue;
1741} BITMAPV4HEADER, *PBITMAPV4HEADER;
1742
Francois Gougetf2e65752000-09-22 21:04:30 +00001743typedef struct {
1744 DWORD bV5Size;
1745 LONG bV5Width;
1746 LONG bV5Height;
1747 WORD bV5Planes;
1748 WORD bV5BitCount;
1749 DWORD bV5Compression;
1750 DWORD bV5SizeImage;
1751 LONG bV5XPelsPerMeter;
1752 LONG bV5YPelsPerMeter;
1753 DWORD bV5ClrUsed;
1754 DWORD bV5ClrImportant;
1755 DWORD bV5RedMask;
1756 DWORD bV5GreenMask;
1757 DWORD bV5BlueMask;
1758 DWORD bV5AlphaMask;
1759 DWORD bV5CSType;
1760 CIEXYZTRIPLE bV5Endpoints;
1761 DWORD bV5GammaRed;
1762 DWORD bV5GammaGreen;
1763 DWORD bV5GammaBlue;
1764 DWORD bV5Intent;
1765 DWORD bV5ProfileData;
1766 DWORD bV5ProfileSize;
1767 DWORD bV5Reserved;
1768} BITMAPV5HEADER, *LPBITMAPV5HEADER, *PBITMAPV5HEADER;
1769
1770#define PROFILE_LINKED 'LINK'
1771#define PROFILE_EMBEDDED 'MBED'
1772
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001773
Veksler Michael1346a3c1998-12-15 11:15:35 +00001774 /* biCompression */
1775#define BI_RGB 0
1776#define BI_RLE8 1
1777#define BI_RLE4 2
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001778#define BI_BITFIELDS 3
Veksler Michael1346a3c1998-12-15 11:15:35 +00001779
1780typedef struct {
1781 BITMAPINFOHEADER bmiHeader;
1782 RGBQUAD bmiColors[1];
Francois Gouget6c97e452000-11-10 22:33:45 +00001783} BITMAPINFO, *PBITMAPINFO, *LPBITMAPINFO;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001784
1785typedef struct
1786{
1787 DWORD bcSize;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001788 WORD bcWidth;
1789 WORD bcHeight;
1790 WORD bcPlanes;
1791 WORD bcBitCount;
Francois Gouget6c97e452000-11-10 22:33:45 +00001792} BITMAPCOREHEADER, *PBITMAPCOREHEADER, *LPBITMAPCOREHEADER;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001793
1794typedef struct
1795{
1796 BITMAPCOREHEADER bmciHeader;
1797 RGBTRIPLE bmciColors[1];
Francois Gougetf2e65752000-09-22 21:04:30 +00001798} BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001799
1800#define DIB_RGB_COLORS 0
1801#define DIB_PAL_COLORS 1
1802#define CBM_INIT 4
1803
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00001804typedef struct
Veksler Michael1346a3c1998-12-15 11:15:35 +00001805{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001806 BITMAP dsBm;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001807 BITMAPINFOHEADER dsBmih;
1808 DWORD dsBitfields[3];
Alexandre Julliarda3960291999-02-26 11:11:13 +00001809 HANDLE dshSection;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001810 DWORD dsOffset;
Francois Gouget6c97e452000-11-10 22:33:45 +00001811} DIBSECTION, *PDIBSECTION, *LPDIBSECTION;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001812
1813 /* Stock GDI objects for GetStockObject() */
1814
1815#define WHITE_BRUSH 0
1816#define LTGRAY_BRUSH 1
1817#define GRAY_BRUSH 2
1818#define DKGRAY_BRUSH 3
1819#define BLACK_BRUSH 4
1820#define NULL_BRUSH 5
1821#define HOLLOW_BRUSH 5
1822#define WHITE_PEN 6
1823#define BLACK_PEN 7
1824#define NULL_PEN 8
1825#define OEM_FIXED_FONT 10
1826#define ANSI_FIXED_FONT 11
1827#define ANSI_VAR_FONT 12
1828#define SYSTEM_FONT 13
1829#define DEVICE_DEFAULT_FONT 14
1830#define DEFAULT_PALETTE 15
1831#define SYSTEM_FIXED_FONT 16
1832#define DEFAULT_GUI_FONT 17
1833
Alexandre Julliard8da12c41999-01-17 16:55:11 +00001834#define STOCK_LAST 17
1835
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001836#define CLR_INVALID 0xffffffff
Veksler Michael1346a3c1998-12-15 11:15:35 +00001837/* Metafile header structure */
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00001838#include <pshpack2.h>
Veksler Michael1346a3c1998-12-15 11:15:35 +00001839typedef struct
1840{
1841 WORD mtType;
1842 WORD mtHeaderSize;
1843 WORD mtVersion;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001844 DWORD mtSize;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001845 WORD mtNoObjects;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001846 DWORD mtMaxRecord;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001847 WORD mtNoParameters;
Francois Gouget6c97e452000-11-10 22:33:45 +00001848} METAHEADER, *PMETAHEADER, *LPMETAHEADER;
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +00001849#include <poppack.h>
Veksler Michael1346a3c1998-12-15 11:15:35 +00001850
1851/* Metafile typical record structure */
1852typedef struct
1853{
1854 DWORD rdSize;
1855 WORD rdFunction;
Alexandre Julliard8da12c41999-01-17 16:55:11 +00001856 WORD rdParm[1];
Francois Gouget6c97e452000-11-10 22:33:45 +00001857} METARECORD, *PMETARECORD, *LPMETARECORD;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001858
1859/* Handle table structure */
1860
1861typedef struct
1862{
Alexandre Julliarda3960291999-02-26 11:11:13 +00001863 HGDIOBJ objectHandle[1];
Francois Gouget6c97e452000-11-10 22:33:45 +00001864} HANDLETABLE, *PHANDLETABLE, *LPHANDLETABLE;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001865
Veksler Michael1346a3c1998-12-15 11:15:35 +00001866
1867/* Clipboard metafile picture structure */
1868typedef struct
1869{
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00001870 LONG mm;
1871 LONG xExt;
1872 LONG yExt;
Alexandre Julliarda3960291999-02-26 11:11:13 +00001873 HMETAFILE hMF;
1874} METAFILEPICT, *LPMETAFILEPICT;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001875
Veksler Michael1346a3c1998-12-15 11:15:35 +00001876
1877/* Metafile functions */
1878#define META_SETBKCOLOR 0x0201
1879#define META_SETBKMODE 0x0102
1880#define META_SETMAPMODE 0x0103
1881#define META_SETROP2 0x0104
1882#define META_SETRELABS 0x0105
1883#define META_SETPOLYFILLMODE 0x0106
1884#define META_SETSTRETCHBLTMODE 0x0107
1885#define META_SETTEXTCHAREXTRA 0x0108
1886#define META_SETTEXTCOLOR 0x0209
1887#define META_SETTEXTJUSTIFICATION 0x020A
1888#define META_SETWINDOWORG 0x020B
1889#define META_SETWINDOWEXT 0x020C
1890#define META_SETVIEWPORTORG 0x020D
1891#define META_SETVIEWPORTEXT 0x020E
1892#define META_OFFSETWINDOWORG 0x020F
1893#define META_SCALEWINDOWEXT 0x0410
1894#define META_OFFSETVIEWPORTORG 0x0211
1895#define META_SCALEVIEWPORTEXT 0x0412
1896#define META_LINETO 0x0213
1897#define META_MOVETO 0x0214
1898#define META_EXCLUDECLIPRECT 0x0415
1899#define META_INTERSECTCLIPRECT 0x0416
1900#define META_ARC 0x0817
1901#define META_ELLIPSE 0x0418
1902#define META_FLOODFILL 0x0419
1903#define META_PIE 0x081A
1904#define META_RECTANGLE 0x041B
1905#define META_ROUNDRECT 0x061C
1906#define META_PATBLT 0x061D
1907#define META_SAVEDC 0x001E
1908#define META_SETPIXEL 0x041F
1909#define META_OFFSETCLIPRGN 0x0220
1910#define META_TEXTOUT 0x0521
1911#define META_BITBLT 0x0922
1912#define META_STRETCHBLT 0x0B23
1913#define META_POLYGON 0x0324
1914#define META_POLYLINE 0x0325
1915#define META_ESCAPE 0x0626
1916#define META_RESTOREDC 0x0127
1917#define META_FILLREGION 0x0228
1918#define META_FRAMEREGION 0x0429
1919#define META_INVERTREGION 0x012A
1920#define META_PAINTREGION 0x012B
1921#define META_SELECTCLIPREGION 0x012C
1922#define META_SELECTOBJECT 0x012D
1923#define META_SETTEXTALIGN 0x012E
1924#define META_DRAWTEXT 0x062F
1925#define META_CHORD 0x0830
1926#define META_SETMAPPERFLAGS 0x0231
1927#define META_EXTTEXTOUT 0x0A32
1928#define META_SETDIBTODEV 0x0D33
1929#define META_SELECTPALETTE 0x0234
1930#define META_REALIZEPALETTE 0x0035
1931#define META_ANIMATEPALETTE 0x0436
1932#define META_SETPALENTRIES 0x0037
1933#define META_POLYPOLYGON 0x0538
1934#define META_RESIZEPALETTE 0x0139
1935#define META_DIBBITBLT 0x0940
1936#define META_DIBSTRETCHBLT 0x0B41
1937#define META_DIBCREATEPATTERNBRUSH 0x0142
1938#define META_STRETCHDIB 0x0F43
1939#define META_EXTFLOODFILL 0x0548
1940#define META_RESETDC 0x014C
1941#define META_STARTDOC 0x014D
1942#define META_STARTPAGE 0x004F
1943#define META_ENDPAGE 0x0050
1944#define META_ABORTDOC 0x0052
1945#define META_ENDDOC 0x005E
1946#define META_DELETEOBJECT 0x01F0
1947#define META_CREATEPALETTE 0x00F7
1948#define META_CREATEBRUSH 0x00F8
1949#define META_CREATEPATTERNBRUSH 0x01F9
1950#define META_CREATEPENINDIRECT 0x02FA
1951#define META_CREATEFONTINDIRECT 0x02FB
1952#define META_CREATEBRUSHINDIRECT 0x02FC
1953#define META_CREATEBITMAPINDIRECT 0x02FD
1954#define META_CREATEBITMAP 0x06FE
1955#define META_CREATEREGION 0x06FF
1956#define META_UNKNOWN 0x0529 /* FIXME: unknown meta magic */
1957
Patrik Stridvallf94462f2002-01-31 23:22:07 +00001958typedef INT (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,
Alexandre Julliarda3960291999-02-26 11:11:13 +00001959 INT,LPARAM);
Veksler Michael1346a3c1998-12-15 11:15:35 +00001960
1961/* enhanced metafile structures and functions */
1962
1963/* note that ENHMETAHEADER is just a particular kind of ENHMETARECORD,
1964 ie. the header is just the first record in the metafile */
1965typedef struct {
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00001966 DWORD iType;
1967 DWORD nSize;
1968 RECTL rclBounds;
1969 RECTL rclFrame;
1970 DWORD dSignature;
1971 DWORD nVersion;
1972 DWORD nBytes;
1973 DWORD nRecords;
1974 WORD nHandles;
1975 WORD sReserved;
1976 DWORD nDescription;
1977 DWORD offDescription;
1978 DWORD nPalEntries;
1979 SIZEL szlDevice;
Huw D M Daviesad1e06e1999-04-24 11:47:26 +00001980 SIZEL szlMillimeters;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001981 DWORD cbPixelFormat;
1982 DWORD offPixelFormat;
1983 DWORD bOpenGL;
Peter Hunnisettf2b84922000-01-15 22:17:49 +00001984 SIZEL szlMicrometers;
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00001985} ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001986
1987typedef struct {
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00001988 DWORD iType;
1989 DWORD nSize;
1990 DWORD dParm[1];
1991} ENHMETARECORD, *LPENHMETARECORD;
Veksler Michael1346a3c1998-12-15 11:15:35 +00001992
Huw D M Daviesa7f21401999-04-22 09:51:53 +00001993typedef struct {
1994 DWORD iType;
1995 DWORD nSize;
1996} EMR, *PEMR;
1997
1998typedef struct {
1999 POINTL ptlReference;
2000 DWORD nChars;
2001 DWORD offString;
2002 DWORD fOptions;
2003 RECTL rcl;
2004 DWORD offDx;
2005} EMRTEXT, *PEMRTEXT;
2006
2007typedef struct {
2008 EMR emr;
2009} EMRABORTPATH, *PEMRABORTPATH,
2010 EMRBEGINPATH, *PEMRBEGINPATH,
2011 EMRENDPATH, *PEMRENDPATH,
2012 EMRCLOSEFIGURE, *PEMRCLOSEFIGURE,
2013 EMRFLATTENPATH, *PEMRFLATTENPATH,
2014 EMRWIDENPATH, *PEMRWIDENPATH,
2015 EMRSETMETARGN, *PEMRSETMETARGN,
2016 EMRSAVEDC, *PEMRSAVEDC,
2017 EMRREALIZEPALETTE, *PEMRREALIZEPALETTE;
2018
2019typedef struct {
2020 EMR emr;
2021 POINTL ptlCenter;
2022 DWORD nRadius;
2023 FLOAT eStartAngle;
2024 FLOAT eSweepAngle;
2025} EMRANGLEARC, *PEMRANGLEARC;
2026
2027typedef struct {
2028 EMR emr;
2029 RECTL rclBox;
2030 POINTL ptlStart;
2031 POINTL ptlEnd;
2032} EMRARC, *PEMRARC,
2033 EMRARCTO, *PEMRARCTO,
2034 EMRCHORD, *PEMRCHORD,
2035 EMRPIE, *PEMRPIE;
2036
2037typedef struct {
2038 EMR emr;
2039 RECTL rclBounds;
2040 LONG xDest;
2041 LONG yDest;
2042 LONG cxDest;
2043 LONG cyDest;
2044 DWORD dwRop;
2045 LONG xSrc;
2046 LONG ySrc;
2047 XFORM xformSrc;
2048 COLORREF crBkColorSrc;
Michael Cardenas6a52a502000-02-07 17:22:01 +00002049 DWORD iUsageSrc;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002050 DWORD offBmiSrc;
2051 DWORD cbBmiSrc;
2052 DWORD offBitsSrc;
2053 DWORD cbBitsSrc;
2054} EMRBITBLT, *PEMRBITBLT;
2055
2056typedef struct {
2057 EMR emr;
2058 DWORD ihBrush;
2059 LOGBRUSH lb;
2060} EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT;
2061
2062typedef struct {
2063 EMR emr;
2064 DWORD ihCS;
Peter Hunnisettf2b84922000-01-15 22:17:49 +00002065 LOGCOLORSPACEA lcs;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002066} EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE;
2067
2068typedef struct {
Peter Hunnisettf2b84922000-01-15 22:17:49 +00002069 EMR emr;
2070 DWORD ihCS;
2071 LOGCOLORSPACEW lcs;
2072 DWORD dwFlags;
2073 DWORD cbData;
2074 BYTE Data[1];
2075} EMRCREATECOLORSPACEW, *PEMRCREATECOLORSPACEW;
2076
2077typedef struct {
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002078 EMR emr;
2079 DWORD ihBrush;
2080 DWORD iUsage;
2081 DWORD offBmi;
2082 DWORD cbBmi;
2083 DWORD offBits;
2084 DWORD cbBits;
2085} EMRCREATEDIBPATTERNBRUSHPT, *PEMRCREATEDIBPATTERNBRUSHPT;
2086
2087typedef struct {
2088 EMR emr;
2089 DWORD ihBrush;
2090 DWORD iUsage;
2091 DWORD offBmi;
2092 DWORD cbBmi;
2093 DWORD offBits;
2094 DWORD cbBits;
2095} EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH;
2096
2097typedef struct {
2098 EMR emr;
2099 DWORD ihPal;
2100 LOGPALETTE lgpl;
2101} EMRCREATEPALETTE, *PEMRCREATEPALETTE;
2102
2103typedef struct {
2104 EMR emr;
2105 DWORD ihPen;
2106 LOGPEN lopn;
2107} EMRCREATEPEN, *PEMRCREATEPEN;
2108
2109typedef struct {
2110 EMR emr;
2111 DWORD ihCS;
2112} EMRDELETECOLORSPACE, *PEMRDELETECOLORSPACE,
2113 EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE,
2114 EMRSETCOLORSPACE, *PEMRSETCOLORSPACE;
2115
2116typedef struct {
2117 EMR emr;
2118 DWORD ihObject;
2119} EMRDELETEOBJECT, *PEMRDELETEOBJECT,
2120 EMRSELECTOBJECT, *PEMRSELECTOBJECT;
2121
2122typedef struct {
2123 EMR emr;
2124 RECTL rclBox;
2125} EMRELLIPSE, *PEMRELLIPSE,
2126 EMRRECTANGLE, *PEMRRECTANGLE;
2127
2128typedef struct {
2129 EMR emr;
2130 DWORD nPalEntries;
2131 DWORD offPalEntries;
2132 DWORD nSizeLast;
2133} EMREOF, *PEMREOF;
2134
2135typedef struct {
2136 EMR emr;
2137 RECTL rclClip;
2138} EMREXCLUDECLIPRECT, *PEMREXCLUDECLIPRECT,
2139 EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT;
2140
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002141typedef struct {
2142 EMR emr;
2143 DWORD ihFont;
2144 EXTLOGFONTW elfw;
2145} EMREXTCREATEFONTINDIRECTW, *PEMREXTCREATEFONTINDIRECTW;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002146
2147typedef struct {
2148 EMR emr;
2149 DWORD ihPen;
2150 DWORD offBmi;
2151 DWORD cbBmi;
2152 DWORD offBits;
2153 DWORD cbBits;
2154 EXTLOGPEN elp;
2155} EMREXTCREATEPEN, *PEMREXTCREATEPEN;
2156
2157typedef struct {
2158 EMR emr;
2159 POINTL ptlStart;
2160 COLORREF crColor;
2161 DWORD iMode;
2162} EMREXTFLOODFILL, *PEMREXTFLOODFILL;
2163
2164typedef struct {
2165 EMR emr;
2166 DWORD cbRgnData;
2167 DWORD iMode;
2168 BYTE RgnData[1];
2169} EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN;
2170
2171typedef struct {
2172 EMR emr;
2173 RECTL rclBounds;
2174 DWORD iGraphicsMode;
2175 FLOAT exScale;
2176 FLOAT eyScale;
2177 EMRTEXT emrtext;
2178} EMREXTTEXTOUTA, *PEMREXTTEXTOUTA,
2179 EMREXTTEXTOUTW, *PEMREXTTEXTOUTW;
2180
2181typedef struct {
2182 EMR emr;
2183 RECTL rclBounds;
2184} EMRFILLPATH, *PEMRFILLPATH,
2185 EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH,
2186 EMRSTROKEPATH, *PEMRSTROKEPATH;
2187
2188typedef struct {
2189 EMR emr;
2190 RECTL rclBounds;
2191 DWORD cbRgnData;
2192 DWORD ihBrush;
2193 BYTE RgnData[1];
2194} EMRFILLRGN, *PEMRFILLRGN;
2195
2196typedef struct {
Patrik Stridvall1298eb42002-10-23 18:50:10 +00002197 DWORD dSignature;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002198 DWORD nVersion;
2199 DWORD cbData;
2200 DWORD offData;
2201} EMRFORMAT, *PEMRFORMAT;
2202
2203typedef struct {
2204 EMR emr;
2205 RECTL rclBounds;
2206 DWORD cbRgnData;
2207 DWORD ihBrush;
2208 SIZEL szlStroke;
2209 BYTE RgnData[1];
2210} EMRFRAMERGN, *PEMRFRAMERGN;
2211
2212typedef struct {
2213 EMR emr;
2214 DWORD cbData;
2215 BYTE Data[1];
Francois Gouget6c97e452000-11-10 22:33:45 +00002216} EMRGDICOMMENT, *PEMRGDICOMMENT;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002217
2218#if 0
2219typedef struct {
2220 EMR emr;
2221 RECTL rclBounds;
2222 DWORD nVer;
2223 DWORD nTri;
2224 ULONG ulMode;
2225 TRIVERTEX Ver[1];
2226} EMRGRADIENTFILL, *PEMRGRADIENTFILL;
2227#endif
2228
2229typedef struct {
2230 EMR emr;
2231 RECTL rclBounds;
2232 DWORD cbRgnData;
2233 BYTE RgnData[1];
2234} EMRINVERTRGN, *PEMRINVERTRGN,
2235 EMRPAINTRGN, *PEMRPAINTRGN;
2236
2237typedef struct {
2238 EMR emr;
2239 POINTL ptl;
2240} EMRLINETO, *PEMRLINETO,
2241 EMRMOVETOEX, *PEMRMOVETOEX;
2242
2243typedef struct {
2244 EMR emr;
2245 RECTL rclBounds;
2246 LONG xDest;
2247 LONG yDest;
2248 LONG cxDest;
2249 LONG cyDest;
2250 DWORD dwRop;
2251 LONG xSrc;
2252 LONG ySrc;
2253 XFORM xformSrc;
2254 COLORREF crBkColorSrc;
2255 DWORD iUsageSrc;
2256 DWORD offBmiSrc;
2257 DWORD cbBmiSrc;
2258 DWORD offBitsSrc;
2259 DWORD cbBitsSrc;
2260 LONG xMask;
2261 LONG yMask;
2262 DWORD iUsageMask;
2263 DWORD offBmiMask;
2264 DWORD cbBmiMask;
2265 DWORD offBitsMask;
2266 DWORD cbBitsMask;
2267} EMRMASKBLT, *PEMRMASKBLT;
2268
2269typedef struct {
2270 EMR emr;
2271 XFORM xform;
2272 DWORD iMode;
2273} EMRMODIFYWORLDTRANSFORM, *PEMRMODIFYWORLDTRANSFORM;
2274
2275typedef struct {
2276 EMR emr;
2277 POINTL ptlOffset;
2278} EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN;
2279
2280typedef struct {
2281 EMR emr;
2282 RECTL rclBounds;
Patrik Stridvall1298eb42002-10-23 18:50:10 +00002283 POINTL aptlDest[3];
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002284 LONG xSrc;
2285 LONG ySrc;
2286 LONG cxSrc;
2287 LONG cySrc;
2288 XFORM xformSrc;
2289 COLORREF crBkColorSrc;
2290 DWORD iUsageSrc;
2291 DWORD offBmiSrc;
2292 DWORD cbBmiSrc;
2293 DWORD offBitsSrc;
2294 DWORD cbBitsSrc;
2295 LONG xMask;
2296 LONG yMask;
2297 DWORD iUsageMask;
2298 DWORD offBmiMask;
2299 DWORD cbBmiMask;
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00002300 DWORD offBitsMask;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002301 DWORD cbBitsMask;
2302} EMRPLGBLT, *PEMRPLGBLT;
2303
2304typedef struct {
2305 EMR emr;
2306 RECTL rclBounds;
2307 DWORD cptl;
2308 POINTL aptl[1];
2309} EMRPOLYLINE, *PEMRPOLYLINE,
2310 EMRPOLYBEZIER, *PEMRPOLYBEZIER,
2311 EMRPOLYGON, *PEMRPOLYGON,
2312 EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO,
2313 EMRPOLYLINETO, *PEMRPOLYLINETO;
2314
2315typedef struct {
2316 EMR emr;
2317 RECTL rclBounds;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002318 DWORD cptl;
2319 POINTL aptl[1];
2320 BYTE abTypes[1];
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00002321} EMRPOLYDRAW, *PEMRPOLYDRAW;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002322
2323typedef struct {
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002324 EMR emr;
2325 RECTL rclBounds;
2326 DWORD nPolys;
2327 DWORD cptl;
2328 DWORD aPolyCounts[1];
2329 POINTL aptl[1];
2330} EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE,
2331 EMRPOLYPOLYGON, *PEMRPOLYPOLYGON;
2332
2333typedef struct {
2334 EMR emr;
2335 RECTL rclBounds;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002336 DWORD iGraphicsMode;
2337 FLOAT exScale;
2338 FLOAT eyScale;
2339 LONG cStrings;
2340 EMRTEXT aemrtext[1];
2341} EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA,
2342 EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW;
2343
2344typedef struct {
2345 EMR emr;
2346 DWORD ihPal;
2347 DWORD cEntries;
2348} EMRRESIZEPALETTE, *PEMRRESIZEPALETTE;
2349
2350typedef struct {
2351 EMR emr;
2352 LONG iRelative;
2353} EMRRESTOREDC, *PEMRRESTOREDC;
2354
2355typedef struct {
2356 EMR emr;
2357 RECTL rclBox;
2358 SIZEL szlCorner;
2359} EMRROUNDRECT, *PEMRROUNDRECT;
2360
2361typedef struct {
2362 EMR emr;
2363 LONG xNum;
2364 LONG xDenom;
2365 LONG yNum;
2366 LONG yDenom;
2367} EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX,
2368 EMRSCALEWINDOWEXTEX, *PEMRSCALEWINDOWEXTEX;
2369
2370typedef struct {
2371 EMR emr;
Huw D M Davies585c8461999-05-02 09:23:51 +00002372 DWORD iMode;
2373} EMRSELECTCLIPPATH, *PEMRSELECTCLIPPATH,
2374 EMRSETBKMODE, *PEMRSETBKMODE,
2375 EMRSETMAPMODE, *PEMRSETMAPMODE,
2376 EMRSETPOLYFILLMODE, *PEMRSETPOLYFILLMODE,
2377 EMRSETROP2, *PEMRSETROP2,
2378 EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
2379 EMRSETTEXTALIGN, *PEMRSETTEXTALIGN,
Patrik Stridvallba9dc782002-11-04 22:43:24 +00002380 EMRSETICMMODE, *PEMRSETICMMODE,
Huw D M Davies585c8461999-05-02 09:23:51 +00002381 EMRSETLAYOUT, *PEMRSETLAYOUT;
2382
2383typedef struct {
2384 EMR emr;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002385 DWORD ihPal;
2386} EMRSELECTPALETTE, *PEMRSELECTPALETTE;
2387
2388typedef struct {
2389 EMR emr;
2390 DWORD iArcDirection;
2391} EMRSETARCDIRECTION, *PEMRSETARCDIRECTION;
2392
2393typedef struct {
2394 EMR emr;
2395 COLORREF crColor;
2396} EMRSETBKCOLOR, *PEMRSETBKCOLOR,
2397 EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR;
2398
2399typedef struct {
2400 EMR emr;
2401 POINTL ptlOrigin;
2402} EMRSETBRUSHORGEX, *PEMRSETBRUSHORGEX,
2403 EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX,
2404 EMRSETWINDOWORGEX, *PEMRSETWINDOWORGEX;
2405
2406typedef struct {
2407 EMR emr;
2408 COLORADJUSTMENT ColorAdjustment;
2409} EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT;
2410
2411typedef struct {
2412 EMR emr;
2413 RECTL rclBounds;
2414 LONG xDest;
2415 LONG yDest;
2416 LONG xSrc;
2417 LONG ySrc;
2418 LONG cxSrc;
2419 LONG cySrc;
2420 DWORD offBmiSrc;
2421 DWORD cbBmiSrc;
2422 DWORD offBitsSrc;
2423 DWORD cbBitsSrc;
2424 DWORD iUsageSrc;
2425 DWORD iStartScan;
2426 DWORD cScans;
Patrik Stridvall1e22e3b2002-10-29 21:23:33 +00002427} EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002428
2429typedef struct {
2430 EMR emr;
2431 DWORD dwFlags;
2432} EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS;
2433
2434typedef struct {
2435 EMR emr;
2436 FLOAT eMiterLimit;
2437} EMRSETMITERLIMIT, *PEMRSETMITERLIMIT;
2438
2439typedef struct {
2440 EMR emr;
2441 DWORD ihPal;
2442 DWORD iStart;
2443 DWORD cEntries;
2444 PALETTEENTRY aPalEntries[1];
2445} EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES;
2446
2447typedef struct {
2448 EMR emr;
2449 POINTL ptlPixel;
2450 COLORREF crColor;
2451} EMRSETPIXELV, *PEMRSETPIXELV;
2452
2453typedef struct {
2454 EMR emr;
2455 SIZEL szlExtent;
2456} EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX,
2457 EMRSETWINDOWEXTEX, *PEMRSETWINDOWEXTEX;
2458
2459typedef struct {
2460 EMR emr;
2461 XFORM xform;
2462} EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM;
2463
2464typedef struct {
2465 EMR emr;
2466 RECTL rclBounds;
2467 LONG xDest;
2468 LONG yDest;
2469 LONG cxDest;
2470 LONG cyDest;
2471 DWORD dwRop;
2472 LONG xSrc;
2473 LONG ySrc;
2474 XFORM xformSrc;
2475 COLORREF crBkColorSrc;
2476 DWORD iUsageSrc;
2477 DWORD offBmiSrc;
2478 DWORD cbBmiSrc;
2479 DWORD offBitsSrc;
2480 DWORD cbBitsSrc;
2481 LONG cxSrc;
2482 LONG cySrc;
2483} EMRSTRETCHBLT, *PEMRSTRETCHBLT;
2484
2485typedef struct {
2486 EMR emr;
2487 RECTL rclBounds;
2488 LONG xDest;
2489 LONG yDest;
2490 LONG xSrc;
2491 LONG ySrc;
2492 LONG cxSrc;
2493 LONG cySrc;
2494 DWORD offBmiSrc;
2495 DWORD cbBmiSrc;
2496 DWORD offBitsSrc;
2497 DWORD cbBitsSrc;
Michael Cardenas6a52a502000-02-07 17:22:01 +00002498 DWORD iUsageSrc;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002499 DWORD dwRop;
2500 LONG cxDest;
Michael Cardenas6a52a502000-02-07 17:22:01 +00002501 LONG cyDest;
Huw D M Daviesa7f21401999-04-22 09:51:53 +00002502} EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;
2503
Peter Hunnisettf2b84922000-01-15 22:17:49 +00002504typedef struct {
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00002505 EMR emr;
2506 PIXELFORMATDESCRIPTOR pfd;
Peter Hunnisettf2b84922000-01-15 22:17:49 +00002507} EMRPIXELFORMAT, *PEMRPIXELFORMAT;
2508
2509typedef struct tagEMRGLSRECORD {
2510 EMR emr;
2511 DWORD cbData;
2512 BYTE Data[1];
2513} EMRGLSRECORD, *PEMRGLSRECORD;
2514
2515typedef struct {
2516 EMR emr;
2517 RECTL rclBounds;
2518 DWORD cbData;
2519 BYTE Data[1];
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00002520} EMRGLSBOUNDEDRECORD, *PEMRGLSBOUNDEDRECORD;
Peter Hunnisettf2b84922000-01-15 22:17:49 +00002521
Ulrich Czekalla550b97e2002-06-24 23:09:19 +00002522typedef struct {
2523 EMR emr;
2524 INT nBreakExtra;
2525 INT nBreakCount;
2526} EMRSETTEXTJUSTIFICATION, *PEMRSETTEXTJUSTIFICATION;
2527
Alexandre Julliard80774de2003-02-14 23:30:27 +00002528typedef INT (CALLBACK *ENHMFENUMPROC)(HDC, HANDLETABLE *,
2529 const ENHMETARECORD *, INT, LPARAM);
Veksler Michael1346a3c1998-12-15 11:15:35 +00002530
2531#define EMR_HEADER 1
2532#define EMR_POLYBEZIER 2
2533#define EMR_POLYGON 3
2534#define EMR_POLYLINE 4
2535#define EMR_POLYBEZIERTO 5
2536#define EMR_POLYLINETO 6
2537#define EMR_POLYPOLYLINE 7
2538#define EMR_POLYPOLYGON 8
2539#define EMR_SETWINDOWEXTEX 9
2540#define EMR_SETWINDOWORGEX 10
2541#define EMR_SETVIEWPORTEXTEX 11
2542#define EMR_SETVIEWPORTORGEX 12
2543#define EMR_SETBRUSHORGEX 13
2544#define EMR_EOF 14
2545#define EMR_SETPIXELV 15
2546#define EMR_SETMAPPERFLAGS 16
2547#define EMR_SETMAPMODE 17
2548#define EMR_SETBKMODE 18
2549#define EMR_SETPOLYFILLMODE 19
2550#define EMR_SETROP2 20
2551#define EMR_SETSTRETCHBLTMODE 21
2552#define EMR_SETTEXTALIGN 22
2553#define EMR_SETCOLORADJUSTMENT 23
2554#define EMR_SETTEXTCOLOR 24
2555#define EMR_SETBKCOLOR 25
2556#define EMR_OFFSETCLIPRGN 26
2557#define EMR_MOVETOEX 27
2558#define EMR_SETMETARGN 28
2559#define EMR_EXCLUDECLIPRECT 29
2560#define EMR_INTERSECTCLIPRECT 30
2561#define EMR_SCALEVIEWPORTEXTEX 31
2562#define EMR_SCALEWINDOWEXTEX 32
2563#define EMR_SAVEDC 33
2564#define EMR_RESTOREDC 34
2565#define EMR_SETWORLDTRANSFORM 35
2566#define EMR_MODIFYWORLDTRANSFORM 36
2567#define EMR_SELECTOBJECT 37
2568#define EMR_CREATEPEN 38
2569#define EMR_CREATEBRUSHINDIRECT 39
2570#define EMR_DELETEOBJECT 40
2571#define EMR_ANGLEARC 41
2572#define EMR_ELLIPSE 42
2573#define EMR_RECTANGLE 43
2574#define EMR_ROUNDRECT 44
2575#define EMR_ARC 45
2576#define EMR_CHORD 46
2577#define EMR_PIE 47
2578#define EMR_SELECTPALETTE 48
2579#define EMR_CREATEPALETTE 49
2580#define EMR_SETPALETTEENTRIES 50
2581#define EMR_RESIZEPALETTE 51
2582#define EMR_REALIZEPALETTE 52
2583#define EMR_EXTFLOODFILL 53
2584#define EMR_LINETO 54
2585#define EMR_ARCTO 55
2586#define EMR_POLYDRAW 56
2587#define EMR_SETARCDIRECTION 57
2588#define EMR_SETMITERLIMIT 58
2589#define EMR_BEGINPATH 59
2590#define EMR_ENDPATH 60
2591#define EMR_CLOSEFIGURE 61
2592#define EMR_FILLPATH 62
2593#define EMR_STROKEANDFILLPATH 63
2594#define EMR_STROKEPATH 64
2595#define EMR_FLATTENPATH 65
2596#define EMR_WIDENPATH 66
2597#define EMR_SELECTCLIPPATH 67
2598#define EMR_ABORTPATH 68
2599#define EMR_GDICOMMENT 70
2600#define EMR_FILLRGN 71
2601#define EMR_FRAMERGN 72
2602#define EMR_INVERTRGN 73
2603#define EMR_PAINTRGN 74
2604#define EMR_EXTSELECTCLIPRGN 75
2605#define EMR_BITBLT 76
2606#define EMR_STRETCHBLT 77
2607#define EMR_MASKBLT 78
2608#define EMR_PLGBLT 79
2609#define EMR_SETDIBITSTODEVICE 80
2610#define EMR_STRETCHDIBITS 81
2611#define EMR_EXTCREATEFONTINDIRECTW 82
2612#define EMR_EXTTEXTOUTA 83
2613#define EMR_EXTTEXTOUTW 84
2614#define EMR_POLYBEZIER16 85
2615#define EMR_POLYGON16 86
2616#define EMR_POLYLINE16 87
2617#define EMR_POLYBEZIERTO16 88
2618#define EMR_POLYLINETO16 89
2619#define EMR_POLYPOLYLINE16 90
2620#define EMR_POLYPOLYGON16 91
2621#define EMR_POLYDRAW16 92
2622#define EMR_CREATEMONOBRUSH 93
2623#define EMR_CREATEDIBPATTERNBRUSHPT 94
2624#define EMR_EXTCREATEPEN 95
2625#define EMR_POLYTEXTOUTA 96
2626#define EMR_POLYTEXTOUTW 97
2627#define EMR_SETICMMODE 98
2628#define EMR_CREATECOLORSPACE 99
2629#define EMR_SETCOLORSPACE 100
2630#define EMR_DELETECOLORSPACE 101
2631#define EMR_GLSRECORD 102
2632#define EMR_GLSBOUNDEDRECORD 103
2633#define EMR_PIXELFORMAT 104
Ulrich Czekalla550b97e2002-06-24 23:09:19 +00002634#define EMR_DRAWESCAPE 105
2635#define EMR_EXTESCAPE 106
2636#define EMR_STARTDOC 107
2637#define EMR_SMALLTEXTOUT 108
2638#define EMR_FORCEUFIMAPPING 109
2639#define EMR_NAMEDESCAPE 110
2640#define EMR_COLORCORRECTPALETTE 111
2641#define EMR_SETICMPROFILEA 112
2642#define EMR_SETICMPROFILEW 113
2643#define EMR_ALPHABLEND 114
2644#define EMR_SETLAYOUT 115
2645#define EMR_TRANSPARENTBLT 116
2646#define EMR_RESERVED_117 117
2647#define EMR_GRADIENTFILL 118
2648#define EMR_SETLINKEDUFI 119
2649#define EMR_SETTEXTJUSTIFICATION 120
2650#define EMR_COLORMATCHTOTARGETW 121
2651#define EMR_CREATECOLORSPACEW 122
Veksler Michael1346a3c1998-12-15 11:15:35 +00002652
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002653#define EMR_MIN 1
Ulrich Czekalla550b97e2002-06-24 23:09:19 +00002654#define EMR_MAX 122
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002655
Veksler Michael1346a3c1998-12-15 11:15:35 +00002656#define ENHMETA_SIGNATURE 1179469088
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002657#define ENHMETA_STOCK_OBJECT 0x80000000
2658
Alexandre Julliard80774de2003-02-14 23:30:27 +00002659#define GDICOMMENT_IDENTIFIER 0x43494447
2660#define GDICOMMENT_WINDOWS_METAFILE 0x80000001
2661#define GDICOMMENT_BEGINGROUP 0x00000002
2662#define GDICOMMENT_ENDGROUP 0x00000003
2663#define GDICOMMENT_MULTIFORMATS 0x40000004
2664#define GDICOMMENT_UNICODE_STRING 0x00000040
2665#define GDICOMMENT_UNICODE_END 0x00000080
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002666#define EPS_SIGNATURE 0x46535045
Veksler Michael1346a3c1998-12-15 11:15:35 +00002667
2668#define CCHDEVICENAME 32
2669#define CCHFORMNAME 32
2670
2671typedef struct
2672{
2673 BYTE dmDeviceName[CCHDEVICENAME];
2674 WORD dmSpecVersion;
2675 WORD dmDriverVersion;
2676 WORD dmSize;
2677 WORD dmDriverExtra;
2678 DWORD dmFields;
Huw D M Daviese39b6761999-05-17 16:20:51 +00002679 union {
2680 struct {
Dimitrie O. Paund985e662002-12-23 01:33:00 +00002681 short dmOrientation;
2682 short dmPaperSize;
2683 short dmPaperLength;
2684 short dmPaperWidth;
Francois Gouget6c97e452000-11-10 22:33:45 +00002685 } DUMMYSTRUCTNAME1;
Huw D M Daviese39b6761999-05-17 16:20:51 +00002686 POINTL dmPosition;
Francois Gouget6c97e452000-11-10 22:33:45 +00002687 } DUMMYUNIONNAME1;
Dimitrie O. Paund985e662002-12-23 01:33:00 +00002688 short dmScale;
2689 short dmCopies;
2690 short dmDefaultSource;
2691 short dmPrintQuality;
2692 short dmColor;
2693 short dmDuplex;
2694 short dmYResolution;
2695 short dmTTOption;
2696 short dmCollate;
Veksler Michael1346a3c1998-12-15 11:15:35 +00002697 BYTE dmFormName[CCHFORMNAME];
2698 WORD dmLogPixels;
2699 DWORD dmBitsPerPel;
2700 DWORD dmPelsWidth;
2701 DWORD dmPelsHeight;
2702 DWORD dmDisplayFlags;
2703 DWORD dmDisplayFrequency;
2704 DWORD dmICMMethod;
2705 DWORD dmICMIntent;
2706 DWORD dmMediaType;
2707 DWORD dmDitherType;
2708 DWORD dmReserved1;
2709 DWORD dmReserved2;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002710 DWORD dmPanningWidth;
2711 DWORD dmPanningHeight;
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +00002712} DEVMODEA, *PDEVMODEA, *LPDEVMODEA;
Veksler Michael1346a3c1998-12-15 11:15:35 +00002713
2714typedef struct
2715{
2716 WCHAR dmDeviceName[CCHDEVICENAME];
2717 WORD dmSpecVersion;
2718 WORD dmDriverVersion;
2719 WORD dmSize;
2720 WORD dmDriverExtra;
2721 DWORD dmFields;
Huw D M Daviese39b6761999-05-17 16:20:51 +00002722 union {
2723 struct {
Dimitrie O. Paund985e662002-12-23 01:33:00 +00002724 short dmOrientation;
2725 short dmPaperSize;
2726 short dmPaperLength;
2727 short dmPaperWidth;
Francois Gouget6c97e452000-11-10 22:33:45 +00002728 } DUMMYSTRUCTNAME1;
Huw D M Daviese39b6761999-05-17 16:20:51 +00002729 POINTL dmPosition;
Francois Gouget6c97e452000-11-10 22:33:45 +00002730 } DUMMYUNIONNAME1;
Dimitrie O. Paund985e662002-12-23 01:33:00 +00002731 short dmScale;
2732 short dmCopies;
2733 short dmDefaultSource;
2734 short dmPrintQuality;
2735 short dmColor;
2736 short dmDuplex;
2737 short dmYResolution;
2738 short dmTTOption;
2739 short dmCollate;
Veksler Michael1346a3c1998-12-15 11:15:35 +00002740 WCHAR dmFormName[CCHFORMNAME];
2741 WORD dmLogPixels;
2742 DWORD dmBitsPerPel;
2743 DWORD dmPelsWidth;
2744 DWORD dmPelsHeight;
2745 DWORD dmDisplayFlags;
2746 DWORD dmDisplayFrequency;
2747 DWORD dmICMMethod;
2748 DWORD dmICMIntent;
2749 DWORD dmMediaType;
2750 DWORD dmDitherType;
2751 DWORD dmReserved1;
2752 DWORD dmReserved2;
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002753 DWORD dmPanningWidth;
2754 DWORD dmPanningHeight;
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +00002755} DEVMODEW, *PDEVMODEW, *LPDEVMODEW;
Veksler Michael1346a3c1998-12-15 11:15:35 +00002756
2757DECL_WINELIB_TYPE_AW(DEVMODE)
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +00002758DECL_WINELIB_TYPE_AW(PDEVMODE)
Veksler Michael1346a3c1998-12-15 11:15:35 +00002759DECL_WINELIB_TYPE_AW(LPDEVMODE)
2760
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002761#define DM_SPECVERSION 0x401
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002762#define DM_UPDATE 1
2763#define DM_COPY 2
2764#define DM_PROMPT 4
2765#define DM_MODIFY 8
2766
2767#define DM_IN_BUFFER DM_MODIFY
2768#define DM_IN_PROMPT DM_PROMPT
2769#define DM_OUT_BUFFER DM_COPY
2770#define DM_OUT_DEFAULT DM_UPDATE
2771
2772#define DM_ORIENTATION 0x00000001L
2773#define DM_PAPERSIZE 0x00000002L
2774#define DM_PAPERLENGTH 0x00000004L
2775#define DM_PAPERWIDTH 0x00000008L
2776#define DM_SCALE 0x00000010L
Huw D M Daviese39b6761999-05-17 16:20:51 +00002777#define DM_POSITION 0x00000020L
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002778#define DM_COPIES 0x00000100L
2779#define DM_DEFAULTSOURCE 0x00000200L
2780#define DM_PRINTQUALITY 0x00000400L
2781#define DM_COLOR 0x00000800L
2782#define DM_DUPLEX 0x00001000L
2783#define DM_YRESOLUTION 0x00002000L
2784#define DM_TTOPTION 0x00004000L
Huw D M Daviese39b6761999-05-17 16:20:51 +00002785#define DM_COLLATE 0x00008000L
2786#define DM_FORMNAME 0x00010000L
2787#define DM_LOGPIXELS 0x00020000L
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002788#define DM_BITSPERPEL 0x00040000L
2789#define DM_PELSWIDTH 0x00080000L
2790#define DM_PELSHEIGHT 0x00100000L
2791#define DM_DISPLAYFLAGS 0x00200000L
2792#define DM_DISPLAYFREQUENCY 0x00400000L
Huw D M Daviese39b6761999-05-17 16:20:51 +00002793#define DM_ICMMETHOD 0x00800000L
2794#define DM_ICMINTENT 0x01000000L
2795#define DM_MEDIATYPE 0x02000000L
2796#define DM_DITHERTYPE 0x04000000L
2797#define DM_PANNINGWIDTH 0x08000000L
2798#define DM_PANNINGHEIGHT 0x10000000L
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002799
2800#define DMORIENT_PORTRAIT 1
2801#define DMORIENT_LANDSCAPE 2
2802
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002803#define DMPAPER_FIRST DMPAPER_LETTER
2804#define DMPAPER_LETTER 1
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002805#define DMPAPER_LETTERSMALL 2
2806#define DMPAPER_TABLOID 3
2807#define DMPAPER_LEDGER 4
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002808#define DMPAPER_LEGAL 5
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002809#define DMPAPER_STATEMENT 6
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002810#define DMPAPER_EXECUTIVE 7
2811#define DMPAPER_A3 8
2812#define DMPAPER_A4 9
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002813#define DMPAPER_A4SMALL 10
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002814#define DMPAPER_A5 11
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002815#define DMPAPER_B4 12
2816#define DMPAPER_B5 13
2817#define DMPAPER_FOLIO 14
2818#define DMPAPER_QUARTO 15
2819#define DMPAPER_10X14 16
2820#define DMPAPER_11X17 17
2821#define DMPAPER_NOTE 18
2822#define DMPAPER_ENV_9 19
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002823#define DMPAPER_ENV_10 20
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002824#define DMPAPER_ENV_11 21
2825#define DMPAPER_ENV_12 22
2826#define DMPAPER_ENV_14 23
2827#define DMPAPER_CSHEET 24
2828#define DMPAPER_DSHEET 25
2829#define DMPAPER_ESHEET 26
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002830#define DMPAPER_ENV_DL 27
2831#define DMPAPER_ENV_C5 28
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002832#define DMPAPER_ENV_C3 29
2833#define DMPAPER_ENV_C4 30
2834#define DMPAPER_ENV_C6 31
2835#define DMPAPER_ENV_C65 32
2836#define DMPAPER_ENV_B4 33
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002837#define DMPAPER_ENV_B5 34
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002838#define DMPAPER_ENV_B6 35
2839#define DMPAPER_ENV_ITALY 36
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002840#define DMPAPER_ENV_MONARCH 37
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002841#define DMPAPER_ENV_PERSONAL 38
2842#define DMPAPER_FANFOLD_US 39
2843#define DMPAPER_FANFOLD_STD_GERMAN 40
2844#define DMPAPER_FANFOLD_LGL_GERMAN 41
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002845#define DMPAPER_ISO_B4 42
2846#define DMPAPER_JAPANESE_POSTCARD 43
2847#define DMPAPER_9X11 44
2848#define DMPAPER_10X11 45
2849#define DMPAPER_15X11 46
2850#define DMPAPER_ENV_INVITE 47
2851#define DMPAPER_RESERVED_48 48
2852#define DMPAPER_RESERVED_49 49
2853#define DMPAPER_LETTER_EXTRA 50
2854#define DMPAPER_LEGAL_EXTRA 51
2855#define DMPAPER_TABLOID_EXTRA 52
2856#define DMPAPER_A4_EXTRA 53
2857#define DMPAPER_LETTER_TRANSVERSE 54
2858#define DMPAPER_A4_TRANSVERSE 55
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002859#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002860#define DMPAPER_A_PLUS 57
2861#define DMPAPER_B_PLUS 58
2862#define DMPAPER_LETTER_PLUS 59
2863#define DMPAPER_A4_PLUS 60
2864#define DMPAPER_A5_TRANSVERSE 61
2865#define DMPAPER_B5_TRANSVERSE 62
2866#define DMPAPER_A3_EXTRA 63
2867#define DMPAPER_A5_EXTRA 64
2868#define DMPAPER_B5_EXTRA 65
2869#define DMPAPER_A2 66
2870#define DMPAPER_A3_TRANSVERSE 67
Huw D M Davies0f184bf1999-07-27 16:09:40 +00002871#define DMPAPER_A3_EXTRA_TRANSVERSE 68
2872#define DMPAPER_DBL_JAPANESE_POSTCARD 69
Huw D M Davies6dd35691999-09-10 14:36:49 +00002873#define DMPAPER_A6 70
2874#define DMPAPER_JENV_KAKU2 71
2875#define DMPAPER_JENV_KAKU3 72
2876#define DMPAPER_JENV_CHOU3 73
2877#define DMPAPER_JENV_CHOU4 74
2878#define DMPAPER_LETTER_ROTATED 75
2879#define DMPAPER_A3_ROTATED 76
2880#define DMPAPER_A4_ROTATED 77
2881#define DMPAPER_A5_ROTATED 78
2882#define DMPAPER_B4_JIS_ROTATED 79
2883#define DMPAPER_B5_JIS_ROTATED 80
Huw D M Davies0f184bf1999-07-27 16:09:40 +00002884#define DMPAPER_JAPANESE_POSTCARD_ROTATED 81
2885#define DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED 82
Huw D M Davies6dd35691999-09-10 14:36:49 +00002886#define DMPAPER_A6_ROTATED 83
2887#define DMPAPER_JENV_KAKU2_ROTATED 84
2888#define DMPAPER_JENV_KAKU3_ROTATED 85
2889#define DMPAPER_JENV_CHOU3_ROTATED 86
2890#define DMPAPER_JENV_CHOU4_ROTATED 87
2891#define DMPAPER_B6_JIS 88
2892#define DMPAPER_B6_JIS_ROTATED 89
2893#define DMPAPER_12X11 90
2894#define DMPAPER_JENV_YOU4 91
2895#define DMPAPER_JENV_YOU4_ROTATED 92
2896#define DMPAPER_P16K 93
2897#define DMPAPER_P32K 94
2898#define DMPAPER_P32KBIG 95
2899#define DMPAPER_PENV_1 96
2900#define DMPAPER_PENV_2 97
2901#define DMPAPER_PENV_3 98
2902#define DMPAPER_PENV_4 99
2903#define DMPAPER_PENV_5 100
2904#define DMPAPER_PENV_6 101
2905#define DMPAPER_PENV_7 102
2906#define DMPAPER_PENV_8 103
2907#define DMPAPER_PENV_9 104
2908#define DMPAPER_PENV_10 105
2909#define DMPAPER_P16K_ROTATED 106
2910#define DMPAPER_P32K_ROTATED 107
2911#define DMPAPER_P32KBIG_ROTATED 108
2912#define DMPAPER_PENV_1_ROTATED 109
2913#define DMPAPER_PENV_2_ROTATED 110
2914#define DMPAPER_PENV_3_ROTATED 111
2915#define DMPAPER_PENV_4_ROTATED 112
2916#define DMPAPER_PENV_5_ROTATED 113
2917#define DMPAPER_PENV_6_ROTATED 114
2918#define DMPAPER_PENV_7_ROTATED 115
2919#define DMPAPER_PENV_8_ROTATED 116
2920#define DMPAPER_PENV_9_ROTATED 117
2921#define DMPAPER_PENV_10_ROTATED 118
2922
2923#define DMPAPER_LAST DMPAPER_PENV_10_ROTATED
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002924#define DMPAPER_USER 256
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002925
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002926#define DMBIN_FIRST DMBIN_UPPER
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002927#define DMBIN_UPPER 1
Huw D M Davies6dd35691999-09-10 14:36:49 +00002928#define DMBIN_ONLYONE 1
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002929#define DMBIN_LOWER 2
2930#define DMBIN_MIDDLE 3
2931#define DMBIN_MANUAL 4
2932#define DMBIN_ENVELOPE 5
2933#define DMBIN_ENVMANUAL 6
2934#define DMBIN_AUTO 7
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002935#define DMBIN_TRACTOR 8
2936#define DMBIN_SMALLFMT 9
2937#define DMBIN_LARGEFMT 10
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002938#define DMBIN_LARGECAPACITY 11
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002939#define DMBIN_CASSETTE 14
2940#define DMBIN_FORMSOURCE 15
2941#define DMBIN_LAST DMBIN_FORMSOURCE
2942#define DMBIN_USER 256
2943
2944#define DMRES_DRAFT (-1)
2945#define DMRES_LOW (-2)
2946#define DMRES_MEDIUM (-3)
2947#define DMRES_HIGH (-4)
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002948
2949#define DMCOLOR_MONOCHROME 1
2950#define DMCOLOR_COLOR 2
2951
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002952#define DMDUP_SIMPLEX 1
2953#define DMDUP_VERTICAL 2
2954#define DMDUP_HORIZONTAL 3
2955
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002956#define DMTT_BITMAP 1
2957#define DMTT_DOWNLOAD 2
2958#define DMTT_SUBDEV 3
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002959#define DMTT_DOWNLOAD_OUTLINE 4
Huw D M Daviesed6d4591999-03-28 15:20:00 +00002960
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00002961#define DMCOLLATE_FALSE 0
2962#define DMCOLLATE_TRUE 1
2963
2964#define DMICMMETHOD_NONE 1
2965#define DMICMMETHOD_SYSTEM 2
2966#define DMICMMETHOD_DRIVER 3
2967#define DMICMMETHOD_DEVICE 4
2968#define DMICMMETHOD_USER 256
2969
2970#define DMICM_SATURATE 1
2971#define DMICM_CONTRAST 2
2972#define DMICM_COLORMETRIC 3
2973#define DMICM_USER 256
2974
2975#define DMMEDIA_STANDARD 1
2976#define DMMEDIA_TRANSPARENCY 2
2977#define DMMEDIA_GLOSSY 3
2978#define DMMEDIA_USER 256
2979
2980#define DMDITHER_NONE 1
2981#define DMDITHER_COARSE 2
2982#define DMDITHER_FINE 3
2983#define DMDITHER_LINEART 4
2984#define DMDITHER_GRAYSCALE 5
2985#define DMDITHER_USER 256
Veksler Michael1346a3c1998-12-15 11:15:35 +00002986
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00002987typedef struct
Veksler Michael1346a3c1998-12-15 11:15:35 +00002988{
Alexandre Julliarda3960291999-02-26 11:11:13 +00002989 INT cbSize;
Veksler Michael1346a3c1998-12-15 11:15:35 +00002990 LPCSTR lpszDocName;
2991 LPCSTR lpszOutput;
2992 LPCSTR lpszDatatype;
2993 DWORD fwType;
Alexandre Julliarda3960291999-02-26 11:11:13 +00002994} DOCINFOA, *LPDOCINFOA;
Veksler Michael1346a3c1998-12-15 11:15:35 +00002995
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00002996typedef struct
Veksler Michael1346a3c1998-12-15 11:15:35 +00002997{
Alexandre Julliarda3960291999-02-26 11:11:13 +00002998 INT cbSize;
Veksler Michael1346a3c1998-12-15 11:15:35 +00002999 LPCWSTR lpszDocName;
3000 LPCWSTR lpszOutput;
3001 LPCWSTR lpszDatatype;
3002 DWORD fwType;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003003} DOCINFOW, *LPDOCINFOW;
Veksler Michael1346a3c1998-12-15 11:15:35 +00003004
3005DECL_WINELIB_TYPE_AW(DOCINFO)
3006DECL_WINELIB_TYPE_AW(LPDOCINFO)
3007
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003008#define DI_APPBANDING 0x0001
Veksler Michael1346a3c1998-12-15 11:15:35 +00003009
Brad Pepers0bdff361999-02-09 15:37:16 +00003010/* Flags for PolyDraw and GetPath */
3011#define PT_CLOSEFIGURE 0x0001
3012#define PT_LINETO 0x0002
3013#define PT_BEZIERTO 0x0004
3014#define PT_MOVETO 0x0006
3015
Veksler Michael1346a3c1998-12-15 11:15:35 +00003016#define RDH_RECTANGLES 1
3017
3018typedef struct _RGNDATAHEADER {
3019 DWORD dwSize;
3020 DWORD iType;
3021 DWORD nCount;
3022 DWORD nRgnSize;
Alexandre Julliarda3960291999-02-26 11:11:13 +00003023 RECT rcBound;
Francois Gouget6c97e452000-11-10 22:33:45 +00003024} RGNDATAHEADER,*PRGNDATAHEADER;
Veksler Michael1346a3c1998-12-15 11:15:35 +00003025
3026typedef struct _RGNDATA {
3027 RGNDATAHEADER rdh;
3028 char Buffer[1];
3029} RGNDATA,*PRGNDATA,*LPRGNDATA;
3030
Patrik Stridvallf94462f2002-01-31 23:22:07 +00003031typedef BOOL (CALLBACK *ABORTPROC)(HDC, INT);
Francois Gouget815d3201998-12-26 11:57:38 +00003032
Marcus Meissner8388f671999-09-19 12:09:23 +00003033typedef struct {
3034 DWORD cb;
Dmitry Timoshkov6b6596a2001-11-23 18:44:43 +00003035 CHAR DeviceName[32];
3036 CHAR DeviceString[128];
Marcus Meissner8388f671999-09-19 12:09:23 +00003037 DWORD StateFlags;
Dmitry Timoshkov6b6596a2001-11-23 18:44:43 +00003038 CHAR DeviceID[128];
3039 CHAR DeviceKey[128];
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00003040} DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA;
Marcus Meissner8388f671999-09-19 12:09:23 +00003041
3042typedef struct {
3043 DWORD cb;
3044 WCHAR DeviceName[32];
3045 WCHAR DeviceString[128];
3046 DWORD StateFlags;
Dmitry Timoshkov6b6596a2001-11-23 18:44:43 +00003047 WCHAR DeviceID[128];
3048 WCHAR DeviceKey[128];
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00003049} DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW;
Patrik Stridvall0ee98cc2000-02-26 13:17:55 +00003050DECL_WINELIB_TYPE_AW(DISPLAY_DEVICE)
3051DECL_WINELIB_TYPE_AW(PDISPLAY_DEVICE)
3052DECL_WINELIB_TYPE_AW(LPDISPLAY_DEVICE)
Marcus Meissner8388f671999-09-19 12:09:23 +00003053
3054/* DISPLAY_DEVICE.StateFlags (?)*/
3055#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001
3056#define DISPLAY_DEVICE_MULTI_DRIVER 0x00000002
3057#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004
3058#define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008
3059#define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010
3060
Leo van den Berg39bcf9d2002-03-19 02:14:34 +00003061typedef USHORT COLOR16;
3062
3063typedef struct _TRIVERTEX
3064{
3065 LONG x;
3066 LONG y;
3067 COLOR16 Red;
3068 COLOR16 Green;
3069 COLOR16 Blue;
3070 COLOR16 Alpha;
3071} TRIVERTEX, *PTRIVERTEX, *LPTRIVERTEX;
3072
3073typedef struct _GRADIENT_TRIANGLE
3074{
3075 ULONG Vertex1;
3076 ULONG Vertex2;
3077 ULONG Vertex3;
3078} GRADIENT_TRIANGLE, *PGRADIENT_TRIANGLE, *LPGRADIENT_TRIANGLE;
3079
3080typedef struct _GRADIENT_RECT
3081{
3082 ULONG UpperLeft;
3083 ULONG LowerRight;
3084} GRADIENT_RECT, *PGRADIENT_RECT, *LPGRADIENT_RECT;
3085
3086typedef struct _BLENDFUNCTION
3087{
3088 BYTE BlendOp;
3089 BYTE BlendFlags;
3090 BYTE SourceConstantAlpha;
3091 BYTE AlphaFormat;
3092} BLENDFUNCTION, *PBLENDFUNCTION;
3093
3094#define GRADIENT_FILL_RECT_H 0x00000000
3095#define GRADIENT_FILL_RECT_V 0x00000001
3096#define GRADIENT_FILL_TRIANGLE 0x00000002
3097#define GRADIENT_FILL_OP_FLAG 0x000000ff
3098
Huw D M Davies92bb19f2001-09-07 15:27:51 +00003099#define GDI_ERROR (0xFFFFFFFFL)
3100#define HGDI_ERROR ((HANDLE)0xFFFFFFFFL)
3101
Huw D M Davies8da26fb2002-06-22 01:19:29 +00003102/* AddFontResourceEx flags */
3103#define FR_PRIVATE 0x10
3104#define FR_NOT_ENUM 0x20
3105
3106
Leo van den Berg39bcf9d2002-03-19 02:14:34 +00003107INT WINAPI AbortDoc(HDC);
3108BOOL WINAPI AbortPath(HDC);
3109INT WINAPI AddFontResourceA(LPCSTR);
3110INT WINAPI AddFontResourceW(LPCWSTR);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003111#define AddFontResource WINELIB_NAME_AW(AddFontResource)
Huw D M Davies8da26fb2002-06-22 01:19:29 +00003112INT WINAPI AddFontResourceExA(LPCSTR, DWORD, PVOID);
3113INT WINAPI AddFontResourceExW(LPCWSTR, DWORD, PVOID);
3114#define AddFontResourceEx WINELIB_NAME_AW(AddFontResourceEx)
Leo van den Berg39bcf9d2002-03-19 02:14:34 +00003115BOOL WINAPI AlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
3116BOOL WINAPI AngleArc(HDC, INT, INT, DWORD, FLOAT, FLOAT);
3117BOOL WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
3118BOOL WINAPI Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
Vincent BĂ©ron9a624912002-05-31 23:06:46 +00003119BOOL WINAPI ArcTo(HDC, INT, INT, INT, INT, INT, INT, INT, INT);
Leo van den Berg39bcf9d2002-03-19 02:14:34 +00003120BOOL WINAPI BeginPath(HDC);
3121BOOL WINAPI BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD);
3122INT WINAPI ChoosePixelFormat(HDC,const LPPIXELFORMATDESCRIPTOR);
3123BOOL WINAPI Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003124HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
Leo van den Berg39bcf9d2002-03-19 02:14:34 +00003125BOOL WINAPI CloseFigure(HDC);
3126HMETAFILE WINAPI CloseMetaFile(HDC);
3127INT WINAPI CombineRgn(HRGN,HRGN,HRGN,INT);
3128BOOL WINAPI CombineTransform(LPXFORM,const XFORM *,const XFORM *);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003129HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
3130HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003131#define CopyEnhMetaFile WINELIB_NAME_AW(CopyEnhMetaFile)
Leo van den Berg39bcf9d2002-03-19 02:14:34 +00003132HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
3133HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003134#define CopyMetaFile WINELIB_NAME_AW(CopyMetaFile)
Leo van den Berg39bcf9d2002-03-19 02:14:34 +00003135HBITMAP WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID);
3136HBITMAP WINAPI CreateBitmapIndirect(const BITMAP*);
3137HBRUSH WINAPI CreateBrushIndirect(const LOGBRUSH*);
Peter Hunnisettf2b84922000-01-15 22:17:49 +00003138HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
3139HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
3140#define CreateColorSpace WINELIB_NAME_AW(CreateColorSpace)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003141HBITMAP WINAPI CreateCompatibleBitmap(HDC,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003142HDC WINAPI CreateCompatibleDC(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003143HDC WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
3144HDC WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003145#define CreateDC WINELIB_NAME_AW(CreateDC)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003146HBITMAP WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,
3147 LPCVOID,const BITMAPINFO*,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003148HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL,UINT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003149HBRUSH WINAPI CreateDIBPatternBrushPt(const void*,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003150HBITMAP WINAPI CreateDIBSection (HDC, BITMAPINFO *, UINT,
3151 LPVOID *, HANDLE, DWORD offset);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003152HBITMAP WINAPI CreateDiscardableBitmap(HDC,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003153HRGN WINAPI CreateEllipticRgn(INT,INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003154HRGN WINAPI CreateEllipticRgnIndirect(const RECT *);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003155HDC WINAPI CreateEnhMetaFileA(HDC,LPCSTR,const RECT*,LPCSTR);
3156HDC WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,const RECT*,LPCWSTR);
3157#define CreateEnhMetaFile WINELIB_NAME_AW(CreateEnhMetaFile)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003158HFONT WINAPI CreateFontA(INT,INT,INT,INT,INT,DWORD,DWORD,
Veksler Michael1346a3c1998-12-15 11:15:35 +00003159 DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003160HFONT WINAPI CreateFontW(INT,INT,INT,INT,INT,DWORD,DWORD,
Veksler Michael1346a3c1998-12-15 11:15:35 +00003161 DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
3162#define CreateFont WINELIB_NAME_AW(CreateFont)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003163HFONT WINAPI CreateFontIndirectA(const LOGFONTA*);
3164HFONT WINAPI CreateFontIndirectW(const LOGFONTW*);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003165#define CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect)
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003166HPALETTE WINAPI CreateHalftonePalette(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003167HBRUSH WINAPI CreateHatchBrush(INT,COLORREF);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003168HDC WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
3169HDC WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003170#define CreateIC WINELIB_NAME_AW(CreateIC)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003171HDC WINAPI CreateMetaFileA(LPCSTR);
3172HDC WINAPI CreateMetaFileW(LPCWSTR);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003173#define CreateMetaFile WINELIB_NAME_AW(CreateMetaFile)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003174HPALETTE WINAPI CreatePalette(const LOGPALETTE*);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003175HBRUSH WINAPI CreatePatternBrush(HBITMAP);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003176HPEN WINAPI CreatePen(INT,INT,COLORREF);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003177HPEN WINAPI CreatePenIndirect(const LOGPEN*);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003178HRGN WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003179HRGN WINAPI CreatePolygonRgn(const POINT*,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003180HRGN WINAPI CreateRectRgn(INT,INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003181HRGN WINAPI CreateRectRgnIndirect(const RECT*);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003182HRGN WINAPI CreateRoundRectRgn(INT,INT,INT,INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003183BOOL WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR);
3184BOOL WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003185#define CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003186HBRUSH WINAPI CreateSolidBrush(COLORREF);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003187BOOL WINAPI DPtoLP(HDC,LPPOINT,INT);
Peter Hunnisettf2b84922000-01-15 22:17:49 +00003188BOOL WINAPI DeleteColorSpace(HCOLORSPACE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003189BOOL WINAPI DeleteDC(HDC);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003190BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003191BOOL WINAPI DeleteMetaFile(HMETAFILE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003192BOOL WINAPI DeleteObject(HGDIOBJ);
3193INT WINAPI DescribePixelFormat(HDC,int,UINT,
Veksler Michael1346a3c1998-12-15 11:15:35 +00003194 LPPIXELFORMATDESCRIPTOR);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003195INT WINAPI DrawEscape(HDC,INT,INT,LPCSTR);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003196BOOL WINAPI Ellipse(HDC,INT,INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003197INT WINAPI EndDoc(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003198BOOL WINAPI EndPath(HDC);
Huw D M Davies280aeb92000-03-30 20:22:41 +00003199BOOL WINAPI EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,LPVOID,const RECT*);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003200INT WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
3201INT WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003202#define EnumFontFamilies WINELIB_NAME_AW(EnumFontFamilies)
Patrik Stridvallc99c0222002-11-13 04:13:42 +00003203INT WINAPI EnumFontFamiliesExA(HDC,LPLOGFONTA,FONTENUMPROCA,LPARAM,DWORD);
3204INT WINAPI EnumFontFamiliesExW(HDC,LPLOGFONTW,FONTENUMPROCW,LPARAM,DWORD);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003205#define EnumFontFamiliesEx WINELIB_NAME_AW(EnumFontFamiliesEx)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003206INT WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
3207INT WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003208#define EnumFonts WINELIB_NAME_AW(EnumFonts)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003209BOOL WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003210INT WINAPI EnumObjects(HDC,INT,GOBJENUMPROC,LPARAM);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003211BOOL WINAPI EqualRgn(HRGN,HRGN);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003212INT WINAPI Escape(HDC,INT,INT,LPCSTR,LPVOID);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003213INT WINAPI ExcludeClipRect(HDC,INT,INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003214HPEN WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003215HRGN WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*);
3216INT WINAPI ExtEscape(HDC,INT,INT,LPCSTR,INT,LPSTR);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003217BOOL WINAPI ExtFloodFill(HDC,INT,INT,COLORREF,UINT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003218INT WINAPI ExtSelectClipRgn(HDC,HRGN,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003219BOOL WINAPI ExtTextOutA(HDC,INT,INT,UINT,const RECT*,
3220 LPCSTR,UINT,const INT*);
3221BOOL WINAPI ExtTextOutW(HDC,INT,INT,UINT,const RECT*,
3222 LPCWSTR,UINT,const INT*);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003223#define ExtTextOut WINELIB_NAME_AW(ExtTextOut)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003224BOOL WINAPI FillPath(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003225BOOL WINAPI FillRgn(HDC,HRGN,HBRUSH);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003226BOOL WINAPI FixBrushOrgEx(HDC,INT,INT,LPPOINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003227BOOL WINAPI FlattenPath(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003228BOOL WINAPI FloodFill(HDC,INT,INT,COLORREF);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003229BOOL WINAPI FrameRgn(HDC,HRGN,HBRUSH,INT,INT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003230BOOL WINAPI GdiComment(HDC,UINT,const BYTE *);
Dmitry Timoshkov3a910c72003-08-12 20:42:18 +00003231DEVMODEW * WINAPI GdiConvertToDevmodeW(const DEVMODEA *);
Francois Gougetd4db6822001-10-08 20:31:59 +00003232BOOL WINAPI GdiFlush(void);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003233INT WINAPI GetArcDirection(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003234BOOL WINAPI GetAspectRatioFilterEx(HDC,LPSIZE);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003235LONG WINAPI GetBitmapBits(HBITMAP,LONG,LPVOID);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003236BOOL WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003237BOOL WINAPI GetBrushOrgEx(HDC,LPPOINT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003238COLORREF WINAPI GetBkColor(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003239INT WINAPI GetBkMode(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003240UINT WINAPI GetBoundsRect(HDC,LPRECT,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003241BOOL WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
3242BOOL WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003243#define GetCharABCWidths WINELIB_NAME_AW(GetCharABCWidths)
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003244BOOL WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
3245BOOL WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
3246#define GetCharABCWidthsFloat WINELIB_NAME_AW(GetCharABCWidthsFloat)
3247DWORD WINAPI GetCharacterPlacementA(HDC,LPCSTR,INT,INT,GCP_RESULTSA*,DWORD);
3248DWORD WINAPI GetCharacterPlacementW(HDC,LPCWSTR,INT,INT,GCP_RESULTSW*,DWORD);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003249#define GetCharacterPlacement WINELIB_NAME_AW(GetCharacterPlacement)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003250BOOL WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT);
3251BOOL WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT);
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +00003252#define GetCharWidthA GetCharWidth32A
3253#define GetCharWidthW GetCharWidth32W
3254#define GetCharWidth32 WINELIB_NAME_AW(GetCharWidth32)
Veksler Michael1346a3c1998-12-15 11:15:35 +00003255#define GetCharWidth WINELIB_NAME_AW(GetCharWidth)
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003256BOOL WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT);
3257BOOL WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT);
3258#define GetCharWidthFloat WINELIB_NAME_AW(GetCharWidthFloat)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003259INT WINAPI GetClipBox(HDC,LPRECT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003260INT WINAPI GetClipRgn(HDC,HRGN);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003261BOOL WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
3262HANDLE WINAPI GetCurrentObject(HDC,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003263BOOL WINAPI GetCurrentPositionEx(HDC,LPPOINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003264INT WINAPI GetDeviceCaps(HDC,INT);
Ove Kaaven27398d42001-03-20 01:55:18 +00003265BOOL WINAPI GetDeviceGammaRamp(HDC,LPVOID);
Francois Gougetb0656972000-12-26 00:00:46 +00003266COLORREF WINAPI GetDCBrushColor(HDC);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003267BOOL WINAPI GetDCOrgEx(HDC,LPPOINT);
Francois Gougetb0656972000-12-26 00:00:46 +00003268COLORREF WINAPI GetDCPenColor(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003269UINT WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003270INT WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,LPVOID,LPBITMAPINFO,UINT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003271HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
3272HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
3273#define GetEnhMetaFile WINELIB_NAME_AW(GetEnhMetaFile)
3274UINT WINAPI GetEnhMetaFileBits(HENHMETAFILE,UINT,LPBYTE);
Francois Gougetd55ccfd2000-10-12 23:14:52 +00003275UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR);
3276UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR);
3277#define GetEnhMetaFileDescription WINELIB_NAME_AW(GetEnhMetaFileDescription)
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003278UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
3279UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
3280DWORD WINAPI GetFontData(HDC,DWORD,DWORD,LPVOID,DWORD);
3281DWORD WINAPI GetFontLanguageInfo(HDC);
Dmitry Timoshkov2903ca12002-04-03 20:41:14 +00003282DWORD WINAPI GetGlyphIndicesA(HDC,LPCSTR,INT,LPWORD,DWORD);
3283DWORD WINAPI GetGlyphIndicesW(HDC,LPCWSTR,INT,LPWORD,DWORD);
3284#define GetGlyphIndices WINELIB_NAME_AW(GetGlyphIndices)
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003285DWORD WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
3286DWORD WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003287#define GetGlyphOutline WINELIB_NAME_AW(GetGlyphOutline)
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003288INT WINAPI GetGraphicsMode(HDC);
3289DWORD WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR);
3290DWORD WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003291#define GetKerningPairs WINELIB_NAME_AW(GetKerningPairs)
Huw D M Daviesf64e0d71999-11-21 00:49:50 +00003292DWORD WINAPI GetLayout(HDC);
François Gouget441f8742000-12-29 03:43:43 +00003293BOOL WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD);
3294BOOL WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD);
3295#define GetLogColorSpace WINELIB_NAME_AW(GetLogColorSpace)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003296INT WINAPI GetMapMode(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003297HMETAFILE WINAPI GetMetaFileA(LPCSTR);
3298HMETAFILE WINAPI GetMetaFileW(LPCWSTR);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003299#define GetMetaFile WINELIB_NAME_AW(GetMetaFile)
Peter Hunnisett0cdc4d91999-12-11 23:18:10 +00003300UINT WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,LPVOID);
3301INT WINAPI GetMetaRgn(HDC,HRGN);
3302BOOL WINAPI GetMiterLimit(HDC, PFLOAT);
3303DWORD WINAPI GetNearestColor(HDC,DWORD);
3304UINT WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF);
3305INT WINAPI GetObjectA(HANDLE,INT,LPVOID);
3306INT WINAPI GetObjectW(HANDLE,INT,LPVOID);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003307#define GetObject WINELIB_NAME_AW(GetObject)
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003308DWORD WINAPI GetObjectType(HANDLE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003309UINT WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA);
3310UINT WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003311#define GetOutlineTextMetrics WINELIB_NAME_AW(GetOutlineTextMetrics)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003312UINT WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003313INT WINAPI GetPath(HDC,LPPOINT,LPBYTE,INT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003314COLORREF WINAPI GetPixel(HDC,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003315INT WINAPI GetPixelFormat(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003316INT WINAPI GetPolyFillMode(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003317BOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003318DWORD WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA);
Patrik Stridvalle4174d52000-05-18 00:51:52 +00003319INT WINAPI GetRelAbs(HDC,DWORD);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003320INT WINAPI GetRgnBox(HRGN,LPRECT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003321INT WINAPI GetROP2(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003322HGDIOBJ WINAPI GetStockObject(INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003323INT WINAPI GetStretchBltMode(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003324UINT WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003325UINT WINAPI GetSystemPaletteUse(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003326UINT WINAPI GetTextAlign(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003327INT WINAPI GetTextCharacterExtra(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003328UINT WINAPI GetTextCharset(HDC);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003329UINT WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD);
3330COLORREF WINAPI GetTextColor(HDC);
3331BOOL WINAPI GetTextExtentExPointA(HDC,LPCSTR,INT,INT,
3332 LPINT,LPINT,LPSIZE);
3333BOOL WINAPI GetTextExtentExPointW(HDC,LPCWSTR,INT,INT,
3334 LPINT,LPINT,LPSIZE);
Huw D M Davies5b01b502002-04-03 22:08:27 +00003335#define GetTextExtentExPoint WINELIB_NAME_AW(GetTextExtentExPoint)
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003336BOOL WINAPI GetTextExtentPointA(HDC,LPCSTR,INT,LPSIZE);
3337BOOL WINAPI GetTextExtentPointW(HDC,LPCWSTR,INT,LPSIZE);
Francois Gouget7ae72f51999-03-13 18:19:29 +00003338#define GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint)
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003339BOOL WINAPI GetTextExtentPoint32A(HDC,LPCSTR,INT,LPSIZE);
3340BOOL WINAPI GetTextExtentPoint32W(HDC,LPCWSTR,INT,LPSIZE);
Francois Gouget7ae72f51999-03-13 18:19:29 +00003341#define GetTextExtentPoint32 WINELIB_NAME_AW(GetTextExtentPoint32)
Huw D M Davies5b01b502002-04-03 22:08:27 +00003342BOOL WINAPI GetTextExtentExPointI(HDC,const WORD*,INT,INT,LPINT,LPINT,LPSIZE);
3343BOOL WINAPI GetTextExtentPointI(HDC,const WORD*,INT,LPSIZE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003344INT WINAPI GetTextFaceA(HDC,INT,LPSTR);
3345INT WINAPI GetTextFaceW(HDC,INT,LPWSTR);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003346#define GetTextFace WINELIB_NAME_AW(GetTextFace)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003347BOOL WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA);
3348BOOL WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003349#define GetTextMetrics WINELIB_NAME_AW(GetTextMetrics)
Leo van den Berg39bcf9d2002-03-19 02:14:34 +00003350BOOL WINAPI GetViewportExtEx(HDC,LPSIZE);
3351BOOL WINAPI GetViewportOrgEx(HDC,LPPOINT);
3352BOOL WINAPI GetWindowExtEx(HDC,LPSIZE);
3353BOOL WINAPI GetWindowOrgEx(HDC,LPPOINT);
Dimitrie O. Paun27a8ff22002-12-19 22:15:53 +00003354UINT WINAPI GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC);
Leo van den Berg39bcf9d2002-03-19 02:14:34 +00003355BOOL WINAPI GetWorldTransform(HDC,LPXFORM);
3356BOOL WINAPI GradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
3357INT WINAPI IntersectClipRect(HDC,INT,INT,INT,INT);
3358BOOL WINAPI InvertRgn(HDC,HRGN);
3359BOOL WINAPI LineDDA(INT,INT,INT,INT,LINEDDAPROC,LPARAM);
3360BOOL WINAPI LineTo(HDC,INT,INT);
3361BOOL WINAPI LPtoDP(HDC,LPPOINT,INT);
3362BOOL WINAPI MaskBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,HBITMAP,INT,INT,DWORD);
3363BOOL WINAPI ModifyWorldTransform(HDC,const XFORM *, DWORD);
3364BOOL WINAPI MoveToEx(HDC,INT,INT,LPPOINT);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003365/* FIXME This is defined in kernel32.spec !?*/
Alexandre Julliarda3960291999-02-26 11:11:13 +00003366INT WINAPI MulDiv(INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003367INT WINAPI OffsetClipRgn(HDC,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003368INT WINAPI OffsetRgn(HRGN,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003369BOOL WINAPI OffsetViewportOrgEx(HDC,INT,INT,LPPOINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003370BOOL WINAPI OffsetWindowOrgEx(HDC,INT,INT,LPPOINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003371BOOL WINAPI PaintRgn(HDC,HRGN);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003372BOOL WINAPI PatBlt(HDC,INT,INT,INT,INT,DWORD);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003373HRGN WINAPI PathToRegion(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003374BOOL WINAPI Pie(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003375BOOL WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,const RECT*);
3376BOOL WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003377BOOL WINAPI PlayMetaFile(HDC,HMETAFILE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003378BOOL WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003379BOOL WINAPI PlgBlt(HDC,const POINT*,HDC,INT,INT,INT,INT,HBITMAP,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003380BOOL WINAPI PolyBezier(HDC,const POINT*,DWORD);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003381BOOL WINAPI PolyBezierTo(HDC,const POINT*,DWORD);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003382BOOL WINAPI PolyDraw(HDC,const POINT*,const BYTE*,DWORD);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003383BOOL WINAPI PolyPolygon(HDC,const POINT*,const INT*,UINT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003384BOOL WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003385BOOL WINAPI Polygon(HDC,const POINT*,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003386BOOL WINAPI Polyline(HDC,const POINT*,INT);
3387BOOL WINAPI PolylineTo(HDC,const POINT*,DWORD);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003388BOOL WINAPI PtInRegion(HRGN,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003389BOOL WINAPI PtVisible(HDC,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003390UINT WINAPI RealizePalette(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003391BOOL WINAPI Rectangle(HDC,INT,INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003392BOOL WINAPI RectInRegion(HRGN,const RECT *);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003393BOOL WINAPI RectVisible(HDC,const RECT*);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003394BOOL WINAPI RemoveFontResourceA(LPCSTR);
3395BOOL WINAPI RemoveFontResourceW(LPCWSTR);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003396#define RemoveFontResource WINELIB_NAME_AW(RemoveFontResource)
Huw D M Davies8da26fb2002-06-22 01:19:29 +00003397BOOL WINAPI RemoveFontResourceExA(LPCSTR, DWORD, PVOID);
3398BOOL WINAPI RemoveFontResourceExW(LPCWSTR, DWORD, PVOID);
3399#define RemoveFontResourceEx WINELIB_NAME_AW(RemoveFontResourceEx)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003400HDC WINAPI ResetDCA(HDC,const DEVMODEA *);
3401HDC WINAPI ResetDCW(HDC,const DEVMODEW *);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003402#define ResetDC WINELIB_NAME_AW(ResetDC)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003403BOOL WINAPI ResizePalette(HPALETTE,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003404BOOL WINAPI RestoreDC(HDC,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003405BOOL WINAPI RoundRect(HDC,INT,INT,INT,INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003406INT WINAPI SaveDC(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003407BOOL WINAPI ScaleViewportExtEx(HDC,INT,INT,INT,INT,LPSIZE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003408BOOL WINAPI ScaleWindowExtEx(HDC,INT,INT,INT,INT,LPSIZE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003409BOOL WINAPI SelectClipPath(HDC,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003410INT WINAPI SelectClipRgn(HDC,HRGN);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003411HGDIOBJ WINAPI SelectObject(HDC,HGDIOBJ);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003412HPALETTE WINAPI SelectPalette(HDC,HPALETTE,BOOL);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003413INT WINAPI SetAbortProc(HDC,ABORTPROC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003414INT WINAPI SetArcDirection(HDC,INT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003415LONG WINAPI SetBitmapBits(HBITMAP,LONG,LPCVOID);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003416BOOL WINAPI SetBitmapDimensionEx(HBITMAP,INT,INT,LPSIZE);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003417COLORREF WINAPI SetBkColor(HDC,COLORREF);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003418INT WINAPI SetBkMode(HDC,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003419UINT WINAPI SetBoundsRect(HDC,const RECT*,UINT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003420BOOL WINAPI SetBrushOrgEx(HDC,INT,INT,LPPOINT);
3421BOOL WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
Peter Hunnisettf2b84922000-01-15 22:17:49 +00003422HCOLORSPACE WINAPI SetColorSpace(HDC,HCOLORSPACE);
Ove Kaaven27398d42001-03-20 01:55:18 +00003423BOOL WINAPI SetDeviceGammaRamp(HDC,LPVOID);
Steve Lustbader361b9e82002-11-21 03:56:29 +00003424COLORREF WINAPI SetDCBrushColor(HDC,COLORREF);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003425UINT WINAPI SetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003426INT WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003427INT WINAPI SetDIBitsToDevice(HDC,INT,INT,DWORD,DWORD,INT,
3428 INT,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003429HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE *);
Peter Hunnisett0cdc4d91999-12-11 23:18:10 +00003430INT WINAPI SetGraphicsMode(HDC,INT);
Peter Hunnisettf2b84922000-01-15 22:17:49 +00003431INT WINAPI SetICMMode(HDC,INT);
Huw D M Daviesf64e0d71999-11-21 00:49:50 +00003432DWORD WINAPI SetLayout(HDC,DWORD);
Peter Hunnisett0cdc4d91999-12-11 23:18:10 +00003433INT WINAPI SetMapMode(HDC,INT);
3434DWORD WINAPI SetMapperFlags(HDC,DWORD);
3435HMETAFILE WINAPI SetMetaFileBitsEx(UINT,const BYTE*);
3436INT WINAPI SetMetaRgn(HDC);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003437BOOL WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT);
Alexandre Julliard376e6502002-06-02 21:40:24 +00003438UINT WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003439COLORREF WINAPI SetPixel(HDC,INT,INT,COLORREF);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003440BOOL WINAPI SetPixelV(HDC,INT,INT,COLORREF);
3441BOOL WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003442INT WINAPI SetPolyFillMode(HDC,INT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003443BOOL WINAPI SetRectRgn(HRGN,INT,INT,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003444INT WINAPI SetRelAbs(HDC,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003445INT WINAPI SetROP2(HDC,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003446INT WINAPI SetStretchBltMode(HDC,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003447UINT WINAPI SetSystemPaletteUse(HDC,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003448UINT WINAPI SetTextAlign(HDC,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003449INT WINAPI SetTextCharacterExtra(HDC,INT);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003450COLORREF WINAPI SetTextColor(HDC,COLORREF);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003451BOOL WINAPI SetTextJustification(HDC,INT,INT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003452BOOL WINAPI SetViewportExtEx(HDC,INT,INT,LPSIZE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003453BOOL WINAPI SetViewportOrgEx(HDC,INT,INT,LPPOINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003454BOOL WINAPI SetWindowExtEx(HDC,INT,INT,LPSIZE);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003455BOOL WINAPI SetWindowOrgEx(HDC,INT,INT,LPPOINT);
3456HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,CONST BYTE*,HDC,CONST METAFILEPICT *);
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003457BOOL WINAPI SetWorldTransform(HDC,const XFORM*);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003458INT WINAPI StartDocA(HDC,const DOCINFOA*);
3459INT WINAPI StartDocW(HDC,const DOCINFOW*);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003460#define StartDoc WINELIB_NAME_AW(StartDoc)
Alexandre Julliarda3960291999-02-26 11:11:13 +00003461INT WINAPI StartPage(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003462INT WINAPI EndPage(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003463BOOL WINAPI StretchBlt(HDC,INT,INT,INT,INT,HDC,INT,
3464 INT,INT,INT,DWORD);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003465INT WINAPI StretchDIBits(HDC,INT,INT,INT,INT,INT,INT,
3466 INT,INT,const VOID*,const BITMAPINFO*,UINT,DWORD);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003467BOOL WINAPI StrokeAndFillPath(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003468BOOL WINAPI StrokePath(HDC);
3469BOOL WINAPI SwapBuffers(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003470BOOL WINAPI TextOutA(HDC,INT,INT,LPCSTR,INT);
3471BOOL WINAPI TextOutW(HDC,INT,INT,LPCWSTR,INT);
Veksler Michael1346a3c1998-12-15 11:15:35 +00003472#define TextOut WINELIB_NAME_AW(TextOut)
Huw D M Daviesa9f55c41999-05-08 12:45:18 +00003473BOOL WINAPI TranslateCharsetInfo(LPDWORD,LPCHARSETINFO,DWORD);
Leo van den Berg39bcf9d2002-03-19 02:14:34 +00003474BOOL WINAPI TransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003475BOOL WINAPI UnrealizeObject(HGDIOBJ);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003476BOOL WINAPI UpdateColors(HDC);
Alexandre Julliarda3960291999-02-26 11:11:13 +00003477BOOL WINAPI WidenPath(HDC);
Peter Ganten87d95b71999-09-19 14:17:14 +00003478BOOL WINAPI PolyTextOutA(HDC,PPOLYTEXTA,INT);
3479BOOL WINAPI PolyTextOutW(HDC,PPOLYTEXTW,INT);
3480#define PolyTextOut WINELIB_NAME_AW(PolyTextOut)
Veksler Michael1346a3c1998-12-15 11:15:35 +00003481
Alexandre Julliard85844e52002-06-10 02:28:42 +00003482/* These defines are used by wglSwapLayerBuffers */
3483#define WGL_SWAP_MAIN_PLANE (1 << 0)
3484#define WGL_SWAP_OVERLAY1 (1 << 1)
3485#define WGL_SWAP_OVERLAY2 (1 << 2)
3486#define WGL_SWAP_OVERLAY3 (1 << 3)
3487#define WGL_SWAP_OVERLAY4 (1 << 4)
3488#define WGL_SWAP_OVERLAY5 (1 << 5)
3489#define WGL_SWAP_OVERLAY6 (1 << 6)
3490#define WGL_SWAP_OVERLAY7 (1 << 7)
3491#define WGL_SWAP_OVERLAY8 (1 << 8)
3492#define WGL_SWAP_OVERLAY9 (1 << 9)
3493#define WGL_SWAP_OVERLAY10 (1 << 10)
3494#define WGL_SWAP_OVERLAY11 (1 << 11)
3495#define WGL_SWAP_OVERLAY12 (1 << 12)
3496#define WGL_SWAP_OVERLAY13 (1 << 13)
3497#define WGL_SWAP_OVERLAY14 (1 << 14)
3498#define WGL_SWAP_OVERLAY15 (1 << 15)
3499#define WGL_SWAP_UNDERLAY1 (1 << 16)
3500#define WGL_SWAP_UNDERLAY2 (1 << 17)
3501#define WGL_SWAP_UNDERLAY3 (1 << 18)
3502#define WGL_SWAP_UNDERLAY4 (1 << 19)
3503#define WGL_SWAP_UNDERLAY5 (1 << 20)
3504#define WGL_SWAP_UNDERLAY6 (1 << 21)
3505#define WGL_SWAP_UNDERLAY7 (1 << 22)
3506#define WGL_SWAP_UNDERLAY8 (1 << 23)
3507#define WGL_SWAP_UNDERLAY9 (1 << 24)
3508#define WGL_SWAP_UNDERLAY10 (1 << 25)
3509#define WGL_SWAP_UNDERLAY11 (1 << 26)
3510#define WGL_SWAP_UNDERLAY12 (1 << 27)
3511#define WGL_SWAP_UNDERLAY13 (1 << 28)
3512#define WGL_SWAP_UNDERLAY14 (1 << 29)
3513#define WGL_SWAP_UNDERLAY15 (1 << 30)
3514
Alexandre Julliard73cc3ba1999-03-13 17:12:07 +00003515#ifdef __cplusplus
3516}
3517#endif
3518
Francois Gouget6371e832000-10-13 23:12:19 +00003519#endif /* !NOGDI */
3520#endif /* _WINGDI_ */