source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/wingdi.h@ 1180

Last change on this file since 1180 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

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