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

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

unix.superglobalmegacorp.com

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