Annotation of mstools/mfc/include/wingdi.h, revision 1.1.1.1

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_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.