Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

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