|
|
1.1 root 1: /*++ BUILD Version: 0004 // Increment this if a change has global effects
2:
3: Copyright (c) 1985-91, Microsoft Corporation
4:
5: Module Name:
6:
7: wingdi.h
8:
9: Abstract:
10:
11: Procedure declarations, constant definitions and macros for the GDI
12: component.
13:
14: --*/
15:
16: #ifndef _WINGDI_
17: #define _WINGDI_
18:
1.1.1.3 root 19: #ifdef __cplusplus
20: extern "C" {
21: #endif
22:
1.1 root 23: #ifndef NOGDI
24:
25: #ifndef NORASTEROPS
26:
27: /* Binary raster ops */
28: #define R2_BLACK 1 /* 0 */
29: #define R2_NOTMERGEPEN 2 /* DPon */
30: #define R2_MASKNOTPEN 3 /* DPna */
31: #define R2_NOTCOPYPEN 4 /* PN */
32: #define R2_MASKPENNOT 5 /* PDna */
33: #define R2_NOT 6 /* Dn */
34: #define R2_XORPEN 7 /* DPx */
35: #define R2_NOTMASKPEN 8 /* DPan */
36: #define R2_MASKPEN 9 /* DPa */
37: #define R2_NOTXORPEN 10 /* DPxn */
38: #define R2_NOP 11 /* D */
39: #define R2_MERGENOTPEN 12 /* DPno */
40: #define R2_COPYPEN 13 /* P */
41: #define R2_MERGEPENNOT 14 /* PDno */
42: #define R2_MERGEPEN 15 /* DPo */
43: #define R2_WHITE 16 /* 1 */
44: #define R2_LAST 16
45:
1.1.1.4 ! root 46: /* Ternary raster operations */
1.1 root 47: #define SRCCOPY (DWORD)0x00CC0020 /* dest = source */
48: #define SRCPAINT (DWORD)0x00EE0086 /* dest = source OR dest */
49: #define SRCAND (DWORD)0x008800C6 /* dest = source AND dest */
50: #define SRCINVERT (DWORD)0x00660046 /* dest = source XOR dest */
51: #define SRCERASE (DWORD)0x00440328 /* dest = source AND (NOT dest ) */
52: #define NOTSRCCOPY (DWORD)0x00330008 /* dest = (NOT source) */
53: #define NOTSRCERASE (DWORD)0x001100A6 /* dest = (NOT src) AND (NOT dest) */
54: #define MERGECOPY (DWORD)0x00C000CA /* dest = (source AND pattern) */
55: #define MERGEPAINT (DWORD)0x00BB0226 /* dest = (NOT source) OR dest */
56: #define PATCOPY (DWORD)0x00F00021 /* dest = pattern */
57: #define PATPAINT (DWORD)0x00FB0A09 /* dest = DPSnoo */
58: #define PATINVERT (DWORD)0x005A0049 /* dest = pattern XOR dest */
59: #define DSTINVERT (DWORD)0x00550009 /* dest = (NOT dest) */
60: #define BLACKNESS (DWORD)0x00000042 /* dest = BLACK */
61: #define WHITENESS (DWORD)0x00FF0062 /* dest = WHITE */
1.1.1.4 ! root 62:
! 63: /* Quaternary raster codes */
! 64: #define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))
! 65:
1.1 root 66: #endif /* NORASTEROPS */
67:
68: #define GDI_ERROR (0xFFFFFFFFL)
1.1.1.4 ! root 69: #define HGDI_ERROR ((HANDLE)(0xFFFFFFFFL))
1.1 root 70:
71: /* Region Flags */
72: #define ERROR 0
73: #define NULLREGION 1
74: #define SIMPLEREGION 2
75: #define COMPLEXREGION 3
76: #define RGN_ERROR ERROR
77:
78: /* CombineRgn() Styles */
79: #define RGN_AND 1
80: #define RGN_OR 2
81: #define RGN_XOR 3
82: #define RGN_DIFF 4
83: #define RGN_COPY 5
84: #define RGN_MIN RGN_AND
85: #define RGN_MAX RGN_COPY
86:
87: /* StretchBlt() Modes */
88: #define BLACKONWHITE 1
89: #define WHITEONBLACK 2
90: #define COLORONCOLOR 3
1.1.1.3 root 91: #define HALFTONE 4
92: #define MAXSTRETCHBLTMODE 4
1.1 root 93:
94: /* PolyFill() Modes */
95: #define ALTERNATE 1
96: #define WINDING 2
97: #define POLYFILL_LAST 2
98:
99: /* Text Alignment Options */
100: #define TA_NOUPDATECP 0
101: #define TA_UPDATECP 1
102:
103: #define TA_LEFT 0
104: #define TA_RIGHT 2
105: #define TA_CENTER 6
106:
107: #define TA_TOP 0
108: #define TA_BOTTOM 8
109: #define TA_BASELINE 24
110: #define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP)
111:
1.1.1.3 root 112: #define VTA_BASELINE TA_BASELINE
113: #define VTA_LEFT TA_BOTTOM
114: #define VTA_RIGHT TA_TOP
115: #define VTA_CENTER TA_CENTER
116: #define VTA_BOTTOM TA_RIGHT
117: #define VTA_TOP TA_LEFT
118:
119:
1.1 root 120: #define ETO_GRAYED 1
121: #define ETO_OPAQUE 2
122: #define ETO_CLIPPED 4
123:
124: #define ASPECT_FILTERING 0x0001
125:
1.1.1.2 root 126: /* Bounds Accumulation APIs */
127:
128: #define DCB_RESET 0x0001
129: #define DCB_ACCUMULATE 0x0002
130: #define DCB_DIRTY DCB_ACCUMULATE
131: #define DCB_SET (DCB_RESET | DCB_ACCUMULATE)
132: #define DCB_ENABLE 0x0004
133: #define DCB_DISABLE 0x0008
134:
1.1 root 135: #ifndef NOMETAFILE
136:
137: /* Metafile Functions */
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
1.1.1.2 root 153: #define META_SCALEWINDOWEXT 0x0410
1.1 root 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
1.1.1.4 ! root 198: #define META_EXTFLOODFILL 0x0548
1.1 root 199: #define META_DELETEOBJECT 0x01f0
200: #define META_CREATEPALETTE 0x00f7
201: #define META_CREATEPATTERNBRUSH 0x01F9
202: #define META_CREATEPENINDIRECT 0x02FA
203: #define META_CREATEFONTINDIRECT 0x02FB
204: #define META_CREATEBRUSHINDIRECT 0x02FC
205: #define META_CREATEREGION 0x06FF
206:
207: #endif /* NOMETAFILE */
208:
209: /* GDI Escapes */
210: #define NEWFRAME 1
211: #define ABORTDOC 2
212: #define NEXTBAND 3
213: #define SETCOLORTABLE 4
214: #define GETCOLORTABLE 5
215: #define FLUSHOUTPUT 6
216: #define DRAFTMODE 7
217: #define QUERYESCSUPPORT 8
218: #define SETABORTPROC 9
219: #define STARTDOC 10
220: #define ENDDOC 11
221: #define GETPHYSPAGESIZE 12
222: #define GETPRINTINGOFFSET 13
223: #define GETSCALINGFACTOR 14
224: #define MFCOMMENT 15
225: #define GETPENWIDTH 16
226: #define SETCOPYCOUNT 17
227: #define SELECTPAPERSOURCE 18
228: #define DEVICEDATA 19
229: #define PASSTHROUGH 19
230: #define GETTECHNOLGY 20
231: #define GETTECHNOLOGY 20
1.1.1.4 ! root 232: #define SETLINECAP 21
1.1 root 233: #define SETLINEJOIN 22
234: #define SETMITERLIMIT 23
235: #define BANDINFO 24
236: #define DRAWPATTERNRECT 25
237: #define GETVECTORPENSIZE 26
238: #define GETVECTORBRUSHSIZE 27
239: #define ENABLEDUPLEX 28
240: #define GETSETPAPERBINS 29
241: #define GETSETPRINTORIENT 30
242: #define ENUMPAPERBINS 31
243: #define SETDIBSCALING 32
244: #define EPSPRINTING 33
245: #define ENUMPAPERMETRICS 34
246: #define GETSETPAPERMETRICS 35
247: #define POSTSCRIPT_DATA 37
248: #define POSTSCRIPT_IGNORE 38
1.1.1.2 root 249: #define MOUSETRAILS 39
1.1.1.4 ! root 250: #define GETDEVICEUNITS 42
1.1.1.2 root 251:
1.1 root 252: #define GETEXTENDEDTEXTMETRICS 256
253: #define GETEXTENTTABLE 257
254: #define GETPAIRKERNTABLE 258
255: #define GETTRACKKERNTABLE 259
256: #define EXTTEXTOUT 512
1.1.1.4 ! root 257: #define GETFACENAME 513
! 258: #define DOWNLOADFACE 514
1.1 root 259: #define ENABLERELATIVEWIDTHS 768
260: #define ENABLEPAIRKERNING 769
261: #define SETKERNTRACK 770
262: #define SETALLJUSTVALUES 771
263: #define SETCHARSET 772
264:
265: #define STRETCHBLT 2048
1.1.1.2 root 266: #define GETSETSCREENPARAMS 3072
1.1 root 267: #define BEGIN_PATH 4096
268: #define CLIP_TO_PATH 4097
269: #define END_PATH 4098
270: #define EXT_DEVICE_CAPS 4099
271: #define RESTORE_CTM 4100
272: #define SAVE_CTM 4101
273: #define SET_ARC_DIRECTION 4102
274: #define SET_BACKGROUND_COLOR 4103
275: #define SET_POLY_MODE 4104
276: #define SET_SCREEN_ANGLE 4105
277: #define SET_SPREAD 4106
278: #define TRANSFORM_CTM 4107
279: #define SET_CLIP_BOX 4108
280: #define SET_BOUNDS 4109
281: #define SET_MIRROR_MODE 4110
1.1.1.4 ! root 282: #define OPENCHANNEL 4110
! 283: #define DOWNLOADHEADER 4111
! 284: #define CLOSECHANNEL 4112
! 285: #define POSTSCRIPT_PASSTHROUGH 4115
! 286: #define ENCAPSULATED_POSTSCRIPT 4116
1.1 root 287:
288: /* Spooler Error Codes */
289: #define SP_NOTREPORTED 0x4000
290: #define SP_ERROR (-1)
291: #define SP_APPABORT (-2)
292: #define SP_USERABORT (-3)
293: #define SP_OUTOFDISK (-4)
294: #define SP_OUTOFMEMORY (-5)
295:
296: #define PR_JOBSTATUS 0x0000
297:
1.1.1.2 root 298: /* Object Definitions for EnumObjects() */
1.1 root 299: #define OBJ_PEN 1
300: #define OBJ_BRUSH 2
301: #define OBJ_DC 3
302: #define OBJ_METADC 4
303: #define OBJ_PAL 5
304: #define OBJ_FONT 6
305: #define OBJ_BITMAP 7
306: #define OBJ_REGION 8
307: #define OBJ_METAFILE 9
308: #define OBJ_MEMDC 10
1.1.1.2 root 309: #define OBJ_EXTPEN 11
310: #define OBJ_ENHMETADC 12
311: #define OBJ_ENHMETAFILE 13
1.1 root 312:
313: /* xform stuff */
314: #define MWT_IDENTITY 1
315: #define MWT_LEFTMULTIPLY 2
316: #define MWT_RIGHTMULTIPLY 3
317:
318: #define MWT_MIN MWT_IDENTITY
319: #define MWT_MAX MWT_RIGHTMULTIPLY
320:
321: #define _XFORM_
322: typedef struct tagXFORM
323: {
324: FLOAT eM11;
325: FLOAT eM12;
326: FLOAT eM21;
327: FLOAT eM22;
328: FLOAT eDx;
329: FLOAT eDy;
330: } XFORM, *PXFORM, FAR *LPXFORM;
331:
332: /* Bitmap Header Definition */
333: typedef struct tagBITMAP
334: {
335: LONG bmType;
336: LONG bmWidth;
337: LONG bmHeight;
338: LONG bmWidthBytes;
339: WORD bmPlanes;
340: WORD bmBitsPixel;
1.1.1.2 root 341: LPVOID bmBits;
1.1 root 342: } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
343:
344: typedef struct tagRGBTRIPLE {
345: BYTE rgbtBlue;
346: BYTE rgbtGreen;
347: BYTE rgbtRed;
348: } RGBTRIPLE;
349:
350: typedef struct tagRGBQUAD {
351: BYTE rgbBlue;
352: BYTE rgbGreen;
353: BYTE rgbRed;
354: BYTE rgbReserved;
355: } RGBQUAD;
1.1.1.4 ! root 356: typedef RGBQUAD FAR* LPRGBQUAD;
! 357:
1.1 root 358:
359: /* structures for defining DIBs */
360: typedef struct tagBITMAPCOREHEADER {
361: DWORD bcSize; /* used to get to color table */
362: WORD bcWidth;
363: WORD bcHeight;
364: WORD bcPlanes;
365: WORD bcBitCount;
366: } BITMAPCOREHEADER, FAR *LPBITMAPCOREHEADER, *PBITMAPCOREHEADER;
367:
368:
369: typedef struct tagBITMAPINFOHEADER{
370: DWORD biSize;
1.1.1.2 root 371: LONG biWidth;
372: LONG biHeight;
1.1 root 373: WORD biPlanes;
374: WORD biBitCount;
375: DWORD biCompression;
376: DWORD biSizeImage;
1.1.1.2 root 377: LONG biXPelsPerMeter;
378: LONG biYPelsPerMeter;
1.1 root 379: DWORD biClrUsed;
380: DWORD biClrImportant;
381: } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
382:
383: /* constants for the biCompression field */
1.1.1.2 root 384: #define BI_RGB 0L
385: #define BI_RLE8 1L
386: #define BI_RLE4 2L
1.1.1.3 root 387: #define BI_BITFIELDS 3L
1.1 root 388:
389: typedef struct tagBITMAPINFO {
390: BITMAPINFOHEADER bmiHeader;
391: RGBQUAD bmiColors[1];
392: } BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
393:
394: typedef struct tagBITMAPCOREINFO {
395: BITMAPCOREHEADER bmciHeader;
396: RGBTRIPLE bmciColors[1];
397: } BITMAPCOREINFO, FAR *LPBITMAPCOREINFO, *PBITMAPCOREINFO;
398:
399: #pragma pack(2)
400: typedef struct tagBITMAPFILEHEADER {
401: WORD bfType;
402: DWORD bfSize;
403: WORD bfReserved1;
404: WORD bfReserved2;
405: DWORD bfOffBits;
406: } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
407: #pragma pack()
408:
409: #define MAKEPOINTS(l) (*((POINTS FAR *)&(l)))
410:
411: #ifndef NOMETAFILE
412:
413: /* Clipboard Metafile Picture Structure */
414: typedef struct tagHANDLETABLE
415: {
1.1.1.2 root 416: HGDIOBJ objectHandle[1];
1.1 root 417: } HANDLETABLE, *PHANDLETABLE, FAR *LPHANDLETABLE;
418:
419: typedef struct tagMETARECORD
420: {
421: DWORD rdSize;
422: WORD rdFunction;
423: WORD rdParm[1];
1.1.1.2 root 424: } METARECORD;
1.1.1.4 ! root 425: typedef struct tagMETARECORD UNALIGNED *PMETARECORD;
! 426: typedef struct tagMETARECORD UNALIGNED FAR *LPMETARECORD;
1.1 root 427:
428: typedef struct tagMETAFILEPICT
429: {
1.1.1.2 root 430: LONG mm;
431: LONG xExt;
432: LONG yExt;
433: HMETAFILE hMF;
1.1 root 434: } METAFILEPICT, FAR *LPMETAFILEPICT;
435:
1.1.1.2 root 436: #pragma pack(2)
1.1 root 437: typedef struct tagMETAHEADER
438: {
439: WORD mtType;
440: WORD mtHeaderSize;
441: WORD mtVersion;
442: DWORD mtSize;
443: WORD mtNoObjects;
444: DWORD mtMaxRecord;
445: WORD mtNoParameters;
446: } METAHEADER;
1.1.1.4 ! root 447: typedef struct tagMETAHEADER UNALIGNED *PMETAHEADER;
! 448: typedef struct tagMETAHEADER UNALIGNED FAR *LPMETAHEADER;
1.1.1.2 root 449:
450: #pragma pack()
451:
452: /* Enhanced Metafile structures */
453: typedef struct tagENHMETARECORD
454: {
1.1.1.4 ! root 455: DWORD iType; // Record type EMR_XXX
1.1.1.2 root 456: DWORD nSize; // Record size in bytes
457: DWORD dParm[1]; // Parameters
458: } ENHMETARECORD, *PENHMETARECORD, *LPENHMETARECORD;
459:
460: typedef struct tagENHMETAHEADER
461: {
1.1.1.4 ! root 462: DWORD iType; // Record type EMR_HEADER
1.1.1.2 root 463: DWORD nSize; // Record size in bytes. This may be greater
464: // than the sizeof(ENHMETAHEADER).
465: RECTL rclBounds; // Inclusive-inclusive bounds in device units
466: RECTL rclFrame; // Inclusive-inclusive Picture Frame of metafile in .01 mm units
467: DWORD dSignature; // Signature. Must be ENHMETA_SIGNATURE.
468: DWORD nVersion; // Version number
469: DWORD nBytes; // Size of the metafile in bytes
470: DWORD nRecords; // Number of records in the metafile
471: WORD nHandles; // Number of handles in the handle table
472: // Handle index zero is reserved.
473: WORD sReserved; // Reserved. Must be zero.
474: DWORD nDescription; // Number of chars in the unicode description string
475: // This is 0 if there is no description string
476: DWORD offDescription; // Offset to the metafile description record.
477: // This is 0 if there is no description string
478: DWORD nPalEntries; // Number of entries in the metafile palette.
479: SIZEL szlDevice; // Size of the reference device in pels
480: SIZEL szlMillimeters; // Size of the reference device in millimeters
481: } ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER;
1.1 root 482:
483: #endif /* NOMETAFILE */
484:
485: #ifndef NOTEXTMETRIC
486:
1.1.1.4 ! root 487: /* tmPitchAndFamily flags */
1.1.1.2 root 488: #define TMPF_FIXED_PITCH 0x01
489: #define TMPF_VECTOR 0x02
490: #define TMPF_DEVICE 0x08
491: #define TMPF_TRUETYPE 0x04
492:
1.1 root 493: typedef struct tagTEXTMETRICA
494: {
495: LONG tmHeight;
496: LONG tmAscent;
497: LONG tmDescent;
498: LONG tmInternalLeading;
499: LONG tmExternalLeading;
500: LONG tmAveCharWidth;
501: LONG tmMaxCharWidth;
502: LONG tmWeight;
503: LONG tmOverhang;
504: LONG tmDigitizedAspectX;
505: LONG tmDigitizedAspectY;
506: BYTE tmFirstChar;
507: BYTE tmLastChar;
508: BYTE tmDefaultChar;
509: BYTE tmBreakChar;
510: BYTE tmItalic;
511: BYTE tmUnderlined;
512: BYTE tmStruckOut;
513: BYTE tmPitchAndFamily;
514: BYTE tmCharSet;
515: } TEXTMETRICA, *PTEXTMETRICA, NEAR *NPTEXTMETRICA, FAR *LPTEXTMETRICA;
516: typedef struct tagTEXTMETRICW
517: {
518: LONG tmHeight;
519: LONG tmAscent;
520: LONG tmDescent;
521: LONG tmInternalLeading;
522: LONG tmExternalLeading;
523: LONG tmAveCharWidth;
524: LONG tmMaxCharWidth;
525: LONG tmWeight;
526: LONG tmOverhang;
527: LONG tmDigitizedAspectX;
528: LONG tmDigitizedAspectY;
529: WCHAR tmFirstChar;
530: WCHAR tmLastChar;
531: WCHAR tmDefaultChar;
532: WCHAR tmBreakChar;
533: BYTE tmItalic;
534: BYTE tmUnderlined;
535: BYTE tmStruckOut;
536: BYTE tmPitchAndFamily;
537: BYTE tmCharSet;
538: } TEXTMETRICW, *PTEXTMETRICW, NEAR *NPTEXTMETRICW, FAR *LPTEXTMETRICW;
539: #ifdef UNICODE
1.1.1.4 ! root 540: typedef TEXTMETRICW TEXTMETRIC;
! 541: typedef PTEXTMETRICW PTEXTMETRIC;
! 542: typedef NPTEXTMETRICW NPTEXTMETRIC;
! 543: typedef LPTEXTMETRICW LPTEXTMETRIC;
! 544: #else
! 545: typedef TEXTMETRICA TEXTMETRIC;
! 546: typedef PTEXTMETRICA PTEXTMETRIC;
! 547: typedef NPTEXTMETRICA NPTEXTMETRIC;
! 548: typedef LPTEXTMETRICA LPTEXTMETRIC;
1.1 root 549: #endif // UNICODE
550:
1.1.1.2 root 551: /* ntmFlags field flags */
552: #define NTM_REGULAR 0x00000040L
553: #define NTM_BOLD 0x00000020L
554: #define NTM_ITALIC 0x00000001L
1.1 root 555:
1.1.1.2 root 556: typedef struct tagNEWTEXTMETRICA
557: {
558: LONG tmHeight;
559: LONG tmAscent;
560: LONG tmDescent;
561: LONG tmInternalLeading;
562: LONG tmExternalLeading;
563: LONG tmAveCharWidth;
564: LONG tmMaxCharWidth;
565: LONG tmWeight;
566: LONG tmOverhang;
567: LONG tmDigitizedAspectX;
568: LONG tmDigitizedAspectY;
569: BYTE tmFirstChar;
570: BYTE tmLastChar;
571: BYTE tmDefaultChar;
572: BYTE tmBreakChar;
573: BYTE tmItalic;
574: BYTE tmUnderlined;
575: BYTE tmStruckOut;
576: BYTE tmPitchAndFamily;
577: BYTE tmCharSet;
578: DWORD ntmFlags;
579: UINT ntmSizeEM;
580: UINT ntmCellHeight;
581: UINT ntmAvgWidth;
582: } NEWTEXTMETRICA, *PNEWTEXTMETRICA, NEAR *NPNEWTEXTMETRICA, FAR *LPNEWTEXTMETRICA;
583: typedef struct tagNEWTEXTMETRICW
584: {
585: LONG tmHeight;
586: LONG tmAscent;
587: LONG tmDescent;
588: LONG tmInternalLeading;
589: LONG tmExternalLeading;
590: LONG tmAveCharWidth;
591: LONG tmMaxCharWidth;
592: LONG tmWeight;
593: LONG tmOverhang;
594: LONG tmDigitizedAspectX;
595: LONG tmDigitizedAspectY;
596: WCHAR tmFirstChar;
597: WCHAR tmLastChar;
598: WCHAR tmDefaultChar;
599: WCHAR tmBreakChar;
600: BYTE tmItalic;
601: BYTE tmUnderlined;
602: BYTE tmStruckOut;
603: BYTE tmPitchAndFamily;
604: BYTE tmCharSet;
605: DWORD ntmFlags;
606: UINT ntmSizeEM;
607: UINT ntmCellHeight;
608: UINT ntmAvgWidth;
609: } NEWTEXTMETRICW, *PNEWTEXTMETRICW, NEAR *NPNEWTEXTMETRICW, FAR *LPNEWTEXTMETRICW;
610: #ifdef UNICODE
1.1.1.4 ! root 611: typedef NEWTEXTMETRICW NEWTEXTMETRIC;
! 612: typedef PNEWTEXTMETRICW PNEWTEXTMETRIC;
! 613: typedef NPNEWTEXTMETRICW NPNEWTEXTMETRIC;
! 614: typedef LPNEWTEXTMETRICW LPNEWTEXTMETRIC;
! 615: #else
! 616: typedef NEWTEXTMETRICA NEWTEXTMETRIC;
! 617: typedef PNEWTEXTMETRICA PNEWTEXTMETRIC;
! 618: typedef NPNEWTEXTMETRICA NPNEWTEXTMETRIC;
! 619: typedef LPNEWTEXTMETRICA LPNEWTEXTMETRIC;
1.1.1.2 root 620: #endif // UNICODE
621:
622: #endif /* NOTEXTMETRIC */
1.1 root 623: /* GDI Logical Objects: */
624:
625: /* Pel Array */
626: typedef struct tagPELARRAY
627: {
628: LONG paXCount;
629: LONG paYCount;
630: LONG paXExt;
631: LONG paYExt;
632: BYTE paRGBs;
633: } PELARRAY, *PPELARRAY, NEAR *NPPELARRAY, FAR *LPPELARRAY;
634:
635: /* Logical Brush (or Pattern) */
636: typedef struct tagLOGBRUSH
637: {
1.1.1.2 root 638: UINT lbStyle;
639: COLORREF lbColor;
1.1 root 640: LONG lbHatch;
641: } LOGBRUSH, *PLOGBRUSH, NEAR *NPLOGBRUSH, FAR *LPLOGBRUSH;
642:
643: typedef LOGBRUSH PATTERN;
644: typedef PATTERN *PPATTERN;
645: typedef PATTERN NEAR *NPPATTERN;
646: typedef PATTERN FAR *LPPATTERN;
647:
648: /* Logical Pen */
649: typedef struct tagLOGPEN
650: {
1.1.1.2 root 651: UINT lopnStyle;
1.1 root 652: POINT lopnWidth;
1.1.1.2 root 653: COLORREF lopnColor;
1.1 root 654: } LOGPEN, *PLOGPEN, NEAR *NPLOGPEN, FAR *LPLOGPEN;
655:
1.1.1.2 root 656: typedef struct tagEXTLOGPEN {
657: DWORD elpPenStyle;
658: DWORD elpWidth;
659: UINT elpBrushStyle;
660: COLORREF elpColor;
661: LONG elpHatch;
662: DWORD elpNumEntries;
663: DWORD elpStyleEntry[1];
664: } EXTLOGPEN, *PEXTLOGPEN, NEAR *NPEXTLOGPEN, FAR *LPEXTLOGPEN;
665:
1.1 root 666: typedef struct tagPALETTEENTRY {
667: BYTE peRed;
668: BYTE peGreen;
669: BYTE peBlue;
670: BYTE peFlags;
671: } PALETTEENTRY, *PPALETTEENTRY, FAR *LPPALETTEENTRY;
672:
673: /* Logical Palette */
674: typedef struct tagLOGPALETTE {
675: WORD palVersion;
676: WORD palNumEntries;
677: PALETTEENTRY palPalEntry[1];
678: } LOGPALETTE, *PLOGPALETTE, NEAR *NPLOGPALETTE, FAR *LPLOGPALETTE;
679:
680:
681: /* Logical Font */
682: #define LF_FACESIZE 32
683:
684: typedef struct tagLOGFONTA
685: {
686: LONG lfHeight;
687: LONG lfWidth;
688: LONG lfEscapement;
689: LONG lfOrientation;
690: LONG lfWeight;
691: BYTE lfItalic;
692: BYTE lfUnderline;
693: BYTE lfStrikeOut;
694: BYTE lfCharSet;
695: BYTE lfOutPrecision;
696: BYTE lfClipPrecision;
697: BYTE lfQuality;
698: BYTE lfPitchAndFamily;
1.1.1.4 ! root 699: CHAR lfFaceName[LF_FACESIZE];
1.1 root 700: } LOGFONTA, *PLOGFONTA, NEAR *NPLOGFONTA, FAR *LPLOGFONTA;
701: typedef struct tagLOGFONTW
702: {
703: LONG lfHeight;
704: LONG lfWidth;
705: LONG lfEscapement;
706: LONG lfOrientation;
707: LONG lfWeight;
708: BYTE lfItalic;
709: BYTE lfUnderline;
710: BYTE lfStrikeOut;
711: BYTE lfCharSet;
712: BYTE lfOutPrecision;
713: BYTE lfClipPrecision;
714: BYTE lfQuality;
715: BYTE lfPitchAndFamily;
716: WCHAR lfFaceName[LF_FACESIZE];
717: } LOGFONTW, *PLOGFONTW, NEAR *NPLOGFONTW, FAR *LPLOGFONTW;
718: #ifdef UNICODE
1.1.1.4 ! root 719: typedef LOGFONTW LOGFONT;
! 720: typedef PLOGFONTW PLOGFONT;
! 721: typedef NPLOGFONTW NPLOGFONT;
! 722: typedef LPLOGFONTW LPLOGFONT;
! 723: #else
! 724: typedef LOGFONTA LOGFONT;
! 725: typedef PLOGFONTA PLOGFONT;
! 726: typedef NPLOGFONTA NPLOGFONT;
! 727: typedef LPLOGFONTA LPLOGFONT;
1.1 root 728: #endif // UNICODE
729:
1.1.1.2 root 730: #define LF_FULLFACESIZE 64
731:
732: /* Structure passed to FONTENUMPROC */
733: typedef struct tagENUMLOGFONTA
734: {
735: LOGFONTA elfLogFont;
736: BYTE elfFullName[LF_FULLFACESIZE];
737: BYTE elfStyle[LF_FACESIZE];
738: } ENUMLOGFONTA, FAR* LPENUMLOGFONTA;
739: /* Structure passed to FONTENUMPROC */
740: typedef struct tagENUMLOGFONTW
741: {
742: LOGFONTW elfLogFont;
743: WCHAR elfFullName[LF_FULLFACESIZE];
744: WCHAR elfStyle[LF_FACESIZE];
745: } ENUMLOGFONTW, FAR* LPENUMLOGFONTW;
746: #ifdef UNICODE
1.1.1.4 ! root 747: typedef ENUMLOGFONTW ENUMLOGFONT;
! 748: typedef LPENUMLOGFONTW LPENUMLOGFONT;
1.1.1.2 root 749: #else
1.1.1.4 ! root 750: typedef ENUMLOGFONTA ENUMLOGFONT;
! 751: typedef LPENUMLOGFONTA LPENUMLOGFONT;
1.1.1.2 root 752: #endif // UNICODE
1.1 root 753:
754: #define OUT_DEFAULT_PRECIS 0
755: #define OUT_STRING_PRECIS 1
756: #define OUT_CHARACTER_PRECIS 2
757: #define OUT_STROKE_PRECIS 3
1.1.1.2 root 758: #define OUT_TT_PRECIS 4
759: #define OUT_DEVICE_PRECIS 5
760: #define OUT_RASTER_PRECIS 6
761: #define OUT_TT_ONLY_PRECIS 7
762: #define OUT_OUTLINE_PRECIS 8
1.1 root 763:
764: #define CLIP_DEFAULT_PRECIS 0
765: #define CLIP_CHARACTER_PRECIS 1
766: #define CLIP_STROKE_PRECIS 2
1.1.1.2 root 767: #define CLIP_MASK 0xf
768: #define CLIP_LH_ANGLES (1<<4)
769: #define CLIP_TT_ALWAYS (2<<4)
770: #define CLIP_EMBEDDED (8<<4)
1.1 root 771:
772: #define DEFAULT_QUALITY 0
773: #define DRAFT_QUALITY 1
774: #define PROOF_QUALITY 2
775:
776: #define DEFAULT_PITCH 0
777: #define FIXED_PITCH 1
778: #define VARIABLE_PITCH 2
779:
780: #define ANSI_CHARSET 0
1.1.1.4 ! root 781: #define DEFAULT_CHARSET 1
1.1 root 782: #define SYMBOL_CHARSET 2
783: #define SHIFTJIS_CHARSET 128
1.1.1.2 root 784: #define HANGEUL_CHARSET 129
785: #define CHINESEBIG5_CHARSET 136
1.1 root 786: #define OEM_CHARSET 255
787:
788: /* Font Families */
789: #define FF_DONTCARE (0<<4) /* Don't care or don't know. */
790: #define FF_ROMAN (1<<4) /* Variable stroke width, serifed. */
791: /* Times Roman, Century Schoolbook, etc. */
792: #define FF_SWISS (2<<4) /* Variable stroke width, sans-serifed. */
793: /* Helvetica, Swiss, etc. */
794: #define FF_MODERN (3<<4) /* Constant stroke width, serifed or sans-serifed. */
795: /* Pica, Elite, Courier, etc. */
796: #define FF_SCRIPT (4<<4) /* Cursive, etc. */
797: #define FF_DECORATIVE (5<<4) /* Old English, etc. */
798:
799: /* Font Weights */
800: #define FW_DONTCARE 0
801: #define FW_THIN 100
802: #define FW_EXTRALIGHT 200
803: #define FW_LIGHT 300
804: #define FW_NORMAL 400
805: #define FW_MEDIUM 500
806: #define FW_SEMIBOLD 600
807: #define FW_BOLD 700
808: #define FW_EXTRABOLD 800
809: #define FW_HEAVY 900
810:
811: #define FW_ULTRALIGHT FW_EXTRALIGHT
812: #define FW_REGULAR FW_NORMAL
813: #define FW_DEMIBOLD FW_SEMIBOLD
814: #define FW_ULTRABOLD FW_EXTRABOLD
815: #define FW_BLACK FW_HEAVY
816:
1.1.1.2 root 817: #define PANOSE_COUNT 10
818: #define PAN_FAMILYTYPE_INDEX 0
819: #define PAN_SERIFSTYLE_INDEX 1
820: #define PAN_WEIGHT_INDEX 2
821: #define PAN_PROPORTION_INDEX 3
822: #define PAN_CONTRAST_INDEX 4
823: #define PAN_STROKEVARIATION_INDEX 5
824: #define PAN_ARMSTYLE_INDEX 6
825: #define PAN_LETTERFORM_INDEX 7
826: #define PAN_MIDLINE_INDEX 8
827: #define PAN_XHEIGHT_INDEX 9
828:
829: #define PAN_CULTURE_LATIN 0
830:
1.1.1.4 ! root 831: typedef struct tagPANOSE
! 832: {
! 833: BYTE bFamilyType;
! 834: BYTE bSerifStyle;
! 835: BYTE bWeight;
! 836: BYTE bProportion;
! 837: BYTE bContrast;
! 838: BYTE bStrokeVariation;
! 839: BYTE bArmStyle;
! 840: BYTE bLetterform;
! 841: BYTE bMidline;
! 842: BYTE bXHeight;
! 843: } PANOSE, * LPPANOSE;
1.1 root 844:
1.1.1.2 root 845: #define PAN_ANY 0 /* Any */
846: #define PAN_NO_FIT 1 /* No Fit */
1.1 root 847:
1.1.1.2 root 848: #define PAN_FAMILY_TEXT_DISPLAY 2 /* Text and Display */
849: #define PAN_FAMILY_SCRIPT 3 /* Script */
850: #define PAN_FAMILY_DECORATIVE 4 /* Decorative */
851: #define PAN_FAMILY_PICTORIAL 5 /* Pictorial */
852:
853: #define PAN_SERIF_COVE 2 /* Cove */
854: #define PAN_SERIF_OBTUSE_COVE 3 /* Obtuse Cove */
855: #define PAN_SERIF_SQUARE_COVE 4 /* Square Cove */
856: #define PAN_SERIF_OBTUSE_SQUARE_COVE 5 /* Obtuse Square Cove */
857: #define PAN_SERIF_SQUARE 6 /* Square */
858: #define PAN_SERIF_THIN 7 /* Thin */
859: #define PAN_SERIF_BONE 8 /* Bone */
860: #define PAN_SERIF_EXAGGERATED 9 /* Exaggerated */
861: #define PAN_SERIF_TRIANGLE 10 /* Triangle */
862: #define PAN_SERIF_NORMAL_SANS 11 /* Normal Sans */
863: #define PAN_SERIF_OBTUSE_SANS 12 /* Obtuse Sans */
864: #define PAN_SERIF_PERP_SANS 13 /* Prep Sans */
865: #define PAN_SERIF_FLARED 14 /* Flared */
866: #define PAN_SERIF_ROUNDED 15 /* Rounded */
867:
868: #define PAN_WEIGHT_VERY_LIGHT 2 /* Very Light */
869: #define PAN_WEIGHT_LIGHT 3 /* Light */
870: #define PAN_WEIGHT_THIN 4 /* Thin */
871: #define PAN_WEIGHT_BOOK 5 /* Book */
872: #define PAN_WEIGHT_MEDIUM 6 /* Medium */
873: #define PAN_WEIGHT_DEMI 7 /* Demi */
874: #define PAN_WEIGHT_BOLD 8 /* Bold */
875: #define PAN_WEIGHT_HEAVY 9 /* Heavy */
876: #define PAN_WEIGHT_BLACK 10 /* Black */
877: #define PAN_WEIGHT_NORD 11 /* Nord */
878:
879: #define PAN_PROP_OLD_STYLE 2 /* Old Style */
880: #define PAN_PROP_MODERN 3 /* Modern */
881: #define PAN_PROP_EVEN_WIDTH 4 /* Even Width */
882: #define PAN_PROP_EXPANDED 5 /* Expanded */
883: #define PAN_PROP_CONDENSED 6 /* Condensed */
884: #define PAN_PROP_VERY_EXPANDED 7 /* Very Expanded */
885: #define PAN_PROP_VERY_CONDENSED 8 /* Very Condensed */
886: #define PAN_PROP_MONOSPACED 9 /* Monospaced */
887:
888: #define PAN_CONTRAST_NONE 2 /* None */
889: #define PAN_CONTRAST_VERY_LOW 3 /* Very Low */
890: #define PAN_CONTRAST_LOW 4 /* Low */
891: #define PAN_CONTRAST_MEDIUM_LOW 5 /* Medium Low */
892: #define PAN_CONTRAST_MEDIUM 6 /* Medium */
893: #define PAN_CONTRAST_MEDIUM_HIGH 7 /* Mediim High */
894: #define PAN_CONTRAST_HIGH 8 /* High */
895: #define PAN_CONTRAST_VERY_HIGH 9 /* Very High */
896:
897: #define PAN_STROKE_GRADUAL_DIAG 2 /* Gradual/Diagonal */
898: #define PAN_STROKE_GRADUAL_TRAN 3 /* Gradual/Transitional */
899: #define PAN_STROKE_GRADUAL_VERT 4 /* Gradual/Vertical */
900: #define PAN_STROKE_GRADUAL_HORZ 5 /* Gradual/Horizontal */
901: #define PAN_STROKE_RAPID_VERT 6 /* Rapid/Vertical */
902: #define PAN_STROKE_RAPID_HORZ 7 /* Rapid/Horizontal */
903: #define PAN_STROKE_INSTANT_VERT 8 /* Instant/Vertical */
904:
905: #define PAN_STRAIGHT_ARMS_HORZ 2 /* Straight Arms/Horizontal */
906: #define PAN_STRAIGHT_ARMS_WEDGE 3 /* Straight Arms/Wedge */
907: #define PAN_STRAIGHT_ARMS_VERT 4 /* Straight Arms/Vertical */
908: #define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5 /* Straight Arms/Single-Serif */
909: #define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6 /* Straight Arms/Double-Serif */
910: #define PAN_BENT_ARMS_HORZ 7 /* Non-Straight Arms/Horizontal */
911: #define PAN_BENT_ARMS_WEDGE 8 /* Non-Straight Arms/Wedge */
912: #define PAN_BENT_ARMS_VERT 9 /* Non-Straight Arms/Vertical */
913: #define PAN_BENT_ARMS_SINGLE_SERIF 10 /* Non-Straight Arms/Single-Serif */
914: #define PAN_BENT_ARMS_DOUBLE_SERIF 11 /* Non-Straight Arms/Double-Serif */
915:
916: #define PAN_LETT_NORMAL_CONTACT 2 /* Normal/Contact */
917: #define PAN_LETT_NORMAL_WEIGHTED 3 /* Normal/Weighted */
918: #define PAN_LETT_NORMAL_BOXED 4 /* Normal/Boxed */
919: #define PAN_LETT_NORMAL_FLATTENED 5 /* Normal/Flattened */
920: #define PAN_LETT_NORMAL_ROUNDED 6 /* Normal/Rounded */
921: #define PAN_LETT_NORMAL_OFF_CENTER 7 /* Normal/Off Center */
922: #define PAN_LETT_NORMAL_SQUARE 8 /* Normal/Square */
923: #define PAN_LETT_OBLIQUE_CONTACT 9 /* Oblique/Contact */
924: #define PAN_LETT_OBLIQUE_WEIGHTED 10 /* Oblique/Weighted */
925: #define PAN_LETT_OBLIQUE_BOXED 11 /* Oblique/Boxed */
926: #define PAN_LETT_OBLIQUE_FLATTENED 12 /* Oblique/Flattened */
927: #define PAN_LETT_OBLIQUE_ROUNDED 13 /* Oblique/Rounded */
928: #define PAN_LETT_OBLIQUE_OFF_CENTER 14 /* Oblique/Off Center */
929: #define PAN_LETT_OBLIQUE_SQUARE 15 /* Oblique/Square */
930:
931: #define PAN_MIDLINE_STANDARD_TRIMMED 2 /* Standard/Trimmed */
932: #define PAN_MIDLINE_STANDARD_POINTED 3 /* Standard/Pointed */
933: #define PAN_MIDLINE_STANDARD_SERIFED 4 /* Standard/Serifed */
934: #define PAN_MIDLINE_HIGH_TRIMMED 5 /* High/Trimmed */
935: #define PAN_MIDLINE_HIGH_POINTED 6 /* High/Pointed */
936: #define PAN_MIDLINE_HIGH_SERIFED 7 /* High/Serifed */
937: #define PAN_MIDLINE_CONSTANT_TRIMMED 8 /* Constant/Trimmed */
938: #define PAN_MIDLINE_CONSTANT_POINTED 9 /* Constant/Pointed */
939: #define PAN_MIDLINE_CONSTANT_SERIFED 10 /* Constant/Serifed */
940: #define PAN_MIDLINE_LOW_TRIMMED 11 /* Low/Trimmed */
941: #define PAN_MIDLINE_LOW_POINTED 12 /* Low/Pointed */
942: #define PAN_MIDLINE_LOW_SERIFED 13 /* Low/Serifed */
943:
944: #define PAN_XHEIGHT_CONSTANT_SMALL 2 /* Constant/Small */
945: #define PAN_XHEIGHT_CONSTANT_STD 3 /* Constant/Standard */
946: #define PAN_XHEIGHT_CONSTANT_LARGE 4 /* Constant/Large */
947: #define PAN_XHEIGHT_DUCKING_SMALL 5 /* Ducking/Small */
948: #define PAN_XHEIGHT_DUCKING_STD 6 /* Ducking/Standard */
949: #define PAN_XHEIGHT_DUCKING_LARGE 7 /* Ducking/Large */
1.1 root 950:
951:
1.1.1.2 root 952: #define ELF_VENDOR_SIZE 4
1.1 root 953:
1.1.1.2 root 954: /* The extended logical font */
955: /* An extension of the ENUMLOGFONT */
1.1 root 956:
957: typedef struct tagEXTLOGFONTA {
958: LOGFONTA elfLogFont;
1.1.1.2 root 959: BYTE elfFullName[LF_FULLFACESIZE];
960: BYTE elfStyle[LF_FACESIZE];
1.1.1.3 root 961: DWORD elfVersion; /* 0 for the first release of NT */
962: DWORD elfStyleSize;
963: DWORD elfMatch;
964: DWORD elfReserved;
1.1.1.2 root 965: BYTE elfVendorId[ELF_VENDOR_SIZE];
1.1.1.3 root 966: DWORD elfCulture; /* 0 for Latin */
967: PANOSE elfPanose;
1.1.1.2 root 968: } EXTLOGFONTA, *PEXTLOGFONTA, NEAR *NPEXTLOGFONTA, FAR *LPEXTLOGFONTA;
1.1 root 969: typedef struct tagEXTLOGFONTW {
970: LOGFONTW elfLogFont;
1.1.1.2 root 971: WCHAR elfFullName[LF_FULLFACESIZE];
972: WCHAR elfStyle[LF_FACESIZE];
1.1.1.3 root 973: DWORD elfVersion; /* 0 for the first release of NT */
974: DWORD elfStyleSize;
975: DWORD elfMatch;
976: DWORD elfReserved;
1.1.1.2 root 977: BYTE elfVendorId[ELF_VENDOR_SIZE];
1.1.1.3 root 978: DWORD elfCulture; /* 0 for Latin */
979: PANOSE elfPanose;
1.1.1.2 root 980: } EXTLOGFONTW, *PEXTLOGFONTW, NEAR *NPEXTLOGFONTW, FAR *LPEXTLOGFONTW;
1.1 root 981: #ifdef UNICODE
1.1.1.4 ! root 982: typedef EXTLOGFONTW EXTLOGFONT;
! 983: typedef PEXTLOGFONTW PEXTLOGFONT;
! 984: typedef NPEXTLOGFONTW NPEXTLOGFONT;
! 985: typedef LPEXTLOGFONTW LPEXTLOGFONT;
! 986: #else
! 987: typedef EXTLOGFONTA EXTLOGFONT;
! 988: typedef PEXTLOGFONTA PEXTLOGFONT;
! 989: typedef NPEXTLOGFONTA NPEXTLOGFONT;
! 990: typedef LPEXTLOGFONTA LPEXTLOGFONT;
1.1 root 991: #endif // UNICODE
992:
993:
1.1.1.2 root 994: #define ELF_VERSION 0
995: #define ELF_CULTURE_LATIN 0
1.1 root 996:
997: /* EnumFonts Masks */
998: #define RASTER_FONTTYPE 0x0001
1.1.1.2 root 999: #define DEVICE_FONTTYPE 0x002
1000: #define TRUETYPE_FONTTYPE 0x004
1.1 root 1001:
1.1.1.4 ! root 1002: #define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
1.1 root 1003: #define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b))
1.1.1.2 root 1004: #define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
1.1 root 1005:
1006: /* palette entry flags */
1007:
1008: #define PC_RESERVED 0x01 /* palette index used for animation */
1009: #define PC_EXPLICIT 0x02 /* palette index is explicit to device */
1010: #define PC_NOCOLLAPSE 0x04 /* do not match color to system palette */
1011:
1012: #define GetRValue(rgb) ((BYTE)(rgb))
1013: #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
1014: #define GetBValue(rgb) ((BYTE)((rgb)>>16))
1015:
1016: /* Background Modes */
1017: #define TRANSPARENT 1
1018: #define OPAQUE 2
1019: #define BKMODE_LAST 2
1020:
1.1.1.4 ! root 1021: /* Graphics Modes */
! 1022:
! 1023: #define GM_COMPATIBLE 1
! 1024: #define GM_ADVANCED 2
! 1025: #define GM_LAST 2
! 1026:
1.1 root 1027: /* PolyDraw and GetPath point types */
1028: #define PT_CLOSEFIGURE 0x01
1029: #define PT_LINETO 0x02
1030: #define PT_BEZIERTO 0x04
1031: #define PT_MOVETO 0x06
1032:
1033: /* Mapping Modes */
1034: #define MM_TEXT 1
1035: #define MM_LOMETRIC 2
1036: #define MM_HIMETRIC 3
1037: #define MM_LOENGLISH 4
1038: #define MM_HIENGLISH 5
1039: #define MM_TWIPS 6
1040: #define MM_ISOTROPIC 7
1.1.1.2 root 1041: #define MM_ANISOTROPIC 8
1.1 root 1042:
1043: /* Min and Max Mapping Mode values */
1044: #define MM_MIN MM_TEXT
1045: #define MM_MAX MM_ANISOTROPIC
1046: #define MM_MAX_FIXEDSCALE MM_TWIPS
1047:
1048: /* Coordinate Modes */
1049: #define ABSOLUTE 1
1050: #define RELATIVE 2
1051:
1052: /* Stock Logical Objects */
1053: #define WHITE_BRUSH 0
1054: #define LTGRAY_BRUSH 1
1055: #define GRAY_BRUSH 2
1056: #define DKGRAY_BRUSH 3
1057: #define BLACK_BRUSH 4
1058: #define NULL_BRUSH 5
1059: #define HOLLOW_BRUSH NULL_BRUSH
1060: #define WHITE_PEN 6
1061: #define BLACK_PEN 7
1062: #define NULL_PEN 8
1063: #define OEM_FIXED_FONT 10
1064: #define ANSI_FIXED_FONT 11
1065: #define ANSI_VAR_FONT 12
1066: #define SYSTEM_FONT 13
1067: #define DEVICE_DEFAULT_FONT 14
1068: #define DEFAULT_PALETTE 15
1069: #define SYSTEM_FIXED_FONT 16
1070: #define STOCK_LAST 16
1071:
1.1.1.2 root 1072: #define CLR_INVALID 0xFFFFFFFF
1.1 root 1073:
1074: /* Brush Styles */
1075: #define BS_SOLID 0
1076: #define BS_NULL 1
1077: #define BS_HOLLOW BS_NULL
1078: #define BS_HATCHED 2
1079: #define BS_PATTERN 3
1080: #define BS_INDEXED 4
1081: #define BS_DIBPATTERN 5
1.1.1.2 root 1082: #define BS_DIBPATTERNPT 6
1.1.1.4 ! root 1083: #define BS_PATTERN8X8 7
! 1084: #define BS_DIBPATTERN8X8 8
1.1 root 1085:
1086: /* Hatch Styles */
1087: #define HS_HORIZONTAL 0 /* ----- */
1088: #define HS_VERTICAL 1 /* ||||| */
1089: #define HS_FDIAGONAL 2 /* \\\\\ */
1090: #define HS_BDIAGONAL 3 /* ///// */
1091: #define HS_CROSS 4 /* +++++ */
1092: #define HS_DIAGCROSS 5 /* xxxxx */
1093: #define HS_FDIAGONAL1 6
1094: #define HS_BDIAGONAL1 7
1095: #define HS_SOLID 8
1096: #define HS_DENSE1 9
1097: #define HS_DENSE2 10
1098: #define HS_DENSE3 11
1099: #define HS_DENSE4 12
1100: #define HS_DENSE5 13
1101: #define HS_DENSE6 14
1102: #define HS_DENSE7 15
1103: #define HS_DENSE8 16
1104: #define HS_NOSHADE 17
1105: #define HS_HALFTONE 18
1.1.1.4 ! root 1106: #define HS_SOLIDCLR 19
! 1107: #define HS_DITHEREDCLR 20
! 1108: #define HS_SOLIDTEXTCLR 21
! 1109: #define HS_DITHEREDTEXTCLR 22
! 1110: #define HS_SOLIDBKCLR 23
! 1111: #define HS_DITHEREDBKCLR 24
! 1112: #define HS_API_MAX 25
1.1 root 1113:
1114: /* Pen Styles */
1115: #define PS_SOLID 0
1116: #define PS_DASH 1 /* ------- */
1117: #define PS_DOT 2 /* ....... */
1118: #define PS_DASHDOT 3 /* _._._._ */
1119: #define PS_DASHDOTDOT 4 /* _.._.._ */
1120: #define PS_NULL 5
1121: #define PS_INSIDEFRAME 6
1.1.1.2 root 1122: #define PS_USERSTYLE 7
1123: #define PS_ALTERNATE 8
1124: #define PS_STYLE_MASK 0x0000000F
1125:
1126: #define PS_ENDCAP_ROUND 0x00000000
1127: #define PS_ENDCAP_SQUARE 0x00000100
1128: #define PS_ENDCAP_FLAT 0x00000200
1129: #define PS_ENDCAP_MASK 0x00000F00
1130:
1131: #define PS_JOIN_ROUND 0x00000000
1132: #define PS_JOIN_BEVEL 0x00001000
1133: #define PS_JOIN_MITER 0x00002000
1134: #define PS_JOIN_MASK 0x0000F000
1135:
1136: #define PS_COSMETIC 0x00000000
1137: #define PS_GEOMETRIC 0x00010000
1138: #define PS_TYPE_MASK 0x000F0000
1139:
1140: #define AD_COUNTERCLOCKWISE 1
1141: #define AD_CLOCKWISE 2
1.1 root 1142:
1143: /* Device Parameters for GetDeviceCaps() */
1144: #define DRIVERVERSION 0 /* Device driver version */
1145: #define TECHNOLOGY 2 /* Device classification */
1146: #define HORZSIZE 4 /* Horizontal size in millimeters */
1147: #define VERTSIZE 6 /* Vertical size in millimeters */
1148: #define HORZRES 8 /* Horizontal width in pixels */
1149: #define VERTRES 10 /* Vertical width in pixels */
1150: #define BITSPIXEL 12 /* Number of bits per pixel */
1151: #define PLANES 14 /* Number of planes */
1152: #define NUMBRUSHES 16 /* Number of brushes the device has */
1153: #define NUMPENS 18 /* Number of pens the device has */
1154: #define NUMMARKERS 20 /* Number of markers the device has */
1155: #define NUMFONTS 22 /* Number of fonts the device has */
1156: #define NUMCOLORS 24 /* Number of colors the device supports */
1157: #define PDEVICESIZE 26 /* Size required for device descriptor */
1158: #define CURVECAPS 28 /* Curve capabilities */
1159: #define LINECAPS 30 /* Line capabilities */
1160: #define POLYGONALCAPS 32 /* Polygonal capabilities */
1161: #define TEXTCAPS 34 /* Text capabilities */
1162: #define CLIPCAPS 36 /* Clipping capabilities */
1163: #define RASTERCAPS 38 /* Bitblt capabilities */
1164: #define ASPECTX 40 /* Length of the X leg */
1165: #define ASPECTY 42 /* Length of the Y leg */
1166: #define ASPECTXY 44 /* Length of the hypotenuse */
1167:
1168: #define LOGPIXELSX 88 /* Logical pixels/inch in X */
1169: #define LOGPIXELSY 90 /* Logical pixels/inch in Y */
1170:
1.1.1.2 root 1171: #define SIZEPALETTE 104 /* Number of entries in physical palette */
1.1 root 1172: #define NUMRESERVED 106 /* Number of reserved entries in palette */
1173: #define COLORRES 108 /* Actual color resolution */
1174:
1175:
1176: // Printing related DeviceCaps. These replace the appropriate Escapes
1177:
1178: #define PHYSICALWIDTH 110 // Physical Width in device units
1179: #define PHYSICALHEIGHT 111 // Physical Height in device units
1180: #define PHYSICALOFFSETX 112 // Physical Printable Area x margin
1181: #define PHYSICALOFFSETY 113 // Physical Printable Area y margin
1182: #define SCALINGFACTORX 114 // Scaling factor x
1183: #define SCALINGFACTORY 115 // Scaling factor y
1184:
1185: #ifndef NOGDICAPMASKS
1186:
1187: /* Device Capability Masks: */
1188:
1189: /* Device Technologies */
1190: #define DT_PLOTTER 0 /* Vector plotter */
1191: #define DT_RASDISPLAY 1 /* Raster display */
1192: #define DT_RASPRINTER 2 /* Raster printer */
1193: #define DT_RASCAMERA 3 /* Raster camera */
1194: #define DT_CHARSTREAM 4 /* Character-stream, PLP */
1195: #define DT_METAFILE 5 /* Metafile, VDM */
1196: #define DT_DISPFILE 6 /* Display-file */
1197:
1198: /* Curve Capabilities */
1199: #define CC_NONE 0 /* Curves not supported */
1200: #define CC_CIRCLES 1 /* Can do circles */
1201: #define CC_PIE 2 /* Can do pie wedges */
1202: #define CC_CHORD 4 /* Can do chord arcs */
1203: #define CC_ELLIPSES 8 /* Can do ellipese */
1204: #define CC_WIDE 16 /* Can do wide lines */
1205: #define CC_STYLED 32 /* Can do styled lines */
1206: #define CC_WIDESTYLED 64 /* Can do wide styled lines */
1207: #define CC_INTERIORS 128 /* Can do interiors */
1.1.1.2 root 1208: #define CC_ROUNDRECT 256 /* */
1.1 root 1209:
1210: /* Line Capabilities */
1211: #define LC_NONE 0 /* Lines not supported */
1212: #define LC_POLYLINE 2 /* Can do polylines */
1213: #define LC_MARKER 4 /* Can do markers */
1214: #define LC_POLYMARKER 8 /* Can do polymarkers */
1215: #define LC_WIDE 16 /* Can do wide lines */
1216: #define LC_STYLED 32 /* Can do styled lines */
1217: #define LC_WIDESTYLED 64 /* Can do wide styled lines */
1218: #define LC_INTERIORS 128 /* Can do interiors */
1219:
1220: /* Polygonal Capabilities */
1221: #define PC_NONE 0 /* Polygonals not supported */
1222: #define PC_POLYGON 1 /* Can do polygons */
1223: #define PC_RECTANGLE 2 /* Can do rectangles */
1224: #define PC_WINDPOLYGON 4 /* Can do winding polygons */
1225: #define PC_TRAPEZOID 4 /* Can do trapezoids */
1226: #define PC_SCANLINE 8 /* Can do scanlines */
1227: #define PC_WIDE 16 /* Can do wide borders */
1228: #define PC_STYLED 32 /* Can do styled borders */
1229: #define PC_WIDESTYLED 64 /* Can do wide styled borders */
1230: #define PC_INTERIORS 128 /* Can do interiors */
1231:
1232: /* Polygonal Capabilities */
1233: #define CP_NONE 0 /* No clipping of output */
1234: #define CP_RECTANGLE 1 /* Output clipped to rects */
1.1.1.2 root 1235: #define CP_REGION 2 /* */
1.1 root 1236:
1237: /* Text Capabilities */
1.1.1.3 root 1238: #define TC_OP_CHARACTER 0x00000001 /* Can do OutputPrecision CHARACTER */
1239: #define TC_OP_STROKE 0x00000002 /* Can do OutputPrecision STROKE */
1240: #define TC_CP_STROKE 0x00000004 /* Can do ClipPrecision STROKE */
1241: #define TC_CR_90 0x00000008 /* Can do CharRotAbility 90 */
1242: #define TC_CR_ANY 0x00000010 /* Can do CharRotAbility ANY */
1243: #define TC_SF_X_YINDEP 0x00000020 /* Can do ScaleFreedom X_YINDEPENDENT */
1244: #define TC_SA_DOUBLE 0x00000040 /* Can do ScaleAbility DOUBLE */
1245: #define TC_SA_INTEGER 0x00000080 /* Can do ScaleAbility INTEGER */
1246: #define TC_SA_CONTIN 0x00000100 /* Can do ScaleAbility CONTINUOUS */
1247: #define TC_EA_DOUBLE 0x00000200 /* Can do EmboldenAbility DOUBLE */
1248: #define TC_IA_ABLE 0x00000400 /* Can do ItalisizeAbility ABLE */
1249: #define TC_UA_ABLE 0x00000800 /* Can do UnderlineAbility ABLE */
1250: #define TC_SO_ABLE 0x00001000 /* Can do StrikeOutAbility ABLE */
1251: #define TC_RA_ABLE 0x00002000 /* Can do RasterFontAble ABLE */
1252: #define TC_VA_ABLE 0x00004000 /* Can do VectorFontAble ABLE */
1253: #define TC_RESERVED 0x00008000
1254: #define TC_SCROLLBLT 0x00010000 /* do text scroll with blt */
1.1 root 1255:
1256: #endif /* NOGDICAPMASKS */
1257:
1258: /* Raster Capabilities */
1.1.1.2 root 1259: #define RC_NONE
1.1 root 1260: #define RC_BITBLT 1 /* Can do standard BLT. */
1261: #define RC_BANDING 2 /* Device requires banding support */
1262: #define RC_SCALING 4 /* Device requires scaling support */
1263: #define RC_BITMAP64 8 /* Device can support >64K bitmap */
1264: #define RC_GDI20_OUTPUT 0x0010 /* has 2.0 output calls */
1.1.1.2 root 1265: #define RC_GDI20_STATE 0x0020
1266: #define RC_SAVEBITMAP 0x0040
1.1 root 1267: #define RC_DI_BITMAP 0x0080 /* supports DIB to memory */
1268: #define RC_PALETTE 0x0100 /* supports a palette */
1269: #define RC_DIBTODEV 0x0200 /* supports DIBitsToDevice */
1270: #define RC_BIGFONT 0x0400 /* supports >64K fonts */
1271: #define RC_STRETCHBLT 0x0800 /* supports StretchBlt */
1272: #define RC_FLOODFILL 0x1000 /* supports FloodFill */
1273: #define RC_STRETCHDIB 0x2000 /* supports StretchDIBits */
1.1.1.2 root 1274: #define RC_OP_DX_OUTPUT 0x4000
1275: #define RC_DEVBITS 0x8000
1.1 root 1276:
1277: /* DIB color table identifiers */
1278:
1.1.1.2 root 1279: #define DIB_RGB_COLORS 0 /* color table in RGBs */
1280: #define DIB_PAL_COLORS 1 /* color table in palette indices */
1281: #define DIB_PAL_INDICES 2 /* No color table indices into surf palette */
1282: #define DIB_PAL_PHYSINDICES 2 /* No color table indices into surf palette */
1283: #define DIB_PAL_LOGINDICES 4 /* No color table indices into DC palette */
1.1 root 1284:
1285: /* constants for Get/SetSystemPaletteUse() */
1286:
1287: #define SYSPAL_ERROR 0
1288: #define SYSPAL_STATIC 1
1289: #define SYSPAL_NOSTATIC 2
1290:
1291: /* constants for CreateDIBitmap */
1.1.1.3 root 1292: #define CBM_CREATEDIB 0x02L /* create DIB bitmap */
1.1 root 1293: #define CBM_INIT 0x04L /* initialize bitmap */
1294:
1295: /* ExtFloodFill style flags */
1296: #define FLOODFILLBORDER 0
1297: #define FLOODFILLSURFACE 1
1298:
1.1.1.4 ! root 1299: /* size of a device name string */
! 1300: #define CCHDEVICENAME 32
1.1.1.2 root 1301:
1.1.1.4 ! root 1302: /* size of a form name string */
! 1303: #define CCHFORMNAME 32
1.1.1.2 root 1304:
1305: typedef struct _devicemodeA {
1.1.1.4 ! root 1306: BYTE dmDeviceName[CCHDEVICENAME];
1.1.1.2 root 1307: WORD dmSpecVersion;
1308: WORD dmDriverVersion;
1309: WORD dmSize;
1310: WORD dmDriverExtra;
1311: DWORD dmFields;
1312: short dmOrientation;
1313: short dmPaperSize;
1314: short dmPaperLength;
1315: short dmPaperWidth;
1316: short dmScale;
1317: short dmCopies;
1318: short dmDefaultSource;
1319: short dmPrintQuality;
1320: short dmColor;
1321: short dmDuplex;
1.1.1.3 root 1322: short dmYResolution;
1323: short dmTTOption;
1.1.1.2 root 1324: short dmCollate;
1.1.1.4 ! root 1325: BYTE dmFormName[CCHFORMNAME];
! 1326: WORD dmUnusedPadding;
! 1327: DWORD dmBitsPerPel;
1.1.1.2 root 1328: DWORD dmPelsWidth;
1329: DWORD dmPelsHeight;
1.1.1.4 ! root 1330: DWORD dmDisplayFlags;
! 1331: DWORD dmDisplayFrequency;
1.1.1.2 root 1332: } DEVMODEA, *PDEVMODEA, *NPDEVMODEA, *LPDEVMODEA;
1333: typedef struct _devicemodeW {
1.1.1.4 ! root 1334: WCHAR dmDeviceName[CCHDEVICENAME];
1.1 root 1335: WORD dmSpecVersion;
1336: WORD dmDriverVersion;
1337: WORD dmSize;
1338: WORD dmDriverExtra;
1339: DWORD dmFields;
1340: short dmOrientation;
1341: short dmPaperSize;
1342: short dmPaperLength;
1343: short dmPaperWidth;
1344: short dmScale;
1345: short dmCopies;
1346: short dmDefaultSource;
1347: short dmPrintQuality;
1348: short dmColor;
1349: short dmDuplex;
1.1.1.3 root 1350: short dmYResolution;
1351: short dmTTOption;
1.1.1.2 root 1352: short dmCollate;
1.1.1.4 ! root 1353: WCHAR dmFormName[CCHFORMNAME];
! 1354: WORD dmUnusedPadding;
! 1355: DWORD dmBitsPerPel;
1.1.1.2 root 1356: DWORD dmPelsWidth;
1357: DWORD dmPelsHeight;
1.1.1.4 ! root 1358: DWORD dmDisplayFlags;
! 1359: DWORD dmDisplayFrequency;
1.1.1.2 root 1360: } DEVMODEW, *PDEVMODEW, *NPDEVMODEW, *LPDEVMODEW;
1361: #ifdef UNICODE
1.1.1.4 ! root 1362: typedef DEVMODEW DEVMODE;
! 1363: typedef PDEVMODEW PDEVMODE;
! 1364: typedef NPDEVMODEW NPDEVMODE;
! 1365: typedef LPDEVMODEW LPDEVMODE;
! 1366: #else
! 1367: typedef DEVMODEA DEVMODE;
! 1368: typedef PDEVMODEA PDEVMODE;
! 1369: typedef NPDEVMODEA NPDEVMODE;
! 1370: typedef LPDEVMODEA LPDEVMODE;
1.1.1.2 root 1371: #endif // UNICODE
1.1 root 1372:
1.1.1.4 ! root 1373: /* current version of specification */
! 1374: #define DM_SPECVERSION 0x320
! 1375:
! 1376: /* field selection bits */
! 1377: #define DM_ORIENTATION 0x0000001L
! 1378: #define DM_PAPERSIZE 0x0000002L
! 1379: #define DM_PAPERLENGTH 0x0000004L
! 1380: #define DM_PAPERWIDTH 0x0000008L
! 1381: #define DM_SCALE 0x0000010L
! 1382: #define DM_COPIES 0x0000100L
! 1383: #define DM_DEFAULTSOURCE 0x0000200L
! 1384: #define DM_PRINTQUALITY 0x0000400L
! 1385: #define DM_COLOR 0x0000800L
! 1386: #define DM_DUPLEX 0x0001000L
! 1387: #define DM_YRESOLUTION 0x0002000L
! 1388: #define DM_TTOPTION 0x0004000L
! 1389: #define DM_COLLATE 0x0008000L
! 1390: #define DM_FORMNAME 0x0010000L
! 1391:
! 1392: /* orientation selections */
! 1393: #define DMORIENT_PORTRAIT 1
! 1394: #define DMORIENT_LANDSCAPE 2
! 1395:
! 1396: /* paper selections */
! 1397: #define DMPAPER_FIRST DMPAPER_LETTER
! 1398: #define DMPAPER_LETTER 1 /* Letter 8 1/2 x 11 in */
! 1399: #define DMPAPER_LETTERSMALL 2 /* Letter Small 8 1/2 x 11 in */
! 1400: #define DMPAPER_TABLOID 3 /* Tabloid 11 x 17 in */
! 1401: #define DMPAPER_LEDGER 4 /* Ledger 17 x 11 in */
! 1402: #define DMPAPER_LEGAL 5 /* Legal 8 1/2 x 14 in */
! 1403: #define DMPAPER_STATEMENT 6 /* Statement 5 1/2 x 8 1/2 in */
! 1404: #define DMPAPER_EXECUTIVE 7 /* Executive 7 1/4 x 10 1/2 in */
! 1405: #define DMPAPER_A3 8 /* A3 297 x 420 mm */
! 1406: #define DMPAPER_A4 9 /* A4 210 x 297 mm */
! 1407: #define DMPAPER_A4SMALL 10 /* A4 Small 210 x 297 mm */
! 1408: #define DMPAPER_A5 11 /* A5 148 x 210 mm */
! 1409: #define DMPAPER_B4 12 /* B4 250 x 354 */
! 1410: #define DMPAPER_B5 13 /* B5 182 x 257 mm */
! 1411: #define DMPAPER_FOLIO 14 /* Folio 8 1/2 x 13 in */
! 1412: #define DMPAPER_QUARTO 15 /* Quarto 215 x 275 mm */
! 1413: #define DMPAPER_10X14 16 /* 10x14 in */
! 1414: #define DMPAPER_11X17 17 /* 11x17 in */
! 1415: #define DMPAPER_NOTE 18 /* Note 8 1/2 x 11 in */
! 1416: #define DMPAPER_ENV_9 19 /* Envelope #9 3 7/8 x 8 7/8 */
! 1417: #define DMPAPER_ENV_10 20 /* Envelope #10 4 1/8 x 9 1/2 */
! 1418: #define DMPAPER_ENV_11 21 /* Envelope #11 4 1/2 x 10 3/8 */
! 1419: #define DMPAPER_ENV_12 22 /* Envelope #12 4 \276 x 11 */
! 1420: #define DMPAPER_ENV_14 23 /* Envelope #14 5 x 11 1/2 */
! 1421: #define DMPAPER_CSHEET 24 /* C size sheet */
! 1422: #define DMPAPER_DSHEET 25 /* D size sheet */
! 1423: #define DMPAPER_ESHEET 26 /* E size sheet */
! 1424: #define DMPAPER_ENV_DL 27 /* Envelope DL 110 x 220mm */
! 1425: #define DMPAPER_ENV_C5 28 /* Envelope C5 162 x 229 mm */
! 1426: #define DMPAPER_ENV_C3 29 /* Envelope C3 324 x 458 mm */
! 1427: #define DMPAPER_ENV_C4 30 /* Envelope C4 229 x 324 mm */
! 1428: #define DMPAPER_ENV_C6 31 /* Envelope C6 114 x 162 mm */
! 1429: #define DMPAPER_ENV_C65 32 /* Envelope C65 114 x 229 mm */
! 1430: #define DMPAPER_ENV_B4 33 /* Envelope B4 250 x 353 mm */
! 1431: #define DMPAPER_ENV_B5 34 /* Envelope B5 176 x 250 mm */
! 1432: #define DMPAPER_ENV_B6 35 /* Envelope B6 176 x 125 mm */
! 1433: #define DMPAPER_ENV_ITALY 36 /* Envelope 110 x 230 mm */
! 1434: #define DMPAPER_ENV_MONARCH 37 /* Envelope Monarch 3.875 x 7.5 in */
! 1435: #define DMPAPER_ENV_PERSONAL 38 /* 6 3/4 Envelope 3 5/8 x 6 1/2 in */
! 1436: #define DMPAPER_FANFOLD_US 39 /* US Std Fanfold 14 7/8 x 11 in */
! 1437: #define DMPAPER_FANFOLD_STD_GERMAN 40 /* German Std Fanfold 8 1/2 x 12 in */
! 1438: #define DMPAPER_FANFOLD_LGL_GERMAN 41 /* German Legal Fanfold 8 1/2 x 13 in */
! 1439:
! 1440: #define DMPAPER_LAST DMPAPER_FANFOLD_LGL_GERMAN
! 1441:
! 1442: #define DMPAPER_USER 256
! 1443:
! 1444: /* bin selections */
! 1445: #define DMBIN_FIRST DMBIN_UPPER
! 1446: #define DMBIN_UPPER 1
! 1447: #define DMBIN_ONLYONE 1
! 1448: #define DMBIN_LOWER 2
! 1449: #define DMBIN_MIDDLE 3
! 1450: #define DMBIN_MANUAL 4
! 1451: #define DMBIN_ENVELOPE 5
! 1452: #define DMBIN_ENVMANUAL 6
! 1453: #define DMBIN_AUTO 7
! 1454: #define DMBIN_TRACTOR 8
! 1455: #define DMBIN_SMALLFMT 9
! 1456: #define DMBIN_LARGEFMT 10
! 1457: #define DMBIN_LARGECAPACITY 11
! 1458: #define DMBIN_CASSETTE 14
! 1459: #define DMBIN_LAST DMBIN_CASSETTE
! 1460:
! 1461: #define DMBIN_USER 256 /* device specific bins start here */
! 1462:
! 1463: /* print qualities */
! 1464: #define DMRES_DRAFT (-1)
! 1465: #define DMRES_LOW (-2)
! 1466: #define DMRES_MEDIUM (-3)
! 1467: #define DMRES_HIGH (-4)
! 1468:
! 1469: /* color enable/disable for color printers */
! 1470: #define DMCOLOR_MONOCHROME 1
! 1471: #define DMCOLOR_COLOR 2
! 1472:
! 1473: /* duplex enable */
! 1474: #define DMDUP_SIMPLEX 1
! 1475: #define DMDUP_VERTICAL 2
! 1476: #define DMDUP_HORIZONTAL 3
! 1477:
! 1478: /* TrueType options */
! 1479: #define DMTT_BITMAP 1 /* print TT fonts as graphics */
! 1480: #define DMTT_DOWNLOAD 2 /* download TT fonts as soft fonts */
! 1481: #define DMTT_SUBDEV 3 /* substitute device fonts for TT fonts */
! 1482:
! 1483: /* Collation selections */
! 1484: #define DMCOLLATE_FALSE 0
! 1485: #define DMCOLLATE_TRUE 1
! 1486:
! 1487: /* DEVMODE dmDisplayFlags flags */
! 1488:
! 1489: #define DM_GRAYSCALE 0x00000001
! 1490: #define DM_INTERLACED 0x00000002
! 1491:
1.1 root 1492: /* GetRegionData/ExtCreateRegion */
1493:
1.1.1.2 root 1494: #define RDH_RECTANGLES 1
1.1 root 1495:
1496: typedef struct _RGNDATAHEADER {
1497: DWORD dwSize;
1498: DWORD iType;
1499: DWORD nCount;
1.1.1.2 root 1500: DWORD nRgnSize;
1501: RECT rcBound;
1.1 root 1502: } RGNDATAHEADER, *PRGNDATAHEADER;
1503:
1504: typedef struct _RGNDATA {
1505: RGNDATAHEADER rdh;
1.1.1.2 root 1506: char Buffer[1];
1.1 root 1507: } RGNDATA, *PRGNDATA, NEAR *NPRGNDATA, FAR *LPRGNDATA;
1508:
1.1.1.2 root 1509:
1510: typedef struct _ABC {
1511: int abcA;
1512: UINT abcB;
1513: int abcC;
1514: } ABC, *PABC, NEAR *NPABC, FAR *LPABC;
1515:
1516: typedef struct _ABCFLOAT {
1517: FLOAT abcfA;
1518: FLOAT abcfB;
1519: FLOAT abcfC;
1520: } ABCFLOAT, *PABCFLOAT, NEAR *NPABCFLOAT, FAR *LPABCFLOAT;
1521:
1522: #ifndef NOTEXTMETRIC
1523:
1524: typedef struct _OUTLINETEXTMETRICA {
1525: UINT otmSize;
1526: TEXTMETRICA otmTextMetrics;
1527: BYTE otmFiller;
1528: PANOSE otmPanoseNumber;
1529: UINT otmfsSelection;
1530: UINT otmfsType;
1.1.1.4 ! root 1531: int otmsCharSlopeRise;
! 1532: int otmsCharSlopeRun;
! 1533: int otmItalicAngle;
1.1.1.2 root 1534: UINT otmEMSquare;
1.1.1.4 ! root 1535: int otmAscent;
1.1.1.2 root 1536: int otmDescent;
1.1.1.4 ! root 1537: UINT otmLineGap;
1.1.1.3 root 1538: UINT otmsCapEmHeight;
1539: UINT otmsXHeight;
1.1.1.2 root 1540: RECT otmrcFontBox;
1541: int otmMacAscent;
1542: int otmMacDescent;
1543: UINT otmMacLineGap;
1544: UINT otmusMinimumPPEM;
1545: POINT otmptSubscriptSize;
1546: POINT otmptSubscriptOffset;
1547: POINT otmptSuperscriptSize;
1548: POINT otmptSuperscriptOffset;
1549: UINT otmsStrikeoutSize;
1550: int otmsStrikeoutPosition;
1551: int otmsUnderscoreSize;
1.1.1.4 ! root 1552: int otmsUnderscorePosition;
1.1.1.2 root 1553: PSTR otmpFamilyName;
1554: PSTR otmpFaceName;
1555: PSTR otmpStyleName;
1556: PSTR otmpFullName;
1557: } OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, NEAR *NPOUTLINETEXTMETRICA, FAR *LPOUTLINETEXTMETRICA;
1558: typedef struct _OUTLINETEXTMETRICW {
1559: UINT otmSize;
1560: TEXTMETRICW otmTextMetrics;
1561: BYTE otmFiller;
1562: PANOSE otmPanoseNumber;
1563: UINT otmfsSelection;
1564: UINT otmfsType;
1.1.1.4 ! root 1565: int otmsCharSlopeRise;
! 1566: int otmsCharSlopeRun;
! 1567: int otmItalicAngle;
1.1.1.2 root 1568: UINT otmEMSquare;
1.1.1.4 ! root 1569: int otmAscent;
1.1.1.2 root 1570: int otmDescent;
1.1.1.4 ! root 1571: UINT otmLineGap;
1.1.1.3 root 1572: UINT otmsCapEmHeight;
1573: UINT otmsXHeight;
1.1.1.2 root 1574: RECT otmrcFontBox;
1575: int otmMacAscent;
1576: int otmMacDescent;
1577: UINT otmMacLineGap;
1578: UINT otmusMinimumPPEM;
1579: POINT otmptSubscriptSize;
1580: POINT otmptSubscriptOffset;
1581: POINT otmptSuperscriptSize;
1582: POINT otmptSuperscriptOffset;
1583: UINT otmsStrikeoutSize;
1584: int otmsStrikeoutPosition;
1585: int otmsUnderscoreSize;
1.1.1.4 ! root 1586: int otmsUnderscorePosition;
1.1.1.2 root 1587: PSTR otmpFamilyName;
1588: PSTR otmpFaceName;
1589: PSTR otmpStyleName;
1590: PSTR otmpFullName;
1591: } OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, NEAR *NPOUTLINETEXTMETRICW, FAR *LPOUTLINETEXTMETRICW;
1592: #ifdef UNICODE
1.1.1.4 ! root 1593: typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC;
! 1594: typedef POUTLINETEXTMETRICW POUTLINETEXTMETRIC;
! 1595: typedef NPOUTLINETEXTMETRICW NPOUTLINETEXTMETRIC;
! 1596: typedef LPOUTLINETEXTMETRICW LPOUTLINETEXTMETRIC;
! 1597: #else
! 1598: typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC;
! 1599: typedef POUTLINETEXTMETRICA POUTLINETEXTMETRIC;
! 1600: typedef NPOUTLINETEXTMETRICA NPOUTLINETEXTMETRIC;
! 1601: typedef LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC;
1.1.1.2 root 1602: #endif // UNICODE
1603:
1604: #endif /* NOTEXTMETRIC */
1605:
1606:
1.1.1.3 root 1607: typedef struct tagPOLYTEXTA
1608: {
1.1.1.4 ! root 1609: int x;
! 1610: int y;
! 1611: UINT n;
! 1612: LPCSTR lpstr;
! 1613: UINT uiFlags;
! 1614: RECT rcl;
! 1615: int *pdx;
! 1616: } POLYTEXTA, *PPOLYTEXTA, NEAR *NPPOLYTEXTA, FAR *LPPOLYTEXTA;
1.1.1.3 root 1617: typedef struct tagPOLYTEXTW
1618: {
1.1.1.4 ! root 1619: int x;
! 1620: int y;
! 1621: UINT n;
! 1622: LPCWSTR lpstr;
! 1623: UINT uiFlags;
! 1624: RECT rcl;
! 1625: int *pdx;
! 1626: } POLYTEXTW, *PPOLYTEXTW, NEAR *NPPOLYTEXTW, FAR *LPPOLYTEXTW;
! 1627: #ifdef UNICODE
! 1628: typedef POLYTEXTW POLYTEXT;
! 1629: typedef PPOLYTEXTW PPOLYTEXT;
! 1630: typedef NPPOLYTEXTW NPPOLYTEXT;
! 1631: typedef LPPOLYTEXTW LPPOLYTEXT;
! 1632: #else
! 1633: typedef POLYTEXTA POLYTEXT;
! 1634: typedef PPOLYTEXTA PPOLYTEXT;
! 1635: typedef NPPOLYTEXTA NPPOLYTEXT;
! 1636: typedef LPPOLYTEXTA LPPOLYTEXT;
1.1.1.3 root 1637: #endif // UNICODE
1638:
1.1.1.2 root 1639: typedef struct _FIXED {
1640: WORD fract;
1641: short value;
1642: } FIXED;
1643:
1644:
1645: typedef struct _MAT2 {
1646: FIXED eM11;
1647: FIXED eM12;
1648: FIXED eM21;
1649: FIXED eM22;
1650: } MAT2, FAR *LPMAT2;
1651:
1652:
1653:
1654: typedef struct _GLYPHMETRICS {
1655: UINT gmBlackBoxX;
1656: UINT gmBlackBoxY;
1657: POINT gmptGlyphOrigin;
1658: short gmCellIncX;
1659: short gmCellIncY;
1660: } GLYPHMETRICS, FAR *LPGLYPHMETRICS;
1661:
1662: // GetGlyphOutline constants
1663:
1.1.1.4 ! root 1664: #define GGO_METRICS 0
1.1.1.2 root 1665: #define GGO_BITMAP 1
1666: #define GGO_NATIVE 2
1667:
1668: #define TT_POLYGON_TYPE 24
1669:
1670: #define TT_PRIM_LINE 1
1671: #define TT_PRIM_QSPLINE 2
1672:
1673: typedef struct tagPOINTFX
1674: {
1675: FIXED x;
1676: FIXED y;
1677: } POINTFX, FAR* LPPOINTFX;
1678:
1679: typedef struct tagTTPOLYCURVE
1680: {
1681: WORD wType;
1682: WORD cpfx;
1683: POINTFX apfx[1];
1684: } TTPOLYCURVE, FAR* LPTTPOLYCURVE;
1685:
1686: typedef struct tagTTPOLYGONHEADER
1687: {
1688: DWORD cb;
1689: DWORD dwType;
1690: POINTFX pfxStart;
1691: } TTPOLYGONHEADER, FAR* LPTTPOLYGONHEADER;
1692:
1693:
1694:
1695: typedef struct _RASTERIZER_STATUS {
1696: short nSize;
1697: short wFlags;
1698: short nLanguageID;
1699: } RASTERIZER_STATUS, FAR *LPRASTERIZER_STATUS;
1700:
1701: /* bits defined in wFlags of RASTERIZER_STATUS */
1702: #define TT_AVAILABLE 0x0001
1703: #define TT_ENABLED 0x0002
1704:
1705: #ifdef STRICT
1.1.1.3 root 1706: #if !defined(NOTEXTMETRIC)
1.1.1.4 ! root 1707: typedef int (CALLBACK* OLDFONTENUMPROC)(CONST LOGFONT *, CONST TEXTMETRIC *, DWORD, LPARAM);
1.1.1.3 root 1708: #else
1.1.1.4 ! root 1709: typedef int (CALLBACK* OLDFONTENUMPROC)(CONST LOGFONT * ,CONST VOID *, DWORD, LPARAM);
1.1.1.3 root 1710: #endif
1711: typedef int (CALLBACK* GOBJENUMPROC)(LPVOID, LPARAM);
1.1.1.2 root 1712: typedef VOID (CALLBACK* LINEDDAPROC)(int, int, LPARAM);
1713: #else
1.1.1.4 ! root 1714: typedef FARPROC OLDFONTENUMPROC;
1.1.1.2 root 1715: typedef FARPROC GOBJENUMPROC;
1716: typedef FARPROC LINEDDAPROC;
1717: #endif
1718:
1.1.1.4 ! root 1719: typedef OLDFONTENUMPROC FONTENUMPROC;
! 1720:
1.1.1.2 root 1721: int WINAPI AddFontResourceA(LPCSTR);
1722: int WINAPI AddFontResourceW(LPCWSTR);
1.1 root 1723: #ifdef UNICODE
1.1.1.4 ! root 1724: #define AddFontResource AddFontResourceW
1.1 root 1725: #else
1.1.1.4 ! root 1726: #define AddFontResource AddFontResourceA
1.1 root 1727: #endif // !UNICODE
1728:
1.1.1.2 root 1729: BOOL WINAPI AnimatePalette(HPALETTE, UINT, UINT, CONST PALETTEENTRY *);
1730: BOOL WINAPI Arc(HDC, int, int, int, int, int, int, int, int);
1731: BOOL WINAPI BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
1732: BOOL WINAPI CancelDC(HDC);
1733: BOOL WINAPI Chord(HDC, int, int, int, int, int, int, int, int);
1734: HMETAFILE WINAPI CloseMetaFile(HDC);
1735: int WINAPI CombineRgn(HRGN, HRGN, HRGN, int);
1.1.1.4 ! root 1736: HMETAFILE WINAPI CopyMetaFileA(HMETAFILE, LPCSTR);
! 1737: HMETAFILE WINAPI CopyMetaFileW(HMETAFILE, LPCWSTR);
1.1.1.2 root 1738: #ifdef UNICODE
1.1.1.4 ! root 1739: #define CopyMetaFile CopyMetaFileW
1.1.1.2 root 1740: #else
1.1.1.4 ! root 1741: #define CopyMetaFile CopyMetaFileA
1.1.1.2 root 1742: #endif // !UNICODE
1743: HBITMAP WINAPI CreateBitmap(int, int, UINT, UINT, CONST VOID *);
1.1.1.4 ! root 1744: HBITMAP WINAPI CreateBitmapIndirect(CONST BITMAP *);
! 1745: HBRUSH WINAPI CreateBrushIndirect(CONST LOGBRUSH *);
1.1.1.2 root 1746: HBITMAP WINAPI CreateCompatibleBitmap(HDC, int, int);
1747: HBITMAP WINAPI CreateDiscardableBitmap(HDC, int, int);
1748: HDC WINAPI CreateCompatibleDC(HDC);
1.1.1.4 ! root 1749: HDC WINAPI CreateDCA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA *);
! 1750: HDC WINAPI CreateDCW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW *);
1.1.1.3 root 1751: #ifdef UNICODE
1.1.1.4 ! root 1752: #define CreateDC CreateDCW
1.1.1.3 root 1753: #else
1.1.1.4 ! root 1754: #define CreateDC CreateDCA
1.1.1.3 root 1755: #endif // !UNICODE
1.1.1.4 ! root 1756: HBITMAP WINAPI CreateDIBitmap(HDC, CONST BITMAPINFOHEADER *, DWORD, CONST VOID *, CONST BITMAPINFO *, UINT);
1.1.1.2 root 1757: HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL, UINT);
1.1.1.4 ! root 1758: HBRUSH WINAPI CreateDIBPatternBrushPt(CONST VOID *, UINT);
1.1.1.2 root 1759: HRGN WINAPI CreateEllipticRgn(int, int, int, int);
1760: HRGN WINAPI CreateEllipticRgnIndirect(CONST RECT *);
1.1.1.3 root 1761: HFONT WINAPI CreateFontIndirectA(CONST LOGFONTA *);
1762: HFONT WINAPI CreateFontIndirectW(CONST LOGFONTW *);
1.1 root 1763: #ifdef UNICODE
1.1.1.4 ! root 1764: #define CreateFontIndirect CreateFontIndirectW
1.1 root 1765: #else
1.1.1.4 ! root 1766: #define CreateFontIndirect CreateFontIndirectA
1.1 root 1767: #endif // !UNICODE
1.1.1.2 root 1768: HFONT WINAPI CreateFontA(int, int, int, int, int, DWORD,
1769: DWORD, DWORD, DWORD, DWORD, DWORD,
1770: DWORD, DWORD, LPCSTR);
1771: HFONT WINAPI CreateFontW(int, int, int, int, int, DWORD,
1772: DWORD, DWORD, DWORD, DWORD, DWORD,
1773: DWORD, DWORD, LPCWSTR);
1.1 root 1774: #ifdef UNICODE
1.1.1.4 ! root 1775: #define CreateFont CreateFontW
1.1 root 1776: #else
1.1.1.4 ! root 1777: #define CreateFont CreateFontA
1.1 root 1778: #endif // !UNICODE
1779:
1.1.1.2 root 1780: HBRUSH WINAPI CreateHatchBrush(int, COLORREF);
1.1.1.4 ! root 1781: HDC WINAPI CreateICA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA *);
! 1782: HDC WINAPI CreateICW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW *);
1.1.1.3 root 1783: #ifdef UNICODE
1.1.1.4 ! root 1784: #define CreateIC CreateICW
1.1.1.3 root 1785: #else
1.1.1.4 ! root 1786: #define CreateIC CreateICA
1.1.1.3 root 1787: #endif // !UNICODE
1.1.1.2 root 1788: HDC WINAPI CreateMetaFileA(LPCSTR);
1789: HDC WINAPI CreateMetaFileW(LPCWSTR);
1790: #ifdef UNICODE
1.1.1.4 ! root 1791: #define CreateMetaFile CreateMetaFileW
1.1.1.2 root 1792: #else
1.1.1.4 ! root 1793: #define CreateMetaFile CreateMetaFileA
1.1.1.2 root 1794: #endif // !UNICODE
1.1.1.3 root 1795: HPALETTE WINAPI CreatePalette(CONST LOGPALETTE *);
1.1.1.2 root 1796: HPEN WINAPI CreatePen(int, int, COLORREF);
1.1.1.4 ! root 1797: HPEN WINAPI CreatePenIndirect(CONST LOGPEN *);
1.1.1.2 root 1798: HRGN WINAPI CreatePolyPolygonRgn(CONST POINT *, CONST INT *, int, int);
1799: HBRUSH WINAPI CreatePatternBrush(HBITMAP);
1800: HRGN WINAPI CreateRectRgn(int, int, int, int);
1801: HRGN WINAPI CreateRectRgnIndirect(CONST RECT *);
1802: HRGN WINAPI CreateRoundRectRgn(int, int, int, int, int, int);
1.1.1.4 ! root 1803: BOOL WINAPI CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR);
! 1804: BOOL WINAPI CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR);
1.1.1.2 root 1805: #ifdef UNICODE
1.1.1.4 ! root 1806: #define CreateScalableFontResource CreateScalableFontResourceW
1.1.1.2 root 1807: #else
1.1.1.4 ! root 1808: #define CreateScalableFontResource CreateScalableFontResourceA
1.1.1.2 root 1809: #endif // !UNICODE
1810: HBRUSH WINAPI CreateSolidBrush(COLORREF);
1.1 root 1811:
1.1.1.2 root 1812: BOOL WINAPI DeleteDC(HDC);
1813: BOOL WINAPI DeleteMetaFile(HMETAFILE);
1814: BOOL WINAPI DeleteObject(HGDIOBJ);
1.1.1.4 ! root 1815:
! 1816: /* define types of pointers to ExtDeviceMode() and DeviceCapabilities()
! 1817: * functions for Win 3.1 compatibility
! 1818: */
! 1819:
! 1820: typedef UINT (CALLBACK* LPFNDEVMODE)(HWND, HMODULE, LPDEVMODE, LPSTR, LPSTR, LPDEVMODE, LPSTR, UINT);
! 1821:
! 1822: typedef DWORD (CALLBACK* LPFNDEVCAPS)(LPSTR, LPSTR, UINT, LPSTR, LPDEVMODE);
! 1823:
! 1824: /* mode selections for the device mode function */
! 1825: #define DM_UPDATE 1
! 1826: #define DM_COPY 2
! 1827: #define DM_PROMPT 4
! 1828: #define DM_MODIFY 8
! 1829:
! 1830: #define DM_IN_BUFFER DM_MODIFY
! 1831: #define DM_IN_PROMPT DM_PROMPT
! 1832: #define DM_OUT_BUFFER DM_COPY
! 1833: #define DM_OUT_DEFAULT DM_UPDATE
! 1834:
! 1835: /* device capabilities indices */
! 1836: #define DC_FIELDS 1
! 1837: #define DC_PAPERS 2
! 1838: #define DC_PAPERSIZE 3
! 1839: #define DC_MINEXTENT 4
! 1840: #define DC_MAXEXTENT 5
! 1841: #define DC_BINS 6
! 1842: #define DC_DUPLEX 7
! 1843: #define DC_SIZE 8
! 1844: #define DC_EXTRA 9
! 1845: #define DC_VERSION 10
! 1846: #define DC_DRIVER 11
! 1847: #define DC_BINNAMES 12
! 1848: #define DC_ENUMRESOLUTIONS 13
! 1849: #define DC_FILEDEPENDENCIES 14
! 1850: #define DC_TRUETYPE 15
! 1851: #define DC_PAPERNAMES 16
! 1852: #define DC_ORIENTATION 17
! 1853: #define DC_COPIES 18
! 1854:
! 1855: /* bit fields of the return value (DWORD) for DC_TRUETYPE */
! 1856: #define DCTT_BITMAP 0x0000001L
! 1857: #define DCTT_DOWNLOAD 0x0000002L
! 1858: #define DCTT_SUBDEV 0x0000004L
! 1859:
! 1860: int WINAPI DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD,
! 1861: LPSTR, CONST DEVMODEA *);
! 1862: int WINAPI DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD,
! 1863: LPWSTR, CONST DEVMODEW *);
! 1864: #ifdef UNICODE
! 1865: #define DeviceCapabilities DeviceCapabilitiesW
! 1866: #else
! 1867: #define DeviceCapabilities DeviceCapabilitiesA
! 1868: #endif // !UNICODE
! 1869:
1.1.1.2 root 1870: BOOL WINAPI Ellipse(HDC, int, int, int, int);
1.1 root 1871:
1.1.1.2 root 1872: int WINAPI EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROC, LPARAM);
1873: int WINAPI EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROC, LPARAM);
1874: #ifdef UNICODE
1.1.1.4 ! root 1875: #define EnumFontFamilies EnumFontFamiliesW
1.1.1.2 root 1876: #else
1.1.1.4 ! root 1877: #define EnumFontFamilies EnumFontFamiliesA
1.1.1.2 root 1878: #endif // !UNICODE
1879: int WINAPI EnumFontsA(HDC, LPCSTR, FONTENUMPROC, LPARAM);
1880: int WINAPI EnumFontsW(HDC, LPCWSTR, FONTENUMPROC, LPARAM);
1.1 root 1881: #ifdef UNICODE
1.1.1.4 ! root 1882: #define EnumFonts EnumFontsW
1.1 root 1883: #else
1.1.1.4 ! root 1884: #define EnumFonts EnumFontsA
1.1 root 1885: #endif // !UNICODE
1886:
1.1.1.2 root 1887: #ifdef STRICT
1888: int WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPARAM);
1889: #else
1890: int WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPVOID);
1891: #endif
1892:
1893: BOOL WINAPI EqualRgn(HRGN, HRGN);
1894: int WINAPI Escape(HDC, int, int, LPCSTR, LPVOID);
1895: int WINAPI ExtEscape(HDC, int, int, LPCSTR, int, LPSTR);
1896: int WINAPI DrawEscape(HDC, int, int, LPCSTR);
1897: int WINAPI ExcludeClipRect(HDC, int, int, int, int);
1.1.1.4 ! root 1898: HRGN WINAPI ExtCreateRegion(CONST XFORM *, DWORD, CONST RGNDATA *);
1.1.1.2 root 1899: BOOL WINAPI ExtFloodFill(HDC, int, int, COLORREF, UINT);
1900: BOOL WINAPI FillRgn(HDC, HRGN, HBRUSH);
1901: BOOL WINAPI FloodFill(HDC, int, int, COLORREF);
1902: BOOL WINAPI FrameRgn(HDC, HRGN, HBRUSH, int, int);
1903: int WINAPI GetROP2(HDC);
1904: BOOL WINAPI GetAspectRatioFilterEx(HDC, LPSIZE);
1905: COLORREF WINAPI GetBkColor(HDC);
1906: int WINAPI GetBkMode(HDC);
1907: LONG WINAPI GetBitmapBits(HBITMAP, LONG, LPVOID);
1908: BOOL WINAPI GetBitmapDimensionEx(HBITMAP, LPSIZE);
1909: UINT WINAPI GetBoundsRect(HDC, LPRECT, UINT);
1.1 root 1910:
1.1.1.2 root 1911: BOOL WINAPI GetBrushOrgEx(HDC, LPPOINT);
1912:
1913: BOOL WINAPI GetCharWidthA(HDC, UINT, UINT, LPINT);
1914: BOOL WINAPI GetCharWidthW(HDC, UINT, UINT, LPINT);
1.1 root 1915: #ifdef UNICODE
1.1.1.4 ! root 1916: #define GetCharWidth GetCharWidthW
! 1917: #else
! 1918: #define GetCharWidth GetCharWidthA
! 1919: #endif // !UNICODE
! 1920: BOOL WINAPI GetCharWidth32A(HDC, UINT, UINT, LPINT);
! 1921: BOOL WINAPI GetCharWidth32W(HDC, UINT, UINT, LPINT);
! 1922: #ifdef UNICODE
! 1923: #define GetCharWidth32 GetCharWidth32W
1.1 root 1924: #else
1.1.1.4 ! root 1925: #define GetCharWidth32 GetCharWidth32A
1.1 root 1926: #endif // !UNICODE
1.1.1.2 root 1927: BOOL APIENTRY GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT);
1928: BOOL APIENTRY GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT);
1929: #ifdef UNICODE
1.1.1.4 ! root 1930: #define GetCharWidthFloat GetCharWidthFloatW
1.1.1.2 root 1931: #else
1.1.1.4 ! root 1932: #define GetCharWidthFloat GetCharWidthFloatA
1.1.1.2 root 1933: #endif // !UNICODE
1.1 root 1934:
1.1.1.2 root 1935: BOOL APIENTRY GetCharABCWidthsA(HDC, UINT, UINT, LPABC);
1936: BOOL APIENTRY GetCharABCWidthsW(HDC, UINT, UINT, LPABC);
1937: #ifdef UNICODE
1.1.1.4 ! root 1938: #define GetCharABCWidths GetCharABCWidthsW
1.1.1.2 root 1939: #else
1.1.1.4 ! root 1940: #define GetCharABCWidths GetCharABCWidthsA
1.1.1.2 root 1941: #endif // !UNICODE
1942: BOOL APIENTRY GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT);
1943: BOOL APIENTRY GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT);
1944: #ifdef UNICODE
1.1.1.4 ! root 1945: #define GetCharABCWidthsFloat GetCharABCWidthsFloatW
1.1.1.2 root 1946: #else
1.1.1.4 ! root 1947: #define GetCharABCWidthsFloat GetCharABCWidthsFloatA
1.1.1.2 root 1948: #endif // !UNICODE
1949:
1950: int WINAPI GetClipBox(HDC, LPRECT);
1951: int WINAPI GetClipRgn(HDC, HRGN);
1952: int WINAPI GetMetaRgn(HDC, HRGN);
1953: HGDIOBJ WINAPI GetCurrentObject(HDC, UINT);
1954: BOOL WINAPI GetCurrentPositionEx(HDC, LPPOINT);
1955: int WINAPI GetDeviceCaps(HDC, int);
1956: int WINAPI GetDIBits(HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT);
1957: DWORD WINAPI GetFontData(HDC, DWORD, DWORD, LPVOID, DWORD);
1.1.1.4 ! root 1958: DWORD WINAPI GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST MAT2 *);
! 1959: DWORD WINAPI GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST MAT2 *);
! 1960: #ifdef UNICODE
! 1961: #define GetGlyphOutline GetGlyphOutlineW
! 1962: #else
! 1963: #define GetGlyphOutline GetGlyphOutlineA
! 1964: #endif // !UNICODE
! 1965: int WINAPI GetGraphicsMode(HDC);
1.1.1.2 root 1966: int WINAPI GetMapMode(HDC);
1967: UINT WINAPI GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID);
1968: HMETAFILE WINAPI GetMetaFileA(LPCSTR);
1969: HMETAFILE WINAPI GetMetaFileW(LPCWSTR);
1970: #ifdef UNICODE
1.1.1.4 ! root 1971: #define GetMetaFile GetMetaFileW
1.1.1.2 root 1972: #else
1.1.1.4 ! root 1973: #define GetMetaFile GetMetaFileA
1.1.1.2 root 1974: #endif // !UNICODE
1975: COLORREF WINAPI GetNearestColor(HDC, COLORREF);
1976: UINT WINAPI GetNearestPaletteIndex(HPALETTE, COLORREF);
1977: DWORD WINAPI GetObjectType(HGDIOBJ h);
1978:
1979: #ifndef NOTEXTMETRIC
1980:
1.1.1.3 root 1981: UINT APIENTRY GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA);
1982: UINT APIENTRY GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW);
1.1.1.2 root 1983: #ifdef UNICODE
1.1.1.4 ! root 1984: #define GetOutlineTextMetrics GetOutlineTextMetricsW
1.1.1.2 root 1985: #else
1.1.1.4 ! root 1986: #define GetOutlineTextMetrics GetOutlineTextMetricsA
1.1.1.2 root 1987: #endif // !UNICODE
1988:
1989: #endif /* NOTEXTMETRIC */
1990:
1991: UINT WINAPI GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY);
1992: COLORREF WINAPI GetPixel(HDC, int, int);
1993: int WINAPI GetPolyFillMode(HDC);
1994: BOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS, UINT);
1995: DWORD WINAPI GetRegionData(HRGN, DWORD, LPRGNDATA);
1996: int WINAPI GetRgnBox(HRGN, LPRECT);
1997: HGDIOBJ WINAPI GetStockObject(int);
1998: int WINAPI GetStretchBltMode(HDC);
1999: UINT WINAPI GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY);
2000: UINT WINAPI GetSystemPaletteUse(HDC);
2001: int WINAPI GetTextCharacterExtra(HDC);
2002: UINT WINAPI GetTextAlign(HDC);
2003: COLORREF WINAPI GetTextColor(HDC);
1.1 root 2004:
2005: BOOL APIENTRY GetTextExtentPointA(
1.1.1.2 root 2006: HDC,
2007: LPCSTR,
2008: int,
2009: LPSIZE
1.1 root 2010: );
2011: BOOL APIENTRY GetTextExtentPointW(
1.1.1.2 root 2012: HDC,
2013: LPCWSTR,
2014: int,
2015: LPSIZE
1.1 root 2016: );
2017: #ifdef UNICODE
1.1.1.4 ! root 2018: #define GetTextExtentPoint GetTextExtentPointW
! 2019: #else
! 2020: #define GetTextExtentPoint GetTextExtentPointA
! 2021: #endif // !UNICODE
! 2022:
! 2023: BOOL APIENTRY GetTextExtentPoint32A(
! 2024: HDC,
! 2025: LPCSTR,
! 2026: int,
! 2027: LPSIZE
! 2028: );
! 2029: BOOL APIENTRY GetTextExtentPoint32W(
! 2030: HDC,
! 2031: LPCWSTR,
! 2032: int,
! 2033: LPSIZE
! 2034: );
! 2035: #ifdef UNICODE
! 2036: #define GetTextExtentPoint32 GetTextExtentPoint32W
1.1 root 2037: #else
1.1.1.4 ! root 2038: #define GetTextExtentPoint32 GetTextExtentPoint32A
1.1 root 2039: #endif // !UNICODE
2040:
1.1.1.2 root 2041: BOOL APIENTRY GetTextExtentExPointA(
2042: HDC,
2043: LPCSTR,
2044: int,
2045: int,
2046: LPINT,
2047: LPINT,
2048: LPSIZE
2049: );
2050: BOOL APIENTRY GetTextExtentExPointW(
2051: HDC,
2052: LPCWSTR,
2053: int,
2054: int,
2055: LPINT,
2056: LPINT,
2057: LPSIZE
2058: );
2059: #ifdef UNICODE
1.1.1.4 ! root 2060: #define GetTextExtentExPoint GetTextExtentExPointW
1.1.1.2 root 2061: #else
1.1.1.4 ! root 2062: #define GetTextExtentExPoint GetTextExtentExPointA
1.1.1.2 root 2063: #endif // !UNICODE
2064:
2065: BOOL WINAPI GetViewportExtEx(HDC, LPSIZE);
2066: BOOL WINAPI GetViewportOrgEx(HDC, LPPOINT);
2067: BOOL WINAPI GetWindowExtEx(HDC, LPSIZE);
2068: BOOL WINAPI GetWindowOrgEx(HDC, LPPOINT);
2069:
2070: int WINAPI IntersectClipRect(HDC, int, int, int, int);
2071: BOOL WINAPI InvertRgn(HDC, HRGN);
2072: BOOL WINAPI LineDDA(int, int, int, int, LINEDDAPROC, LPARAM);
2073: BOOL WINAPI LineTo(HDC, int, int);
2074: BOOL WINAPI MaskBlt(HDC, int, int, int, int,
2075: HDC, int, int, HBITMAP, int, int, DWORD);
1.1.1.4 ! root 2076: BOOL WINAPI PlgBlt(HDC, CONST POINT *, HDC, int, int, int,
1.1.1.2 root 2077: int, HBITMAP, int, int);
2078:
2079: int WINAPI OffsetClipRgn(HDC, int, int);
2080: int WINAPI OffsetRgn(HRGN, int, int);
2081: BOOL WINAPI PatBlt(HDC, int, int, int, int, DWORD);
2082: BOOL WINAPI Pie(HDC, int, int, int, int, int, int, int, int);
2083: BOOL WINAPI PlayMetaFile(HDC, HMETAFILE);
2084: BOOL WINAPI PaintRgn(HDC, HRGN);
1.1.1.4 ! root 2085: BOOL WINAPI PolyPolygon(HDC, CONST POINT *, CONST INT *, int);
1.1.1.2 root 2086: BOOL WINAPI PtInRegion(HRGN, int, int);
2087: BOOL WINAPI PtVisible(HDC, int, int);
1.1.1.3 root 2088: BOOL WINAPI RectInRegion(HRGN, CONST RECT *);
1.1.1.2 root 2089: BOOL WINAPI RectVisible(HDC, CONST RECT *);
2090: BOOL WINAPI Rectangle(HDC, int, int, int, int);
2091: BOOL WINAPI RestoreDC(HDC, int);
1.1.1.4 ! root 2092: HDC WINAPI ResetDCA(HDC, CONST DEVMODEA *);
! 2093: HDC WINAPI ResetDCW(HDC, CONST DEVMODEW *);
! 2094: #ifdef UNICODE
! 2095: #define ResetDC ResetDCW
! 2096: #else
! 2097: #define ResetDC ResetDCA
! 2098: #endif // !UNICODE
1.1.1.2 root 2099: UINT WINAPI RealizePalette(HDC);
1.1.1.4 ! root 2100: BOOL WINAPI RemoveFontResourceA(LPCSTR);
! 2101: BOOL WINAPI RemoveFontResourceW(LPCWSTR);
1.1 root 2102: #ifdef UNICODE
1.1.1.4 ! root 2103: #define RemoveFontResource RemoveFontResourceW
1.1 root 2104: #else
1.1.1.4 ! root 2105: #define RemoveFontResource RemoveFontResourceA
1.1 root 2106: #endif // !UNICODE
1.1.1.2 root 2107: BOOL WINAPI RoundRect(HDC, int, int, int, int, int, int);
2108: BOOL WINAPI ResizePalette(HPALETTE, UINT);
1.1 root 2109:
1.1.1.2 root 2110: int WINAPI SaveDC(HDC);
2111: int WINAPI SelectClipRgn(HDC, HRGN);
2112: int WINAPI ExtSelectClipRgn(HDC, HRGN, int);
2113: int WINAPI SetMetaRgn(HDC);
2114: HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);
2115: HPALETTE WINAPI SelectPalette(HDC, HPALETTE, BOOL);
2116: COLORREF WINAPI SetBkColor(HDC, COLORREF);
2117: int WINAPI SetBkMode(HDC, int);
1.1.1.3 root 2118: LONG WINAPI SetBitmapBits(HBITMAP, DWORD, CONST VOID *);
1.1.1.2 root 2119:
1.1.1.3 root 2120: UINT WINAPI SetBoundsRect(HDC, CONST RECT *, UINT);
1.1.1.4 ! root 2121: int WINAPI SetDIBits(HDC, HBITMAP, UINT, UINT, CONST VOID *, CONST BITMAPINFO *, UINT);
! 2122: int WINAPI SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int,
! 2123: int, UINT, UINT, CONST VOID *, CONST BITMAPINFO *, UINT);
1.1.1.2 root 2124: DWORD WINAPI SetMapperFlags(HDC, DWORD);
1.1.1.4 ! root 2125: int WINAPI SetGraphicsMode(HDC hdc, int iMode);
1.1.1.2 root 2126: int WINAPI SetMapMode(HDC, int);
1.1.1.4 ! root 2127: HMETAFILE WINAPI SetMetaFileBitsEx(UINT, CONST BYTE *);
1.1.1.2 root 2128: UINT WINAPI SetPaletteEntries(HPALETTE, UINT, UINT, CONST PALETTEENTRY *);
2129: COLORREF WINAPI SetPixel(HDC, int, int, COLORREF);
2130: BOOL WINAPI SetPixelV(HDC, int, int, COLORREF);
2131: int WINAPI SetPolyFillMode(HDC, int);
2132: BOOL WINAPI StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
2133: BOOL WINAPI SetRectRgn(HRGN, int, int, int, int);
2134: int WINAPI StretchDIBits(HDC, int, int, int, int, int, int, int, int, CONST
1.1.1.4 ! root 2135: VOID *, CONST BITMAPINFO *, UINT, DWORD);
1.1.1.2 root 2136: int WINAPI SetROP2(HDC, int);
2137: int WINAPI SetStretchBltMode(HDC, int);
2138: UINT WINAPI SetSystemPaletteUse(HDC, UINT);
2139: int WINAPI SetTextCharacterExtra(HDC, int);
2140: COLORREF WINAPI SetTextColor(HDC, COLORREF);
2141: UINT WINAPI SetTextAlign(HDC, UINT);
2142: BOOL WINAPI SetTextJustification(HDC, int, int);
2143: BOOL WINAPI UpdateColors(HDC);
1.1 root 2144:
2145: #ifndef NOMETAFILE
2146:
1.1.1.2 root 2147: BOOL WINAPI PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT);
2148: typedef int (CALLBACK* MFENUMPROC)(HDC, HANDLETABLE FAR*, METARECORD FAR*, int, LPARAM);
2149: BOOL WINAPI EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM);
2150:
1.1.1.4 ! root 2151: typedef int (CALLBACK* ENHMFENUMPROC)(HDC, HANDLETABLE FAR*, CONST ENHMETARECORD *, int, LPARAM);
1.1.1.3 root 2152:
1.1.1.2 root 2153: // Enhanced Metafile Function Declarations
2154:
2155: HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
1.1.1.4 ! root 2156: HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE, LPCSTR);
! 2157: HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR);
1.1.1.2 root 2158: #ifdef UNICODE
1.1.1.4 ! root 2159: #define CopyEnhMetaFile CopyEnhMetaFileW
1.1.1.2 root 2160: #else
1.1.1.4 ! root 2161: #define CopyEnhMetaFile CopyEnhMetaFileA
1.1.1.2 root 2162: #endif // !UNICODE
1.1.1.4 ! root 2163: HDC WINAPI CreateEnhMetaFileA(HDC, LPCSTR, CONST RECT *, LPCSTR);
! 2164: HDC WINAPI CreateEnhMetaFileW(HDC, LPCWSTR, CONST RECT *, LPCWSTR);
1.1.1.2 root 2165: #ifdef UNICODE
1.1.1.4 ! root 2166: #define CreateEnhMetaFile CreateEnhMetaFileW
1.1.1.2 root 2167: #else
1.1.1.4 ! root 2168: #define CreateEnhMetaFile CreateEnhMetaFileA
1.1.1.2 root 2169: #endif // !UNICODE
2170: BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE);
1.1.1.4 ! root 2171: BOOL WINAPI EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC,
! 2172: LPVOID, CONST RECT *);
! 2173: HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
! 2174: HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
1.1.1.2 root 2175: #ifdef UNICODE
1.1.1.4 ! root 2176: #define GetEnhMetaFile GetEnhMetaFileW
1.1.1.2 root 2177: #else
1.1.1.4 ! root 2178: #define GetEnhMetaFile GetEnhMetaFileA
1.1.1.2 root 2179: #endif // !UNICODE
2180: UINT WINAPI GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE);
2181: UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR );
2182: UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR );
2183: #ifdef UNICODE
1.1.1.4 ! root 2184: #define GetEnhMetaFileDescription GetEnhMetaFileDescriptionW
1.1.1.2 root 2185: #else
1.1.1.4 ! root 2186: #define GetEnhMetaFileDescription GetEnhMetaFileDescriptionA
1.1.1.2 root 2187: #endif // !UNICODE
2188: UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER );
2189: UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY );
2190: UINT WINAPI GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC);
1.1.1.4 ! root 2191: BOOL WINAPI PlayEnhMetaFile(HDC, HENHMETAFILE, CONST RECT *);
! 2192: BOOL WINAPI PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, CONST ENHMETARECORD *, UINT);
! 2193: HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT, CONST BYTE *);
! 2194: HENHMETAFILE WINAPI SetWinMetaFileBits(UINT, CONST BYTE *, HDC, CONST METAFILEPICT *);
! 2195: BOOL WINAPI GdiComment(HDC, UINT, CONST BYTE *);
1.1 root 2196:
1.1.1.2 root 2197: #endif /* NOMETAFILE */
1.1 root 2198:
2199: #ifndef NOTEXTMETRIC
2200:
1.1.1.2 root 2201: BOOL WINAPI GetTextMetricsA(HDC, LPTEXTMETRICA);
2202: BOOL WINAPI GetTextMetricsW(HDC, LPTEXTMETRICW);
1.1 root 2203: #ifdef UNICODE
1.1.1.4 ! root 2204: #define GetTextMetrics GetTextMetricsW
1.1 root 2205: #else
1.1.1.4 ! root 2206: #define GetTextMetrics GetTextMetricsA
1.1 root 2207: #endif // !UNICODE
2208:
2209: #endif
2210:
2211: /* new GDI */
1.1.1.2 root 2212: BOOL WINAPI AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT);
1.1.1.4 ! root 2213: BOOL WINAPI PolyPolyline(HDC, CONST POINT *, CONST DWORD *, DWORD);
1.1.1.2 root 2214: BOOL WINAPI GetWorldTransform(HDC, LPXFORM);
1.1.1.4 ! root 2215: BOOL WINAPI SetWorldTransform(HDC, CONST XFORM *);
! 2216: BOOL WINAPI ModifyWorldTransform(HDC, CONST XFORM *, DWORD);
! 2217: BOOL WINAPI CombineTransform(LPXFORM, CONST XFORM *, CONST XFORM *);
1.1 root 2218:
1.1.1.3 root 2219: /* Flags value for COLORADJUSTMENT */
2220: #define CA_NEGATIVE 0x0001
2221: #define CA_LOG_FILTER 0x0002
2222:
2223: /* IlluminantIndex values */
1.1.1.4 ! root 2224: #define ILLUMINANT_DEVICE_DEFAULT 0
1.1.1.3 root 2225: #define ILLUMINANT_A 1
2226: #define ILLUMINANT_B 2
2227: #define ILLUMINANT_C 3
2228: #define ILLUMINANT_D50 4
2229: #define ILLUMINANT_D55 5
2230: #define ILLUMINANT_D65 6
2231: #define ILLUMINANT_D75 7
2232: #define ILLUMINANT_F2 8
2233: #define ILLUMINANT_MAX_INDEX ILLUMINANT_F2
2234:
1.1.1.4 ! root 2235: #define ILLUMINANT_TUNGSTEN ILLUMINANT_A
1.1.1.3 root 2236: #define ILLUMINANT_DAYLIGHT ILLUMINANT_C
2237: #define ILLUMINANT_FLUORESCENT ILLUMINANT_F2
2238: #define ILLUMINANT_NTSC ILLUMINANT_C
2239:
2240: /* Min and max for RedGamma, GreenGamma, BlueGamma */
2241: #define RGB_GAMMA_MIN (WORD)02500
2242: #define RGB_GAMMA_MAX (WORD)65000
2243:
2244: /* Min and max for ReferenceBlack and ReferenceWhite */
2245: #define REFERENCE_WHITE_MIN (WORD)6000
2246: #define REFERENCE_WHITE_MAX (WORD)10000
2247: #define REFERENCE_BLACK_MIN (WORD)0
2248: #define REFERENCE_BLACK_MAX (WORD)4000
2249:
2250: /* Min and max for Contrast, Brightness, Colorfulness, RedGreenTint */
2251: #define COLOR_ADJ_MIN (SHORT)-100
2252: #define COLOR_ADJ_MAX (SHORT)100
2253:
2254: typedef struct tagCOLORADJUSTMENT {
2255: WORD caSize;
2256: WORD caFlags;
2257: WORD caIlluminantIndex;
2258: WORD caRedGamma;
2259: WORD caGreenGamma;
2260: WORD caBlueGamma;
2261: WORD caReferenceBlack;
2262: WORD caReferenceWhite;
2263: SHORT caContrast;
2264: SHORT caBrightness;
2265: SHORT caColorfulness;
2266: SHORT caRedGreenTint;
2267: } COLORADJUSTMENT, *PCOLORADJUSTMENT, FAR *LPCOLORADJUSTMENT;
2268:
1.1.1.4 ! root 2269: BOOL WINAPI SetColorAdjustment(HDC, CONST COLORADJUSTMENT *);
1.1.1.3 root 2270: BOOL WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
2271: HPALETTE WINAPI CreateHalftonePalette(HDC);
2272:
1.1.1.2 root 2273: #ifdef STRICT
2274: typedef BOOL (CALLBACK* ABORTPROC)(HDC, int);
2275: #else
2276: typedef FARPROC ABORTPROC;
2277: #endif
2278:
1.1.1.3 root 2279: typedef struct _DOCINFOA {
1.1.1.2 root 2280: int cbSize;
1.1.1.4 ! root 2281: LPCSTR lpszDocName;
! 2282: LPCSTR lpszOutput;
1.1.1.3 root 2283: } DOCINFOA, *LPDOCINFOA;
2284: typedef struct _DOCINFOW {
2285: int cbSize;
1.1.1.4 ! root 2286: LPCWSTR lpszDocName;
! 2287: LPCWSTR lpszOutput;
1.1.1.3 root 2288: } DOCINFOW, *LPDOCINFOW;
2289: #ifdef UNICODE
1.1.1.4 ! root 2290: typedef DOCINFOW DOCINFO;
! 2291: typedef LPDOCINFOW LPDOCINFO;
1.1.1.3 root 2292: #else
1.1.1.4 ! root 2293: typedef DOCINFOA DOCINFO;
! 2294: typedef LPDOCINFOA LPDOCINFO;
1.1.1.3 root 2295: #endif // UNICODE
1.1.1.2 root 2296:
1.1.1.4 ! root 2297: int WINAPI StartDocA(HDC, CONST DOCINFOA *);
! 2298: int WINAPI StartDocW(HDC, CONST DOCINFOW *);
1.1.1.3 root 2299: #ifdef UNICODE
1.1.1.4 ! root 2300: #define StartDoc StartDocW
1.1.1.3 root 2301: #else
1.1.1.4 ! root 2302: #define StartDoc StartDocA
1.1.1.3 root 2303: #endif // !UNICODE
1.1.1.2 root 2304: int WINAPI EndDoc(HDC);
2305: int WINAPI StartPage(HDC);
2306: int WINAPI EndPage(HDC);
2307: int WINAPI AbortDoc(HDC);
2308: int WINAPI SetAbortProc(HDC, ABORTPROC);
2309:
2310: BOOL WINAPI AbortPath(HDC);
2311: BOOL WINAPI ArcTo(HDC, int, int, int, int, int, int,int, int);
2312: BOOL WINAPI BeginPath(HDC);
2313: BOOL WINAPI CloseFigure(HDC);
2314: BOOL WINAPI EndPath(HDC);
2315: BOOL WINAPI FillPath(HDC);
2316: BOOL WINAPI FlattenPath(HDC);
2317: int WINAPI GetPath(HDC, LPPOINT, LPBYTE, int);
2318: HRGN WINAPI PathToRegion(HDC);
1.1.1.4 ! root 2319: BOOL WINAPI PolyDraw(HDC, CONST POINT *, CONST BYTE *, int);
1.1.1.2 root 2320: BOOL WINAPI SelectClipPath(HDC, int);
2321: int WINAPI SetArcDirection(HDC, int);
2322: BOOL WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT);
2323: BOOL WINAPI StrokeAndFillPath(HDC);
2324: BOOL WINAPI StrokePath(HDC);
2325: BOOL WINAPI WidenPath(HDC);
1.1.1.4 ! root 2326: HPEN WINAPI ExtCreatePen(DWORD, DWORD, CONST LOGBRUSH *, DWORD, CONST DWORD *);
1.1.1.2 root 2327: BOOL WINAPI GetMiterLimit(HDC, PFLOAT);
2328: int WINAPI GetArcDirection(HDC);
1.1 root 2329:
1.1.1.2 root 2330: int WINAPI GetObjectA(HGDIOBJ, int, LPVOID);
2331: int WINAPI GetObjectW(HGDIOBJ, int, LPVOID);
1.1 root 2332: #ifdef UNICODE
1.1.1.4 ! root 2333: #define GetObject GetObjectW
1.1 root 2334: #else
1.1.1.4 ! root 2335: #define GetObject GetObjectA
1.1 root 2336: #endif // !UNICODE
1.1.1.2 root 2337: BOOL WINAPI MoveToEx(HDC, int, int, LPPOINT);
2338: BOOL WINAPI TextOutA(HDC, int, int, LPCSTR, int);
2339: BOOL WINAPI TextOutW(HDC, int, int, LPCWSTR, int);
1.1 root 2340: #ifdef UNICODE
1.1.1.4 ! root 2341: #define TextOut TextOutW
1.1 root 2342: #else
1.1.1.4 ! root 2343: #define TextOut TextOutA
1.1 root 2344: #endif // !UNICODE
1.1.1.4 ! root 2345: BOOL WINAPI ExtTextOutA(HDC, int, int, UINT, CONST RECT *,LPCSTR, UINT, CONST INT *);
! 2346: BOOL WINAPI ExtTextOutW(HDC, int, int, UINT, CONST RECT *,LPCWSTR, UINT, CONST INT *);
1.1 root 2347: #ifdef UNICODE
1.1.1.4 ! root 2348: #define ExtTextOut ExtTextOutW
1.1 root 2349: #else
1.1.1.4 ! root 2350: #define ExtTextOut ExtTextOutA
1.1 root 2351: #endif // !UNICODE
1.1.1.4 ! root 2352: BOOL WINAPI PolyTextOutA(HDC, CONST POLYTEXTA *, int);
! 2353: BOOL WINAPI PolyTextOutW(HDC, CONST POLYTEXTW *, int);
1.1.1.3 root 2354: #ifdef UNICODE
1.1.1.4 ! root 2355: #define PolyTextOut PolyTextOutW
1.1.1.3 root 2356: #else
1.1.1.4 ! root 2357: #define PolyTextOut PolyTextOutA
1.1.1.3 root 2358: #endif // !UNICODE
1.1 root 2359:
1.1.1.2 root 2360: HRGN WINAPI CreatePolygonRgn(CONST POINT *, int, int);
2361: BOOL WINAPI DPtoLP(HDC, LPPOINT, int);
2362: BOOL WINAPI LPtoDP(HDC, LPPOINT, int);
1.1.1.3 root 2363: BOOL WINAPI Polygon(HDC, CONST POINT *, int);
1.1.1.2 root 2364: BOOL WINAPI Polyline(HDC, CONST POINT *, int);
2365:
1.1.1.4 ! root 2366: BOOL WINAPI PolyBezier(HDC, CONST POINT *, DWORD);
! 2367: BOOL WINAPI PolyBezierTo(HDC, CONST POINT *, DWORD);
! 2368: BOOL WINAPI PolylineTo(HDC, CONST POINT *, DWORD);
1.1.1.2 root 2369:
2370: BOOL WINAPI SetViewportExtEx(HDC, int, int, LPSIZE);
2371: BOOL WINAPI SetViewportOrgEx(HDC, int, int, LPPOINT);
2372: BOOL WINAPI SetWindowExtEx(HDC, int, int, LPSIZE);
2373: BOOL WINAPI SetWindowOrgEx(HDC, int, int, LPPOINT);
2374:
2375: BOOL WINAPI OffsetViewportOrgEx(HDC, int, int, LPPOINT);
2376: BOOL WINAPI OffsetWindowOrgEx(HDC, int, int, LPPOINT);
2377: BOOL WINAPI ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE);
2378: BOOL WINAPI ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE);
2379: BOOL WINAPI SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE);
2380: BOOL WINAPI SetBrushOrgEx(HDC, int, int, LPPOINT);
1.1 root 2381:
1.1.1.2 root 2382: int WINAPI GetTextFaceA(HDC, int, LPSTR);
2383: int WINAPI GetTextFaceW(HDC, int, LPWSTR);
1.1 root 2384: #ifdef UNICODE
1.1.1.4 ! root 2385: #define GetTextFace GetTextFaceW
1.1 root 2386: #else
1.1.1.4 ! root 2387: #define GetTextFace GetTextFaceA
1.1 root 2388: #endif // !UNICODE
2389:
1.1.1.2 root 2390: #define FONTMAPPER_MAX 10
2391:
2392: typedef struct tagKERNINGPAIR {
2393: WORD wFirst;
2394: WORD wSecond;
2395: int iKernAmount;
2396: } KERNINGPAIR, *LPKERNINGPAIR;
2397:
1.1.1.4 ! root 2398: DWORD WINAPI GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR);
! 2399: DWORD WINAPI GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR);
! 2400: #ifdef UNICODE
! 2401: #define GetKerningPairs GetKerningPairsW
! 2402: #else
! 2403: #define GetKerningPairs GetKerningPairsA
! 2404: #endif // !UNICODE
1.1.1.2 root 2405:
1.1.1.4 ! root 2406: BOOL WINAPI GetDCOrgEx(HDC,LPPOINT);
1.1.1.3 root 2407: BOOL WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT);
2408: BOOL WINAPI UnrealizeObject(HGDIOBJ);
2409:
1.1.1.2 root 2410: BOOL WINAPI GdiFlush();
2411: DWORD WINAPI GdiSetBatchLimit(DWORD);
2412: DWORD WINAPI GdiGetBatchLimit();
1.1 root 2413:
1.1.1.4 ! root 2414: #ifndef NOMETAFILE
! 2415:
! 2416: // Enhanced metafile constants.
! 2417:
! 2418: #define ENHMETA_SIGNATURE 0x464D4520
! 2419:
! 2420: // Stock object flag used in the object handle index in the enhanced
! 2421: // metafile records.
! 2422: // E.g. The object handle index (META_STOCK_OBJECT | BLACK_BRUSH)
! 2423: // represents the stock object BLACK_BRUSH.
! 2424:
! 2425: #define ENHMETA_STOCK_OBJECT 0x80000000
! 2426:
! 2427: // Enhanced metafile record types.
! 2428:
! 2429: #define EMR_HEADER 1
! 2430: #define EMR_POLYBEZIER 2
! 2431: #define EMR_POLYGON 3
! 2432: #define EMR_POLYLINE 4
! 2433: #define EMR_POLYBEZIERTO 5
! 2434: #define EMR_POLYLINETO 6
! 2435: #define EMR_POLYPOLYLINE 7
! 2436: #define EMR_POLYPOLYGON 8
! 2437: #define EMR_SETWINDOWEXTEX 9
! 2438: #define EMR_SETWINDOWORGEX 10
! 2439: #define EMR_SETVIEWPORTEXTEX 11
! 2440: #define EMR_SETVIEWPORTORGEX 12
! 2441: #define EMR_SETBRUSHORGEX 13
! 2442: #define EMR_EOF 14
! 2443: #define EMR_SETPIXELV 15
! 2444: #define EMR_SETMAPPERFLAGS 16
! 2445: #define EMR_SETMAPMODE 17
! 2446: #define EMR_SETBKMODE 18
! 2447: #define EMR_SETPOLYFILLMODE 19
! 2448: #define EMR_SETROP2 20
! 2449: #define EMR_SETSTRETCHBLTMODE 21
! 2450: #define EMR_SETTEXTALIGN 22
! 2451: #define EMR_SETCOLORADJUSTMENT 23
! 2452: #define EMR_SETTEXTCOLOR 24
! 2453: #define EMR_SETBKCOLOR 25
! 2454: #define EMR_OFFSETCLIPRGN 26
! 2455: #define EMR_MOVETOEX 27
! 2456: #define EMR_SETMETARGN 28
! 2457: #define EMR_EXCLUDECLIPRECT 29
! 2458: #define EMR_INTERSECTCLIPRECT 30
! 2459: #define EMR_SCALEVIEWPORTEXTEX 31
! 2460: #define EMR_SCALEWINDOWEXTEX 32
! 2461: #define EMR_SAVEDC 33
! 2462: #define EMR_RESTOREDC 34
! 2463: #define EMR_SETWORLDTRANSFORM 35
! 2464: #define EMR_MODIFYWORLDTRANSFORM 36
! 2465: #define EMR_SELECTOBJECT 37
! 2466: #define EMR_CREATEPEN 38
! 2467: #define EMR_CREATEBRUSHINDIRECT 39
! 2468: #define EMR_DELETEOBJECT 40
! 2469: #define EMR_ANGLEARC 41
! 2470: #define EMR_ELLIPSE 42
! 2471: #define EMR_RECTANGLE 43
! 2472: #define EMR_ROUNDRECT 44
! 2473: #define EMR_ARC 45
! 2474: #define EMR_CHORD 46
! 2475: #define EMR_PIE 47
! 2476: #define EMR_SELECTPALETTE 48
! 2477: #define EMR_CREATEPALETTE 49
! 2478: #define EMR_SETPALETTEENTRIES 50
! 2479: #define EMR_RESIZEPALETTE 51
! 2480: #define EMR_REALIZEPALETTE 52
! 2481: #define EMR_EXTFLOODFILL 53
! 2482: #define EMR_LINETO 54
! 2483: #define EMR_ARCTO 55
! 2484: #define EMR_POLYDRAW 56
! 2485: #define EMR_SETARCDIRECTION 57
! 2486: #define EMR_SETMITERLIMIT 58
! 2487: #define EMR_BEGINPATH 59
! 2488: #define EMR_ENDPATH 60
! 2489: #define EMR_CLOSEFIGURE 61
! 2490: #define EMR_FILLPATH 62
! 2491: #define EMR_STROKEANDFILLPATH 63
! 2492: #define EMR_STROKEPATH 64
! 2493: #define EMR_FLATTENPATH 65
! 2494: #define EMR_WIDENPATH 66
! 2495: #define EMR_SELECTCLIPPATH 67
! 2496: #define EMR_ABORTPATH 68
! 2497:
! 2498: #define EMR_GDICOMMENT 70
! 2499: #define EMR_FILLRGN 71
! 2500: #define EMR_FRAMERGN 72
! 2501: #define EMR_INVERTRGN 73
! 2502: #define EMR_PAINTRGN 74
! 2503: #define EMR_EXTSELECTCLIPRGN 75
! 2504: #define EMR_BITBLT 76
! 2505: #define EMR_STRETCHBLT 77
! 2506: #define EMR_MASKBLT 78
! 2507: #define EMR_PLGBLT 79
! 2508: #define EMR_SETDIBITSTODEVICE 80
! 2509: #define EMR_STRETCHDIBITS 81
! 2510: #define EMR_EXTCREATEFONTINDIRECTW 82
! 2511: #define EMR_EXTTEXTOUTA 83
! 2512: #define EMR_EXTTEXTOUTW 84
! 2513: #define EMR_POLYBEZIER16 85
! 2514: #define EMR_POLYGON16 86
! 2515: #define EMR_POLYLINE16 87
! 2516: #define EMR_POLYBEZIERTO16 88
! 2517: #define EMR_POLYLINETO16 89
! 2518: #define EMR_POLYPOLYLINE16 90
! 2519: #define EMR_POLYPOLYGON16 91
! 2520: #define EMR_POLYDRAW16 92
! 2521: #define EMR_CREATEMONOBRUSH 93
! 2522: #define EMR_CREATEDIBPATTERNBRUSHPT 94
! 2523: #define EMR_EXTCREATEPEN 95
! 2524: #define EMR_POLYTEXTOUTA 96
! 2525: #define EMR_POLYTEXTOUTW 97
! 2526:
! 2527: #define EMR_MIN 1
! 2528: #define EMR_MAX 97
! 2529:
! 2530: // Base record type for the enhanced metafile.
! 2531:
! 2532: typedef struct tagEMR
! 2533: {
! 2534: DWORD iType; // Enhanced metafile record type
! 2535: DWORD nSize; // Length of the record in bytes.
! 2536: // This must be a multiple of 4.
! 2537: } EMR, *PEMR;
! 2538:
! 2539: // Base text record type for the enhanced metafile.
! 2540:
! 2541: typedef struct tagEMRTEXT
! 2542: {
! 2543: POINTL ptlReference;
! 2544: DWORD nChars;
! 2545: DWORD offString; // Offset to the string
! 2546: DWORD fOptions;
! 2547: RECTL rcl;
! 2548: DWORD offDx; // Offset to the inter-character spacing array.
! 2549: // This is always given.
! 2550: } EMRTEXT, *PEMRTEXT;
! 2551:
! 2552: // Record structures for the enhanced metafile.
! 2553:
! 2554: typedef struct tagABORTPATH
! 2555: {
! 2556: EMR emr;
! 2557: } EMRABORTPATH, *PEMRABORTPATH,
! 2558: EMRBEGINPATH, *PEMRBEGINPATH,
! 2559: EMRENDPATH, *PEMRENDPATH,
! 2560: EMRCLOSEFIGURE, *PEMRCLOSEFIGURE,
! 2561: EMRFLATTENPATH, *PEMRFLATTENPATH,
! 2562: EMRWIDENPATH, *PEMRWIDENPATH,
! 2563: EMRSETMETARGN, *PEMRSETMETARGN,
! 2564: EMRSAVEDC, *PEMRSAVEDC,
! 2565: EMRREALIZEPALETTE, *PEMRREALIZEPALETTE;
! 2566:
! 2567: typedef struct tagEMRSELECTCLIPPATH
! 2568: {
! 2569: EMR emr;
! 2570: DWORD iMode;
! 2571: } EMRSELECTCLIPPATH, *PEMRSELECTCLIPPATH,
! 2572: EMRSETBKMODE, *PEMRSETBKMODE,
! 2573: EMRSETMAPMODE, *PEMRSETMAPMODE,
! 2574: EMRSETPOLYFILLMODE, *PEMRSETPOLYFILLMODE,
! 2575: EMRSETROP2, *PEMRSETROP2,
! 2576: EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
! 2577: EMRSETTEXTALIGN, *PEMRSETTEXTALIGN;
! 2578:
! 2579: typedef struct tagEMRSETMITERLIMIT
! 2580: {
! 2581: EMR emr;
! 2582: FLOAT eMiterLimit;
! 2583: } EMRSETMITERLIMIT, *PEMRSETMITERLIMIT;
! 2584:
! 2585: typedef struct tagEMRRESTOREDC
! 2586: {
! 2587: EMR emr;
! 2588: LONG iRelative; // Specifies a relative instance
! 2589: } EMRRESTOREDC, *PEMRRESTOREDC;
! 2590:
! 2591: typedef struct tagEMRSETARCDIRECTION
! 2592: {
! 2593: EMR emr;
! 2594: DWORD iArcDirection; // Specifies the arc direction in the
! 2595: // advanced graphics mode.
! 2596: } EMRSETARCDIRECTION, *PEMRSETARCDIRECTION;
! 2597:
! 2598: typedef struct tagEMRSETMAPPERFLAGS
! 2599: {
! 2600: EMR emr;
! 2601: DWORD dwFlags;
! 2602: } EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS;
! 2603:
! 2604: typedef struct tagEMRSETTEXTCOLOR
! 2605: {
! 2606: EMR emr;
! 2607: COLORREF crColor;
! 2608: } EMRSETBKCOLOR, *PEMRSETBKCOLOR,
! 2609: EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR;
! 2610:
! 2611: typedef struct tagEMRSELECTOBJECT
! 2612: {
! 2613: EMR emr;
! 2614: DWORD ihObject; // Object handle index
! 2615: } EMRSELECTOBJECT, *PEMRSELECTOBJECT,
! 2616: EMRDELETEOBJECT, *PEMRDELETEOBJECT;
! 2617:
! 2618: typedef struct tagEMRSELECTPALETTE
! 2619: {
! 2620: EMR emr;
! 2621: DWORD ihPal; // Palette handle index, background mode only
! 2622: } EMRSELECTPALETTE, *PEMRSELECTPALETTE;
! 2623:
! 2624: typedef struct tagEMRRESIZEPALETTE
! 2625: {
! 2626: EMR emr;
! 2627: DWORD ihPal; // Palette handle index
! 2628: DWORD cEntries;
! 2629: } EMRRESIZEPALETTE, *PEMRRESIZEPALETTE;
! 2630:
! 2631: typedef struct tagEMRSETPALETTEENTRIES
! 2632: {
! 2633: EMR emr;
! 2634: DWORD ihPal; // Palette handle index
! 2635: DWORD iStart;
! 2636: DWORD cEntries;
! 2637: PALETTEENTRY aPalEntries[1];// The peFlags fields do not contain any flags
! 2638: } EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES;
! 2639:
! 2640: typedef struct tagEMRSETCOLORADJUSTMENT
! 2641: {
! 2642: EMR emr;
! 2643: COLORADJUSTMENT ColorAdjustment;
! 2644: } EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT;
! 2645:
! 2646: typedef struct tagEMRGDICOMMENT
! 2647: {
! 2648: EMR emr;
! 2649: DWORD cbData; // Size of data in bytes
! 2650: BYTE Data[1];
! 2651: } EMRGDICOMMENT, *PEMRGDICOMMENT;
! 2652:
! 2653: typedef struct tagEMREOF
! 2654: {
! 2655: EMR emr;
! 2656: DWORD nPalEntries; // Number of palette entries
! 2657: DWORD offPalEntries; // Offset to the palette entries
! 2658: DWORD nSizeLast; // Same as nSize and must be the last DWORD
! 2659: // of the record. The palette entries,
! 2660: // if exist, precede this field.
! 2661: } EMREOF, *PEMREOF;
! 2662:
! 2663: typedef struct tagEMRLINETO
! 2664: {
! 2665: EMR emr;
! 2666: POINTL ptl;
! 2667: } EMRLINETO, *PEMRLINETO,
! 2668: EMRMOVETOEX, *PEMRMOVETOEX;
! 2669:
! 2670: typedef struct tagEMROFFSETCLIPRGN
! 2671: {
! 2672: EMR emr;
! 2673: POINTL ptlOffset;
! 2674: } EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN;
! 2675:
! 2676: typedef struct tagEMRFILLPATH
! 2677: {
! 2678: EMR emr;
! 2679: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2680: } EMRFILLPATH, *PEMRFILLPATH,
! 2681: EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH,
! 2682: EMRSTROKEPATH, *PEMRSTROKEPATH;
! 2683:
! 2684: typedef struct tagEMREXCLUDECLIPRECT
! 2685: {
! 2686: EMR emr;
! 2687: RECTL rclClip;
! 2688: } EMREXCLUDECLIPRECT, *PEMREXCLUDECLIPRECT,
! 2689: EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT;
! 2690:
! 2691: typedef struct tagEMRSETVIEWPORTORGEX
! 2692: {
! 2693: EMR emr;
! 2694: POINTL ptlOrigin;
! 2695: } EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX,
! 2696: EMRSETWINDOWORGEX, *PEMRSETWINDOWORGEX,
! 2697: EMRSETBRUSHORGEX, *PEMRSETBRUSHORGEX;
! 2698:
! 2699: typedef struct tagEMRSETVIEWPORTEXTEX
! 2700: {
! 2701: EMR emr;
! 2702: SIZEL szlExtent;
! 2703: } EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX,
! 2704: EMRSETWINDOWEXTEX, *PEMRSETWINDOWEXTEX;
! 2705:
! 2706: typedef struct tagEMRSCALEVIEWPORTEXTEX
! 2707: {
! 2708: EMR emr;
! 2709: LONG xNum;
! 2710: LONG xDenom;
! 2711: LONG yNum;
! 2712: LONG yDenom;
! 2713: } EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX,
! 2714: EMRSCALEWINDOWEXTEX, *PEMRSCALEWINDOWEXTEX;
! 2715:
! 2716: typedef struct tagEMRSETWORLDTRANSFORM
! 2717: {
! 2718: EMR emr;
! 2719: XFORM xform;
! 2720: } EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM;
! 2721:
! 2722: typedef struct tagEMRMODIFYWORLDTRANSFORM
! 2723: {
! 2724: EMR emr;
! 2725: XFORM xform;
! 2726: DWORD iMode;
! 2727: } EMRMODIFYWORLDTRANSFORM, *PEMRMODIFYWORLDTRANSFORM;
! 2728:
! 2729: typedef struct tagEMRSETPIXELV
! 2730: {
! 2731: EMR emr;
! 2732: POINTL ptlPixel;
! 2733: COLORREF crColor;
! 2734: } EMRSETPIXELV, *PEMRSETPIXELV;
! 2735:
! 2736: typedef struct tagEMREXTFLOODFILL
! 2737: {
! 2738: EMR emr;
! 2739: POINTL ptlStart;
! 2740: COLORREF crColor;
! 2741: DWORD iMode;
! 2742: } EMREXTFLOODFILL, *PEMREXTFLOODFILL;
! 2743:
! 2744: typedef struct tagEMRELLIPSE
! 2745: {
! 2746: EMR emr;
! 2747: RECTL rclBox; // Inclusive-inclusive bounding rectangle
! 2748: } EMRELLIPSE, *PEMRELLIPSE,
! 2749: EMRRECTANGLE, *PEMRRECTANGLE;
! 2750:
! 2751: typedef struct tagEMRROUNDRECT
! 2752: {
! 2753: EMR emr;
! 2754: RECTL rclBox; // Inclusive-inclusive bounding rectangle
! 2755: SIZEL szlCorner;
! 2756: } EMRROUNDRECT, *PEMRROUNDRECT;
! 2757:
! 2758: typedef struct tagEMRARC
! 2759: {
! 2760: EMR emr;
! 2761: RECTL rclBox; // Inclusive-inclusive bounding rectangle
! 2762: POINTL ptlStart;
! 2763: POINTL ptlEnd;
! 2764: } EMRARC, *PEMRARC,
! 2765: EMRARCTO, *PEMRARCTO,
! 2766: EMRCHORD, *PEMRCHORD,
! 2767: EMRPIE, *PEMRPIE;
! 2768:
! 2769: typedef struct tagEMRANGLEARC
! 2770: {
! 2771: EMR emr;
! 2772: POINTL ptlCenter;
! 2773: DWORD nRadius;
! 2774: FLOAT eStartAngle;
! 2775: FLOAT eSweepAngle;
! 2776: } EMRANGLEARC, *PEMRANGLEARC;
! 2777:
! 2778: typedef struct tagEMRPOLYLINE
! 2779: {
! 2780: EMR emr;
! 2781: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2782: DWORD cptl;
! 2783: POINTL aptl[1];
! 2784: } EMRPOLYLINE, *PEMRPOLYLINE,
! 2785: EMRPOLYBEZIER, *PEMRPOLYBEZIER,
! 2786: EMRPOLYGON, *PEMRPOLYGON,
! 2787: EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO,
! 2788: EMRPOLYLINETO, *PEMRPOLYLINETO;
! 2789:
! 2790: typedef struct tagEMRPOLYLINE16
! 2791: {
! 2792: EMR emr;
! 2793: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2794: DWORD cpts;
! 2795: POINTS apts[1];
! 2796: } EMRPOLYLINE16, *PEMRPOLYLINE16,
! 2797: EMRPOLYBEZIER16, *PEMRPOLYBEZIER16,
! 2798: EMRPOLYGON16, *PEMRPOLYGON16,
! 2799: EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16,
! 2800: EMRPOLYLINETO16, *PEMRPOLYLINETO16;
! 2801:
! 2802: typedef struct tagEMRPOLYDRAW
! 2803: {
! 2804: EMR emr;
! 2805: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2806: DWORD cptl; // Number of points
! 2807: POINTL aptl[1]; // Array of points
! 2808: BYTE abTypes[1]; // Array of point types
! 2809: } EMRPOLYDRAW, *PEMRPOLYDRAW;
! 2810:
! 2811: typedef struct tagEMRPOLYDRAW16
! 2812: {
! 2813: EMR emr;
! 2814: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2815: DWORD cpts; // Number of points
! 2816: POINTS apts[1]; // Array of points
! 2817: BYTE abTypes[1]; // Array of point types
! 2818: } EMRPOLYDRAW16, *PEMRPOLYDRAW16;
! 2819:
! 2820: typedef struct tagEMRPOLYPOLYLINE
! 2821: {
! 2822: EMR emr;
! 2823: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2824: DWORD nPolys; // Number of polys
! 2825: DWORD cptl; // Total number of points in all polys
! 2826: DWORD aPolyCounts[1]; // Array of point counts for each poly
! 2827: POINTL aptl[1]; // Array of points
! 2828: } EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE,
! 2829: EMRPOLYPOLYGON, *PEMRPOLYPOLYGON;
! 2830:
! 2831: typedef struct tagEMRPOLYPOLYLINE16
! 2832: {
! 2833: EMR emr;
! 2834: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2835: DWORD nPolys; // Number of polys
! 2836: DWORD cpts; // Total number of points in all polys
! 2837: DWORD aPolyCounts[1]; // Array of point counts for each poly
! 2838: POINTS apts[1]; // Array of points
! 2839: } EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16,
! 2840: EMRPOLYPOLYGON16, *PEMRPOLYPOLYGON16;
! 2841:
! 2842: typedef struct tagEMRINVERTRGN
! 2843: {
! 2844: EMR emr;
! 2845: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2846: DWORD cbRgnData; // Size of region data in bytes
! 2847: BYTE RgnData[1];
! 2848: } EMRINVERTRGN, *PEMRINVERTRGN,
! 2849: EMRPAINTRGN, *PEMRPAINTRGN;
! 2850:
! 2851: typedef struct tagEMRFILLRGN
! 2852: {
! 2853: EMR emr;
! 2854: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2855: DWORD cbRgnData; // Size of region data in bytes
! 2856: DWORD ihBrush; // Brush handle index
! 2857: BYTE RgnData[1];
! 2858: } EMRFILLRGN, *PEMRFILLRGN;
! 2859:
! 2860: typedef struct tagEMRFRAMERGN
! 2861: {
! 2862: EMR emr;
! 2863: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2864: DWORD cbRgnData; // Size of region data in bytes
! 2865: DWORD ihBrush; // Brush handle index
! 2866: SIZEL szlStroke;
! 2867: BYTE RgnData[1];
! 2868: } EMRFRAMERGN, *PEMRFRAMERGN;
! 2869:
! 2870: typedef struct tagEMREXTSELECTCLIPRGN
! 2871: {
! 2872: EMR emr;
! 2873: DWORD cbRgnData; // Size of region data in bytes
! 2874: DWORD iMode;
! 2875: BYTE RgnData[1];
! 2876: } EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN;
! 2877:
! 2878: typedef struct tagEMREXTTEXTOUTA
! 2879: {
! 2880: EMR emr;
! 2881: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2882: DWORD iGraphicsMode; // Current graphics mode
! 2883: FLOAT exScale; // X and Y scales from Page units to .01mm units
! 2884: FLOAT eyScale; // if graphics mode is GM_COMPATIBLE.
! 2885: EMRTEXT emrtext; // This is followed by the string and spacing
! 2886: // array
! 2887: } EMREXTTEXTOUTA, *PEMREXTTEXTOUTA,
! 2888: EMREXTTEXTOUTW, *PEMREXTTEXTOUTW;
! 2889:
! 2890: typedef struct tagEMRPOLYTEXTOUTA
! 2891: {
! 2892: EMR emr;
! 2893: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2894: DWORD iGraphicsMode; // Current graphics mode
! 2895: FLOAT exScale; // X and Y scales from Page units to .01mm units
! 2896: FLOAT eyScale; // if graphics mode is GM_COMPATIBLE.
! 2897: LONG cStrings;
! 2898: EMRTEXT aemrtext[1]; // Array of EMRTEXT structures. This is
! 2899: // followed by the strings and spacing arrays.
! 2900: } EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA,
! 2901: EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW;
! 2902:
! 2903: typedef struct tagEMRBITBLT
! 2904: {
! 2905: EMR emr;
! 2906: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2907: LONG xDest;
! 2908: LONG yDest;
! 2909: LONG cxDest;
! 2910: LONG cyDest;
! 2911: DWORD dwRop;
! 2912: LONG xSrc;
! 2913: LONG ySrc;
! 2914: XFORM xformSrc; // Source DC transform
! 2915: COLORREF crBkColorSrc; // Source DC BkColor in RGB
! 2916: DWORD iUsageSrc; // Source bitmap info color table usage
! 2917: // (DIB_RGB_COLORS)
! 2918: DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
! 2919: DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
! 2920: DWORD offBitsSrc; // Offset to the source bitmap bits
! 2921: DWORD cbBitsSrc; // Size of the source bitmap bits
! 2922: } EMRBITBLT, *PEMRBITBLT;
! 2923:
! 2924: typedef struct tagEMRSTRETCHBLT
! 2925: {
! 2926: EMR emr;
! 2927: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2928: LONG xDest;
! 2929: LONG yDest;
! 2930: LONG cxDest;
! 2931: LONG cyDest;
! 2932: DWORD dwRop;
! 2933: LONG xSrc;
! 2934: LONG ySrc;
! 2935: XFORM xformSrc; // Source DC transform
! 2936: COLORREF crBkColorSrc; // Source DC BkColor in RGB
! 2937: DWORD iUsageSrc; // Source bitmap info color table usage
! 2938: // (DIB_RGB_COLORS)
! 2939: DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
! 2940: DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
! 2941: DWORD offBitsSrc; // Offset to the source bitmap bits
! 2942: DWORD cbBitsSrc; // Size of the source bitmap bits
! 2943: LONG cxSrc;
! 2944: LONG cySrc;
! 2945: } EMRSTRETCHBLT, *PEMRSTRETCHBLT;
! 2946:
! 2947: typedef struct tagEMRMASKBLT
! 2948: {
! 2949: EMR emr;
! 2950: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2951: LONG xDest;
! 2952: LONG yDest;
! 2953: LONG cxDest;
! 2954: LONG cyDest;
! 2955: DWORD dwRop;
! 2956: LONG xSrc;
! 2957: LONG ySrc;
! 2958: XFORM xformSrc; // Source DC transform
! 2959: COLORREF crBkColorSrc; // Source DC BkColor in RGB
! 2960: DWORD iUsageSrc; // Source bitmap info color table usage
! 2961: // (DIB_RGB_COLORS)
! 2962: DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
! 2963: DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
! 2964: DWORD offBitsSrc; // Offset to the source bitmap bits
! 2965: DWORD cbBitsSrc; // Size of the source bitmap bits
! 2966: LONG xMask;
! 2967: LONG yMask;
! 2968: DWORD iUsageMask; // Mask bitmap info color table usage
! 2969: DWORD offBmiMask; // Offset to the mask BITMAPINFO structure if any
! 2970: DWORD cbBmiMask; // Size of the mask BITMAPINFO structure if any
! 2971: DWORD offBitsMask; // Offset to the mask bitmap bits if any
! 2972: DWORD cbBitsMask; // Size of the mask bitmap bits if any
! 2973: } EMRMASKBLT, *PEMRMASKBLT;
! 2974:
! 2975: typedef struct tagEMRPLGBLT
! 2976: {
! 2977: EMR emr;
! 2978: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 2979: POINTL aptlDest[3];
! 2980: LONG xSrc;
! 2981: LONG ySrc;
! 2982: LONG cxSrc;
! 2983: LONG cySrc;
! 2984: XFORM xformSrc; // Source DC transform
! 2985: COLORREF crBkColorSrc; // Source DC BkColor in RGB
! 2986: DWORD iUsageSrc; // Source bitmap info color table usage
! 2987: // (DIB_RGB_COLORS)
! 2988: DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
! 2989: DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
! 2990: DWORD offBitsSrc; // Offset to the source bitmap bits
! 2991: DWORD cbBitsSrc; // Size of the source bitmap bits
! 2992: LONG xMask;
! 2993: LONG yMask;
! 2994: DWORD iUsageMask; // Mask bitmap info color table usage
! 2995: DWORD offBmiMask; // Offset to the mask BITMAPINFO structure if any
! 2996: DWORD cbBmiMask; // Size of the mask BITMAPINFO structure if any
! 2997: DWORD offBitsMask; // Offset to the mask bitmap bits if any
! 2998: DWORD cbBitsMask; // Size of the mask bitmap bits if any
! 2999: } EMRPLGBLT, *PEMRPLGBLT;
! 3000:
! 3001: typedef struct tagEMRSETDIBITSTODEVICE
! 3002: {
! 3003: EMR emr;
! 3004: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 3005: LONG xDest;
! 3006: LONG yDest;
! 3007: LONG xSrc;
! 3008: LONG ySrc;
! 3009: LONG cxSrc;
! 3010: LONG cySrc;
! 3011: DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
! 3012: DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
! 3013: DWORD offBitsSrc; // Offset to the source bitmap bits
! 3014: DWORD cbBitsSrc; // Size of the source bitmap bits
! 3015: DWORD iUsageSrc; // Source bitmap info color table usage
! 3016: DWORD iStartScan;
! 3017: DWORD cScans;
! 3018: } EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE;
! 3019:
! 3020: typedef struct tagEMRSTRETCHDIBITS
! 3021: {
! 3022: EMR emr;
! 3023: RECTL rclBounds; // Inclusive-inclusive bounds in device units
! 3024: LONG xDest;
! 3025: LONG yDest;
! 3026: LONG xSrc;
! 3027: LONG ySrc;
! 3028: LONG cxSrc;
! 3029: LONG cySrc;
! 3030: DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
! 3031: DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
! 3032: DWORD offBitsSrc; // Offset to the source bitmap bits
! 3033: DWORD cbBitsSrc; // Size of the source bitmap bits
! 3034: DWORD iUsageSrc; // Source bitmap info color table usage
! 3035: DWORD dwRop;
! 3036: LONG cxDest;
! 3037: LONG cyDest;
! 3038: } EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;
! 3039:
! 3040: typedef struct tagEMREXTCREATEFONTINDIRECTW
! 3041: {
! 3042: EMR emr;
! 3043: DWORD ihFont; // Font handle index
! 3044: EXTLOGFONTW elfw;
! 3045: } EMREXTCREATEFONTINDIRECTW, *PEMREXTCREATEFONTINDIRECTW;
! 3046:
! 3047: typedef struct tagEMRCREATEPALETTE
! 3048: {
! 3049: EMR emr;
! 3050: DWORD ihPal; // Palette handle index
! 3051: LOGPALETTE lgpl; // The peFlags fields in the palette entries
! 3052: // do not contain any flags
! 3053: } EMRCREATEPALETTE, *PEMRCREATEPALETTE;
! 3054:
! 3055: typedef struct tagEMRCREATEPEN
! 3056: {
! 3057: EMR emr;
! 3058: DWORD ihPen; // Pen handle index
! 3059: LOGPEN lopn;
! 3060: } EMRCREATEPEN, *PEMRCREATEPEN;
! 3061:
! 3062: typedef struct tagEMREXTCREATEPEN
! 3063: {
! 3064: EMR emr;
! 3065: DWORD ihPen; // Pen handle index
! 3066: DWORD offBmi; // Offset to the BITMAPINFO structure if any
! 3067: DWORD cbBmi; // Size of the BITMAPINFO structure if any
! 3068: // The bitmap info is followed by the bitmap
! 3069: // bits to form a packed DIB.
! 3070: DWORD offBits; // Offset to the brush bitmap bits if any
! 3071: DWORD cbBits; // Size of the brush bitmap bits if any
! 3072: EXTLOGPEN elp; // The extended pen with the style array.
! 3073: } EMREXTCREATEPEN, *PEMREXTCREATEPEN;
! 3074:
! 3075: typedef struct tagEMRCREATEBRUSHINDIRECT
! 3076: {
! 3077: EMR emr;
! 3078: DWORD ihBrush; // Brush handle index
! 3079: LOGBRUSH lb; // The style must be BS_SOLID, BS_HOLLOW,
! 3080: // BS_NULL or BS_HATCHED.
! 3081: } EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT;
! 3082:
! 3083: typedef struct tagEMRCREATEMONOBRUSH
! 3084: {
! 3085: EMR emr;
! 3086: DWORD ihBrush; // Brush handle index
! 3087: DWORD iUsage; // Bitmap info color table usage
! 3088: DWORD offBmi; // Offset to the BITMAPINFO structure
! 3089: DWORD cbBmi; // Size of the BITMAPINFO structure
! 3090: DWORD offBits; // Offset to the bitmap bits
! 3091: DWORD cbBits; // Size of the bitmap bits
! 3092: } EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH;
! 3093:
! 3094: typedef struct tagEMRCREATEDIBPATTERNBRUSHPT
! 3095: {
! 3096: EMR emr;
! 3097: DWORD ihBrush; // Brush handle index
! 3098: DWORD iUsage; // Bitmap info color table usage
! 3099: DWORD offBmi; // Offset to the BITMAPINFO structure
! 3100: DWORD cbBmi; // Size of the BITMAPINFO structure
! 3101: // The bitmap info is followed by the bitmap
! 3102: // bits to form a packed DIB.
! 3103: DWORD offBits; // Offset to the bitmap bits
! 3104: DWORD cbBits; // Size of the bitmap bits
! 3105: } EMRCREATEDIBPATTERNBRUSHPT, *PEMRCREATEDIBPATTERNBRUSHPT;
! 3106:
! 3107: #endif /* NOMETAFILE */
! 3108:
1.1 root 3109: #endif /* NOGDI */
1.1.1.3 root 3110:
3111: #ifdef __cplusplus
3112: }
3113: #endif
3114:
1.1 root 3115: #endif /* _WINGDI_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.