|
|
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.