|
|
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:
19: #ifndef NOGDI
20:
21: #ifndef NORASTEROPS
22:
23: /* Binary raster ops */
24: #define R2_BLACK 1 /* 0 */
25: #define R2_NOTMERGEPEN 2 /* DPon */
26: #define R2_MASKNOTPEN 3 /* DPna */
27: #define R2_NOTCOPYPEN 4 /* PN */
28: #define R2_MASKPENNOT 5 /* PDna */
29: #define R2_NOT 6 /* Dn */
30: #define R2_XORPEN 7 /* DPx */
31: #define R2_NOTMASKPEN 8 /* DPan */
32: #define R2_MASKPEN 9 /* DPa */
33: #define R2_NOTXORPEN 10 /* DPxn */
34: #define R2_NOP 11 /* D */
35: #define R2_MERGENOTPEN 12 /* DPno */
36: #define R2_COPYPEN 13 /* P */
37: #define R2_MERGEPENNOT 14 /* PDno */
38: #define R2_MERGEPEN 15 /* DPo */
39: #define R2_WHITE 16 /* 1 */
40: #define R2_LAST 16
41:
42: /* Ternary raster operations */
43: #define SRCCOPY (DWORD)0x00CC0020 /* dest = source */
44: #define SRCPAINT (DWORD)0x00EE0086 /* dest = source OR dest */
45: #define SRCAND (DWORD)0x008800C6 /* dest = source AND dest */
46: #define SRCINVERT (DWORD)0x00660046 /* dest = source XOR dest */
47: #define SRCERASE (DWORD)0x00440328 /* dest = source AND (NOT dest ) */
48: #define NOTSRCCOPY (DWORD)0x00330008 /* dest = (NOT source) */
49: #define NOTSRCERASE (DWORD)0x001100A6 /* dest = (NOT src) AND (NOT dest) */
50: #define MERGECOPY (DWORD)0x00C000CA /* dest = (source AND pattern) */
51: #define MERGEPAINT (DWORD)0x00BB0226 /* dest = (NOT source) OR dest */
52: #define PATCOPY (DWORD)0x00F00021 /* dest = pattern */
53: #define PATPAINT (DWORD)0x00FB0A09 /* dest = DPSnoo */
54: #define PATINVERT (DWORD)0x005A0049 /* dest = pattern XOR dest */
55: #define DSTINVERT (DWORD)0x00550009 /* dest = (NOT dest) */
56: #define BLACKNESS (DWORD)0x00000042 /* dest = BLACK */
57: #define WHITENESS (DWORD)0x00FF0062 /* dest = WHITE */
58: #endif /* NORASTEROPS */
59:
60: #define GDI_ERROR (0xFFFFFFFFL)
61:
62: /* Region Flags */
63: #define ERROR 0
64: #define NULLREGION 1
65: #define SIMPLEREGION 2
66: #define COMPLEXREGION 3
67: #define RGN_ERROR ERROR
68:
69: /* CombineRgn() Styles */
70: #define RGN_AND 1
71: #define RGN_OR 2
72: #define RGN_XOR 3
73: #define RGN_DIFF 4
74: #define RGN_COPY 5
75: #define RGN_MIN RGN_AND
76: #define RGN_MAX RGN_COPY
77:
78: /* StretchBlt() Modes */
79: #define BLACKONWHITE 1
80: #define WHITEONBLACK 2
81: #define COLORONCOLOR 3
82: #define HALFTONE 4
83: #define MAXSTRETCHBLTMODE 4
84:
85: /* PolyFill() Modes */
86: #define ALTERNATE 1
87: #define WINDING 2
88: #define POLYFILL_LAST 2
89:
90: /* Text Alignment Options */
91: #define TA_NOUPDATECP 0
92: #define TA_UPDATECP 1
93:
94: #define TA_LEFT 0
95: #define TA_RIGHT 2
96: #define TA_CENTER 6
97:
98: #define TA_TOP 0
99: #define TA_BOTTOM 8
100: #define TA_BASELINE 24
101: #define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP)
102:
103: #define ETO_GRAYED 1
104: #define ETO_OPAQUE 2
105: #define ETO_CLIPPED 4
106:
107: #define ASPECT_FILTERING 0x0001
108:
109: /* Bounds Accumulation APIs */
110:
111: #define DCB_RESET 0x0001
112: #define DCB_ACCUMULATE 0x0002
113: #define DCB_DIRTY DCB_ACCUMULATE
114: #define DCB_SET (DCB_RESET | DCB_ACCUMULATE)
115: #define DCB_ENABLE 0x0004
116: #define DCB_DISABLE 0x0008
117:
118: #ifndef NOMETAFILE
119:
120: /* Metafile Functions */
121: #define META_SETBKCOLOR 0x0201
122: #define META_SETBKMODE 0x0102
123: #define META_SETMAPMODE 0x0103
124: #define META_SETROP2 0x0104
125: #define META_SETRELABS 0x0105
126: #define META_SETPOLYFILLMODE 0x0106
127: #define META_SETSTRETCHBLTMODE 0x0107
128: #define META_SETTEXTCHAREXTRA 0x0108
129: #define META_SETTEXTCOLOR 0x0209
130: #define META_SETTEXTJUSTIFICATION 0x020A
131: #define META_SETWINDOWORG 0x020B
132: #define META_SETWINDOWEXT 0x020C
133: #define META_SETVIEWPORTORG 0x020D
134: #define META_SETVIEWPORTEXT 0x020E
135: #define META_OFFSETWINDOWORG 0x020F
136: #define META_SCALEWINDOWEXT 0x0410
137: #define META_OFFSETVIEWPORTORG 0x0211
138: #define META_SCALEVIEWPORTEXT 0x0412
139: #define META_LINETO 0x0213
140: #define META_MOVETO 0x0214
141: #define META_EXCLUDECLIPRECT 0x0415
142: #define META_INTERSECTCLIPRECT 0x0416
143: #define META_ARC 0x0817
144: #define META_ELLIPSE 0x0418
145: #define META_FLOODFILL 0x0419
146: #define META_PIE 0x081A
147: #define META_RECTANGLE 0x041B
148: #define META_ROUNDRECT 0x061C
149: #define META_PATBLT 0x061D
150: #define META_SAVEDC 0x001E
151: #define META_SETPIXEL 0x041F
152: #define META_OFFSETCLIPRGN 0x0220
153: #define META_TEXTOUT 0x0521
154: #define META_BITBLT 0x0922
155: #define META_STRETCHBLT 0x0B23
156: #define META_POLYGON 0x0324
157: #define META_POLYLINE 0x0325
158: #define META_ESCAPE 0x0626
159: #define META_RESTOREDC 0x0127
160: #define META_FILLREGION 0x0228
161: #define META_FRAMEREGION 0x0429
162: #define META_INVERTREGION 0x012A
163: #define META_PAINTREGION 0x012B
164: #define META_SELECTCLIPREGION 0x012C
165: #define META_SELECTOBJECT 0x012D
166: #define META_SETTEXTALIGN 0x012E
167: #define META_DRAWTEXT 0x062F
168:
169: #define META_CHORD 0x0830
170: #define META_SETMAPPERFLAGS 0x0231
171: #define META_EXTTEXTOUT 0x0a32
172: #define META_SETDIBTODEV 0x0d33
173: #define META_SELECTPALETTE 0x0234
174: #define META_REALIZEPALETTE 0x0035
175: #define META_ANIMATEPALETTE 0x0436
176: #define META_SETPALENTRIES 0x0037
177: #define META_POLYPOLYGON 0x0538
178: #define META_RESIZEPALETTE 0x0139
179:
180: #define META_DIBBITBLT 0x0940
181: #define META_DIBSTRETCHBLT 0x0b41
182: #define META_DIBCREATEPATTERNBRUSH 0x0142
183: #define META_STRETCHDIB 0x0f43
184:
185: #define META_EXTFLOODFILL 0x0548
186:
187: // #define META_RESETDC 0x014C
188: // #define META_STARTDOC 0x014D
189: // #define META_STARTPAGE 0x004F
190: // #define META_ENDPAGE 0x0050
191: // #define META_ABORTDOC 0x0052
192: // #define META_ENDDOC 0x004E
193:
194: #define META_DELETEOBJECT 0x01f0
195:
196: #define META_CREATEPALETTE 0x00f7
197: // #define META_CREATEBRUSH 0x00F8
198: #define META_CREATEPATTERNBRUSH 0x01F9
199: #define META_CREATEPENINDIRECT 0x02FA
200: #define META_CREATEFONTINDIRECT 0x02FB
201: #define META_CREATEBRUSHINDIRECT 0x02FC
202: // #define META_CREATEBITMAPINDIRECT 0x02FD
203: // #define META_CREATEBITMAP 0x06FE
204: #define META_CREATEREGION 0x06FF
205:
206: #endif /* NOMETAFILE */
207:
208: /* GDI Escapes */
209: #define NEWFRAME 1
210: #define ABORTDOC 2
211: #define NEXTBAND 3
212: #define SETCOLORTABLE 4
213: #define GETCOLORTABLE 5
214: #define FLUSHOUTPUT 6
215: #define DRAFTMODE 7
216: #define QUERYESCSUPPORT 8
217: #define SETABORTPROC 9
218: #define STARTDOC 10
219: #define ENDDOC 11
220: #define GETPHYSPAGESIZE 12
221: #define GETPRINTINGOFFSET 13
222: #define GETSCALINGFACTOR 14
223: #define MFCOMMENT 15
224: #define GETPENWIDTH 16
225: #define SETCOPYCOUNT 17
226: #define SELECTPAPERSOURCE 18
227: #define DEVICEDATA 19
228: #define PASSTHROUGH 19
229: #define GETTECHNOLGY 20
230: #define GETTECHNOLOGY 20
231: #define SETENDCAP 21
232: #define SETLINEJOIN 22
233: #define SETMITERLIMIT 23
234: #define BANDINFO 24
235: #define DRAWPATTERNRECT 25
236: #define GETVECTORPENSIZE 26
237: #define GETVECTORBRUSHSIZE 27
238: #define ENABLEDUPLEX 28
239: #define GETSETPAPERBINS 29
240: #define GETSETPRINTORIENT 30
241: #define ENUMPAPERBINS 31
242: #define SETDIBSCALING 32
243: #define EPSPRINTING 33
244: #define ENUMPAPERMETRICS 34
245: #define GETSETPAPERMETRICS 35
246: #define POSTSCRIPT_DATA 37
247: #define POSTSCRIPT_IGNORE 38
248: #define MOUSETRAILS 39
249:
250: #define GETEXTENDEDTEXTMETRICS 256
251: #define GETEXTENTTABLE 257
252: #define GETPAIRKERNTABLE 258
253: #define GETTRACKKERNTABLE 259
254: #define EXTTEXTOUT 512
255: #define ENABLERELATIVEWIDTHS 768
256: #define ENABLEPAIRKERNING 769
257: #define SETKERNTRACK 770
258: #define SETALLJUSTVALUES 771
259: #define SETCHARSET 772
260:
261: #define STRETCHBLT 2048
262: #define GETSETSCREENPARAMS 3072
263: #define BEGIN_PATH 4096
264: #define CLIP_TO_PATH 4097
265: #define END_PATH 4098
266: #define EXT_DEVICE_CAPS 4099
267: #define RESTORE_CTM 4100
268: #define SAVE_CTM 4101
269: #define SET_ARC_DIRECTION 4102
270: #define SET_BACKGROUND_COLOR 4103
271: #define SET_POLY_MODE 4104
272: #define SET_SCREEN_ANGLE 4105
273: #define SET_SPREAD 4106
274: #define TRANSFORM_CTM 4107
275: #define SET_CLIP_BOX 4108
276: #define SET_BOUNDS 4109
277: #define SET_MIRROR_MODE 4110
278:
279: /* Spooler Error Codes */
280: #define SP_NOTREPORTED 0x4000
281: #define SP_ERROR (-1)
282: #define SP_APPABORT (-2)
283: #define SP_USERABORT (-3)
284: #define SP_OUTOFDISK (-4)
285: #define SP_OUTOFMEMORY (-5)
286:
287: #define PR_JOBSTATUS 0x0000
288:
289: /* Object Definitions for EnumObjects() */
290: #define OBJ_PEN 1
291: #define OBJ_BRUSH 2
292: #define OBJ_DC 3
293: #define OBJ_METADC 4
294: #define OBJ_PAL 5
295: #define OBJ_FONT 6
296: #define OBJ_BITMAP 7
297: #define OBJ_REGION 8
298: #define OBJ_METAFILE 9
299: #define OBJ_MEMDC 10
300: #define OBJ_EXTPEN 11
301: #define OBJ_ENHMETADC 12
302: #define OBJ_ENHMETAFILE 13
303:
304: /* xform stuff */
305: #define MWT_IDENTITY 1
306: #define MWT_LEFTMULTIPLY 2
307: #define MWT_RIGHTMULTIPLY 3
308:
309: #define MWT_MIN MWT_IDENTITY
310: #define MWT_MAX MWT_RIGHTMULTIPLY
311:
312: #define _XFORM_
313: typedef struct tagXFORM
314: {
315: FLOAT eM11;
316: FLOAT eM12;
317: FLOAT eM21;
318: FLOAT eM22;
319: FLOAT eDx;
320: FLOAT eDy;
321: } XFORM, *PXFORM, FAR *LPXFORM;
322:
323: /* Bitmap Header Definition */
324: typedef struct tagBITMAP
325: {
326: LONG bmType;
327: LONG bmWidth;
328: LONG bmHeight;
329: LONG bmWidthBytes;
330: WORD bmPlanes;
331: WORD bmBitsPixel;
332: LPVOID bmBits;
333: } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
334:
335: typedef struct tagRGBTRIPLE {
336: BYTE rgbtBlue;
337: BYTE rgbtGreen;
338: BYTE rgbtRed;
339: } RGBTRIPLE;
340:
341: typedef struct tagRGBQUAD {
342: BYTE rgbBlue;
343: BYTE rgbGreen;
344: BYTE rgbRed;
345: BYTE rgbReserved;
346: } RGBQUAD;
347:
348: /* structures for defining DIBs */
349: typedef struct tagBITMAPCOREHEADER {
350: DWORD bcSize; /* used to get to color table */
351: WORD bcWidth;
352: WORD bcHeight;
353: WORD bcPlanes;
354: WORD bcBitCount;
355: } BITMAPCOREHEADER, FAR *LPBITMAPCOREHEADER, *PBITMAPCOREHEADER;
356:
357:
358: typedef struct tagBITMAPINFOHEADER{
359: DWORD biSize;
360: LONG biWidth;
361: LONG biHeight;
362: WORD biPlanes;
363: WORD biBitCount;
364: DWORD biCompression;
365: DWORD biSizeImage;
366: LONG biXPelsPerMeter;
367: LONG biYPelsPerMeter;
368: DWORD biClrUsed;
369: DWORD biClrImportant;
370: } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
371:
372: /* constants for the biCompression field */
373: #define BI_RGB 0L
374: #define BI_RLE8 1L
375: #define BI_RLE4 2L
376: #define BI_TOPDOWN 4L
377:
378: typedef struct tagBITMAPINFO {
379: BITMAPINFOHEADER bmiHeader;
380: RGBQUAD bmiColors[1];
381: } BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
382:
383: typedef struct tagBITMAPCOREINFO {
384: BITMAPCOREHEADER bmciHeader;
385: RGBTRIPLE bmciColors[1];
386: } BITMAPCOREINFO, FAR *LPBITMAPCOREINFO, *PBITMAPCOREINFO;
387:
388: #pragma pack(2)
389: typedef struct tagBITMAPFILEHEADER {
390: WORD bfType;
391: DWORD bfSize;
392: WORD bfReserved1;
393: WORD bfReserved2;
394: DWORD bfOffBits;
395: } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
396: #pragma pack()
397:
398: #define MAKEPOINTS(l) (*((POINTS FAR *)&(l)))
399:
400: #ifndef NOMETAFILE
401:
402: /* Clipboard Metafile Picture Structure */
403: typedef struct tagHANDLETABLE
404: {
405: HGDIOBJ objectHandle[1];
406: } HANDLETABLE, *PHANDLETABLE, FAR *LPHANDLETABLE;
407:
408: typedef struct tagMETARECORD
409: {
410: DWORD rdSize;
411: WORD rdFunction;
412: WORD rdParm[1];
413: } METARECORD;
414: typedef struct tagMETARECORD UNALIGNED *PMETARECORD, FAR *LPMETARECORD;
415:
416: typedef struct tagMETAFILEPICT
417: {
418: LONG mm;
419: LONG xExt;
420: LONG yExt;
421: HMETAFILE hMF;
422: } METAFILEPICT, FAR *LPMETAFILEPICT;
423:
424: #pragma pack(2)
425: typedef struct tagMETAHEADER
426: {
427: WORD mtType;
428: WORD mtHeaderSize;
429: WORD mtVersion;
430: DWORD mtSize;
431: WORD mtNoObjects;
432: DWORD mtMaxRecord;
433: WORD mtNoParameters;
434: } METAHEADER;
435: typedef struct tagMETAHEADER UNALIGNED *PMETAHEADER, FAR *LPMETAHEADER;
436:
437: #pragma pack()
438:
439: /* Enhanced Metafile structures */
440: typedef struct tagENHMETARECORD
441: {
442: DWORD iType; // Record type MR_XXX
443: DWORD nSize; // Record size in bytes
444: DWORD dParm[1]; // Parameters
445: } ENHMETARECORD, *PENHMETARECORD, *LPENHMETARECORD;
446:
447: typedef struct tagENHMETAHEADER
448: {
449: DWORD iType; // Record type MR_METAFILE
450: DWORD nSize; // Record size in bytes. This may be greater
451: // than the sizeof(ENHMETAHEADER).
452: RECTL rclBounds; // Inclusive-inclusive bounds in device units
453: RECTL rclFrame; // Inclusive-inclusive Picture Frame of metafile in .01 mm units
454: DWORD dSignature; // Signature. Must be ENHMETA_SIGNATURE.
455: DWORD nVersion; // Version number
456: DWORD nBytes; // Size of the metafile in bytes
457: DWORD nRecords; // Number of records in the metafile
458: WORD nHandles; // Number of handles in the handle table
459: // Handle index zero is reserved.
460: WORD sReserved; // Reserved. Must be zero.
461: DWORD nDescription; // Number of chars in the unicode description string
462: // This is 0 if there is no description string
463: DWORD offDescription; // Offset to the metafile description record.
464: // This is 0 if there is no description string
465: DWORD nPalEntries; // Number of entries in the metafile palette.
466: SIZEL szlDevice; // Size of the reference device in pels
467: SIZEL szlMillimeters; // Size of the reference device in millimeters
468: } ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER;
469:
470: #endif /* NOMETAFILE */
471:
472: #ifndef NOTEXTMETRIC
473:
474: /* tmPitchAntFamily flags */
475: #define TMPF_FIXED_PITCH 0x01
476: #define TMPF_VECTOR 0x02
477: #define TMPF_DEVICE 0x08
478: #define TMPF_TRUETYPE 0x04
479:
480: typedef struct tagTEXTMETRICA
481: {
482: LONG tmHeight;
483: LONG tmAscent;
484: LONG tmDescent;
485: LONG tmInternalLeading;
486: LONG tmExternalLeading;
487: LONG tmAveCharWidth;
488: LONG tmMaxCharWidth;
489: LONG tmWeight;
490: LONG tmOverhang;
491: LONG tmDigitizedAspectX;
492: LONG tmDigitizedAspectY;
493: BYTE tmFirstChar;
494: BYTE tmLastChar;
495: BYTE tmDefaultChar;
496: BYTE tmBreakChar;
497: BYTE tmItalic;
498: BYTE tmUnderlined;
499: BYTE tmStruckOut;
500: BYTE tmPitchAndFamily;
501: BYTE tmCharSet;
502: } TEXTMETRICA, *PTEXTMETRICA, NEAR *NPTEXTMETRICA, FAR *LPTEXTMETRICA;
503: typedef struct tagTEXTMETRICW
504: {
505: LONG tmHeight;
506: LONG tmAscent;
507: LONG tmDescent;
508: LONG tmInternalLeading;
509: LONG tmExternalLeading;
510: LONG tmAveCharWidth;
511: LONG tmMaxCharWidth;
512: LONG tmWeight;
513: LONG tmOverhang;
514: LONG tmDigitizedAspectX;
515: LONG tmDigitizedAspectY;
516: WCHAR tmFirstChar;
517: WCHAR tmLastChar;
518: WCHAR tmDefaultChar;
519: WCHAR tmBreakChar;
520: BYTE tmItalic;
521: BYTE tmUnderlined;
522: BYTE tmStruckOut;
523: BYTE tmPitchAndFamily;
524: BYTE tmCharSet;
525: } TEXTMETRICW, *PTEXTMETRICW, NEAR *NPTEXTMETRICW, FAR *LPTEXTMETRICW;
526: #ifdef UNICODE
527: #define TEXTMETRIC TEXTMETRICW
528: #define PTEXTMETRIC PTEXTMETRICW
529: #define NPTEXTMETRIC NPTEXTMETRICW
530: #define LPTEXTMETRIC LPTEXTMETRICW
531: #else
532: #define TEXTMETRIC TEXTMETRICA
533: #define PTEXTMETRIC PTEXTMETRICA
534: #define NPTEXTMETRIC NPTEXTMETRICA
535: #define LPTEXTMETRIC LPTEXTMETRICA
536: #endif // UNICODE
537:
538: /* ntmFlags field flags */
539: #define NTM_REGULAR 0x00000040L
540: #define NTM_BOLD 0x00000020L
541: #define NTM_ITALIC 0x00000001L
542:
543: typedef struct tagNEWTEXTMETRICA
544: {
545: LONG tmHeight;
546: LONG tmAscent;
547: LONG tmDescent;
548: LONG tmInternalLeading;
549: LONG tmExternalLeading;
550: LONG tmAveCharWidth;
551: LONG tmMaxCharWidth;
552: LONG tmWeight;
553: LONG tmOverhang;
554: LONG tmDigitizedAspectX;
555: LONG tmDigitizedAspectY;
556: BYTE tmFirstChar;
557: BYTE tmLastChar;
558: BYTE tmDefaultChar;
559: BYTE tmBreakChar;
560: BYTE tmItalic;
561: BYTE tmUnderlined;
562: BYTE tmStruckOut;
563: BYTE tmPitchAndFamily;
564: BYTE tmCharSet;
565: DWORD ntmFlags;
566: UINT ntmSizeEM;
567: UINT ntmCellHeight;
568: UINT ntmAvgWidth;
569: } NEWTEXTMETRICA, *PNEWTEXTMETRICA, NEAR *NPNEWTEXTMETRICA, FAR *LPNEWTEXTMETRICA;
570: typedef struct tagNEWTEXTMETRICW
571: {
572: LONG tmHeight;
573: LONG tmAscent;
574: LONG tmDescent;
575: LONG tmInternalLeading;
576: LONG tmExternalLeading;
577: LONG tmAveCharWidth;
578: LONG tmMaxCharWidth;
579: LONG tmWeight;
580: LONG tmOverhang;
581: LONG tmDigitizedAspectX;
582: LONG tmDigitizedAspectY;
583: WCHAR tmFirstChar;
584: WCHAR tmLastChar;
585: WCHAR tmDefaultChar;
586: WCHAR tmBreakChar;
587: BYTE tmItalic;
588: BYTE tmUnderlined;
589: BYTE tmStruckOut;
590: BYTE tmPitchAndFamily;
591: BYTE tmCharSet;
592: DWORD ntmFlags;
593: UINT ntmSizeEM;
594: UINT ntmCellHeight;
595: UINT ntmAvgWidth;
596: } NEWTEXTMETRICW, *PNEWTEXTMETRICW, NEAR *NPNEWTEXTMETRICW, FAR *LPNEWTEXTMETRICW;
597: #ifdef UNICODE
598: #define NEWTEXTMETRIC NEWTEXTMETRICW
599: #define PNEWTEXTMETRIC PNEWTEXTMETRICW
600: #define NPNEWTEXTMETRIC NPNEWTEXTMETRICW
601: #define LPNEWTEXTMETRIC LPNEWTEXTMETRICW
602: #else
603: #define NEWTEXTMETRIC NEWTEXTMETRICA
604: #define PNEWTEXTMETRIC PNEWTEXTMETRICA
605: #define NPNEWTEXTMETRIC NPNEWTEXTMETRICA
606: #define LPNEWTEXTMETRIC LPNEWTEXTMETRICA
607: #endif // UNICODE
608:
609: #endif /* NOTEXTMETRIC */
610: /* GDI Logical Objects: */
611:
612: /* Pel Array */
613: typedef struct tagPELARRAY
614: {
615: LONG paXCount;
616: LONG paYCount;
617: LONG paXExt;
618: LONG paYExt;
619: BYTE paRGBs;
620: } PELARRAY, *PPELARRAY, NEAR *NPPELARRAY, FAR *LPPELARRAY;
621:
622: /* Logical Brush (or Pattern) */
623: typedef struct tagLOGBRUSH
624: {
625: UINT lbStyle;
626: COLORREF lbColor;
627: LONG lbHatch;
628: } LOGBRUSH, *PLOGBRUSH, NEAR *NPLOGBRUSH, FAR *LPLOGBRUSH;
629:
630: typedef LOGBRUSH PATTERN;
631: typedef PATTERN *PPATTERN;
632: typedef PATTERN NEAR *NPPATTERN;
633: typedef PATTERN FAR *LPPATTERN;
634:
635: /* Logical Pen */
636: typedef struct tagLOGPEN
637: {
638: UINT lopnStyle;
639: POINT lopnWidth;
640: COLORREF lopnColor;
641: } LOGPEN, *PLOGPEN, NEAR *NPLOGPEN, FAR *LPLOGPEN;
642:
643: typedef struct tagEXTLOGPEN {
644: DWORD elpPenStyle;
645: DWORD elpWidth;
646: UINT elpBrushStyle;
647: COLORREF elpColor;
648: LONG elpHatch;
649: DWORD elpNumEntries;
650: DWORD elpStyleEntry[1];
651: } EXTLOGPEN, *PEXTLOGPEN, NEAR *NPEXTLOGPEN, FAR *LPEXTLOGPEN;
652:
653: typedef struct tagPALETTEENTRY {
654: BYTE peRed;
655: BYTE peGreen;
656: BYTE peBlue;
657: BYTE peFlags;
658: } PALETTEENTRY, *PPALETTEENTRY, FAR *LPPALETTEENTRY;
659:
660: /* Logical Palette */
661: typedef struct tagLOGPALETTE {
662: WORD palVersion;
663: WORD palNumEntries;
664: PALETTEENTRY palPalEntry[1];
665: } LOGPALETTE, *PLOGPALETTE, NEAR *NPLOGPALETTE, FAR *LPLOGPALETTE;
666:
667:
668: /* Logical Font */
669: #define LF_FACESIZE 32
670:
671: typedef struct tagLOGFONTA
672: {
673: LONG lfHeight;
674: LONG lfWidth;
675: LONG lfEscapement;
676: LONG lfOrientation;
677: LONG lfWeight;
678: BYTE lfItalic;
679: BYTE lfUnderline;
680: BYTE lfStrikeOut;
681: BYTE lfCharSet;
682: BYTE lfOutPrecision;
683: BYTE lfClipPrecision;
684: BYTE lfQuality;
685: BYTE lfPitchAndFamily;
686: BYTE lfFaceName[LF_FACESIZE];
687: } LOGFONTA, *PLOGFONTA, NEAR *NPLOGFONTA, FAR *LPLOGFONTA;
688: typedef struct tagLOGFONTW
689: {
690: LONG lfHeight;
691: LONG lfWidth;
692: LONG lfEscapement;
693: LONG lfOrientation;
694: LONG lfWeight;
695: BYTE lfItalic;
696: BYTE lfUnderline;
697: BYTE lfStrikeOut;
698: BYTE lfCharSet;
699: BYTE lfOutPrecision;
700: BYTE lfClipPrecision;
701: BYTE lfQuality;
702: BYTE lfPitchAndFamily;
703: WCHAR lfFaceName[LF_FACESIZE];
704: } LOGFONTW, *PLOGFONTW, NEAR *NPLOGFONTW, FAR *LPLOGFONTW;
705: #ifdef UNICODE
706: #define LOGFONT LOGFONTW
707: #define PLOGFONT PLOGFONTW
708: #define NPLOGFONT NPLOGFONTW
709: #define LPLOGFONT LPLOGFONTW
710: #else
711: #define LOGFONT LOGFONTA
712: #define PLOGFONT PLOGFONTA
713: #define NPLOGFONT NPLOGFONTA
714: #define LPLOGFONT LPLOGFONTA
715: #endif // UNICODE
716:
717: #define LF_FULLFACESIZE 64
718:
719: /* Structure passed to FONTENUMPROC */
720: typedef struct tagENUMLOGFONTA
721: {
722: LOGFONTA elfLogFont;
723: BYTE elfFullName[LF_FULLFACESIZE];
724: BYTE elfStyle[LF_FACESIZE];
725: } ENUMLOGFONTA, FAR* LPENUMLOGFONTA;
726: /* Structure passed to FONTENUMPROC */
727: typedef struct tagENUMLOGFONTW
728: {
729: LOGFONTW elfLogFont;
730: WCHAR elfFullName[LF_FULLFACESIZE];
731: WCHAR elfStyle[LF_FACESIZE];
732: } ENUMLOGFONTW, FAR* LPENUMLOGFONTW;
733: #ifdef UNICODE
734: #define ENUMLOGFONT ENUMLOGFONTW
735: #define LPENUMLOGFONT LPENUMLOGFONTW
736: #else
737: #define ENUMLOGFONT ENUMLOGFONTA
738: #define LPENUMLOGFONT LPENUMLOGFONTA
739: #endif // UNICODE
740:
741: #define OUT_DEFAULT_PRECIS 0
742: #define OUT_STRING_PRECIS 1
743: #define OUT_CHARACTER_PRECIS 2
744: #define OUT_STROKE_PRECIS 3
745: #define OUT_TT_PRECIS 4
746: #define OUT_DEVICE_PRECIS 5
747: #define OUT_RASTER_PRECIS 6
748: #define OUT_TT_ONLY_PRECIS 7
749: #define OUT_OUTLINE_PRECIS 8
750:
751: #define CLIP_DEFAULT_PRECIS 0
752: #define CLIP_CHARACTER_PRECIS 1
753: #define CLIP_STROKE_PRECIS 2
754: #define CLIP_MASK 0xf
755: #define CLIP_LH_ANGLES (1<<4)
756: #define CLIP_TT_ALWAYS (2<<4)
757: #define CLIP_EMBEDDED (8<<4)
758:
759: #define DEFAULT_QUALITY 0
760: #define DRAFT_QUALITY 1
761: #define PROOF_QUALITY 2
762:
763: #define DEFAULT_PITCH 0
764: #define FIXED_PITCH 1
765: #define VARIABLE_PITCH 2
766:
767: #define ANSI_CHARSET 0
768: #define UNICODE_CHARSET 1
769: #define SYMBOL_CHARSET 2
770: #define SHIFTJIS_CHARSET 128
771: #define HANGEUL_CHARSET 129
772: #define CHINESEBIG5_CHARSET 136
773: #define OEM_CHARSET 255
774:
775: /* Font Families */
776: #define FF_DONTCARE (0<<4) /* Don't care or don't know. */
777: #define FF_ROMAN (1<<4) /* Variable stroke width, serifed. */
778: /* Times Roman, Century Schoolbook, etc. */
779: #define FF_SWISS (2<<4) /* Variable stroke width, sans-serifed. */
780: /* Helvetica, Swiss, etc. */
781: #define FF_MODERN (3<<4) /* Constant stroke width, serifed or sans-serifed. */
782: /* Pica, Elite, Courier, etc. */
783: #define FF_SCRIPT (4<<4) /* Cursive, etc. */
784: #define FF_DECORATIVE (5<<4) /* Old English, etc. */
785:
786: /* Font Weights */
787: #define FW_DONTCARE 0
788: #define FW_THIN 100
789: #define FW_EXTRALIGHT 200
790: #define FW_LIGHT 300
791: #define FW_NORMAL 400
792: #define FW_MEDIUM 500
793: #define FW_SEMIBOLD 600
794: #define FW_BOLD 700
795: #define FW_EXTRABOLD 800
796: #define FW_HEAVY 900
797:
798: #define FW_ULTRALIGHT FW_EXTRALIGHT
799: #define FW_REGULAR FW_NORMAL
800: #define FW_DEMIBOLD FW_SEMIBOLD
801: #define FW_ULTRABOLD FW_EXTRABOLD
802: #define FW_BLACK FW_HEAVY
803:
804:
805: /* !!![kirko] The CHARSET structure is sheduled to die */
806: typedef struct tagCHARSET {
807: DWORD aflBlock[3];
808: DWORD flLang;
809: } CHARSET, *LPCHARSET;
810:
811: #define PANOSE_COUNT 10
812: #define PAN_FAMILYTYPE_INDEX 0
813: #define PAN_SERIFSTYLE_INDEX 1
814: #define PAN_WEIGHT_INDEX 2
815: #define PAN_PROPORTION_INDEX 3
816: #define PAN_CONTRAST_INDEX 4
817: #define PAN_STROKEVARIATION_INDEX 5
818: #define PAN_ARMSTYLE_INDEX 6
819: #define PAN_LETTERFORM_INDEX 7
820: #define PAN_MIDLINE_INDEX 8
821: #define PAN_XHEIGHT_INDEX 9
822:
823: #define PAN_CULTURE_LATIN 0
824:
825: typedef struct tagPANOSE {
826: DWORD ulCulture; /* !!! [kirko] this field will disappear */
827: BYTE bFamilyType;
828: BYTE bSerifStyle;
829: BYTE bWeight;
830: BYTE bProportion;
831: BYTE bContrast;
832: BYTE bStrokeVariation;
833: BYTE bArmStyle;
834: BYTE bLetterform;
835: BYTE bMidline;
836: BYTE bXHeight;
837: } PANOSE, *LPPANOSE;
838:
839: #define PAN_ANY 0 /* Any */
840: #define PAN_NO_FIT 1 /* No Fit */
841:
842: #define PAN_FAMILY_TEXT_DISPLAY 2 /* Text and Display */
843: #define PAN_FAMILY_SCRIPT 3 /* Script */
844: #define PAN_FAMILY_DECORATIVE 4 /* Decorative */
845: #define PAN_FAMILY_PICTORIAL 5 /* Pictorial */
846:
847: #define PAN_SERIF_COVE 2 /* Cove */
848: #define PAN_SERIF_OBTUSE_COVE 3 /* Obtuse Cove */
849: #define PAN_SERIF_SQUARE_COVE 4 /* Square Cove */
850: #define PAN_SERIF_OBTUSE_SQUARE_COVE 5 /* Obtuse Square Cove */
851: #define PAN_SERIF_SQUARE 6 /* Square */
852: #define PAN_SERIF_THIN 7 /* Thin */
853: #define PAN_SERIF_BONE 8 /* Bone */
854: #define PAN_SERIF_EXAGGERATED 9 /* Exaggerated */
855: #define PAN_SERIF_TRIANGLE 10 /* Triangle */
856: #define PAN_SERIF_NORMAL_SANS 11 /* Normal Sans */
857: #define PAN_SERIF_OBTUSE_SANS 12 /* Obtuse Sans */
858: #define PAN_SERIF_PERP_SANS 13 /* Prep Sans */
859: #define PAN_SERIF_FLARED 14 /* Flared */
860: #define PAN_SERIF_ROUNDED 15 /* Rounded */
861:
862: #define PAN_WEIGHT_VERY_LIGHT 2 /* Very Light */
863: #define PAN_WEIGHT_LIGHT 3 /* Light */
864: #define PAN_WEIGHT_THIN 4 /* Thin */
865: #define PAN_WEIGHT_BOOK 5 /* Book */
866: #define PAN_WEIGHT_MEDIUM 6 /* Medium */
867: #define PAN_WEIGHT_DEMI 7 /* Demi */
868: #define PAN_WEIGHT_BOLD 8 /* Bold */
869: #define PAN_WEIGHT_HEAVY 9 /* Heavy */
870: #define PAN_WEIGHT_BLACK 10 /* Black */
871: #define PAN_WEIGHT_NORD 11 /* Nord */
872:
873: #define PAN_PROP_OLD_STYLE 2 /* Old Style */
874: #define PAN_PROP_MODERN 3 /* Modern */
875: #define PAN_PROP_EVEN_WIDTH 4 /* Even Width */
876: #define PAN_PROP_EXPANDED 5 /* Expanded */
877: #define PAN_PROP_CONDENSED 6 /* Condensed */
878: #define PAN_PROP_VERY_EXPANDED 7 /* Very Expanded */
879: #define PAN_PROP_VERY_CONDENSED 8 /* Very Condensed */
880: #define PAN_PROP_MONOSPACED 9 /* Monospaced */
881:
882: #define PAN_CONTRAST_NONE 2 /* None */
883: #define PAN_CONTRAST_VERY_LOW 3 /* Very Low */
884: #define PAN_CONTRAST_LOW 4 /* Low */
885: #define PAN_CONTRAST_MEDIUM_LOW 5 /* Medium Low */
886: #define PAN_CONTRAST_MEDIUM 6 /* Medium */
887: #define PAN_CONTRAST_MEDIUM_HIGH 7 /* Mediim High */
888: #define PAN_CONTRAST_HIGH 8 /* High */
889: #define PAN_CONTRAST_VERY_HIGH 9 /* Very High */
890:
891: #define PAN_STROKE_GRADUAL_DIAG 2 /* Gradual/Diagonal */
892: #define PAN_STROKE_GRADUAL_TRAN 3 /* Gradual/Transitional */
893: #define PAN_STROKE_GRADUAL_VERT 4 /* Gradual/Vertical */
894: #define PAN_STROKE_GRADUAL_HORZ 5 /* Gradual/Horizontal */
895: #define PAN_STROKE_RAPID_VERT 6 /* Rapid/Vertical */
896: #define PAN_STROKE_RAPID_HORZ 7 /* Rapid/Horizontal */
897: #define PAN_STROKE_INSTANT_VERT 8 /* Instant/Vertical */
898:
899: #define PAN_STRAIGHT_ARMS_HORZ 2 /* Straight Arms/Horizontal */
900: #define PAN_STRAIGHT_ARMS_WEDGE 3 /* Straight Arms/Wedge */
901: #define PAN_STRAIGHT_ARMS_VERT 4 /* Straight Arms/Vertical */
902: #define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5 /* Straight Arms/Single-Serif */
903: #define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6 /* Straight Arms/Double-Serif */
904: #define PAN_BENT_ARMS_HORZ 7 /* Non-Straight Arms/Horizontal */
905: #define PAN_BENT_ARMS_WEDGE 8 /* Non-Straight Arms/Wedge */
906: #define PAN_BENT_ARMS_VERT 9 /* Non-Straight Arms/Vertical */
907: #define PAN_BENT_ARMS_SINGLE_SERIF 10 /* Non-Straight Arms/Single-Serif */
908: #define PAN_BENT_ARMS_DOUBLE_SERIF 11 /* Non-Straight Arms/Double-Serif */
909:
910: #define PAN_LETT_NORMAL_CONTACT 2 /* Normal/Contact */
911: #define PAN_LETT_NORMAL_WEIGHTED 3 /* Normal/Weighted */
912: #define PAN_LETT_NORMAL_BOXED 4 /* Normal/Boxed */
913: #define PAN_LETT_NORMAL_FLATTENED 5 /* Normal/Flattened */
914: #define PAN_LETT_NORMAL_ROUNDED 6 /* Normal/Rounded */
915: #define PAN_LETT_NORMAL_OFF_CENTER 7 /* Normal/Off Center */
916: #define PAN_LETT_NORMAL_SQUARE 8 /* Normal/Square */
917: #define PAN_LETT_OBLIQUE_CONTACT 9 /* Oblique/Contact */
918: #define PAN_LETT_OBLIQUE_WEIGHTED 10 /* Oblique/Weighted */
919: #define PAN_LETT_OBLIQUE_BOXED 11 /* Oblique/Boxed */
920: #define PAN_LETT_OBLIQUE_FLATTENED 12 /* Oblique/Flattened */
921: #define PAN_LETT_OBLIQUE_ROUNDED 13 /* Oblique/Rounded */
922: #define PAN_LETT_OBLIQUE_OFF_CENTER 14 /* Oblique/Off Center */
923: #define PAN_LETT_OBLIQUE_SQUARE 15 /* Oblique/Square */
924:
925: #define PAN_MIDLINE_STANDARD_TRIMMED 2 /* Standard/Trimmed */
926: #define PAN_MIDLINE_STANDARD_POINTED 3 /* Standard/Pointed */
927: #define PAN_MIDLINE_STANDARD_SERIFED 4 /* Standard/Serifed */
928: #define PAN_MIDLINE_HIGH_TRIMMED 5 /* High/Trimmed */
929: #define PAN_MIDLINE_HIGH_POINTED 6 /* High/Pointed */
930: #define PAN_MIDLINE_HIGH_SERIFED 7 /* High/Serifed */
931: #define PAN_MIDLINE_CONSTANT_TRIMMED 8 /* Constant/Trimmed */
932: #define PAN_MIDLINE_CONSTANT_POINTED 9 /* Constant/Pointed */
933: #define PAN_MIDLINE_CONSTANT_SERIFED 10 /* Constant/Serifed */
934: #define PAN_MIDLINE_LOW_TRIMMED 11 /* Low/Trimmed */
935: #define PAN_MIDLINE_LOW_POINTED 12 /* Low/Pointed */
936: #define PAN_MIDLINE_LOW_SERIFED 13 /* Low/Serifed */
937:
938: #define PAN_XHEIGHT_CONSTANT_SMALL 2 /* Constant/Small */
939: #define PAN_XHEIGHT_CONSTANT_STD 3 /* Constant/Standard */
940: #define PAN_XHEIGHT_CONSTANT_LARGE 4 /* Constant/Large */
941: #define PAN_XHEIGHT_DUCKING_SMALL 5 /* Ducking/Small */
942: #define PAN_XHEIGHT_DUCKING_STD 6 /* Ducking/Standard */
943: #define PAN_XHEIGHT_DUCKING_LARGE 7 /* Ducking/Large */
944:
945:
946: #define ELF_VENDOR_SIZE 4
947:
948: /* The extended logical font */
949: /* An extension of the ENUMLOGFONT */
950:
951: typedef struct tagEXTLOGFONTA {
952: LOGFONTA elfLogFont;
953: BYTE elfFullName[LF_FULLFACESIZE];
954: BYTE elfStyle[LF_FACESIZE];
955: UINT elfVersion; /* 0 for the first release of NT */
956: UINT elfCulture; /* 0 for Latin */
957: PANOSE elfPanose;
958: BYTE elfVendorId[ELF_VENDOR_SIZE];
959: } EXTLOGFONTA, *PEXTLOGFONTA, NEAR *NPEXTLOGFONTA, FAR *LPEXTLOGFONTA;
960: typedef struct tagEXTLOGFONTW {
961: LOGFONTW elfLogFont;
962: WCHAR elfFullName[LF_FULLFACESIZE];
963: WCHAR elfStyle[LF_FACESIZE];
964: UINT elfVersion; /* 0 for the first release of NT */
965: UINT elfCulture; /* 0 for Latin */
966: PANOSE elfPanose;
967: BYTE elfVendorId[ELF_VENDOR_SIZE];
968: } EXTLOGFONTW, *PEXTLOGFONTW, NEAR *NPEXTLOGFONTW, FAR *LPEXTLOGFONTW;
969: #ifdef UNICODE
970: #define EXTLOGFONT EXTLOGFONTW
971: #define PEXTLOGFONT PEXTLOGFONTW
972: #define NPEXTLOGFONT NPEXTLOGFONTW
973: #define LPEXTLOGFONT LPEXTLOGFONTW
974: #else
975: #define EXTLOGFONT EXTLOGFONTA
976: #define PEXTLOGFONT PEXTLOGFONTA
977: #define NPEXTLOGFONT NPEXTLOGFONTA
978: #define LPEXTLOGFONT LPEXTLOGFONTA
979: #endif // UNICODE
980:
981:
982: #define ELF_VERSION 0
983: #define ELF_CULTURE_LATIN 0
984:
985: /* the complete set of font attribute distances */
986:
987: /* Allowed values for FMATCH::wType */
988: #define FMATCH_EXACT 0
989: #define FMATCH_NEAR 1
990: #define FMATCH_FAR 2
991: #define FMATCH_ERROR 3
992:
993: #define PANOSE_RANGE 16
994:
995: #define FM_LOCATION_GDI 1 // location of font is in GDI
996:
997: typedef struct tagFMPENALTYSET {
998: DWORD psSize; // size of this structure in BYTE's
999: DWORD psHeight;
1000: DWORD psWidth;
1001: DWORD psEscapement;
1002: DWORD psOrientation;
1003: DWORD psWeight;
1004: DWORD psItalic;
1005: DWORD psUnderline;
1006: DWORD psStrikeOut;
1007: DWORD psOutPrecsion;
1008: DWORD psClipPrecision;
1009: DWORD psQuality;
1010: DWORD psPitchAndFamily;
1011: DWORD psFaceName;
1012: DWORD psFullName;
1013: DWORD psStyle;
1014: DWORD psPanose[PANOSE_COUNT];
1015: DWORD psVendorId;
1016: DWORD psLocation;
1017: } FMPENALTYSET, *LPFMPENALTYSET;
1018:
1019: typedef struct tagFMWEIGHTSET {
1020: DWORD wsSize; // size of this structure in BYTE's
1021: DWORD wsHeight;
1022: DWORD wsWidth;
1023: DWORD wsEscapement;
1024: DWORD wsOrientation;
1025: DWORD wsWeight;
1026: DWORD wsItalic;
1027: DWORD wsUnderline;
1028: DWORD wsStrikeOut;
1029: DWORD wsOutPrecsion;
1030: DWORD wsClipPrecision;
1031: DWORD wsQuality;
1032: DWORD wsPitchAndFamily;
1033: DWORD wsFaceName;
1034: DWORD wsFullName;
1035: DWORD wsStyle;
1036: DWORD wsPanose[PANOSE_COUNT];
1037: DWORD wsVendorId;
1038: DWORD wsLocation;
1039: } FMWEIGHTSET, *LPFMWEIGHTSET;
1040:
1041: typedef struct tagFMATCHA {
1042: DWORD fmSize; // size of this structure in bytes
1043: DWORD fmTotalPenalty; // total penalty of physical font
1044: FMPENALTYSET fmPenaltySet; // penalties of physical font
1045: EXTLOGFONTA fmExtLogFont; // describes physical font
1046: } FMATCHA, *LPFMATCHA;
1047: typedef struct tagFMATCHW {
1048: DWORD fmSize; // size of this structure in bytes
1049: DWORD fmTotalPenalty; // total penalty of physical font
1050: FMPENALTYSET fmPenaltySet; // penalties of physical font
1051: EXTLOGFONTW fmExtLogFont; // describes physical font
1052: } FMATCHW, *LPFMATCHW;
1053: #ifdef UNICODE
1054: #define FMATCH FMATCHW
1055: #define LPFMATCH LPFMATCHW
1056: #else
1057: #define FMATCH FMATCHA
1058: #define LPFMATCH LPFMATCHA
1059: #endif // UNICODE
1060:
1061: /* indices to font mapping functions */
1062:
1063: #define MAPPER_INDEX_TERMINATE 0
1064:
1065: #define MAPPER_INDEX_HEIGHT 1
1066: #define MAPPER_INDEX_WIDTH 2
1067: #define MAPPER_INDEX_ESCAPEMENT 3
1068: #define MAPPER_INDEX_ORIENTATION 4
1069: #define MAPPER_INDEX_WEIGHT 5
1070: #define MAPPER_INDEX_ITALIC 6
1071: #define MAPPER_INDEX_UNDERLINE 7
1072: #define MAPPER_INDEX_STRIKEOUT 8
1073: #define MAPPER_INDEX_CHARSET 9
1074: #define MAPPER_INDEX_OUTPRECISION 10
1075: #define MAPPER_INDEX_CLIPPRECISION 11
1076: #define MAPPER_INDEX_QUALITY 12
1077: #define MAPPER_INDEX_PITCHANDFAMILY 13
1078: #define MAPPER_INDEX_FACENAME 14
1079: #define MAPPER_INDEX_FULLNAME 15
1080: #define MAPPER_INDEX_STYLE 16
1081: #define MAPPER_INDEX_PANOSE 17
1082: #define MAPPER_INDEX_VENDORID 18
1083: #define MAPPER_INDEX_ASPECT 19
1084: #define MAPPER_INDEX_LOCATION 20
1085:
1086: #define MAPPER_INDEX_LAST MAPPER_INDEX_LOCATION
1087:
1088: #define SIZEOFMAPORDER sizeof(UINT)*(MAPPER_INDEX_LAST+1)
1089:
1090: typedef DWORD FMORDER[MAPPER_INDEX_LAST+1];
1091:
1092: typedef FMORDER *LPFMORDER;
1093:
1094: typedef struct tagFMCONTROLS {
1095: DWORD size;
1096: DWORD penaltySumMax;
1097: FMPENALTYSET fmpsMax;
1098: FMWEIGHTSET fmws;
1099: FMORDER fmorder;
1100: } FMCONTROLS, *LPFMCONTROLS;
1101:
1102: #define SIZEOFFMCONTROLS sizeof(FMCONTROLS)
1103:
1104: /* EnumFonts Masks */
1105: #define RASTER_FONTTYPE 0x0001
1106: #define DEVICE_FONTTYPE 0x002
1107: #define TRUETYPE_FONTTYPE 0x004
1108:
1109: #define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
1110: #define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b))
1111: #define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
1112:
1113: /* palette entry flags */
1114:
1115: #define PC_RESERVED 0x01 /* palette index used for animation */
1116: #define PC_EXPLICIT 0x02 /* palette index is explicit to device */
1117: #define PC_NOCOLLAPSE 0x04 /* do not match color to system palette */
1118:
1119: #define GetRValue(rgb) ((BYTE)(rgb))
1120: #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
1121: #define GetBValue(rgb) ((BYTE)((rgb)>>16))
1122:
1123: /* Background Modes */
1124: #define TRANSPARENT 1
1125: #define OPAQUE 2
1126: #define BKMODE_LAST 2
1127:
1128: /* PolyDraw and GetPath point types */
1129: #define PT_CLOSEFIGURE 0x01
1130: #define PT_LINETO 0x02
1131: #define PT_BEZIERTO 0x04
1132: #define PT_MOVETO 0x06
1133:
1134: /* Mapping Modes */
1135: #define MM_TEXT 1
1136: #define MM_LOMETRIC 2
1137: #define MM_HIMETRIC 3
1138: #define MM_LOENGLISH 4
1139: #define MM_HIENGLISH 5
1140: #define MM_TWIPS 6
1141: #define MM_ISOTROPIC 7
1142: #define MM_ANISOTROPIC 8
1143:
1144: /* Min and Max Mapping Mode values */
1145: #define MM_MIN MM_TEXT
1146: #define MM_MAX MM_ANISOTROPIC
1147: #define MM_MAX_FIXEDSCALE MM_TWIPS
1148:
1149: /* Coordinate Modes */
1150: #define ABSOLUTE 1
1151: #define RELATIVE 2
1152:
1153: /* Stock Logical Objects */
1154: #define WHITE_BRUSH 0
1155: #define LTGRAY_BRUSH 1
1156: #define GRAY_BRUSH 2
1157: #define DKGRAY_BRUSH 3
1158: #define BLACK_BRUSH 4
1159: #define NULL_BRUSH 5
1160: #define HOLLOW_BRUSH NULL_BRUSH
1161: #define WHITE_PEN 6
1162: #define BLACK_PEN 7
1163: #define NULL_PEN 8
1164: #define OEM_FIXED_FONT 10
1165: #define ANSI_FIXED_FONT 11
1166: #define ANSI_VAR_FONT 12
1167: #define SYSTEM_FONT 13
1168: #define DEVICE_DEFAULT_FONT 14
1169: #define DEFAULT_PALETTE 15
1170: #define SYSTEM_FIXED_FONT 16
1171: #define STOCK_LAST 16
1172:
1173: #define CLR_INVALID 0xFFFFFFFF
1174:
1175: /* Brush Styles */
1176: #define BS_SOLID 0
1177: #define BS_NULL 1
1178: #define BS_HOLLOW BS_NULL
1179: #define BS_HATCHED 2
1180: #define BS_PATTERN 3
1181: #define BS_INDEXED 4
1182: #define BS_DIBPATTERN 5
1183: #define BS_DIBPATTERNPT 6
1184:
1185: /* Hatch Styles */
1186: #define HS_HORIZONTAL 0 /* ----- */
1187: #define HS_VERTICAL 1 /* ||||| */
1188: #define HS_FDIAGONAL 2 /* \\\\\ */
1189: #define HS_BDIAGONAL 3 /* ///// */
1190: #define HS_CROSS 4 /* +++++ */
1191: #define HS_DIAGCROSS 5 /* xxxxx */
1192: #define HS_FDIAGONAL1 6
1193: #define HS_BDIAGONAL1 7
1194: #define HS_SOLID 8
1195: #define HS_DENSE1 9
1196: #define HS_DENSE2 10
1197: #define HS_DENSE3 11
1198: #define HS_DENSE4 12
1199: #define HS_DENSE5 13
1200: #define HS_DENSE6 14
1201: #define HS_DENSE7 15
1202: #define HS_DENSE8 16
1203: #define HS_NOSHADE 17
1204: #define HS_HALFTONE 18
1205: #define HS_API_MAX 19
1206:
1207: /* Pen Styles */
1208: #define PS_SOLID 0
1209: #define PS_DASH 1 /* ------- */
1210: #define PS_DOT 2 /* ....... */
1211: #define PS_DASHDOT 3 /* _._._._ */
1212: #define PS_DASHDOTDOT 4 /* _.._.._ */
1213: #define PS_NULL 5
1214: #define PS_INSIDEFRAME 6
1215: #define PS_USERSTYLE 7
1216: #define PS_ALTERNATE 8
1217: #define PS_STYLE_MASK 0x0000000F
1218:
1219: #define PS_ENDCAP_ROUND 0x00000000
1220: #define PS_ENDCAP_SQUARE 0x00000100
1221: #define PS_ENDCAP_FLAT 0x00000200
1222: #define PS_ENDCAP_MASK 0x00000F00
1223:
1224: #define PS_JOIN_ROUND 0x00000000
1225: #define PS_JOIN_BEVEL 0x00001000
1226: #define PS_JOIN_MITER 0x00002000
1227: #define PS_JOIN_MASK 0x0000F000
1228:
1229: #define PS_COSMETIC 0x00000000
1230: #define PS_GEOMETRIC 0x00010000
1231: #define PS_TYPE_MASK 0x000F0000
1232:
1233: #define AD_COUNTERCLOCKWISE 1
1234: #define AD_CLOCKWISE 2
1235:
1236: /* Device Parameters for GetDeviceCaps() */
1237: #define DRIVERVERSION 0 /* Device driver version */
1238: #define TECHNOLOGY 2 /* Device classification */
1239: #define HORZSIZE 4 /* Horizontal size in millimeters */
1240: #define VERTSIZE 6 /* Vertical size in millimeters */
1241: #define HORZRES 8 /* Horizontal width in pixels */
1242: #define VERTRES 10 /* Vertical width in pixels */
1243: #define BITSPIXEL 12 /* Number of bits per pixel */
1244: #define PLANES 14 /* Number of planes */
1245: #define NUMBRUSHES 16 /* Number of brushes the device has */
1246: #define NUMPENS 18 /* Number of pens the device has */
1247: #define NUMMARKERS 20 /* Number of markers the device has */
1248: #define NUMFONTS 22 /* Number of fonts the device has */
1249: #define NUMCOLORS 24 /* Number of colors the device supports */
1250: #define PDEVICESIZE 26 /* Size required for device descriptor */
1251: #define CURVECAPS 28 /* Curve capabilities */
1252: #define LINECAPS 30 /* Line capabilities */
1253: #define POLYGONALCAPS 32 /* Polygonal capabilities */
1254: #define TEXTCAPS 34 /* Text capabilities */
1255: #define CLIPCAPS 36 /* Clipping capabilities */
1256: #define RASTERCAPS 38 /* Bitblt capabilities */
1257: #define ASPECTX 40 /* Length of the X leg */
1258: #define ASPECTY 42 /* Length of the Y leg */
1259: #define ASPECTXY 44 /* Length of the hypotenuse */
1260:
1261: #define LOGPIXELSX 88 /* Logical pixels/inch in X */
1262: #define LOGPIXELSY 90 /* Logical pixels/inch in Y */
1263:
1264: #define SIZEPALETTE 104 /* Number of entries in physical palette */
1265: #define NUMRESERVED 106 /* Number of reserved entries in palette */
1266: #define COLORRES 108 /* Actual color resolution */
1267:
1268:
1269: // Printing related DeviceCaps. These replace the appropriate Escapes
1270:
1271: #define PHYSICALWIDTH 110 // Physical Width in device units
1272: #define PHYSICALHEIGHT 111 // Physical Height in device units
1273: #define PHYSICALOFFSETX 112 // Physical Printable Area x margin
1274: #define PHYSICALOFFSETY 113 // Physical Printable Area y margin
1275: #define SCALINGFACTORX 114 // Scaling factor x
1276: #define SCALINGFACTORY 115 // Scaling factor y
1277:
1278: #ifndef NOGDICAPMASKS
1279:
1280: /* Device Capability Masks: */
1281:
1282: /* Device Technologies */
1283: #define DT_PLOTTER 0 /* Vector plotter */
1284: #define DT_RASDISPLAY 1 /* Raster display */
1285: #define DT_RASPRINTER 2 /* Raster printer */
1286: #define DT_RASCAMERA 3 /* Raster camera */
1287: #define DT_CHARSTREAM 4 /* Character-stream, PLP */
1288: #define DT_METAFILE 5 /* Metafile, VDM */
1289: #define DT_DISPFILE 6 /* Display-file */
1290:
1291: /* Curve Capabilities */
1292: #define CC_NONE 0 /* Curves not supported */
1293: #define CC_CIRCLES 1 /* Can do circles */
1294: #define CC_PIE 2 /* Can do pie wedges */
1295: #define CC_CHORD 4 /* Can do chord arcs */
1296: #define CC_ELLIPSES 8 /* Can do ellipese */
1297: #define CC_WIDE 16 /* Can do wide lines */
1298: #define CC_STYLED 32 /* Can do styled lines */
1299: #define CC_WIDESTYLED 64 /* Can do wide styled lines */
1300: #define CC_INTERIORS 128 /* Can do interiors */
1301: #define CC_ROUNDRECT 256 /* */
1302:
1303: /* Line Capabilities */
1304: #define LC_NONE 0 /* Lines not supported */
1305: #define LC_POLYLINE 2 /* Can do polylines */
1306: #define LC_MARKER 4 /* Can do markers */
1307: #define LC_POLYMARKER 8 /* Can do polymarkers */
1308: #define LC_WIDE 16 /* Can do wide lines */
1309: #define LC_STYLED 32 /* Can do styled lines */
1310: #define LC_WIDESTYLED 64 /* Can do wide styled lines */
1311: #define LC_INTERIORS 128 /* Can do interiors */
1312:
1313: /* Polygonal Capabilities */
1314: #define PC_NONE 0 /* Polygonals not supported */
1315: #define PC_POLYGON 1 /* Can do polygons */
1316: #define PC_RECTANGLE 2 /* Can do rectangles */
1317: #define PC_WINDPOLYGON 4 /* Can do winding polygons */
1318: #define PC_TRAPEZOID 4 /* Can do trapezoids */
1319: #define PC_SCANLINE 8 /* Can do scanlines */
1320: #define PC_WIDE 16 /* Can do wide borders */
1321: #define PC_STYLED 32 /* Can do styled borders */
1322: #define PC_WIDESTYLED 64 /* Can do wide styled borders */
1323: #define PC_INTERIORS 128 /* Can do interiors */
1324:
1325: /* Polygonal Capabilities */
1326: #define CP_NONE 0 /* No clipping of output */
1327: #define CP_RECTANGLE 1 /* Output clipped to rects */
1328: #define CP_REGION 2 /* */
1329:
1330: /* Text Capabilities */
1331: #define TC_OP_CHARACTER 0x0001 /* Can do OutputPrecision CHARACTER */
1332: #define TC_OP_STROKE 0x0002 /* Can do OutputPrecision STROKE */
1333: #define TC_CP_STROKE 0x0004 /* Can do ClipPrecision STROKE */
1334: #define TC_CR_90 0x0008 /* Can do CharRotAbility 90 */
1335: #define TC_CR_ANY 0x0010 /* Can do CharRotAbility ANY */
1336: #define TC_SF_X_YINDEP 0x0020 /* Can do ScaleFreedom X_YINDEPENDENT */
1337: #define TC_SA_DOUBLE 0x0040 /* Can do ScaleAbility DOUBLE */
1338: #define TC_SA_INTEGER 0x0080 /* Can do ScaleAbility INTEGER */
1339: #define TC_SA_CONTIN 0x0100 /* Can do ScaleAbility CONTINUOUS */
1340: #define TC_EA_DOUBLE 0x0200 /* Can do EmboldenAbility DOUBLE */
1341: #define TC_IA_ABLE 0x0400 /* Can do ItalisizeAbility ABLE */
1342: #define TC_UA_ABLE 0x0800 /* Can do UnderlineAbility ABLE */
1343: #define TC_SO_ABLE 0x1000 /* Can do StrikeOutAbility ABLE */
1344: #define TC_RA_ABLE 0x2000 /* Can do RasterFontAble ABLE */
1345: #define TC_VA_ABLE 0x4000 /* Can do VectorFontAble ABLE */
1346: #define TC_RESERVED 0x8000
1347:
1348: #endif /* NOGDICAPMASKS */
1349:
1350: /* Raster Capabilities */
1351: #define RC_NONE
1352: #define RC_BITBLT 1 /* Can do standard BLT. */
1353: #define RC_BANDING 2 /* Device requires banding support */
1354: #define RC_SCALING 4 /* Device requires scaling support */
1355: #define RC_BITMAP64 8 /* Device can support >64K bitmap */
1356: #define RC_GDI20_OUTPUT 0x0010 /* has 2.0 output calls */
1357: #define RC_GDI20_STATE 0x0020
1358: #define RC_SAVEBITMAP 0x0040
1359: #define RC_DI_BITMAP 0x0080 /* supports DIB to memory */
1360: #define RC_PALETTE 0x0100 /* supports a palette */
1361: #define RC_DIBTODEV 0x0200 /* supports DIBitsToDevice */
1362: #define RC_BIGFONT 0x0400 /* supports >64K fonts */
1363: #define RC_STRETCHBLT 0x0800 /* supports StretchBlt */
1364: #define RC_FLOODFILL 0x1000 /* supports FloodFill */
1365: #define RC_STRETCHDIB 0x2000 /* supports StretchDIBits */
1366: #define RC_OP_DX_OUTPUT 0x4000
1367: #define RC_DEVBITS 0x8000
1368:
1369: /* DIB color table identifiers */
1370:
1371: #define DIB_RGB_COLORS 0 /* color table in RGBs */
1372: #define DIB_PAL_COLORS 1 /* color table in palette indices */
1373: #define DIB_PAL_INDICES 2 /* No color table indices into surf palette */
1374: #define DIB_PAL_PHYSINDICES 2 /* No color table indices into surf palette */
1375: #define DIB_PAL_LOGINDICES 4 /* No color table indices into DC palette */
1376:
1377: /* constants for Get/SetSystemPaletteUse() */
1378:
1379: #define SYSPAL_ERROR 0
1380: #define SYSPAL_STATIC 1
1381: #define SYSPAL_NOSTATIC 2
1382:
1383: /* constants for CreateDIBitmap */
1384: #define CBM_INIT 0x04L /* initialize bitmap */
1385:
1386: /* ExtFloodFill style flags */
1387: #define FLOODFILLBORDER 0
1388: #define FLOODFILLSURFACE 1
1389:
1390: /* DEVMODE dmDisplayMode flags */
1391:
1392: #define DM_GRAYSCALE 1
1393:
1394: typedef struct _devicemodeA {
1395: BYTE dmDeviceName[32];
1396: WORD dmSpecVersion;
1397: WORD dmDriverVersion;
1398: WORD dmSize;
1399: WORD dmDriverExtra;
1400: DWORD dmFields;
1401: short dmOrientation;
1402: short dmPaperSize;
1403: short dmPaperLength;
1404: short dmPaperWidth;
1405: short dmScale;
1406: short dmCopies;
1407: short dmDefaultSource;
1408: short dmPrintQuality;
1409: short dmColor;
1410: short dmDuplex;
1411: short dmCollate;
1412: BYTE dmFormName[32];
1413: USHORT dmBitsPerPel;
1414: DWORD dmPelsWidth;
1415: DWORD dmPelsHeight;
1416: DWORD dmDisplayMode;
1417: } DEVMODEA, *PDEVMODEA, *NPDEVMODEA, *LPDEVMODEA;
1418: typedef struct _devicemodeW {
1419: WCHAR dmDeviceName[32];
1420: WORD dmSpecVersion;
1421: WORD dmDriverVersion;
1422: WORD dmSize;
1423: WORD dmDriverExtra;
1424: DWORD dmFields;
1425: short dmOrientation;
1426: short dmPaperSize;
1427: short dmPaperLength;
1428: short dmPaperWidth;
1429: short dmScale;
1430: short dmCopies;
1431: short dmDefaultSource;
1432: short dmPrintQuality;
1433: short dmColor;
1434: short dmDuplex;
1435: short dmCollate;
1436: WCHAR dmFormName[32];
1437: USHORT dmBitsPerPel;
1438: DWORD dmPelsWidth;
1439: DWORD dmPelsHeight;
1440: DWORD dmDisplayMode;
1441: } DEVMODEW, *PDEVMODEW, *NPDEVMODEW, *LPDEVMODEW;
1442: #ifdef UNICODE
1443: #define DEVMODE DEVMODEW
1444: #define PDEVMODE PDEVMODEW
1445: #define NPDEVMODE NPDEVMODEW
1446: #define LPDEVMODE LPDEVMODEW
1447: #else
1448: #define DEVMODE DEVMODEA
1449: #define PDEVMODE PDEVMODEA
1450: #define NPDEVMODE NPDEVMODEA
1451: #define LPDEVMODE LPDEVMODEA
1452: #endif // UNICODE
1453:
1454: /* GetRegionData/ExtCreateRegion */
1455:
1456: #define RDH_RECTANGLES 1
1457:
1458: typedef struct _RGNDATAHEADER {
1459: DWORD dwSize;
1460: DWORD iType;
1461: DWORD nCount;
1462: DWORD nRgnSize;
1463: RECT rcBound;
1464: } RGNDATAHEADER, *PRGNDATAHEADER;
1465:
1466: typedef struct _RGNDATA {
1467: RGNDATAHEADER rdh;
1468: char Buffer[1];
1469: } RGNDATA, *PRGNDATA, NEAR *NPRGNDATA, FAR *LPRGNDATA;
1470:
1471:
1472: typedef struct _ABC {
1473: int abcA;
1474: UINT abcB;
1475: int abcC;
1476: } ABC, *PABC, NEAR *NPABC, FAR *LPABC;
1477:
1478: typedef struct _ABCFLOAT {
1479: FLOAT abcfA;
1480: FLOAT abcfB;
1481: FLOAT abcfC;
1482: } ABCFLOAT, *PABCFLOAT, NEAR *NPABCFLOAT, FAR *LPABCFLOAT;
1483:
1484: #ifndef NOTEXTMETRIC
1485:
1486: typedef struct _OUTLINETEXTMETRICA {
1487: UINT otmSize;
1488: TEXTMETRICA otmTextMetrics;
1489: BYTE otmFiller;
1490: PANOSE otmPanoseNumber;
1491: UINT otmfsSelection;
1492: UINT otmfsType;
1493: UINT otmsCharSlopeRise;
1494: UINT otmsCharSlopeRun;
1495: UINT otmItalicAngle;
1496: UINT otmEMSquare;
1497: UINT otmAscent;
1498: int otmDescent;
1499: int otmLineGap;
1500: UINT otmCapEmHeight;
1501: UINT otmXHeight;
1502: RECT otmrcFontBox;
1503: int otmMacAscent;
1504: int otmMacDescent;
1505: UINT otmMacLineGap;
1506: UINT otmusMinimumPPEM;
1507: POINT otmptSubscriptSize;
1508: POINT otmptSubscriptOffset;
1509: POINT otmptSuperscriptSize;
1510: POINT otmptSuperscriptOffset;
1511: UINT otmsStrikeoutSize;
1512: int otmsStrikeoutPosition;
1513: int otmsUnderscoreSize;
1514: UINT otmsUnderscorePosition;
1515: PSTR otmpFamilyName;
1516: PSTR otmpFaceName;
1517: PSTR otmpStyleName;
1518: PSTR otmpFullName;
1519: } OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, NEAR *NPOUTLINETEXTMETRICA, FAR *LPOUTLINETEXTMETRICA;
1520: typedef struct _OUTLINETEXTMETRICW {
1521: UINT otmSize;
1522: TEXTMETRICW otmTextMetrics;
1523: BYTE otmFiller;
1524: PANOSE otmPanoseNumber;
1525: UINT otmfsSelection;
1526: UINT otmfsType;
1527: UINT otmsCharSlopeRise;
1528: UINT otmsCharSlopeRun;
1529: UINT otmItalicAngle;
1530: UINT otmEMSquare;
1531: UINT otmAscent;
1532: int otmDescent;
1533: int otmLineGap;
1534: UINT otmCapEmHeight;
1535: UINT otmXHeight;
1536: RECT otmrcFontBox;
1537: int otmMacAscent;
1538: int otmMacDescent;
1539: UINT otmMacLineGap;
1540: UINT otmusMinimumPPEM;
1541: POINT otmptSubscriptSize;
1542: POINT otmptSubscriptOffset;
1543: POINT otmptSuperscriptSize;
1544: POINT otmptSuperscriptOffset;
1545: UINT otmsStrikeoutSize;
1546: int otmsStrikeoutPosition;
1547: int otmsUnderscoreSize;
1548: UINT otmsUnderscorePosition;
1549: PSTR otmpFamilyName;
1550: PSTR otmpFaceName;
1551: PSTR otmpStyleName;
1552: PSTR otmpFullName;
1553: } OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, NEAR *NPOUTLINETEXTMETRICW, FAR *LPOUTLINETEXTMETRICW;
1554: #ifdef UNICODE
1555: #define OUTLINETEXTMETRIC OUTLINETEXTMETRICW
1556: #define POUTLINETEXTMETRIC POUTLINETEXTMETRICW
1557: #define NPOUTLINETEXTMETRIC NPOUTLINETEXTMETRICW
1558: #define LPOUTLINETEXTMETRIC LPOUTLINETEXTMETRICW
1559: #else
1560: #define OUTLINETEXTMETRIC OUTLINETEXTMETRICA
1561: #define POUTLINETEXTMETRIC POUTLINETEXTMETRICA
1562: #define NPOUTLINETEXTMETRIC NPOUTLINETEXTMETRICA
1563: #define LPOUTLINETEXTMETRIC LPOUTLINETEXTMETRICA
1564: #endif // UNICODE
1565:
1566: #endif /* NOTEXTMETRIC */
1567:
1568:
1569: typedef struct _FIXED {
1570: WORD fract;
1571: short value;
1572: } FIXED;
1573:
1574:
1575: typedef struct _MAT2 {
1576: FIXED eM11;
1577: FIXED eM12;
1578: FIXED eM21;
1579: FIXED eM22;
1580: } MAT2, FAR *LPMAT2;
1581:
1582:
1583:
1584: typedef struct _GLYPHMETRICS {
1585: UINT gmBlackBoxX;
1586: UINT gmBlackBoxY;
1587: POINT gmptGlyphOrigin;
1588: short gmCellIncX;
1589: short gmCellIncY;
1590: } GLYPHMETRICS, FAR *LPGLYPHMETRICS;
1591:
1592: // GetGlyphOutline constants
1593:
1594: #define GGO_NONE 0
1595: #define GGO_BITMAP 1
1596: #define GGO_NATIVE 2
1597:
1598: #define TT_POLYGON_TYPE 24
1599:
1600: #define TT_PRIM_LINE 1
1601: #define TT_PRIM_QSPLINE 2
1602:
1603: typedef struct tagPOINTFX
1604: {
1605: FIXED x;
1606: FIXED y;
1607: } POINTFX, FAR* LPPOINTFX;
1608:
1609: typedef struct tagTTPOLYCURVE
1610: {
1611: WORD wType;
1612: WORD cpfx;
1613: POINTFX apfx[1];
1614: } TTPOLYCURVE, FAR* LPTTPOLYCURVE;
1615:
1616: typedef struct tagTTPOLYGONHEADER
1617: {
1618: DWORD cb;
1619: DWORD dwType;
1620: POINTFX pfxStart;
1621: } TTPOLYGONHEADER, FAR* LPTTPOLYGONHEADER;
1622:
1623:
1624:
1625: typedef struct _RASTERIZER_STATUS {
1626: short nSize;
1627: short wFlags;
1628: short nLanguageID;
1629: } RASTERIZER_STATUS, FAR *LPRASTERIZER_STATUS;
1630:
1631: /* bits defined in wFlags of RASTERIZER_STATUS */
1632: #define TT_AVAILABLE 0x0001
1633: #define TT_ENABLED 0x0002
1634:
1635: #ifdef STRICT
1636: typedef int (CALLBACK* FONTENUMPROC)(LPLOGFONT, LPTEXTMETRIC, DWORD, LPARAM);
1637: typedef VOID (CALLBACK* GOBJENUMPROC)(LPVOID, LPARAM);
1638: typedef VOID (CALLBACK* LINEDDAPROC)(int, int, LPARAM);
1639: #else
1640: typedef FARPROC FONTENUMPROC;
1641: typedef FARPROC GOBJENUMPROC;
1642: typedef FARPROC LINEDDAPROC;
1643: #endif
1644:
1645: int WINAPI AddFontResourceA(LPCSTR);
1646: int WINAPI AddFontResourceW(LPCWSTR);
1647: #ifdef UNICODE
1648: #define AddFontResource AddFontResourceW
1649: #else
1650: #define AddFontResource AddFontResourceA
1651: #endif // !UNICODE
1652:
1653: int WINAPI AddFontModule(HMODULE);
1654: BOOL WINAPI AnimatePalette(HPALETTE, UINT, UINT, CONST PALETTEENTRY *);
1655: BOOL WINAPI Arc(HDC, int, int, int, int, int, int, int, int);
1656: BOOL WINAPI BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
1657: BOOL WINAPI CancelDC(HDC);
1658: BOOL WINAPI Chord(HDC, int, int, int, int, int, int, int, int);
1659: HMETAFILE WINAPI CloseMetaFile(HDC);
1660: int WINAPI CombineRgn(HRGN, HRGN, HRGN, int);
1661: HMETAFILE WINAPI CopyMetaFileA(HMETAFILE, LPSTR);
1662: HMETAFILE WINAPI CopyMetaFileW(HMETAFILE, LPWSTR);
1663: #ifdef UNICODE
1664: #define CopyMetaFile CopyMetaFileW
1665: #else
1666: #define CopyMetaFile CopyMetaFileA
1667: #endif // !UNICODE
1668: HBITMAP WINAPI CreateBitmap(int, int, UINT, UINT, CONST VOID *);
1669: HBITMAP WINAPI CreateBitmapIndirect(LPBITMAP);
1670: HBRUSH WINAPI CreateBrushIndirect(LPLOGBRUSH);
1671: HBITMAP WINAPI CreateCompatibleBitmap(HDC, int, int);
1672: HBITMAP WINAPI CreateDiscardableBitmap(HDC, int, int);
1673: HDC WINAPI CreateCompatibleDC(HDC);
1674: HDC WINAPI CreateDC(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODE *);
1675: HBITMAP WINAPI CreateDIBitmap(HDC, LPBITMAPINFOHEADER, DWORD, CONST BYTE *, LPBITMAPINFO, UINT);
1676: HBITMAP WINAPI CreateDIBSection(HDC, LPBITMAPINFO, DWORD, DWORD, LPBYTE *);
1677: HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL, UINT);
1678: HBRUSH WINAPI CreateDIBPatternBrushPt(LPVOID, DWORD);
1679: HRGN WINAPI CreateEllipticRgn(int, int, int, int);
1680: HRGN WINAPI CreateEllipticRgnIndirect(CONST RECT *);
1681: HFONT WINAPI CreateFontIndirectA(LPLOGFONTA);
1682: HFONT WINAPI CreateFontIndirectW(LPLOGFONTW);
1683: #ifdef UNICODE
1684: #define CreateFontIndirect CreateFontIndirectW
1685: #else
1686: #define CreateFontIndirect CreateFontIndirectA
1687: #endif // !UNICODE
1688: HFONT WINAPI CreateFontA(int, int, int, int, int, DWORD,
1689: DWORD, DWORD, DWORD, DWORD, DWORD,
1690: DWORD, DWORD, LPCSTR);
1691: HFONT WINAPI CreateFontW(int, int, int, int, int, DWORD,
1692: DWORD, DWORD, DWORD, DWORD, DWORD,
1693: DWORD, DWORD, LPCWSTR);
1694: #ifdef UNICODE
1695: #define CreateFont CreateFontW
1696: #else
1697: #define CreateFont CreateFontA
1698: #endif // !UNICODE
1699:
1700: HBRUSH WINAPI CreateHatchBrush(int, COLORREF);
1701: HDC WINAPI CreateIC(LPCSTR, LPCSTR , LPCSTR , LPDEVMODE );
1702: HDC WINAPI CreateMetaFileA(LPCSTR);
1703: HDC WINAPI CreateMetaFileW(LPCWSTR);
1704: #ifdef UNICODE
1705: #define CreateMetaFile CreateMetaFileW
1706: #else
1707: #define CreateMetaFile CreateMetaFileA
1708: #endif // !UNICODE
1709: HPALETTE WINAPI CreatePalette(LPLOGPALETTE);
1710: HPEN WINAPI CreatePen(int, int, COLORREF);
1711: HPEN WINAPI CreatePenIndirect(LPLOGPEN);
1712: HRGN WINAPI CreatePolyPolygonRgn(CONST POINT *, CONST INT *, int, int);
1713: HBRUSH WINAPI CreatePatternBrush(HBITMAP);
1714: HRGN WINAPI CreateRectRgn(int, int, int, int);
1715: HRGN WINAPI CreateRectRgnIndirect(CONST RECT *);
1716: HRGN WINAPI CreateRoundRectRgn(int, int, int, int, int, int);
1717: BOOL WINAPI CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPSTR);
1718: BOOL WINAPI CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPWSTR);
1719: #ifdef UNICODE
1720: #define CreateScalableFontResource CreateScalableFontResourceW
1721: #else
1722: #define CreateScalableFontResource CreateScalableFontResourceA
1723: #endif // !UNICODE
1724: HBRUSH WINAPI CreateSolidBrush(COLORREF);
1725:
1726: BOOL WINAPI DeleteDC(HDC);
1727: BOOL WINAPI DeleteMetaFile(HMETAFILE);
1728: BOOL WINAPI DeleteObject(HGDIOBJ);
1729: int WINAPI DeviceCapabilitiesEx(LPSTR, LPSTR, LPSTR, int, LPSTR, LPDEVMODE );
1730: BOOL WINAPI Ellipse(HDC, int, int, int, int);
1731:
1732: int WINAPI EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROC, LPARAM);
1733: int WINAPI EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROC, LPARAM);
1734: #ifdef UNICODE
1735: #define EnumFontFamilies EnumFontFamiliesW
1736: #else
1737: #define EnumFontFamilies EnumFontFamiliesA
1738: #endif // !UNICODE
1739: int WINAPI EnumFontsA(HDC, LPCSTR, FONTENUMPROC, LPARAM);
1740: int WINAPI EnumFontsW(HDC, LPCWSTR, FONTENUMPROC, LPARAM);
1741: #ifdef UNICODE
1742: #define EnumFonts EnumFontsW
1743: #else
1744: #define EnumFonts EnumFontsA
1745: #endif // !UNICODE
1746:
1747: #ifdef STRICT
1748: int WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPARAM);
1749: #else
1750: int WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPVOID);
1751: #endif
1752:
1753: BOOL WINAPI EqualRgn(HRGN, HRGN);
1754: int WINAPI Escape(HDC, int, int, LPCSTR, LPVOID);
1755: int WINAPI ExtEscape(HDC, int, int, LPCSTR, int, LPSTR);
1756: int WINAPI DrawEscape(HDC, int, int, LPCSTR);
1757: int WINAPI ExcludeClipRect(HDC, int, int, int, int);
1758: HRGN WINAPI ExtCreateRegion(LPXFORM, DWORD, LPRGNDATA);
1759: BOOL WINAPI ExtFloodFill(HDC, int, int, COLORREF, UINT);
1760: BOOL WINAPI FillRgn(HDC, HRGN, HBRUSH);
1761: BOOL WINAPI FloodFill(HDC, int, int, COLORREF);
1762: BOOL WINAPI FrameRgn(HDC, HRGN, HBRUSH, int, int);
1763: int WINAPI GetROP2(HDC);
1764: BOOL WINAPI GetAspectRatioFilterEx(HDC, LPSIZE);
1765: COLORREF WINAPI GetBkColor(HDC);
1766: int WINAPI GetBkMode(HDC);
1767: LONG WINAPI GetBitmapBits(HBITMAP, LONG, LPVOID);
1768: BOOL WINAPI GetBitmapDimensionEx(HBITMAP, LPSIZE);
1769: UINT WINAPI GetBoundsRect(HDC, LPRECT, UINT);
1770:
1771: BOOL WINAPI GetBrushOrgEx(HDC, LPPOINT);
1772:
1773: BOOL WINAPI GetCharWidthA(HDC, UINT, UINT, LPINT);
1774: BOOL WINAPI GetCharWidthW(HDC, UINT, UINT, LPINT);
1775: #ifdef UNICODE
1776: #define GetCharWidth GetCharWidthW
1777: #else
1778: #define GetCharWidth GetCharWidthA
1779: #endif // !UNICODE
1780: BOOL APIENTRY GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT);
1781: BOOL APIENTRY GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT);
1782: #ifdef UNICODE
1783: #define GetCharWidthFloat GetCharWidthFloatW
1784: #else
1785: #define GetCharWidthFloat GetCharWidthFloatA
1786: #endif // !UNICODE
1787:
1788: BOOL APIENTRY GetCharABCWidthsA(HDC, UINT, UINT, LPABC);
1789: BOOL APIENTRY GetCharABCWidthsW(HDC, UINT, UINT, LPABC);
1790: #ifdef UNICODE
1791: #define GetCharABCWidths GetCharABCWidthsW
1792: #else
1793: #define GetCharABCWidths GetCharABCWidthsA
1794: #endif // !UNICODE
1795: BOOL APIENTRY GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT);
1796: BOOL APIENTRY GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT);
1797: #ifdef UNICODE
1798: #define GetCharABCWidthsFloat GetCharABCWidthsFloatW
1799: #else
1800: #define GetCharABCWidthsFloat GetCharABCWidthsFloatA
1801: #endif // !UNICODE
1802:
1803: int WINAPI GetClipBox(HDC, LPRECT);
1804: int WINAPI GetClipRgn(HDC, HRGN);
1805: int WINAPI GetMetaRgn(HDC, HRGN);
1806: HGDIOBJ WINAPI GetCurrentObject(HDC, UINT);
1807: BOOL WINAPI GetCurrentPositionEx(HDC, LPPOINT);
1808: int WINAPI GetDeviceCaps(HDC, int);
1809: int WINAPI GetDIBits(HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT);
1810: DWORD WINAPI GetFontData(HDC, DWORD, DWORD, LPVOID, DWORD);
1811: DWORD WINAPI GetGlyphOutline(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST LPMAT2);
1812: int WINAPI GetMapMode(HDC);
1813: UINT WINAPI GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID);
1814: HMETAFILE WINAPI GetMetaFileA(LPCSTR);
1815: HMETAFILE WINAPI GetMetaFileW(LPCWSTR);
1816: #ifdef UNICODE
1817: #define GetMetaFile GetMetaFileW
1818: #else
1819: #define GetMetaFile GetMetaFileA
1820: #endif // !UNICODE
1821: COLORREF WINAPI GetNearestColor(HDC, COLORREF);
1822: UINT WINAPI GetNearestPaletteIndex(HPALETTE, COLORREF);
1823: DWORD WINAPI GetObjectType(HGDIOBJ h);
1824:
1825: #ifndef NOTEXTMETRIC
1826:
1827: DWORD APIENTRY GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA);
1828: DWORD APIENTRY GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW);
1829: #ifdef UNICODE
1830: #define GetOutlineTextMetrics GetOutlineTextMetricsW
1831: #else
1832: #define GetOutlineTextMetrics GetOutlineTextMetricsA
1833: #endif // !UNICODE
1834:
1835: #endif /* NOTEXTMETRIC */
1836:
1837: UINT WINAPI GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY);
1838: COLORREF WINAPI GetPixel(HDC, int, int);
1839: int WINAPI GetPolyFillMode(HDC);
1840: BOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS, UINT);
1841: DWORD WINAPI GetRegionData(HRGN, DWORD, LPRGNDATA);
1842: int WINAPI GetRgnBox(HRGN, LPRECT);
1843: HGDIOBJ WINAPI GetStockObject(int);
1844: int WINAPI GetStretchBltMode(HDC);
1845: UINT WINAPI GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY);
1846: UINT WINAPI GetSystemPaletteUse(HDC);
1847: int WINAPI GetTextCharacterExtra(HDC);
1848: UINT WINAPI GetTextAlign(HDC);
1849: COLORREF WINAPI GetTextColor(HDC);
1850:
1851: BOOL APIENTRY GetTextExtentPointA(
1852: HDC,
1853: LPCSTR,
1854: int,
1855: LPSIZE
1856: );
1857: BOOL APIENTRY GetTextExtentPointW(
1858: HDC,
1859: LPCWSTR,
1860: int,
1861: LPSIZE
1862: );
1863: #ifdef UNICODE
1864: #define GetTextExtentPoint GetTextExtentPointW
1865: #else
1866: #define GetTextExtentPoint GetTextExtentPointA
1867: #endif // !UNICODE
1868:
1869: BOOL APIENTRY GetTextExtentExPointA(
1870: HDC,
1871: LPCSTR,
1872: int,
1873: int,
1874: LPINT,
1875: LPINT,
1876: LPSIZE
1877: );
1878: BOOL APIENTRY GetTextExtentExPointW(
1879: HDC,
1880: LPCWSTR,
1881: int,
1882: int,
1883: LPINT,
1884: LPINT,
1885: LPSIZE
1886: );
1887: #ifdef UNICODE
1888: #define GetTextExtentExPoint GetTextExtentExPointW
1889: #else
1890: #define GetTextExtentExPoint GetTextExtentExPointA
1891: #endif // !UNICODE
1892:
1893: BOOL WINAPI GetViewportExtEx(HDC, LPSIZE);
1894: BOOL WINAPI GetViewportOrgEx(HDC, LPPOINT);
1895: BOOL WINAPI GetWindowExtEx(HDC, LPSIZE);
1896: BOOL WINAPI GetWindowOrgEx(HDC, LPPOINT);
1897:
1898: int WINAPI IntersectClipRect(HDC, int, int, int, int);
1899: BOOL WINAPI InvertRgn(HDC, HRGN);
1900: BOOL WINAPI LineDDA(int, int, int, int, LINEDDAPROC, LPARAM);
1901: BOOL WINAPI LineTo(HDC, int, int);
1902: BOOL WINAPI MaskBlt(HDC, int, int, int, int,
1903: HDC, int, int, HBITMAP, int, int, DWORD);
1904: BOOL WINAPI PlgBlt(HDC, LPPOINT, HDC, int, int, int,
1905: int, HBITMAP, int, int);
1906:
1907: int WINAPI OffsetClipRgn(HDC, int, int);
1908: int WINAPI OffsetRgn(HRGN, int, int);
1909: BOOL WINAPI PatBlt(HDC, int, int, int, int, DWORD);
1910: BOOL WINAPI Pie(HDC, int, int, int, int, int, int, int, int);
1911: BOOL WINAPI PlayMetaFile(HDC, HMETAFILE);
1912: BOOL WINAPI PaintRgn(HDC, HRGN);
1913: BOOL WINAPI PolyPolygon(HDC, LPPOINT, LPINT, int);
1914: BOOL WINAPI PtInRegion(HRGN, int, int);
1915: BOOL WINAPI PtVisible(HDC, int, int);
1916: BOOL WINAPI RectInRegion(HRGN, LPRECT);
1917: BOOL WINAPI RectVisible(HDC, CONST RECT *);
1918: BOOL WINAPI Rectangle(HDC, int, int, int, int);
1919: BOOL WINAPI RestoreDC(HDC, int);
1920: UINT WINAPI RealizePalette(HDC);
1921: BOOL WINAPI RemoveFontModule(HMODULE);
1922: BOOL WINAPI RemoveFontResourceA(LPSTR);
1923: BOOL WINAPI RemoveFontResourceW(LPWSTR);
1924: #ifdef UNICODE
1925: #define RemoveFontResource RemoveFontResourceW
1926: #else
1927: #define RemoveFontResource RemoveFontResourceA
1928: #endif // !UNICODE
1929: BOOL WINAPI RoundRect(HDC, int, int, int, int, int, int);
1930: BOOL WINAPI ResizePalette(HPALETTE, UINT);
1931:
1932: int WINAPI SaveDC(HDC);
1933: int WINAPI SelectClipRgn(HDC, HRGN);
1934: int WINAPI ExtSelectClipRgn(HDC, HRGN, int);
1935: int WINAPI SetMetaRgn(HDC);
1936: HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);
1937: HPALETTE WINAPI SelectPalette(HDC, HPALETTE, BOOL);
1938: COLORREF WINAPI SetBkColor(HDC, COLORREF);
1939: int WINAPI SetBkMode(HDC, int);
1940: LONG WINAPI SetBitmapBits(HBITMAP, DWORD, CONST VOID *);
1941:
1942: UINT WINAPI SetBoundsRect(HDC, CONST RECT *, UINT);
1943: int WINAPI SetDIBits(HDC, HBITMAP, UINT, UINT, CONST VOID *, LPBITMAPINFO, UINT);
1944: int WINAPI SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, LPVOID, LPBITMAPINFO, UINT);
1945: DWORD WINAPI SetMapperFlags(HDC, DWORD);
1946: int WINAPI SetMapMode(HDC, int);
1947: HMETAFILE WINAPI SetMetaFileBitsEx(UINT, LPBYTE);
1948: UINT WINAPI SetPaletteEntries(HPALETTE, UINT, UINT, CONST PALETTEENTRY *);
1949: COLORREF WINAPI SetPixel(HDC, int, int, COLORREF);
1950: BOOL WINAPI SetPixelV(HDC, int, int, COLORREF);
1951: int WINAPI SetPolyFillMode(HDC, int);
1952: BOOL WINAPI StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
1953: BOOL WINAPI SetRectRgn(HRGN, int, int, int, int);
1954: int WINAPI StretchDIBits(HDC, int, int, int, int, int, int, int, int, CONST
1955: VOID *, LPBITMAPINFO, UINT, DWORD);
1956: int WINAPI SetROP2(HDC, int);
1957: int WINAPI SetStretchBltMode(HDC, int);
1958: UINT WINAPI SetSystemPaletteUse(HDC, UINT);
1959: int WINAPI SetTextCharacterExtra(HDC, int);
1960: COLORREF WINAPI SetTextColor(HDC, COLORREF);
1961: UINT WINAPI SetTextAlign(HDC, UINT);
1962: BOOL WINAPI SetTextJustification(HDC, int, int);
1963: BOOL WINAPI UpdateColors(HDC);
1964:
1965: #ifndef NOMETAFILE
1966:
1967: BOOL WINAPI PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT);
1968: typedef int (CALLBACK* MFENUMPROC)(HDC, HANDLETABLE FAR*, METARECORD FAR*, int, LPARAM);
1969: BOOL WINAPI EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM);
1970:
1971: // Enhanced Metafile Function Declarations
1972:
1973: HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
1974: HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE, LPSTR);
1975: HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE, LPWSTR);
1976: #ifdef UNICODE
1977: #define CopyEnhMetaFile CopyEnhMetaFileW
1978: #else
1979: #define CopyEnhMetaFile CopyEnhMetaFileA
1980: #endif // !UNICODE
1981: HDC WINAPI CreateEnhMetaFileA(HDC, LPSTR, LPRECT, LPSTR);
1982: HDC WINAPI CreateEnhMetaFileW(HDC, LPWSTR, LPRECT, LPWSTR);
1983: #ifdef UNICODE
1984: #define CreateEnhMetaFile CreateEnhMetaFileW
1985: #else
1986: #define CreateEnhMetaFile CreateEnhMetaFileA
1987: #endif // !UNICODE
1988: BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE);
1989: BOOL WINAPI EnumEnhMetaFile(HDC, HENHMETAFILE, PROC, LPVOID, LPRECT);
1990: HENHMETAFILE WINAPI GetEnhMetaFileA(LPSTR);
1991: HENHMETAFILE WINAPI GetEnhMetaFileW(LPWSTR);
1992: #ifdef UNICODE
1993: #define GetEnhMetaFile GetEnhMetaFileW
1994: #else
1995: #define GetEnhMetaFile GetEnhMetaFileA
1996: #endif // !UNICODE
1997: UINT WINAPI GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE);
1998: UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR );
1999: UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR );
2000: #ifdef UNICODE
2001: #define GetEnhMetaFileDescription GetEnhMetaFileDescriptionW
2002: #else
2003: #define GetEnhMetaFileDescription GetEnhMetaFileDescriptionA
2004: #endif // !UNICODE
2005: UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER );
2006: UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY );
2007: UINT WINAPI GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC);
2008: BOOL WINAPI PlayEnhMetaFile(HDC, HENHMETAFILE, LPRECT);
2009: BOOL WINAPI PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, LPENHMETARECORD, UINT);
2010: HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT, LPBYTE);
2011: HENHMETAFILE WINAPI SetWinMetaFileBits(UINT, LPBYTE, HDC, LPMETAFILEPICT);
2012: BOOL WINAPI GdiComment(HDC, UINT, LPBYTE);
2013:
2014: #endif /* NOMETAFILE */
2015:
2016: #ifndef NOTEXTMETRIC
2017:
2018: BOOL WINAPI GetTextMetricsA(HDC, LPTEXTMETRICA);
2019: BOOL WINAPI GetTextMetricsW(HDC, LPTEXTMETRICW);
2020: #ifdef UNICODE
2021: #define GetTextMetrics GetTextMetricsW
2022: #else
2023: #define GetTextMetrics GetTextMetricsA
2024: #endif // !UNICODE
2025:
2026: #endif
2027:
2028: /* new GDI */
2029: BOOL WINAPI AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT);
2030: BOOL WINAPI PolyPolyline(HDC, LPPOINT, LPDWORD, DWORD);
2031: BOOL WINAPI GetWorldTransform(HDC, LPXFORM);
2032: BOOL WINAPI SetWorldTransform(HDC, LPXFORM);
2033: BOOL WINAPI ModifyWorldTransform(HDC, LPXFORM , DWORD);
2034: BOOL WINAPI CombineTransform(LPXFORM, LPXFORM, LPXFORM);
2035:
2036: #ifdef STRICT
2037: typedef BOOL (CALLBACK* ABORTPROC)(HDC, int);
2038: #else
2039: typedef FARPROC ABORTPROC;
2040: #endif
2041:
2042: typedef struct
2043: {
2044: int cbSize;
2045: PSTR lpszDocName;
2046: PSTR lpszOutput;
2047: } DOCINFO;
2048: typedef DOCINFO *LPDOCINFO;
2049:
2050: int WINAPI StartDoc(HDC, LPDOCINFO);
2051: int WINAPI EndDoc(HDC);
2052: int WINAPI StartPage(HDC);
2053: int WINAPI EndPage(HDC);
2054: int WINAPI AbortDoc(HDC);
2055: int WINAPI SetAbortProc(HDC, ABORTPROC);
2056:
2057: BOOL WINAPI GdiPlayJournal(HDC,LPCSTR,DWORD,DWORD);
2058: BOOL WINAPI AbortPath(HDC);
2059: BOOL WINAPI ArcTo(HDC, int, int, int, int, int, int,int, int);
2060: BOOL WINAPI BeginPath(HDC);
2061: BOOL WINAPI CloseFigure(HDC);
2062: BOOL WINAPI EndPath(HDC);
2063: BOOL WINAPI FillPath(HDC);
2064: BOOL WINAPI FlattenPath(HDC);
2065: int WINAPI GetPath(HDC, LPPOINT, LPBYTE, int);
2066: HRGN WINAPI PathToRegion(HDC);
2067: BOOL WINAPI PolyDraw(HDC, LPPOINT, LPBYTE, int);
2068: BOOL WINAPI SelectClipPath(HDC, int);
2069: int WINAPI SetArcDirection(HDC, int);
2070: BOOL WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT);
2071: BOOL WINAPI StrokeAndFillPath(HDC);
2072: BOOL WINAPI StrokePath(HDC);
2073: BOOL WINAPI WidenPath(HDC);
2074: HPEN WINAPI ExtCreatePen(DWORD, DWORD, LPLOGBRUSH, DWORD, LPDWORD);
2075: BOOL WINAPI GetMiterLimit(HDC, PFLOAT);
2076: int WINAPI GetArcDirection(HDC);
2077:
2078: int WINAPI GetObjectA(HGDIOBJ, int, LPVOID);
2079: int WINAPI GetObjectW(HGDIOBJ, int, LPVOID);
2080: #ifdef UNICODE
2081: #define GetObject GetObjectW
2082: #else
2083: #define GetObject GetObjectA
2084: #endif // !UNICODE
2085: BOOL WINAPI MoveToEx(HDC, int, int, LPPOINT);
2086: BOOL WINAPI TextOutA(HDC, int, int, LPCSTR, int);
2087: BOOL WINAPI TextOutW(HDC, int, int, LPCWSTR, int);
2088: #ifdef UNICODE
2089: #define TextOut TextOutW
2090: #else
2091: #define TextOut TextOutA
2092: #endif // !UNICODE
2093: BOOL WINAPI ExtTextOutA(HDC, int, int, UINT, CONST RECT *, LPCSTR, UINT, LPINT);
2094: BOOL WINAPI ExtTextOutW(HDC, int, int, UINT, CONST RECT *, LPCWSTR, UINT, LPINT);
2095: #ifdef UNICODE
2096: #define ExtTextOut ExtTextOutW
2097: #else
2098: #define ExtTextOut ExtTextOutA
2099: #endif // !UNICODE
2100:
2101: HRGN WINAPI CreatePolygonRgn(CONST POINT *, int, int);
2102: BOOL WINAPI DPtoLP(HDC, LPPOINT, int);
2103: BOOL WINAPI LPtoDP(HDC, LPPOINT, int);
2104: BOOL WINAPI Polygon(HDC, LPPOINT, int);
2105: BOOL WINAPI Polyline(HDC, CONST POINT *, int);
2106:
2107: BOOL WINAPI PolyBezier(HDC, LPPOINT, DWORD);
2108: BOOL WINAPI PolyBezierTo(HDC, LPPOINT, DWORD);
2109: BOOL WINAPI PolylineTo(HDC, LPPOINT, DWORD);
2110:
2111: BOOL WINAPI SetViewportExtEx(HDC, int, int, LPSIZE);
2112: BOOL WINAPI SetViewportOrgEx(HDC, int, int, LPPOINT);
2113: BOOL WINAPI SetWindowExtEx(HDC, int, int, LPSIZE);
2114: BOOL WINAPI SetWindowOrgEx(HDC, int, int, LPPOINT);
2115:
2116: BOOL WINAPI OffsetViewportOrgEx(HDC, int, int, LPPOINT);
2117: BOOL WINAPI OffsetWindowOrgEx(HDC, int, int, LPPOINT);
2118: BOOL WINAPI ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE);
2119: BOOL WINAPI ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE);
2120: BOOL WINAPI SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE);
2121: BOOL WINAPI SetBrushOrgEx(HDC, int, int, LPPOINT);
2122:
2123: int WINAPI GetTextFaceA(HDC, int, LPSTR);
2124: int WINAPI GetTextFaceW(HDC, int, LPWSTR);
2125: #ifdef UNICODE
2126: #define GetTextFace GetTextFaceW
2127: #else
2128: #define GetTextFace GetTextFaceA
2129: #endif // !UNICODE
2130:
2131: #define FONTMAPPER_MAX 10
2132:
2133: DWORD WINAPI EnumNearestFontsA(HDC, LPEXTLOGFONTA, DWORD, LPFMATCHA);
2134: DWORD WINAPI EnumNearestFontsW(HDC, LPEXTLOGFONTW, DWORD, LPFMATCHW);
2135: #ifdef UNICODE
2136: #define EnumNearestFonts EnumNearestFontsW
2137: #else
2138: #define EnumNearestFonts EnumNearestFontsA
2139: #endif // !UNICODE
2140:
2141: BOOL WINAPI SetFontMapperControls(LPFMCONTROLS);
2142:
2143: BOOL WINAPI GetFontMapperControls(LPFMCONTROLS, DWORD);
2144:
2145: HFONT WINAPI ExtCreateFontIndirectA(LPEXTLOGFONTA);
2146: HFONT WINAPI ExtCreateFontIndirectW(LPEXTLOGFONTW);
2147: #ifdef UNICODE
2148: #define ExtCreateFontIndirect ExtCreateFontIndirectW
2149: #else
2150: #define ExtCreateFontIndirect ExtCreateFontIndirectA
2151: #endif // !UNICODE
2152: typedef struct tagKERNINGPAIR {
2153: WORD wFirst;
2154: WORD wSecond;
2155: int iKernAmount;
2156: } KERNINGPAIR, *LPKERNINGPAIR;
2157:
2158: DWORD WINAPI GetKerningPairs(HDC, DWORD, LPKERNINGPAIR);
2159:
2160: BOOL WINAPI GdiFlush();
2161: DWORD WINAPI GdiSetBatchLimit(DWORD);
2162: DWORD WINAPI GdiGetBatchLimit();
2163:
2164: #endif /* NOGDI */
2165: #endif /* _WINGDI_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.