Annotation of mstools/h/wingdi.h, revision 1.1.1.2

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
1.1.1.2 ! root       82: #define HALFTONE                    4
        !            83: #define MAXSTRETCHBLTMODE           4
1.1       root       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: 
1.1.1.2 ! root      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: 
1.1       root      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
1.1.1.2 ! root      136: #define META_SCALEWINDOWEXT          0x0410
1.1       root      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: 
1.1.1.2 ! root      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: 
1.1       root      194: #define META_DELETEOBJECT            0x01f0
                    195: 
                    196: #define META_CREATEPALETTE           0x00f7
1.1.1.2 ! root      197: // #define META_CREATEBRUSH             0x00F8
1.1       root      198: #define META_CREATEPATTERNBRUSH      0x01F9
                    199: #define META_CREATEPENINDIRECT       0x02FA
                    200: #define META_CREATEFONTINDIRECT      0x02FB
                    201: #define META_CREATEBRUSHINDIRECT     0x02FC
1.1.1.2 ! root      202: // #define META_CREATEBITMAPINDIRECT    0x02FD
        !           203: // #define META_CREATEBITMAP            0x06FE
1.1       root      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
1.1.1.2 ! root      248: #define MOUSETRAILS                  39
        !           249: 
1.1       root      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
1.1.1.2 ! root      262: #define GETSETSCREENPARAMS           3072
1.1       root      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: 
1.1.1.2 ! root      289: /* Object Definitions for EnumObjects() */
1.1       root      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
1.1.1.2 ! root      300: #define OBJ_EXTPEN          11
        !           301: #define OBJ_ENHMETADC       12
        !           302: #define OBJ_ENHMETAFILE     13
1.1       root      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;
1.1.1.2 ! root      332:     LPVOID      bmBits;
1.1       root      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;
1.1.1.2 ! root      360:         LONG       biWidth;
        !           361:         LONG       biHeight;
1.1       root      362:         WORD       biPlanes;
                    363:         WORD       biBitCount;
                    364:         DWORD      biCompression;
                    365:         DWORD      biSizeImage;
1.1.1.2 ! root      366:         LONG       biXPelsPerMeter;
        !           367:         LONG       biYPelsPerMeter;
1.1       root      368:         DWORD      biClrUsed;
                    369:         DWORD      biClrImportant;
                    370: } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
                    371: 
                    372: /* constants for the biCompression field */
1.1.1.2 ! root      373: #define BI_RGB        0L
        !           374: #define BI_RLE8       1L
        !           375: #define BI_RLE4       2L
        !           376: #define BI_TOPDOWN    4L
1.1       root      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:   {
1.1.1.2 ! root      405:     HGDIOBJ     objectHandle[1];
1.1       root      406:   } HANDLETABLE, *PHANDLETABLE, FAR *LPHANDLETABLE;
                    407: 
                    408: typedef struct tagMETARECORD
                    409:   {
                    410:     DWORD       rdSize;
                    411:     WORD        rdFunction;
                    412:     WORD        rdParm[1];
1.1.1.2 ! root      413:   } METARECORD;
        !           414: typedef struct tagMETARECORD UNALIGNED *PMETARECORD, FAR *LPMETARECORD;
1.1       root      415: 
                    416: typedef struct tagMETAFILEPICT
                    417:   {
1.1.1.2 ! root      418:     LONG        mm;
        !           419:     LONG        xExt;
        !           420:     LONG        yExt;
        !           421:     HMETAFILE   hMF;
1.1       root      422:   } METAFILEPICT, FAR *LPMETAFILEPICT;
                    423: 
1.1.1.2 ! root      424: #pragma pack(2)
1.1       root      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;
1.1.1.2 ! root      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;
1.1       root      469: 
                    470: #endif /* NOMETAFILE */
                    471: 
                    472: #ifndef NOTEXTMETRIC
                    473: 
1.1.1.2 ! root      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: 
1.1       root      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: 
1.1.1.2 ! root      538: /* ntmFlags field flags */
        !           539: #define NTM_REGULAR     0x00000040L
        !           540: #define NTM_BOLD        0x00000020L
        !           541: #define NTM_ITALIC      0x00000001L
1.1       root      542: 
1.1.1.2 ! root      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 */
1.1       root      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:   {
1.1.1.2 ! root      625:     UINT        lbStyle;
        !           626:     COLORREF    lbColor;
1.1       root      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:   {
1.1.1.2 ! root      638:     UINT        lopnStyle;
1.1       root      639:     POINT       lopnWidth;
1.1.1.2 ! root      640:     COLORREF    lopnColor;
1.1       root      641:   } LOGPEN, *PLOGPEN, NEAR *NPLOGPEN, FAR *LPLOGPEN;
                    642: 
1.1.1.2 ! root      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: 
1.1       root      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: 
1.1.1.2 ! root      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
1.1       root      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
1.1.1.2 ! root      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
1.1       root      750: 
                    751: #define CLIP_DEFAULT_PRECIS     0
                    752: #define CLIP_CHARACTER_PRECIS   1
                    753: #define CLIP_STROKE_PRECIS      2
1.1.1.2 ! root      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)
1.1       root      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
1.1.1.2 ! root      768: #define UNICODE_CHARSET         1
1.1       root      769: #define SYMBOL_CHARSET          2
                    770: #define SHIFTJIS_CHARSET        128
1.1.1.2 ! root      771: #define HANGEUL_CHARSET         129
        !           772: #define CHINESEBIG5_CHARSET     136
1.1       root      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: 
1.1.1.2 ! root      805: /* !!![kirko] The CHARSET structure is sheduled to die */
1.1       root      806: typedef struct tagCHARSET {
                    807:     DWORD   aflBlock[3];
                    808:     DWORD   flLang;
                    809: } CHARSET, *LPCHARSET;
                    810: 
1.1.1.2 ! root      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: 
1.1       root      825: typedef struct tagPANOSE {
1.1.1.2 ! root      826:     DWORD ulCulture;            /* !!! [kirko] this field will disappear */
1.1       root      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: 
1.1.1.2 ! root      839: #define PAN_ANY                         0 /* Any                            */
        !           840: #define PAN_NO_FIT                      1 /* No Fit                         */
1.1       root      841: 
1.1.1.2 ! root      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                  */
1.1       root      944: 
                    945: 
1.1.1.2 ! root      946: #define ELF_VENDOR_SIZE     4
1.1       root      947: 
1.1.1.2 ! root      948: /* The extended logical font       */
        !           949: /* An extension of the ENUMLOGFONT */
1.1       root      950: 
                    951: typedef struct tagEXTLOGFONTA {
                    952:     LOGFONTA    elfLogFont;
1.1.1.2 ! root      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                   */
1.1       root      957:     PANOSE      elfPanose;
1.1.1.2 ! root      958:     BYTE        elfVendorId[ELF_VENDOR_SIZE];
        !           959: } EXTLOGFONTA, *PEXTLOGFONTA, NEAR *NPEXTLOGFONTA, FAR *LPEXTLOGFONTA;
1.1       root      960: typedef struct tagEXTLOGFONTW {
                    961:     LOGFONTW    elfLogFont;
1.1.1.2 ! root      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                   */
1.1       root      966:     PANOSE      elfPanose;
1.1.1.2 ! root      967:     BYTE        elfVendorId[ELF_VENDOR_SIZE];
        !           968: } EXTLOGFONTW, *PEXTLOGFONTW, NEAR *NPEXTLOGFONTW, FAR *LPEXTLOGFONTW;
1.1       root      969: #ifdef UNICODE
                    970: #define EXTLOGFONT EXTLOGFONTW
1.1.1.2 ! root      971: #define PEXTLOGFONT PEXTLOGFONTW
        !           972: #define NPEXTLOGFONT NPEXTLOGFONTW
1.1       root      973: #define LPEXTLOGFONT LPEXTLOGFONTW
                    974: #else
                    975: #define EXTLOGFONT EXTLOGFONTA
1.1.1.2 ! root      976: #define PEXTLOGFONT PEXTLOGFONTA
        !           977: #define NPEXTLOGFONT NPEXTLOGFONTA
1.1       root      978: #define LPEXTLOGFONT LPEXTLOGFONTA
                    979: #endif // UNICODE
                    980: 
                    981: 
1.1.1.2 ! root      982: #define ELF_VERSION         0
        !           983: #define ELF_CULTURE_LATIN   0
1.1       root      984: 
                    985: /* the complete set of font attribute distances */
                    986: 
1.1.1.2 ! root      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
1.1       root      992: 
1.1.1.2 ! root      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;
1.1       root     1040: 
                   1041: typedef struct tagFMATCHA {
1.1.1.2 ! root     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;
1.1       root     1047: typedef struct tagFMATCHW {
1.1.1.2 ! root     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;
1.1       root     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: 
1.1.1.2 ! root     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
1.1       root     1087: 
1.1.1.2 ! root     1088: #define SIZEOFMAPORDER     sizeof(UINT)*(MAPPER_INDEX_LAST+1)
1.1       root     1089: 
1.1.1.2 ! root     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)
1.1       root     1103: 
                   1104: /* EnumFonts Masks */
                   1105: #define RASTER_FONTTYPE     0x0001
1.1.1.2 ! root     1106: #define DEVICE_FONTTYPE     0x002
        !          1107: #define TRUETYPE_FONTTYPE   0x004
1.1       root     1108: 
1.1.1.2 ! root     1109: #define RGB(r,g,b)          ((COLORREF)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
1.1       root     1110: #define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
1.1.1.2 ! root     1111: #define PALETTEINDEX(i)     ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
1.1       root     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
1.1.1.2 ! root     1142: #define MM_ANISOTROPIC      8
1.1       root     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: 
1.1.1.2 ! root     1173: #define CLR_INVALID     0xFFFFFFFF
1.1       root     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
1.1.1.2 ! root     1183: #define BS_DIBPATTERNPT     6
1.1       root     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
1.1.1.2 ! root     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
1.1       root     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: 
1.1.1.2 ! root     1264: #define SIZEPALETTE  104    /* Number of entries in physical palette    */
1.1       root     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                 */
1.1.1.2 ! root     1301: #define CC_ROUNDRECT        256 /*                                  */
1.1       root     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          */
1.1.1.2 ! root     1328: #define CP_REGION           2   /*                                  */
1.1       root     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 */
1.1.1.2 ! root     1351: #define RC_NONE
1.1       root     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         */
1.1.1.2 ! root     1357: #define RC_GDI20_STATE      0x0020
        !          1358: #define RC_SAVEBITMAP       0x0040
1.1       root     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       */
1.1.1.2 ! root     1366: #define RC_OP_DX_OUTPUT     0x4000
        !          1367: #define RC_DEVBITS          0x8000
1.1       root     1368: 
                   1369: /* DIB color table identifiers */
                   1370: 
1.1.1.2 ! root     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 */
1.1       root     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: 
1.1.1.2 ! root     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];
1.1       root     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;
1.1.1.2 ! root     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
1.1       root     1453: 
                   1454: /* GetRegionData/ExtCreateRegion */
                   1455: 
1.1.1.2 ! root     1456: #define RDH_RECTANGLES  1
1.1       root     1457: 
                   1458: typedef struct _RGNDATAHEADER {
                   1459:     DWORD   dwSize;
                   1460:     DWORD   iType;
                   1461:     DWORD   nCount;
1.1.1.2 ! root     1462:     DWORD   nRgnSize;
        !          1463:     RECT    rcBound;
1.1       root     1464: } RGNDATAHEADER, *PRGNDATAHEADER;
                   1465: 
                   1466: typedef struct _RGNDATA {
                   1467:     RGNDATAHEADER   rdh;
1.1.1.2 ! root     1468:     char            Buffer[1];
1.1       root     1469: } RGNDATA, *PRGNDATA, NEAR *NPRGNDATA, FAR *LPRGNDATA;
                   1470: 
1.1.1.2 ! root     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);
1.1       root     1647: #ifdef UNICODE
                   1648: #define AddFontResource AddFontResourceW
                   1649: #else
                   1650: #define AddFontResource AddFontResourceA
                   1651: #endif // !UNICODE
                   1652: 
1.1.1.2 ! root     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);
1.1       root     1683: #ifdef UNICODE
                   1684: #define CreateFontIndirect CreateFontIndirectW
                   1685: #else
                   1686: #define CreateFontIndirect CreateFontIndirectA
                   1687: #endif // !UNICODE
1.1.1.2 ! root     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);
1.1       root     1694: #ifdef UNICODE
                   1695: #define CreateFont CreateFontW
                   1696: #else
                   1697: #define CreateFont CreateFontA
                   1698: #endif // !UNICODE
                   1699: 
1.1.1.2 ! root     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);
1.1       root     1725: 
1.1.1.2 ! root     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);
1.1       root     1731: 
1.1.1.2 ! root     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);
1.1       root     1741: #ifdef UNICODE
                   1742: #define EnumFonts EnumFontsW
                   1743: #else
                   1744: #define EnumFonts EnumFontsA
                   1745: #endif // !UNICODE
                   1746: 
1.1.1.2 ! root     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);
1.1       root     1770: 
1.1.1.2 ! root     1771: BOOL  WINAPI GetBrushOrgEx(HDC, LPPOINT);
        !          1772: 
        !          1773: BOOL  WINAPI GetCharWidthA(HDC, UINT, UINT, LPINT);
        !          1774: BOOL  WINAPI GetCharWidthW(HDC, UINT, UINT, LPINT);
1.1       root     1775: #ifdef UNICODE
                   1776: #define GetCharWidth GetCharWidthW
                   1777: #else
                   1778: #define GetCharWidth GetCharWidthA
                   1779: #endif // !UNICODE
1.1.1.2 ! root     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
1.1       root     1787: 
1.1.1.2 ! root     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, 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);
1.1       root     1850: 
                   1851: BOOL  APIENTRY GetTextExtentPointA(
1.1.1.2 ! root     1852:                     HDC,
        !          1853:                     LPCSTR,
        !          1854:                     int,
        !          1855:                     LPSIZE
1.1       root     1856:                     );
                   1857: BOOL  APIENTRY GetTextExtentPointW(
1.1.1.2 ! root     1858:                     HDC,
        !          1859:                     LPCWSTR,
        !          1860:                     int,
        !          1861:                     LPSIZE
1.1       root     1862:                     );
                   1863: #ifdef UNICODE
                   1864: #define GetTextExtentPoint GetTextExtentPointW
                   1865: #else
                   1866: #define GetTextExtentPoint GetTextExtentPointA
                   1867: #endif // !UNICODE
                   1868: 
1.1.1.2 ! root     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);
1.1       root     1924: #ifdef UNICODE
                   1925: #define RemoveFontResource RemoveFontResourceW
                   1926: #else
                   1927: #define RemoveFontResource RemoveFontResourceA
                   1928: #endif // !UNICODE
1.1.1.2 ! root     1929: BOOL  WINAPI RoundRect(HDC, int, int, int, int, int, int);
        !          1930: BOOL WINAPI ResizePalette(HPALETTE, UINT);
1.1       root     1931: 
1.1.1.2 ! root     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 BYTE *);
        !          1941: 
        !          1942: UINT  WINAPI SetBoundsRect(HDC, LPRECT, 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);
1.1       root     1964: 
                   1965: #ifndef NOMETAFILE
                   1966: 
1.1.1.2 ! root     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);
1.1       root     2013: 
1.1.1.2 ! root     2014: #endif  /* NOMETAFILE */
1.1       root     2015: 
                   2016: #ifndef NOTEXTMETRIC
                   2017: 
1.1.1.2 ! root     2018: BOOL WINAPI GetTextMetricsA(HDC, LPTEXTMETRICA);
        !          2019: BOOL WINAPI GetTextMetricsW(HDC, LPTEXTMETRICW);
1.1       root     2020: #ifdef UNICODE
                   2021: #define GetTextMetrics GetTextMetricsW
                   2022: #else
                   2023: #define GetTextMetrics GetTextMetricsA
                   2024: #endif // !UNICODE
                   2025: 
                   2026: #endif
                   2027: 
                   2028: /* new GDI */
1.1.1.2 ! root     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);
1.1       root     2035: 
1.1.1.2 ! root     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);
1.1       root     2077: 
1.1.1.2 ! root     2078: int   WINAPI GetObjectA(HGDIOBJ, int, LPVOID);
        !          2079: int   WINAPI GetObjectW(HGDIOBJ, int, LPVOID);
1.1       root     2080: #ifdef UNICODE
                   2081: #define GetObject GetObjectW
                   2082: #else
                   2083: #define GetObject GetObjectA
                   2084: #endif // !UNICODE
1.1.1.2 ! root     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);
1.1       root     2088: #ifdef UNICODE
                   2089: #define TextOut TextOutW
                   2090: #else
                   2091: #define TextOut TextOutA
                   2092: #endif // !UNICODE
1.1.1.2 ! root     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);
1.1       root     2095: #ifdef UNICODE
                   2096: #define ExtTextOut ExtTextOutW
                   2097: #else
                   2098: #define ExtTextOut ExtTextOutA
                   2099: #endif // !UNICODE
                   2100: 
1.1.1.2 ! root     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);
1.1       root     2122: 
1.1.1.2 ! root     2123: int   WINAPI GetTextFaceA(HDC, int, LPSTR);
        !          2124: int   WINAPI GetTextFaceW(HDC, int, LPWSTR);
1.1       root     2125: #ifdef UNICODE
                   2126: #define GetTextFace GetTextFaceW
                   2127: #else
                   2128: #define GetTextFace GetTextFaceA
                   2129: #endif // !UNICODE
                   2130: 
1.1.1.2 ! root     2131: #define FONTMAPPER_MAX 10
        !          2132: 
        !          2133: DWORD WINAPI EnumNearestFontsA(HDC, LPEXTLOGFONTA, DWORD, LPFMATCHA);
        !          2134: DWORD WINAPI EnumNearestFontsW(HDC, LPEXTLOGFONTW, DWORD, LPFMATCHW);
1.1       root     2135: #ifdef UNICODE
                   2136: #define EnumNearestFonts EnumNearestFontsW
                   2137: #else
                   2138: #define EnumNearestFonts EnumNearestFontsA
                   2139: #endif // !UNICODE
                   2140: 
1.1.1.2 ! root     2141: BOOL WINAPI SetFontMapperControls(LPFMCONTROLS);
        !          2142: 
        !          2143: BOOL WINAPI GetFontMapperControls(LPFMCONTROLS, DWORD);
        !          2144: 
        !          2145: HFONT  WINAPI ExtCreateFontIndirectA(LPEXTLOGFONTA);
        !          2146: HFONT  WINAPI ExtCreateFontIndirectW(LPEXTLOGFONTW);
1.1       root     2147: #ifdef UNICODE
                   2148: #define ExtCreateFontIndirect ExtCreateFontIndirectW
                   2149: #else
                   2150: #define ExtCreateFontIndirect ExtCreateFontIndirectA
                   2151: #endif // !UNICODE
1.1.1.2 ! root     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();
1.1       root     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.