master
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _WINGDI_
7#define _WINGDI_
8
9#include <winapifamily.h>
10#include <_mingw_unicode.h>
11
12#ifdef _GDI32_
13#define WINGDIAPI
14#else
15#define WINGDIAPI DECLSPEC_IMPORT
16#endif
17
18#ifdef _SPOOL32_
19#define WINSPOOLAPI
20#else
21#define WINSPOOLAPI DECLSPEC_IMPORT
22#endif
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28#ifndef WINVER
29#define WINVER 0x0502
30#endif
31
32#ifndef NOGDI
33#ifndef NORASTEROPS
34#define R2_BLACK 1
35#define R2_NOTMERGEPEN 2
36#define R2_MASKNOTPEN 3
37#define R2_NOTCOPYPEN 4
38#define R2_MASKPENNOT 5
39#define R2_NOT 6
40#define R2_XORPEN 7
41#define R2_NOTMASKPEN 8
42#define R2_MASKPEN 9
43#define R2_NOTXORPEN 10
44#define R2_NOP 11
45#define R2_MERGENOTPEN 12
46#define R2_COPYPEN 13
47#define R2_MERGEPENNOT 14
48#define R2_MERGEPEN 15
49#define R2_WHITE 16
50#define R2_LAST 16
51
52#define SRCCOPY (DWORD)0x00CC0020
53#define SRCPAINT (DWORD)0x00EE0086
54#define SRCAND (DWORD)0x008800C6
55#define SRCINVERT (DWORD)0x00660046
56#define SRCERASE (DWORD)0x00440328
57#define NOTSRCCOPY (DWORD)0x00330008
58#define NOTSRCERASE (DWORD)0x001100A6
59#define MERGECOPY (DWORD)0x00C000CA
60#define MERGEPAINT (DWORD)0x00BB0226
61#define PATCOPY (DWORD)0x00F00021
62#define PATPAINT (DWORD)0x00FB0A09
63#define PATINVERT (DWORD)0x005A0049
64#define DSTINVERT (DWORD)0x00550009
65#define BLACKNESS (DWORD)0x00000042
66#define WHITENESS (DWORD)0x00FF0062
67#define NOMIRRORBITMAP (DWORD)0x80000000
68#define CAPTUREBLT (DWORD)0x40000000
69#define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))
70#endif /* NORASTEROPS */
71
72#define GDI_ERROR (__MSABI_LONG(0xFFFFFFFF))
73#define HGDI_ERROR (LongToHandle(0xFFFFFFFF))
74
75#define ERROR 0
76#define NULLREGION 1
77#define SIMPLEREGION 2
78#define COMPLEXREGION 3
79#define RGN_ERROR ERROR
80
81#define RGN_AND 1
82#define RGN_OR 2
83#define RGN_XOR 3
84#define RGN_DIFF 4
85#define RGN_COPY 5
86#define RGN_MIN RGN_AND
87#define RGN_MAX RGN_COPY
88
89#define BLACKONWHITE 1
90#define WHITEONBLACK 2
91#define COLORONCOLOR 3
92#define HALFTONE 4
93#define MAXSTRETCHBLTMODE 4
94
95#define STRETCH_ANDSCANS BLACKONWHITE
96#define STRETCH_ORSCANS WHITEONBLACK
97#define STRETCH_DELETESCANS COLORONCOLOR
98#define STRETCH_HALFTONE HALFTONE
99
100#define ALTERNATE 1
101#define WINDING 2
102#define POLYFILL_LAST 2
103
104#define LAYOUT_RTL 0x00000001
105#define LAYOUT_BTT 0x00000002
106#define LAYOUT_VBH 0x00000004
107#define LAYOUT_ORIENTATIONMASK (LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH)
108#define LAYOUT_BITMAPORIENTATIONPRESERVED 0x00000008
109
110#define TA_NOUPDATECP 0
111#define TA_UPDATECP 1
112
113#define TA_LEFT 0
114#define TA_RIGHT 2
115#define TA_CENTER 6
116
117#define TA_TOP 0
118#define TA_BOTTOM 8
119#define TA_BASELINE 24
120#define TA_RTLREADING 256
121#define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING)
122
123#define VTA_BASELINE TA_BASELINE
124#define VTA_LEFT TA_BOTTOM
125#define VTA_RIGHT TA_TOP
126#define VTA_CENTER TA_CENTER
127#define VTA_BOTTOM TA_RIGHT
128#define VTA_TOP TA_LEFT
129
130#define ETO_OPAQUE 0x0002
131#define ETO_CLIPPED 0x0004
132#define ETO_GLYPH_INDEX 0x0010
133#define ETO_RTLREADING 0x0080
134#define ETO_NUMERICSLOCAL 0x0400
135#define ETO_NUMERICSLATIN 0x0800
136#define ETO_IGNORELANGUAGE 0x1000
137#define ETO_PDY 0x2000
138#if _WIN32_WINNT >= 0x0600
139#define ETO_REVERSE_INDEX_MAP 0x10000
140#endif
141
142#define ASPECT_FILTERING 0x0001
143
144#define DCB_RESET 0x0001
145#define DCB_ACCUMULATE 0x0002
146#define DCB_DIRTY DCB_ACCUMULATE
147#define DCB_SET (DCB_RESET | DCB_ACCUMULATE)
148#define DCB_ENABLE 0x0004
149#define DCB_DISABLE 0x0008
150
151#ifndef NOMETAFILE
152
153#define META_SETBKCOLOR 0x0201
154#define META_SETBKMODE 0x0102
155#define META_SETMAPMODE 0x0103
156#define META_SETROP2 0x0104
157#define META_SETRELABS 0x0105
158#define META_SETPOLYFILLMODE 0x0106
159#define META_SETSTRETCHBLTMODE 0x0107
160#define META_SETTEXTCHAREXTRA 0x0108
161#define META_SETTEXTCOLOR 0x0209
162#define META_SETTEXTJUSTIFICATION 0x020A
163#define META_SETWINDOWORG 0x020B
164#define META_SETWINDOWEXT 0x020C
165#define META_SETVIEWPORTORG 0x020D
166#define META_SETVIEWPORTEXT 0x020E
167#define META_OFFSETWINDOWORG 0x020F
168#define META_SCALEWINDOWEXT 0x0410
169#define META_OFFSETVIEWPORTORG 0x0211
170#define META_SCALEVIEWPORTEXT 0x0412
171#define META_LINETO 0x0213
172#define META_MOVETO 0x0214
173#define META_EXCLUDECLIPRECT 0x0415
174#define META_INTERSECTCLIPRECT 0x0416
175#define META_ARC 0x0817
176#define META_ELLIPSE 0x0418
177#define META_FLOODFILL 0x0419
178#define META_PIE 0x081A
179#define META_RECTANGLE 0x041B
180#define META_ROUNDRECT 0x061C
181#define META_PATBLT 0x061D
182#define META_SAVEDC 0x001E
183#define META_SETPIXEL 0x041F
184#define META_OFFSETCLIPRGN 0x0220
185#define META_TEXTOUT 0x0521
186#define META_BITBLT 0x0922
187#define META_STRETCHBLT 0x0B23
188#define META_POLYGON 0x0324
189#define META_POLYLINE 0x0325
190#define META_ESCAPE 0x0626
191#define META_RESTOREDC 0x0127
192#define META_FILLREGION 0x0228
193#define META_FRAMEREGION 0x0429
194#define META_INVERTREGION 0x012A
195#define META_PAINTREGION 0x012B
196#define META_SELECTCLIPREGION 0x012C
197#define META_SELECTOBJECT 0x012D
198#define META_SETTEXTALIGN 0x012E
199#define META_CHORD 0x0830
200#define META_SETMAPPERFLAGS 0x0231
201#define META_EXTTEXTOUT 0x0a32
202#define META_SETDIBTODEV 0x0d33
203#define META_SELECTPALETTE 0x0234
204#define META_REALIZEPALETTE 0x0035
205#define META_ANIMATEPALETTE 0x0436
206#define META_SETPALENTRIES 0x0037
207#define META_POLYPOLYGON 0x0538
208#define META_RESIZEPALETTE 0x0139
209#define META_DIBBITBLT 0x0940
210#define META_DIBSTRETCHBLT 0x0b41
211#define META_DIBCREATEPATTERNBRUSH 0x0142
212#define META_STRETCHDIB 0x0f43
213#define META_EXTFLOODFILL 0x0548
214#define META_SETLAYOUT 0x0149
215#define META_DELETEOBJECT 0x01f0
216#define META_CREATEPALETTE 0x00f7
217#define META_CREATEPATTERNBRUSH 0x01F9
218#define META_CREATEPENINDIRECT 0x02FA
219#define META_CREATEFONTINDIRECT 0x02FB
220#define META_CREATEBRUSHINDIRECT 0x02FC
221#define META_CREATEREGION 0x06FF
222
223#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
224 typedef struct _DRAWPATRECT {
225 POINT ptPosition;
226 POINT ptSize;
227 WORD wStyle;
228 WORD wPattern;
229 } DRAWPATRECT,*PDRAWPATRECT;
230#endif
231
232#endif /* NOMETAFILE */
233
234#define NEWFRAME 1
235#define ABORTDOC 2
236#define NEXTBAND 3
237#define SETCOLORTABLE 4
238#define GETCOLORTABLE 5
239#define FLUSHOUTPUT 6
240#define DRAFTMODE 7
241#define QUERYESCSUPPORT 8
242#define SETABORTPROC 9
243#define STARTDOC 10
244#define ENDDOC 11
245#define GETPHYSPAGESIZE 12
246#define GETPRINTINGOFFSET 13
247#define GETSCALINGFACTOR 14
248#define MFCOMMENT 15
249#define GETPENWIDTH 16
250#define SETCOPYCOUNT 17
251#define SELECTPAPERSOURCE 18
252#define DEVICEDATA 19
253#define PASSTHROUGH 19
254#define GETTECHNOLGY 20
255#define GETTECHNOLOGY 20
256#define SETLINECAP 21
257#define SETLINEJOIN 22
258#define SETMITERLIMIT 23
259#define BANDINFO 24
260#define DRAWPATTERNRECT 25
261#define GETVECTORPENSIZE 26
262#define GETVECTORBRUSHSIZE 27
263#define ENABLEDUPLEX 28
264#define GETSETPAPERBINS 29
265#define GETSETPRINTORIENT 30
266#define ENUMPAPERBINS 31
267#define SETDIBSCALING 32
268#define EPSPRINTING 33
269#define ENUMPAPERMETRICS 34
270#define GETSETPAPERMETRICS 35
271#define POSTSCRIPT_DATA 37
272#define POSTSCRIPT_IGNORE 38
273#define MOUSETRAILS 39
274#define GETDEVICEUNITS 42
275
276#define GETEXTENDEDTEXTMETRICS 256
277#define GETEXTENTTABLE 257
278#define GETPAIRKERNTABLE 258
279#define GETTRACKKERNTABLE 259
280#define EXTTEXTOUT 512
281#define GETFACENAME 513
282#define DOWNLOADFACE 514
283#define ENABLERELATIVEWIDTHS 768
284#define ENABLEPAIRKERNING 769
285#define SETKERNTRACK 770
286#define SETALLJUSTVALUES 771
287#define SETCHARSET 772
288
289#define STRETCHBLT 2048
290#define METAFILE_DRIVER 2049
291#define GETSETSCREENPARAMS 3072
292#define QUERYDIBSUPPORT 3073
293#define BEGIN_PATH 4096
294#define CLIP_TO_PATH 4097
295#define END_PATH 4098
296#define EXT_DEVICE_CAPS 4099
297#define RESTORE_CTM 4100
298#define SAVE_CTM 4101
299#define SET_ARC_DIRECTION 4102
300#define SET_BACKGROUND_COLOR 4103
301#define SET_POLY_MODE 4104
302#define SET_SCREEN_ANGLE 4105
303#define SET_SPREAD 4106
304#define TRANSFORM_CTM 4107
305#define SET_CLIP_BOX 4108
306#define SET_BOUNDS 4109
307#define SET_MIRROR_MODE 4110
308#define OPENCHANNEL 4110
309#define DOWNLOADHEADER 4111
310#define CLOSECHANNEL 4112
311#define POSTSCRIPT_PASSTHROUGH 4115
312#define ENCAPSULATED_POSTSCRIPT 4116
313
314#define POSTSCRIPT_IDENTIFY 4117
315#define POSTSCRIPT_INJECTION 4118
316
317#define CHECKJPEGFORMAT 4119
318#define CHECKPNGFORMAT 4120
319
320#define GET_PS_FEATURESETTING 4121
321#define GDIPLUS_TS_QUERYVER 4122
322#define GDIPLUS_TS_RECORD 4123
323
324#if _WIN32_WINNT >= 0x0600
325#define MILCORE_TS_QUERYVER_RESULT_FALSE 0x0
326#define MILCORE_TS_QUERYVER_RESULT_TRUE 0x7FFFFFFF
327#endif
328
329#define SPCLPASSTHROUGH2 4568
330
331#define PSIDENT_GDICENTRIC 0
332#define PSIDENT_PSCENTRIC 1
333
334#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
335 typedef struct _PSINJECTDATA {
336 DWORD DataBytes;
337 WORD InjectionPoint;
338 WORD PageNumber;
339 } PSINJECTDATA,*PPSINJECTDATA;
340#endif
341
342#define PSINJECT_BEGINSTREAM 1
343#define PSINJECT_PSADOBE 2
344#define PSINJECT_PAGESATEND 3
345#define PSINJECT_PAGES 4
346
347#define PSINJECT_DOCNEEDEDRES 5
348#define PSINJECT_DOCSUPPLIEDRES 6
349#define PSINJECT_PAGEORDER 7
350#define PSINJECT_ORIENTATION 8
351#define PSINJECT_BOUNDINGBOX 9
352#define PSINJECT_DOCUMENTPROCESSCOLORS 10
353
354#define PSINJECT_COMMENTS 11
355#define PSINJECT_BEGINDEFAULTS 12
356#define PSINJECT_ENDDEFAULTS 13
357#define PSINJECT_BEGINPROLOG 14
358#define PSINJECT_ENDPROLOG 15
359#define PSINJECT_BEGINSETUP 16
360#define PSINJECT_ENDSETUP 17
361#define PSINJECT_TRAILER 18
362#define PSINJECT_EOF 19
363#define PSINJECT_ENDSTREAM 20
364#define PSINJECT_DOCUMENTPROCESSCOLORSATEND 21
365
366#define PSINJECT_PAGENUMBER 100
367#define PSINJECT_BEGINPAGESETUP 101
368#define PSINJECT_ENDPAGESETUP 102
369#define PSINJECT_PAGETRAILER 103
370#define PSINJECT_PLATECOLOR 104
371
372#define PSINJECT_SHOWPAGE 105
373#define PSINJECT_PAGEBBOX 106
374#define PSINJECT_ENDPAGECOMMENTS 107
375
376#define PSINJECT_VMSAVE 200
377#define PSINJECT_VMRESTORE 201
378
379#define PSINJECT_DLFONT 0xdddddddd
380
381#define FEATURESETTING_NUP 0
382#define FEATURESETTING_OUTPUT 1
383#define FEATURESETTING_PSLEVEL 2
384#define FEATURESETTING_CUSTPAPER 3
385#define FEATURESETTING_MIRROR 4
386#define FEATURESETTING_NEGATIVE 5
387#define FEATURESETTING_PROTOCOL 6
388
389#define FEATURESETTING_PRIVATE_BEGIN 0x1000
390#define FEATURESETTING_PRIVATE_END 0x1FFF
391
392#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
393 typedef struct _PSFEATURE_OUTPUT {
394 WINBOOL bPageIndependent;
395 WINBOOL bSetPageDevice;
396 } PSFEATURE_OUTPUT,*PPSFEATURE_OUTPUT;
397
398 typedef struct _PSFEATURE_CUSTPAPER {
399 LONG lOrientation;
400 LONG lWidth;
401 LONG lHeight;
402 LONG lWidthOffset;
403 LONG lHeightOffset;
404 } PSFEATURE_CUSTPAPER,*PPSFEATURE_CUSTPAPER;
405#endif
406
407#define PSPROTOCOL_ASCII 0
408#define PSPROTOCOL_BCP 1
409#define PSPROTOCOL_TBCP 2
410#define PSPROTOCOL_BINARY 3
411
412#define QDI_SETDIBITS 1
413#define QDI_GETDIBITS 2
414#define QDI_DIBTOSCREEN 4
415#define QDI_STRETCHDIB 8
416
417#define SP_NOTREPORTED 0x4000
418#define SP_ERROR (-1)
419#define SP_APPABORT (-2)
420#define SP_USERABORT (-3)
421#define SP_OUTOFDISK (-4)
422#define SP_OUTOFMEMORY (-5)
423
424#define PR_JOBSTATUS 0x0000
425
426#define OBJ_PEN 1
427#define OBJ_BRUSH 2
428#define OBJ_DC 3
429#define OBJ_METADC 4
430#define OBJ_PAL 5
431#define OBJ_FONT 6
432#define OBJ_BITMAP 7
433#define OBJ_REGION 8
434#define OBJ_METAFILE 9
435#define OBJ_MEMDC 10
436#define OBJ_EXTPEN 11
437#define OBJ_ENHMETADC 12
438#define OBJ_ENHMETAFILE 13
439#define OBJ_COLORSPACE 14
440
441#define GDI_OBJ_LAST OBJ_COLORSPACE
442
443#define GDI_MIN_OBJ_TYPE OBJ_PEN
444#define GDI_MAX_OBJ_TYPE GDI_OBJ_LAST
445
446#define MWT_IDENTITY 1
447#define MWT_LEFTMULTIPLY 2
448#define MWT_RIGHTMULTIPLY 3
449
450#define MWT_MIN MWT_IDENTITY
451#define MWT_MAX MWT_RIGHTMULTIPLY
452
453#define _XFORM_
454#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
455 typedef struct tagXFORM {
456 FLOAT eM11;
457 FLOAT eM12;
458 FLOAT eM21;
459 FLOAT eM22;
460 FLOAT eDx;
461 FLOAT eDy;
462 } XFORM,*PXFORM,*LPXFORM;
463
464 typedef struct tagBITMAP {
465 LONG bmType;
466 LONG bmWidth;
467 LONG bmHeight;
468 LONG bmWidthBytes;
469 WORD bmPlanes;
470 WORD bmBitsPixel;
471 LPVOID bmBits;
472 } BITMAP,*PBITMAP,*NPBITMAP,*LPBITMAP;
473
474#include <pshpack1.h>
475 typedef struct tagRGBTRIPLE {
476 BYTE rgbtBlue;
477 BYTE rgbtGreen;
478 BYTE rgbtRed;
479 } RGBTRIPLE,*PRGBTRIPLE,*NPRGBTRIPLE,*LPRGBTRIPLE;
480#include <poppack.h>
481
482 typedef struct tagRGBQUAD {
483 BYTE rgbBlue;
484 BYTE rgbGreen;
485 BYTE rgbRed;
486 BYTE rgbReserved;
487 } RGBQUAD;
488#endif
489
490#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
491 typedef RGBQUAD *LPRGBQUAD;
492#endif
493
494#define CS_ENABLE __MSABI_LONG(0x00000001)
495#define CS_DISABLE __MSABI_LONG(0x00000002)
496#define CS_DELETE_TRANSFORM __MSABI_LONG(0x00000003)
497
498#define LCS_SIGNATURE 'PSOC'
499
500#define LCS_sRGB 'sRGB'
501#define LCS_WINDOWS_COLOR_SPACE 'Win '
502
503#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
504 typedef LONG LCSCSTYPE;
505#define LCS_CALIBRATED_RGB __MSABI_LONG(0x00000000)
506
507 typedef LONG LCSGAMUTMATCH;
508#define LCS_GM_BUSINESS __MSABI_LONG(0x00000001)
509#define LCS_GM_GRAPHICS __MSABI_LONG(0x00000002)
510#define LCS_GM_IMAGES __MSABI_LONG(0x00000004)
511#define LCS_GM_ABS_COLORIMETRIC __MSABI_LONG(0x00000008)
512
513#define CM_OUT_OF_GAMUT 255
514#define CM_IN_GAMUT 0
515
516#define ICM_ADDPROFILE 1
517#define ICM_DELETEPROFILE 2
518#define ICM_QUERYPROFILE 3
519#define ICM_SETDEFAULTPROFILE 4
520#define ICM_REGISTERICMATCHER 5
521#define ICM_UNREGISTERICMATCHER 6
522#define ICM_QUERYMATCH 7
523
524#define GetKValue(cmyk) ((BYTE)(cmyk))
525#define GetYValue(cmyk) ((BYTE)((cmyk)>> 8))
526#define GetMValue(cmyk) ((BYTE)((cmyk)>>16))
527#define GetCValue(cmyk) ((BYTE)((cmyk)>>24))
528
529#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24)))
530
531 typedef __LONG32 FXPT16DOT16,*LPFXPT16DOT16;
532 typedef __LONG32 FXPT2DOT30,*LPFXPT2DOT30;
533
534 typedef struct tagCIEXYZ {
535 FXPT2DOT30 ciexyzX;
536 FXPT2DOT30 ciexyzY;
537 FXPT2DOT30 ciexyzZ;
538 } CIEXYZ;
539#endif
540#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
541 typedef CIEXYZ *LPCIEXYZ;
542#endif
543#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
544 typedef struct tagICEXYZTRIPLE {
545 CIEXYZ ciexyzRed;
546 CIEXYZ ciexyzGreen;
547 CIEXYZ ciexyzBlue;
548 } CIEXYZTRIPLE;
549#endif
550#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
551 typedef CIEXYZTRIPLE *LPCIEXYZTRIPLE;
552#endif
553
554#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
555 typedef struct tagLOGCOLORSPACEA {
556 DWORD lcsSignature;
557 DWORD lcsVersion;
558 DWORD lcsSize;
559 LCSCSTYPE lcsCSType;
560 LCSGAMUTMATCH lcsIntent;
561 CIEXYZTRIPLE lcsEndpoints;
562 DWORD lcsGammaRed;
563 DWORD lcsGammaGreen;
564 DWORD lcsGammaBlue;
565 CHAR lcsFilename[MAX_PATH];
566 } LOGCOLORSPACEA,*LPLOGCOLORSPACEA;
567
568 typedef struct tagLOGCOLORSPACEW {
569 DWORD lcsSignature;
570 DWORD lcsVersion;
571 DWORD lcsSize;
572 LCSCSTYPE lcsCSType;
573 LCSGAMUTMATCH lcsIntent;
574 CIEXYZTRIPLE lcsEndpoints;
575 DWORD lcsGammaRed;
576 DWORD lcsGammaGreen;
577 DWORD lcsGammaBlue;
578 WCHAR lcsFilename[MAX_PATH];
579 } LOGCOLORSPACEW,*LPLOGCOLORSPACEW;
580
581 __MINGW_TYPEDEF_AW(LOGCOLORSPACE)
582 __MINGW_TYPEDEF_AW(LPLOGCOLORSPACE)
583#endif
584
585#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
586 typedef struct tagBITMAPCOREHEADER {
587 DWORD bcSize;
588 WORD bcWidth;
589 WORD bcHeight;
590 WORD bcPlanes;
591 WORD bcBitCount;
592 } BITMAPCOREHEADER,*LPBITMAPCOREHEADER,*PBITMAPCOREHEADER;
593#endif
594
595#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
596 typedef struct tagBITMAPINFOHEADER {
597 DWORD biSize;
598 LONG biWidth;
599 LONG biHeight;
600 WORD biPlanes;
601 WORD biBitCount;
602 DWORD biCompression;
603 DWORD biSizeImage;
604 LONG biXPelsPerMeter;
605 LONG biYPelsPerMeter;
606 DWORD biClrUsed;
607 DWORD biClrImportant;
608 } BITMAPINFOHEADER,*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER;
609#endif
610
611#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
612 typedef struct {
613 DWORD bV4Size;
614 LONG bV4Width;
615 LONG bV4Height;
616 WORD bV4Planes;
617 WORD bV4BitCount;
618 DWORD bV4V4Compression;
619 DWORD bV4SizeImage;
620 LONG bV4XPelsPerMeter;
621 LONG bV4YPelsPerMeter;
622 DWORD bV4ClrUsed;
623 DWORD bV4ClrImportant;
624 DWORD bV4RedMask;
625 DWORD bV4GreenMask;
626 DWORD bV4BlueMask;
627 DWORD bV4AlphaMask;
628 DWORD bV4CSType;
629 CIEXYZTRIPLE bV4Endpoints;
630 DWORD bV4GammaRed;
631 DWORD bV4GammaGreen;
632 DWORD bV4GammaBlue;
633 } BITMAPV4HEADER,*LPBITMAPV4HEADER,*PBITMAPV4HEADER;
634
635 typedef struct {
636 DWORD bV5Size;
637 LONG bV5Width;
638 LONG bV5Height;
639 WORD bV5Planes;
640 WORD bV5BitCount;
641 DWORD bV5Compression;
642 DWORD bV5SizeImage;
643 LONG bV5XPelsPerMeter;
644 LONG bV5YPelsPerMeter;
645 DWORD bV5ClrUsed;
646 DWORD bV5ClrImportant;
647 DWORD bV5RedMask;
648 DWORD bV5GreenMask;
649 DWORD bV5BlueMask;
650 DWORD bV5AlphaMask;
651 DWORD bV5CSType;
652 CIEXYZTRIPLE bV5Endpoints;
653 DWORD bV5GammaRed;
654 DWORD bV5GammaGreen;
655 DWORD bV5GammaBlue;
656 DWORD bV5Intent;
657 DWORD bV5ProfileData;
658 DWORD bV5ProfileSize;
659 DWORD bV5Reserved;
660 } BITMAPV5HEADER,*LPBITMAPV5HEADER,*PBITMAPV5HEADER;
661#endif
662
663#define PROFILE_LINKED 'LINK'
664#define PROFILE_EMBEDDED 'MBED'
665
666#define BI_RGB __MSABI_LONG(0)
667#define BI_RLE8 __MSABI_LONG(1)
668#define BI_RLE4 __MSABI_LONG(2)
669#define BI_BITFIELDS __MSABI_LONG(3)
670#define BI_JPEG __MSABI_LONG(4)
671#define BI_PNG __MSABI_LONG(5)
672
673#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
674 typedef struct tagBITMAPINFO {
675 BITMAPINFOHEADER bmiHeader;
676 RGBQUAD bmiColors[1];
677 } BITMAPINFO,*LPBITMAPINFO,*PBITMAPINFO;
678#endif
679
680#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
681 typedef struct tagBITMAPCOREINFO {
682 BITMAPCOREHEADER bmciHeader;
683 RGBTRIPLE bmciColors[1];
684 } BITMAPCOREINFO,*LPBITMAPCOREINFO,*PBITMAPCOREINFO;
685
686#include <pshpack2.h>
687 typedef struct tagBITMAPFILEHEADER {
688 WORD bfType;
689 DWORD bfSize;
690 WORD bfReserved1;
691 WORD bfReserved2;
692 DWORD bfOffBits;
693 } BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
694#include <poppack.h>
695#endif
696
697#define MAKEPOINTS(l) (*((POINTS *)&(l)))
698
699#ifndef NOFONTSIG
700
701#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
702 typedef struct tagFONTSIGNATURE {
703 DWORD fsUsb[4];
704 DWORD fsCsb[2];
705 } FONTSIGNATURE,*PFONTSIGNATURE,*LPFONTSIGNATURE;
706
707 typedef struct tagCHARSETINFO {
708 UINT ciCharset;
709 UINT ciACP;
710 FONTSIGNATURE fs;
711 } CHARSETINFO,*PCHARSETINFO,*NPCHARSETINFO,*LPCHARSETINFO;
712#endif
713
714#define TCI_SRCCHARSET 1
715#define TCI_SRCCODEPAGE 2
716#define TCI_SRCFONTSIG 3
717#define TCI_SRCLOCALE 0x1000
718
719#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
720 typedef struct tagLOCALESIGNATURE {
721 DWORD lsUsb[4];
722 DWORD lsCsbDefault[2];
723 DWORD lsCsbSupported[2];
724 } LOCALESIGNATURE,*PLOCALESIGNATURE,*LPLOCALESIGNATURE;
725#endif
726#endif
727
728#ifndef NOMETAFILE
729#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
730 typedef struct tagHANDLETABLE {
731 HGDIOBJ objectHandle[1];
732 } HANDLETABLE,*PHANDLETABLE,*LPHANDLETABLE;
733
734 typedef struct tagMETARECORD {
735 DWORD rdSize;
736 WORD rdFunction;
737 WORD rdParm[1];
738 } METARECORD;
739#endif
740#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
741 typedef struct tagMETARECORD UNALIGNED *PMETARECORD;
742#endif
743#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
744 typedef struct tagMETARECORD UNALIGNED *LPMETARECORD;
745
746 typedef struct tagMETAFILEPICT {
747 LONG mm;
748 LONG xExt;
749 LONG yExt;
750 HMETAFILE hMF;
751 } METAFILEPICT,*LPMETAFILEPICT;
752#endif
753
754#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
755#include <pshpack2.h>
756 typedef struct tagMETAHEADER {
757 WORD mtType;
758 WORD mtHeaderSize;
759 WORD mtVersion;
760 DWORD mtSize;
761 WORD mtNoObjects;
762 DWORD mtMaxRecord;
763 WORD mtNoParameters;
764 } METAHEADER;
765 typedef struct tagMETAHEADER UNALIGNED *PMETAHEADER;
766 typedef struct tagMETAHEADER UNALIGNED *LPMETAHEADER;
767
768#include <poppack.h>
769#endif
770
771#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
772 typedef struct tagENHMETARECORD {
773 DWORD iType;
774 DWORD nSize;
775 DWORD dParm[1];
776 } ENHMETARECORD,*PENHMETARECORD,*LPENHMETARECORD;
777
778 typedef struct tagENHMETAHEADER {
779 DWORD iType;
780 DWORD nSize;
781 RECTL rclBounds;
782 RECTL rclFrame;
783 DWORD dSignature;
784 DWORD nVersion;
785 DWORD nBytes;
786 DWORD nRecords;
787 WORD nHandles;
788 WORD sReserved;
789 DWORD nDescription;
790 DWORD offDescription;
791 DWORD nPalEntries;
792 SIZEL szlDevice;
793 SIZEL szlMillimeters;
794 DWORD cbPixelFormat;
795 DWORD offPixelFormat;
796 DWORD bOpenGL;
797 SIZEL szlMicrometers;
798 } ENHMETAHEADER,*PENHMETAHEADER,*LPENHMETAHEADER;
799#endif
800#endif /* NOMETAFILE */
801
802#ifndef NOTEXTMETRIC
803#define TMPF_FIXED_PITCH 0x01
804#define TMPF_VECTOR 0x02
805#define TMPF_DEVICE 0x08
806#define TMPF_TRUETYPE 0x04
807
808#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
809#if defined(UNICODE)
810 typedef WCHAR BCHAR;
811#else
812 typedef BYTE BCHAR;
813#endif
814#endif
815
816#ifndef _TEXTMETRIC_DEFINED
817#define _TEXTMETRIC_DEFINED
818#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
819#include <pshpack4.h>
820
821 typedef struct tagTEXTMETRICA {
822 LONG tmHeight;
823 LONG tmAscent;
824 LONG tmDescent;
825 LONG tmInternalLeading;
826 LONG tmExternalLeading;
827 LONG tmAveCharWidth;
828 LONG tmMaxCharWidth;
829 LONG tmWeight;
830 LONG tmOverhang;
831 LONG tmDigitizedAspectX;
832 LONG tmDigitizedAspectY;
833 BYTE tmFirstChar;
834 BYTE tmLastChar;
835 BYTE tmDefaultChar;
836 BYTE tmBreakChar;
837 BYTE tmItalic;
838 BYTE tmUnderlined;
839 BYTE tmStruckOut;
840 BYTE tmPitchAndFamily;
841 BYTE tmCharSet;
842 } TEXTMETRICA,*PTEXTMETRICA,*NPTEXTMETRICA,*LPTEXTMETRICA;
843
844 typedef struct tagTEXTMETRICW {
845 LONG tmHeight;
846 LONG tmAscent;
847 LONG tmDescent;
848 LONG tmInternalLeading;
849 LONG tmExternalLeading;
850 LONG tmAveCharWidth;
851 LONG tmMaxCharWidth;
852 LONG tmWeight;
853 LONG tmOverhang;
854 LONG tmDigitizedAspectX;
855 LONG tmDigitizedAspectY;
856 WCHAR tmFirstChar;
857 WCHAR tmLastChar;
858 WCHAR tmDefaultChar;
859 WCHAR tmBreakChar;
860 BYTE tmItalic;
861 BYTE tmUnderlined;
862 BYTE tmStruckOut;
863 BYTE tmPitchAndFamily;
864 BYTE tmCharSet;
865 } TEXTMETRICW,*PTEXTMETRICW,*NPTEXTMETRICW,*LPTEXTMETRICW;
866
867 __MINGW_TYPEDEF_AW(TEXTMETRIC)
868 __MINGW_TYPEDEF_AW(PTEXTMETRIC)
869 __MINGW_TYPEDEF_AW(NPTEXTMETRIC)
870 __MINGW_TYPEDEF_AW(LPTEXTMETRIC)
871#include <poppack.h>
872#endif
873#endif
874
875#define NTM_REGULAR __MSABI_LONG(0x00000040)
876#define NTM_BOLD __MSABI_LONG(0x00000020)
877#define NTM_ITALIC __MSABI_LONG(0x00000001)
878
879#define NTM_NONNEGATIVE_AC 0x00010000
880#define NTM_PS_OPENTYPE 0x00020000
881#define NTM_TT_OPENTYPE 0x00040000
882#define NTM_MULTIPLEMASTER 0x00080000
883#define NTM_TYPE1 0x00100000
884#define NTM_DSIG 0x00200000
885
886#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
887#include <pshpack4.h>
888 typedef struct tagNEWTEXTMETRICA {
889 LONG tmHeight;
890 LONG tmAscent;
891 LONG tmDescent;
892 LONG tmInternalLeading;
893 LONG tmExternalLeading;
894 LONG tmAveCharWidth;
895 LONG tmMaxCharWidth;
896 LONG tmWeight;
897 LONG tmOverhang;
898 LONG tmDigitizedAspectX;
899 LONG tmDigitizedAspectY;
900 BYTE tmFirstChar;
901 BYTE tmLastChar;
902 BYTE tmDefaultChar;
903 BYTE tmBreakChar;
904 BYTE tmItalic;
905 BYTE tmUnderlined;
906 BYTE tmStruckOut;
907 BYTE tmPitchAndFamily;
908 BYTE tmCharSet;
909 DWORD ntmFlags;
910 UINT ntmSizeEM;
911 UINT ntmCellHeight;
912 UINT ntmAvgWidth;
913 } NEWTEXTMETRICA,*PNEWTEXTMETRICA,*NPNEWTEXTMETRICA,*LPNEWTEXTMETRICA;
914
915 typedef struct tagNEWTEXTMETRICW {
916 LONG tmHeight;
917 LONG tmAscent;
918 LONG tmDescent;
919 LONG tmInternalLeading;
920 LONG tmExternalLeading;
921 LONG tmAveCharWidth;
922 LONG tmMaxCharWidth;
923 LONG tmWeight;
924 LONG tmOverhang;
925 LONG tmDigitizedAspectX;
926 LONG tmDigitizedAspectY;
927 WCHAR tmFirstChar;
928 WCHAR tmLastChar;
929 WCHAR tmDefaultChar;
930 WCHAR tmBreakChar;
931 BYTE tmItalic;
932 BYTE tmUnderlined;
933 BYTE tmStruckOut;
934 BYTE tmPitchAndFamily;
935 BYTE tmCharSet;
936 DWORD ntmFlags;
937 UINT ntmSizeEM;
938 UINT ntmCellHeight;
939 UINT ntmAvgWidth;
940 } NEWTEXTMETRICW,*PNEWTEXTMETRICW,*NPNEWTEXTMETRICW,*LPNEWTEXTMETRICW;
941
942 __MINGW_TYPEDEF_AW(NEWTEXTMETRIC)
943 __MINGW_TYPEDEF_AW(PNEWTEXTMETRIC)
944 __MINGW_TYPEDEF_AW(NPNEWTEXTMETRIC)
945 __MINGW_TYPEDEF_AW(LPNEWTEXTMETRIC)
946
947#include <poppack.h>
948
949 typedef struct tagNEWTEXTMETRICEXA {
950 NEWTEXTMETRICA ntmTm;
951 FONTSIGNATURE ntmFontSig;
952 } NEWTEXTMETRICEXA;
953
954 typedef struct tagNEWTEXTMETRICEXW {
955 NEWTEXTMETRICW ntmTm;
956 FONTSIGNATURE ntmFontSig;
957 } NEWTEXTMETRICEXW;
958
959 __MINGW_TYPEDEF_AW(NEWTEXTMETRICEX)
960#endif
961#endif
962
963#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
964 typedef struct tagPELARRAY {
965 LONG paXCount;
966 LONG paYCount;
967 LONG paXExt;
968 LONG paYExt;
969 BYTE paRGBs;
970 } PELARRAY,*PPELARRAY,*NPPELARRAY,*LPPELARRAY;
971#endif
972#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
973 typedef struct tagLOGBRUSH {
974 UINT lbStyle;
975 COLORREF lbColor;
976 ULONG_PTR lbHatch;
977 } LOGBRUSH,*PLOGBRUSH,*NPLOGBRUSH,*LPLOGBRUSH;
978
979 typedef struct tagLOGBRUSH32 {
980 UINT lbStyle;
981 COLORREF lbColor;
982 ULONG lbHatch;
983 } LOGBRUSH32,*PLOGBRUSH32,*NPLOGBRUSH32,*LPLOGBRUSH32;
984#endif
985#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
986 typedef LOGBRUSH PATTERN;
987 typedef PATTERN *PPATTERN;
988 typedef PATTERN *NPPATTERN;
989 typedef PATTERN *LPPATTERN;
990#endif
991
992#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
993 typedef struct tagLOGPEN {
994 UINT lopnStyle;
995 POINT lopnWidth;
996 COLORREF lopnColor;
997 } LOGPEN,*PLOGPEN,*NPLOGPEN,*LPLOGPEN;
998#endif
999
1000#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
1001 typedef struct tagEXTLOGPEN {
1002 DWORD elpPenStyle;
1003 DWORD elpWidth;
1004 UINT elpBrushStyle;
1005 COLORREF elpColor;
1006 ULONG_PTR elpHatch;
1007 DWORD elpNumEntries;
1008 DWORD elpStyleEntry[1];
1009 } EXTLOGPEN,*PEXTLOGPEN,*NPEXTLOGPEN,*LPEXTLOGPEN;
1010#endif
1011
1012#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
1013 typedef struct tagEXTLOGPEN32 {
1014 DWORD elpPenStyle;
1015 DWORD elpWidth;
1016 UINT elpBrushStyle;
1017 COLORREF elpColor;
1018 ULONG elpHatch;
1019 DWORD elpNumEntries;
1020 DWORD elpStyleEntry[1];
1021 } EXTLOGPEN32, *PEXTLOGPEN32, *NPEXTLOGPEN32, *LPEXTLOGPEN32;
1022
1023#ifndef _PALETTEENTRY_DEFINED
1024#define _PALETTEENTRY_DEFINED
1025 typedef struct tagPALETTEENTRY {
1026 BYTE peRed;
1027 BYTE peGreen;
1028 BYTE peBlue;
1029 BYTE peFlags;
1030 } PALETTEENTRY,*PPALETTEENTRY,*LPPALETTEENTRY;
1031#endif
1032
1033#ifndef _LOGPALETTE_DEFINED
1034#define _LOGPALETTE_DEFINED
1035 typedef struct tagLOGPALETTE {
1036 WORD palVersion;
1037 WORD palNumEntries;
1038 PALETTEENTRY palPalEntry[1];
1039 } LOGPALETTE,*PLOGPALETTE,*NPLOGPALETTE,*LPLOGPALETTE;
1040#endif
1041
1042#ifndef LF_FACESIZE
1043#define LF_FACESIZE 32
1044#endif
1045
1046 typedef struct tagLOGFONTA {
1047 LONG lfHeight;
1048 LONG lfWidth;
1049 LONG lfEscapement;
1050 LONG lfOrientation;
1051 LONG lfWeight;
1052 BYTE lfItalic;
1053 BYTE lfUnderline;
1054 BYTE lfStrikeOut;
1055 BYTE lfCharSet;
1056 BYTE lfOutPrecision;
1057 BYTE lfClipPrecision;
1058 BYTE lfQuality;
1059 BYTE lfPitchAndFamily;
1060 CHAR lfFaceName[LF_FACESIZE];
1061 } LOGFONTA,*PLOGFONTA,*NPLOGFONTA,*LPLOGFONTA;
1062
1063 typedef struct tagLOGFONTW {
1064 LONG lfHeight;
1065 LONG lfWidth;
1066 LONG lfEscapement;
1067 LONG lfOrientation;
1068 LONG lfWeight;
1069 BYTE lfItalic;
1070 BYTE lfUnderline;
1071 BYTE lfStrikeOut;
1072 BYTE lfCharSet;
1073 BYTE lfOutPrecision;
1074 BYTE lfClipPrecision;
1075 BYTE lfQuality;
1076 BYTE lfPitchAndFamily;
1077 WCHAR lfFaceName[LF_FACESIZE];
1078 } LOGFONTW,*PLOGFONTW,*NPLOGFONTW,*LPLOGFONTW;
1079
1080 __MINGW_TYPEDEF_AW(LOGFONT)
1081 __MINGW_TYPEDEF_AW(PLOGFONT)
1082 __MINGW_TYPEDEF_AW(NPLOGFONT)
1083 __MINGW_TYPEDEF_AW(LPLOGFONT)
1084#endif /* WINAPI_PARTITION_APP */
1085
1086#define LF_FULLFACESIZE 64
1087
1088#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
1089 typedef struct tagENUMLOGFONTA {
1090 LOGFONTA elfLogFont;
1091 BYTE elfFullName[LF_FULLFACESIZE];
1092 BYTE elfStyle[LF_FACESIZE];
1093 } ENUMLOGFONTA,*LPENUMLOGFONTA;
1094
1095 typedef struct tagENUMLOGFONTW {
1096 LOGFONTW elfLogFont;
1097 WCHAR elfFullName[LF_FULLFACESIZE];
1098 WCHAR elfStyle[LF_FACESIZE];
1099 } ENUMLOGFONTW,*LPENUMLOGFONTW;
1100
1101 __MINGW_TYPEDEF_AW(ENUMLOGFONT)
1102 __MINGW_TYPEDEF_AW(LPENUMLOGFONT)
1103
1104 typedef struct tagENUMLOGFONTEXA {
1105 LOGFONTA elfLogFont;
1106 BYTE elfFullName[LF_FULLFACESIZE];
1107 BYTE elfStyle[LF_FACESIZE];
1108 BYTE elfScript[LF_FACESIZE];
1109 } ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
1110
1111 typedef struct tagENUMLOGFONTEXW {
1112 LOGFONTW elfLogFont;
1113 WCHAR elfFullName[LF_FULLFACESIZE];
1114 WCHAR elfStyle[LF_FACESIZE];
1115 WCHAR elfScript[LF_FACESIZE];
1116 } ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
1117
1118 __MINGW_TYPEDEF_AW(ENUMLOGFONTEX)
1119 __MINGW_TYPEDEF_AW(LPENUMLOGFONTEX)
1120#endif /* WINAPI_PARTITION_DESKTOP */
1121
1122#define OUT_DEFAULT_PRECIS 0
1123#define OUT_STRING_PRECIS 1
1124#define OUT_CHARACTER_PRECIS 2
1125#define OUT_STROKE_PRECIS 3
1126#define OUT_TT_PRECIS 4
1127#define OUT_DEVICE_PRECIS 5
1128#define OUT_RASTER_PRECIS 6
1129#define OUT_TT_ONLY_PRECIS 7
1130#define OUT_OUTLINE_PRECIS 8
1131#define OUT_SCREEN_OUTLINE_PRECIS 9
1132#define OUT_PS_ONLY_PRECIS 10
1133
1134#define CLIP_DEFAULT_PRECIS 0
1135#define CLIP_CHARACTER_PRECIS 1
1136#define CLIP_STROKE_PRECIS 2
1137#define CLIP_MASK 0xf
1138#define CLIP_LH_ANGLES (1<<4)
1139#define CLIP_TT_ALWAYS (2<<4)
1140#if _WIN32_WINNT >= 0x0600
1141#define CLIP_DFA_DISABLE (4<<4)
1142#endif
1143#define CLIP_EMBEDDED (8<<4)
1144
1145#define DEFAULT_QUALITY 0
1146#define DRAFT_QUALITY 1
1147#define PROOF_QUALITY 2
1148#define NONANTIALIASED_QUALITY 3
1149#define ANTIALIASED_QUALITY 4
1150
1151#define CLEARTYPE_QUALITY 5
1152#define CLEARTYPE_NATURAL_QUALITY 6
1153
1154#define DEFAULT_PITCH 0
1155#define FIXED_PITCH 1
1156#define VARIABLE_PITCH 2
1157#define MONO_FONT 8
1158
1159#define ANSI_CHARSET 0
1160#define DEFAULT_CHARSET 1
1161#define SYMBOL_CHARSET 2
1162#define SHIFTJIS_CHARSET 128
1163#define HANGEUL_CHARSET 129
1164#define HANGUL_CHARSET 129
1165#define GB2312_CHARSET 134
1166#define CHINESEBIG5_CHARSET 136
1167#define OEM_CHARSET 255
1168#define JOHAB_CHARSET 130
1169#define HEBREW_CHARSET 177
1170#define ARABIC_CHARSET 178
1171#define GREEK_CHARSET 161
1172#define TURKISH_CHARSET 162
1173#define VIETNAMESE_CHARSET 163
1174#define THAI_CHARSET 222
1175#define EASTEUROPE_CHARSET 238
1176#define RUSSIAN_CHARSET 204
1177
1178#define MAC_CHARSET 77
1179#define BALTIC_CHARSET 186
1180
1181#define FS_LATIN1 __MSABI_LONG(0x00000001)
1182#define FS_LATIN2 __MSABI_LONG(0x00000002)
1183#define FS_CYRILLIC __MSABI_LONG(0x00000004)
1184#define FS_GREEK __MSABI_LONG(0x00000008)
1185#define FS_TURKISH __MSABI_LONG(0x00000010)
1186#define FS_HEBREW __MSABI_LONG(0x00000020)
1187#define FS_ARABIC __MSABI_LONG(0x00000040)
1188#define FS_BALTIC __MSABI_LONG(0x00000080)
1189#define FS_VIETNAMESE __MSABI_LONG(0x00000100)
1190#define FS_THAI __MSABI_LONG(0x00010000)
1191#define FS_JISJAPAN __MSABI_LONG(0x00020000)
1192#define FS_CHINESESIMP __MSABI_LONG(0x00040000)
1193#define FS_WANSUNG __MSABI_LONG(0x00080000)
1194#define FS_CHINESETRAD __MSABI_LONG(0x00100000)
1195#define FS_JOHAB __MSABI_LONG(0x00200000)
1196#define FS_SYMBOL __MSABI_LONG(0x80000000)
1197
1198#define FF_DONTCARE (0<<4)
1199#define FF_ROMAN (1<<4)
1200
1201#define FF_SWISS (2<<4)
1202
1203#define FF_MODERN (3<<4)
1204
1205#define FF_SCRIPT (4<<4)
1206#define FF_DECORATIVE (5<<4)
1207
1208#define FW_DONTCARE 0
1209#define FW_THIN 100
1210#define FW_EXTRALIGHT 200
1211#define FW_LIGHT 300
1212#define FW_NORMAL 400
1213#define FW_MEDIUM 500
1214#define FW_SEMIBOLD 600
1215#define FW_BOLD 700
1216#define FW_EXTRABOLD 800
1217#define FW_HEAVY 900
1218
1219#define FW_ULTRALIGHT FW_EXTRALIGHT
1220#define FW_REGULAR FW_NORMAL
1221#define FW_DEMIBOLD FW_SEMIBOLD
1222#define FW_ULTRABOLD FW_EXTRABOLD
1223#define FW_BLACK FW_HEAVY
1224
1225#define PANOSE_COUNT 10
1226#define PAN_FAMILYTYPE_INDEX 0
1227#define PAN_SERIFSTYLE_INDEX 1
1228#define PAN_WEIGHT_INDEX 2
1229#define PAN_PROPORTION_INDEX 3
1230#define PAN_CONTRAST_INDEX 4
1231#define PAN_STROKEVARIATION_INDEX 5
1232#define PAN_ARMSTYLE_INDEX 6
1233#define PAN_LETTERFORM_INDEX 7
1234#define PAN_MIDLINE_INDEX 8
1235#define PAN_XHEIGHT_INDEX 9
1236
1237#define PAN_CULTURE_LATIN 0
1238
1239#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
1240 typedef struct tagPANOSE {
1241 BYTE bFamilyType;
1242 BYTE bSerifStyle;
1243 BYTE bWeight;
1244 BYTE bProportion;
1245 BYTE bContrast;
1246 BYTE bStrokeVariation;
1247 BYTE bArmStyle;
1248 BYTE bLetterform;
1249 BYTE bMidline;
1250 BYTE bXHeight;
1251 } PANOSE,*LPPANOSE;
1252
1253#define PAN_ANY 0
1254#define PAN_NO_FIT 1
1255
1256#define PAN_FAMILY_TEXT_DISPLAY 2
1257#define PAN_FAMILY_SCRIPT 3
1258#define PAN_FAMILY_DECORATIVE 4
1259#define PAN_FAMILY_PICTORIAL 5
1260
1261#define PAN_SERIF_COVE 2
1262#define PAN_SERIF_OBTUSE_COVE 3
1263#define PAN_SERIF_SQUARE_COVE 4
1264#define PAN_SERIF_OBTUSE_SQUARE_COVE 5
1265#define PAN_SERIF_SQUARE 6
1266#define PAN_SERIF_THIN 7
1267#define PAN_SERIF_BONE 8
1268#define PAN_SERIF_EXAGGERATED 9
1269#define PAN_SERIF_TRIANGLE 10
1270#define PAN_SERIF_NORMAL_SANS 11
1271#define PAN_SERIF_OBTUSE_SANS 12
1272#define PAN_SERIF_PERP_SANS 13
1273#define PAN_SERIF_FLARED 14
1274#define PAN_SERIF_ROUNDED 15
1275
1276#define PAN_WEIGHT_VERY_LIGHT 2
1277#define PAN_WEIGHT_LIGHT 3
1278#define PAN_WEIGHT_THIN 4
1279#define PAN_WEIGHT_BOOK 5
1280#define PAN_WEIGHT_MEDIUM 6
1281#define PAN_WEIGHT_DEMI 7
1282#define PAN_WEIGHT_BOLD 8
1283#define PAN_WEIGHT_HEAVY 9
1284#define PAN_WEIGHT_BLACK 10
1285#define PAN_WEIGHT_NORD 11
1286
1287#define PAN_PROP_OLD_STYLE 2
1288#define PAN_PROP_MODERN 3
1289#define PAN_PROP_EVEN_WIDTH 4
1290#define PAN_PROP_EXPANDED 5
1291#define PAN_PROP_CONDENSED 6
1292#define PAN_PROP_VERY_EXPANDED 7
1293#define PAN_PROP_VERY_CONDENSED 8
1294#define PAN_PROP_MONOSPACED 9
1295
1296#define PAN_CONTRAST_NONE 2
1297#define PAN_CONTRAST_VERY_LOW 3
1298#define PAN_CONTRAST_LOW 4
1299#define PAN_CONTRAST_MEDIUM_LOW 5
1300#define PAN_CONTRAST_MEDIUM 6
1301#define PAN_CONTRAST_MEDIUM_HIGH 7
1302#define PAN_CONTRAST_HIGH 8
1303#define PAN_CONTRAST_VERY_HIGH 9
1304
1305#define PAN_STROKE_GRADUAL_DIAG 2
1306#define PAN_STROKE_GRADUAL_TRAN 3
1307#define PAN_STROKE_GRADUAL_VERT 4
1308#define PAN_STROKE_GRADUAL_HORZ 5
1309#define PAN_STROKE_RAPID_VERT 6
1310#define PAN_STROKE_RAPID_HORZ 7
1311#define PAN_STROKE_INSTANT_VERT 8
1312
1313#define PAN_STRAIGHT_ARMS_HORZ 2
1314#define PAN_STRAIGHT_ARMS_WEDGE 3
1315#define PAN_STRAIGHT_ARMS_VERT 4
1316#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5
1317#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6
1318#define PAN_BENT_ARMS_HORZ 7
1319#define PAN_BENT_ARMS_WEDGE 8
1320#define PAN_BENT_ARMS_VERT 9
1321#define PAN_BENT_ARMS_SINGLE_SERIF 10
1322#define PAN_BENT_ARMS_DOUBLE_SERIF 11
1323
1324#define PAN_LETT_NORMAL_CONTACT 2
1325#define PAN_LETT_NORMAL_WEIGHTED 3
1326#define PAN_LETT_NORMAL_BOXED 4
1327#define PAN_LETT_NORMAL_FLATTENED 5
1328#define PAN_LETT_NORMAL_ROUNDED 6
1329#define PAN_LETT_NORMAL_OFF_CENTER 7
1330#define PAN_LETT_NORMAL_SQUARE 8
1331#define PAN_LETT_OBLIQUE_CONTACT 9
1332#define PAN_LETT_OBLIQUE_WEIGHTED 10
1333#define PAN_LETT_OBLIQUE_BOXED 11
1334#define PAN_LETT_OBLIQUE_FLATTENED 12
1335#define PAN_LETT_OBLIQUE_ROUNDED 13
1336#define PAN_LETT_OBLIQUE_OFF_CENTER 14
1337#define PAN_LETT_OBLIQUE_SQUARE 15
1338
1339#define PAN_MIDLINE_STANDARD_TRIMMED 2
1340#define PAN_MIDLINE_STANDARD_POINTED 3
1341#define PAN_MIDLINE_STANDARD_SERIFED 4
1342#define PAN_MIDLINE_HIGH_TRIMMED 5
1343#define PAN_MIDLINE_HIGH_POINTED 6
1344#define PAN_MIDLINE_HIGH_SERIFED 7
1345#define PAN_MIDLINE_CONSTANT_TRIMMED 8
1346#define PAN_MIDLINE_CONSTANT_POINTED 9
1347#define PAN_MIDLINE_CONSTANT_SERIFED 10
1348#define PAN_MIDLINE_LOW_TRIMMED 11
1349#define PAN_MIDLINE_LOW_POINTED 12
1350#define PAN_MIDLINE_LOW_SERIFED 13
1351
1352#define PAN_XHEIGHT_CONSTANT_SMALL 2
1353#define PAN_XHEIGHT_CONSTANT_STD 3
1354#define PAN_XHEIGHT_CONSTANT_LARGE 4
1355#define PAN_XHEIGHT_DUCKING_SMALL 5
1356#define PAN_XHEIGHT_DUCKING_STD 6
1357#define PAN_XHEIGHT_DUCKING_LARGE 7
1358
1359#define ELF_VENDOR_SIZE 4
1360
1361 typedef struct tagEXTLOGFONTA {
1362 LOGFONTA elfLogFont;
1363 BYTE elfFullName[LF_FULLFACESIZE];
1364 BYTE elfStyle[LF_FACESIZE];
1365 DWORD elfVersion;
1366 DWORD elfStyleSize;
1367 DWORD elfMatch;
1368 DWORD elfReserved;
1369 BYTE elfVendorId[ELF_VENDOR_SIZE];
1370 DWORD elfCulture;
1371 PANOSE elfPanose;
1372 } EXTLOGFONTA,*PEXTLOGFONTA,*NPEXTLOGFONTA,*LPEXTLOGFONTA;
1373
1374 typedef struct tagEXTLOGFONTW {
1375 LOGFONTW elfLogFont;
1376 WCHAR elfFullName[LF_FULLFACESIZE];
1377 WCHAR elfStyle[LF_FACESIZE];
1378 DWORD elfVersion;
1379 DWORD elfStyleSize;
1380 DWORD elfMatch;
1381 DWORD elfReserved;
1382 BYTE elfVendorId[ELF_VENDOR_SIZE];
1383 DWORD elfCulture;
1384 PANOSE elfPanose;
1385 } EXTLOGFONTW,*PEXTLOGFONTW,*NPEXTLOGFONTW,*LPEXTLOGFONTW;
1386
1387 __MINGW_TYPEDEF_AW(EXTLOGFONT)
1388 __MINGW_TYPEDEF_AW(PEXTLOGFONT)
1389 __MINGW_TYPEDEF_AW(NPEXTLOGFONT)
1390 __MINGW_TYPEDEF_AW(LPEXTLOGFONT)
1391#endif /* WINAPI_PARTITION_APP */
1392
1393#define ELF_VERSION 0
1394#define ELF_CULTURE_LATIN 0
1395
1396#define RASTER_FONTTYPE 0x0001
1397#define DEVICE_FONTTYPE 0x002
1398#define TRUETYPE_FONTTYPE 0x004
1399
1400#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
1401#define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b))
1402#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
1403
1404#define PC_RESERVED 0x01
1405#define PC_EXPLICIT 0x02
1406#define PC_NOCOLLAPSE 0x04
1407
1408#define GetRValue(rgb) (LOBYTE(rgb))
1409#define GetGValue(rgb) (LOBYTE(((WORD)(rgb)) >> 8))
1410#define GetBValue(rgb) (LOBYTE((rgb)>>16))
1411
1412#define TRANSPARENT 1
1413#define OPAQUE 2
1414#define BKMODE_LAST 2
1415
1416#define GM_COMPATIBLE 1
1417#define GM_ADVANCED 2
1418#define GM_LAST 2
1419
1420#define PT_CLOSEFIGURE 0x01
1421#define PT_LINETO 0x02
1422#define PT_BEZIERTO 0x04
1423#define PT_MOVETO 0x06
1424
1425#define MM_TEXT 1
1426#define MM_LOMETRIC 2
1427#define MM_HIMETRIC 3
1428#define MM_LOENGLISH 4
1429#define MM_HIENGLISH 5
1430#define MM_TWIPS 6
1431#define MM_ISOTROPIC 7
1432#define MM_ANISOTROPIC 8
1433
1434#define MM_MIN MM_TEXT
1435#define MM_MAX MM_ANISOTROPIC
1436#define MM_MAX_FIXEDSCALE MM_TWIPS
1437
1438#define ABSOLUTE 1
1439#define RELATIVE 2
1440
1441#define WHITE_BRUSH 0
1442#define LTGRAY_BRUSH 1
1443#define GRAY_BRUSH 2
1444#define DKGRAY_BRUSH 3
1445#define BLACK_BRUSH 4
1446#define NULL_BRUSH 5
1447#define HOLLOW_BRUSH NULL_BRUSH
1448#define WHITE_PEN 6
1449#define BLACK_PEN 7
1450#define NULL_PEN 8
1451#define OEM_FIXED_FONT 10
1452#define ANSI_FIXED_FONT 11
1453#define ANSI_VAR_FONT 12
1454#define SYSTEM_FONT 13
1455#define DEVICE_DEFAULT_FONT 14
1456#define DEFAULT_PALETTE 15
1457#define SYSTEM_FIXED_FONT 16
1458#define DEFAULT_GUI_FONT 17
1459#define DC_BRUSH 18
1460#define DC_PEN 19
1461
1462#define STOCK_LAST 19
1463
1464#define CLR_INVALID 0xFFFFFFFF
1465
1466#define BS_SOLID 0
1467#define BS_NULL 1
1468#define BS_HOLLOW BS_NULL
1469#define BS_HATCHED 2
1470#define BS_PATTERN 3
1471#define BS_INDEXED 4
1472#define BS_DIBPATTERN 5
1473#define BS_DIBPATTERNPT 6
1474#define BS_PATTERN8X8 7
1475#define BS_DIBPATTERN8X8 8
1476#define BS_MONOPATTERN 9
1477
1478#define HS_HORIZONTAL 0
1479#define HS_VERTICAL 1
1480#define HS_FDIAGONAL 2
1481#define HS_BDIAGONAL 3
1482#define HS_CROSS 4
1483#define HS_DIAGCROSS 5
1484#define HS_API_MAX 12
1485
1486#define PS_SOLID 0
1487#define PS_DASH 1
1488#define PS_DOT 2
1489#define PS_DASHDOT 3
1490#define PS_DASHDOTDOT 4
1491#define PS_NULL 5
1492#define PS_INSIDEFRAME 6
1493#define PS_USERSTYLE 7
1494#define PS_ALTERNATE 8
1495#define PS_STYLE_MASK 0x0000000F
1496
1497#define PS_ENDCAP_ROUND 0x00000000
1498#define PS_ENDCAP_SQUARE 0x00000100
1499#define PS_ENDCAP_FLAT 0x00000200
1500#define PS_ENDCAP_MASK 0x00000F00
1501
1502#define PS_JOIN_ROUND 0x00000000
1503#define PS_JOIN_BEVEL 0x00001000
1504#define PS_JOIN_MITER 0x00002000
1505#define PS_JOIN_MASK 0x0000F000
1506
1507#define PS_COSMETIC 0x00000000
1508#define PS_GEOMETRIC 0x00010000
1509#define PS_TYPE_MASK 0x000F0000
1510
1511#define AD_COUNTERCLOCKWISE 1
1512#define AD_CLOCKWISE 2
1513
1514#define DRIVERVERSION 0
1515#define TECHNOLOGY 2
1516#define HORZSIZE 4
1517#define VERTSIZE 6
1518#define HORZRES 8
1519#define VERTRES 10
1520#define BITSPIXEL 12
1521#define PLANES 14
1522#define NUMBRUSHES 16
1523#define NUMPENS 18
1524#define NUMMARKERS 20
1525#define NUMFONTS 22
1526#define NUMCOLORS 24
1527#define PDEVICESIZE 26
1528#define CURVECAPS 28
1529#define LINECAPS 30
1530#define POLYGONALCAPS 32
1531#define TEXTCAPS 34
1532#define CLIPCAPS 36
1533#define RASTERCAPS 38
1534#define ASPECTX 40
1535#define ASPECTY 42
1536#define ASPECTXY 44
1537
1538#define LOGPIXELSX 88
1539#define LOGPIXELSY 90
1540
1541#define SIZEPALETTE 104
1542#define NUMRESERVED 106
1543#define COLORRES 108
1544
1545#define PHYSICALWIDTH 110
1546#define PHYSICALHEIGHT 111
1547#define PHYSICALOFFSETX 112
1548#define PHYSICALOFFSETY 113
1549#define SCALINGFACTORX 114
1550#define SCALINGFACTORY 115
1551
1552#define VREFRESH 116
1553#define DESKTOPVERTRES 117
1554#define DESKTOPHORZRES 118
1555#define BLTALIGNMENT 119
1556
1557#define SHADEBLENDCAPS 120
1558#define COLORMGMTCAPS 121
1559
1560#ifndef NOGDICAPMASKS
1561#define DT_PLOTTER 0
1562#define DT_RASDISPLAY 1
1563#define DT_RASPRINTER 2
1564#define DT_RASCAMERA 3
1565#define DT_CHARSTREAM 4
1566#define DT_METAFILE 5
1567#define DT_DISPFILE 6
1568
1569#define CC_NONE 0
1570#define CC_CIRCLES 1
1571#define CC_PIE 2
1572#define CC_CHORD 4
1573#define CC_ELLIPSES 8
1574#define CC_WIDE 16
1575#define CC_STYLED 32
1576#define CC_WIDESTYLED 64
1577#define CC_INTERIORS 128
1578#define CC_ROUNDRECT 256
1579
1580#define LC_NONE 0
1581#define LC_POLYLINE 2
1582#define LC_MARKER 4
1583#define LC_POLYMARKER 8
1584#define LC_WIDE 16
1585#define LC_STYLED 32
1586#define LC_WIDESTYLED 64
1587#define LC_INTERIORS 128
1588
1589#define PC_NONE 0
1590#define PC_POLYGON 1
1591#define PC_RECTANGLE 2
1592#define PC_WINDPOLYGON 4
1593#define PC_TRAPEZOID 4
1594#define PC_SCANLINE 8
1595#define PC_WIDE 16
1596#define PC_STYLED 32
1597#define PC_WIDESTYLED 64
1598#define PC_INTERIORS 128
1599#define PC_POLYPOLYGON 256
1600#define PC_PATHS 512
1601
1602#define CP_NONE 0
1603#define CP_RECTANGLE 1
1604#define CP_REGION 2
1605
1606#define TC_OP_CHARACTER 0x00000001
1607#define TC_OP_STROKE 0x00000002
1608#define TC_CP_STROKE 0x00000004
1609#define TC_CR_90 0x00000008
1610#define TC_CR_ANY 0x00000010
1611#define TC_SF_X_YINDEP 0x00000020
1612#define TC_SA_DOUBLE 0x00000040
1613#define TC_SA_INTEGER 0x00000080
1614#define TC_SA_CONTIN 0x00000100
1615#define TC_EA_DOUBLE 0x00000200
1616#define TC_IA_ABLE 0x00000400
1617#define TC_UA_ABLE 0x00000800
1618#define TC_SO_ABLE 0x00001000
1619#define TC_RA_ABLE 0x00002000
1620#define TC_VA_ABLE 0x00004000
1621#define TC_RESERVED 0x00008000
1622#define TC_SCROLLBLT 0x00010000
1623#endif
1624
1625#define RC_NONE
1626#define RC_BITBLT 1
1627#define RC_BANDING 2
1628#define RC_SCALING 4
1629#define RC_BITMAP64 8
1630#define RC_GDI20_OUTPUT 0x0010
1631#define RC_GDI20_STATE 0x0020
1632#define RC_SAVEBITMAP 0x0040
1633#define RC_DI_BITMAP 0x0080
1634#define RC_PALETTE 0x0100
1635#define RC_DIBTODEV 0x0200
1636#define RC_BIGFONT 0x0400
1637#define RC_STRETCHBLT 0x0800
1638#define RC_FLOODFILL 0x1000
1639#define RC_STRETCHDIB 0x2000
1640#define RC_OP_DX_OUTPUT 0x4000
1641#define RC_DEVBITS 0x8000
1642
1643#define SB_NONE 0x00000000
1644#define SB_CONST_ALPHA 0x00000001
1645#define SB_PIXEL_ALPHA 0x00000002
1646#define SB_PREMULT_ALPHA 0x00000004
1647
1648#define SB_GRAD_RECT 0x00000010
1649#define SB_GRAD_TRI 0x00000020
1650
1651#define CM_NONE 0x00000000
1652#define CM_DEVICE_ICM 0x00000001
1653#define CM_GAMMA_RAMP 0x00000002
1654#define CM_CMYK_COLOR 0x00000004
1655
1656#define DIB_RGB_COLORS 0
1657#define DIB_PAL_COLORS 1
1658
1659#define SYSPAL_ERROR 0
1660#define SYSPAL_STATIC 1
1661#define SYSPAL_NOSTATIC 2
1662#define SYSPAL_NOSTATIC256 3
1663
1664#define CBM_INIT __MSABI_LONG(0x04)
1665
1666#define FLOODFILLBORDER 0
1667#define FLOODFILLSURFACE 1
1668
1669#define CCHDEVICENAME 32
1670
1671#define CCHFORMNAME 32
1672
1673#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
1674 typedef struct _devicemodeA {
1675 BYTE dmDeviceName[CCHDEVICENAME];
1676 WORD dmSpecVersion;
1677 WORD dmDriverVersion;
1678 WORD dmSize;
1679 WORD dmDriverExtra;
1680 DWORD dmFields;
1681 __C89_NAMELESS union {
1682 __C89_NAMELESS struct {
1683 short dmOrientation;
1684 short dmPaperSize;
1685 short dmPaperLength;
1686 short dmPaperWidth;
1687 short dmScale;
1688 short dmCopies;
1689 short dmDefaultSource;
1690 short dmPrintQuality;
1691 };
1692 struct {
1693 POINTL dmPosition;
1694 DWORD dmDisplayOrientation;
1695 DWORD dmDisplayFixedOutput;
1696 };
1697 };
1698 short dmColor;
1699 short dmDuplex;
1700 short dmYResolution;
1701 short dmTTOption;
1702 short dmCollate;
1703 BYTE dmFormName[CCHFORMNAME];
1704 WORD dmLogPixels;
1705 DWORD dmBitsPerPel;
1706 DWORD dmPelsWidth;
1707 DWORD dmPelsHeight;
1708 __C89_NAMELESS union {
1709 DWORD dmDisplayFlags;
1710 DWORD dmNup;
1711 };
1712 DWORD dmDisplayFrequency;
1713 DWORD dmICMMethod;
1714 DWORD dmICMIntent;
1715 DWORD dmMediaType;
1716 DWORD dmDitherType;
1717 DWORD dmReserved1;
1718 DWORD dmReserved2;
1719 DWORD dmPanningWidth;
1720 DWORD dmPanningHeight;
1721 } DEVMODEA,*PDEVMODEA,*NPDEVMODEA,*LPDEVMODEA;
1722
1723 typedef struct _devicemodeW {
1724 WCHAR dmDeviceName[CCHDEVICENAME];
1725 WORD dmSpecVersion;
1726 WORD dmDriverVersion;
1727 WORD dmSize;
1728 WORD dmDriverExtra;
1729 DWORD dmFields;
1730 __C89_NAMELESS union {
1731 __C89_NAMELESS struct {
1732 short dmOrientation;
1733 short dmPaperSize;
1734 short dmPaperLength;
1735 short dmPaperWidth;
1736 short dmScale;
1737 short dmCopies;
1738 short dmDefaultSource;
1739 short dmPrintQuality;
1740 };
1741 __C89_NAMELESS struct {
1742 POINTL dmPosition;
1743 DWORD dmDisplayOrientation;
1744 DWORD dmDisplayFixedOutput;
1745 };
1746 };
1747 short dmColor;
1748 short dmDuplex;
1749 short dmYResolution;
1750 short dmTTOption;
1751 short dmCollate;
1752 WCHAR dmFormName[CCHFORMNAME];
1753 WORD dmLogPixels;
1754 DWORD dmBitsPerPel;
1755 DWORD dmPelsWidth;
1756 DWORD dmPelsHeight;
1757 __C89_NAMELESS union {
1758 DWORD dmDisplayFlags;
1759 DWORD dmNup;
1760 };
1761 DWORD dmDisplayFrequency;
1762 DWORD dmICMMethod;
1763 DWORD dmICMIntent;
1764 DWORD dmMediaType;
1765 DWORD dmDitherType;
1766 DWORD dmReserved1;
1767 DWORD dmReserved2;
1768 DWORD dmPanningWidth;
1769 DWORD dmPanningHeight;
1770 } DEVMODEW,*PDEVMODEW,*NPDEVMODEW,*LPDEVMODEW;
1771
1772 __MINGW_TYPEDEF_AW(DEVMODE)
1773 __MINGW_TYPEDEF_AW(PDEVMODE)
1774 __MINGW_TYPEDEF_AW(NPDEVMODE)
1775 __MINGW_TYPEDEF_AW(LPDEVMODE)
1776#endif
1777
1778#define DM_SPECVERSION 0x0401
1779
1780#define DM_ORIENTATION __MSABI_LONG(0x00000001)
1781#define DM_PAPERSIZE __MSABI_LONG(0x00000002)
1782#define DM_PAPERLENGTH __MSABI_LONG(0x00000004)
1783#define DM_PAPERWIDTH __MSABI_LONG(0x00000008)
1784#define DM_SCALE __MSABI_LONG(0x00000010)
1785#define DM_POSITION __MSABI_LONG(0x00000020)
1786#define DM_NUP __MSABI_LONG(0x00000040)
1787#define DM_DISPLAYORIENTATION __MSABI_LONG(0x00000080)
1788#define DM_COPIES __MSABI_LONG(0x00000100)
1789#define DM_DEFAULTSOURCE __MSABI_LONG(0x00000200)
1790#define DM_PRINTQUALITY __MSABI_LONG(0x00000400)
1791#define DM_COLOR __MSABI_LONG(0x00000800)
1792#define DM_DUPLEX __MSABI_LONG(0x00001000)
1793#define DM_YRESOLUTION __MSABI_LONG(0x00002000)
1794#define DM_TTOPTION __MSABI_LONG(0x00004000)
1795#define DM_COLLATE __MSABI_LONG(0x00008000)
1796#define DM_FORMNAME __MSABI_LONG(0x00010000)
1797#define DM_LOGPIXELS __MSABI_LONG(0x00020000)
1798#define DM_BITSPERPEL __MSABI_LONG(0x00040000)
1799#define DM_PELSWIDTH __MSABI_LONG(0x00080000)
1800#define DM_PELSHEIGHT __MSABI_LONG(0x00100000)
1801#define DM_DISPLAYFLAGS __MSABI_LONG(0x00200000)
1802#define DM_DISPLAYFREQUENCY __MSABI_LONG(0x00400000)
1803#define DM_ICMMETHOD __MSABI_LONG(0x00800000)
1804#define DM_ICMINTENT __MSABI_LONG(0x01000000)
1805#define DM_MEDIATYPE __MSABI_LONG(0x02000000)
1806#define DM_DITHERTYPE __MSABI_LONG(0x04000000)
1807#define DM_PANNINGWIDTH __MSABI_LONG(0x08000000)
1808#define DM_PANNINGHEIGHT __MSABI_LONG(0x10000000)
1809#define DM_DISPLAYFIXEDOUTPUT __MSABI_LONG(0x20000000)
1810
1811#define DMORIENT_PORTRAIT 1
1812#define DMORIENT_LANDSCAPE 2
1813
1814#define DMPAPER_FIRST DMPAPER_LETTER
1815#define DMPAPER_LETTER 1
1816#define DMPAPER_LETTERSMALL 2
1817#define DMPAPER_TABLOID 3
1818#define DMPAPER_LEDGER 4
1819#define DMPAPER_LEGAL 5
1820#define DMPAPER_STATEMENT 6
1821#define DMPAPER_EXECUTIVE 7
1822#define DMPAPER_A3 8
1823#define DMPAPER_A4 9
1824#define DMPAPER_A4SMALL 10
1825#define DMPAPER_A5 11
1826#define DMPAPER_B4 12
1827#define DMPAPER_B5 13
1828#define DMPAPER_FOLIO 14
1829#define DMPAPER_QUARTO 15
1830#define DMPAPER_10X14 16
1831#define DMPAPER_11X17 17
1832#define DMPAPER_NOTE 18
1833#define DMPAPER_ENV_9 19
1834#define DMPAPER_ENV_10 20
1835#define DMPAPER_ENV_11 21
1836#define DMPAPER_ENV_12 22
1837#define DMPAPER_ENV_14 23
1838#define DMPAPER_CSHEET 24
1839#define DMPAPER_DSHEET 25
1840#define DMPAPER_ESHEET 26
1841#define DMPAPER_ENV_DL 27
1842#define DMPAPER_ENV_C5 28
1843#define DMPAPER_ENV_C3 29
1844#define DMPAPER_ENV_C4 30
1845#define DMPAPER_ENV_C6 31
1846#define DMPAPER_ENV_C65 32
1847#define DMPAPER_ENV_B4 33
1848#define DMPAPER_ENV_B5 34
1849#define DMPAPER_ENV_B6 35
1850#define DMPAPER_ENV_ITALY 36
1851#define DMPAPER_ENV_MONARCH 37
1852#define DMPAPER_ENV_PERSONAL 38
1853#define DMPAPER_FANFOLD_US 39
1854#define DMPAPER_FANFOLD_STD_GERMAN 40
1855#define DMPAPER_FANFOLD_LGL_GERMAN 41
1856#define DMPAPER_ISO_B4 42
1857#define DMPAPER_JAPANESE_POSTCARD 43
1858#define DMPAPER_9X11 44
1859#define DMPAPER_10X11 45
1860#define DMPAPER_15X11 46
1861#define DMPAPER_ENV_INVITE 47
1862#define DMPAPER_RESERVED_48 48
1863#define DMPAPER_RESERVED_49 49
1864#define DMPAPER_LETTER_EXTRA 50
1865#define DMPAPER_LEGAL_EXTRA 51
1866#define DMPAPER_TABLOID_EXTRA 52
1867#define DMPAPER_A4_EXTRA 53
1868#define DMPAPER_LETTER_TRANSVERSE 54
1869#define DMPAPER_A4_TRANSVERSE 55
1870#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56
1871#define DMPAPER_A_PLUS 57
1872#define DMPAPER_B_PLUS 58
1873#define DMPAPER_LETTER_PLUS 59
1874#define DMPAPER_A4_PLUS 60
1875#define DMPAPER_A5_TRANSVERSE 61
1876#define DMPAPER_B5_TRANSVERSE 62
1877#define DMPAPER_A3_EXTRA 63
1878#define DMPAPER_A5_EXTRA 64
1879#define DMPAPER_B5_EXTRA 65
1880#define DMPAPER_A2 66
1881#define DMPAPER_A3_TRANSVERSE 67
1882#define DMPAPER_A3_EXTRA_TRANSVERSE 68
1883#define DMPAPER_DBL_JAPANESE_POSTCARD 69
1884#define DMPAPER_A6 70
1885#define DMPAPER_JENV_KAKU2 71
1886#define DMPAPER_JENV_KAKU3 72
1887#define DMPAPER_JENV_CHOU3 73
1888#define DMPAPER_JENV_CHOU4 74
1889#define DMPAPER_LETTER_ROTATED 75
1890#define DMPAPER_A3_ROTATED 76
1891#define DMPAPER_A4_ROTATED 77
1892#define DMPAPER_A5_ROTATED 78
1893#define DMPAPER_B4_JIS_ROTATED 79
1894#define DMPAPER_B5_JIS_ROTATED 80
1895#define DMPAPER_JAPANESE_POSTCARD_ROTATED 81
1896#define DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED 82
1897#define DMPAPER_A6_ROTATED 83
1898#define DMPAPER_JENV_KAKU2_ROTATED 84
1899#define DMPAPER_JENV_KAKU3_ROTATED 85
1900#define DMPAPER_JENV_CHOU3_ROTATED 86
1901#define DMPAPER_JENV_CHOU4_ROTATED 87
1902#define DMPAPER_B6_JIS 88
1903#define DMPAPER_B6_JIS_ROTATED 89
1904#define DMPAPER_12X11 90
1905#define DMPAPER_JENV_YOU4 91
1906#define DMPAPER_JENV_YOU4_ROTATED 92
1907#define DMPAPER_P16K 93
1908#define DMPAPER_P32K 94
1909#define DMPAPER_P32KBIG 95
1910#define DMPAPER_PENV_1 96
1911#define DMPAPER_PENV_2 97
1912#define DMPAPER_PENV_3 98
1913#define DMPAPER_PENV_4 99
1914#define DMPAPER_PENV_5 100
1915#define DMPAPER_PENV_6 101
1916#define DMPAPER_PENV_7 102
1917#define DMPAPER_PENV_8 103
1918#define DMPAPER_PENV_9 104
1919#define DMPAPER_PENV_10 105
1920#define DMPAPER_P16K_ROTATED 106
1921#define DMPAPER_P32K_ROTATED 107
1922#define DMPAPER_P32KBIG_ROTATED 108
1923#define DMPAPER_PENV_1_ROTATED 109
1924#define DMPAPER_PENV_2_ROTATED 110
1925#define DMPAPER_PENV_3_ROTATED 111
1926#define DMPAPER_PENV_4_ROTATED 112
1927#define DMPAPER_PENV_5_ROTATED 113
1928#define DMPAPER_PENV_6_ROTATED 114
1929#define DMPAPER_PENV_7_ROTATED 115
1930#define DMPAPER_PENV_8_ROTATED 116
1931#define DMPAPER_PENV_9_ROTATED 117
1932#define DMPAPER_PENV_10_ROTATED 118
1933
1934#define DMPAPER_LAST DMPAPER_PENV_10_ROTATED
1935
1936#define DMPAPER_USER 256
1937
1938#define DMBIN_FIRST DMBIN_UPPER
1939#define DMBIN_UPPER 1
1940#define DMBIN_ONLYONE 1
1941#define DMBIN_LOWER 2
1942#define DMBIN_MIDDLE 3
1943#define DMBIN_MANUAL 4
1944#define DMBIN_ENVELOPE 5
1945#define DMBIN_ENVMANUAL 6
1946#define DMBIN_AUTO 7
1947#define DMBIN_TRACTOR 8
1948#define DMBIN_SMALLFMT 9
1949#define DMBIN_LARGEFMT 10
1950#define DMBIN_LARGECAPACITY 11
1951#define DMBIN_CASSETTE 14
1952#define DMBIN_FORMSOURCE 15
1953#define DMBIN_LAST DMBIN_FORMSOURCE
1954
1955#define DMBIN_USER 256
1956
1957#define DMRES_DRAFT (-1)
1958#define DMRES_LOW (-2)
1959#define DMRES_MEDIUM (-3)
1960#define DMRES_HIGH (-4)
1961
1962#define DMCOLOR_MONOCHROME 1
1963#define DMCOLOR_COLOR 2
1964
1965#define DMDUP_SIMPLEX 1
1966#define DMDUP_VERTICAL 2
1967#define DMDUP_HORIZONTAL 3
1968
1969#define DMTT_BITMAP 1
1970#define DMTT_DOWNLOAD 2
1971#define DMTT_SUBDEV 3
1972#define DMTT_DOWNLOAD_OUTLINE 4
1973
1974#define DMCOLLATE_FALSE 0
1975#define DMCOLLATE_TRUE 1
1976
1977#define DMDO_DEFAULT 0
1978#define DMDO_90 1
1979#define DMDO_180 2
1980#define DMDO_270 3
1981
1982#define DMDFO_DEFAULT 0
1983#define DMDFO_STRETCH 1
1984#define DMDFO_CENTER 2
1985
1986#define DM_INTERLACED 0x00000002
1987#define DMDISPLAYFLAGS_TEXTMODE 0x00000004
1988
1989#define DMNUP_SYSTEM 1
1990#define DMNUP_ONEUP 2
1991
1992#define DMICMMETHOD_NONE 1
1993#define DMICMMETHOD_SYSTEM 2
1994#define DMICMMETHOD_DRIVER 3
1995#define DMICMMETHOD_DEVICE 4
1996
1997#define DMICMMETHOD_USER 256
1998
1999#define DMICM_SATURATE 1
2000#define DMICM_CONTRAST 2
2001#define DMICM_COLORIMETRIC 3
2002#define DMICM_ABS_COLORIMETRIC 4
2003
2004#define DMICM_USER 256
2005
2006#define DMMEDIA_STANDARD 1
2007#define DMMEDIA_TRANSPARENCY 2
2008#define DMMEDIA_GLOSSY 3
2009
2010#define DMMEDIA_USER 256
2011
2012#define DMDITHER_NONE 1
2013#define DMDITHER_COARSE 2
2014#define DMDITHER_FINE 3
2015#define DMDITHER_LINEART 4
2016#define DMDITHER_ERRORDIFFUSION 5
2017#define DMDITHER_RESERVED6 6
2018#define DMDITHER_RESERVED7 7
2019#define DMDITHER_RESERVED8 8
2020#define DMDITHER_RESERVED9 9
2021#define DMDITHER_GRAYSCALE 10
2022
2023#define DMDITHER_USER 256
2024
2025#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
2026 typedef struct _DISPLAY_DEVICEA {
2027 DWORD cb;
2028 CHAR DeviceName[32];
2029 CHAR DeviceString[128];
2030 DWORD StateFlags;
2031 CHAR DeviceID[128];
2032 CHAR DeviceKey[128];
2033 } DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA;
2034
2035 typedef struct _DISPLAY_DEVICEW {
2036 DWORD cb;
2037 WCHAR DeviceName[32];
2038 WCHAR DeviceString[128];
2039 DWORD StateFlags;
2040 WCHAR DeviceID[128];
2041 WCHAR DeviceKey[128];
2042 } DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW;
2043
2044 __MINGW_TYPEDEF_AW(DISPLAY_DEVICE)
2045 __MINGW_TYPEDEF_AW(PDISPLAY_DEVICE)
2046 __MINGW_TYPEDEF_AW(LPDISPLAY_DEVICE)
2047#endif
2048
2049#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001
2050#define DISPLAY_DEVICE_MULTI_DRIVER 0x00000002
2051#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004
2052#define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008
2053#define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010
2054#define DISPLAY_DEVICE_REMOVABLE 0x00000020
2055#if _WIN32_WINNT >= 0x0602
2056#define DISPLAY_DEVICE_ACC_DRIVER 0x00000040
2057#endif
2058#define DISPLAY_DEVICE_TS_COMPATIBLE 0x00200000
2059#if _WIN32_WINNT >= 0x0600
2060#define DISPLAY_DEVICE_UNSAFE_MODES_ON 0x00080000
2061#endif
2062#define DISPLAY_DEVICE_MODESPRUNED 0x08000000
2063#define DISPLAY_DEVICE_RDPUDD 0x01000000
2064#define DISPLAY_DEVICE_REMOTE 0x04000000
2065#define DISPLAY_DEVICE_DISCONNECT 0x02000000
2066
2067#define DISPLAY_DEVICE_ACTIVE 0x00000001
2068#define DISPLAY_DEVICE_ATTACHED 0x00000002
2069
2070#if WINVER >= 0x0601
2071#define DISPLAYCONFIG_MAXPATH 1024
2072
2073#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
2074 typedef struct DISPLAYCONFIG_RATIONAL {
2075 UINT32 Numerator;
2076 UINT32 Denominator;
2077 } DISPLAYCONFIG_RATIONAL;
2078
2079 typedef enum {
2080 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = (int) -1,
2081 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = (int) 0,
2082 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = (int) 1,
2083 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = (int) 2,
2084 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = (int) 3,
2085 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = (int) 4,
2086 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = (int) 5,
2087 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = (int) 6,
2088 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = (int) 8,
2089 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = (int) 9,
2090 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = (int) 10,
2091 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = (int) 11,
2092 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = (int) 12,
2093 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = (int) 13,
2094 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = (int) 14,
2095 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST = (int) 15,
2096 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED = (int) 16,
2097 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_VIRTUAL = (int) 17,
2098 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_USB_TUNNEL = (int) 18,
2099 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = (int) 0x80000000,
2100 DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = (int) 0xFFFFFFFF
2101 } DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY;
2102
2103 typedef enum {
2104 DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED = 0,
2105 DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE = 1,
2106 DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED = 2,
2107 DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST = 2,
2108 DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST = 3,
2109 DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32 = 0xFFFFFFFF
2110 } DISPLAYCONFIG_SCANLINE_ORDERING;
2111
2112 typedef struct DISPLAYCONFIG_2DREGION {
2113 UINT32 cx;
2114 UINT32 cy;
2115 } DISPLAYCONFIG_2DREGION;
2116
2117 typedef struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO {
2118 UINT64 pixelRate;
2119 DISPLAYCONFIG_RATIONAL hSyncFreq;
2120 DISPLAYCONFIG_RATIONAL vSyncFreq;
2121 DISPLAYCONFIG_2DREGION activeSize;
2122 DISPLAYCONFIG_2DREGION totalSize;
2123 __C89_NAMELESS union {
2124 __C89_NAMELESS struct {
2125 UINT32 videoStandard : 16;
2126 UINT32 vSyncFreqDivider : 6;
2127 UINT32 reserved : 10;
2128 } AdditionalSignalInfo;
2129 UINT32 videoStandard;
2130 };
2131 DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
2132 } DISPLAYCONFIG_VIDEO_SIGNAL_INFO;
2133
2134 typedef enum {
2135 DISPLAYCONFIG_SCALING_IDENTITY = 1,
2136 DISPLAYCONFIG_SCALING_CENTERED = 2,
2137 DISPLAYCONFIG_SCALING_STRETCHED = 3,
2138 DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX = 4,
2139 DISPLAYCONFIG_SCALING_CUSTOM = 5,
2140 DISPLAYCONFIG_SCALING_PREFERRED = 128,
2141 DISPLAYCONFIG_SCALING_FORCE_UINT32 = 0xFFFFFFFF
2142 } DISPLAYCONFIG_SCALING;
2143
2144 typedef enum {
2145 DISPLAYCONFIG_ROTATION_IDENTITY = 1,
2146 DISPLAYCONFIG_ROTATION_ROTATE90 = 2,
2147 DISPLAYCONFIG_ROTATION_ROTATE180 = 3,
2148 DISPLAYCONFIG_ROTATION_ROTATE270 = 4,
2149 DISPLAYCONFIG_ROTATION_FORCE_UINT32 = 0xFFFFFFFF
2150 } DISPLAYCONFIG_ROTATION;
2151
2152 typedef enum {
2153 DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE = 1,
2154 DISPLAYCONFIG_MODE_INFO_TYPE_TARGET = 2,
2155 DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE = 3,
2156 DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32 = 0xFFFFFFFF
2157 } DISPLAYCONFIG_MODE_INFO_TYPE;
2158
2159 typedef enum {
2160 DISPLAYCONFIG_PIXELFORMAT_8BPP = 1,
2161 DISPLAYCONFIG_PIXELFORMAT_16BPP = 2,
2162 DISPLAYCONFIG_PIXELFORMAT_24BPP = 3,
2163 DISPLAYCONFIG_PIXELFORMAT_32BPP = 4,
2164 DISPLAYCONFIG_PIXELFORMAT_NONGDI = 5,
2165 DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32 = 0xffffffff
2166 } DISPLAYCONFIG_PIXELFORMAT;
2167
2168 typedef struct DISPLAYCONFIG_SOURCE_MODE {
2169 UINT32 width;
2170 UINT32 height;
2171 DISPLAYCONFIG_PIXELFORMAT pixelFormat;
2172 POINTL position;
2173 } DISPLAYCONFIG_SOURCE_MODE;
2174
2175 typedef struct DISPLAYCONFIG_TARGET_MODE {
2176 DISPLAYCONFIG_VIDEO_SIGNAL_INFO targetVideoSignalInfo;
2177 } DISPLAYCONFIG_TARGET_MODE;
2178
2179 typedef struct DISPLAYCONFIG_DESKTOP_IMAGE_INFO {
2180 POINTL PathSourceSize;
2181 RECTL DesktopImageRegion;
2182 RECTL DesktopImageClip;
2183 } DISPLAYCONFIG_DESKTOP_IMAGE_INFO;
2184
2185 typedef struct DISPLAYCONFIG_MODE_INFO {
2186 DISPLAYCONFIG_MODE_INFO_TYPE infoType;
2187 UINT32 id;
2188 LUID adapterId;
2189 __C89_NAMELESS union {
2190 DISPLAYCONFIG_TARGET_MODE targetMode;
2191 DISPLAYCONFIG_SOURCE_MODE sourceMode;
2192 };
2193 } DISPLAYCONFIG_MODE_INFO;
2194
2195#define DISPLAYCONFIG_PATH_MODE_IDX_INVALID 0xffffffff
2196#define DISPLAYCONFIG_PATH_TARGET_MODE_IDX_INVALID 0xffff
2197#define DISPLAYCONFIG_PATH_DESKTOP_IMAGE_IDX_INVALID 0xffff
2198#define DISPLAYCONFIG_PATH_SOURCE_MODE_IDX_INVALID 0xffff
2199#define DISPLAYCONFIG_PATH_CLONE_GROUP_INVALID 0xffff
2200
2201 typedef struct DISPLAYCONFIG_PATH_SOURCE_INFO {
2202 LUID adapterId;
2203 UINT32 id;
2204 __C89_NAMELESS union {
2205 UINT32 modeInfoIdx;
2206 __C89_NAMELESS struct {
2207 UINT32 cloneGroupId : 16;
2208 UINT32 sourceModeInfoIdx : 16;
2209 };
2210 };
2211 UINT32 statusFlags;
2212 } DISPLAYCONFIG_PATH_SOURCE_INFO;
2213
2214#define DISPLAYCONFIG_SOURCE_IN_USE 0x1
2215
2216 typedef struct DISPLAYCONFIG_PATH_TARGET_INFO {
2217 LUID adapterId;
2218 UINT32 id;
2219 __C89_NAMELESS union {
2220 UINT32 modeInfoIdx;
2221 __C89_NAMELESS struct {
2222 UINT32 desktopModeInfoIdx : 16;
2223 UINT32 targetModeInfoIdx : 16;
2224 };
2225 };
2226 DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
2227 DISPLAYCONFIG_ROTATION rotation;
2228 DISPLAYCONFIG_SCALING scaling;
2229 DISPLAYCONFIG_RATIONAL refreshRate;
2230 DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
2231 WINBOOL targetAvailable;
2232 UINT32 statusFlags;
2233 } DISPLAYCONFIG_PATH_TARGET_INFO;
2234
2235#define DISPLAYCONFIG_TARGET_IN_USE 0x00000001
2236#define DISPLAYCONFIG_TARGET_FORCIBLE 0x00000002
2237#define DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_BOOT 0x00000004
2238#define DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_PATH 0x00000008
2239#define DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_SYSTEM 0x00000010
2240#define DISPLAYCONFIG_TARGET_IS_HMD 0x00000020
2241
2242 typedef struct DISPLAYCONFIG_PATH_INFO {
2243 DISPLAYCONFIG_PATH_SOURCE_INFO sourceInfo;
2244 DISPLAYCONFIG_PATH_TARGET_INFO targetInfo;
2245 UINT32 flags;
2246 } DISPLAYCONFIG_PATH_INFO;
2247
2248#define DISPLAYCONFIG_PATH_ACTIVE 0x00000001
2249#define DISPLAYCONFIG_PATH_PREFERRED_UNSCALED 0x00000004
2250#define DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE 0x00000008
2251#define DISPLAYCONFIG_PATH_BOOST_REFRESH_RATE 0x00000010
2252#define DISPLAYCONFIG_PATH_VALID_FLAGS 0x0000001D
2253
2254 typedef enum DISPLAYCONFIG_TOPOLOGY_ID {
2255 DISPLAYCONFIG_TOPOLOGY_INTERNAL = 0x1,
2256 DISPLAYCONFIG_TOPOLOGY_CLONE = 0x2,
2257 DISPLAYCONFIG_TOPOLOGY_EXTEND = 0x4,
2258 DISPLAYCONFIG_TOPOLOGY_EXTERNAL = 0x8,
2259 DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32 = 0xFFFFFFFF
2260 } DISPLAYCONFIG_TOPOLOGY_ID;
2261
2262 typedef enum {
2263 DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME = 1,
2264 DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME = 2,
2265 DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE = 3,
2266 DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME = 4,
2267 DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE = 5,
2268 DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE = 6,
2269 DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION = 7,
2270 DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION = 8,
2271 DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO = 9,
2272 DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE = 10,
2273 DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL = 11,
2274 DISPLAYCONFIG_DEVICE_INFO_GET_MONITOR_SPECIALIZATION = 12,
2275 DISPLAYCONFIG_DEVICE_INFO_SET_MONITOR_SPECIALIZATION = 13,
2276 DISPLAYCONFIG_DEVICE_INFO_SET_RESERVED1 = 14,
2277 DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO_2 = 15,
2278 DISPLAYCONFIG_DEVICE_INFO_SET_HDR_STATE = 16,
2279 DISPLAYCONFIG_DEVICE_INFO_SET_WCG_STATE = 17,
2280 DISPLAYCONFIG_DEVICE_INFO_FORCE_UINT32 = 0xFFFFFFFF
2281 } DISPLAYCONFIG_DEVICE_INFO_TYPE;
2282
2283 typedef struct DISPLAYCONFIG_DEVICE_INFO_HEADER {
2284 DISPLAYCONFIG_DEVICE_INFO_TYPE type;
2285 UINT32 size;
2286 LUID adapterId;
2287 UINT32 id;
2288 } DISPLAYCONFIG_DEVICE_INFO_HEADER;
2289
2290#endif /* WINAPI_PARTITION_APP */
2291
2292#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2293 typedef struct DISPLAYCONFIG_SOURCE_DEVICE_NAME {
2294 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2295 WCHAR viewGdiDeviceName[CCHDEVICENAME];
2296 } DISPLAYCONFIG_SOURCE_DEVICE_NAME;
2297
2298 typedef struct DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS {
2299 __C89_NAMELESS union {
2300 __C89_NAMELESS struct {
2301 UINT32 friendlyNameFromEdid : 1;
2302 UINT32 friendlyNameForced : 1;
2303 UINT32 edidIdsValid : 1;
2304 UINT32 reserved : 29;
2305 };
2306 UINT32 value;
2307 };
2308 } DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS;
2309
2310 typedef struct DISPLAYCONFIG_TARGET_DEVICE_NAME {
2311 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2312 DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS flags;
2313 DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
2314 UINT16 edidManufactureId;
2315 UINT16 edidProductCodeId;
2316 UINT32 connectorInstance;
2317 WCHAR monitorFriendlyDeviceName[64];
2318 WCHAR monitorDevicePath[128];
2319 } DISPLAYCONFIG_TARGET_DEVICE_NAME;
2320
2321 typedef struct DISPLAYCONFIG_TARGET_PREFERRED_MODE {
2322 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2323 UINT32 width;
2324 UINT32 height;
2325 DISPLAYCONFIG_TARGET_MODE targetMode;
2326 } DISPLAYCONFIG_TARGET_PREFERRED_MODE;
2327
2328 typedef struct DISPLAYCONFIG_ADAPTER_NAME {
2329 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2330 WCHAR adapterDevicePath[128];
2331 } DISPLAYCONFIG_ADAPTER_NAME;
2332
2333 typedef struct DISPLAYCONFIG_TARGET_BASE_TYPE {
2334 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2335 DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY baseOutputTechnology;
2336 } DISPLAYCONFIG_TARGET_BASE_TYPE;
2337
2338 typedef struct DISPLAYCONFIG_SET_TARGET_PERSISTENCE {
2339 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2340 __C89_NAMELESS union {
2341 __C89_NAMELESS struct {
2342 UINT32 bootPersistenceOn : 1;
2343 UINT32 reserved : 31;
2344 };
2345 UINT32 value;
2346 };
2347 } DISPLAYCONFIG_SET_TARGET_PERSISTENCE;
2348
2349 typedef struct DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION {
2350 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2351 __C89_NAMELESS union {
2352 __C89_NAMELESS struct {
2353 UINT32 disableMonitorVirtualResolution : 1;
2354 UINT32 reserved : 31;
2355 };
2356 UINT32 value;
2357 };
2358 } DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION;
2359
2360 typedef enum _DISPLAYCONFIG_COLOR_ENCODING {
2361 DISPLAYCONFIG_COLOR_ENCODING_RGB = 0,
2362 DISPLAYCONFIG_COLOR_ENCODING_YCBCR444 = 1,
2363 DISPLAYCONFIG_COLOR_ENCODING_YCBCR422 = 2,
2364 DISPLAYCONFIG_COLOR_ENCODING_YCBCR420 = 3,
2365 DISPLAYCONFIG_COLOR_ENCODING_INTENSITY = 4,
2366 DISPLAYCONFIG_COLOR_ENCODING_FORCE_UINT32 = 0xFFFFFFFF
2367 } DISPLAYCONFIG_COLOR_ENCODING;
2368
2369 typedef struct _DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO {
2370 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2371 __C89_NAMELESS union {
2372 __C89_NAMELESS struct {
2373 UINT32 advancedColorSupported :1;
2374 UINT32 advancedColorEnabled :1;
2375 UINT32 wideColorEnforced :1;
2376 UINT32 advancedColorForceDisabled :1;
2377 UINT32 reserved :28;
2378 };
2379 UINT32 value;
2380 };
2381 DISPLAYCONFIG_COLOR_ENCODING colorEncoding;
2382 UINT32 bitsPerColorChannel;
2383 } DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO;
2384
2385 typedef struct _DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE {
2386 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2387 __C89_NAMELESS union {
2388 __C89_NAMELESS struct {
2389 UINT32 enableAdvancedColor :1;
2390 UINT32 reserved :31;
2391 };
2392 UINT32 value;
2393 };
2394} DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE;
2395
2396#if (NTDDI_VERSION >= NTDDI_WIN11_GA)
2397
2398 typedef enum _DISPLAYCONFIG_ADVANCED_COLOR_MODE {
2399 DISPLAYCONFIG_ADVANCED_COLOR_MODE_SDR,
2400 DISPLAYCONFIG_ADVANCED_COLOR_MODE_WCG,
2401 DISPLAYCONFIG_ADVANCED_COLOR_MODE_HDR
2402 } DISPLAYCONFIG_ADVANCED_COLOR_MODE;
2403
2404 typedef struct _DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO_2 {
2405 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2406 __C89_NAMELESS union {
2407 __C89_NAMELESS struct {
2408 UINT32 advancedColorSupported : 1;
2409 UINT32 advancedColorActive : 1;
2410 UINT32 reserved1 : 1;
2411 UINT32 advancedColorLimitedByPolicy : 1;
2412 UINT32 highDynamicRangeSupported : 1;
2413 UINT32 highDynamicRangeUserEnabled : 1;
2414 UINT32 wideColorSupported : 1;
2415 UINT32 wideColorUserEnabled : 1;
2416 UINT32 reserved : 24;
2417 };
2418 UINT32 value;
2419 };
2420 DISPLAYCONFIG_COLOR_ENCODING colorEncoding;
2421 UINT32 bitsPerColorChannel;
2422 DISPLAYCONFIG_ADVANCED_COLOR_MODE activeColorMode;
2423 } DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO_2;
2424
2425 typedef struct _DISPLAYCONFIG_SET_HDR_STATE {
2426 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2427 __C89_NAMELESS union {
2428 __C89_NAMELESS struct {
2429 UINT32 enableHdr : 1;
2430 UINT32 reserved : 31;
2431 };
2432 UINT32 value;
2433 };
2434 } DISPLAYCONFIG_SET_HDR_STATE;
2435
2436 typedef struct _DISPLAYCONFIG_SET_WCG_STATE {
2437 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2438 __C89_NAMELESS union {
2439 __C89_NAMELESS struct {
2440 UINT32 enableWcg : 1;
2441 UINT32 reserved : 31;
2442 };
2443 UINT32 value;
2444 };
2445 } DISPLAYCONFIG_SET_WCG_STATE;
2446
2447#endif /* (NTDDI_VERSION >= NTDDI_WIN11_GA) */
2448
2449 typedef struct _DISPLAYCONFIG_SDR_WHITE_LEVEL {
2450 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2451 ULONG SDRWhiteLevel;
2452 } DISPLAYCONFIG_SDR_WHITE_LEVEL;
2453
2454 typedef struct _DISPLAYCONFIG_GET_MONITOR_SPECIALIZATION {
2455 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2456 __C89_NAMELESS union {
2457 __C89_NAMELESS struct {
2458 UINT32 isSpecializationEnabled : 1;
2459 UINT32 isSpecializationAvailableForMonitor : 1;
2460 UINT32 isSpecializationAvailableForSystem : 1;
2461 UINT32 reserved : 29;
2462 };
2463 UINT32 value;
2464 };
2465 } DISPLAYCONFIG_GET_MONITOR_SPECIALIZATION;
2466
2467 typedef struct _DISPLAYCONFIG_SET_MONITOR_SPECIALIZATION {
2468 DISPLAYCONFIG_DEVICE_INFO_HEADER header;
2469 __C89_NAMELESS union {
2470 __C89_NAMELESS struct {
2471 UINT32 isSpecializationEnabled : 1;
2472 UINT32 reserved : 31;
2473 };
2474 UINT32 value;
2475 };
2476 GUID specializationType;
2477 GUID specializationSubType;
2478 WCHAR specializationApplicationName[128];
2479 } DISPLAYCONFIG_SET_MONITOR_SPECIALIZATION;
2480
2481#endif /* WINAPI_PARTITION_DESKTOP */
2482
2483#define QDC_ALL_PATHS 0x00000001
2484#define QDC_ONLY_ACTIVE_PATHS 0x00000002
2485#define QDC_DATABASE_CURRENT 0x00000004
2486#define QDC_VIRTUAL_MODE_AWARE 0x00000010
2487#define QDC_INCLUDE_HMD 0x00000020
2488#define QDC_VIRTUAL_REFRESH_RATE_AWARE 0x00000040
2489
2490#define SDC_TOPOLOGY_INTERNAL 0x00000001
2491#define SDC_TOPOLOGY_CLONE 0x00000002
2492#define SDC_TOPOLOGY_EXTEND 0x00000004
2493#define SDC_TOPOLOGY_EXTERNAL 0x00000008
2494#define SDC_TOPOLOGY_SUPPLIED 0x00000010
2495#define SDC_USE_DATABASE_CURRENT (SDC_TOPOLOGY_INTERNAL | SDC_TOPOLOGY_CLONE \
2496 | SDC_TOPOLOGY_EXTEND | SDC_TOPOLOGY_EXTERNAL)
2497
2498#define SDC_USE_SUPPLIED_DISPLAY_CONFIG 0x00000020
2499#define SDC_VALIDATE 0x00000040
2500#define SDC_APPLY 0x00000080
2501#define SDC_NO_OPTIMIZATION 0x00000100
2502#define SDC_SAVE_TO_DATABASE 0x00000200
2503#define SDC_ALLOW_CHANGES 0x00000400
2504#define SDC_PATH_PERSIST_IF_REQUIRED 0x00000800
2505#define SDC_FORCE_MODE_ENUMERATION 0x00001000
2506#define SDC_ALLOW_PATH_ORDER_CHANGES 0x00002000
2507#define SDC_VIRTUAL_MODE_AWARE 0x00008000
2508#define SDC_VIRTUAL_REFRESH_RATE_AWARE 0x00020000
2509
2510#endif /* WINVER >= 0x0601 */
2511
2512#define RDH_RECTANGLES 1
2513
2514#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
2515 typedef struct _RGNDATAHEADER {
2516 DWORD dwSize;
2517 DWORD iType;
2518 DWORD nCount;
2519 DWORD nRgnSize;
2520 RECT rcBound;
2521 } RGNDATAHEADER,*PRGNDATAHEADER;
2522
2523 typedef struct _RGNDATA {
2524 RGNDATAHEADER rdh;
2525 char Buffer[1];
2526 } RGNDATA,*PRGNDATA,*NPRGNDATA,*LPRGNDATA;
2527#endif
2528
2529#define SYSRGN 4
2530
2531#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2532 typedef struct _ABC {
2533 int abcA;
2534 UINT abcB;
2535 int abcC;
2536 } ABC,*PABC,*NPABC,*LPABC;
2537
2538 typedef struct _ABCFLOAT {
2539 FLOAT abcfA;
2540 FLOAT abcfB;
2541 FLOAT abcfC;
2542 } ABCFLOAT,*PABCFLOAT,*NPABCFLOAT,*LPABCFLOAT;
2543#endif
2544
2545#ifndef NOTEXTMETRIC
2546
2547#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2548 typedef struct _OUTLINETEXTMETRICA {
2549 UINT otmSize;
2550 TEXTMETRICA otmTextMetrics;
2551 BYTE otmFiller;
2552 PANOSE otmPanoseNumber;
2553 UINT otmfsSelection;
2554 UINT otmfsType;
2555 int otmsCharSlopeRise;
2556 int otmsCharSlopeRun;
2557 int otmItalicAngle;
2558 UINT otmEMSquare;
2559 int otmAscent;
2560 int otmDescent;
2561 UINT otmLineGap;
2562 UINT otmsCapEmHeight;
2563 UINT otmsXHeight;
2564 RECT otmrcFontBox;
2565 int otmMacAscent;
2566 int otmMacDescent;
2567 UINT otmMacLineGap;
2568 UINT otmusMinimumPPEM;
2569 POINT otmptSubscriptSize;
2570 POINT otmptSubscriptOffset;
2571 POINT otmptSuperscriptSize;
2572 POINT otmptSuperscriptOffset;
2573 UINT otmsStrikeoutSize;
2574 int otmsStrikeoutPosition;
2575 int otmsUnderscoreSize;
2576 int otmsUnderscorePosition;
2577 PSTR otmpFamilyName;
2578 PSTR otmpFaceName;
2579 PSTR otmpStyleName;
2580 PSTR otmpFullName;
2581 } OUTLINETEXTMETRICA,*POUTLINETEXTMETRICA,*NPOUTLINETEXTMETRICA,*LPOUTLINETEXTMETRICA;
2582
2583 typedef struct _OUTLINETEXTMETRICW {
2584 UINT otmSize;
2585 TEXTMETRICW otmTextMetrics;
2586 BYTE otmFiller;
2587 PANOSE otmPanoseNumber;
2588 UINT otmfsSelection;
2589 UINT otmfsType;
2590 int otmsCharSlopeRise;
2591 int otmsCharSlopeRun;
2592 int otmItalicAngle;
2593 UINT otmEMSquare;
2594 int otmAscent;
2595 int otmDescent;
2596 UINT otmLineGap;
2597 UINT otmsCapEmHeight;
2598 UINT otmsXHeight;
2599 RECT otmrcFontBox;
2600 int otmMacAscent;
2601 int otmMacDescent;
2602 UINT otmMacLineGap;
2603 UINT otmusMinimumPPEM;
2604 POINT otmptSubscriptSize;
2605 POINT otmptSubscriptOffset;
2606 POINT otmptSuperscriptSize;
2607 POINT otmptSuperscriptOffset;
2608 UINT otmsStrikeoutSize;
2609 int otmsStrikeoutPosition;
2610 int otmsUnderscoreSize;
2611 int otmsUnderscorePosition;
2612 PSTR otmpFamilyName;
2613 PSTR otmpFaceName;
2614 PSTR otmpStyleName;
2615 PSTR otmpFullName;
2616 } OUTLINETEXTMETRICW,*POUTLINETEXTMETRICW,*NPOUTLINETEXTMETRICW,*LPOUTLINETEXTMETRICW;
2617
2618 __MINGW_TYPEDEF_AW(OUTLINETEXTMETRIC)
2619 __MINGW_TYPEDEF_AW(POUTLINETEXTMETRIC)
2620 __MINGW_TYPEDEF_AW(NPOUTLINETEXTMETRIC)
2621 __MINGW_TYPEDEF_AW(LPOUTLINETEXTMETRIC)
2622#endif
2623#endif /* NOTEXTMETRIC */
2624
2625#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
2626 typedef struct tagPOLYTEXTA {
2627 int x;
2628 int y;
2629 UINT n;
2630 LPCSTR lpstr;
2631 UINT uiFlags;
2632 RECT rcl;
2633 int *pdx;
2634 } POLYTEXTA,*PPOLYTEXTA,*NPPOLYTEXTA,*LPPOLYTEXTA;
2635
2636 typedef struct tagPOLYTEXTW {
2637 int x;
2638 int y;
2639 UINT n;
2640 LPCWSTR lpstr;
2641 UINT uiFlags;
2642 RECT rcl;
2643 int *pdx;
2644 } POLYTEXTW,*PPOLYTEXTW,*NPPOLYTEXTW,*LPPOLYTEXTW;
2645
2646 __MINGW_TYPEDEF_AW(POLYTEXT)
2647 __MINGW_TYPEDEF_AW(PPOLYTEXT)
2648 __MINGW_TYPEDEF_AW(NPPOLYTEXT)
2649 __MINGW_TYPEDEF_AW(LPPOLYTEXT)
2650#endif
2651
2652#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2653 typedef struct _FIXED {
2654 WORD fract;
2655 short value;
2656 } FIXED;
2657
2658 typedef struct _MAT2 {
2659 FIXED eM11;
2660 FIXED eM12;
2661 FIXED eM21;
2662 FIXED eM22;
2663 } MAT2,*LPMAT2;
2664
2665 typedef struct _GLYPHMETRICS {
2666 UINT gmBlackBoxX;
2667 UINT gmBlackBoxY;
2668 POINT gmptGlyphOrigin;
2669 short gmCellIncX;
2670 short gmCellIncY;
2671 } GLYPHMETRICS,*LPGLYPHMETRICS;
2672#endif
2673
2674#define GGO_METRICS 0
2675#define GGO_BITMAP 1
2676#define GGO_NATIVE 2
2677#define GGO_BEZIER 3
2678#define GGO_GRAY2_BITMAP 4
2679#define GGO_GRAY4_BITMAP 5
2680#define GGO_GRAY8_BITMAP 6
2681#define GGO_GLYPH_INDEX 0x0080
2682#define GGO_UNHINTED 0x0100
2683
2684#define TT_POLYGON_TYPE 24
2685
2686#define TT_PRIM_LINE 1
2687#define TT_PRIM_QSPLINE 2
2688#define TT_PRIM_CSPLINE 3
2689
2690#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2691 typedef struct tagPOINTFX {
2692 FIXED x;
2693 FIXED y;
2694 } POINTFX,*LPPOINTFX;
2695
2696 typedef struct tagTTPOLYCURVE {
2697 WORD wType;
2698 WORD cpfx;
2699 POINTFX apfx[1];
2700 } TTPOLYCURVE,*LPTTPOLYCURVE;
2701
2702 typedef struct tagTTPOLYGONHEADER {
2703 DWORD cb;
2704 DWORD dwType;
2705 POINTFX pfxStart;
2706 } TTPOLYGONHEADER,*LPTTPOLYGONHEADER;
2707#endif
2708
2709#define GCP_DBCS 0x0001
2710#define GCP_REORDER 0x0002
2711#define GCP_USEKERNING 0x0008
2712#define GCP_GLYPHSHAPE 0x0010
2713#define GCP_LIGATE 0x0020
2714#define GCP_DIACRITIC 0x0100
2715#define GCP_KASHIDA 0x0400
2716#define GCP_ERROR 0x8000
2717#define FLI_MASK 0x103B
2718
2719#define GCP_JUSTIFY __MSABI_LONG(0x00010000)
2720#define FLI_GLYPHS __MSABI_LONG(0x00040000)
2721#define GCP_CLASSIN __MSABI_LONG(0x00080000)
2722#define GCP_MAXEXTENT __MSABI_LONG(0x00100000)
2723#define GCP_JUSTIFYIN __MSABI_LONG(0x00200000)
2724#define GCP_DISPLAYZWG __MSABI_LONG(0x00400000)
2725#define GCP_SYMSWAPOFF __MSABI_LONG(0x00800000)
2726#define GCP_NUMERICOVERRIDE __MSABI_LONG(0x01000000)
2727#define GCP_NEUTRALOVERRIDE __MSABI_LONG(0x02000000)
2728#define GCP_NUMERICSLATIN __MSABI_LONG(0x04000000)
2729#define GCP_NUMERICSLOCAL __MSABI_LONG(0x08000000)
2730
2731#define GCPCLASS_LATIN 1
2732#define GCPCLASS_HEBREW 2
2733#define GCPCLASS_ARABIC 2
2734#define GCPCLASS_NEUTRAL 3
2735#define GCPCLASS_LOCALNUMBER 4
2736#define GCPCLASS_LATINNUMBER 5
2737#define GCPCLASS_LATINNUMERICTERMINATOR 6
2738#define GCPCLASS_LATINNUMERICSEPARATOR 7
2739#define GCPCLASS_NUMERICSEPARATOR 8
2740#define GCPCLASS_PREBOUNDLTR 0x80
2741#define GCPCLASS_PREBOUNDRTL 0x40
2742#define GCPCLASS_POSTBOUNDLTR 0x20
2743#define GCPCLASS_POSTBOUNDRTL 0x10
2744
2745#define GCPGLYPH_LINKBEFORE 0x8000
2746#define GCPGLYPH_LINKAFTER 0x4000
2747
2748#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2749 typedef struct tagGCP_RESULTSA {
2750 DWORD lStructSize;
2751 LPSTR lpOutString;
2752 UINT *lpOrder;
2753 int *lpDx;
2754 int *lpCaretPos;
2755 LPSTR lpClass;
2756 LPWSTR lpGlyphs;
2757 UINT nGlyphs;
2758 int nMaxFit;
2759 } GCP_RESULTSA,*LPGCP_RESULTSA;
2760 typedef struct tagGCP_RESULTSW {
2761 DWORD lStructSize;
2762 LPWSTR lpOutString;
2763 UINT *lpOrder;
2764 int *lpDx;
2765 int *lpCaretPos;
2766 LPSTR lpClass;
2767 LPWSTR lpGlyphs;
2768 UINT nGlyphs;
2769 int nMaxFit;
2770 } GCP_RESULTSW,*LPGCP_RESULTSW;
2771
2772 __MINGW_TYPEDEF_AW(GCP_RESULTS)
2773 __MINGW_TYPEDEF_AW(LPGCP_RESULTS)
2774
2775 typedef struct _RASTERIZER_STATUS {
2776 short nSize;
2777 short wFlags;
2778 short nLanguageID;
2779 } RASTERIZER_STATUS,*LPRASTERIZER_STATUS;
2780#endif
2781
2782#define TT_AVAILABLE 0x0001
2783#define TT_ENABLED 0x0002
2784
2785#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
2786 typedef struct tagPIXELFORMATDESCRIPTOR {
2787 WORD nSize;
2788 WORD nVersion;
2789 DWORD dwFlags;
2790 BYTE iPixelType;
2791 BYTE cColorBits;
2792 BYTE cRedBits;
2793 BYTE cRedShift;
2794 BYTE cGreenBits;
2795 BYTE cGreenShift;
2796 BYTE cBlueBits;
2797 BYTE cBlueShift;
2798 BYTE cAlphaBits;
2799 BYTE cAlphaShift;
2800 BYTE cAccumBits;
2801 BYTE cAccumRedBits;
2802 BYTE cAccumGreenBits;
2803 BYTE cAccumBlueBits;
2804 BYTE cAccumAlphaBits;
2805 BYTE cDepthBits;
2806 BYTE cStencilBits;
2807 BYTE cAuxBuffers;
2808 BYTE iLayerType;
2809 BYTE bReserved;
2810 DWORD dwLayerMask;
2811 DWORD dwVisibleMask;
2812 DWORD dwDamageMask;
2813 } PIXELFORMATDESCRIPTOR,*PPIXELFORMATDESCRIPTOR,*LPPIXELFORMATDESCRIPTOR;
2814#endif
2815
2816#define PFD_TYPE_RGBA 0
2817#define PFD_TYPE_COLORINDEX 1
2818
2819#define PFD_MAIN_PLANE 0
2820#define PFD_OVERLAY_PLANE 1
2821#define PFD_UNDERLAY_PLANE (-1)
2822
2823#define PFD_DOUBLEBUFFER 0x00000001
2824#define PFD_STEREO 0x00000002
2825#define PFD_DRAW_TO_WINDOW 0x00000004
2826#define PFD_DRAW_TO_BITMAP 0x00000008
2827#define PFD_SUPPORT_GDI 0x00000010
2828#define PFD_SUPPORT_OPENGL 0x00000020
2829#define PFD_GENERIC_FORMAT 0x00000040
2830#define PFD_NEED_PALETTE 0x00000080
2831#define PFD_NEED_SYSTEM_PALETTE 0x00000100
2832#define PFD_SWAP_EXCHANGE 0x00000200
2833#define PFD_SWAP_COPY 0x00000400
2834#define PFD_SWAP_LAYER_BUFFERS 0x00000800
2835#define PFD_GENERIC_ACCELERATED 0x00001000
2836#define PFD_SUPPORT_DIRECTDRAW 0x00002000
2837#define PFD_DIRECT3D_ACCELERATED 0x00004000
2838#define PFD_SUPPORT_COMPOSITION 0x00008000
2839
2840#define PFD_DEPTH_DONTCARE 0x20000000
2841#define PFD_DOUBLEBUFFER_DONTCARE 0x40000000
2842#define PFD_STEREO_DONTCARE 0x80000000
2843
2844#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2845#ifndef NOTEXTMETRIC
2846 typedef int (CALLBACK *OLDFONTENUMPROCA)(CONST LOGFONTA *,CONST TEXTMETRICA *,DWORD,LPARAM);
2847 typedef int (CALLBACK *OLDFONTENUMPROCW)(CONST LOGFONTW *,CONST TEXTMETRICW *,DWORD,LPARAM);
2848
2849#define OLDFONTENUMPROC __MINGW_NAME_AW(OLDFONTENUMPROC)
2850#else
2851 typedef int (CALLBACK *OLDFONTENUMPROCA)(CONST LOGFONTA *,CONST VOID *,DWORD,LPARAM);
2852 typedef int (CALLBACK *OLDFONTENUMPROCW)(CONST LOGFONTW *,CONST VOID *,DWORD,LPARAM);
2853
2854#define OLDFONTENUMPROC __MINGW_NAME_AW(OLDFONTENUMPROC)
2855#endif
2856
2857 typedef OLDFONTENUMPROCA FONTENUMPROCA;
2858 typedef OLDFONTENUMPROCW FONTENUMPROCW;
2859
2860 __MINGW_TYPEDEF_AW(FONTENUMPROC)
2861
2862 typedef int (CALLBACK *GOBJENUMPROC)(LPVOID,LPARAM);
2863 typedef VOID (CALLBACK *LINEDDAPROC)(int,int,LPARAM);
2864
2865#define AddFontResource __MINGW_NAME_AW(AddFontResource)
2866#define CopyMetaFile __MINGW_NAME_AW(CopyMetaFile)
2867#define CreateDC __MINGW_NAME_AW(CreateDC)
2868#define CreateFontIndirect __MINGW_NAME_AW(CreateFontIndirect)
2869#define CreateFont __MINGW_NAME_AW(CreateFont)
2870#define CreateIC __MINGW_NAME_AW(CreateIC)
2871#define CreateMetaFile __MINGW_NAME_AW(CreateMetaFile)
2872#define CreateScalableFontResource __MINGW_NAME_AW(CreateScalableFontResource)
2873
2874
2875 WINGDIAPI int WINAPI AddFontResourceA(LPCSTR);
2876 WINGDIAPI int WINAPI AddFontResourceW(LPCWSTR);
2877 WINGDIAPI WINBOOL WINAPI AnimatePalette(HPALETTE hPal,UINT iStartIndex,UINT cEntries,CONST PALETTEENTRY *ppe);
2878 WINGDIAPI WINBOOL WINAPI Arc(HDC hdc,int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);
2879 WINGDIAPI WINBOOL WINAPI BitBlt(HDC hdc,int x,int y,int cx,int cy,HDC hdcSrc,int x1,int y1,DWORD rop);
2880 WINGDIAPI WINBOOL WINAPI CancelDC(HDC hdc);
2881 WINGDIAPI WINBOOL WINAPI Chord(HDC hdc,int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);
2882 WINGDIAPI int WINAPI ChoosePixelFormat(HDC hdc,CONST PIXELFORMATDESCRIPTOR *ppfd);
2883 WINGDIAPI HMETAFILE WINAPI CloseMetaFile(HDC hdc);
2884 WINGDIAPI int WINAPI CombineRgn(HRGN hrgnDst,HRGN hrgnSrc1,HRGN hrgnSrc2,int iMode);
2885 WINGDIAPI HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
2886 WINGDIAPI HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
2887 WINGDIAPI HBITMAP WINAPI CreateBitmap(int nWidth,int nHeight,UINT nPlanes,UINT nBitCount,CONST VOID *lpBits);
2888 WINGDIAPI HBITMAP WINAPI CreateBitmapIndirect(CONST BITMAP *pbm);
2889 WINGDIAPI HBRUSH WINAPI CreateBrushIndirect(CONST LOGBRUSH *plbrush);
2890 WINGDIAPI HBITMAP WINAPI CreateCompatibleBitmap(HDC hdc,int cx,int cy);
2891 WINGDIAPI HBITMAP WINAPI CreateDiscardableBitmap(HDC hdc,int cx,int cy);
2892 WINGDIAPI HDC WINAPI CreateCompatibleDC(HDC hdc);
2893 WINGDIAPI HDC WINAPI CreateDCA(LPCSTR pwszDriver,LPCSTR pwszDevice,LPCSTR pszPort,CONST DEVMODEA *pdm);
2894 WINGDIAPI HDC WINAPI CreateDCW(LPCWSTR pwszDriver,LPCWSTR pwszDevice,LPCWSTR pszPort,CONST DEVMODEW *pdm);
2895 WINGDIAPI HBITMAP WINAPI CreateDIBitmap(HDC hdc,CONST BITMAPINFOHEADER *pbmih,DWORD flInit,CONST VOID *pjBits,CONST BITMAPINFO *pbmi,UINT iUsage);
2896 WINGDIAPI HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL h,UINT iUsage);
2897 WINGDIAPI HBRUSH WINAPI CreateDIBPatternBrushPt(CONST VOID *lpPackedDIB,UINT iUsage);
2898 WINGDIAPI HRGN WINAPI CreateEllipticRgn(int x1,int y1,int x2,int y2);
2899 WINGDIAPI HRGN WINAPI CreateEllipticRgnIndirect(CONST RECT *lprect);
2900 WINGDIAPI HFONT WINAPI CreateFontIndirectA(CONST LOGFONTA *lplf);
2901 WINGDIAPI HFONT WINAPI CreateFontIndirectW(CONST LOGFONTW *lplf);
2902 WINGDIAPI HFONT WINAPI CreateFontA(int cHeight,int cWidth,int cEscapement,int cOrientation,int cWeight,DWORD bItalic,DWORD bUnderline,DWORD bStrikeOut,DWORD iCharSet,DWORD iOutPrecision,DWORD iClipPrecision,DWORD iQuality,DWORD iPitchAndFamily,LPCSTR pszFaceName);
2903 WINGDIAPI HFONT WINAPI CreateFontW(int cHeight,int cWidth,int cEscapement,int cOrientation,int cWeight,DWORD bItalic,DWORD bUnderline,DWORD bStrikeOut,DWORD iCharSet,DWORD iOutPrecision,DWORD iClipPrecision,DWORD iQuality,DWORD iPitchAndFamily,LPCWSTR pszFaceName);
2904 WINGDIAPI HBRUSH WINAPI CreateHatchBrush(int iHatch,COLORREF color);
2905 WINGDIAPI HDC WINAPI CreateICA(LPCSTR pszDriver,LPCSTR pszDevice,LPCSTR pszPort,CONST DEVMODEA *pdm);
2906 WINGDIAPI HDC WINAPI CreateICW(LPCWSTR pszDriver,LPCWSTR pszDevice,LPCWSTR pszPort,CONST DEVMODEW *pdm);
2907 WINGDIAPI HDC WINAPI CreateMetaFileA(LPCSTR pszFile);
2908 WINGDIAPI HDC WINAPI CreateMetaFileW(LPCWSTR pszFile);
2909 WINGDIAPI HPALETTE WINAPI CreatePalette(CONST LOGPALETTE *plpal);
2910 WINGDIAPI HPEN WINAPI CreatePen(int iStyle,int cWidth,COLORREF color);
2911 WINGDIAPI HPEN WINAPI CreatePenIndirect(CONST LOGPEN *plpen);
2912 WINGDIAPI HRGN WINAPI CreatePolyPolygonRgn(CONST POINT *pptl,CONST INT *pc,int cPoly,int iMode);
2913 WINGDIAPI HBRUSH WINAPI CreatePatternBrush(HBITMAP hbm);
2914 WINGDIAPI HRGN WINAPI CreateRectRgn(int x1,int y1,int x2,int y2);
2915 WINGDIAPI HRGN WINAPI CreateRectRgnIndirect(CONST RECT *lprect);
2916 WINGDIAPI HRGN WINAPI CreateRoundRectRgn(int x1,int y1,int x2,int y2,int w,int h);
2917 WINGDIAPI WINBOOL WINAPI CreateScalableFontResourceA(DWORD fdwHidden,LPCSTR lpszFont,LPCSTR lpszFile,LPCSTR lpszPath);
2918 WINGDIAPI WINBOOL WINAPI CreateScalableFontResourceW(DWORD fdwHidden,LPCWSTR lpszFont,LPCWSTR lpszFile,LPCWSTR lpszPath);
2919 WINGDIAPI HBRUSH WINAPI CreateSolidBrush(COLORREF color);
2920 WINGDIAPI WINBOOL WINAPI DeleteDC(HDC hdc);
2921 WINGDIAPI WINBOOL WINAPI DeleteMetaFile(HMETAFILE hmf);
2922 WINGDIAPI WINBOOL WINAPI DeleteObject(HGDIOBJ ho);
2923 WINGDIAPI int WINAPI DescribePixelFormat(HDC hdc,int iPixelFormat,UINT nBytes,LPPIXELFORMATDESCRIPTOR ppfd);
2924
2925 typedef UINT (CALLBACK *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODE,LPSTR,LPSTR,LPDEVMODE,LPSTR,UINT);
2926 typedef DWORD (CALLBACK *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODE);
2927#endif /* WINAPI_PARTITION_DESKTOP */
2928
2929#define DM_UPDATE 1
2930#define DM_COPY 2
2931#define DM_PROMPT 4
2932#define DM_MODIFY 8
2933
2934#define DM_IN_BUFFER DM_MODIFY
2935#define DM_IN_PROMPT DM_PROMPT
2936#define DM_OUT_BUFFER DM_COPY
2937#define DM_OUT_DEFAULT DM_UPDATE
2938
2939#define DC_FIELDS 1
2940#define DC_PAPERS 2
2941#define DC_PAPERSIZE 3
2942#define DC_MINEXTENT 4
2943#define DC_MAXEXTENT 5
2944#define DC_BINS 6
2945#define DC_DUPLEX 7
2946#define DC_SIZE 8
2947#define DC_EXTRA 9
2948#define DC_VERSION 10
2949#define DC_DRIVER 11
2950#define DC_BINNAMES 12
2951#define DC_ENUMRESOLUTIONS 13
2952#define DC_FILEDEPENDENCIES 14
2953#define DC_TRUETYPE 15
2954#define DC_PAPERNAMES 16
2955#define DC_ORIENTATION 17
2956#define DC_COPIES 18
2957#define DC_BINADJUST 19
2958#define DC_EMF_COMPLIANT 20
2959#define DC_DATATYPE_PRODUCED 21
2960#define DC_COLLATE 22
2961#define DC_MANUFACTURER 23
2962#define DC_MODEL 24
2963#define DC_PERSONALITY 25
2964#define DC_PRINTRATE 26
2965#define DC_PRINTRATEUNIT 27
2966#define PRINTRATEUNIT_PPM 1
2967#define PRINTRATEUNIT_CPS 2
2968#define PRINTRATEUNIT_LPM 3
2969#define PRINTRATEUNIT_IPM 4
2970#define DC_PRINTERMEM 28
2971#define DC_MEDIAREADY 29
2972#define DC_STAPLE 30
2973#define DC_PRINTRATEPPM 31
2974#define DC_COLORDEVICE 32
2975#define DC_NUP 33
2976#define DC_MEDIATYPENAMES 34
2977#define DC_MEDIATYPES 35
2978
2979#define DCTT_BITMAP __MSABI_LONG(0x0000001)
2980#define DCTT_DOWNLOAD __MSABI_LONG(0x0000002)
2981#define DCTT_SUBDEV __MSABI_LONG(0x0000004)
2982#define DCTT_DOWNLOAD_OUTLINE __MSABI_LONG(0x0000008)
2983
2984#define DCBA_FACEUPNONE 0x0000
2985#define DCBA_FACEUPCENTER 0x0001
2986#define DCBA_FACEUPLEFT 0x0002
2987#define DCBA_FACEUPRIGHT 0x0003
2988#define DCBA_FACEDOWNNONE 0x0100
2989#define DCBA_FACEDOWNCENTER 0x0101
2990#define DCBA_FACEDOWNLEFT 0x0102
2991#define DCBA_FACEDOWNRIGHT 0x0103
2992
2993#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
2994#define DeviceCapabilities __MINGW_NAME_AW(DeviceCapabilities)
2995#define EnumFontFamiliesEx __MINGW_NAME_AW(EnumFontFamiliesEx)
2996#define EnumFontFamilies __MINGW_NAME_AW(EnumFontFamilies)
2997#define EnumFonts __MINGW_NAME_AW(EnumFonts)
2998#define GetCharWidth __MINGW_NAME_AW(GetCharWidth)
2999#define GetCharWidth32 __MINGW_NAME_AW(GetCharWidth32)
3000#define GetCharWidthFloat __MINGW_NAME_AW(GetCharWidthFloat)
3001#define GetCharABCWidths __MINGW_NAME_AW(GetCharABCWidths)
3002#define GetCharABCWidthsFloat __MINGW_NAME_AW(GetCharABCWidthsFloat)
3003#define GetGlyphOutline __MINGW_NAME_AW(GetGlyphOutline)
3004#define GetMetaFile __MINGW_NAME_AW(GetMetaFile)
3005
3006 WINSPOOLAPI int WINAPI DeviceCapabilitiesA(LPCSTR pDevice,LPCSTR pPort,WORD fwCapability,LPSTR pOutput,CONST DEVMODEA *pDevMode);
3007 WINSPOOLAPI int WINAPI DeviceCapabilitiesW(LPCWSTR pDevice,LPCWSTR pPort,WORD fwCapability,LPWSTR pOutput,CONST DEVMODEW *pDevMode);
3008 WINGDIAPI int WINAPI DrawEscape(HDC hdc,int iEscape,int cjIn,LPCSTR lpIn);
3009 WINGDIAPI WINBOOL WINAPI Ellipse(HDC hdc,int left,int top,int right,int bottom);
3010 WINGDIAPI int WINAPI EnumFontFamiliesExA(HDC hdc,LPLOGFONTA lpLogfont,FONTENUMPROCA lpProc,LPARAM lParam,DWORD dwFlags);
3011 WINGDIAPI int WINAPI EnumFontFamiliesExW(HDC hdc,LPLOGFONTW lpLogfont,FONTENUMPROCW lpProc,LPARAM lParam,DWORD dwFlags);
3012 WINGDIAPI int WINAPI EnumFontFamiliesA(HDC hdc,LPCSTR lpLogfont,FONTENUMPROCA lpProc,LPARAM lParam);
3013 WINGDIAPI int WINAPI EnumFontFamiliesW(HDC hdc,LPCWSTR lpLogfont,FONTENUMPROCW lpProc,LPARAM lParam);
3014 WINGDIAPI int WINAPI EnumFontsA(HDC hdc,LPCSTR lpLogfont,FONTENUMPROCA lpProc,LPARAM lParam);
3015 WINGDIAPI int WINAPI EnumFontsW(HDC hdc,LPCWSTR lpLogfont,FONTENUMPROCW lpProc,LPARAM lParam);
3016 WINGDIAPI int WINAPI EnumObjects(HDC hdc,int nType,GOBJENUMPROC lpFunc,LPARAM lParam);
3017 WINGDIAPI WINBOOL WINAPI EqualRgn(HRGN hrgn1,HRGN hrgn2);
3018 WINGDIAPI int WINAPI Escape(HDC hdc,int iEscape,int cjIn,LPCSTR pvIn,LPVOID pvOut);
3019 WINGDIAPI int WINAPI ExtEscape(HDC hdc,int iEscape,int cjInput,LPCSTR lpInData,int cjOutput,LPSTR lpOutData);
3020 WINGDIAPI int WINAPI ExcludeClipRect(HDC hdc,int left,int top,int right,int bottom);
3021 WINGDIAPI HRGN WINAPI ExtCreateRegion(CONST XFORM *lpx,DWORD nCount,CONST RGNDATA *lpData);
3022 WINGDIAPI WINBOOL WINAPI ExtFloodFill(HDC hdc,int x,int y,COLORREF color,UINT type);
3023 WINGDIAPI WINBOOL WINAPI FillRgn(HDC hdc,HRGN hrgn,HBRUSH hbr);
3024 WINGDIAPI WINBOOL WINAPI FloodFill(HDC hdc,int x,int y,COLORREF color);
3025 WINGDIAPI WINBOOL WINAPI FrameRgn(HDC hdc,HRGN hrgn,HBRUSH hbr,int w,int h);
3026 WINGDIAPI int WINAPI GetROP2(HDC hdc);
3027 WINGDIAPI WINBOOL WINAPI GetAspectRatioFilterEx(HDC hdc,LPSIZE lpsize);
3028 WINGDIAPI COLORREF WINAPI GetBkColor(HDC hdc);
3029 WINGDIAPI COLORREF WINAPI GetDCBrushColor(HDC hdc);
3030 WINGDIAPI COLORREF WINAPI GetDCPenColor(HDC hdc);
3031 WINGDIAPI int WINAPI GetBkMode(HDC hdc);
3032 WINGDIAPI LONG WINAPI GetBitmapBits(HBITMAP hbit,LONG cb,LPVOID lpvBits);
3033 WINGDIAPI WINBOOL WINAPI GetBitmapDimensionEx(HBITMAP hbit,LPSIZE lpsize);
3034 WINGDIAPI UINT WINAPI GetBoundsRect(HDC hdc,LPRECT lprect,UINT flags);
3035 WINGDIAPI WINBOOL WINAPI GetBrushOrgEx(HDC hdc,LPPOINT lppt);
3036 WINGDIAPI WINBOOL WINAPI GetCharWidthA(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer);
3037 WINGDIAPI WINBOOL WINAPI GetCharWidthW(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer);
3038 WINGDIAPI WINBOOL WINAPI GetCharWidth32A(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer);
3039 WINGDIAPI WINBOOL WINAPI GetCharWidth32W(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer);
3040 WINGDIAPI WINBOOL WINAPI GetCharWidthFloatA(HDC hdc,UINT iFirst,UINT iLast,PFLOAT lpBuffer);
3041 WINGDIAPI WINBOOL WINAPI GetCharWidthFloatW(HDC hdc,UINT iFirst,UINT iLast,PFLOAT lpBuffer);
3042 WINGDIAPI WINBOOL WINAPI GetCharABCWidthsA(HDC hdc,UINT wFirst,UINT wLast,LPABC lpABC);
3043 WINGDIAPI WINBOOL WINAPI GetCharABCWidthsW(HDC hdc,UINT wFirst,UINT wLast,LPABC lpABC);
3044 WINGDIAPI WINBOOL WINAPI GetCharABCWidthsFloatA(HDC hdc,UINT iFirst,UINT iLast,LPABCFLOAT lpABC);
3045 WINGDIAPI WINBOOL WINAPI GetCharABCWidthsFloatW(HDC hdc,UINT iFirst,UINT iLast,LPABCFLOAT lpABC);
3046 WINGDIAPI int WINAPI GetClipBox(HDC hdc,LPRECT lprect);
3047 WINGDIAPI int WINAPI GetClipRgn(HDC hdc,HRGN hrgn);
3048 WINGDIAPI int WINAPI GetMetaRgn(HDC hdc,HRGN hrgn);
3049 WINGDIAPI HGDIOBJ WINAPI GetCurrentObject(HDC hdc,UINT type);
3050 WINGDIAPI WINBOOL WINAPI GetCurrentPositionEx(HDC hdc,LPPOINT lppt);
3051 WINGDIAPI int WINAPI GetDeviceCaps(HDC hdc,int index);
3052 WINGDIAPI int WINAPI GetDIBits(HDC hdc,HBITMAP hbm,UINT start,UINT cLines,LPVOID lpvBits,LPBITMAPINFO lpbmi,UINT usage);
3053 WINGDIAPI DWORD WINAPI GetFontData (HDC hdc,DWORD dwTable,DWORD dwOffset,PVOID pvBuffer,DWORD cjBuffer);
3054 WINGDIAPI DWORD WINAPI GetGlyphOutlineA(HDC hdc,UINT uChar,UINT fuFormat,LPGLYPHMETRICS lpgm,DWORD cjBuffer,LPVOID pvBuffer,CONST MAT2 *lpmat2);
3055 WINGDIAPI DWORD WINAPI GetGlyphOutlineW(HDC hdc,UINT uChar,UINT fuFormat,LPGLYPHMETRICS lpgm,DWORD cjBuffer,LPVOID pvBuffer,CONST MAT2 *lpmat2);
3056 WINGDIAPI int WINAPI GetGraphicsMode(HDC hdc);
3057 WINGDIAPI int WINAPI GetMapMode(HDC hdc);
3058 WINGDIAPI UINT WINAPI GetMetaFileBitsEx(HMETAFILE hMF,UINT cbBuffer,LPVOID lpData);
3059 WINGDIAPI HMETAFILE WINAPI GetMetaFileA(LPCSTR lpName);
3060 WINGDIAPI HMETAFILE WINAPI GetMetaFileW(LPCWSTR lpName);
3061 WINGDIAPI COLORREF WINAPI GetNearestColor(HDC hdc,COLORREF color);
3062 WINGDIAPI UINT WINAPI GetNearestPaletteIndex(HPALETTE h,COLORREF color);
3063 WINGDIAPI DWORD WINAPI GetObjectType(HGDIOBJ h);
3064
3065#ifndef NOTEXTMETRIC
3066
3067#define GetOutlineTextMetrics __MINGW_NAME_AW(GetOutlineTextMetrics)
3068
3069 WINGDIAPI UINT WINAPI GetOutlineTextMetricsA(HDC hdc,UINT cjCopy,LPOUTLINETEXTMETRICA potm);
3070 WINGDIAPI UINT WINAPI GetOutlineTextMetricsW(HDC hdc,UINT cjCopy,LPOUTLINETEXTMETRICW potm);
3071#endif
3072
3073#define GetTextExtentPoint __MINGW_NAME_AW(GetTextExtentPoint)
3074#define GetTextExtentPoint32 __MINGW_NAME_AW(GetTextExtentPoint32)
3075#define GetTextExtentExPoint __MINGW_NAME_AW(GetTextExtentExPoint)
3076#define GetCharacterPlacement __MINGW_NAME_AW(GetCharacterPlacement)
3077
3078 WINGDIAPI UINT WINAPI GetPaletteEntries(HPALETTE hpal,UINT iStart,UINT cEntries,LPPALETTEENTRY pPalEntries);
3079 WINGDIAPI COLORREF WINAPI GetPixel(HDC hdc,int x,int y);
3080 WINGDIAPI int WINAPI GetPixelFormat(HDC hdc);
3081 WINGDIAPI int WINAPI GetPolyFillMode(HDC hdc);
3082 WINGDIAPI WINBOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS lpraststat,UINT cjBytes);
3083 WINGDIAPI int WINAPI GetRandomRgn (HDC hdc,HRGN hrgn,INT i);
3084 WINGDIAPI DWORD WINAPI GetRegionData(HRGN hrgn,DWORD nCount,LPRGNDATA lpRgnData);
3085 WINGDIAPI int WINAPI GetRgnBox(HRGN hrgn,LPRECT lprc);
3086 WINGDIAPI HGDIOBJ WINAPI GetStockObject(int i);
3087 WINGDIAPI int WINAPI GetStretchBltMode(HDC hdc);
3088 WINGDIAPI UINT WINAPI GetSystemPaletteEntries(HDC hdc,UINT iStart,UINT cEntries,LPPALETTEENTRY pPalEntries);
3089 WINGDIAPI UINT WINAPI GetSystemPaletteUse(HDC hdc);
3090 WINGDIAPI int WINAPI GetTextCharacterExtra(HDC hdc);
3091 WINGDIAPI UINT WINAPI GetTextAlign(HDC hdc);
3092 WINGDIAPI COLORREF WINAPI GetTextColor(HDC hdc);
3093 WINGDIAPI WINBOOL WINAPI GetTextExtentPointA(HDC hdc,LPCSTR lpString,int c,LPSIZE lpsz);
3094 WINGDIAPI WINBOOL WINAPI GetTextExtentPointW(HDC hdc,LPCWSTR lpString,int c,LPSIZE lpsz);
3095 WINGDIAPI WINBOOL WINAPI GetTextExtentPoint32A(HDC hdc,LPCSTR lpString,int c,LPSIZE psizl);
3096 WINGDIAPI WINBOOL WINAPI GetTextExtentPoint32W(HDC hdc,LPCWSTR lpString,int c,LPSIZE psizl);
3097 WINGDIAPI WINBOOL WINAPI GetTextExtentExPointA(HDC hdc,LPCSTR lpszString,int cchString,int nMaxExtent,LPINT lpnFit,LPINT lpnDx,LPSIZE lpSize);
3098 WINGDIAPI WINBOOL WINAPI GetTextExtentExPointW(HDC hdc,LPCWSTR lpszString,int cchString,int nMaxExtent,LPINT lpnFit,LPINT lpnDx,LPSIZE lpSize);
3099 WINGDIAPI int WINAPI GetTextCharset(HDC hdc);
3100 WINGDIAPI int WINAPI GetTextCharsetInfo(HDC hdc,LPFONTSIGNATURE lpSig,DWORD dwFlags);
3101 WINGDIAPI WINBOOL WINAPI TranslateCharsetInfo(DWORD *lpSrc,LPCHARSETINFO lpCs,DWORD dwFlags);
3102 WINGDIAPI DWORD WINAPI GetFontLanguageInfo(HDC hdc);
3103 WINGDIAPI DWORD WINAPI GetCharacterPlacementA(HDC hdc,LPCSTR lpString,int nCount,int nMexExtent,LPGCP_RESULTSA lpResults,DWORD dwFlags);
3104 WINGDIAPI DWORD WINAPI GetCharacterPlacementW(HDC hdc,LPCWSTR lpString,int nCount,int nMexExtent,LPGCP_RESULTSW lpResults,DWORD dwFlags);
3105
3106 typedef struct tagWCRANGE {
3107 WCHAR wcLow;
3108 USHORT cGlyphs;
3109 } WCRANGE,*PWCRANGE,*LPWCRANGE;
3110
3111 typedef struct tagGLYPHSET {
3112 DWORD cbThis;
3113 DWORD flAccel;
3114 DWORD cGlyphsSupported;
3115 DWORD cRanges;
3116 WCRANGE ranges[1];
3117 } GLYPHSET,*PGLYPHSET,*LPGLYPHSET;
3118
3119#define GS_8BIT_INDICES 0x00000001
3120
3121#define GGI_MARK_NONEXISTING_GLYPHS 0X0001
3122
3123#define GetGlyphIndices __MINGW_NAME_AW(GetGlyphIndices)
3124
3125 WINGDIAPI DWORD WINAPI GetFontUnicodeRanges(HDC hdc,LPGLYPHSET lpgs);
3126 WINGDIAPI DWORD WINAPI GetGlyphIndicesA(HDC hdc,LPCSTR lpstr,int c,LPWORD pgi,DWORD fl);
3127 WINGDIAPI DWORD WINAPI GetGlyphIndicesW(HDC hdc,LPCWSTR lpstr,int c,LPWORD pgi,DWORD fl);
3128 WINGDIAPI WINBOOL WINAPI GetTextExtentPointI(HDC hdc,LPWORD pgiIn,int cgi,LPSIZE psize);
3129 WINGDIAPI WINBOOL WINAPI GetTextExtentExPointI (HDC hdc,LPWORD lpwszString,int cwchString,int nMaxExtent,LPINT lpnFit,LPINT lpnDx,LPSIZE lpSize);
3130 WINGDIAPI WINBOOL WINAPI GetCharWidthI(HDC hdc,UINT giFirst,UINT cgi,LPWORD pgi,LPINT piWidths);
3131 WINGDIAPI WINBOOL WINAPI GetCharABCWidthsI(HDC hdc,UINT giFirst,UINT cgi,LPWORD pgi,LPABC pabc);
3132
3133#define STAMP_DESIGNVECTOR (0x8000000 + 'd' + ('v' << 8))
3134#define STAMP_AXESLIST (0x8000000 + 'a' + ('l' << 8))
3135#define STAMP_TRUETYPE_VARIATION (0x8000000 + 't' + ('v' << 8))
3136#define STAMP_CFF2 (0x8000000 + 'c' + ('v' << 8))
3137#define MM_MAX_NUMAXES 16
3138
3139 typedef struct tagDESIGNVECTOR {
3140 DWORD dvReserved;
3141 DWORD dvNumAxes;
3142 LONG dvValues[MM_MAX_NUMAXES];
3143 } DESIGNVECTOR,*PDESIGNVECTOR,*LPDESIGNVECTOR;
3144
3145#define AddFontResourceEx __MINGW_NAME_AW(AddFontResourceEx)
3146#define RemoveFontResourceEx __MINGW_NAME_AW(RemoveFontResourceEx)
3147
3148 WINGDIAPI int WINAPI AddFontResourceExA(LPCSTR name,DWORD fl,PVOID res);
3149 WINGDIAPI int WINAPI AddFontResourceExW(LPCWSTR name,DWORD fl,PVOID res);
3150 WINGDIAPI WINBOOL WINAPI RemoveFontResourceExA(LPCSTR name,DWORD fl,PVOID pdv);
3151 WINGDIAPI WINBOOL WINAPI RemoveFontResourceExW(LPCWSTR name,DWORD fl,PVOID pdv);
3152 WINGDIAPI HANDLE WINAPI AddFontMemResourceEx(PVOID pFileView,DWORD cjSize,PVOID pvResrved,DWORD *pNumFonts);
3153 WINGDIAPI WINBOOL WINAPI RemoveFontMemResourceEx(HANDLE h);
3154
3155#define FR_PRIVATE 0x10
3156#define FR_NOT_ENUM 0x20
3157
3158#define MM_MAX_AXES_NAMELEN 16
3159
3160 typedef struct tagAXISINFOA {
3161 LONG axMinValue;
3162 LONG axMaxValue;
3163 BYTE axAxisName[MM_MAX_AXES_NAMELEN];
3164 } AXISINFOA,*PAXISINFOA,*LPAXISINFOA;
3165
3166 typedef struct tagAXISINFOW {
3167 LONG axMinValue;
3168 LONG axMaxValue;
3169 WCHAR axAxisName[MM_MAX_AXES_NAMELEN];
3170 } AXISINFOW,*PAXISINFOW,*LPAXISINFOW;
3171
3172 __MINGW_TYPEDEF_AW(AXISINFO)
3173 __MINGW_TYPEDEF_AW(PAXISINFO)
3174 __MINGW_TYPEDEF_AW(LPAXISINFO)
3175
3176 typedef struct tagAXESLISTA {
3177 DWORD axlReserved;
3178 DWORD axlNumAxes;
3179 AXISINFOA axlAxisInfo[MM_MAX_NUMAXES];
3180 } AXESLISTA,*PAXESLISTA,*LPAXESLISTA;
3181
3182 typedef struct tagAXESLISTW {
3183 DWORD axlReserved;
3184 DWORD axlNumAxes;
3185 AXISINFOW axlAxisInfo[MM_MAX_NUMAXES];
3186 } AXESLISTW,*PAXESLISTW,*LPAXESLISTW;
3187
3188 __MINGW_TYPEDEF_AW(AXESLIST)
3189 __MINGW_TYPEDEF_AW(PAXESLIST)
3190 __MINGW_TYPEDEF_AW(LPAXESLIST)
3191
3192 typedef struct tagENUMLOGFONTEXDVA {
3193 ENUMLOGFONTEXA elfEnumLogfontEx;
3194 DESIGNVECTOR elfDesignVector;
3195 } ENUMLOGFONTEXDVA,*PENUMLOGFONTEXDVA,*LPENUMLOGFONTEXDVA;
3196
3197 typedef struct tagENUMLOGFONTEXDVW {
3198 ENUMLOGFONTEXW elfEnumLogfontEx;
3199 DESIGNVECTOR elfDesignVector;
3200 } ENUMLOGFONTEXDVW,*PENUMLOGFONTEXDVW,*LPENUMLOGFONTEXDVW;
3201
3202 __MINGW_TYPEDEF_AW(ENUMLOGFONTEXDV)
3203 __MINGW_TYPEDEF_AW(PENUMLOGFONTEXDV)
3204 __MINGW_TYPEDEF_AW(LPENUMLOGFONTEXDV)
3205
3206#define CreateFontIndirectEx __MINGW_NAME_AW(CreateFontIndirectEx)
3207
3208 WINGDIAPI HFONT WINAPI CreateFontIndirectExA(CONST ENUMLOGFONTEXDVA *);
3209 WINGDIAPI HFONT WINAPI CreateFontIndirectExW(CONST ENUMLOGFONTEXDVW *);
3210
3211#ifndef NOTEXTMETRIC
3212 typedef struct tagENUMTEXTMETRICA {
3213 NEWTEXTMETRICEXA etmNewTextMetricEx;
3214 AXESLISTA etmAxesList;
3215 } ENUMTEXTMETRICA,*PENUMTEXTMETRICA,*LPENUMTEXTMETRICA;
3216 typedef struct tagENUMTEXTMETRICW
3217 {
3218 NEWTEXTMETRICEXW etmNewTextMetricEx;
3219 AXESLISTW etmAxesList;
3220 } ENUMTEXTMETRICW,*PENUMTEXTMETRICW,*LPENUMTEXTMETRICW;
3221
3222 __MINGW_TYPEDEF_AW(ENUMTEXTMETRIC)
3223 __MINGW_TYPEDEF_AW(PENUMTEXTMETRIC)
3224 __MINGW_TYPEDEF_AW(LPENUMTEXTMETRIC)
3225#endif
3226
3227#define ResetDC __MINGW_NAME_AW(ResetDC)
3228#define RemoveFontResource __MINGW_NAME_AW(RemoveFontResource)
3229
3230 WINGDIAPI WINBOOL WINAPI GetViewportExtEx(HDC hdc,LPSIZE lpsize);
3231 WINGDIAPI WINBOOL WINAPI GetViewportOrgEx(HDC hdc,LPPOINT lppoint);
3232 WINGDIAPI WINBOOL WINAPI GetWindowExtEx(HDC hdc,LPSIZE lpsize);
3233 WINGDIAPI WINBOOL WINAPI GetWindowOrgEx(HDC hdc,LPPOINT lppoint);
3234 WINGDIAPI int WINAPI IntersectClipRect(HDC hdc,int left,int top,int right,int bottom);
3235 WINGDIAPI WINBOOL WINAPI InvertRgn(HDC hdc,HRGN hrgn);
3236 WINGDIAPI WINBOOL WINAPI LineDDA(int xStart,int yStart,int xEnd,int yEnd,LINEDDAPROC lpProc,LPARAM data);
3237 WINGDIAPI WINBOOL WINAPI LineTo(HDC hdc,int x,int y);
3238 WINGDIAPI WINBOOL WINAPI MaskBlt(HDC hdcDest,int xDest,int yDest,int width,int height,HDC hdcSrc,int xSrc,int ySrc,HBITMAP hbmMask,int xMask,int yMask,DWORD rop);
3239 WINGDIAPI WINBOOL WINAPI PlgBlt(HDC hdcDest,CONST POINT *lpPoint,HDC hdcSrc,int xSrc,int ySrc,int width,int height,HBITMAP hbmMask,int xMask,int yMask);
3240 WINGDIAPI int WINAPI OffsetClipRgn(HDC hdc,int x,int y);
3241 WINGDIAPI int WINAPI OffsetRgn(HRGN hrgn,int x,int y);
3242 WINGDIAPI WINBOOL WINAPI PatBlt(HDC hdc,int x,int y,int w,int h,DWORD rop);
3243 WINGDIAPI WINBOOL WINAPI Pie(HDC hdc,int left,int top,int right,int bottom,int xr1,int yr1,int xr2,int yr2);
3244 WINGDIAPI WINBOOL WINAPI PlayMetaFile(HDC hdc,HMETAFILE hmf);
3245 WINGDIAPI WINBOOL WINAPI PaintRgn(HDC hdc,HRGN hrgn);
3246 WINGDIAPI WINBOOL WINAPI PolyPolygon(HDC hdc,CONST POINT *apt,CONST INT *asz,int csz);
3247 WINGDIAPI WINBOOL WINAPI PtInRegion(HRGN hrgn,int x,int y);
3248 WINGDIAPI WINBOOL WINAPI PtVisible(HDC hdc,int x,int y);
3249 WINGDIAPI WINBOOL WINAPI RectInRegion(HRGN hrgn,CONST RECT *lprect);
3250 WINGDIAPI WINBOOL WINAPI RectVisible(HDC hdc,CONST RECT *lprect);
3251 WINGDIAPI WINBOOL WINAPI Rectangle(HDC hdc,int left,int top,int right,int bottom);
3252 WINGDIAPI WINBOOL WINAPI RestoreDC(HDC hdc,int nSavedDC);
3253 WINGDIAPI HDC WINAPI ResetDCA(HDC hdc,CONST DEVMODEA *lpdm);
3254 WINGDIAPI HDC WINAPI ResetDCW(HDC hdc,CONST DEVMODEW *lpdm);
3255 WINGDIAPI UINT WINAPI RealizePalette(HDC hdc);
3256 WINGDIAPI WINBOOL WINAPI RemoveFontResourceA(LPCSTR lpFileName);
3257 WINGDIAPI WINBOOL WINAPI RemoveFontResourceW(LPCWSTR lpFileName);
3258 WINGDIAPI WINBOOL WINAPI RoundRect(HDC hdc,int left,int top,int right,int bottom,int width,int height);
3259 WINGDIAPI WINBOOL WINAPI ResizePalette(HPALETTE hpal,UINT n);
3260 WINGDIAPI int WINAPI SaveDC(HDC hdc);
3261 WINGDIAPI int WINAPI SelectClipRgn(HDC hdc,HRGN hrgn);
3262 WINGDIAPI int WINAPI ExtSelectClipRgn(HDC hdc,HRGN hrgn,int mode);
3263 WINGDIAPI int WINAPI SetMetaRgn(HDC hdc);
3264 WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC hdc,HGDIOBJ h);
3265 WINGDIAPI HPALETTE WINAPI SelectPalette(HDC hdc,HPALETTE hPal,WINBOOL bForceBkgd);
3266 WINGDIAPI COLORREF WINAPI SetBkColor(HDC hdc,COLORREF color);
3267 WINGDIAPI COLORREF WINAPI SetDCBrushColor(HDC hdc,COLORREF color);
3268 WINGDIAPI COLORREF WINAPI SetDCPenColor(HDC hdc,COLORREF color);
3269 WINGDIAPI int WINAPI SetBkMode(HDC hdc,int mode);
3270 WINGDIAPI LONG WINAPI SetBitmapBits(HBITMAP hbm,DWORD cb,CONST VOID *pvBits);
3271 WINGDIAPI UINT WINAPI SetBoundsRect(HDC hdc,CONST RECT *lprect,UINT flags);
3272 WINGDIAPI int WINAPI SetDIBits(HDC hdc,HBITMAP hbm,UINT start,UINT cLines,CONST VOID *lpBits,CONST BITMAPINFO *lpbmi,UINT ColorUse);
3273 WINGDIAPI int WINAPI SetDIBitsToDevice(HDC hdc,int xDest,int yDest,DWORD w,DWORD h,int xSrc,int ySrc,UINT StartScan,UINT cLines,CONST VOID *lpvBits,CONST BITMAPINFO *lpbmi,UINT ColorUse);
3274 WINGDIAPI DWORD WINAPI SetMapperFlags(HDC hdc,DWORD flags);
3275 WINGDIAPI int WINAPI SetGraphicsMode(HDC hdc,int iMode);
3276 WINGDIAPI int WINAPI SetMapMode(HDC hdc,int iMode);
3277 WINGDIAPI DWORD WINAPI SetLayout(HDC hdc,DWORD l);
3278 WINGDIAPI DWORD WINAPI GetLayout(HDC hdc);
3279 WINGDIAPI HMETAFILE WINAPI SetMetaFileBitsEx(UINT cbBuffer,CONST BYTE *lpData);
3280 WINGDIAPI UINT WINAPI SetPaletteEntries(HPALETTE hpal,UINT iStart,UINT cEntries,CONST PALETTEENTRY *pPalEntries);
3281 WINGDIAPI COLORREF WINAPI SetPixel(HDC hdc,int x,int y,COLORREF color);
3282 WINGDIAPI WINBOOL WINAPI SetPixelV(HDC hdc,int x,int y,COLORREF color);
3283 WINGDIAPI WINBOOL WINAPI SetPixelFormat(HDC hdc,int format,CONST PIXELFORMATDESCRIPTOR *ppfd);
3284 WINGDIAPI int WINAPI SetPolyFillMode(HDC hdc,int mode);
3285 WINGDIAPI WINBOOL WINAPI StretchBlt(HDC hdcDest,int xDest,int yDest,int wDest,int hDest,HDC hdcSrc,int xSrc,int ySrc,int wSrc,int hSrc,DWORD rop);
3286 WINGDIAPI WINBOOL WINAPI SetRectRgn(HRGN hrgn,int left,int top,int right,int bottom);
3287 WINGDIAPI int WINAPI StretchDIBits(HDC hdc,int xDest,int yDest,int DestWidth,int DestHeight,int xSrc,int ySrc,int SrcWidth,int SrcHeight,CONST VOID *lpBits,CONST BITMAPINFO *lpbmi,UINT iUsage,DWORD rop);
3288 WINGDIAPI int WINAPI SetROP2(HDC hdc,int rop2);
3289 WINGDIAPI int WINAPI SetStretchBltMode(HDC hdc,int mode);
3290 WINGDIAPI UINT WINAPI SetSystemPaletteUse(HDC hdc,UINT use);
3291 WINGDIAPI int WINAPI SetTextCharacterExtra(HDC hdc,int extra);
3292 WINGDIAPI COLORREF WINAPI SetTextColor(HDC hdc,COLORREF color);
3293 WINGDIAPI UINT WINAPI SetTextAlign(HDC hdc,UINT align);
3294 WINGDIAPI WINBOOL WINAPI SetTextJustification(HDC hdc,int extra,int count);
3295 WINGDIAPI WINBOOL WINAPI UpdateColors(HDC hdc);
3296
3297#if defined (COMBOX_SANDBOX) && _WIN32_WINNT >= 0x0600
3298 typedef PVOID (WINAPI *GDIMARSHALLOC)(DWORD dwSize, LPVOID pGdiRef);
3299 typedef HRESULT (WINAPI *DDRAWMARSHCALLBACKMARSHAL)(HGDIOBJ hGdiObj,
3300 LPVOID pGdiRef, LPVOID *ppDDrawRef);
3301 typedef HRESULT (WINAPI *DDRAWMARSHCALLBACKUNMARSHAL)(LPVOID pData, HDC *phdc,
3302 LPVOID *ppDDrawRef);
3303 typedef HRESULT (WINAPI *DDRAWMARSHCALLBACKRELEASE)(LPVOID pDDrawRef);
3304
3305#define GDIREGISTERDDRAWPACKETVERSION 0x1
3306
3307 typedef struct {
3308 DWORD dwSize;
3309 DWORD dwVersion;
3310 DDRAWMARSHCALLBACKMARSHAL pfnDdMarshal;
3311 DDRAWMARSHCALLBACKUNMARSHAL pfnDdUnmarshal;
3312 DDRAWMARSHCALLBACKRELEASE pfnDdRelease;
3313 } GDIREGISTERDDRAWPACKET, *PGDIREGISTERDDRAWPACKET;
3314
3315WINGDIAPI BOOL WINAPI GdiRegisterDdraw(PGDIREGISTERDDRAWPACKET pPacket,
3316 GDIMARSHALLOC *ppfnGdiAlloc);
3317WINGDIAPI ULONG WINAPI GdiMarshalSize(VOID);
3318WINGDIAPI VOID WINAPI GdiMarshal(DWORD dwProcessIdTo, HGDIOBJ hGdiObj,
3319 PVOID pData, ULONG ulFlags);
3320WINGDIAPI HGDIOBJ WINAPI GdiUnmarshal(PVOID pData, ULONG ulFlags);
3321#endif
3322
3323#endif /* WINAPI_PARTITION_DESKTOP */
3324
3325#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
3326 typedef USHORT COLOR16;
3327
3328 typedef struct _TRIVERTEX {
3329 LONG x;
3330 LONG y;
3331 COLOR16 Red;
3332 COLOR16 Green;
3333 COLOR16 Blue;
3334 COLOR16 Alpha;
3335 } TRIVERTEX,*PTRIVERTEX,*LPTRIVERTEX;
3336#endif
3337#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
3338 typedef struct _GRADIENT_TRIANGLE {
3339 ULONG Vertex1;
3340 ULONG Vertex2;
3341 ULONG Vertex3;
3342 } GRADIENT_TRIANGLE,*PGRADIENT_TRIANGLE,*LPGRADIENT_TRIANGLE;
3343
3344 typedef struct _GRADIENT_RECT {
3345 ULONG UpperLeft;
3346 ULONG LowerRight;
3347 } GRADIENT_RECT,*PGRADIENT_RECT,*LPGRADIENT_RECT;
3348#endif
3349#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
3350 typedef struct _BLENDFUNCTION {
3351 BYTE BlendOp;
3352 BYTE BlendFlags;
3353 BYTE SourceConstantAlpha;
3354 BYTE AlphaFormat;
3355 } BLENDFUNCTION,*PBLENDFUNCTION;
3356#endif
3357#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
3358#define AC_SRC_OVER 0x00
3359#define AC_SRC_ALPHA 0x01
3360
3361 WINGDIAPI WINBOOL WINAPI AlphaBlend(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,BLENDFUNCTION ftn);
3362 WINGDIAPI WINBOOL WINAPI GdiAlphaBlend(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,BLENDFUNCTION ftn);
3363 WINGDIAPI WINBOOL WINAPI TransparentBlt(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,UINT crTransparent);
3364 WINGDIAPI WINBOOL WINAPI GdiTransparentBlt(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,UINT crTransparent);
3365
3366#define GRADIENT_FILL_RECT_H 0x00000000
3367#define GRADIENT_FILL_RECT_V 0x00000001
3368#define GRADIENT_FILL_TRIANGLE 0x00000002
3369#define GRADIENT_FILL_OP_FLAG 0x000000ff
3370
3371 WINGDIAPI WINBOOL WINAPI GradientFill(HDC hdc,PTRIVERTEX pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,ULONG ulMode);
3372 WINGDIAPI WINBOOL WINAPI GdiGradientFill(HDC hdc,PTRIVERTEX pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,ULONG ulMode);
3373
3374#ifndef NOMETAFILE
3375
3376#define CopyEnhMetaFile __MINGW_NAME_AW(CopyEnhMetaFile)
3377#define CreateEnhMetaFile __MINGW_NAME_AW(CreateEnhMetaFile)
3378#define GetEnhMetaFile __MINGW_NAME_AW(GetEnhMetaFile)
3379#define GetEnhMetaFileDescription __MINGW_NAME_AW(GetEnhMetaFileDescription)
3380
3381 WINGDIAPI WINBOOL WINAPI PlayMetaFileRecord(HDC hdc,LPHANDLETABLE lpHandleTable,LPMETARECORD lpMR,UINT noObjs);
3382
3383 typedef int (CALLBACK *MFENUMPROC)(HDC hdc,HANDLETABLE *lpht,METARECORD *lpMR,int nObj,LPARAM lParam);
3384
3385 WINGDIAPI WINBOOL WINAPI EnumMetaFile(HDC hdc,HMETAFILE hmf,MFENUMPROC lpProc,LPARAM lParam);
3386
3387 typedef int (CALLBACK *ENHMFENUMPROC)(HDC hdc,HANDLETABLE *lpht,CONST ENHMETARECORD *lpmr,int hHandles,LPARAM data);
3388
3389 WINGDIAPI HENHMETAFILE WINAPI CloseEnhMetaFile(HDC hdc);
3390 WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE hEnh,LPCSTR lpFileName);
3391 WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE hEnh,LPCWSTR lpFileName);
3392 WINGDIAPI HDC WINAPI CreateEnhMetaFileA(HDC hdc,LPCSTR lpFilename,CONST RECT *lprc,LPCSTR lpDesc);
3393 WINGDIAPI HDC WINAPI CreateEnhMetaFileW(HDC hdc,LPCWSTR lpFilename,CONST RECT *lprc,LPCWSTR lpDesc);
3394 WINGDIAPI WINBOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE hmf);
3395 WINGDIAPI WINBOOL WINAPI EnumEnhMetaFile(HDC hdc,HENHMETAFILE hmf,ENHMFENUMPROC lpProc,LPVOID lpParam,CONST RECT *lpRect);
3396 WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR lpName);
3397 WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR lpName);
3398 WINGDIAPI UINT WINAPI GetEnhMetaFileBits(HENHMETAFILE hEMF,UINT nSize,LPBYTE lpData);
3399 WINGDIAPI UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE hemf,UINT cchBuffer,LPSTR lpDescription);
3400 WINGDIAPI UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE hemf,UINT cchBuffer,LPWSTR lpDescription);
3401 WINGDIAPI UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE hemf,UINT nSize,LPENHMETAHEADER lpEnhMetaHeader);
3402 WINGDIAPI UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE hemf,UINT nNumEntries,LPPALETTEENTRY lpPaletteEntries);
3403 WINGDIAPI UINT WINAPI GetEnhMetaFilePixelFormat(HENHMETAFILE hemf,UINT cbBuffer,PIXELFORMATDESCRIPTOR *ppfd);
3404 WINGDIAPI UINT WINAPI GetWinMetaFileBits(HENHMETAFILE hemf,UINT cbData16,LPBYTE pData16,INT iMapMode,HDC hdcRef);
3405 WINGDIAPI WINBOOL WINAPI PlayEnhMetaFile(HDC hdc,HENHMETAFILE hmf,CONST RECT *lprect);
3406 WINGDIAPI WINBOOL WINAPI PlayEnhMetaFileRecord(HDC hdc,LPHANDLETABLE pht,CONST ENHMETARECORD *pmr,UINT cht);
3407 WINGDIAPI HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT nSize,CONST BYTE *pb);
3408 WINGDIAPI HENHMETAFILE WINAPI SetWinMetaFileBits(UINT nSize,CONST BYTE *lpMeta16Data,HDC hdcRef,CONST METAFILEPICT *lpMFP);
3409 WINGDIAPI WINBOOL WINAPI GdiComment(HDC hdc,UINT nSize,CONST BYTE *lpData);
3410#endif
3411
3412#ifndef NOTEXTMETRIC
3413#define GetTextMetrics __MINGW_NAME_AW(GetTextMetrics)
3414
3415 WINGDIAPI WINBOOL WINAPI GetTextMetricsA(HDC hdc,LPTEXTMETRICA lptm);
3416 WINGDIAPI WINBOOL WINAPI GetTextMetricsW(HDC hdc,LPTEXTMETRICW lptm);
3417#endif
3418
3419 typedef struct tagDIBSECTION {
3420 BITMAP dsBm;
3421 BITMAPINFOHEADER dsBmih;
3422 DWORD dsBitfields[3];
3423 HANDLE dshSection;
3424 DWORD dsOffset;
3425 } DIBSECTION,*LPDIBSECTION,*PDIBSECTION;
3426
3427 WINGDIAPI WINBOOL WINAPI AngleArc(HDC hdc,int x,int y,DWORD r,FLOAT StartAngle,FLOAT SweepAngle);
3428 WINGDIAPI WINBOOL WINAPI PolyPolyline(HDC hdc,CONST POINT *apt,CONST DWORD *asz,DWORD csz);
3429 WINGDIAPI WINBOOL WINAPI GetWorldTransform(HDC hdc,LPXFORM lpxf);
3430 WINGDIAPI WINBOOL WINAPI SetWorldTransform(HDC hdc,CONST XFORM *lpxf);
3431 WINGDIAPI WINBOOL WINAPI ModifyWorldTransform(HDC hdc,CONST XFORM *lpxf,DWORD mode);
3432 WINGDIAPI WINBOOL WINAPI CombineTransform(LPXFORM lpxfOut,CONST XFORM *lpxf1,CONST XFORM *lpxf2);
3433 WINGDIAPI HBITMAP WINAPI CreateDIBSection(HDC hdc,CONST BITMAPINFO *lpbmi,UINT usage,VOID **ppvBits,HANDLE hSection,DWORD offset);
3434 WINGDIAPI UINT WINAPI GetDIBColorTable(HDC hdc,UINT iStart,UINT cEntries,RGBQUAD *prgbq);
3435 WINGDIAPI UINT WINAPI SetDIBColorTable(HDC hdc,UINT iStart,UINT cEntries,CONST RGBQUAD *prgbq);
3436
3437#define GDI_WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8)
3438#define GDI_DIBWIDTHBYTES(bi) (DWORD)GDI_WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount)
3439#define GDI__DIBSIZE(bi) (GDI_DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight)
3440#define GDI_DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(GDI__DIBSIZE(bi)) : GDI__DIBSIZE(bi))
3441
3442#define CA_NEGATIVE 0x0001
3443#define CA_LOG_FILTER 0x0002
3444
3445#define ILLUMINANT_DEVICE_DEFAULT 0
3446#define ILLUMINANT_A 1
3447#define ILLUMINANT_B 2
3448#define ILLUMINANT_C 3
3449#define ILLUMINANT_D50 4
3450#define ILLUMINANT_D55 5
3451#define ILLUMINANT_D65 6
3452#define ILLUMINANT_D75 7
3453#define ILLUMINANT_F2 8
3454#define ILLUMINANT_MAX_INDEX ILLUMINANT_F2
3455
3456#define ILLUMINANT_TUNGSTEN ILLUMINANT_A
3457#define ILLUMINANT_DAYLIGHT ILLUMINANT_C
3458#define ILLUMINANT_FLUORESCENT ILLUMINANT_F2
3459#define ILLUMINANT_NTSC ILLUMINANT_C
3460
3461#define RGB_GAMMA_MIN (WORD)02500
3462#define RGB_GAMMA_MAX (WORD)65000
3463
3464#define REFERENCE_WHITE_MIN (WORD)6000
3465#define REFERENCE_WHITE_MAX (WORD)10000
3466#define REFERENCE_BLACK_MIN (WORD)0
3467#define REFERENCE_BLACK_MAX (WORD)4000
3468
3469#define COLOR_ADJ_MIN (SHORT)-100
3470#define COLOR_ADJ_MAX (SHORT)100
3471
3472 typedef struct tagCOLORADJUSTMENT {
3473 WORD caSize;
3474 WORD caFlags;
3475 WORD caIlluminantIndex;
3476 WORD caRedGamma;
3477 WORD caGreenGamma;
3478 WORD caBlueGamma;
3479 WORD caReferenceBlack;
3480 WORD caReferenceWhite;
3481 SHORT caContrast;
3482 SHORT caBrightness;
3483 SHORT caColorfulness;
3484 SHORT caRedGreenTint;
3485 } COLORADJUSTMENT,*PCOLORADJUSTMENT,*LPCOLORADJUSTMENT;
3486
3487 WINGDIAPI WINBOOL WINAPI SetColorAdjustment(HDC hdc,CONST COLORADJUSTMENT *lpca);
3488 WINGDIAPI WINBOOL WINAPI GetColorAdjustment(HDC hdc,LPCOLORADJUSTMENT lpca);
3489 WINGDIAPI HPALETTE WINAPI CreateHalftonePalette(HDC hdc);
3490
3491 typedef WINBOOL (CALLBACK *ABORTPROC)(HDC,int);
3492
3493 typedef struct _DOCINFOA {
3494 int cbSize;
3495 LPCSTR lpszDocName;
3496 LPCSTR lpszOutput;
3497 LPCSTR lpszDatatype;
3498 DWORD fwType;
3499 } DOCINFOA,*LPDOCINFOA;
3500
3501 typedef struct _DOCINFOW {
3502 int cbSize;
3503 LPCWSTR lpszDocName;
3504 LPCWSTR lpszOutput;
3505 LPCWSTR lpszDatatype;
3506 DWORD fwType;
3507 } DOCINFOW,*LPDOCINFOW;
3508
3509 __MINGW_TYPEDEF_AW(DOCINFO)
3510 __MINGW_TYPEDEF_AW(LPDOCINFO)
3511
3512#define DI_APPBANDING 0x00000001
3513#define DI_ROPS_READ_DESTINATION 0x00000002
3514
3515#define StartDoc __MINGW_NAME_AW(StartDoc)
3516#define GetObject __MINGW_NAME_AW(GetObject)
3517#define TextOut __MINGW_NAME_AW(TextOut)
3518#define ExtTextOut __MINGW_NAME_AW(ExtTextOut)
3519#define PolyTextOut __MINGW_NAME_AW(PolyTextOut)
3520#define GetTextFace __MINGW_NAME_AW(GetTextFace)
3521
3522 WINGDIAPI int WINAPI StartDocA(HDC hdc,CONST DOCINFOA *lpdi);
3523 WINGDIAPI int WINAPI StartDocW(HDC hdc,CONST DOCINFOW *lpdi);
3524 WINGDIAPI int WINAPI EndDoc(HDC hdc);
3525 WINGDIAPI int WINAPI StartPage(HDC hdc);
3526 WINGDIAPI int WINAPI EndPage(HDC hdc);
3527 WINGDIAPI int WINAPI AbortDoc(HDC hdc);
3528 WINGDIAPI int WINAPI SetAbortProc(HDC hdc,ABORTPROC lpProc);
3529 WINGDIAPI WINBOOL WINAPI AbortPath(HDC hdc);
3530 WINGDIAPI WINBOOL WINAPI ArcTo(HDC hdc,int left,int top,int right,int bottom,int xr1,int yr1,int xr2,int yr2);
3531 WINGDIAPI WINBOOL WINAPI BeginPath(HDC hdc);
3532 WINGDIAPI WINBOOL WINAPI CloseFigure(HDC hdc);
3533 WINGDIAPI WINBOOL WINAPI EndPath(HDC hdc);
3534 WINGDIAPI WINBOOL WINAPI FillPath(HDC hdc);
3535 WINGDIAPI WINBOOL WINAPI FlattenPath(HDC hdc);
3536 WINGDIAPI int WINAPI GetPath(HDC hdc,LPPOINT apt,LPBYTE aj,int cpt);
3537 WINGDIAPI HRGN WINAPI PathToRegion(HDC hdc);
3538 WINGDIAPI WINBOOL WINAPI PolyDraw(HDC hdc,CONST POINT *apt,CONST BYTE *aj,int cpt);
3539 WINGDIAPI WINBOOL WINAPI SelectClipPath(HDC hdc,int mode);
3540 WINGDIAPI int WINAPI SetArcDirection(HDC hdc,int dir);
3541 WINGDIAPI WINBOOL WINAPI SetMiterLimit(HDC hdc,FLOAT limit,PFLOAT old);
3542 WINGDIAPI WINBOOL WINAPI StrokeAndFillPath(HDC hdc);
3543 WINGDIAPI WINBOOL WINAPI StrokePath(HDC hdc);
3544 WINGDIAPI WINBOOL WINAPI WidenPath(HDC hdc);
3545 WINGDIAPI HPEN WINAPI ExtCreatePen(DWORD iPenStyle,DWORD cWidth,CONST LOGBRUSH *plbrush,DWORD cStyle,CONST DWORD *pstyle);
3546 WINGDIAPI WINBOOL WINAPI GetMiterLimit(HDC hdc,PFLOAT plimit);
3547 WINGDIAPI int WINAPI GetArcDirection(HDC hdc);
3548 WINGDIAPI int WINAPI GetObjectA(HANDLE h,int c,LPVOID pv);
3549 WINGDIAPI int WINAPI GetObjectW(HANDLE h,int c,LPVOID pv);
3550 WINGDIAPI WINBOOL WINAPI MoveToEx(HDC hdc,int x,int y,LPPOINT lppt);
3551 WINGDIAPI WINBOOL WINAPI TextOutA(HDC hdc,int x,int y,LPCSTR lpString,int c);
3552 WINGDIAPI WINBOOL WINAPI TextOutW(HDC hdc,int x,int y,LPCWSTR lpString,int c);
3553 WINGDIAPI WINBOOL WINAPI ExtTextOutA(HDC hdc,int x,int y,UINT options,CONST RECT *lprect,LPCSTR lpString,UINT c,CONST INT *lpDx);
3554 WINGDIAPI WINBOOL WINAPI ExtTextOutW(HDC hdc,int x,int y,UINT options,CONST RECT *lprect,LPCWSTR lpString,UINT c,CONST INT *lpDx);
3555 WINGDIAPI WINBOOL WINAPI PolyTextOutA(HDC hdc,CONST POLYTEXTA *ppt,int nstrings);
3556 WINGDIAPI WINBOOL WINAPI PolyTextOutW(HDC hdc,CONST POLYTEXTW *ppt,int nstrings);
3557 WINGDIAPI HRGN WINAPI CreatePolygonRgn(CONST POINT *pptl,int cPoint,int iMode);
3558 WINGDIAPI WINBOOL WINAPI DPtoLP(HDC hdc,LPPOINT lppt,int c);
3559 WINGDIAPI WINBOOL WINAPI LPtoDP(HDC hdc,LPPOINT lppt,int c);
3560 WINGDIAPI WINBOOL WINAPI Polygon(HDC hdc,CONST POINT *apt,int cpt);
3561 WINGDIAPI WINBOOL WINAPI Polyline(HDC hdc,CONST POINT *apt,int cpt);
3562 WINGDIAPI WINBOOL WINAPI PolyBezier(HDC hdc,CONST POINT *apt,DWORD cpt);
3563 WINGDIAPI WINBOOL WINAPI PolyBezierTo(HDC hdc,CONST POINT *apt,DWORD cpt);
3564 WINGDIAPI WINBOOL WINAPI PolylineTo(HDC hdc,CONST POINT *apt,DWORD cpt);
3565 WINGDIAPI WINBOOL WINAPI SetViewportExtEx(HDC hdc,int x,int y,LPSIZE lpsz);
3566 WINGDIAPI WINBOOL WINAPI SetViewportOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
3567 WINGDIAPI WINBOOL WINAPI SetWindowExtEx(HDC hdc,int x,int y,LPSIZE lpsz);
3568 WINGDIAPI WINBOOL WINAPI SetWindowOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
3569 WINGDIAPI WINBOOL WINAPI OffsetViewportOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
3570 WINGDIAPI WINBOOL WINAPI OffsetWindowOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
3571 WINGDIAPI WINBOOL WINAPI ScaleViewportExtEx(HDC hdc,int xn,int dx,int yn,int yd,LPSIZE lpsz);
3572 WINGDIAPI WINBOOL WINAPI ScaleWindowExtEx(HDC hdc,int xn,int xd,int yn,int yd,LPSIZE lpsz);
3573 WINGDIAPI WINBOOL WINAPI SetBitmapDimensionEx(HBITMAP hbm,int w,int h,LPSIZE lpsz);
3574 WINGDIAPI WINBOOL WINAPI SetBrushOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
3575 WINGDIAPI int WINAPI GetTextFaceA(HDC hdc,int c,LPSTR lpName);
3576 WINGDIAPI int WINAPI GetTextFaceW(HDC hdc,int c,LPWSTR lpName);
3577
3578#define FONTMAPPER_MAX 10
3579
3580 typedef struct tagKERNINGPAIR {
3581 WORD wFirst;
3582 WORD wSecond;
3583 int iKernAmount;
3584 } KERNINGPAIR,*LPKERNINGPAIR;
3585
3586#define GetKerningPairs __MINGW_NAME_AW(GetKerningPairs)
3587
3588 WINGDIAPI DWORD WINAPI GetKerningPairsA(HDC hdc,DWORD nPairs,LPKERNINGPAIR lpKernPair);
3589 WINGDIAPI DWORD WINAPI GetKerningPairsW(HDC hdc,DWORD nPairs,LPKERNINGPAIR lpKernPair);
3590 WINGDIAPI WINBOOL WINAPI GetDCOrgEx(HDC hdc,LPPOINT lppt);
3591 WINGDIAPI WINBOOL WINAPI FixBrushOrgEx(HDC hdc,int x,int y,LPPOINT ptl);
3592 WINGDIAPI WINBOOL WINAPI UnrealizeObject(HGDIOBJ h);
3593 WINGDIAPI WINBOOL WINAPI GdiFlush(void);
3594 WINGDIAPI DWORD WINAPI GdiSetBatchLimit(DWORD dw);
3595 WINGDIAPI DWORD WINAPI GdiGetBatchLimit(void);
3596
3597#define ICM_OFF 1
3598#define ICM_ON 2
3599#define ICM_QUERY 3
3600#define ICM_DONE_OUTSIDEDC 4
3601
3602 typedef int (CALLBACK *ICMENUMPROCA)(LPSTR,LPARAM);
3603 typedef int (CALLBACK *ICMENUMPROCW)(LPWSTR,LPARAM);
3604
3605#define ICMENUMPROC __MINGW_NAME_AW(ICMENUMPROC)
3606#define EnumICMProfiles __MINGW_NAME_AW(EnumICMProfiles)
3607#define UpdateICMRegKey __MINGW_NAME_AW(UpdateICMRegKey)
3608#define GetLogColorSpace __MINGW_NAME_AW(GetLogColorSpace)
3609#define CreateColorSpace __MINGW_NAME_AW(CreateColorSpace)
3610#define GetICMProfile __MINGW_NAME_AW(GetICMProfile)
3611#define SetICMProfile __MINGW_NAME_AW(SetICMProfile)
3612
3613 WINGDIAPI int WINAPI SetICMMode(HDC hdc,int mode);
3614 WINGDIAPI WINBOOL WINAPI CheckColorsInGamut(HDC hdc,LPVOID lpRGBTriple,LPVOID dlpBuffer,DWORD nCount);
3615 WINGDIAPI HCOLORSPACE WINAPI GetColorSpace(HDC hdc);
3616 WINGDIAPI WINBOOL WINAPI GetLogColorSpaceA(HCOLORSPACE hColorSpace,LPLOGCOLORSPACEA lpBuffer,DWORD nSize);
3617 WINGDIAPI WINBOOL WINAPI GetLogColorSpaceW(HCOLORSPACE hColorSpace,LPLOGCOLORSPACEW lpBuffer,DWORD nSize);
3618 WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA lplcs);
3619 WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW lplcs);
3620 WINGDIAPI HCOLORSPACE WINAPI SetColorSpace(HDC hdc,HCOLORSPACE hcs);
3621 WINGDIAPI WINBOOL WINAPI DeleteColorSpace(HCOLORSPACE hcs);
3622 WINGDIAPI WINBOOL WINAPI GetICMProfileA(HDC hdc,LPDWORD pBufSize,LPSTR pszFilename);
3623 WINGDIAPI WINBOOL WINAPI GetICMProfileW(HDC hdc,LPDWORD pBufSize,LPWSTR pszFilename);
3624 WINGDIAPI WINBOOL WINAPI SetICMProfileA(HDC hdc,LPSTR lpFileName);
3625 WINGDIAPI WINBOOL WINAPI SetICMProfileW(HDC hdc,LPWSTR lpFileName);
3626 WINGDIAPI WINBOOL WINAPI GetDeviceGammaRamp(HDC hdc,LPVOID lpRamp);
3627 WINGDIAPI WINBOOL WINAPI SetDeviceGammaRamp(HDC hdc,LPVOID lpRamp);
3628 WINGDIAPI WINBOOL WINAPI ColorMatchToTarget(HDC hdc,HDC hdcTarget,DWORD action);
3629 WINGDIAPI int WINAPI EnumICMProfilesA(HDC hdc,ICMENUMPROCA lpProc,LPARAM lParam);
3630 WINGDIAPI int WINAPI EnumICMProfilesW(HDC hdc,ICMENUMPROCW lpProc,LPARAM lParam);
3631 WINGDIAPI WINBOOL WINAPI UpdateICMRegKeyA(DWORD reserved,LPSTR lpszCMID,LPSTR lpszFileName,UINT command);
3632 WINGDIAPI WINBOOL WINAPI UpdateICMRegKeyW(DWORD reserved,LPWSTR lpszCMID,LPWSTR lpszFileName,UINT command);
3633 WINGDIAPI WINBOOL WINAPI ColorCorrectPalette(HDC hdc,HPALETTE hPal,DWORD deFirst,DWORD num);
3634
3635#ifndef NOMETAFILE
3636
3637#define ENHMETA_SIGNATURE 0x464D4520
3638#define ENHMETA_STOCK_OBJECT 0x80000000
3639
3640#define EMR_HEADER 1
3641#define EMR_POLYBEZIER 2
3642#define EMR_POLYGON 3
3643#define EMR_POLYLINE 4
3644#define EMR_POLYBEZIERTO 5
3645#define EMR_POLYLINETO 6
3646#define EMR_POLYPOLYLINE 7
3647#define EMR_POLYPOLYGON 8
3648#define EMR_SETWINDOWEXTEX 9
3649#define EMR_SETWINDOWORGEX 10
3650#define EMR_SETVIEWPORTEXTEX 11
3651#define EMR_SETVIEWPORTORGEX 12
3652#define EMR_SETBRUSHORGEX 13
3653#define EMR_EOF 14
3654#define EMR_SETPIXELV 15
3655#define EMR_SETMAPPERFLAGS 16
3656#define EMR_SETMAPMODE 17
3657#define EMR_SETBKMODE 18
3658#define EMR_SETPOLYFILLMODE 19
3659#define EMR_SETROP2 20
3660#define EMR_SETSTRETCHBLTMODE 21
3661#define EMR_SETTEXTALIGN 22
3662#define EMR_SETCOLORADJUSTMENT 23
3663#define EMR_SETTEXTCOLOR 24
3664#define EMR_SETBKCOLOR 25
3665#define EMR_OFFSETCLIPRGN 26
3666#define EMR_MOVETOEX 27
3667#define EMR_SETMETARGN 28
3668#define EMR_EXCLUDECLIPRECT 29
3669#define EMR_INTERSECTCLIPRECT 30
3670#define EMR_SCALEVIEWPORTEXTEX 31
3671#define EMR_SCALEWINDOWEXTEX 32
3672#define EMR_SAVEDC 33
3673#define EMR_RESTOREDC 34
3674#define EMR_SETWORLDTRANSFORM 35
3675#define EMR_MODIFYWORLDTRANSFORM 36
3676#define EMR_SELECTOBJECT 37
3677#define EMR_CREATEPEN 38
3678#define EMR_CREATEBRUSHINDIRECT 39
3679#define EMR_DELETEOBJECT 40
3680#define EMR_ANGLEARC 41
3681#define EMR_ELLIPSE 42
3682#define EMR_RECTANGLE 43
3683#define EMR_ROUNDRECT 44
3684#define EMR_ARC 45
3685#define EMR_CHORD 46
3686#define EMR_PIE 47
3687#define EMR_SELECTPALETTE 48
3688#define EMR_CREATEPALETTE 49
3689#define EMR_SETPALETTEENTRIES 50
3690#define EMR_RESIZEPALETTE 51
3691#define EMR_REALIZEPALETTE 52
3692#define EMR_EXTFLOODFILL 53
3693#define EMR_LINETO 54
3694#define EMR_ARCTO 55
3695#define EMR_POLYDRAW 56
3696#define EMR_SETARCDIRECTION 57
3697#define EMR_SETMITERLIMIT 58
3698#define EMR_BEGINPATH 59
3699#define EMR_ENDPATH 60
3700#define EMR_CLOSEFIGURE 61
3701#define EMR_FILLPATH 62
3702#define EMR_STROKEANDFILLPATH 63
3703#define EMR_STROKEPATH 64
3704#define EMR_FLATTENPATH 65
3705#define EMR_WIDENPATH 66
3706#define EMR_SELECTCLIPPATH 67
3707#define EMR_ABORTPATH 68
3708
3709#define EMR_GDICOMMENT 70
3710#define EMR_FILLRGN 71
3711#define EMR_FRAMERGN 72
3712#define EMR_INVERTRGN 73
3713#define EMR_PAINTRGN 74
3714#define EMR_EXTSELECTCLIPRGN 75
3715#define EMR_BITBLT 76
3716#define EMR_STRETCHBLT 77
3717#define EMR_MASKBLT 78
3718#define EMR_PLGBLT 79
3719#define EMR_SETDIBITSTODEVICE 80
3720#define EMR_STRETCHDIBITS 81
3721#define EMR_EXTCREATEFONTINDIRECTW 82
3722#define EMR_EXTTEXTOUTA 83
3723#define EMR_EXTTEXTOUTW 84
3724#define EMR_POLYBEZIER16 85
3725#define EMR_POLYGON16 86
3726#define EMR_POLYLINE16 87
3727#define EMR_POLYBEZIERTO16 88
3728#define EMR_POLYLINETO16 89
3729#define EMR_POLYPOLYLINE16 90
3730#define EMR_POLYPOLYGON16 91
3731#define EMR_POLYDRAW16 92
3732#define EMR_CREATEMONOBRUSH 93
3733#define EMR_CREATEDIBPATTERNBRUSHPT 94
3734#define EMR_EXTCREATEPEN 95
3735#define EMR_POLYTEXTOUTA 96
3736#define EMR_POLYTEXTOUTW 97
3737
3738#define EMR_SETICMMODE 98
3739#define EMR_CREATECOLORSPACE 99
3740#define EMR_SETCOLORSPACE 100
3741#define EMR_DELETECOLORSPACE 101
3742#define EMR_GLSRECORD 102
3743#define EMR_GLSBOUNDEDRECORD 103
3744#define EMR_PIXELFORMAT 104
3745#define EMR_RESERVED_105 105
3746#define EMR_RESERVED_106 106
3747#define EMR_RESERVED_107 107
3748#define EMR_RESERVED_108 108
3749#define EMR_RESERVED_109 109
3750#define EMR_RESERVED_110 110
3751#define EMR_COLORCORRECTPALETTE 111
3752#define EMR_SETICMPROFILEA 112
3753#define EMR_SETICMPROFILEW 113
3754#define EMR_ALPHABLEND 114
3755#define EMR_SETLAYOUT 115
3756#define EMR_TRANSPARENTBLT 116
3757#define EMR_RESERVED_117 117
3758#define EMR_GRADIENTFILL 118
3759#define EMR_RESERVED_119 119
3760#define EMR_RESERVED_120 120
3761#define EMR_COLORMATCHTOTARGETW 121
3762#define EMR_CREATECOLORSPACEW 122
3763
3764#define EMR_MIN 1
3765
3766#define EMR_MAX 122
3767
3768 typedef struct tagEMR {
3769 DWORD iType;
3770 DWORD nSize;
3771 } EMR,*PEMR;
3772
3773 typedef struct tagEMRTEXT {
3774 POINTL ptlReference;
3775 DWORD nChars;
3776 DWORD offString;
3777 DWORD fOptions;
3778 RECTL rcl;
3779 DWORD offDx;
3780 } EMRTEXT,*PEMRTEXT;
3781
3782 typedef struct tagABORTPATH {
3783 EMR emr;
3784 } EMRABORTPATH,*PEMRABORTPATH,EMRBEGINPATH,*PEMRBEGINPATH,EMRENDPATH,*PEMRENDPATH,EMRCLOSEFIGURE,*PEMRCLOSEFIGURE,EMRFLATTENPATH,*PEMRFLATTENPATH,EMRWIDENPATH,*PEMRWIDENPATH,EMRSETMETARGN,*PEMRSETMETARGN,EMRSAVEDC,*PEMRSAVEDC,EMRREALIZEPALETTE,*PEMRREALIZEPALETTE;
3785
3786 typedef struct tagEMRSELECTCLIPPATH {
3787 EMR emr;
3788 DWORD iMode;
3789 } EMRSELECTCLIPPATH,*PEMRSELECTCLIPPATH,EMRSETBKMODE,*PEMRSETBKMODE,EMRSETMAPMODE,*PEMRSETMAPMODE,EMRSETLAYOUT,*PEMRSETLAYOUT,
3790 EMRSETPOLYFILLMODE,*PEMRSETPOLYFILLMODE,EMRSETROP2,*PEMRSETROP2,EMRSETSTRETCHBLTMODE,*PEMRSETSTRETCHBLTMODE,EMRSETICMMODE,
3791 *PEMRSETICMMODE,EMRSETTEXTALIGN,*PEMRSETTEXTALIGN;
3792
3793 typedef struct tagEMRSETMITERLIMIT {
3794 EMR emr;
3795 FLOAT eMiterLimit;
3796 } EMRSETMITERLIMIT,*PEMRSETMITERLIMIT;
3797
3798 typedef struct tagEMRRESTOREDC {
3799 EMR emr;
3800 LONG iRelative;
3801 } EMRRESTOREDC,*PEMRRESTOREDC;
3802
3803 typedef struct tagEMRSETARCDIRECTION {
3804 EMR emr;
3805 DWORD iArcDirection;
3806
3807 } EMRSETARCDIRECTION,*PEMRSETARCDIRECTION;
3808
3809 typedef struct tagEMRSETMAPPERFLAGS {
3810 EMR emr;
3811 DWORD dwFlags;
3812 } EMRSETMAPPERFLAGS,*PEMRSETMAPPERFLAGS;
3813
3814 typedef struct tagEMRSETTEXTCOLOR {
3815 EMR emr;
3816 COLORREF crColor;
3817 } EMRSETBKCOLOR,*PEMRSETBKCOLOR,EMRSETTEXTCOLOR,*PEMRSETTEXTCOLOR;
3818
3819 typedef struct tagEMRSELECTOBJECT {
3820 EMR emr;
3821 DWORD ihObject;
3822 } EMRSELECTOBJECT,*PEMRSELECTOBJECT,EMRDELETEOBJECT,*PEMRDELETEOBJECT;
3823
3824 typedef struct tagEMRSELECTPALETTE {
3825 EMR emr;
3826 DWORD ihPal;
3827 } EMRSELECTPALETTE,*PEMRSELECTPALETTE;
3828
3829 typedef struct tagEMRRESIZEPALETTE {
3830 EMR emr;
3831 DWORD ihPal;
3832 DWORD cEntries;
3833 } EMRRESIZEPALETTE,*PEMRRESIZEPALETTE;
3834
3835 typedef struct tagEMRSETPALETTEENTRIES {
3836 EMR emr;
3837 DWORD ihPal;
3838 DWORD iStart;
3839 DWORD cEntries;
3840 PALETTEENTRY aPalEntries[1];
3841 } EMRSETPALETTEENTRIES,*PEMRSETPALETTEENTRIES;
3842
3843 typedef struct tagEMRSETCOLORADJUSTMENT {
3844 EMR emr;
3845 COLORADJUSTMENT ColorAdjustment;
3846 } EMRSETCOLORADJUSTMENT,*PEMRSETCOLORADJUSTMENT;
3847
3848 typedef struct tagEMRGDICOMMENT {
3849 EMR emr;
3850 DWORD cbData;
3851 BYTE Data[1];
3852 } EMRGDICOMMENT,*PEMRGDICOMMENT;
3853
3854 typedef struct tagEMREOF {
3855 EMR emr;
3856 DWORD nPalEntries;
3857 DWORD offPalEntries;
3858 DWORD nSizeLast;
3859 } EMREOF,*PEMREOF;
3860
3861 typedef struct tagEMRLINETO {
3862 EMR emr;
3863 POINTL ptl;
3864 } EMRLINETO,*PEMRLINETO,EMRMOVETOEX,*PEMRMOVETOEX;
3865
3866 typedef struct tagEMROFFSETCLIPRGN {
3867 EMR emr;
3868 POINTL ptlOffset;
3869 } EMROFFSETCLIPRGN,*PEMROFFSETCLIPRGN;
3870
3871 typedef struct tagEMRFILLPATH {
3872 EMR emr;
3873 RECTL rclBounds;
3874 } EMRFILLPATH,*PEMRFILLPATH,EMRSTROKEANDFILLPATH,*PEMRSTROKEANDFILLPATH,EMRSTROKEPATH,*PEMRSTROKEPATH;
3875
3876 typedef struct tagEMREXCLUDECLIPRECT {
3877 EMR emr;
3878 RECTL rclClip;
3879 } EMREXCLUDECLIPRECT,*PEMREXCLUDECLIPRECT,EMRINTERSECTCLIPRECT,*PEMRINTERSECTCLIPRECT;
3880
3881 typedef struct tagEMRSETVIEWPORTORGEX {
3882 EMR emr;
3883 POINTL ptlOrigin;
3884 } EMRSETVIEWPORTORGEX,*PEMRSETVIEWPORTORGEX,EMRSETWINDOWORGEX,*PEMRSETWINDOWORGEX,EMRSETBRUSHORGEX,*PEMRSETBRUSHORGEX;
3885
3886 typedef struct tagEMRSETVIEWPORTEXTEX {
3887 EMR emr;
3888 SIZEL szlExtent;
3889 } EMRSETVIEWPORTEXTEX,*PEMRSETVIEWPORTEXTEX,EMRSETWINDOWEXTEX,*PEMRSETWINDOWEXTEX;
3890
3891 typedef struct tagEMRSCALEVIEWPORTEXTEX {
3892 EMR emr;
3893 LONG xNum;
3894 LONG xDenom;
3895 LONG yNum;
3896 LONG yDenom;
3897 } EMRSCALEVIEWPORTEXTEX,*PEMRSCALEVIEWPORTEXTEX,EMRSCALEWINDOWEXTEX,*PEMRSCALEWINDOWEXTEX;
3898
3899 typedef struct tagEMRSETWORLDTRANSFORM {
3900 EMR emr;
3901 XFORM xform;
3902 } EMRSETWORLDTRANSFORM,*PEMRSETWORLDTRANSFORM;
3903
3904 typedef struct tagEMRMODIFYWORLDTRANSFORM {
3905 EMR emr;
3906 XFORM xform;
3907 DWORD iMode;
3908 } EMRMODIFYWORLDTRANSFORM,*PEMRMODIFYWORLDTRANSFORM;
3909
3910 typedef struct tagEMRSETPIXELV {
3911 EMR emr;
3912 POINTL ptlPixel;
3913 COLORREF crColor;
3914 } EMRSETPIXELV,*PEMRSETPIXELV;
3915
3916 typedef struct tagEMREXTFLOODFILL {
3917 EMR emr;
3918 POINTL ptlStart;
3919 COLORREF crColor;
3920 DWORD iMode;
3921 } EMREXTFLOODFILL,*PEMREXTFLOODFILL;
3922
3923 typedef struct tagEMRELLIPSE {
3924 EMR emr;
3925 RECTL rclBox;
3926 } EMRELLIPSE,*PEMRELLIPSE,EMRRECTANGLE,*PEMRRECTANGLE;
3927
3928 typedef struct tagEMRROUNDRECT {
3929 EMR emr;
3930 RECTL rclBox;
3931 SIZEL szlCorner;
3932 } EMRROUNDRECT,*PEMRROUNDRECT;
3933
3934 typedef struct tagEMRARC {
3935 EMR emr;
3936 RECTL rclBox;
3937 POINTL ptlStart;
3938 POINTL ptlEnd;
3939 } EMRARC,*PEMRARC,EMRARCTO,*PEMRARCTO,EMRCHORD,*PEMRCHORD,EMRPIE,*PEMRPIE;
3940
3941 typedef struct tagEMRANGLEARC {
3942 EMR emr;
3943 POINTL ptlCenter;
3944 DWORD nRadius;
3945 FLOAT eStartAngle;
3946 FLOAT eSweepAngle;
3947 } EMRANGLEARC,*PEMRANGLEARC;
3948
3949 typedef struct tagEMRPOLYLINE {
3950 EMR emr;
3951 RECTL rclBounds;
3952 DWORD cptl;
3953 POINTL aptl[1];
3954 } EMRPOLYLINE,*PEMRPOLYLINE,EMRPOLYBEZIER,*PEMRPOLYBEZIER,EMRPOLYGON,*PEMRPOLYGON,EMRPOLYBEZIERTO,*PEMRPOLYBEZIERTO,EMRPOLYLINETO,*PEMRPOLYLINETO;
3955
3956 typedef struct tagEMRPOLYLINE16 {
3957 EMR emr;
3958 RECTL rclBounds;
3959 DWORD cpts;
3960 POINTS apts[1];
3961 } EMRPOLYLINE16,*PEMRPOLYLINE16,EMRPOLYBEZIER16,*PEMRPOLYBEZIER16,EMRPOLYGON16,*PEMRPOLYGON16,EMRPOLYBEZIERTO16,*PEMRPOLYBEZIERTO16,EMRPOLYLINETO16,*PEMRPOLYLINETO16;
3962
3963 typedef struct tagEMRPOLYDRAW {
3964 EMR emr;
3965 RECTL rclBounds;
3966 DWORD cptl;
3967 POINTL aptl[1];
3968 BYTE abTypes[1];
3969 } EMRPOLYDRAW,*PEMRPOLYDRAW;
3970
3971 typedef struct tagEMRPOLYDRAW16 {
3972 EMR emr;
3973 RECTL rclBounds;
3974 DWORD cpts;
3975 POINTS apts[1];
3976 BYTE abTypes[1];
3977 } EMRPOLYDRAW16,*PEMRPOLYDRAW16;
3978
3979 typedef struct tagEMRPOLYPOLYLINE {
3980 EMR emr;
3981 RECTL rclBounds;
3982 DWORD nPolys;
3983 DWORD cptl;
3984 DWORD aPolyCounts[1];
3985 POINTL aptl[1];
3986 } EMRPOLYPOLYLINE,*PEMRPOLYPOLYLINE,EMRPOLYPOLYGON,*PEMRPOLYPOLYGON;
3987
3988 typedef struct tagEMRPOLYPOLYLINE16 {
3989 EMR emr;
3990 RECTL rclBounds;
3991 DWORD nPolys;
3992 DWORD cpts;
3993 DWORD aPolyCounts[1];
3994 POINTS apts[1];
3995 } EMRPOLYPOLYLINE16,*PEMRPOLYPOLYLINE16,EMRPOLYPOLYGON16,*PEMRPOLYPOLYGON16;
3996
3997 typedef struct tagEMRINVERTRGN {
3998 EMR emr;
3999 RECTL rclBounds;
4000 DWORD cbRgnData;
4001 BYTE RgnData[1];
4002 } EMRINVERTRGN,*PEMRINVERTRGN,EMRPAINTRGN,*PEMRPAINTRGN;
4003
4004 typedef struct tagEMRFILLRGN {
4005 EMR emr;
4006 RECTL rclBounds;
4007 DWORD cbRgnData;
4008 DWORD ihBrush;
4009 BYTE RgnData[1];
4010 } EMRFILLRGN,*PEMRFILLRGN;
4011
4012 typedef struct tagEMRFRAMERGN {
4013 EMR emr;
4014 RECTL rclBounds;
4015 DWORD cbRgnData;
4016 DWORD ihBrush;
4017 SIZEL szlStroke;
4018 BYTE RgnData[1];
4019 } EMRFRAMERGN,*PEMRFRAMERGN;
4020
4021 typedef struct tagEMREXTSELECTCLIPRGN {
4022 EMR emr;
4023 DWORD cbRgnData;
4024 DWORD iMode;
4025 BYTE RgnData[1];
4026 } EMREXTSELECTCLIPRGN,*PEMREXTSELECTCLIPRGN;
4027
4028 typedef struct tagEMREXTTEXTOUTA {
4029 EMR emr;
4030 RECTL rclBounds;
4031 DWORD iGraphicsMode;
4032 FLOAT exScale;
4033 FLOAT eyScale;
4034 EMRTEXT emrtext;
4035 } EMREXTTEXTOUTA,*PEMREXTTEXTOUTA,EMREXTTEXTOUTW,*PEMREXTTEXTOUTW;
4036
4037 typedef struct tagEMRPOLYTEXTOUTA {
4038 EMR emr;
4039 RECTL rclBounds;
4040 DWORD iGraphicsMode;
4041 FLOAT exScale;
4042 FLOAT eyScale;
4043 LONG cStrings;
4044 EMRTEXT aemrtext[1];
4045 } EMRPOLYTEXTOUTA,*PEMRPOLYTEXTOUTA,EMRPOLYTEXTOUTW,*PEMRPOLYTEXTOUTW;
4046
4047 typedef struct tagEMRBITBLT {
4048 EMR emr;
4049 RECTL rclBounds;
4050 LONG xDest;
4051 LONG yDest;
4052 LONG cxDest;
4053 LONG cyDest;
4054 DWORD dwRop;
4055 LONG xSrc;
4056 LONG ySrc;
4057 XFORM xformSrc;
4058 COLORREF crBkColorSrc;
4059 DWORD iUsageSrc;
4060 DWORD offBmiSrc;
4061 DWORD cbBmiSrc;
4062 DWORD offBitsSrc;
4063 DWORD cbBitsSrc;
4064 } EMRBITBLT,*PEMRBITBLT;
4065
4066 typedef struct tagEMRSTRETCHBLT {
4067 EMR emr;
4068 RECTL rclBounds;
4069 LONG xDest;
4070 LONG yDest;
4071 LONG cxDest;
4072 LONG cyDest;
4073 DWORD dwRop;
4074 LONG xSrc;
4075 LONG ySrc;
4076 XFORM xformSrc;
4077 COLORREF crBkColorSrc;
4078 DWORD iUsageSrc;
4079 DWORD offBmiSrc;
4080 DWORD cbBmiSrc;
4081 DWORD offBitsSrc;
4082 DWORD cbBitsSrc;
4083 LONG cxSrc;
4084 LONG cySrc;
4085 } EMRSTRETCHBLT,*PEMRSTRETCHBLT;
4086
4087 typedef struct tagEMRMASKBLT {
4088 EMR emr;
4089 RECTL rclBounds;
4090 LONG xDest;
4091 LONG yDest;
4092 LONG cxDest;
4093 LONG cyDest;
4094 DWORD dwRop;
4095 LONG xSrc;
4096 LONG ySrc;
4097 XFORM xformSrc;
4098 COLORREF crBkColorSrc;
4099 DWORD iUsageSrc;
4100 DWORD offBmiSrc;
4101 DWORD cbBmiSrc;
4102 DWORD offBitsSrc;
4103 DWORD cbBitsSrc;
4104 LONG xMask;
4105 LONG yMask;
4106 DWORD iUsageMask;
4107 DWORD offBmiMask;
4108 DWORD cbBmiMask;
4109 DWORD offBitsMask;
4110 DWORD cbBitsMask;
4111 } EMRMASKBLT,*PEMRMASKBLT;
4112
4113 typedef struct tagEMRPLGBLT {
4114 EMR emr;
4115 RECTL rclBounds;
4116 POINTL aptlDest[3];
4117 LONG xSrc;
4118 LONG ySrc;
4119 LONG cxSrc;
4120 LONG cySrc;
4121 XFORM xformSrc;
4122 COLORREF crBkColorSrc;
4123 DWORD iUsageSrc;
4124 DWORD offBmiSrc;
4125 DWORD cbBmiSrc;
4126 DWORD offBitsSrc;
4127 DWORD cbBitsSrc;
4128 LONG xMask;
4129 LONG yMask;
4130 DWORD iUsageMask;
4131 DWORD offBmiMask;
4132 DWORD cbBmiMask;
4133 DWORD offBitsMask;
4134 DWORD cbBitsMask;
4135 } EMRPLGBLT,*PEMRPLGBLT;
4136
4137 typedef struct tagEMRSETDIBITSTODEVICE {
4138 EMR emr;
4139 RECTL rclBounds;
4140 LONG xDest;
4141 LONG yDest;
4142 LONG xSrc;
4143 LONG ySrc;
4144 LONG cxSrc;
4145 LONG cySrc;
4146 DWORD offBmiSrc;
4147 DWORD cbBmiSrc;
4148 DWORD offBitsSrc;
4149 DWORD cbBitsSrc;
4150 DWORD iUsageSrc;
4151 DWORD iStartScan;
4152 DWORD cScans;
4153 } EMRSETDIBITSTODEVICE,*PEMRSETDIBITSTODEVICE;
4154
4155 typedef struct tagEMRSTRETCHDIBITS {
4156 EMR emr;
4157 RECTL rclBounds;
4158 LONG xDest;
4159 LONG yDest;
4160 LONG xSrc;
4161 LONG ySrc;
4162 LONG cxSrc;
4163 LONG cySrc;
4164 DWORD offBmiSrc;
4165 DWORD cbBmiSrc;
4166 DWORD offBitsSrc;
4167 DWORD cbBitsSrc;
4168 DWORD iUsageSrc;
4169 DWORD dwRop;
4170 LONG cxDest;
4171 LONG cyDest;
4172 } EMRSTRETCHDIBITS,*PEMRSTRETCHDIBITS;
4173
4174 typedef struct tagEMREXTCREATEFONTINDIRECTW {
4175 EMR emr;
4176 DWORD ihFont;
4177 EXTLOGFONTW elfw;
4178 } EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW;
4179
4180 typedef struct tagEMRCREATEPALETTE {
4181 EMR emr;
4182 DWORD ihPal;
4183 LOGPALETTE lgpl;
4184 } EMRCREATEPALETTE,*PEMRCREATEPALETTE;
4185
4186 typedef struct tagEMRCREATEPEN {
4187 EMR emr;
4188 DWORD ihPen;
4189 LOGPEN lopn;
4190 } EMRCREATEPEN,*PEMRCREATEPEN;
4191
4192 typedef struct tagEMREXTCREATEPEN {
4193 EMR emr;
4194 DWORD ihPen;
4195 DWORD offBmi;
4196 DWORD cbBmi;
4197 DWORD offBits;
4198 DWORD cbBits;
4199 EXTLOGPEN elp;
4200 } EMREXTCREATEPEN,*PEMREXTCREATEPEN;
4201
4202 typedef struct tagEMRCREATEBRUSHINDIRECT {
4203 EMR emr;
4204 DWORD ihBrush;
4205 LOGBRUSH32 lb;
4206 } EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT;
4207
4208 typedef struct tagEMRCREATEMONOBRUSH {
4209 EMR emr;
4210 DWORD ihBrush;
4211 DWORD iUsage;
4212 DWORD offBmi;
4213 DWORD cbBmi;
4214 DWORD offBits;
4215 DWORD cbBits;
4216 } EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH;
4217
4218 typedef struct tagEMRCREATEDIBPATTERNBRUSHPT {
4219 EMR emr;
4220 DWORD ihBrush;
4221 DWORD iUsage;
4222 DWORD offBmi;
4223 DWORD cbBmi;
4224 DWORD offBits;
4225 DWORD cbBits;
4226 } EMRCREATEDIBPATTERNBRUSHPT,*PEMRCREATEDIBPATTERNBRUSHPT;
4227
4228 typedef struct tagEMRFORMAT {
4229 DWORD dSignature;
4230 DWORD nVersion;
4231 DWORD cbData;
4232 DWORD offData;
4233 } EMRFORMAT,*PEMRFORMAT;
4234
4235 typedef struct tagEMRGLSRECORD {
4236 EMR emr;
4237 DWORD cbData;
4238 BYTE Data[1];
4239 } EMRGLSRECORD,*PEMRGLSRECORD;
4240
4241 typedef struct tagEMRGLSBOUNDEDRECORD {
4242 EMR emr;
4243 RECTL rclBounds;
4244 DWORD cbData;
4245 BYTE Data[1];
4246 } EMRGLSBOUNDEDRECORD,*PEMRGLSBOUNDEDRECORD;
4247
4248 typedef struct tagEMRPIXELFORMAT {
4249 EMR emr;
4250 PIXELFORMATDESCRIPTOR pfd;
4251 } EMRPIXELFORMAT,*PEMRPIXELFORMAT;
4252
4253 typedef struct tagEMRCREATECOLORSPACE {
4254 EMR emr;
4255 DWORD ihCS;
4256 LOGCOLORSPACEA lcs;
4257 } EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE;
4258
4259 typedef struct tagEMRSETCOLORSPACE {
4260 EMR emr;
4261 DWORD ihCS;
4262 } EMRSETCOLORSPACE,*PEMRSETCOLORSPACE,EMRSELECTCOLORSPACE,*PEMRSELECTCOLORSPACE,EMRDELETECOLORSPACE,*PEMRDELETECOLORSPACE;
4263
4264 typedef struct tagEMREXTESCAPE {
4265 EMR emr;
4266 INT iEscape;
4267 INT cbEscData;
4268 BYTE EscData[1];
4269 } EMREXTESCAPE,*PEMREXTESCAPE,EMRDRAWESCAPE,*PEMRDRAWESCAPE;
4270
4271 typedef struct tagEMRNAMEDESCAPE {
4272 EMR emr;
4273 INT iEscape;
4274 INT cbDriver;
4275 INT cbEscData;
4276 BYTE EscData[1];
4277 } EMRNAMEDESCAPE,*PEMRNAMEDESCAPE;
4278
4279#define SETICMPROFILE_EMBEDED 0x00000001
4280
4281 typedef struct tagEMRSETICMPROFILE {
4282 EMR emr;
4283 DWORD dwFlags;
4284 DWORD cbName;
4285 DWORD cbData;
4286 BYTE Data[1];
4287 } EMRSETICMPROFILE,*PEMRSETICMPROFILE,EMRSETICMPROFILEA,*PEMRSETICMPROFILEA,EMRSETICMPROFILEW,*PEMRSETICMPROFILEW;
4288
4289#define CREATECOLORSPACE_EMBEDED 0x00000001
4290
4291 typedef struct tagEMRCREATECOLORSPACEW {
4292 EMR emr;
4293 DWORD ihCS;
4294 LOGCOLORSPACEW lcs;
4295 DWORD dwFlags;
4296 DWORD cbData;
4297 BYTE Data[1];
4298 } EMRCREATECOLORSPACEW,*PEMRCREATECOLORSPACEW;
4299
4300#define COLORMATCHTOTARGET_EMBEDED 0x00000001
4301
4302 typedef struct tagCOLORMATCHTOTARGET {
4303 EMR emr;
4304 DWORD dwAction;
4305 DWORD dwFlags;
4306 DWORD cbName;
4307 DWORD cbData;
4308 BYTE Data[1];
4309 } EMRCOLORMATCHTOTARGET,*PEMRCOLORMATCHTOTARGET;
4310
4311 typedef struct tagCOLORCORRECTPALETTE {
4312 EMR emr;
4313 DWORD ihPalette;
4314 DWORD nFirstEntry;
4315 DWORD nPalEntries;
4316 DWORD nReserved;
4317 } EMRCOLORCORRECTPALETTE,*PEMRCOLORCORRECTPALETTE;
4318
4319 typedef struct tagEMRALPHABLEND {
4320 EMR emr;
4321 RECTL rclBounds;
4322 LONG xDest;
4323 LONG yDest;
4324 LONG cxDest;
4325 LONG cyDest;
4326 DWORD dwRop;
4327 LONG xSrc;
4328 LONG ySrc;
4329 XFORM xformSrc;
4330 COLORREF crBkColorSrc;
4331 DWORD iUsageSrc;
4332 DWORD offBmiSrc;
4333 DWORD cbBmiSrc;
4334 DWORD offBitsSrc;
4335 DWORD cbBitsSrc;
4336 LONG cxSrc;
4337 LONG cySrc;
4338 } EMRALPHABLEND,*PEMRALPHABLEND;
4339
4340 typedef struct tagEMRGRADIENTFILL {
4341 EMR emr;
4342 RECTL rclBounds;
4343 DWORD nVer;
4344 DWORD nTri;
4345 ULONG ulMode;
4346 TRIVERTEX Ver[1];
4347 } EMRGRADIENTFILL,*PEMRGRADIENTFILL;
4348
4349 typedef struct tagEMRTRANSPARENTBLT {
4350 EMR emr;
4351 RECTL rclBounds;
4352 LONG xDest;
4353 LONG yDest;
4354 LONG cxDest;
4355 LONG cyDest;
4356 DWORD dwRop;
4357 LONG xSrc;
4358 LONG ySrc;
4359 XFORM xformSrc;
4360 COLORREF crBkColorSrc;
4361 DWORD iUsageSrc;
4362 DWORD offBmiSrc;
4363 DWORD cbBmiSrc;
4364 DWORD offBitsSrc;
4365 DWORD cbBitsSrc;
4366 LONG cxSrc;
4367 LONG cySrc;
4368 } EMRTRANSPARENTBLT,*PEMRTRANSPARENTBLT;
4369
4370#define GDICOMMENT_IDENTIFIER 0x43494447
4371#define GDICOMMENT_WINDOWS_METAFILE 0x80000001
4372#define GDICOMMENT_BEGINGROUP 0x00000002
4373#define GDICOMMENT_ENDGROUP 0x00000003
4374#define GDICOMMENT_MULTIFORMATS 0x40000004
4375#define EPS_SIGNATURE 0x46535045
4376#define GDICOMMENT_UNICODE_STRING 0x00000040
4377#define GDICOMMENT_UNICODE_END 0x00000080
4378#endif /* NOMETAFILE */
4379
4380#define wglUseFontBitmaps __MINGW_NAME_AW(wglUseFontBitmaps)
4381
4382 WINGDIAPI WINBOOL WINAPI wglCopyContext(HGLRC,HGLRC,UINT);
4383 WINGDIAPI HGLRC WINAPI wglCreateContext(HDC);
4384 WINGDIAPI HGLRC WINAPI wglCreateLayerContext(HDC,int);
4385 WINGDIAPI WINBOOL WINAPI wglDeleteContext(HGLRC);
4386 WINGDIAPI HGLRC WINAPI wglGetCurrentContext(VOID);
4387 WINGDIAPI HDC WINAPI wglGetCurrentDC(VOID);
4388 WINGDIAPI PROC WINAPI wglGetProcAddress(LPCSTR);
4389 WINGDIAPI WINBOOL WINAPI wglMakeCurrent(HDC,HGLRC);
4390 WINGDIAPI WINBOOL WINAPI wglShareLists(HGLRC,HGLRC);
4391 WINGDIAPI WINBOOL WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
4392 WINGDIAPI WINBOOL WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
4393 WINGDIAPI WINBOOL WINAPI SwapBuffers(HDC);
4394
4395 typedef struct _POINTFLOAT {
4396 FLOAT x;
4397 FLOAT y;
4398 } POINTFLOAT,*PPOINTFLOAT;
4399
4400 typedef struct _GLYPHMETRICSFLOAT {
4401 FLOAT gmfBlackBoxX;
4402 FLOAT gmfBlackBoxY;
4403 POINTFLOAT gmfptGlyphOrigin;
4404 FLOAT gmfCellIncX;
4405 FLOAT gmfCellIncY;
4406 } GLYPHMETRICSFLOAT,*PGLYPHMETRICSFLOAT,*LPGLYPHMETRICSFLOAT;
4407
4408#define WGL_FONT_LINES 0
4409#define WGL_FONT_POLYGONS 1
4410
4411#define wglUseFontOutlines __MINGW_NAME_AW(wglUseFontOutlines)
4412
4413 WINGDIAPI WINBOOL WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
4414 WINGDIAPI WINBOOL WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
4415
4416 typedef struct tagLAYERPLANEDESCRIPTOR {
4417 WORD nSize;
4418 WORD nVersion;
4419 DWORD dwFlags;
4420 BYTE iPixelType;
4421 BYTE cColorBits;
4422 BYTE cRedBits;
4423 BYTE cRedShift;
4424 BYTE cGreenBits;
4425 BYTE cGreenShift;
4426 BYTE cBlueBits;
4427 BYTE cBlueShift;
4428 BYTE cAlphaBits;
4429 BYTE cAlphaShift;
4430 BYTE cAccumBits;
4431 BYTE cAccumRedBits;
4432 BYTE cAccumGreenBits;
4433 BYTE cAccumBlueBits;
4434 BYTE cAccumAlphaBits;
4435 BYTE cDepthBits;
4436 BYTE cStencilBits;
4437 BYTE cAuxBuffers;
4438 BYTE iLayerPlane;
4439 BYTE bReserved;
4440 COLORREF crTransparent;
4441 } LAYERPLANEDESCRIPTOR,*PLAYERPLANEDESCRIPTOR,*LPLAYERPLANEDESCRIPTOR;
4442
4443#define LPD_DOUBLEBUFFER 0x00000001
4444#define LPD_STEREO 0x00000002
4445#define LPD_SUPPORT_GDI 0x00000010
4446#define LPD_SUPPORT_OPENGL 0x00000020
4447#define LPD_SHARE_DEPTH 0x00000040
4448#define LPD_SHARE_STENCIL 0x00000080
4449#define LPD_SHARE_ACCUM 0x00000100
4450#define LPD_SWAP_EXCHANGE 0x00000200
4451#define LPD_SWAP_COPY 0x00000400
4452#define LPD_TRANSPARENT 0x00001000
4453
4454#define LPD_TYPE_RGBA 0
4455#define LPD_TYPE_COLORINDEX 1
4456
4457#define WGL_SWAP_MAIN_PLANE 0x00000001
4458#define WGL_SWAP_OVERLAY1 0x00000002
4459#define WGL_SWAP_OVERLAY2 0x00000004
4460#define WGL_SWAP_OVERLAY3 0x00000008
4461#define WGL_SWAP_OVERLAY4 0x00000010
4462#define WGL_SWAP_OVERLAY5 0x00000020
4463#define WGL_SWAP_OVERLAY6 0x00000040
4464#define WGL_SWAP_OVERLAY7 0x00000080
4465#define WGL_SWAP_OVERLAY8 0x00000100
4466#define WGL_SWAP_OVERLAY9 0x00000200
4467#define WGL_SWAP_OVERLAY10 0x00000400
4468#define WGL_SWAP_OVERLAY11 0x00000800
4469#define WGL_SWAP_OVERLAY12 0x00001000
4470#define WGL_SWAP_OVERLAY13 0x00002000
4471#define WGL_SWAP_OVERLAY14 0x00004000
4472#define WGL_SWAP_OVERLAY15 0x00008000
4473#define WGL_SWAP_UNDERLAY1 0x00010000
4474#define WGL_SWAP_UNDERLAY2 0x00020000
4475#define WGL_SWAP_UNDERLAY3 0x00040000
4476#define WGL_SWAP_UNDERLAY4 0x00080000
4477#define WGL_SWAP_UNDERLAY5 0x00100000
4478#define WGL_SWAP_UNDERLAY6 0x00200000
4479#define WGL_SWAP_UNDERLAY7 0x00400000
4480#define WGL_SWAP_UNDERLAY8 0x00800000
4481#define WGL_SWAP_UNDERLAY9 0x01000000
4482#define WGL_SWAP_UNDERLAY10 0x02000000
4483#define WGL_SWAP_UNDERLAY11 0x04000000
4484#define WGL_SWAP_UNDERLAY12 0x08000000
4485#define WGL_SWAP_UNDERLAY13 0x10000000
4486#define WGL_SWAP_UNDERLAY14 0x20000000
4487#define WGL_SWAP_UNDERLAY15 0x40000000
4488
4489 WINGDIAPI WINBOOL WINAPI wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR);
4490 WINGDIAPI int WINAPI wglSetLayerPaletteEntries(HDC,int,int,int,CONST COLORREF *);
4491 WINGDIAPI int WINAPI wglGetLayerPaletteEntries(HDC,int,int,int,COLORREF *);
4492 WINGDIAPI WINBOOL WINAPI wglRealizeLayerPalette(HDC,int,WINBOOL);
4493 WINGDIAPI WINBOOL WINAPI wglSwapLayerBuffers(HDC,UINT);
4494
4495 typedef struct _WGLSWAP {
4496 HDC hdc;
4497 UINT uiFlags;
4498 } WGLSWAP,*PWGLSWAP,*LPWGLSWAP;
4499
4500#define WGL_SWAPMULTIPLE_MAX 16
4501
4502 WINGDIAPI DWORD WINAPI wglSwapMultipleBuffers(UINT,CONST WGLSWAP *);
4503#endif
4504
4505#endif /* WINAPI_PARTITION_DESKTOP */
4506
4507#ifdef __cplusplus
4508}
4509#endif
4510#endif /* _WINGDI_ */