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