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

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: 
1.1.1.4 ! root       46: /* Ternary raster operations */
1.1       root       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                    */
1.1.1.4 ! root       62: 
        !            63: /* Quaternary raster codes */
        !            64: #define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))
        !            65: 
1.1       root       66: #endif /* NORASTEROPS */
                     67: 
                     68: #define GDI_ERROR (0xFFFFFFFFL)
1.1.1.4 ! root       69: #define HGDI_ERROR ((HANDLE)(0xFFFFFFFFL))
1.1       root       70: 
                     71: /* Region Flags */
                     72: #define ERROR               0
                     73: #define NULLREGION          1
                     74: #define SIMPLEREGION        2
                     75: #define COMPLEXREGION       3
                     76: #define RGN_ERROR ERROR
                     77: 
                     78: /* CombineRgn() Styles */
                     79: #define RGN_AND             1
                     80: #define RGN_OR              2
                     81: #define RGN_XOR             3
                     82: #define RGN_DIFF            4
                     83: #define RGN_COPY            5
                     84: #define RGN_MIN             RGN_AND
                     85: #define RGN_MAX             RGN_COPY
                     86: 
                     87: /* StretchBlt() Modes */
                     88: #define BLACKONWHITE                 1
                     89: #define WHITEONBLACK                 2
                     90: #define COLORONCOLOR                 3
1.1.1.3   root       91: #define HALFTONE                     4
                     92: #define MAXSTRETCHBLTMODE            4
1.1       root       93: 
                     94: /* PolyFill() Modes */
                     95: #define ALTERNATE                    1
                     96: #define WINDING                      2
                     97: #define POLYFILL_LAST                2
                     98: 
                     99: /* Text Alignment Options */
                    100: #define TA_NOUPDATECP                0
                    101: #define TA_UPDATECP                  1
                    102: 
                    103: #define TA_LEFT                      0
                    104: #define TA_RIGHT                     2
                    105: #define TA_CENTER                    6
                    106: 
                    107: #define TA_TOP                       0
                    108: #define TA_BOTTOM                    8
                    109: #define TA_BASELINE                  24
                    110: #define TA_MASK       (TA_BASELINE+TA_CENTER+TA_UPDATECP)
                    111: 
1.1.1.3   root      112: #define VTA_BASELINE TA_BASELINE
                    113: #define VTA_LEFT     TA_BOTTOM
                    114: #define VTA_RIGHT    TA_TOP
                    115: #define VTA_CENTER   TA_CENTER
                    116: #define VTA_BOTTOM   TA_RIGHT
                    117: #define VTA_TOP      TA_LEFT
                    118: 
                    119: 
1.1       root      120: #define ETO_GRAYED                   1
                    121: #define ETO_OPAQUE                   2
                    122: #define ETO_CLIPPED                  4
                    123: 
                    124: #define ASPECT_FILTERING             0x0001
                    125: 
1.1.1.2   root      126: /* Bounds Accumulation APIs */
                    127: 
                    128: #define DCB_RESET       0x0001
                    129: #define DCB_ACCUMULATE  0x0002
                    130: #define DCB_DIRTY       DCB_ACCUMULATE
                    131: #define DCB_SET         (DCB_RESET | DCB_ACCUMULATE)
                    132: #define DCB_ENABLE      0x0004
                    133: #define DCB_DISABLE     0x0008
                    134: 
1.1       root      135: #ifndef NOMETAFILE
                    136: 
                    137: /* Metafile Functions */
                    138: #define META_SETBKCOLOR              0x0201
                    139: #define META_SETBKMODE               0x0102
                    140: #define META_SETMAPMODE              0x0103
                    141: #define META_SETROP2                 0x0104
                    142: #define META_SETRELABS               0x0105
                    143: #define META_SETPOLYFILLMODE         0x0106
                    144: #define META_SETSTRETCHBLTMODE       0x0107
                    145: #define META_SETTEXTCHAREXTRA        0x0108
                    146: #define META_SETTEXTCOLOR            0x0209
                    147: #define META_SETTEXTJUSTIFICATION    0x020A
                    148: #define META_SETWINDOWORG            0x020B
                    149: #define META_SETWINDOWEXT            0x020C
                    150: #define META_SETVIEWPORTORG          0x020D
                    151: #define META_SETVIEWPORTEXT          0x020E
                    152: #define META_OFFSETWINDOWORG         0x020F
1.1.1.2   root      153: #define META_SCALEWINDOWEXT          0x0410
1.1       root      154: #define META_OFFSETVIEWPORTORG       0x0211
                    155: #define META_SCALEVIEWPORTEXT        0x0412
                    156: #define META_LINETO                  0x0213
                    157: #define META_MOVETO                  0x0214
                    158: #define META_EXCLUDECLIPRECT         0x0415
                    159: #define META_INTERSECTCLIPRECT       0x0416
                    160: #define META_ARC                     0x0817
                    161: #define META_ELLIPSE                 0x0418
                    162: #define META_FLOODFILL               0x0419
                    163: #define META_PIE                     0x081A
                    164: #define META_RECTANGLE               0x041B
                    165: #define META_ROUNDRECT               0x061C
                    166: #define META_PATBLT                  0x061D
                    167: #define META_SAVEDC                  0x001E
                    168: #define META_SETPIXEL                0x041F
                    169: #define META_OFFSETCLIPRGN           0x0220
                    170: #define META_TEXTOUT                 0x0521
                    171: #define META_BITBLT                  0x0922
                    172: #define META_STRETCHBLT              0x0B23
                    173: #define META_POLYGON                 0x0324
                    174: #define META_POLYLINE                0x0325
                    175: #define META_ESCAPE                  0x0626
                    176: #define META_RESTOREDC               0x0127
                    177: #define META_FILLREGION              0x0228
                    178: #define META_FRAMEREGION             0x0429
                    179: #define META_INVERTREGION            0x012A
                    180: #define META_PAINTREGION             0x012B
                    181: #define META_SELECTCLIPREGION        0x012C
                    182: #define META_SELECTOBJECT            0x012D
                    183: #define META_SETTEXTALIGN            0x012E
                    184: #define META_CHORD                   0x0830
                    185: #define META_SETMAPPERFLAGS          0x0231
                    186: #define META_EXTTEXTOUT              0x0a32
                    187: #define META_SETDIBTODEV             0x0d33
                    188: #define META_SELECTPALETTE           0x0234
                    189: #define META_REALIZEPALETTE          0x0035
                    190: #define META_ANIMATEPALETTE          0x0436
                    191: #define META_SETPALENTRIES           0x0037
                    192: #define META_POLYPOLYGON             0x0538
                    193: #define META_RESIZEPALETTE           0x0139
                    194: #define META_DIBBITBLT               0x0940
                    195: #define META_DIBSTRETCHBLT           0x0b41
                    196: #define META_DIBCREATEPATTERNBRUSH   0x0142
                    197: #define META_STRETCHDIB              0x0f43
1.1.1.4 ! root      198: #define META_EXTFLOODFILL            0x0548
1.1       root      199: #define META_DELETEOBJECT            0x01f0
                    200: #define META_CREATEPALETTE           0x00f7
                    201: #define META_CREATEPATTERNBRUSH      0x01F9
                    202: #define META_CREATEPENINDIRECT       0x02FA
                    203: #define META_CREATEFONTINDIRECT      0x02FB
                    204: #define META_CREATEBRUSHINDIRECT     0x02FC
                    205: #define META_CREATEREGION            0x06FF
                    206: 
                    207: #endif /* NOMETAFILE */
                    208: 
                    209: /* GDI Escapes */
                    210: #define NEWFRAME                     1
                    211: #define ABORTDOC                     2
                    212: #define NEXTBAND                     3
                    213: #define SETCOLORTABLE                4
                    214: #define GETCOLORTABLE                5
                    215: #define FLUSHOUTPUT                  6
                    216: #define DRAFTMODE                    7
                    217: #define QUERYESCSUPPORT              8
                    218: #define SETABORTPROC                 9
                    219: #define STARTDOC                     10
                    220: #define ENDDOC                       11
                    221: #define GETPHYSPAGESIZE              12
                    222: #define GETPRINTINGOFFSET            13
                    223: #define GETSCALINGFACTOR             14
                    224: #define MFCOMMENT                    15
                    225: #define GETPENWIDTH                  16
                    226: #define SETCOPYCOUNT                 17
                    227: #define SELECTPAPERSOURCE            18
                    228: #define DEVICEDATA                   19
                    229: #define PASSTHROUGH                  19
                    230: #define GETTECHNOLGY                 20
                    231: #define GETTECHNOLOGY                20
1.1.1.4 ! root      232: #define SETLINECAP                   21
1.1       root      233: #define SETLINEJOIN                  22
                    234: #define SETMITERLIMIT                23
                    235: #define BANDINFO                     24
                    236: #define DRAWPATTERNRECT              25
                    237: #define GETVECTORPENSIZE             26
                    238: #define GETVECTORBRUSHSIZE           27
                    239: #define ENABLEDUPLEX                 28
                    240: #define GETSETPAPERBINS              29
                    241: #define GETSETPRINTORIENT            30
                    242: #define ENUMPAPERBINS                31
                    243: #define SETDIBSCALING                32
                    244: #define EPSPRINTING                  33
                    245: #define ENUMPAPERMETRICS             34
                    246: #define GETSETPAPERMETRICS           35
                    247: #define POSTSCRIPT_DATA              37
                    248: #define POSTSCRIPT_IGNORE            38
1.1.1.2   root      249: #define MOUSETRAILS                  39
1.1.1.4 ! root      250: #define GETDEVICEUNITS               42
1.1.1.2   root      251: 
1.1       root      252: #define GETEXTENDEDTEXTMETRICS       256
                    253: #define GETEXTENTTABLE               257
                    254: #define GETPAIRKERNTABLE             258
                    255: #define GETTRACKKERNTABLE            259
                    256: #define EXTTEXTOUT                   512
1.1.1.4 ! root      257: #define GETFACENAME                  513
        !           258: #define DOWNLOADFACE                 514
1.1       root      259: #define ENABLERELATIVEWIDTHS         768
                    260: #define ENABLEPAIRKERNING            769
                    261: #define SETKERNTRACK                 770
                    262: #define SETALLJUSTVALUES             771
                    263: #define SETCHARSET                   772
                    264: 
                    265: #define STRETCHBLT                   2048
1.1.1.2   root      266: #define GETSETSCREENPARAMS           3072
1.1       root      267: #define BEGIN_PATH                   4096
                    268: #define CLIP_TO_PATH                 4097
                    269: #define END_PATH                     4098
                    270: #define EXT_DEVICE_CAPS              4099
                    271: #define RESTORE_CTM                  4100
                    272: #define SAVE_CTM                     4101
                    273: #define SET_ARC_DIRECTION            4102
                    274: #define SET_BACKGROUND_COLOR         4103
                    275: #define SET_POLY_MODE                4104
                    276: #define SET_SCREEN_ANGLE             4105
                    277: #define SET_SPREAD                   4106
                    278: #define TRANSFORM_CTM                4107
                    279: #define SET_CLIP_BOX                 4108
                    280: #define SET_BOUNDS                   4109
                    281: #define SET_MIRROR_MODE              4110
1.1.1.4 ! root      282: #define OPENCHANNEL                  4110
        !           283: #define DOWNLOADHEADER               4111
        !           284: #define CLOSECHANNEL                 4112
        !           285: #define POSTSCRIPT_PASSTHROUGH       4115
        !           286: #define ENCAPSULATED_POSTSCRIPT      4116
1.1       root      287: 
                    288: /* Spooler Error Codes */
                    289: #define SP_NOTREPORTED               0x4000
                    290: #define SP_ERROR                     (-1)
                    291: #define SP_APPABORT                  (-2)
                    292: #define SP_USERABORT                 (-3)
                    293: #define SP_OUTOFDISK                 (-4)
                    294: #define SP_OUTOFMEMORY               (-5)
                    295: 
                    296: #define PR_JOBSTATUS                 0x0000
                    297: 
1.1.1.2   root      298: /* Object Definitions for EnumObjects() */
1.1       root      299: #define OBJ_PEN             1
                    300: #define OBJ_BRUSH           2
                    301: #define OBJ_DC              3
                    302: #define OBJ_METADC          4
                    303: #define OBJ_PAL             5
                    304: #define OBJ_FONT            6
                    305: #define OBJ_BITMAP          7
                    306: #define OBJ_REGION          8
                    307: #define OBJ_METAFILE        9
                    308: #define OBJ_MEMDC           10
1.1.1.2   root      309: #define OBJ_EXTPEN          11
                    310: #define OBJ_ENHMETADC       12
                    311: #define OBJ_ENHMETAFILE     13
1.1       root      312: 
                    313: /* xform stuff */
                    314: #define MWT_IDENTITY        1
                    315: #define MWT_LEFTMULTIPLY    2
                    316: #define MWT_RIGHTMULTIPLY   3
                    317: 
                    318: #define MWT_MIN             MWT_IDENTITY
                    319: #define MWT_MAX             MWT_RIGHTMULTIPLY
                    320: 
                    321: #define _XFORM_
                    322: typedef struct  tagXFORM
                    323:   {
                    324:     FLOAT   eM11;
                    325:     FLOAT   eM12;
                    326:     FLOAT   eM21;
                    327:     FLOAT   eM22;
                    328:     FLOAT   eDx;
                    329:     FLOAT   eDy;
                    330:   } XFORM, *PXFORM, FAR *LPXFORM;
                    331: 
                    332: /* Bitmap Header Definition */
                    333: typedef struct tagBITMAP
                    334:   {
                    335:     LONG        bmType;
                    336:     LONG        bmWidth;
                    337:     LONG        bmHeight;
                    338:     LONG        bmWidthBytes;
                    339:     WORD        bmPlanes;
                    340:     WORD        bmBitsPixel;
1.1.1.2   root      341:     LPVOID      bmBits;
1.1       root      342:   } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
                    343: 
                    344: typedef struct tagRGBTRIPLE {
                    345:         BYTE    rgbtBlue;
                    346:         BYTE    rgbtGreen;
                    347:         BYTE    rgbtRed;
                    348: } RGBTRIPLE;
                    349: 
                    350: typedef struct tagRGBQUAD {
                    351:         BYTE    rgbBlue;
                    352:         BYTE    rgbGreen;
                    353:         BYTE    rgbRed;
                    354:         BYTE    rgbReserved;
                    355: } RGBQUAD;
1.1.1.4 ! root      356: typedef RGBQUAD FAR* LPRGBQUAD;
        !           357: 
1.1       root      358: 
                    359: /* structures for defining DIBs */
                    360: typedef struct tagBITMAPCOREHEADER {
                    361:         DWORD   bcSize;                 /* used to get to color table */
                    362:         WORD    bcWidth;
                    363:         WORD    bcHeight;
                    364:         WORD    bcPlanes;
                    365:         WORD    bcBitCount;
                    366: } BITMAPCOREHEADER, FAR *LPBITMAPCOREHEADER, *PBITMAPCOREHEADER;
                    367: 
                    368: 
                    369: typedef struct tagBITMAPINFOHEADER{
                    370:         DWORD      biSize;
1.1.1.2   root      371:         LONG       biWidth;
                    372:         LONG       biHeight;
1.1       root      373:         WORD       biPlanes;
                    374:         WORD       biBitCount;
                    375:         DWORD      biCompression;
                    376:         DWORD      biSizeImage;
1.1.1.2   root      377:         LONG       biXPelsPerMeter;
                    378:         LONG       biYPelsPerMeter;
1.1       root      379:         DWORD      biClrUsed;
                    380:         DWORD      biClrImportant;
                    381: } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
                    382: 
                    383: /* constants for the biCompression field */
1.1.1.2   root      384: #define BI_RGB        0L
                    385: #define BI_RLE8       1L
                    386: #define BI_RLE4       2L
1.1.1.3   root      387: #define BI_BITFIELDS  3L
1.1       root      388: 
                    389: typedef struct tagBITMAPINFO {
                    390:     BITMAPINFOHEADER    bmiHeader;
                    391:     RGBQUAD             bmiColors[1];
                    392: } BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
                    393: 
                    394: typedef struct tagBITMAPCOREINFO {
                    395:     BITMAPCOREHEADER    bmciHeader;
                    396:     RGBTRIPLE           bmciColors[1];
                    397: } BITMAPCOREINFO, FAR *LPBITMAPCOREINFO, *PBITMAPCOREINFO;
                    398: 
                    399: #pragma pack(2)
                    400: typedef struct tagBITMAPFILEHEADER {
                    401:         WORD    bfType;
                    402:         DWORD   bfSize;
                    403:         WORD    bfReserved1;
                    404:         WORD    bfReserved2;
                    405:         DWORD   bfOffBits;
                    406: } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
                    407: #pragma pack()
                    408: 
                    409: #define MAKEPOINTS(l)       (*((POINTS FAR *)&(l)))
                    410: 
                    411: #ifndef NOMETAFILE
                    412: 
                    413: /* Clipboard Metafile Picture Structure */
                    414: typedef struct tagHANDLETABLE
                    415:   {
1.1.1.2   root      416:     HGDIOBJ     objectHandle[1];
1.1       root      417:   } HANDLETABLE, *PHANDLETABLE, FAR *LPHANDLETABLE;
                    418: 
                    419: typedef struct tagMETARECORD
                    420:   {
                    421:     DWORD       rdSize;
                    422:     WORD        rdFunction;
                    423:     WORD        rdParm[1];
1.1.1.2   root      424:   } METARECORD;
1.1.1.4 ! root      425: typedef struct tagMETARECORD UNALIGNED *PMETARECORD;
        !           426: typedef struct tagMETARECORD UNALIGNED FAR *LPMETARECORD;
1.1       root      427: 
                    428: typedef struct tagMETAFILEPICT
                    429:   {
1.1.1.2   root      430:     LONG        mm;
                    431:     LONG        xExt;
                    432:     LONG        yExt;
                    433:     HMETAFILE   hMF;
1.1       root      434:   } METAFILEPICT, FAR *LPMETAFILEPICT;
                    435: 
1.1.1.2   root      436: #pragma pack(2)
1.1       root      437: typedef struct tagMETAHEADER
                    438: {
                    439:     WORD        mtType;
                    440:     WORD        mtHeaderSize;
                    441:     WORD        mtVersion;
                    442:     DWORD       mtSize;
                    443:     WORD        mtNoObjects;
                    444:     DWORD       mtMaxRecord;
                    445:     WORD        mtNoParameters;
                    446: } METAHEADER;
1.1.1.4 ! root      447: typedef struct tagMETAHEADER UNALIGNED *PMETAHEADER;
        !           448: typedef struct tagMETAHEADER UNALIGNED FAR *LPMETAHEADER;
1.1.1.2   root      449: 
                    450: #pragma pack()
                    451: 
                    452: /* Enhanced Metafile structures */
                    453: typedef struct tagENHMETARECORD
                    454: {
1.1.1.4 ! root      455:     DWORD   iType;              // Record type EMR_XXX
1.1.1.2   root      456:     DWORD   nSize;              // Record size in bytes
                    457:     DWORD   dParm[1];           // Parameters
                    458: } ENHMETARECORD, *PENHMETARECORD, *LPENHMETARECORD;
                    459: 
                    460: typedef struct tagENHMETAHEADER
                    461: {
1.1.1.4 ! root      462:     DWORD   iType;              // Record type EMR_HEADER
1.1.1.2   root      463:     DWORD   nSize;              // Record size in bytes.  This may be greater
                    464:                                 // than the sizeof(ENHMETAHEADER).
                    465:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
                    466:     RECTL   rclFrame;           // Inclusive-inclusive Picture Frame of metafile in .01 mm units
                    467:     DWORD   dSignature;         // Signature.  Must be ENHMETA_SIGNATURE.
                    468:     DWORD   nVersion;           // Version number
                    469:     DWORD   nBytes;             // Size of the metafile in bytes
                    470:     DWORD   nRecords;           // Number of records in the metafile
                    471:     WORD    nHandles;           // Number of handles in the handle table
                    472:                                 // Handle index zero is reserved.
                    473:     WORD    sReserved;          // Reserved.  Must be zero.
                    474:     DWORD   nDescription;       // Number of chars in the unicode description string
                    475:                                 // This is 0 if there is no description string
                    476:     DWORD   offDescription;     // Offset to the metafile description record.
                    477:                                 // This is 0 if there is no description string
                    478:     DWORD   nPalEntries;        // Number of entries in the metafile palette.
                    479:     SIZEL   szlDevice;          // Size of the reference device in pels
                    480:     SIZEL   szlMillimeters;     // Size of the reference device in millimeters
                    481: } ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER;
1.1       root      482: 
                    483: #endif /* NOMETAFILE */
                    484: 
                    485: #ifndef NOTEXTMETRIC
                    486: 
1.1.1.4 ! root      487: /* tmPitchAndFamily flags */
1.1.1.2   root      488: #define TMPF_FIXED_PITCH    0x01
                    489: #define TMPF_VECTOR             0x02
                    490: #define TMPF_DEVICE             0x08
                    491: #define TMPF_TRUETYPE       0x04
                    492: 
1.1       root      493: typedef struct tagTEXTMETRICA
                    494: {
                    495:     LONG        tmHeight;
                    496:     LONG        tmAscent;
                    497:     LONG        tmDescent;
                    498:     LONG        tmInternalLeading;
                    499:     LONG        tmExternalLeading;
                    500:     LONG        tmAveCharWidth;
                    501:     LONG        tmMaxCharWidth;
                    502:     LONG        tmWeight;
                    503:     LONG        tmOverhang;
                    504:     LONG        tmDigitizedAspectX;
                    505:     LONG        tmDigitizedAspectY;
                    506:     BYTE        tmFirstChar;
                    507:     BYTE        tmLastChar;
                    508:     BYTE        tmDefaultChar;
                    509:     BYTE        tmBreakChar;
                    510:     BYTE        tmItalic;
                    511:     BYTE        tmUnderlined;
                    512:     BYTE        tmStruckOut;
                    513:     BYTE        tmPitchAndFamily;
                    514:     BYTE        tmCharSet;
                    515: } TEXTMETRICA, *PTEXTMETRICA, NEAR *NPTEXTMETRICA, FAR *LPTEXTMETRICA;
                    516: typedef struct tagTEXTMETRICW
                    517: {
                    518:     LONG        tmHeight;
                    519:     LONG        tmAscent;
                    520:     LONG        tmDescent;
                    521:     LONG        tmInternalLeading;
                    522:     LONG        tmExternalLeading;
                    523:     LONG        tmAveCharWidth;
                    524:     LONG        tmMaxCharWidth;
                    525:     LONG        tmWeight;
                    526:     LONG        tmOverhang;
                    527:     LONG        tmDigitizedAspectX;
                    528:     LONG        tmDigitizedAspectY;
                    529:     WCHAR       tmFirstChar;
                    530:     WCHAR       tmLastChar;
                    531:     WCHAR       tmDefaultChar;
                    532:     WCHAR       tmBreakChar;
                    533:     BYTE        tmItalic;
                    534:     BYTE        tmUnderlined;
                    535:     BYTE        tmStruckOut;
                    536:     BYTE        tmPitchAndFamily;
                    537:     BYTE        tmCharSet;
                    538: } TEXTMETRICW, *PTEXTMETRICW, NEAR *NPTEXTMETRICW, FAR *LPTEXTMETRICW;
                    539: #ifdef UNICODE
1.1.1.4 ! root      540: typedef TEXTMETRICW TEXTMETRIC;
        !           541: typedef PTEXTMETRICW PTEXTMETRIC;
        !           542: typedef NPTEXTMETRICW NPTEXTMETRIC;
        !           543: typedef LPTEXTMETRICW LPTEXTMETRIC;
        !           544: #else
        !           545: typedef TEXTMETRICA TEXTMETRIC;
        !           546: typedef PTEXTMETRICA PTEXTMETRIC;
        !           547: typedef NPTEXTMETRICA NPTEXTMETRIC;
        !           548: typedef LPTEXTMETRICA LPTEXTMETRIC;
1.1       root      549: #endif // UNICODE
                    550: 
1.1.1.2   root      551: /* ntmFlags field flags */
                    552: #define NTM_REGULAR     0x00000040L
                    553: #define NTM_BOLD        0x00000020L
                    554: #define NTM_ITALIC      0x00000001L
1.1       root      555: 
1.1.1.2   root      556: typedef struct tagNEWTEXTMETRICA
                    557: {
                    558:     LONG        tmHeight;
                    559:     LONG        tmAscent;
                    560:     LONG        tmDescent;
                    561:     LONG        tmInternalLeading;
                    562:     LONG        tmExternalLeading;
                    563:     LONG        tmAveCharWidth;
                    564:     LONG        tmMaxCharWidth;
                    565:     LONG        tmWeight;
                    566:     LONG        tmOverhang;
                    567:     LONG        tmDigitizedAspectX;
                    568:     LONG        tmDigitizedAspectY;
                    569:     BYTE        tmFirstChar;
                    570:     BYTE        tmLastChar;
                    571:     BYTE        tmDefaultChar;
                    572:     BYTE        tmBreakChar;
                    573:     BYTE        tmItalic;
                    574:     BYTE        tmUnderlined;
                    575:     BYTE        tmStruckOut;
                    576:     BYTE        tmPitchAndFamily;
                    577:     BYTE        tmCharSet;
                    578:     DWORD   ntmFlags;
                    579:     UINT    ntmSizeEM;
                    580:     UINT    ntmCellHeight;
                    581:     UINT    ntmAvgWidth;
                    582: } NEWTEXTMETRICA, *PNEWTEXTMETRICA, NEAR *NPNEWTEXTMETRICA, FAR *LPNEWTEXTMETRICA;
                    583: typedef struct tagNEWTEXTMETRICW
                    584: {
                    585:     LONG        tmHeight;
                    586:     LONG        tmAscent;
                    587:     LONG        tmDescent;
                    588:     LONG        tmInternalLeading;
                    589:     LONG        tmExternalLeading;
                    590:     LONG        tmAveCharWidth;
                    591:     LONG        tmMaxCharWidth;
                    592:     LONG        tmWeight;
                    593:     LONG        tmOverhang;
                    594:     LONG        tmDigitizedAspectX;
                    595:     LONG        tmDigitizedAspectY;
                    596:     WCHAR       tmFirstChar;
                    597:     WCHAR       tmLastChar;
                    598:     WCHAR       tmDefaultChar;
                    599:     WCHAR       tmBreakChar;
                    600:     BYTE        tmItalic;
                    601:     BYTE        tmUnderlined;
                    602:     BYTE        tmStruckOut;
                    603:     BYTE        tmPitchAndFamily;
                    604:     BYTE        tmCharSet;
                    605:     DWORD   ntmFlags;
                    606:     UINT    ntmSizeEM;
                    607:     UINT    ntmCellHeight;
                    608:     UINT    ntmAvgWidth;
                    609: } NEWTEXTMETRICW, *PNEWTEXTMETRICW, NEAR *NPNEWTEXTMETRICW, FAR *LPNEWTEXTMETRICW;
                    610: #ifdef UNICODE
1.1.1.4 ! root      611: typedef NEWTEXTMETRICW NEWTEXTMETRIC;
        !           612: typedef PNEWTEXTMETRICW PNEWTEXTMETRIC;
        !           613: typedef NPNEWTEXTMETRICW NPNEWTEXTMETRIC;
        !           614: typedef LPNEWTEXTMETRICW LPNEWTEXTMETRIC;
        !           615: #else
        !           616: typedef NEWTEXTMETRICA NEWTEXTMETRIC;
        !           617: typedef PNEWTEXTMETRICA PNEWTEXTMETRIC;
        !           618: typedef NPNEWTEXTMETRICA NPNEWTEXTMETRIC;
        !           619: typedef LPNEWTEXTMETRICA LPNEWTEXTMETRIC;
1.1.1.2   root      620: #endif // UNICODE
                    621: 
                    622: #endif /* NOTEXTMETRIC */
1.1       root      623: /* GDI Logical Objects: */
                    624: 
                    625: /* Pel Array */
                    626: typedef struct tagPELARRAY
                    627:   {
                    628:     LONG        paXCount;
                    629:     LONG        paYCount;
                    630:     LONG        paXExt;
                    631:     LONG        paYExt;
                    632:     BYTE        paRGBs;
                    633:   } PELARRAY, *PPELARRAY, NEAR *NPPELARRAY, FAR *LPPELARRAY;
                    634: 
                    635: /* Logical Brush (or Pattern) */
                    636: typedef struct tagLOGBRUSH
                    637:   {
1.1.1.2   root      638:     UINT        lbStyle;
                    639:     COLORREF    lbColor;
1.1       root      640:     LONG        lbHatch;
                    641:   } LOGBRUSH, *PLOGBRUSH, NEAR *NPLOGBRUSH, FAR *LPLOGBRUSH;
                    642: 
                    643: typedef LOGBRUSH            PATTERN;
                    644: typedef PATTERN             *PPATTERN;
                    645: typedef PATTERN NEAR        *NPPATTERN;
                    646: typedef PATTERN FAR         *LPPATTERN;
                    647: 
                    648: /* Logical Pen */
                    649: typedef struct tagLOGPEN
                    650:   {
1.1.1.2   root      651:     UINT        lopnStyle;
1.1       root      652:     POINT       lopnWidth;
1.1.1.2   root      653:     COLORREF    lopnColor;
1.1       root      654:   } LOGPEN, *PLOGPEN, NEAR *NPLOGPEN, FAR *LPLOGPEN;
                    655: 
1.1.1.2   root      656: typedef struct tagEXTLOGPEN {
                    657:     DWORD       elpPenStyle;
                    658:     DWORD       elpWidth;
                    659:     UINT        elpBrushStyle;
                    660:     COLORREF    elpColor;
                    661:     LONG        elpHatch;
                    662:     DWORD       elpNumEntries;
                    663:     DWORD       elpStyleEntry[1];
                    664: } EXTLOGPEN, *PEXTLOGPEN, NEAR *NPEXTLOGPEN, FAR *LPEXTLOGPEN;
                    665: 
1.1       root      666: typedef struct tagPALETTEENTRY {
                    667:     BYTE        peRed;
                    668:     BYTE        peGreen;
                    669:     BYTE        peBlue;
                    670:     BYTE        peFlags;
                    671: } PALETTEENTRY, *PPALETTEENTRY, FAR *LPPALETTEENTRY;
                    672: 
                    673: /* Logical Palette */
                    674: typedef struct tagLOGPALETTE {
                    675:     WORD        palVersion;
                    676:     WORD        palNumEntries;
                    677:     PALETTEENTRY        palPalEntry[1];
                    678: } LOGPALETTE, *PLOGPALETTE, NEAR *NPLOGPALETTE, FAR *LPLOGPALETTE;
                    679: 
                    680: 
                    681: /* Logical Font */
                    682: #define LF_FACESIZE         32
                    683: 
                    684: typedef struct tagLOGFONTA
                    685: {
                    686:     LONG      lfHeight;
                    687:     LONG      lfWidth;
                    688:     LONG      lfEscapement;
                    689:     LONG      lfOrientation;
                    690:     LONG      lfWeight;
                    691:     BYTE      lfItalic;
                    692:     BYTE      lfUnderline;
                    693:     BYTE      lfStrikeOut;
                    694:     BYTE      lfCharSet;
                    695:     BYTE      lfOutPrecision;
                    696:     BYTE      lfClipPrecision;
                    697:     BYTE      lfQuality;
                    698:     BYTE      lfPitchAndFamily;
1.1.1.4 ! root      699:     CHAR      lfFaceName[LF_FACESIZE];
1.1       root      700: } LOGFONTA, *PLOGFONTA, NEAR *NPLOGFONTA, FAR *LPLOGFONTA;
                    701: typedef struct tagLOGFONTW
                    702: {
                    703:     LONG      lfHeight;
                    704:     LONG      lfWidth;
                    705:     LONG      lfEscapement;
                    706:     LONG      lfOrientation;
                    707:     LONG      lfWeight;
                    708:     BYTE      lfItalic;
                    709:     BYTE      lfUnderline;
                    710:     BYTE      lfStrikeOut;
                    711:     BYTE      lfCharSet;
                    712:     BYTE      lfOutPrecision;
                    713:     BYTE      lfClipPrecision;
                    714:     BYTE      lfQuality;
                    715:     BYTE      lfPitchAndFamily;
                    716:     WCHAR     lfFaceName[LF_FACESIZE];
                    717: } LOGFONTW, *PLOGFONTW, NEAR *NPLOGFONTW, FAR *LPLOGFONTW;
                    718: #ifdef UNICODE
1.1.1.4 ! root      719: typedef LOGFONTW LOGFONT;
        !           720: typedef PLOGFONTW PLOGFONT;
        !           721: typedef NPLOGFONTW NPLOGFONT;
        !           722: typedef LPLOGFONTW LPLOGFONT;
        !           723: #else
        !           724: typedef LOGFONTA LOGFONT;
        !           725: typedef PLOGFONTA PLOGFONT;
        !           726: typedef NPLOGFONTA NPLOGFONT;
        !           727: typedef LPLOGFONTA LPLOGFONT;
1.1       root      728: #endif // UNICODE
                    729: 
1.1.1.2   root      730: #define LF_FULLFACESIZE     64
                    731: 
                    732: /* Structure passed to FONTENUMPROC */
                    733: typedef struct tagENUMLOGFONTA
                    734: {
                    735:     LOGFONTA elfLogFont;
                    736:     BYTE     elfFullName[LF_FULLFACESIZE];
                    737:     BYTE     elfStyle[LF_FACESIZE];
                    738: } ENUMLOGFONTA, FAR* LPENUMLOGFONTA;
                    739: /* Structure passed to FONTENUMPROC */
                    740: typedef struct tagENUMLOGFONTW
                    741: {
                    742:     LOGFONTW elfLogFont;
                    743:     WCHAR    elfFullName[LF_FULLFACESIZE];
                    744:     WCHAR    elfStyle[LF_FACESIZE];
                    745: } ENUMLOGFONTW, FAR* LPENUMLOGFONTW;
                    746: #ifdef UNICODE
1.1.1.4 ! root      747: typedef ENUMLOGFONTW ENUMLOGFONT;
        !           748: typedef LPENUMLOGFONTW LPENUMLOGFONT;
1.1.1.2   root      749: #else
1.1.1.4 ! root      750: typedef ENUMLOGFONTA ENUMLOGFONT;
        !           751: typedef LPENUMLOGFONTA LPENUMLOGFONT;
1.1.1.2   root      752: #endif // UNICODE
1.1       root      753: 
                    754: #define OUT_DEFAULT_PRECIS      0
                    755: #define OUT_STRING_PRECIS       1
                    756: #define OUT_CHARACTER_PRECIS    2
                    757: #define OUT_STROKE_PRECIS       3
1.1.1.2   root      758: #define OUT_TT_PRECIS           4
                    759: #define OUT_DEVICE_PRECIS       5
                    760: #define OUT_RASTER_PRECIS       6
                    761: #define OUT_TT_ONLY_PRECIS      7
                    762: #define OUT_OUTLINE_PRECIS      8
1.1       root      763: 
                    764: #define CLIP_DEFAULT_PRECIS     0
                    765: #define CLIP_CHARACTER_PRECIS   1
                    766: #define CLIP_STROKE_PRECIS      2
1.1.1.2   root      767: #define CLIP_MASK               0xf
                    768: #define CLIP_LH_ANGLES          (1<<4)
                    769: #define CLIP_TT_ALWAYS          (2<<4)
                    770: #define CLIP_EMBEDDED           (8<<4)
1.1       root      771: 
                    772: #define DEFAULT_QUALITY         0
                    773: #define DRAFT_QUALITY           1
                    774: #define PROOF_QUALITY           2
                    775: 
                    776: #define DEFAULT_PITCH           0
                    777: #define FIXED_PITCH             1
                    778: #define VARIABLE_PITCH          2
                    779: 
                    780: #define ANSI_CHARSET            0
1.1.1.4 ! root      781: #define DEFAULT_CHARSET         1
1.1       root      782: #define SYMBOL_CHARSET          2
                    783: #define SHIFTJIS_CHARSET        128
1.1.1.2   root      784: #define HANGEUL_CHARSET         129
                    785: #define CHINESEBIG5_CHARSET     136
1.1       root      786: #define OEM_CHARSET             255
                    787: 
                    788: /* Font Families */
                    789: #define FF_DONTCARE         (0<<4)  /* Don't care or don't know. */
                    790: #define FF_ROMAN            (1<<4)  /* Variable stroke width, serifed. */
                    791:                                     /* Times Roman, Century Schoolbook, etc. */
                    792: #define FF_SWISS            (2<<4)  /* Variable stroke width, sans-serifed. */
                    793:                                     /* Helvetica, Swiss, etc. */
                    794: #define FF_MODERN           (3<<4)  /* Constant stroke width, serifed or sans-serifed. */
                    795:                                     /* Pica, Elite, Courier, etc. */
                    796: #define FF_SCRIPT           (4<<4)  /* Cursive, etc. */
                    797: #define FF_DECORATIVE       (5<<4)  /* Old English, etc. */
                    798: 
                    799: /* Font Weights */
                    800: #define FW_DONTCARE         0
                    801: #define FW_THIN             100
                    802: #define FW_EXTRALIGHT       200
                    803: #define FW_LIGHT            300
                    804: #define FW_NORMAL           400
                    805: #define FW_MEDIUM           500
                    806: #define FW_SEMIBOLD         600
                    807: #define FW_BOLD             700
                    808: #define FW_EXTRABOLD        800
                    809: #define FW_HEAVY            900
                    810: 
                    811: #define FW_ULTRALIGHT       FW_EXTRALIGHT
                    812: #define FW_REGULAR          FW_NORMAL
                    813: #define FW_DEMIBOLD         FW_SEMIBOLD
                    814: #define FW_ULTRABOLD        FW_EXTRABOLD
                    815: #define FW_BLACK            FW_HEAVY
                    816: 
1.1.1.2   root      817: #define PANOSE_COUNT               10
                    818: #define PAN_FAMILYTYPE_INDEX        0
                    819: #define PAN_SERIFSTYLE_INDEX        1
                    820: #define PAN_WEIGHT_INDEX            2
                    821: #define PAN_PROPORTION_INDEX        3
                    822: #define PAN_CONTRAST_INDEX          4
                    823: #define PAN_STROKEVARIATION_INDEX   5
                    824: #define PAN_ARMSTYLE_INDEX          6
                    825: #define PAN_LETTERFORM_INDEX        7
                    826: #define PAN_MIDLINE_INDEX           8
                    827: #define PAN_XHEIGHT_INDEX           9
                    828: 
                    829: #define PAN_CULTURE_LATIN           0
                    830: 
1.1.1.4 ! root      831: typedef struct tagPANOSE
        !           832: {
        !           833:     BYTE    bFamilyType;
        !           834:     BYTE    bSerifStyle;
        !           835:     BYTE    bWeight;
        !           836:     BYTE    bProportion;
        !           837:     BYTE    bContrast;
        !           838:     BYTE    bStrokeVariation;
        !           839:     BYTE    bArmStyle;
        !           840:     BYTE    bLetterform;
        !           841:     BYTE    bMidline;
        !           842:     BYTE    bXHeight;
        !           843: } PANOSE, * LPPANOSE;
1.1       root      844: 
1.1.1.2   root      845: #define PAN_ANY                         0 /* Any                            */
                    846: #define PAN_NO_FIT                      1 /* No Fit                         */
1.1       root      847: 
1.1.1.2   root      848: #define PAN_FAMILY_TEXT_DISPLAY         2 /* Text and Display               */
                    849: #define PAN_FAMILY_SCRIPT               3 /* Script                         */
                    850: #define PAN_FAMILY_DECORATIVE           4 /* Decorative                     */
                    851: #define PAN_FAMILY_PICTORIAL            5 /* Pictorial                      */
                    852: 
                    853: #define PAN_SERIF_COVE                  2 /* Cove                           */
                    854: #define PAN_SERIF_OBTUSE_COVE           3 /* Obtuse Cove                    */
                    855: #define PAN_SERIF_SQUARE_COVE           4 /* Square Cove                    */
                    856: #define PAN_SERIF_OBTUSE_SQUARE_COVE    5 /* Obtuse Square Cove             */
                    857: #define PAN_SERIF_SQUARE                6 /* Square                         */
                    858: #define PAN_SERIF_THIN                  7 /* Thin                           */
                    859: #define PAN_SERIF_BONE                  8 /* Bone                           */
                    860: #define PAN_SERIF_EXAGGERATED           9 /* Exaggerated                    */
                    861: #define PAN_SERIF_TRIANGLE             10 /* Triangle                       */
                    862: #define PAN_SERIF_NORMAL_SANS          11 /* Normal Sans                    */
                    863: #define PAN_SERIF_OBTUSE_SANS          12 /* Obtuse Sans                    */
                    864: #define PAN_SERIF_PERP_SANS            13 /* Prep Sans                      */
                    865: #define PAN_SERIF_FLARED               14 /* Flared                         */
                    866: #define PAN_SERIF_ROUNDED              15 /* Rounded                        */
                    867: 
                    868: #define PAN_WEIGHT_VERY_LIGHT           2 /* Very Light                     */
                    869: #define PAN_WEIGHT_LIGHT                3 /* Light                          */
                    870: #define PAN_WEIGHT_THIN                 4 /* Thin                           */
                    871: #define PAN_WEIGHT_BOOK                 5 /* Book                           */
                    872: #define PAN_WEIGHT_MEDIUM               6 /* Medium                         */
                    873: #define PAN_WEIGHT_DEMI                 7 /* Demi                           */
                    874: #define PAN_WEIGHT_BOLD                 8 /* Bold                           */
                    875: #define PAN_WEIGHT_HEAVY                9 /* Heavy                          */
                    876: #define PAN_WEIGHT_BLACK               10 /* Black                          */
                    877: #define PAN_WEIGHT_NORD                11 /* Nord                           */
                    878: 
                    879: #define PAN_PROP_OLD_STYLE              2 /* Old Style                      */
                    880: #define PAN_PROP_MODERN                 3 /* Modern                         */
                    881: #define PAN_PROP_EVEN_WIDTH             4 /* Even Width                     */
                    882: #define PAN_PROP_EXPANDED               5 /* Expanded                       */
                    883: #define PAN_PROP_CONDENSED              6 /* Condensed                      */
                    884: #define PAN_PROP_VERY_EXPANDED          7 /* Very Expanded                  */
                    885: #define PAN_PROP_VERY_CONDENSED         8 /* Very Condensed                 */
                    886: #define PAN_PROP_MONOSPACED             9 /* Monospaced                     */
                    887: 
                    888: #define PAN_CONTRAST_NONE               2 /* None                           */
                    889: #define PAN_CONTRAST_VERY_LOW           3 /* Very Low                       */
                    890: #define PAN_CONTRAST_LOW                4 /* Low                            */
                    891: #define PAN_CONTRAST_MEDIUM_LOW         5 /* Medium Low                     */
                    892: #define PAN_CONTRAST_MEDIUM             6 /* Medium                         */
                    893: #define PAN_CONTRAST_MEDIUM_HIGH        7 /* Mediim High                    */
                    894: #define PAN_CONTRAST_HIGH               8 /* High                           */
                    895: #define PAN_CONTRAST_VERY_HIGH          9 /* Very High                      */
                    896: 
                    897: #define PAN_STROKE_GRADUAL_DIAG         2 /* Gradual/Diagonal               */
                    898: #define PAN_STROKE_GRADUAL_TRAN         3 /* Gradual/Transitional           */
                    899: #define PAN_STROKE_GRADUAL_VERT         4 /* Gradual/Vertical               */
                    900: #define PAN_STROKE_GRADUAL_HORZ         5 /* Gradual/Horizontal             */
                    901: #define PAN_STROKE_RAPID_VERT           6 /* Rapid/Vertical                 */
                    902: #define PAN_STROKE_RAPID_HORZ           7 /* Rapid/Horizontal               */
                    903: #define PAN_STROKE_INSTANT_VERT         8 /* Instant/Vertical               */
                    904: 
                    905: #define PAN_STRAIGHT_ARMS_HORZ          2 /* Straight Arms/Horizontal       */
                    906: #define PAN_STRAIGHT_ARMS_WEDGE         3 /* Straight Arms/Wedge            */
                    907: #define PAN_STRAIGHT_ARMS_VERT          4 /* Straight Arms/Vertical         */
                    908: #define PAN_STRAIGHT_ARMS_SINGLE_SERIF  5 /* Straight Arms/Single-Serif     */
                    909: #define PAN_STRAIGHT_ARMS_DOUBLE_SERIF  6 /* Straight Arms/Double-Serif     */
                    910: #define PAN_BENT_ARMS_HORZ              7 /* Non-Straight Arms/Horizontal   */
                    911: #define PAN_BENT_ARMS_WEDGE             8 /* Non-Straight Arms/Wedge        */
                    912: #define PAN_BENT_ARMS_VERT              9 /* Non-Straight Arms/Vertical     */
                    913: #define PAN_BENT_ARMS_SINGLE_SERIF     10 /* Non-Straight Arms/Single-Serif */
                    914: #define PAN_BENT_ARMS_DOUBLE_SERIF     11 /* Non-Straight Arms/Double-Serif */
                    915: 
                    916: #define PAN_LETT_NORMAL_CONTACT         2 /* Normal/Contact                 */
                    917: #define PAN_LETT_NORMAL_WEIGHTED        3 /* Normal/Weighted                */
                    918: #define PAN_LETT_NORMAL_BOXED           4 /* Normal/Boxed                   */
                    919: #define PAN_LETT_NORMAL_FLATTENED       5 /* Normal/Flattened               */
                    920: #define PAN_LETT_NORMAL_ROUNDED         6 /* Normal/Rounded                 */
                    921: #define PAN_LETT_NORMAL_OFF_CENTER      7 /* Normal/Off Center              */
                    922: #define PAN_LETT_NORMAL_SQUARE          8 /* Normal/Square                  */
                    923: #define PAN_LETT_OBLIQUE_CONTACT        9 /* Oblique/Contact                */
                    924: #define PAN_LETT_OBLIQUE_WEIGHTED      10 /* Oblique/Weighted               */
                    925: #define PAN_LETT_OBLIQUE_BOXED         11 /* Oblique/Boxed                  */
                    926: #define PAN_LETT_OBLIQUE_FLATTENED     12 /* Oblique/Flattened              */
                    927: #define PAN_LETT_OBLIQUE_ROUNDED       13 /* Oblique/Rounded                */
                    928: #define PAN_LETT_OBLIQUE_OFF_CENTER    14 /* Oblique/Off Center             */
                    929: #define PAN_LETT_OBLIQUE_SQUARE        15 /* Oblique/Square                 */
                    930: 
                    931: #define PAN_MIDLINE_STANDARD_TRIMMED    2 /* Standard/Trimmed               */
                    932: #define PAN_MIDLINE_STANDARD_POINTED    3 /* Standard/Pointed               */
                    933: #define PAN_MIDLINE_STANDARD_SERIFED    4 /* Standard/Serifed               */
                    934: #define PAN_MIDLINE_HIGH_TRIMMED        5 /* High/Trimmed                   */
                    935: #define PAN_MIDLINE_HIGH_POINTED        6 /* High/Pointed                   */
                    936: #define PAN_MIDLINE_HIGH_SERIFED        7 /* High/Serifed                   */
                    937: #define PAN_MIDLINE_CONSTANT_TRIMMED    8 /* Constant/Trimmed               */
                    938: #define PAN_MIDLINE_CONSTANT_POINTED    9 /* Constant/Pointed               */
                    939: #define PAN_MIDLINE_CONSTANT_SERIFED   10 /* Constant/Serifed               */
                    940: #define PAN_MIDLINE_LOW_TRIMMED        11 /* Low/Trimmed                    */
                    941: #define PAN_MIDLINE_LOW_POINTED        12 /* Low/Pointed                    */
                    942: #define PAN_MIDLINE_LOW_SERIFED        13 /* Low/Serifed                    */
                    943: 
                    944: #define PAN_XHEIGHT_CONSTANT_SMALL      2 /* Constant/Small                 */
                    945: #define PAN_XHEIGHT_CONSTANT_STD        3 /* Constant/Standard              */
                    946: #define PAN_XHEIGHT_CONSTANT_LARGE      4 /* Constant/Large                 */
                    947: #define PAN_XHEIGHT_DUCKING_SMALL       5 /* Ducking/Small                  */
                    948: #define PAN_XHEIGHT_DUCKING_STD         6 /* Ducking/Standard               */
                    949: #define PAN_XHEIGHT_DUCKING_LARGE       7 /* Ducking/Large                  */
1.1       root      950: 
                    951: 
1.1.1.2   root      952: #define ELF_VENDOR_SIZE     4
1.1       root      953: 
1.1.1.2   root      954: /* The extended logical font       */
                    955: /* An extension of the ENUMLOGFONT */
1.1       root      956: 
                    957: typedef struct tagEXTLOGFONTA {
                    958:     LOGFONTA    elfLogFont;
1.1.1.2   root      959:     BYTE        elfFullName[LF_FULLFACESIZE];
                    960:     BYTE        elfStyle[LF_FACESIZE];
1.1.1.3   root      961:     DWORD       elfVersion;     /* 0 for the first release of NT */
                    962:     DWORD       elfStyleSize;
                    963:     DWORD       elfMatch;
                    964:     DWORD       elfReserved;
1.1.1.2   root      965:     BYTE        elfVendorId[ELF_VENDOR_SIZE];
1.1.1.3   root      966:     DWORD       elfCulture;     /* 0 for Latin                   */
                    967:     PANOSE      elfPanose;
1.1.1.2   root      968: } EXTLOGFONTA, *PEXTLOGFONTA, NEAR *NPEXTLOGFONTA, FAR *LPEXTLOGFONTA;
1.1       root      969: typedef struct tagEXTLOGFONTW {
                    970:     LOGFONTW    elfLogFont;
1.1.1.2   root      971:     WCHAR       elfFullName[LF_FULLFACESIZE];
                    972:     WCHAR       elfStyle[LF_FACESIZE];
1.1.1.3   root      973:     DWORD       elfVersion;     /* 0 for the first release of NT */
                    974:     DWORD       elfStyleSize;
                    975:     DWORD       elfMatch;
                    976:     DWORD       elfReserved;
1.1.1.2   root      977:     BYTE        elfVendorId[ELF_VENDOR_SIZE];
1.1.1.3   root      978:     DWORD       elfCulture;     /* 0 for Latin                   */
                    979:     PANOSE      elfPanose;
1.1.1.2   root      980: } EXTLOGFONTW, *PEXTLOGFONTW, NEAR *NPEXTLOGFONTW, FAR *LPEXTLOGFONTW;
1.1       root      981: #ifdef UNICODE
1.1.1.4 ! root      982: typedef EXTLOGFONTW EXTLOGFONT;
        !           983: typedef PEXTLOGFONTW PEXTLOGFONT;
        !           984: typedef NPEXTLOGFONTW NPEXTLOGFONT;
        !           985: typedef LPEXTLOGFONTW LPEXTLOGFONT;
        !           986: #else
        !           987: typedef EXTLOGFONTA EXTLOGFONT;
        !           988: typedef PEXTLOGFONTA PEXTLOGFONT;
        !           989: typedef NPEXTLOGFONTA NPEXTLOGFONT;
        !           990: typedef LPEXTLOGFONTA LPEXTLOGFONT;
1.1       root      991: #endif // UNICODE
                    992: 
                    993: 
1.1.1.2   root      994: #define ELF_VERSION         0
                    995: #define ELF_CULTURE_LATIN   0
1.1       root      996: 
                    997: /* EnumFonts Masks */
                    998: #define RASTER_FONTTYPE     0x0001
1.1.1.2   root      999: #define DEVICE_FONTTYPE     0x002
                   1000: #define TRUETYPE_FONTTYPE   0x004
1.1       root     1001: 
1.1.1.4 ! root     1002: #define RGB(r,g,b)          ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
1.1       root     1003: #define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
1.1.1.2   root     1004: #define PALETTEINDEX(i)     ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
1.1       root     1005: 
                   1006: /* palette entry flags */
                   1007: 
                   1008: #define PC_RESERVED     0x01    /* palette index used for animation */
                   1009: #define PC_EXPLICIT     0x02    /* palette index is explicit to device */
                   1010: #define PC_NOCOLLAPSE   0x04    /* do not match color to system palette */
                   1011: 
                   1012: #define GetRValue(rgb)      ((BYTE)(rgb))
                   1013: #define GetGValue(rgb)      ((BYTE)(((WORD)(rgb)) >> 8))
                   1014: #define GetBValue(rgb)      ((BYTE)((rgb)>>16))
                   1015: 
                   1016: /* Background Modes */
                   1017: #define TRANSPARENT         1
                   1018: #define OPAQUE              2
                   1019: #define BKMODE_LAST         2
                   1020: 
1.1.1.4 ! root     1021: /* Graphics Modes */
        !          1022: 
        !          1023: #define GM_COMPATIBLE       1
        !          1024: #define GM_ADVANCED         2
        !          1025: #define GM_LAST             2
        !          1026: 
1.1       root     1027: /* PolyDraw and GetPath point types */
                   1028: #define PT_CLOSEFIGURE      0x01
                   1029: #define PT_LINETO           0x02
                   1030: #define PT_BEZIERTO         0x04
                   1031: #define PT_MOVETO           0x06
                   1032: 
                   1033: /* Mapping Modes */
                   1034: #define MM_TEXT             1
                   1035: #define MM_LOMETRIC         2
                   1036: #define MM_HIMETRIC         3
                   1037: #define MM_LOENGLISH        4
                   1038: #define MM_HIENGLISH        5
                   1039: #define MM_TWIPS            6
                   1040: #define MM_ISOTROPIC        7
1.1.1.2   root     1041: #define MM_ANISOTROPIC      8
1.1       root     1042: 
                   1043: /* Min and Max Mapping Mode values */
                   1044: #define MM_MIN              MM_TEXT
                   1045: #define MM_MAX              MM_ANISOTROPIC
                   1046: #define MM_MAX_FIXEDSCALE   MM_TWIPS
                   1047: 
                   1048: /* Coordinate Modes */
                   1049: #define ABSOLUTE            1
                   1050: #define RELATIVE            2
                   1051: 
                   1052: /* Stock Logical Objects */
                   1053: #define WHITE_BRUSH         0
                   1054: #define LTGRAY_BRUSH        1
                   1055: #define GRAY_BRUSH          2
                   1056: #define DKGRAY_BRUSH        3
                   1057: #define BLACK_BRUSH         4
                   1058: #define NULL_BRUSH          5
                   1059: #define HOLLOW_BRUSH        NULL_BRUSH
                   1060: #define WHITE_PEN           6
                   1061: #define BLACK_PEN           7
                   1062: #define NULL_PEN            8
                   1063: #define OEM_FIXED_FONT      10
                   1064: #define ANSI_FIXED_FONT     11
                   1065: #define ANSI_VAR_FONT       12
                   1066: #define SYSTEM_FONT         13
                   1067: #define DEVICE_DEFAULT_FONT 14
                   1068: #define DEFAULT_PALETTE     15
                   1069: #define SYSTEM_FIXED_FONT   16
                   1070: #define STOCK_LAST          16
                   1071: 
1.1.1.2   root     1072: #define CLR_INVALID     0xFFFFFFFF
1.1       root     1073: 
                   1074: /* Brush Styles */
                   1075: #define BS_SOLID            0
                   1076: #define BS_NULL             1
                   1077: #define BS_HOLLOW           BS_NULL
                   1078: #define BS_HATCHED          2
                   1079: #define BS_PATTERN          3
                   1080: #define BS_INDEXED          4
                   1081: #define BS_DIBPATTERN       5
1.1.1.2   root     1082: #define BS_DIBPATTERNPT     6
1.1.1.4 ! root     1083: #define BS_PATTERN8X8       7
        !          1084: #define BS_DIBPATTERN8X8    8
1.1       root     1085: 
                   1086: /* Hatch Styles */
                   1087: #define HS_HORIZONTAL       0       /* ----- */
                   1088: #define HS_VERTICAL         1       /* ||||| */
                   1089: #define HS_FDIAGONAL        2       /* \\\\\ */
                   1090: #define HS_BDIAGONAL        3       /* ///// */
                   1091: #define HS_CROSS            4       /* +++++ */
                   1092: #define HS_DIAGCROSS        5       /* xxxxx */
                   1093: #define HS_FDIAGONAL1       6
                   1094: #define HS_BDIAGONAL1       7
                   1095: #define HS_SOLID            8
                   1096: #define HS_DENSE1           9
                   1097: #define HS_DENSE2           10
                   1098: #define HS_DENSE3           11
                   1099: #define HS_DENSE4           12
                   1100: #define HS_DENSE5           13
                   1101: #define HS_DENSE6           14
                   1102: #define HS_DENSE7           15
                   1103: #define HS_DENSE8           16
                   1104: #define HS_NOSHADE          17
                   1105: #define HS_HALFTONE         18
1.1.1.4 ! root     1106: #define HS_SOLIDCLR         19
        !          1107: #define HS_DITHEREDCLR      20
        !          1108: #define HS_SOLIDTEXTCLR     21
        !          1109: #define HS_DITHEREDTEXTCLR  22
        !          1110: #define HS_SOLIDBKCLR       23
        !          1111: #define HS_DITHEREDBKCLR    24
        !          1112: #define HS_API_MAX          25
1.1       root     1113: 
                   1114: /* Pen Styles */
                   1115: #define PS_SOLID            0
                   1116: #define PS_DASH             1       /* -------  */
                   1117: #define PS_DOT              2       /* .......  */
                   1118: #define PS_DASHDOT          3       /* _._._._  */
                   1119: #define PS_DASHDOTDOT       4       /* _.._.._  */
                   1120: #define PS_NULL             5
                   1121: #define PS_INSIDEFRAME      6
1.1.1.2   root     1122: #define PS_USERSTYLE        7
                   1123: #define PS_ALTERNATE        8
                   1124: #define PS_STYLE_MASK       0x0000000F
                   1125: 
                   1126: #define PS_ENDCAP_ROUND     0x00000000
                   1127: #define PS_ENDCAP_SQUARE    0x00000100
                   1128: #define PS_ENDCAP_FLAT      0x00000200
                   1129: #define PS_ENDCAP_MASK      0x00000F00
                   1130: 
                   1131: #define PS_JOIN_ROUND       0x00000000
                   1132: #define PS_JOIN_BEVEL       0x00001000
                   1133: #define PS_JOIN_MITER       0x00002000
                   1134: #define PS_JOIN_MASK        0x0000F000
                   1135: 
                   1136: #define PS_COSMETIC         0x00000000
                   1137: #define PS_GEOMETRIC        0x00010000
                   1138: #define PS_TYPE_MASK        0x000F0000
                   1139: 
                   1140: #define AD_COUNTERCLOCKWISE 1
                   1141: #define AD_CLOCKWISE        2
1.1       root     1142: 
                   1143: /* Device Parameters for GetDeviceCaps() */
                   1144: #define DRIVERVERSION 0     /* Device driver version                    */
                   1145: #define TECHNOLOGY    2     /* Device classification                    */
                   1146: #define HORZSIZE      4     /* Horizontal size in millimeters           */
                   1147: #define VERTSIZE      6     /* Vertical size in millimeters             */
                   1148: #define HORZRES       8     /* Horizontal width in pixels               */
                   1149: #define VERTRES       10    /* Vertical width in pixels                 */
                   1150: #define BITSPIXEL     12    /* Number of bits per pixel                 */
                   1151: #define PLANES        14    /* Number of planes                         */
                   1152: #define NUMBRUSHES    16    /* Number of brushes the device has         */
                   1153: #define NUMPENS       18    /* Number of pens the device has            */
                   1154: #define NUMMARKERS    20    /* Number of markers the device has         */
                   1155: #define NUMFONTS      22    /* Number of fonts the device has           */
                   1156: #define NUMCOLORS     24    /* Number of colors the device supports     */
                   1157: #define PDEVICESIZE   26    /* Size required for device descriptor      */
                   1158: #define CURVECAPS     28    /* Curve capabilities                       */
                   1159: #define LINECAPS      30    /* Line capabilities                        */
                   1160: #define POLYGONALCAPS 32    /* Polygonal capabilities                   */
                   1161: #define TEXTCAPS      34    /* Text capabilities                        */
                   1162: #define CLIPCAPS      36    /* Clipping capabilities                    */
                   1163: #define RASTERCAPS    38    /* Bitblt capabilities                      */
                   1164: #define ASPECTX       40    /* Length of the X leg                      */
                   1165: #define ASPECTY       42    /* Length of the Y leg                      */
                   1166: #define ASPECTXY      44    /* Length of the hypotenuse                 */
                   1167: 
                   1168: #define LOGPIXELSX    88    /* Logical pixels/inch in X                 */
                   1169: #define LOGPIXELSY    90    /* Logical pixels/inch in Y                 */
                   1170: 
1.1.1.2   root     1171: #define SIZEPALETTE  104    /* Number of entries in physical palette    */
1.1       root     1172: #define NUMRESERVED  106    /* Number of reserved entries in palette    */
                   1173: #define COLORRES     108    /* Actual color resolution                  */
                   1174: 
                   1175: 
                   1176: // Printing related DeviceCaps. These replace the appropriate Escapes
                   1177: 
                   1178: #define PHYSICALWIDTH   110 // Physical Width in device units
                   1179: #define PHYSICALHEIGHT  111 // Physical Height in device units
                   1180: #define PHYSICALOFFSETX 112 // Physical Printable Area x margin
                   1181: #define PHYSICALOFFSETY 113 // Physical Printable Area y margin
                   1182: #define SCALINGFACTORX  114 // Scaling factor x
                   1183: #define SCALINGFACTORY  115 // Scaling factor y
                   1184: 
                   1185: #ifndef NOGDICAPMASKS
                   1186: 
                   1187: /* Device Capability Masks: */
                   1188: 
                   1189: /* Device Technologies */
                   1190: #define DT_PLOTTER          0   /* Vector plotter                   */
                   1191: #define DT_RASDISPLAY       1   /* Raster display                   */
                   1192: #define DT_RASPRINTER       2   /* Raster printer                   */
                   1193: #define DT_RASCAMERA        3   /* Raster camera                    */
                   1194: #define DT_CHARSTREAM       4   /* Character-stream, PLP            */
                   1195: #define DT_METAFILE         5   /* Metafile, VDM                    */
                   1196: #define DT_DISPFILE         6   /* Display-file                     */
                   1197: 
                   1198: /* Curve Capabilities */
                   1199: #define CC_NONE             0   /* Curves not supported             */
                   1200: #define CC_CIRCLES          1   /* Can do circles                   */
                   1201: #define CC_PIE              2   /* Can do pie wedges                */
                   1202: #define CC_CHORD            4   /* Can do chord arcs                */
                   1203: #define CC_ELLIPSES         8   /* Can do ellipese                  */
                   1204: #define CC_WIDE             16  /* Can do wide lines                */
                   1205: #define CC_STYLED           32  /* Can do styled lines              */
                   1206: #define CC_WIDESTYLED       64  /* Can do wide styled lines         */
                   1207: #define CC_INTERIORS        128 /* Can do interiors                 */
1.1.1.2   root     1208: #define CC_ROUNDRECT        256 /*                                  */
1.1       root     1209: 
                   1210: /* Line Capabilities */
                   1211: #define LC_NONE             0   /* Lines not supported              */
                   1212: #define LC_POLYLINE         2   /* Can do polylines                 */
                   1213: #define LC_MARKER           4   /* Can do markers                   */
                   1214: #define LC_POLYMARKER       8   /* Can do polymarkers               */
                   1215: #define LC_WIDE             16  /* Can do wide lines                */
                   1216: #define LC_STYLED           32  /* Can do styled lines              */
                   1217: #define LC_WIDESTYLED       64  /* Can do wide styled lines         */
                   1218: #define LC_INTERIORS        128 /* Can do interiors                 */
                   1219: 
                   1220: /* Polygonal Capabilities */
                   1221: #define PC_NONE             0   /* Polygonals not supported         */
                   1222: #define PC_POLYGON          1   /* Can do polygons                  */
                   1223: #define PC_RECTANGLE        2   /* Can do rectangles                */
                   1224: #define PC_WINDPOLYGON      4   /* Can do winding polygons          */
                   1225: #define PC_TRAPEZOID        4   /* Can do trapezoids                */
                   1226: #define PC_SCANLINE         8   /* Can do scanlines                 */
                   1227: #define PC_WIDE             16  /* Can do wide borders              */
                   1228: #define PC_STYLED           32  /* Can do styled borders            */
                   1229: #define PC_WIDESTYLED       64  /* Can do wide styled borders       */
                   1230: #define PC_INTERIORS        128 /* Can do interiors                 */
                   1231: 
                   1232: /* Polygonal Capabilities */
                   1233: #define CP_NONE             0   /* No clipping of output            */
                   1234: #define CP_RECTANGLE        1   /* Output clipped to rects          */
1.1.1.2   root     1235: #define CP_REGION           2   /*                                  */
1.1       root     1236: 
                   1237: /* Text Capabilities */
1.1.1.3   root     1238: #define TC_OP_CHARACTER     0x00000001  /* Can do OutputPrecision   CHARACTER      */
                   1239: #define TC_OP_STROKE        0x00000002  /* Can do OutputPrecision   STROKE         */
                   1240: #define TC_CP_STROKE        0x00000004  /* Can do ClipPrecision     STROKE         */
                   1241: #define TC_CR_90            0x00000008  /* Can do CharRotAbility    90             */
                   1242: #define TC_CR_ANY           0x00000010  /* Can do CharRotAbility    ANY            */
                   1243: #define TC_SF_X_YINDEP      0x00000020  /* Can do ScaleFreedom      X_YINDEPENDENT */
                   1244: #define TC_SA_DOUBLE        0x00000040  /* Can do ScaleAbility      DOUBLE         */
                   1245: #define TC_SA_INTEGER       0x00000080  /* Can do ScaleAbility      INTEGER        */
                   1246: #define TC_SA_CONTIN        0x00000100  /* Can do ScaleAbility      CONTINUOUS     */
                   1247: #define TC_EA_DOUBLE        0x00000200  /* Can do EmboldenAbility   DOUBLE         */
                   1248: #define TC_IA_ABLE          0x00000400  /* Can do ItalisizeAbility  ABLE           */
                   1249: #define TC_UA_ABLE          0x00000800  /* Can do UnderlineAbility  ABLE           */
                   1250: #define TC_SO_ABLE          0x00001000  /* Can do StrikeOutAbility  ABLE           */
                   1251: #define TC_RA_ABLE          0x00002000  /* Can do RasterFontAble    ABLE           */
                   1252: #define TC_VA_ABLE          0x00004000  /* Can do VectorFontAble    ABLE           */
                   1253: #define TC_RESERVED         0x00008000
                   1254: #define TC_SCROLLBLT        0x00010000  /* do text scroll with blt                 */
1.1       root     1255: 
                   1256: #endif /* NOGDICAPMASKS */
                   1257: 
                   1258: /* Raster Capabilities */
1.1.1.2   root     1259: #define RC_NONE
1.1       root     1260: #define RC_BITBLT           1       /* Can do standard BLT.             */
                   1261: #define RC_BANDING          2       /* Device requires banding support  */
                   1262: #define RC_SCALING          4       /* Device requires scaling support  */
                   1263: #define RC_BITMAP64         8       /* Device can support >64K bitmap   */
                   1264: #define RC_GDI20_OUTPUT     0x0010      /* has 2.0 output calls         */
1.1.1.2   root     1265: #define RC_GDI20_STATE      0x0020
                   1266: #define RC_SAVEBITMAP       0x0040
1.1       root     1267: #define RC_DI_BITMAP        0x0080      /* supports DIB to memory       */
                   1268: #define RC_PALETTE          0x0100      /* supports a palette           */
                   1269: #define RC_DIBTODEV         0x0200      /* supports DIBitsToDevice      */
                   1270: #define RC_BIGFONT          0x0400      /* supports >64K fonts          */
                   1271: #define RC_STRETCHBLT       0x0800      /* supports StretchBlt          */
                   1272: #define RC_FLOODFILL        0x1000      /* supports FloodFill           */
                   1273: #define RC_STRETCHDIB       0x2000      /* supports StretchDIBits       */
1.1.1.2   root     1274: #define RC_OP_DX_OUTPUT     0x4000
                   1275: #define RC_DEVBITS          0x8000
1.1       root     1276: 
                   1277: /* DIB color table identifiers */
                   1278: 
1.1.1.2   root     1279: #define DIB_RGB_COLORS      0 /* color table in RGBs */
                   1280: #define DIB_PAL_COLORS      1 /* color table in palette indices */
                   1281: #define DIB_PAL_INDICES     2 /* No color table indices into surf palette */
                   1282: #define DIB_PAL_PHYSINDICES 2 /* No color table indices into surf palette */
                   1283: #define DIB_PAL_LOGINDICES  4 /* No color table indices into DC palette */
1.1       root     1284: 
                   1285: /* constants for Get/SetSystemPaletteUse() */
                   1286: 
                   1287: #define SYSPAL_ERROR    0
                   1288: #define SYSPAL_STATIC   1
                   1289: #define SYSPAL_NOSTATIC 2
                   1290: 
                   1291: /* constants for CreateDIBitmap */
1.1.1.3   root     1292: #define CBM_CREATEDIB   0x02L   /* create DIB bitmap */
1.1       root     1293: #define CBM_INIT        0x04L   /* initialize bitmap */
                   1294: 
                   1295: /* ExtFloodFill style flags */
                   1296: #define  FLOODFILLBORDER   0
                   1297: #define  FLOODFILLSURFACE  1
                   1298: 
1.1.1.4 ! root     1299: /* size of a device name string */
        !          1300: #define CCHDEVICENAME 32
1.1.1.2   root     1301: 
1.1.1.4 ! root     1302: /* size of a form name string */
        !          1303: #define CCHFORMNAME 32
1.1.1.2   root     1304: 
                   1305: typedef struct _devicemodeA {
1.1.1.4 ! root     1306:     BYTE   dmDeviceName[CCHDEVICENAME];
1.1.1.2   root     1307:     WORD dmSpecVersion;
                   1308:     WORD dmDriverVersion;
                   1309:     WORD dmSize;
                   1310:     WORD dmDriverExtra;
                   1311:     DWORD dmFields;
                   1312:     short dmOrientation;
                   1313:     short dmPaperSize;
                   1314:     short dmPaperLength;
                   1315:     short dmPaperWidth;
                   1316:     short dmScale;
                   1317:     short dmCopies;
                   1318:     short dmDefaultSource;
                   1319:     short dmPrintQuality;
                   1320:     short dmColor;
                   1321:     short dmDuplex;
1.1.1.3   root     1322:     short dmYResolution;
                   1323:     short dmTTOption;
1.1.1.2   root     1324:     short dmCollate;
1.1.1.4 ! root     1325:     BYTE   dmFormName[CCHFORMNAME];
        !          1326:     WORD   dmUnusedPadding;
        !          1327:     DWORD  dmBitsPerPel;
1.1.1.2   root     1328:     DWORD  dmPelsWidth;
                   1329:     DWORD  dmPelsHeight;
1.1.1.4 ! root     1330:     DWORD  dmDisplayFlags;
        !          1331:     DWORD  dmDisplayFrequency;
1.1.1.2   root     1332: } DEVMODEA, *PDEVMODEA, *NPDEVMODEA, *LPDEVMODEA;
                   1333: typedef struct _devicemodeW {
1.1.1.4 ! root     1334:     WCHAR  dmDeviceName[CCHDEVICENAME];
1.1       root     1335:     WORD dmSpecVersion;
                   1336:     WORD dmDriverVersion;
                   1337:     WORD dmSize;
                   1338:     WORD dmDriverExtra;
                   1339:     DWORD dmFields;
                   1340:     short dmOrientation;
                   1341:     short dmPaperSize;
                   1342:     short dmPaperLength;
                   1343:     short dmPaperWidth;
                   1344:     short dmScale;
                   1345:     short dmCopies;
                   1346:     short dmDefaultSource;
                   1347:     short dmPrintQuality;
                   1348:     short dmColor;
                   1349:     short dmDuplex;
1.1.1.3   root     1350:     short dmYResolution;
                   1351:     short dmTTOption;
1.1.1.2   root     1352:     short dmCollate;
1.1.1.4 ! root     1353:     WCHAR  dmFormName[CCHFORMNAME];
        !          1354:     WORD   dmUnusedPadding;
        !          1355:     DWORD  dmBitsPerPel;
1.1.1.2   root     1356:     DWORD  dmPelsWidth;
                   1357:     DWORD  dmPelsHeight;
1.1.1.4 ! root     1358:     DWORD  dmDisplayFlags;
        !          1359:     DWORD  dmDisplayFrequency;
1.1.1.2   root     1360: } DEVMODEW, *PDEVMODEW, *NPDEVMODEW, *LPDEVMODEW;
                   1361: #ifdef UNICODE
1.1.1.4 ! root     1362: typedef DEVMODEW DEVMODE;
        !          1363: typedef PDEVMODEW PDEVMODE;
        !          1364: typedef NPDEVMODEW NPDEVMODE;
        !          1365: typedef LPDEVMODEW LPDEVMODE;
        !          1366: #else
        !          1367: typedef DEVMODEA DEVMODE;
        !          1368: typedef PDEVMODEA PDEVMODE;
        !          1369: typedef NPDEVMODEA NPDEVMODE;
        !          1370: typedef LPDEVMODEA LPDEVMODE;
1.1.1.2   root     1371: #endif // UNICODE
1.1       root     1372: 
1.1.1.4 ! root     1373: /* current version of specification */
        !          1374: #define DM_SPECVERSION 0x320
        !          1375: 
        !          1376: /* field selection bits */
        !          1377: #define DM_ORIENTATION      0x0000001L
        !          1378: #define DM_PAPERSIZE        0x0000002L
        !          1379: #define DM_PAPERLENGTH      0x0000004L
        !          1380: #define DM_PAPERWIDTH       0x0000008L
        !          1381: #define DM_SCALE            0x0000010L
        !          1382: #define DM_COPIES           0x0000100L
        !          1383: #define DM_DEFAULTSOURCE    0x0000200L
        !          1384: #define DM_PRINTQUALITY     0x0000400L
        !          1385: #define DM_COLOR            0x0000800L
        !          1386: #define DM_DUPLEX           0x0001000L
        !          1387: #define DM_YRESOLUTION      0x0002000L
        !          1388: #define DM_TTOPTION         0x0004000L
        !          1389: #define DM_COLLATE          0x0008000L
        !          1390: #define DM_FORMNAME         0x0010000L
        !          1391: 
        !          1392: /* orientation selections */
        !          1393: #define DMORIENT_PORTRAIT   1
        !          1394: #define DMORIENT_LANDSCAPE  2
        !          1395: 
        !          1396: /* paper selections */
        !          1397: #define DMPAPER_FIRST       DMPAPER_LETTER
        !          1398: #define DMPAPER_LETTER      1           /* Letter 8 1/2 x 11 in               */
        !          1399: #define DMPAPER_LETTERSMALL 2           /* Letter Small 8 1/2 x 11 in         */
        !          1400: #define DMPAPER_TABLOID     3           /* Tabloid 11 x 17 in                 */
        !          1401: #define DMPAPER_LEDGER      4           /* Ledger 17 x 11 in                  */
        !          1402: #define DMPAPER_LEGAL       5           /* Legal 8 1/2 x 14 in                */
        !          1403: #define DMPAPER_STATEMENT   6           /* Statement 5 1/2 x 8 1/2 in         */
        !          1404: #define DMPAPER_EXECUTIVE   7           /* Executive 7 1/4 x 10 1/2 in        */
        !          1405: #define DMPAPER_A3          8           /* A3 297 x 420 mm                    */
        !          1406: #define DMPAPER_A4          9           /* A4 210 x 297 mm                    */
        !          1407: #define DMPAPER_A4SMALL     10          /* A4 Small 210 x 297 mm              */
        !          1408: #define DMPAPER_A5          11          /* A5 148 x 210 mm                    */
        !          1409: #define DMPAPER_B4          12          /* B4 250 x 354                       */
        !          1410: #define DMPAPER_B5          13          /* B5 182 x 257 mm                    */
        !          1411: #define DMPAPER_FOLIO       14          /* Folio 8 1/2 x 13 in                */
        !          1412: #define DMPAPER_QUARTO      15          /* Quarto 215 x 275 mm                */
        !          1413: #define DMPAPER_10X14       16          /* 10x14 in                           */
        !          1414: #define DMPAPER_11X17       17          /* 11x17 in                           */
        !          1415: #define DMPAPER_NOTE        18          /* Note 8 1/2 x 11 in                 */
        !          1416: #define DMPAPER_ENV_9       19          /* Envelope #9 3 7/8 x 8 7/8          */
        !          1417: #define DMPAPER_ENV_10      20          /* Envelope #10 4 1/8 x 9 1/2         */
        !          1418: #define DMPAPER_ENV_11      21          /* Envelope #11 4 1/2 x 10 3/8        */
        !          1419: #define DMPAPER_ENV_12      22          /* Envelope #12 4 \276 x 11           */
        !          1420: #define DMPAPER_ENV_14      23          /* Envelope #14 5 x 11 1/2            */
        !          1421: #define DMPAPER_CSHEET      24          /* C size sheet                       */
        !          1422: #define DMPAPER_DSHEET      25          /* D size sheet                       */
        !          1423: #define DMPAPER_ESHEET      26          /* E size sheet                       */
        !          1424: #define DMPAPER_ENV_DL      27          /* Envelope DL 110 x 220mm            */
        !          1425: #define DMPAPER_ENV_C5      28          /* Envelope C5 162 x 229 mm           */
        !          1426: #define DMPAPER_ENV_C3      29          /* Envelope C3  324 x 458 mm          */
        !          1427: #define DMPAPER_ENV_C4      30          /* Envelope C4  229 x 324 mm          */
        !          1428: #define DMPAPER_ENV_C6      31          /* Envelope C6  114 x 162 mm          */
        !          1429: #define DMPAPER_ENV_C65     32          /* Envelope C65 114 x 229 mm          */
        !          1430: #define DMPAPER_ENV_B4      33          /* Envelope B4  250 x 353 mm          */
        !          1431: #define DMPAPER_ENV_B5      34          /* Envelope B5  176 x 250 mm          */
        !          1432: #define DMPAPER_ENV_B6      35          /* Envelope B6  176 x 125 mm          */
        !          1433: #define DMPAPER_ENV_ITALY   36          /* Envelope 110 x 230 mm              */
        !          1434: #define DMPAPER_ENV_MONARCH 37          /* Envelope Monarch 3.875 x 7.5 in    */
        !          1435: #define DMPAPER_ENV_PERSONAL 38         /* 6 3/4 Envelope 3 5/8 x 6 1/2 in    */
        !          1436: #define DMPAPER_FANFOLD_US  39          /* US Std Fanfold 14 7/8 x 11 in      */
        !          1437: #define DMPAPER_FANFOLD_STD_GERMAN  40  /* German Std Fanfold 8 1/2 x 12 in   */
        !          1438: #define DMPAPER_FANFOLD_LGL_GERMAN  41  /* German Legal Fanfold 8 1/2 x 13 in */
        !          1439: 
        !          1440: #define DMPAPER_LAST        DMPAPER_FANFOLD_LGL_GERMAN
        !          1441: 
        !          1442: #define DMPAPER_USER        256
        !          1443: 
        !          1444: /* bin selections */
        !          1445: #define DMBIN_FIRST         DMBIN_UPPER
        !          1446: #define DMBIN_UPPER         1
        !          1447: #define DMBIN_ONLYONE       1
        !          1448: #define DMBIN_LOWER         2
        !          1449: #define DMBIN_MIDDLE        3
        !          1450: #define DMBIN_MANUAL        4
        !          1451: #define DMBIN_ENVELOPE      5
        !          1452: #define DMBIN_ENVMANUAL     6
        !          1453: #define DMBIN_AUTO          7
        !          1454: #define DMBIN_TRACTOR       8
        !          1455: #define DMBIN_SMALLFMT      9
        !          1456: #define DMBIN_LARGEFMT      10
        !          1457: #define DMBIN_LARGECAPACITY 11
        !          1458: #define DMBIN_CASSETTE      14
        !          1459: #define DMBIN_LAST          DMBIN_CASSETTE
        !          1460: 
        !          1461: #define DMBIN_USER          256     /* device specific bins start here */
        !          1462: 
        !          1463: /* print qualities */
        !          1464: #define DMRES_DRAFT         (-1)
        !          1465: #define DMRES_LOW           (-2)
        !          1466: #define DMRES_MEDIUM        (-3)
        !          1467: #define DMRES_HIGH          (-4)
        !          1468: 
        !          1469: /* color enable/disable for color printers */
        !          1470: #define DMCOLOR_MONOCHROME  1
        !          1471: #define DMCOLOR_COLOR       2
        !          1472: 
        !          1473: /* duplex enable */
        !          1474: #define DMDUP_SIMPLEX    1
        !          1475: #define DMDUP_VERTICAL   2
        !          1476: #define DMDUP_HORIZONTAL 3
        !          1477: 
        !          1478: /* TrueType options */
        !          1479: #define DMTT_BITMAP     1       /* print TT fonts as graphics */
        !          1480: #define DMTT_DOWNLOAD   2       /* download TT fonts as soft fonts */
        !          1481: #define DMTT_SUBDEV     3       /* substitute device fonts for TT fonts */
        !          1482: 
        !          1483: /* Collation selections */
        !          1484: #define DMCOLLATE_FALSE  0
        !          1485: #define DMCOLLATE_TRUE   1
        !          1486: 
        !          1487: /* DEVMODE dmDisplayFlags flags */
        !          1488: 
        !          1489: #define DM_GRAYSCALE  0x00000001
        !          1490: #define DM_INTERLACED 0x00000002
        !          1491: 
1.1       root     1492: /* GetRegionData/ExtCreateRegion */
                   1493: 
1.1.1.2   root     1494: #define RDH_RECTANGLES  1
1.1       root     1495: 
                   1496: typedef struct _RGNDATAHEADER {
                   1497:     DWORD   dwSize;
                   1498:     DWORD   iType;
                   1499:     DWORD   nCount;
1.1.1.2   root     1500:     DWORD   nRgnSize;
                   1501:     RECT    rcBound;
1.1       root     1502: } RGNDATAHEADER, *PRGNDATAHEADER;
                   1503: 
                   1504: typedef struct _RGNDATA {
                   1505:     RGNDATAHEADER   rdh;
1.1.1.2   root     1506:     char            Buffer[1];
1.1       root     1507: } RGNDATA, *PRGNDATA, NEAR *NPRGNDATA, FAR *LPRGNDATA;
                   1508: 
1.1.1.2   root     1509: 
                   1510: typedef struct _ABC {
                   1511:     int     abcA;
                   1512:     UINT    abcB;
                   1513:     int     abcC;
                   1514: } ABC, *PABC, NEAR *NPABC, FAR *LPABC;
                   1515: 
                   1516: typedef struct _ABCFLOAT {
                   1517:     FLOAT   abcfA;
                   1518:     FLOAT   abcfB;
                   1519:     FLOAT   abcfC;
                   1520: } ABCFLOAT, *PABCFLOAT, NEAR *NPABCFLOAT, FAR *LPABCFLOAT;
                   1521: 
                   1522: #ifndef NOTEXTMETRIC
                   1523: 
                   1524: typedef struct _OUTLINETEXTMETRICA {
                   1525:     UINT    otmSize;
                   1526:     TEXTMETRICA otmTextMetrics;
                   1527:     BYTE    otmFiller;
                   1528:     PANOSE  otmPanoseNumber;
                   1529:     UINT    otmfsSelection;
                   1530:     UINT    otmfsType;
1.1.1.4 ! root     1531:      int    otmsCharSlopeRise;
        !          1532:      int    otmsCharSlopeRun;
        !          1533:      int    otmItalicAngle;
1.1.1.2   root     1534:     UINT    otmEMSquare;
1.1.1.4 ! root     1535:      int    otmAscent;
1.1.1.2   root     1536:      int    otmDescent;
1.1.1.4 ! root     1537:     UINT    otmLineGap;
1.1.1.3   root     1538:     UINT    otmsCapEmHeight;
                   1539:     UINT    otmsXHeight;
1.1.1.2   root     1540:     RECT    otmrcFontBox;
                   1541:      int    otmMacAscent;
                   1542:      int    otmMacDescent;
                   1543:     UINT    otmMacLineGap;
                   1544:     UINT    otmusMinimumPPEM;
                   1545:     POINT   otmptSubscriptSize;
                   1546:     POINT   otmptSubscriptOffset;
                   1547:     POINT   otmptSuperscriptSize;
                   1548:     POINT   otmptSuperscriptOffset;
                   1549:     UINT    otmsStrikeoutSize;
                   1550:      int    otmsStrikeoutPosition;
                   1551:      int    otmsUnderscoreSize;
1.1.1.4 ! root     1552:      int    otmsUnderscorePosition;
1.1.1.2   root     1553:     PSTR    otmpFamilyName;
                   1554:     PSTR    otmpFaceName;
                   1555:     PSTR    otmpStyleName;
                   1556:     PSTR    otmpFullName;
                   1557: } OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, NEAR *NPOUTLINETEXTMETRICA, FAR *LPOUTLINETEXTMETRICA;
                   1558: typedef struct _OUTLINETEXTMETRICW {
                   1559:     UINT    otmSize;
                   1560:     TEXTMETRICW otmTextMetrics;
                   1561:     BYTE    otmFiller;
                   1562:     PANOSE  otmPanoseNumber;
                   1563:     UINT    otmfsSelection;
                   1564:     UINT    otmfsType;
1.1.1.4 ! root     1565:      int    otmsCharSlopeRise;
        !          1566:      int    otmsCharSlopeRun;
        !          1567:      int    otmItalicAngle;
1.1.1.2   root     1568:     UINT    otmEMSquare;
1.1.1.4 ! root     1569:      int    otmAscent;
1.1.1.2   root     1570:      int    otmDescent;
1.1.1.4 ! root     1571:     UINT    otmLineGap;
1.1.1.3   root     1572:     UINT    otmsCapEmHeight;
                   1573:     UINT    otmsXHeight;
1.1.1.2   root     1574:     RECT    otmrcFontBox;
                   1575:      int    otmMacAscent;
                   1576:      int    otmMacDescent;
                   1577:     UINT    otmMacLineGap;
                   1578:     UINT    otmusMinimumPPEM;
                   1579:     POINT   otmptSubscriptSize;
                   1580:     POINT   otmptSubscriptOffset;
                   1581:     POINT   otmptSuperscriptSize;
                   1582:     POINT   otmptSuperscriptOffset;
                   1583:     UINT    otmsStrikeoutSize;
                   1584:      int    otmsStrikeoutPosition;
                   1585:      int    otmsUnderscoreSize;
1.1.1.4 ! root     1586:      int    otmsUnderscorePosition;
1.1.1.2   root     1587:     PSTR    otmpFamilyName;
                   1588:     PSTR    otmpFaceName;
                   1589:     PSTR    otmpStyleName;
                   1590:     PSTR    otmpFullName;
                   1591: } OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, NEAR *NPOUTLINETEXTMETRICW, FAR *LPOUTLINETEXTMETRICW;
                   1592: #ifdef UNICODE
1.1.1.4 ! root     1593: typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC;
        !          1594: typedef POUTLINETEXTMETRICW POUTLINETEXTMETRIC;
        !          1595: typedef NPOUTLINETEXTMETRICW NPOUTLINETEXTMETRIC;
        !          1596: typedef LPOUTLINETEXTMETRICW LPOUTLINETEXTMETRIC;
        !          1597: #else
        !          1598: typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC;
        !          1599: typedef POUTLINETEXTMETRICA POUTLINETEXTMETRIC;
        !          1600: typedef NPOUTLINETEXTMETRICA NPOUTLINETEXTMETRIC;
        !          1601: typedef LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC;
1.1.1.2   root     1602: #endif // UNICODE
                   1603: 
                   1604: #endif /* NOTEXTMETRIC */
                   1605: 
                   1606: 
1.1.1.3   root     1607: typedef struct tagPOLYTEXTA
                   1608: {
1.1.1.4 ! root     1609:     int       x;
        !          1610:     int       y;
        !          1611:     UINT      n;
        !          1612:     LPCSTR    lpstr;
        !          1613:     UINT      uiFlags;
        !          1614:     RECT      rcl;
        !          1615:     int      *pdx;
        !          1616: } POLYTEXTA, *PPOLYTEXTA, NEAR *NPPOLYTEXTA, FAR *LPPOLYTEXTA;
1.1.1.3   root     1617: typedef struct tagPOLYTEXTW
                   1618: {
1.1.1.4 ! root     1619:     int       x;
        !          1620:     int       y;
        !          1621:     UINT      n;
        !          1622:     LPCWSTR   lpstr;
        !          1623:     UINT      uiFlags;
        !          1624:     RECT      rcl;
        !          1625:     int      *pdx;
        !          1626: } POLYTEXTW, *PPOLYTEXTW, NEAR *NPPOLYTEXTW, FAR *LPPOLYTEXTW;
        !          1627: #ifdef UNICODE
        !          1628: typedef POLYTEXTW POLYTEXT;
        !          1629: typedef PPOLYTEXTW PPOLYTEXT;
        !          1630: typedef NPPOLYTEXTW NPPOLYTEXT;
        !          1631: typedef LPPOLYTEXTW LPPOLYTEXT;
        !          1632: #else
        !          1633: typedef POLYTEXTA POLYTEXT;
        !          1634: typedef PPOLYTEXTA PPOLYTEXT;
        !          1635: typedef NPPOLYTEXTA NPPOLYTEXT;
        !          1636: typedef LPPOLYTEXTA LPPOLYTEXT;
1.1.1.3   root     1637: #endif // UNICODE
                   1638: 
1.1.1.2   root     1639: typedef struct _FIXED {
                   1640:     WORD    fract;
                   1641:     short   value;
                   1642: } FIXED;
                   1643: 
                   1644: 
                   1645: typedef struct _MAT2 {
                   1646:      FIXED  eM11;
                   1647:      FIXED  eM12;
                   1648:      FIXED  eM21;
                   1649:      FIXED  eM22;
                   1650: } MAT2, FAR *LPMAT2;
                   1651: 
                   1652: 
                   1653: 
                   1654: typedef struct _GLYPHMETRICS {
                   1655:     UINT    gmBlackBoxX;
                   1656:     UINT    gmBlackBoxY;
                   1657:     POINT   gmptGlyphOrigin;
                   1658:     short   gmCellIncX;
                   1659:     short   gmCellIncY;
                   1660: } GLYPHMETRICS, FAR *LPGLYPHMETRICS;
                   1661: 
                   1662: //  GetGlyphOutline constants
                   1663: 
1.1.1.4 ! root     1664: #define GGO_METRICS        0
1.1.1.2   root     1665: #define GGO_BITMAP         1
                   1666: #define GGO_NATIVE         2
                   1667: 
                   1668: #define TT_POLYGON_TYPE   24
                   1669: 
                   1670: #define TT_PRIM_LINE       1
                   1671: #define TT_PRIM_QSPLINE    2
                   1672: 
                   1673: typedef struct tagPOINTFX
                   1674: {
                   1675:     FIXED x;
                   1676:     FIXED y;
                   1677: } POINTFX, FAR* LPPOINTFX;
                   1678: 
                   1679: typedef struct tagTTPOLYCURVE
                   1680: {
                   1681:     WORD    wType;
                   1682:     WORD    cpfx;
                   1683:     POINTFX apfx[1];
                   1684: } TTPOLYCURVE, FAR* LPTTPOLYCURVE;
                   1685: 
                   1686: typedef struct tagTTPOLYGONHEADER
                   1687: {
                   1688:     DWORD   cb;
                   1689:     DWORD   dwType;
                   1690:     POINTFX pfxStart;
                   1691: } TTPOLYGONHEADER, FAR* LPTTPOLYGONHEADER;
                   1692: 
                   1693: 
                   1694: 
                   1695: typedef struct _RASTERIZER_STATUS {
                   1696:     short   nSize;
                   1697:     short   wFlags;
                   1698:     short   nLanguageID;
                   1699: } RASTERIZER_STATUS, FAR *LPRASTERIZER_STATUS;
                   1700: 
                   1701: /* bits defined in wFlags of RASTERIZER_STATUS */
                   1702: #define TT_AVAILABLE    0x0001
                   1703: #define TT_ENABLED      0x0002
                   1704: 
                   1705: #ifdef STRICT
1.1.1.3   root     1706: #if !defined(NOTEXTMETRIC)
1.1.1.4 ! root     1707: typedef int (CALLBACK* OLDFONTENUMPROC)(CONST LOGFONT *, CONST TEXTMETRIC *, DWORD, LPARAM);
1.1.1.3   root     1708: #else
1.1.1.4 ! root     1709: typedef int (CALLBACK* OLDFONTENUMPROC)(CONST LOGFONT * ,CONST VOID *, DWORD, LPARAM);
1.1.1.3   root     1710: #endif
                   1711: typedef int (CALLBACK* GOBJENUMPROC)(LPVOID, LPARAM);
1.1.1.2   root     1712: typedef VOID (CALLBACK* LINEDDAPROC)(int, int, LPARAM);
                   1713: #else
1.1.1.4 ! root     1714: typedef FARPROC OLDFONTENUMPROC;
1.1.1.2   root     1715: typedef FARPROC GOBJENUMPROC;
                   1716: typedef FARPROC LINEDDAPROC;
                   1717: #endif
                   1718: 
1.1.1.4 ! root     1719: typedef OLDFONTENUMPROC FONTENUMPROC;
        !          1720: 
1.1.1.2   root     1721: int WINAPI AddFontResourceA(LPCSTR);
                   1722: int WINAPI AddFontResourceW(LPCWSTR);
1.1       root     1723: #ifdef UNICODE
1.1.1.4 ! root     1724: #define AddFontResource  AddFontResourceW
1.1       root     1725: #else
1.1.1.4 ! root     1726: #define AddFontResource  AddFontResourceA
1.1       root     1727: #endif // !UNICODE
                   1728: 
1.1.1.2   root     1729: BOOL  WINAPI AnimatePalette(HPALETTE, UINT, UINT, CONST PALETTEENTRY *);
                   1730: BOOL  WINAPI Arc(HDC, int, int, int, int, int, int, int, int);
                   1731: BOOL  WINAPI BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
                   1732: BOOL  WINAPI CancelDC(HDC);
                   1733: BOOL  WINAPI Chord(HDC, int, int, int, int, int, int, int, int);
                   1734: HMETAFILE  WINAPI CloseMetaFile(HDC);
                   1735: int     WINAPI CombineRgn(HRGN, HRGN, HRGN, int);
1.1.1.4 ! root     1736: HMETAFILE WINAPI CopyMetaFileA(HMETAFILE, LPCSTR);
        !          1737: HMETAFILE WINAPI CopyMetaFileW(HMETAFILE, LPCWSTR);
1.1.1.2   root     1738: #ifdef UNICODE
1.1.1.4 ! root     1739: #define CopyMetaFile  CopyMetaFileW
1.1.1.2   root     1740: #else
1.1.1.4 ! root     1741: #define CopyMetaFile  CopyMetaFileA
1.1.1.2   root     1742: #endif // !UNICODE
                   1743: HBITMAP WINAPI CreateBitmap(int, int, UINT, UINT, CONST VOID *);
1.1.1.4 ! root     1744: HBITMAP WINAPI CreateBitmapIndirect(CONST BITMAP *);
        !          1745: HBRUSH  WINAPI CreateBrushIndirect(CONST LOGBRUSH *);
1.1.1.2   root     1746: HBITMAP WINAPI CreateCompatibleBitmap(HDC, int, int);
                   1747: HBITMAP WINAPI CreateDiscardableBitmap(HDC, int, int);
                   1748: HDC     WINAPI CreateCompatibleDC(HDC);
1.1.1.4 ! root     1749: HDC     WINAPI CreateDCA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA *);
        !          1750: HDC     WINAPI CreateDCW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW *);
1.1.1.3   root     1751: #ifdef UNICODE
1.1.1.4 ! root     1752: #define CreateDC  CreateDCW
1.1.1.3   root     1753: #else
1.1.1.4 ! root     1754: #define CreateDC  CreateDCA
1.1.1.3   root     1755: #endif // !UNICODE
1.1.1.4 ! root     1756: HBITMAP WINAPI CreateDIBitmap(HDC, CONST BITMAPINFOHEADER *, DWORD, CONST VOID *, CONST BITMAPINFO *, UINT);
1.1.1.2   root     1757: HBRUSH  WINAPI CreateDIBPatternBrush(HGLOBAL, UINT);
1.1.1.4 ! root     1758: HBRUSH  WINAPI CreateDIBPatternBrushPt(CONST VOID *, UINT);
1.1.1.2   root     1759: HRGN    WINAPI CreateEllipticRgn(int, int, int, int);
                   1760: HRGN    WINAPI CreateEllipticRgnIndirect(CONST RECT *);
1.1.1.3   root     1761: HFONT   WINAPI CreateFontIndirectA(CONST LOGFONTA *);
                   1762: HFONT   WINAPI CreateFontIndirectW(CONST LOGFONTW *);
1.1       root     1763: #ifdef UNICODE
1.1.1.4 ! root     1764: #define CreateFontIndirect  CreateFontIndirectW
1.1       root     1765: #else
1.1.1.4 ! root     1766: #define CreateFontIndirect  CreateFontIndirectA
1.1       root     1767: #endif // !UNICODE
1.1.1.2   root     1768: HFONT   WINAPI CreateFontA(int, int, int, int, int, DWORD,
                   1769:                              DWORD, DWORD, DWORD, DWORD, DWORD,
                   1770:                              DWORD, DWORD, LPCSTR);
                   1771: HFONT   WINAPI CreateFontW(int, int, int, int, int, DWORD,
                   1772:                              DWORD, DWORD, DWORD, DWORD, DWORD,
                   1773:                              DWORD, DWORD, LPCWSTR);
1.1       root     1774: #ifdef UNICODE
1.1.1.4 ! root     1775: #define CreateFont  CreateFontW
1.1       root     1776: #else
1.1.1.4 ! root     1777: #define CreateFont  CreateFontA
1.1       root     1778: #endif // !UNICODE
                   1779: 
1.1.1.2   root     1780: HBRUSH  WINAPI CreateHatchBrush(int, COLORREF);
1.1.1.4 ! root     1781: HDC     WINAPI CreateICA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA *);
        !          1782: HDC     WINAPI CreateICW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW *);
1.1.1.3   root     1783: #ifdef UNICODE
1.1.1.4 ! root     1784: #define CreateIC  CreateICW
1.1.1.3   root     1785: #else
1.1.1.4 ! root     1786: #define CreateIC  CreateICA
1.1.1.3   root     1787: #endif // !UNICODE
1.1.1.2   root     1788: HDC     WINAPI CreateMetaFileA(LPCSTR);
                   1789: HDC     WINAPI CreateMetaFileW(LPCWSTR);
                   1790: #ifdef UNICODE
1.1.1.4 ! root     1791: #define CreateMetaFile  CreateMetaFileW
1.1.1.2   root     1792: #else
1.1.1.4 ! root     1793: #define CreateMetaFile  CreateMetaFileA
1.1.1.2   root     1794: #endif // !UNICODE
1.1.1.3   root     1795: HPALETTE WINAPI CreatePalette(CONST LOGPALETTE *);
1.1.1.2   root     1796: HPEN    WINAPI CreatePen(int, int, COLORREF);
1.1.1.4 ! root     1797: HPEN    WINAPI CreatePenIndirect(CONST LOGPEN *);
1.1.1.2   root     1798: HRGN    WINAPI CreatePolyPolygonRgn(CONST POINT *, CONST INT *, int, int);
                   1799: HBRUSH  WINAPI CreatePatternBrush(HBITMAP);
                   1800: HRGN    WINAPI CreateRectRgn(int, int, int, int);
                   1801: HRGN    WINAPI CreateRectRgnIndirect(CONST RECT *);
                   1802: HRGN    WINAPI CreateRoundRectRgn(int, int, int, int, int, int);
1.1.1.4 ! root     1803: BOOL    WINAPI CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR);
        !          1804: BOOL    WINAPI CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR);
1.1.1.2   root     1805: #ifdef UNICODE
1.1.1.4 ! root     1806: #define CreateScalableFontResource  CreateScalableFontResourceW
1.1.1.2   root     1807: #else
1.1.1.4 ! root     1808: #define CreateScalableFontResource  CreateScalableFontResourceA
1.1.1.2   root     1809: #endif // !UNICODE
                   1810: HBRUSH  WINAPI CreateSolidBrush(COLORREF);
1.1       root     1811: 
1.1.1.2   root     1812: BOOL WINAPI DeleteDC(HDC);
                   1813: BOOL WINAPI DeleteMetaFile(HMETAFILE);
                   1814: BOOL WINAPI DeleteObject(HGDIOBJ);
1.1.1.4 ! root     1815: 
        !          1816: /* define types of pointers to ExtDeviceMode() and DeviceCapabilities()
        !          1817:  * functions for Win 3.1 compatibility
        !          1818:  */
        !          1819: 
        !          1820: typedef UINT   (CALLBACK* LPFNDEVMODE)(HWND, HMODULE, LPDEVMODE, LPSTR, LPSTR, LPDEVMODE, LPSTR, UINT);
        !          1821: 
        !          1822: typedef DWORD  (CALLBACK* LPFNDEVCAPS)(LPSTR, LPSTR, UINT, LPSTR, LPDEVMODE);
        !          1823: 
        !          1824: /* mode selections for the device mode function */
        !          1825: #define DM_UPDATE           1
        !          1826: #define DM_COPY             2
        !          1827: #define DM_PROMPT           4
        !          1828: #define DM_MODIFY           8
        !          1829: 
        !          1830: #define DM_IN_BUFFER        DM_MODIFY
        !          1831: #define DM_IN_PROMPT        DM_PROMPT
        !          1832: #define DM_OUT_BUFFER       DM_COPY
        !          1833: #define DM_OUT_DEFAULT      DM_UPDATE
        !          1834: 
        !          1835: /* device capabilities indices */
        !          1836: #define DC_FIELDS           1
        !          1837: #define DC_PAPERS           2
        !          1838: #define DC_PAPERSIZE        3
        !          1839: #define DC_MINEXTENT        4
        !          1840: #define DC_MAXEXTENT        5
        !          1841: #define DC_BINS             6
        !          1842: #define DC_DUPLEX           7
        !          1843: #define DC_SIZE             8
        !          1844: #define DC_EXTRA            9
        !          1845: #define DC_VERSION          10
        !          1846: #define DC_DRIVER           11
        !          1847: #define DC_BINNAMES         12
        !          1848: #define DC_ENUMRESOLUTIONS  13
        !          1849: #define DC_FILEDEPENDENCIES 14
        !          1850: #define DC_TRUETYPE         15
        !          1851: #define DC_PAPERNAMES       16
        !          1852: #define DC_ORIENTATION      17
        !          1853: #define DC_COPIES           18
        !          1854: 
        !          1855: /* bit fields of the return value (DWORD) for DC_TRUETYPE */
        !          1856: #define DCTT_BITMAP         0x0000001L
        !          1857: #define DCTT_DOWNLOAD       0x0000002L
        !          1858: #define DCTT_SUBDEV         0x0000004L
        !          1859: 
        !          1860: int  WINAPI DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD,
        !          1861:                                 LPSTR, CONST DEVMODEA *);
        !          1862: int  WINAPI DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD,
        !          1863:                                 LPWSTR, CONST DEVMODEW *);
        !          1864: #ifdef UNICODE
        !          1865: #define DeviceCapabilities  DeviceCapabilitiesW
        !          1866: #else
        !          1867: #define DeviceCapabilities  DeviceCapabilitiesA
        !          1868: #endif // !UNICODE
        !          1869: 
1.1.1.2   root     1870: BOOL  WINAPI Ellipse(HDC, int, int, int, int);
1.1       root     1871: 
1.1.1.2   root     1872: int  WINAPI EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROC, LPARAM);
                   1873: int  WINAPI EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROC, LPARAM);
                   1874: #ifdef UNICODE
1.1.1.4 ! root     1875: #define EnumFontFamilies  EnumFontFamiliesW
1.1.1.2   root     1876: #else
1.1.1.4 ! root     1877: #define EnumFontFamilies  EnumFontFamiliesA
1.1.1.2   root     1878: #endif // !UNICODE
                   1879: int  WINAPI EnumFontsA(HDC, LPCSTR,  FONTENUMPROC, LPARAM);
                   1880: int  WINAPI EnumFontsW(HDC, LPCWSTR,  FONTENUMPROC, LPARAM);
1.1       root     1881: #ifdef UNICODE
1.1.1.4 ! root     1882: #define EnumFonts  EnumFontsW
1.1       root     1883: #else
1.1.1.4 ! root     1884: #define EnumFonts  EnumFontsA
1.1       root     1885: #endif // !UNICODE
                   1886: 
1.1.1.2   root     1887: #ifdef STRICT
                   1888: int  WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPARAM);
                   1889: #else
                   1890: int  WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPVOID);
                   1891: #endif
                   1892: 
                   1893: BOOL WINAPI EqualRgn(HRGN, HRGN);
                   1894: int  WINAPI Escape(HDC, int, int, LPCSTR, LPVOID);
                   1895: int  WINAPI ExtEscape(HDC, int, int, LPCSTR, int, LPSTR);
                   1896: int  WINAPI DrawEscape(HDC, int, int, LPCSTR);
                   1897: int  WINAPI ExcludeClipRect(HDC, int, int, int, int);
1.1.1.4 ! root     1898: HRGN WINAPI ExtCreateRegion(CONST XFORM *, DWORD, CONST RGNDATA *);
1.1.1.2   root     1899: BOOL  WINAPI ExtFloodFill(HDC, int, int, COLORREF, UINT);
                   1900: BOOL   WINAPI FillRgn(HDC, HRGN, HBRUSH);
                   1901: BOOL   WINAPI FloodFill(HDC, int, int, COLORREF);
                   1902: BOOL   WINAPI FrameRgn(HDC, HRGN, HBRUSH, int, int);
                   1903: int   WINAPI GetROP2(HDC);
                   1904: BOOL  WINAPI GetAspectRatioFilterEx(HDC, LPSIZE);
                   1905: COLORREF WINAPI GetBkColor(HDC);
                   1906: int   WINAPI GetBkMode(HDC);
                   1907: LONG  WINAPI GetBitmapBits(HBITMAP, LONG, LPVOID);
                   1908: BOOL  WINAPI GetBitmapDimensionEx(HBITMAP, LPSIZE);
                   1909: UINT  WINAPI GetBoundsRect(HDC, LPRECT, UINT);
1.1       root     1910: 
1.1.1.2   root     1911: BOOL  WINAPI GetBrushOrgEx(HDC, LPPOINT);
                   1912: 
                   1913: BOOL  WINAPI GetCharWidthA(HDC, UINT, UINT, LPINT);
                   1914: BOOL  WINAPI GetCharWidthW(HDC, UINT, UINT, LPINT);
1.1       root     1915: #ifdef UNICODE
1.1.1.4 ! root     1916: #define GetCharWidth  GetCharWidthW
        !          1917: #else
        !          1918: #define GetCharWidth  GetCharWidthA
        !          1919: #endif // !UNICODE
        !          1920: BOOL  WINAPI GetCharWidth32A(HDC, UINT, UINT, LPINT);
        !          1921: BOOL  WINAPI GetCharWidth32W(HDC, UINT, UINT, LPINT);
        !          1922: #ifdef UNICODE
        !          1923: #define GetCharWidth32  GetCharWidth32W
1.1       root     1924: #else
1.1.1.4 ! root     1925: #define GetCharWidth32  GetCharWidth32A
1.1       root     1926: #endif // !UNICODE
1.1.1.2   root     1927: BOOL  APIENTRY GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT);
                   1928: BOOL  APIENTRY GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT);
                   1929: #ifdef UNICODE
1.1.1.4 ! root     1930: #define GetCharWidthFloat  GetCharWidthFloatW
1.1.1.2   root     1931: #else
1.1.1.4 ! root     1932: #define GetCharWidthFloat  GetCharWidthFloatA
1.1.1.2   root     1933: #endif // !UNICODE
1.1       root     1934: 
1.1.1.2   root     1935: BOOL  APIENTRY GetCharABCWidthsA(HDC, UINT, UINT, LPABC);
                   1936: BOOL  APIENTRY GetCharABCWidthsW(HDC, UINT, UINT, LPABC);
                   1937: #ifdef UNICODE
1.1.1.4 ! root     1938: #define GetCharABCWidths  GetCharABCWidthsW
1.1.1.2   root     1939: #else
1.1.1.4 ! root     1940: #define GetCharABCWidths  GetCharABCWidthsA
1.1.1.2   root     1941: #endif // !UNICODE
                   1942: BOOL  APIENTRY GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT);
                   1943: BOOL  APIENTRY GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT);
                   1944: #ifdef UNICODE
1.1.1.4 ! root     1945: #define GetCharABCWidthsFloat  GetCharABCWidthsFloatW
1.1.1.2   root     1946: #else
1.1.1.4 ! root     1947: #define GetCharABCWidthsFloat  GetCharABCWidthsFloatA
1.1.1.2   root     1948: #endif // !UNICODE
                   1949: 
                   1950: int   WINAPI GetClipBox(HDC, LPRECT);
                   1951: int   WINAPI GetClipRgn(HDC, HRGN);
                   1952: int   WINAPI GetMetaRgn(HDC, HRGN);
                   1953: HGDIOBJ WINAPI GetCurrentObject(HDC, UINT);
                   1954: BOOL  WINAPI GetCurrentPositionEx(HDC, LPPOINT);
                   1955: int   WINAPI GetDeviceCaps(HDC, int);
                   1956: int   WINAPI GetDIBits(HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT);
                   1957: DWORD WINAPI GetFontData(HDC, DWORD, DWORD, LPVOID, DWORD);
1.1.1.4 ! root     1958: DWORD WINAPI GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST MAT2 *);
        !          1959: DWORD WINAPI GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST MAT2 *);
        !          1960: #ifdef UNICODE
        !          1961: #define GetGlyphOutline  GetGlyphOutlineW
        !          1962: #else
        !          1963: #define GetGlyphOutline  GetGlyphOutlineA
        !          1964: #endif // !UNICODE
        !          1965: int   WINAPI GetGraphicsMode(HDC);
1.1.1.2   root     1966: int   WINAPI GetMapMode(HDC);
                   1967: UINT  WINAPI GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID);
                   1968: HMETAFILE   WINAPI GetMetaFileA(LPCSTR);
                   1969: HMETAFILE   WINAPI GetMetaFileW(LPCWSTR);
                   1970: #ifdef UNICODE
1.1.1.4 ! root     1971: #define GetMetaFile  GetMetaFileW
1.1.1.2   root     1972: #else
1.1.1.4 ! root     1973: #define GetMetaFile  GetMetaFileA
1.1.1.2   root     1974: #endif // !UNICODE
                   1975: COLORREF WINAPI GetNearestColor(HDC, COLORREF);
                   1976: UINT  WINAPI GetNearestPaletteIndex(HPALETTE, COLORREF);
                   1977: DWORD WINAPI GetObjectType(HGDIOBJ h);
                   1978: 
                   1979: #ifndef NOTEXTMETRIC
                   1980: 
1.1.1.3   root     1981: UINT APIENTRY GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA);
                   1982: UINT APIENTRY GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW);
1.1.1.2   root     1983: #ifdef UNICODE
1.1.1.4 ! root     1984: #define GetOutlineTextMetrics  GetOutlineTextMetricsW
1.1.1.2   root     1985: #else
1.1.1.4 ! root     1986: #define GetOutlineTextMetrics  GetOutlineTextMetricsA
1.1.1.2   root     1987: #endif // !UNICODE
                   1988: 
                   1989: #endif /* NOTEXTMETRIC */
                   1990: 
                   1991: UINT  WINAPI GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY);
                   1992: COLORREF WINAPI GetPixel(HDC, int, int);
                   1993: int   WINAPI GetPolyFillMode(HDC);
                   1994: BOOL  WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS, UINT);
                   1995: DWORD WINAPI GetRegionData(HRGN, DWORD, LPRGNDATA);
                   1996: int   WINAPI GetRgnBox(HRGN, LPRECT);
                   1997: HGDIOBJ WINAPI GetStockObject(int);
                   1998: int   WINAPI GetStretchBltMode(HDC);
                   1999: UINT  WINAPI GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY);
                   2000: UINT  WINAPI GetSystemPaletteUse(HDC);
                   2001: int   WINAPI GetTextCharacterExtra(HDC);
                   2002: UINT  WINAPI GetTextAlign(HDC);
                   2003: COLORREF WINAPI GetTextColor(HDC);
1.1       root     2004: 
                   2005: BOOL  APIENTRY GetTextExtentPointA(
1.1.1.2   root     2006:                     HDC,
                   2007:                     LPCSTR,
                   2008:                     int,
                   2009:                     LPSIZE
1.1       root     2010:                     );
                   2011: BOOL  APIENTRY GetTextExtentPointW(
1.1.1.2   root     2012:                     HDC,
                   2013:                     LPCWSTR,
                   2014:                     int,
                   2015:                     LPSIZE
1.1       root     2016:                     );
                   2017: #ifdef UNICODE
1.1.1.4 ! root     2018: #define GetTextExtentPoint  GetTextExtentPointW
        !          2019: #else
        !          2020: #define GetTextExtentPoint  GetTextExtentPointA
        !          2021: #endif // !UNICODE
        !          2022: 
        !          2023: BOOL  APIENTRY GetTextExtentPoint32A(
        !          2024:                     HDC,
        !          2025:                     LPCSTR,
        !          2026:                     int,
        !          2027:                     LPSIZE
        !          2028:                     );
        !          2029: BOOL  APIENTRY GetTextExtentPoint32W(
        !          2030:                     HDC,
        !          2031:                     LPCWSTR,
        !          2032:                     int,
        !          2033:                     LPSIZE
        !          2034:                     );
        !          2035: #ifdef UNICODE
        !          2036: #define GetTextExtentPoint32  GetTextExtentPoint32W
1.1       root     2037: #else
1.1.1.4 ! root     2038: #define GetTextExtentPoint32  GetTextExtentPoint32A
1.1       root     2039: #endif // !UNICODE
                   2040: 
1.1.1.2   root     2041: BOOL  APIENTRY GetTextExtentExPointA(
                   2042:                     HDC,
                   2043:                     LPCSTR,
                   2044:                     int,
                   2045:                     int,
                   2046:                     LPINT,
                   2047:                     LPINT,
                   2048:                     LPSIZE
                   2049:                     );
                   2050: BOOL  APIENTRY GetTextExtentExPointW(
                   2051:                     HDC,
                   2052:                     LPCWSTR,
                   2053:                     int,
                   2054:                     int,
                   2055:                     LPINT,
                   2056:                     LPINT,
                   2057:                     LPSIZE
                   2058:                     );
                   2059: #ifdef UNICODE
1.1.1.4 ! root     2060: #define GetTextExtentExPoint  GetTextExtentExPointW
1.1.1.2   root     2061: #else
1.1.1.4 ! root     2062: #define GetTextExtentExPoint  GetTextExtentExPointA
1.1.1.2   root     2063: #endif // !UNICODE
                   2064: 
                   2065: BOOL  WINAPI GetViewportExtEx(HDC, LPSIZE);
                   2066: BOOL  WINAPI GetViewportOrgEx(HDC, LPPOINT);
                   2067: BOOL  WINAPI GetWindowExtEx(HDC, LPSIZE);
                   2068: BOOL  WINAPI GetWindowOrgEx(HDC, LPPOINT);
                   2069: 
                   2070: int  WINAPI IntersectClipRect(HDC, int, int, int, int);
                   2071: BOOL WINAPI InvertRgn(HDC, HRGN);
                   2072: BOOL WINAPI LineDDA(int, int, int, int, LINEDDAPROC, LPARAM);
                   2073: BOOL WINAPI LineTo(HDC, int, int);
                   2074: BOOL WINAPI MaskBlt(HDC, int, int, int, int,
                   2075:               HDC, int, int, HBITMAP, int, int, DWORD);
1.1.1.4 ! root     2076: BOOL WINAPI PlgBlt(HDC, CONST POINT *, HDC, int, int, int,
1.1.1.2   root     2077:                      int, HBITMAP, int, int);
                   2078: 
                   2079: int  WINAPI OffsetClipRgn(HDC, int, int);
                   2080: int  WINAPI OffsetRgn(HRGN, int, int);
                   2081: BOOL WINAPI PatBlt(HDC, int, int, int, int, DWORD);
                   2082: BOOL WINAPI Pie(HDC, int, int, int, int, int, int, int, int);
                   2083: BOOL WINAPI PlayMetaFile(HDC, HMETAFILE);
                   2084: BOOL WINAPI PaintRgn(HDC, HRGN);
1.1.1.4 ! root     2085: BOOL WINAPI PolyPolygon(HDC, CONST POINT *, CONST INT *, int);
1.1.1.2   root     2086: BOOL WINAPI PtInRegion(HRGN, int, int);
                   2087: BOOL WINAPI PtVisible(HDC, int, int);
1.1.1.3   root     2088: BOOL WINAPI RectInRegion(HRGN, CONST RECT *);
1.1.1.2   root     2089: BOOL WINAPI RectVisible(HDC, CONST RECT *);
                   2090: BOOL WINAPI Rectangle(HDC, int, int, int, int);
                   2091: BOOL WINAPI RestoreDC(HDC, int);
1.1.1.4 ! root     2092: HDC  WINAPI ResetDCA(HDC, CONST DEVMODEA *);
        !          2093: HDC  WINAPI ResetDCW(HDC, CONST DEVMODEW *);
        !          2094: #ifdef UNICODE
        !          2095: #define ResetDC  ResetDCW
        !          2096: #else
        !          2097: #define ResetDC  ResetDCA
        !          2098: #endif // !UNICODE
1.1.1.2   root     2099: UINT WINAPI RealizePalette(HDC);
1.1.1.4 ! root     2100: BOOL WINAPI RemoveFontResourceA(LPCSTR);
        !          2101: BOOL WINAPI RemoveFontResourceW(LPCWSTR);
1.1       root     2102: #ifdef UNICODE
1.1.1.4 ! root     2103: #define RemoveFontResource  RemoveFontResourceW
1.1       root     2104: #else
1.1.1.4 ! root     2105: #define RemoveFontResource  RemoveFontResourceA
1.1       root     2106: #endif // !UNICODE
1.1.1.2   root     2107: BOOL  WINAPI RoundRect(HDC, int, int, int, int, int, int);
                   2108: BOOL WINAPI ResizePalette(HPALETTE, UINT);
1.1       root     2109: 
1.1.1.2   root     2110: int  WINAPI SaveDC(HDC);
                   2111: int  WINAPI SelectClipRgn(HDC, HRGN);
                   2112: int  WINAPI ExtSelectClipRgn(HDC, HRGN, int);
                   2113: int  WINAPI SetMetaRgn(HDC);
                   2114: HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);
                   2115: HPALETTE WINAPI SelectPalette(HDC, HPALETTE, BOOL);
                   2116: COLORREF WINAPI SetBkColor(HDC, COLORREF);
                   2117: int   WINAPI SetBkMode(HDC, int);
1.1.1.3   root     2118: LONG  WINAPI SetBitmapBits(HBITMAP, DWORD, CONST VOID *);
1.1.1.2   root     2119: 
1.1.1.3   root     2120: UINT  WINAPI SetBoundsRect(HDC, CONST RECT *, UINT);
1.1.1.4 ! root     2121: int   WINAPI SetDIBits(HDC, HBITMAP, UINT, UINT, CONST VOID *, CONST BITMAPINFO *, UINT);
        !          2122: int   WINAPI SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int,
        !          2123: int, UINT, UINT, CONST VOID *, CONST BITMAPINFO *, UINT);
1.1.1.2   root     2124: DWORD WINAPI SetMapperFlags(HDC, DWORD);
1.1.1.4 ! root     2125: int   WINAPI SetGraphicsMode(HDC hdc, int iMode);
1.1.1.2   root     2126: int   WINAPI SetMapMode(HDC, int);
1.1.1.4 ! root     2127: HMETAFILE   WINAPI SetMetaFileBitsEx(UINT, CONST BYTE *);
1.1.1.2   root     2128: UINT  WINAPI SetPaletteEntries(HPALETTE, UINT, UINT, CONST PALETTEENTRY *);
                   2129: COLORREF WINAPI SetPixel(HDC, int, int, COLORREF);
                   2130: BOOL   WINAPI SetPixelV(HDC, int, int, COLORREF);
                   2131: int   WINAPI SetPolyFillMode(HDC, int);
                   2132: BOOL   WINAPI StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
                   2133: BOOL   WINAPI SetRectRgn(HRGN, int, int, int, int);
                   2134: int   WINAPI StretchDIBits(HDC, int, int, int, int, int, int, int, int, CONST
1.1.1.4 ! root     2135:         VOID *, CONST BITMAPINFO *, UINT, DWORD);
1.1.1.2   root     2136: int   WINAPI SetROP2(HDC, int);
                   2137: int   WINAPI SetStretchBltMode(HDC, int);
                   2138: UINT  WINAPI SetSystemPaletteUse(HDC, UINT);
                   2139: int   WINAPI SetTextCharacterExtra(HDC, int);
                   2140: COLORREF WINAPI SetTextColor(HDC, COLORREF);
                   2141: UINT  WINAPI SetTextAlign(HDC, UINT);
                   2142: BOOL  WINAPI SetTextJustification(HDC, int, int);
                   2143: BOOL  WINAPI UpdateColors(HDC);
1.1       root     2144: 
                   2145: #ifndef NOMETAFILE
                   2146: 
1.1.1.2   root     2147: BOOL  WINAPI PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT);
                   2148: typedef int (CALLBACK* MFENUMPROC)(HDC, HANDLETABLE FAR*, METARECORD FAR*, int, LPARAM);
                   2149: BOOL  WINAPI EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM);
                   2150: 
1.1.1.4 ! root     2151: typedef int (CALLBACK* ENHMFENUMPROC)(HDC, HANDLETABLE FAR*, CONST ENHMETARECORD *, int, LPARAM);
1.1.1.3   root     2152: 
1.1.1.2   root     2153: // Enhanced Metafile Function Declarations
                   2154: 
                   2155: HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
1.1.1.4 ! root     2156: HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE, LPCSTR);
        !          2157: HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR);
1.1.1.2   root     2158: #ifdef UNICODE
1.1.1.4 ! root     2159: #define CopyEnhMetaFile  CopyEnhMetaFileW
1.1.1.2   root     2160: #else
1.1.1.4 ! root     2161: #define CopyEnhMetaFile  CopyEnhMetaFileA
1.1.1.2   root     2162: #endif // !UNICODE
1.1.1.4 ! root     2163: HDC   WINAPI CreateEnhMetaFileA(HDC, LPCSTR, CONST RECT *, LPCSTR);
        !          2164: HDC   WINAPI CreateEnhMetaFileW(HDC, LPCWSTR, CONST RECT *, LPCWSTR);
1.1.1.2   root     2165: #ifdef UNICODE
1.1.1.4 ! root     2166: #define CreateEnhMetaFile  CreateEnhMetaFileW
1.1.1.2   root     2167: #else
1.1.1.4 ! root     2168: #define CreateEnhMetaFile  CreateEnhMetaFileA
1.1.1.2   root     2169: #endif // !UNICODE
                   2170: BOOL  WINAPI DeleteEnhMetaFile(HENHMETAFILE);
1.1.1.4 ! root     2171: BOOL  WINAPI EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC,
        !          2172: LPVOID, CONST RECT *);
        !          2173: HENHMETAFILE  WINAPI GetEnhMetaFileA(LPCSTR);
        !          2174: HENHMETAFILE  WINAPI GetEnhMetaFileW(LPCWSTR);
1.1.1.2   root     2175: #ifdef UNICODE
1.1.1.4 ! root     2176: #define GetEnhMetaFile  GetEnhMetaFileW
1.1.1.2   root     2177: #else
1.1.1.4 ! root     2178: #define GetEnhMetaFile  GetEnhMetaFileA
1.1.1.2   root     2179: #endif // !UNICODE
                   2180: UINT  WINAPI GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE);
                   2181: UINT  WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR );
                   2182: UINT  WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR );
                   2183: #ifdef UNICODE
1.1.1.4 ! root     2184: #define GetEnhMetaFileDescription  GetEnhMetaFileDescriptionW
1.1.1.2   root     2185: #else
1.1.1.4 ! root     2186: #define GetEnhMetaFileDescription  GetEnhMetaFileDescriptionA
1.1.1.2   root     2187: #endif // !UNICODE
                   2188: UINT  WINAPI GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER );
                   2189: UINT  WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY );
                   2190: UINT  WINAPI GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC);
1.1.1.4 ! root     2191: BOOL  WINAPI PlayEnhMetaFile(HDC, HENHMETAFILE, CONST RECT *);
        !          2192: BOOL  WINAPI PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, CONST ENHMETARECORD *, UINT);
        !          2193: HENHMETAFILE  WINAPI SetEnhMetaFileBits(UINT, CONST BYTE *);
        !          2194: HENHMETAFILE  WINAPI SetWinMetaFileBits(UINT, CONST BYTE *, HDC, CONST METAFILEPICT *);
        !          2195: BOOL  WINAPI GdiComment(HDC, UINT, CONST BYTE *);
1.1       root     2196: 
1.1.1.2   root     2197: #endif  /* NOMETAFILE */
1.1       root     2198: 
                   2199: #ifndef NOTEXTMETRIC
                   2200: 
1.1.1.2   root     2201: BOOL WINAPI GetTextMetricsA(HDC, LPTEXTMETRICA);
                   2202: BOOL WINAPI GetTextMetricsW(HDC, LPTEXTMETRICW);
1.1       root     2203: #ifdef UNICODE
1.1.1.4 ! root     2204: #define GetTextMetrics  GetTextMetricsW
1.1       root     2205: #else
1.1.1.4 ! root     2206: #define GetTextMetrics  GetTextMetricsA
1.1       root     2207: #endif // !UNICODE
                   2208: 
                   2209: #endif
                   2210: 
                   2211: /* new GDI */
1.1.1.2   root     2212: BOOL WINAPI AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT);
1.1.1.4 ! root     2213: BOOL WINAPI PolyPolyline(HDC, CONST POINT *, CONST DWORD *, DWORD);
1.1.1.2   root     2214: BOOL WINAPI GetWorldTransform(HDC, LPXFORM);
1.1.1.4 ! root     2215: BOOL WINAPI SetWorldTransform(HDC, CONST XFORM *);
        !          2216: BOOL WINAPI ModifyWorldTransform(HDC, CONST XFORM *, DWORD);
        !          2217: BOOL WINAPI CombineTransform(LPXFORM, CONST XFORM *, CONST XFORM *);
1.1       root     2218: 
1.1.1.3   root     2219: /* Flags value for COLORADJUSTMENT */
                   2220: #define CA_NEGATIVE                 0x0001
                   2221: #define CA_LOG_FILTER               0x0002
                   2222: 
                   2223: /* IlluminantIndex values */
1.1.1.4 ! root     2224: #define ILLUMINANT_DEVICE_DEFAULT   0
1.1.1.3   root     2225: #define ILLUMINANT_A                1
                   2226: #define ILLUMINANT_B                2
                   2227: #define ILLUMINANT_C                3
                   2228: #define ILLUMINANT_D50              4
                   2229: #define ILLUMINANT_D55              5
                   2230: #define ILLUMINANT_D65              6
                   2231: #define ILLUMINANT_D75              7
                   2232: #define ILLUMINANT_F2               8
                   2233: #define ILLUMINANT_MAX_INDEX        ILLUMINANT_F2
                   2234: 
1.1.1.4 ! root     2235: #define ILLUMINANT_TUNGSTEN         ILLUMINANT_A
1.1.1.3   root     2236: #define ILLUMINANT_DAYLIGHT         ILLUMINANT_C
                   2237: #define ILLUMINANT_FLUORESCENT      ILLUMINANT_F2
                   2238: #define ILLUMINANT_NTSC             ILLUMINANT_C
                   2239: 
                   2240: /* Min and max for RedGamma, GreenGamma, BlueGamma */
                   2241: #define RGB_GAMMA_MIN               (WORD)02500
                   2242: #define RGB_GAMMA_MAX               (WORD)65000
                   2243: 
                   2244: /* Min and max for ReferenceBlack and ReferenceWhite */
                   2245: #define REFERENCE_WHITE_MIN         (WORD)6000
                   2246: #define REFERENCE_WHITE_MAX         (WORD)10000
                   2247: #define REFERENCE_BLACK_MIN         (WORD)0
                   2248: #define REFERENCE_BLACK_MAX         (WORD)4000
                   2249: 
                   2250: /* Min and max for Contrast, Brightness, Colorfulness, RedGreenTint */
                   2251: #define COLOR_ADJ_MIN               (SHORT)-100
                   2252: #define COLOR_ADJ_MAX               (SHORT)100
                   2253: 
                   2254: typedef struct  tagCOLORADJUSTMENT {
                   2255:     WORD   caSize;
                   2256:     WORD   caFlags;
                   2257:     WORD   caIlluminantIndex;
                   2258:     WORD   caRedGamma;
                   2259:     WORD   caGreenGamma;
                   2260:     WORD   caBlueGamma;
                   2261:     WORD   caReferenceBlack;
                   2262:     WORD   caReferenceWhite;
                   2263:     SHORT  caContrast;
                   2264:     SHORT  caBrightness;
                   2265:     SHORT  caColorfulness;
                   2266:     SHORT  caRedGreenTint;
                   2267: } COLORADJUSTMENT, *PCOLORADJUSTMENT, FAR *LPCOLORADJUSTMENT;
                   2268: 
1.1.1.4 ! root     2269: BOOL WINAPI SetColorAdjustment(HDC, CONST COLORADJUSTMENT *);
1.1.1.3   root     2270: BOOL WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
                   2271: HPALETTE WINAPI CreateHalftonePalette(HDC);
                   2272: 
1.1.1.2   root     2273: #ifdef STRICT
                   2274: typedef BOOL (CALLBACK* ABORTPROC)(HDC, int);
                   2275: #else
                   2276: typedef FARPROC ABORTPROC;
                   2277: #endif
                   2278: 
1.1.1.3   root     2279: typedef struct _DOCINFOA {
1.1.1.2   root     2280:     int     cbSize;
1.1.1.4 ! root     2281:     LPCSTR   lpszDocName;
        !          2282:     LPCSTR   lpszOutput;
1.1.1.3   root     2283: } DOCINFOA, *LPDOCINFOA;
                   2284: typedef struct _DOCINFOW {
                   2285:     int     cbSize;
1.1.1.4 ! root     2286:     LPCWSTR  lpszDocName;
        !          2287:     LPCWSTR  lpszOutput;
1.1.1.3   root     2288: } DOCINFOW, *LPDOCINFOW;
                   2289: #ifdef UNICODE
1.1.1.4 ! root     2290: typedef DOCINFOW DOCINFO;
        !          2291: typedef LPDOCINFOW LPDOCINFO;
1.1.1.3   root     2292: #else
1.1.1.4 ! root     2293: typedef DOCINFOA DOCINFO;
        !          2294: typedef LPDOCINFOA LPDOCINFO;
1.1.1.3   root     2295: #endif // UNICODE
1.1.1.2   root     2296: 
1.1.1.4 ! root     2297: int WINAPI StartDocA(HDC, CONST DOCINFOA *);
        !          2298: int WINAPI StartDocW(HDC, CONST DOCINFOW *);
1.1.1.3   root     2299: #ifdef UNICODE
1.1.1.4 ! root     2300: #define StartDoc  StartDocW
1.1.1.3   root     2301: #else
1.1.1.4 ! root     2302: #define StartDoc  StartDocA
1.1.1.3   root     2303: #endif // !UNICODE
1.1.1.2   root     2304: int WINAPI EndDoc(HDC);
                   2305: int WINAPI StartPage(HDC);
                   2306: int WINAPI EndPage(HDC);
                   2307: int WINAPI AbortDoc(HDC);
                   2308: int WINAPI SetAbortProc(HDC, ABORTPROC);
                   2309: 
                   2310: BOOL WINAPI AbortPath(HDC);
                   2311: BOOL WINAPI ArcTo(HDC, int, int, int, int, int, int,int, int);
                   2312: BOOL WINAPI BeginPath(HDC);
                   2313: BOOL WINAPI CloseFigure(HDC);
                   2314: BOOL WINAPI EndPath(HDC);
                   2315: BOOL WINAPI FillPath(HDC);
                   2316: BOOL WINAPI FlattenPath(HDC);
                   2317: int  WINAPI GetPath(HDC, LPPOINT, LPBYTE, int);
                   2318: HRGN WINAPI PathToRegion(HDC);
1.1.1.4 ! root     2319: BOOL WINAPI PolyDraw(HDC, CONST POINT *, CONST BYTE *, int);
1.1.1.2   root     2320: BOOL WINAPI SelectClipPath(HDC, int);
                   2321: int  WINAPI SetArcDirection(HDC, int);
                   2322: BOOL WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT);
                   2323: BOOL WINAPI StrokeAndFillPath(HDC);
                   2324: BOOL WINAPI StrokePath(HDC);
                   2325: BOOL WINAPI WidenPath(HDC);
1.1.1.4 ! root     2326: HPEN WINAPI ExtCreatePen(DWORD, DWORD, CONST LOGBRUSH *, DWORD, CONST DWORD *);
1.1.1.2   root     2327: BOOL WINAPI GetMiterLimit(HDC, PFLOAT);
                   2328: int  WINAPI GetArcDirection(HDC);
1.1       root     2329: 
1.1.1.2   root     2330: int   WINAPI GetObjectA(HGDIOBJ, int, LPVOID);
                   2331: int   WINAPI GetObjectW(HGDIOBJ, int, LPVOID);
1.1       root     2332: #ifdef UNICODE
1.1.1.4 ! root     2333: #define GetObject  GetObjectW
1.1       root     2334: #else
1.1.1.4 ! root     2335: #define GetObject  GetObjectA
1.1       root     2336: #endif // !UNICODE
1.1.1.2   root     2337: BOOL  WINAPI MoveToEx(HDC, int, int, LPPOINT);
                   2338: BOOL  WINAPI TextOutA(HDC, int, int, LPCSTR, int);
                   2339: BOOL  WINAPI TextOutW(HDC, int, int, LPCWSTR, int);
1.1       root     2340: #ifdef UNICODE
1.1.1.4 ! root     2341: #define TextOut  TextOutW
1.1       root     2342: #else
1.1.1.4 ! root     2343: #define TextOut  TextOutA
1.1       root     2344: #endif // !UNICODE
1.1.1.4 ! root     2345: BOOL  WINAPI ExtTextOutA(HDC, int, int, UINT, CONST RECT *,LPCSTR, UINT, CONST INT *);
        !          2346: BOOL  WINAPI ExtTextOutW(HDC, int, int, UINT, CONST RECT *,LPCWSTR, UINT, CONST INT *);
1.1       root     2347: #ifdef UNICODE
1.1.1.4 ! root     2348: #define ExtTextOut  ExtTextOutW
1.1       root     2349: #else
1.1.1.4 ! root     2350: #define ExtTextOut  ExtTextOutA
1.1       root     2351: #endif // !UNICODE
1.1.1.4 ! root     2352: BOOL  WINAPI PolyTextOutA(HDC, CONST POLYTEXTA *, int);
        !          2353: BOOL  WINAPI PolyTextOutW(HDC, CONST POLYTEXTW *, int);
1.1.1.3   root     2354: #ifdef UNICODE
1.1.1.4 ! root     2355: #define PolyTextOut  PolyTextOutW
1.1.1.3   root     2356: #else
1.1.1.4 ! root     2357: #define PolyTextOut  PolyTextOutA
1.1.1.3   root     2358: #endif // !UNICODE
1.1       root     2359: 
1.1.1.2   root     2360: HRGN  WINAPI CreatePolygonRgn(CONST POINT *, int, int);
                   2361: BOOL  WINAPI DPtoLP(HDC, LPPOINT, int);
                   2362: BOOL  WINAPI LPtoDP(HDC, LPPOINT, int);
1.1.1.3   root     2363: BOOL  WINAPI Polygon(HDC, CONST POINT *, int);
1.1.1.2   root     2364: BOOL  WINAPI Polyline(HDC, CONST POINT *, int);
                   2365: 
1.1.1.4 ! root     2366: BOOL  WINAPI PolyBezier(HDC, CONST POINT *, DWORD);
        !          2367: BOOL  WINAPI PolyBezierTo(HDC, CONST POINT *, DWORD);
        !          2368: BOOL  WINAPI PolylineTo(HDC, CONST POINT *, DWORD);
1.1.1.2   root     2369: 
                   2370: BOOL  WINAPI SetViewportExtEx(HDC, int, int, LPSIZE);
                   2371: BOOL  WINAPI SetViewportOrgEx(HDC, int, int, LPPOINT);
                   2372: BOOL  WINAPI SetWindowExtEx(HDC, int, int, LPSIZE);
                   2373: BOOL  WINAPI SetWindowOrgEx(HDC, int, int, LPPOINT);
                   2374: 
                   2375: BOOL  WINAPI OffsetViewportOrgEx(HDC, int, int, LPPOINT);
                   2376: BOOL  WINAPI OffsetWindowOrgEx(HDC, int, int, LPPOINT);
                   2377: BOOL  WINAPI ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE);
                   2378: BOOL  WINAPI ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE);
                   2379: BOOL  WINAPI SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE);
                   2380: BOOL  WINAPI SetBrushOrgEx(HDC, int, int, LPPOINT);
1.1       root     2381: 
1.1.1.2   root     2382: int   WINAPI GetTextFaceA(HDC, int, LPSTR);
                   2383: int   WINAPI GetTextFaceW(HDC, int, LPWSTR);
1.1       root     2384: #ifdef UNICODE
1.1.1.4 ! root     2385: #define GetTextFace  GetTextFaceW
1.1       root     2386: #else
1.1.1.4 ! root     2387: #define GetTextFace  GetTextFaceA
1.1       root     2388: #endif // !UNICODE
                   2389: 
1.1.1.2   root     2390: #define FONTMAPPER_MAX 10
                   2391: 
                   2392: typedef struct tagKERNINGPAIR {
                   2393:    WORD wFirst;
                   2394:    WORD wSecond;
                   2395:    int  iKernAmount;
                   2396: } KERNINGPAIR, *LPKERNINGPAIR;
                   2397: 
1.1.1.4 ! root     2398: DWORD WINAPI GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR);
        !          2399: DWORD WINAPI GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR);
        !          2400: #ifdef UNICODE
        !          2401: #define GetKerningPairs  GetKerningPairsW
        !          2402: #else
        !          2403: #define GetKerningPairs  GetKerningPairsA
        !          2404: #endif // !UNICODE
1.1.1.2   root     2405: 
1.1.1.4 ! root     2406: BOOL  WINAPI GetDCOrgEx(HDC,LPPOINT);
1.1.1.3   root     2407: BOOL  WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT);
                   2408: BOOL  WINAPI UnrealizeObject(HGDIOBJ);
                   2409: 
1.1.1.2   root     2410: BOOL  WINAPI GdiFlush();
                   2411: DWORD WINAPI GdiSetBatchLimit(DWORD);
                   2412: DWORD WINAPI GdiGetBatchLimit();
1.1       root     2413: 
1.1.1.4 ! root     2414: #ifndef NOMETAFILE
        !          2415: 
        !          2416: // Enhanced metafile constants.
        !          2417: 
        !          2418: #define ENHMETA_SIGNATURE       0x464D4520
        !          2419: 
        !          2420: // Stock object flag used in the object handle index in the enhanced
        !          2421: // metafile records.
        !          2422: // E.g. The object handle index (META_STOCK_OBJECT | BLACK_BRUSH)
        !          2423: // represents the stock object BLACK_BRUSH.
        !          2424: 
        !          2425: #define ENHMETA_STOCK_OBJECT    0x80000000
        !          2426: 
        !          2427: // Enhanced metafile record types.
        !          2428: 
        !          2429: #define EMR_HEADER                      1
        !          2430: #define EMR_POLYBEZIER                  2
        !          2431: #define EMR_POLYGON                     3
        !          2432: #define EMR_POLYLINE                    4
        !          2433: #define EMR_POLYBEZIERTO                5
        !          2434: #define EMR_POLYLINETO                  6
        !          2435: #define EMR_POLYPOLYLINE                7
        !          2436: #define EMR_POLYPOLYGON                 8
        !          2437: #define EMR_SETWINDOWEXTEX              9
        !          2438: #define EMR_SETWINDOWORGEX              10
        !          2439: #define EMR_SETVIEWPORTEXTEX            11
        !          2440: #define EMR_SETVIEWPORTORGEX            12
        !          2441: #define EMR_SETBRUSHORGEX               13
        !          2442: #define EMR_EOF                         14
        !          2443: #define EMR_SETPIXELV                   15
        !          2444: #define EMR_SETMAPPERFLAGS              16
        !          2445: #define EMR_SETMAPMODE                  17
        !          2446: #define EMR_SETBKMODE                   18
        !          2447: #define EMR_SETPOLYFILLMODE             19
        !          2448: #define EMR_SETROP2                     20
        !          2449: #define EMR_SETSTRETCHBLTMODE           21
        !          2450: #define EMR_SETTEXTALIGN                22
        !          2451: #define EMR_SETCOLORADJUSTMENT          23
        !          2452: #define EMR_SETTEXTCOLOR                24
        !          2453: #define EMR_SETBKCOLOR                  25
        !          2454: #define EMR_OFFSETCLIPRGN               26
        !          2455: #define EMR_MOVETOEX                    27
        !          2456: #define EMR_SETMETARGN                  28
        !          2457: #define EMR_EXCLUDECLIPRECT             29
        !          2458: #define EMR_INTERSECTCLIPRECT           30
        !          2459: #define EMR_SCALEVIEWPORTEXTEX          31
        !          2460: #define EMR_SCALEWINDOWEXTEX            32
        !          2461: #define EMR_SAVEDC                      33
        !          2462: #define EMR_RESTOREDC                   34
        !          2463: #define EMR_SETWORLDTRANSFORM           35
        !          2464: #define EMR_MODIFYWORLDTRANSFORM        36
        !          2465: #define EMR_SELECTOBJECT                37
        !          2466: #define EMR_CREATEPEN                   38
        !          2467: #define EMR_CREATEBRUSHINDIRECT         39
        !          2468: #define EMR_DELETEOBJECT                40
        !          2469: #define EMR_ANGLEARC                    41
        !          2470: #define EMR_ELLIPSE                     42
        !          2471: #define EMR_RECTANGLE                   43
        !          2472: #define EMR_ROUNDRECT                   44
        !          2473: #define EMR_ARC                         45
        !          2474: #define EMR_CHORD                       46
        !          2475: #define EMR_PIE                         47
        !          2476: #define EMR_SELECTPALETTE               48
        !          2477: #define EMR_CREATEPALETTE               49
        !          2478: #define EMR_SETPALETTEENTRIES           50
        !          2479: #define EMR_RESIZEPALETTE               51
        !          2480: #define EMR_REALIZEPALETTE              52
        !          2481: #define EMR_EXTFLOODFILL                53
        !          2482: #define EMR_LINETO                      54
        !          2483: #define EMR_ARCTO                       55
        !          2484: #define EMR_POLYDRAW                    56
        !          2485: #define EMR_SETARCDIRECTION             57
        !          2486: #define EMR_SETMITERLIMIT               58
        !          2487: #define EMR_BEGINPATH                   59
        !          2488: #define EMR_ENDPATH                     60
        !          2489: #define EMR_CLOSEFIGURE                 61
        !          2490: #define EMR_FILLPATH                    62
        !          2491: #define EMR_STROKEANDFILLPATH           63
        !          2492: #define EMR_STROKEPATH                  64
        !          2493: #define EMR_FLATTENPATH                 65
        !          2494: #define EMR_WIDENPATH                   66
        !          2495: #define EMR_SELECTCLIPPATH              67
        !          2496: #define EMR_ABORTPATH                   68
        !          2497: 
        !          2498: #define EMR_GDICOMMENT                  70
        !          2499: #define EMR_FILLRGN                     71
        !          2500: #define EMR_FRAMERGN                    72
        !          2501: #define EMR_INVERTRGN                   73
        !          2502: #define EMR_PAINTRGN                    74
        !          2503: #define EMR_EXTSELECTCLIPRGN            75
        !          2504: #define EMR_BITBLT                      76
        !          2505: #define EMR_STRETCHBLT                  77
        !          2506: #define EMR_MASKBLT                     78
        !          2507: #define EMR_PLGBLT                      79
        !          2508: #define EMR_SETDIBITSTODEVICE           80
        !          2509: #define EMR_STRETCHDIBITS               81
        !          2510: #define EMR_EXTCREATEFONTINDIRECTW      82
        !          2511: #define EMR_EXTTEXTOUTA                 83
        !          2512: #define EMR_EXTTEXTOUTW                 84
        !          2513: #define EMR_POLYBEZIER16                85
        !          2514: #define EMR_POLYGON16                   86
        !          2515: #define EMR_POLYLINE16                  87
        !          2516: #define EMR_POLYBEZIERTO16              88
        !          2517: #define EMR_POLYLINETO16                89
        !          2518: #define EMR_POLYPOLYLINE16              90
        !          2519: #define EMR_POLYPOLYGON16               91
        !          2520: #define EMR_POLYDRAW16                  92
        !          2521: #define EMR_CREATEMONOBRUSH             93
        !          2522: #define EMR_CREATEDIBPATTERNBRUSHPT     94
        !          2523: #define EMR_EXTCREATEPEN                95
        !          2524: #define EMR_POLYTEXTOUTA                96
        !          2525: #define EMR_POLYTEXTOUTW                97
        !          2526: 
        !          2527: #define EMR_MIN                         1
        !          2528: #define EMR_MAX                         97
        !          2529: 
        !          2530: // Base record type for the enhanced metafile.
        !          2531: 
        !          2532: typedef struct tagEMR
        !          2533: {
        !          2534:     DWORD   iType;              // Enhanced metafile record type
        !          2535:     DWORD   nSize;              // Length of the record in bytes.
        !          2536:                                 // This must be a multiple of 4.
        !          2537: } EMR, *PEMR;
        !          2538: 
        !          2539: // Base text record type for the enhanced metafile.
        !          2540: 
        !          2541: typedef struct tagEMRTEXT
        !          2542: {
        !          2543:     POINTL  ptlReference;
        !          2544:     DWORD   nChars;
        !          2545:     DWORD   offString;          // Offset to the string
        !          2546:     DWORD   fOptions;
        !          2547:     RECTL   rcl;
        !          2548:     DWORD   offDx;              // Offset to the inter-character spacing array.
        !          2549:                                 // This is always given.
        !          2550: } EMRTEXT, *PEMRTEXT;
        !          2551: 
        !          2552: // Record structures for the enhanced metafile.
        !          2553: 
        !          2554: typedef struct tagABORTPATH
        !          2555: {
        !          2556:     EMR     emr;
        !          2557: } EMRABORTPATH,      *PEMRABORTPATH,
        !          2558:   EMRBEGINPATH,      *PEMRBEGINPATH,
        !          2559:   EMRENDPATH,        *PEMRENDPATH,
        !          2560:   EMRCLOSEFIGURE,    *PEMRCLOSEFIGURE,
        !          2561:   EMRFLATTENPATH,    *PEMRFLATTENPATH,
        !          2562:   EMRWIDENPATH,      *PEMRWIDENPATH,
        !          2563:   EMRSETMETARGN,     *PEMRSETMETARGN,
        !          2564:   EMRSAVEDC,         *PEMRSAVEDC,
        !          2565:   EMRREALIZEPALETTE, *PEMRREALIZEPALETTE;
        !          2566: 
        !          2567: typedef struct tagEMRSELECTCLIPPATH
        !          2568: {
        !          2569:     EMR     emr;
        !          2570:     DWORD   iMode;
        !          2571: } EMRSELECTCLIPPATH,    *PEMRSELECTCLIPPATH,
        !          2572:   EMRSETBKMODE,         *PEMRSETBKMODE,
        !          2573:   EMRSETMAPMODE,        *PEMRSETMAPMODE,
        !          2574:   EMRSETPOLYFILLMODE,   *PEMRSETPOLYFILLMODE,
        !          2575:   EMRSETROP2,           *PEMRSETROP2,
        !          2576:   EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
        !          2577:   EMRSETTEXTALIGN,      *PEMRSETTEXTALIGN;
        !          2578: 
        !          2579: typedef struct tagEMRSETMITERLIMIT
        !          2580: {
        !          2581:     EMR     emr;
        !          2582:     FLOAT   eMiterLimit;
        !          2583: } EMRSETMITERLIMIT, *PEMRSETMITERLIMIT;
        !          2584: 
        !          2585: typedef struct tagEMRRESTOREDC
        !          2586: {
        !          2587:     EMR     emr;
        !          2588:     LONG    iRelative;          // Specifies a relative instance
        !          2589: } EMRRESTOREDC, *PEMRRESTOREDC;
        !          2590: 
        !          2591: typedef struct tagEMRSETARCDIRECTION
        !          2592: {
        !          2593:     EMR     emr;
        !          2594:     DWORD   iArcDirection;      // Specifies the arc direction in the
        !          2595:                                 // advanced graphics mode.
        !          2596: } EMRSETARCDIRECTION, *PEMRSETARCDIRECTION;
        !          2597: 
        !          2598: typedef struct tagEMRSETMAPPERFLAGS
        !          2599: {
        !          2600:     EMR     emr;
        !          2601:     DWORD   dwFlags;
        !          2602: } EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS;
        !          2603: 
        !          2604: typedef struct tagEMRSETTEXTCOLOR
        !          2605: {
        !          2606:     EMR     emr;
        !          2607:     COLORREF crColor;
        !          2608: } EMRSETBKCOLOR,   *PEMRSETBKCOLOR,
        !          2609:   EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR;
        !          2610: 
        !          2611: typedef struct tagEMRSELECTOBJECT
        !          2612: {
        !          2613:     EMR     emr;
        !          2614:     DWORD   ihObject;           // Object handle index
        !          2615: } EMRSELECTOBJECT, *PEMRSELECTOBJECT,
        !          2616:   EMRDELETEOBJECT, *PEMRDELETEOBJECT;
        !          2617: 
        !          2618: typedef struct tagEMRSELECTPALETTE
        !          2619: {
        !          2620:     EMR     emr;
        !          2621:     DWORD   ihPal;              // Palette handle index, background mode only
        !          2622: } EMRSELECTPALETTE, *PEMRSELECTPALETTE;
        !          2623: 
        !          2624: typedef struct tagEMRRESIZEPALETTE
        !          2625: {
        !          2626:     EMR     emr;
        !          2627:     DWORD   ihPal;              // Palette handle index
        !          2628:     DWORD   cEntries;
        !          2629: } EMRRESIZEPALETTE, *PEMRRESIZEPALETTE;
        !          2630: 
        !          2631: typedef struct tagEMRSETPALETTEENTRIES
        !          2632: {
        !          2633:     EMR     emr;
        !          2634:     DWORD   ihPal;              // Palette handle index
        !          2635:     DWORD   iStart;
        !          2636:     DWORD   cEntries;
        !          2637:     PALETTEENTRY aPalEntries[1];// The peFlags fields do not contain any flags
        !          2638: } EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES;
        !          2639: 
        !          2640: typedef struct tagEMRSETCOLORADJUSTMENT
        !          2641: {
        !          2642:     EMR     emr;
        !          2643:     COLORADJUSTMENT ColorAdjustment;
        !          2644: } EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT;
        !          2645: 
        !          2646: typedef struct tagEMRGDICOMMENT
        !          2647: {
        !          2648:     EMR     emr;
        !          2649:     DWORD   cbData;             // Size of data in bytes
        !          2650:     BYTE    Data[1];
        !          2651: } EMRGDICOMMENT, *PEMRGDICOMMENT;
        !          2652: 
        !          2653: typedef struct tagEMREOF
        !          2654: {
        !          2655:     EMR     emr;
        !          2656:     DWORD   nPalEntries;        // Number of palette entries
        !          2657:     DWORD   offPalEntries;      // Offset to the palette entries
        !          2658:     DWORD   nSizeLast;          // Same as nSize and must be the last DWORD
        !          2659:                                 // of the record.  The palette entries,
        !          2660:                                 // if exist, precede this field.
        !          2661: } EMREOF, *PEMREOF;
        !          2662: 
        !          2663: typedef struct tagEMRLINETO
        !          2664: {
        !          2665:     EMR     emr;
        !          2666:     POINTL  ptl;
        !          2667: } EMRLINETO,   *PEMRLINETO,
        !          2668:   EMRMOVETOEX, *PEMRMOVETOEX;
        !          2669: 
        !          2670: typedef struct tagEMROFFSETCLIPRGN
        !          2671: {
        !          2672:     EMR     emr;
        !          2673:     POINTL  ptlOffset;
        !          2674: } EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN;
        !          2675: 
        !          2676: typedef struct tagEMRFILLPATH
        !          2677: {
        !          2678:     EMR     emr;
        !          2679:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2680: } EMRFILLPATH,          *PEMRFILLPATH,
        !          2681:   EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH,
        !          2682:   EMRSTROKEPATH,        *PEMRSTROKEPATH;
        !          2683: 
        !          2684: typedef struct tagEMREXCLUDECLIPRECT
        !          2685: {
        !          2686:     EMR     emr;
        !          2687:     RECTL   rclClip;
        !          2688: } EMREXCLUDECLIPRECT,   *PEMREXCLUDECLIPRECT,
        !          2689:   EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT;
        !          2690: 
        !          2691: typedef struct tagEMRSETVIEWPORTORGEX
        !          2692: {
        !          2693:     EMR     emr;
        !          2694:     POINTL  ptlOrigin;
        !          2695: } EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX,
        !          2696:   EMRSETWINDOWORGEX,   *PEMRSETWINDOWORGEX,
        !          2697:   EMRSETBRUSHORGEX,    *PEMRSETBRUSHORGEX;
        !          2698: 
        !          2699: typedef struct tagEMRSETVIEWPORTEXTEX
        !          2700: {
        !          2701:     EMR     emr;
        !          2702:     SIZEL   szlExtent;
        !          2703: } EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX,
        !          2704:   EMRSETWINDOWEXTEX,   *PEMRSETWINDOWEXTEX;
        !          2705: 
        !          2706: typedef struct tagEMRSCALEVIEWPORTEXTEX
        !          2707: {
        !          2708:     EMR     emr;
        !          2709:     LONG    xNum;
        !          2710:     LONG    xDenom;
        !          2711:     LONG    yNum;
        !          2712:     LONG    yDenom;
        !          2713: } EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX,
        !          2714:   EMRSCALEWINDOWEXTEX,   *PEMRSCALEWINDOWEXTEX;
        !          2715: 
        !          2716: typedef struct tagEMRSETWORLDTRANSFORM
        !          2717: {
        !          2718:     EMR     emr;
        !          2719:     XFORM   xform;
        !          2720: } EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM;
        !          2721: 
        !          2722: typedef struct tagEMRMODIFYWORLDTRANSFORM
        !          2723: {
        !          2724:     EMR     emr;
        !          2725:     XFORM   xform;
        !          2726:     DWORD   iMode;
        !          2727: } EMRMODIFYWORLDTRANSFORM, *PEMRMODIFYWORLDTRANSFORM;
        !          2728: 
        !          2729: typedef struct tagEMRSETPIXELV
        !          2730: {
        !          2731:     EMR     emr;
        !          2732:     POINTL  ptlPixel;
        !          2733:     COLORREF crColor;
        !          2734: } EMRSETPIXELV, *PEMRSETPIXELV;
        !          2735: 
        !          2736: typedef struct tagEMREXTFLOODFILL
        !          2737: {
        !          2738:     EMR     emr;
        !          2739:     POINTL  ptlStart;
        !          2740:     COLORREF crColor;
        !          2741:     DWORD   iMode;
        !          2742: } EMREXTFLOODFILL, *PEMREXTFLOODFILL;
        !          2743: 
        !          2744: typedef struct tagEMRELLIPSE
        !          2745: {
        !          2746:     EMR     emr;
        !          2747:     RECTL   rclBox;             // Inclusive-inclusive bounding rectangle
        !          2748: } EMRELLIPSE,  *PEMRELLIPSE,
        !          2749:   EMRRECTANGLE, *PEMRRECTANGLE;
        !          2750: 
        !          2751: typedef struct tagEMRROUNDRECT
        !          2752: {
        !          2753:     EMR     emr;
        !          2754:     RECTL   rclBox;             // Inclusive-inclusive bounding rectangle
        !          2755:     SIZEL   szlCorner;
        !          2756: } EMRROUNDRECT, *PEMRROUNDRECT;
        !          2757: 
        !          2758: typedef struct tagEMRARC
        !          2759: {
        !          2760:     EMR     emr;
        !          2761:     RECTL   rclBox;             // Inclusive-inclusive bounding rectangle
        !          2762:     POINTL  ptlStart;
        !          2763:     POINTL  ptlEnd;
        !          2764: } EMRARC,   *PEMRARC,
        !          2765:   EMRARCTO, *PEMRARCTO,
        !          2766:   EMRCHORD, *PEMRCHORD,
        !          2767:   EMRPIE,   *PEMRPIE;
        !          2768: 
        !          2769: typedef struct tagEMRANGLEARC
        !          2770: {
        !          2771:     EMR     emr;
        !          2772:     POINTL  ptlCenter;
        !          2773:     DWORD   nRadius;
        !          2774:     FLOAT   eStartAngle;
        !          2775:     FLOAT   eSweepAngle;
        !          2776: } EMRANGLEARC, *PEMRANGLEARC;
        !          2777: 
        !          2778: typedef struct tagEMRPOLYLINE
        !          2779: {
        !          2780:     EMR     emr;
        !          2781:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2782:     DWORD   cptl;
        !          2783:     POINTL  aptl[1];
        !          2784: } EMRPOLYLINE,     *PEMRPOLYLINE,
        !          2785:   EMRPOLYBEZIER,   *PEMRPOLYBEZIER,
        !          2786:   EMRPOLYGON,      *PEMRPOLYGON,
        !          2787:   EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO,
        !          2788:   EMRPOLYLINETO,   *PEMRPOLYLINETO;
        !          2789: 
        !          2790: typedef struct tagEMRPOLYLINE16
        !          2791: {
        !          2792:     EMR     emr;
        !          2793:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2794:     DWORD   cpts;
        !          2795:     POINTS  apts[1];
        !          2796: } EMRPOLYLINE16,     *PEMRPOLYLINE16,
        !          2797:   EMRPOLYBEZIER16,   *PEMRPOLYBEZIER16,
        !          2798:   EMRPOLYGON16,      *PEMRPOLYGON16,
        !          2799:   EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16,
        !          2800:   EMRPOLYLINETO16,   *PEMRPOLYLINETO16;
        !          2801: 
        !          2802: typedef struct tagEMRPOLYDRAW
        !          2803: {
        !          2804:     EMR     emr;
        !          2805:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2806:     DWORD   cptl;               // Number of points
        !          2807:     POINTL  aptl[1];            // Array of points
        !          2808:     BYTE    abTypes[1];         // Array of point types
        !          2809: } EMRPOLYDRAW, *PEMRPOLYDRAW;
        !          2810: 
        !          2811: typedef struct tagEMRPOLYDRAW16
        !          2812: {
        !          2813:     EMR     emr;
        !          2814:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2815:     DWORD   cpts;               // Number of points
        !          2816:     POINTS  apts[1];            // Array of points
        !          2817:     BYTE    abTypes[1];         // Array of point types
        !          2818: } EMRPOLYDRAW16, *PEMRPOLYDRAW16;
        !          2819: 
        !          2820: typedef struct tagEMRPOLYPOLYLINE
        !          2821: {
        !          2822:     EMR     emr;
        !          2823:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2824:     DWORD   nPolys;             // Number of polys
        !          2825:     DWORD   cptl;               // Total number of points in all polys
        !          2826:     DWORD   aPolyCounts[1];     // Array of point counts for each poly
        !          2827:     POINTL  aptl[1];            // Array of points
        !          2828: } EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE,
        !          2829:   EMRPOLYPOLYGON,  *PEMRPOLYPOLYGON;
        !          2830: 
        !          2831: typedef struct tagEMRPOLYPOLYLINE16
        !          2832: {
        !          2833:     EMR     emr;
        !          2834:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2835:     DWORD   nPolys;             // Number of polys
        !          2836:     DWORD   cpts;               // Total number of points in all polys
        !          2837:     DWORD   aPolyCounts[1];     // Array of point counts for each poly
        !          2838:     POINTS  apts[1];            // Array of points
        !          2839: } EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16,
        !          2840:   EMRPOLYPOLYGON16,  *PEMRPOLYPOLYGON16;
        !          2841: 
        !          2842: typedef struct tagEMRINVERTRGN
        !          2843: {
        !          2844:     EMR     emr;
        !          2845:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2846:     DWORD   cbRgnData;          // Size of region data in bytes
        !          2847:     BYTE    RgnData[1];
        !          2848: } EMRINVERTRGN, *PEMRINVERTRGN,
        !          2849:   EMRPAINTRGN,  *PEMRPAINTRGN;
        !          2850: 
        !          2851: typedef struct tagEMRFILLRGN
        !          2852: {
        !          2853:     EMR     emr;
        !          2854:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2855:     DWORD   cbRgnData;          // Size of region data in bytes
        !          2856:     DWORD   ihBrush;            // Brush handle index
        !          2857:     BYTE    RgnData[1];
        !          2858: } EMRFILLRGN, *PEMRFILLRGN;
        !          2859: 
        !          2860: typedef struct tagEMRFRAMERGN
        !          2861: {
        !          2862:     EMR     emr;
        !          2863:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2864:     DWORD   cbRgnData;          // Size of region data in bytes
        !          2865:     DWORD   ihBrush;            // Brush handle index
        !          2866:     SIZEL   szlStroke;
        !          2867:     BYTE    RgnData[1];
        !          2868: } EMRFRAMERGN, *PEMRFRAMERGN;
        !          2869: 
        !          2870: typedef struct tagEMREXTSELECTCLIPRGN
        !          2871: {
        !          2872:     EMR     emr;
        !          2873:     DWORD   cbRgnData;          // Size of region data in bytes
        !          2874:     DWORD   iMode;
        !          2875:     BYTE    RgnData[1];
        !          2876: } EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN;
        !          2877: 
        !          2878: typedef struct tagEMREXTTEXTOUTA
        !          2879: {
        !          2880:     EMR     emr;
        !          2881:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2882:     DWORD   iGraphicsMode;      // Current graphics mode
        !          2883:     FLOAT   exScale;            // X and Y scales from Page units to .01mm units
        !          2884:     FLOAT   eyScale;            //   if graphics mode is GM_COMPATIBLE.
        !          2885:     EMRTEXT emrtext;            // This is followed by the string and spacing
        !          2886:                                 // array
        !          2887: } EMREXTTEXTOUTA, *PEMREXTTEXTOUTA,
        !          2888:   EMREXTTEXTOUTW, *PEMREXTTEXTOUTW;
        !          2889: 
        !          2890: typedef struct tagEMRPOLYTEXTOUTA
        !          2891: {
        !          2892:     EMR     emr;
        !          2893:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2894:     DWORD   iGraphicsMode;      // Current graphics mode
        !          2895:     FLOAT   exScale;            // X and Y scales from Page units to .01mm units
        !          2896:     FLOAT   eyScale;            //   if graphics mode is GM_COMPATIBLE.
        !          2897:     LONG    cStrings;
        !          2898:     EMRTEXT aemrtext[1];        // Array of EMRTEXT structures.  This is
        !          2899:                                 // followed by the strings and spacing arrays.
        !          2900: } EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA,
        !          2901:   EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW;
        !          2902: 
        !          2903: typedef struct tagEMRBITBLT
        !          2904: {
        !          2905:     EMR     emr;
        !          2906:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2907:     LONG    xDest;
        !          2908:     LONG    yDest;
        !          2909:     LONG    cxDest;
        !          2910:     LONG    cyDest;
        !          2911:     DWORD   dwRop;
        !          2912:     LONG    xSrc;
        !          2913:     LONG    ySrc;
        !          2914:     XFORM   xformSrc;           // Source DC transform
        !          2915:     COLORREF crBkColorSrc;      // Source DC BkColor in RGB
        !          2916:     DWORD   iUsageSrc;          // Source bitmap info color table usage
        !          2917:                                 // (DIB_RGB_COLORS)
        !          2918:     DWORD   offBmiSrc;          // Offset to the source BITMAPINFO structure
        !          2919:     DWORD   cbBmiSrc;           // Size of the source BITMAPINFO structure
        !          2920:     DWORD   offBitsSrc;         // Offset to the source bitmap bits
        !          2921:     DWORD   cbBitsSrc;          // Size of the source bitmap bits
        !          2922: } EMRBITBLT, *PEMRBITBLT;
        !          2923: 
        !          2924: typedef struct tagEMRSTRETCHBLT
        !          2925: {
        !          2926:     EMR     emr;
        !          2927:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2928:     LONG    xDest;
        !          2929:     LONG    yDest;
        !          2930:     LONG    cxDest;
        !          2931:     LONG    cyDest;
        !          2932:     DWORD   dwRop;
        !          2933:     LONG    xSrc;
        !          2934:     LONG    ySrc;
        !          2935:     XFORM   xformSrc;           // Source DC transform
        !          2936:     COLORREF crBkColorSrc;      // Source DC BkColor in RGB
        !          2937:     DWORD   iUsageSrc;          // Source bitmap info color table usage
        !          2938:                                 // (DIB_RGB_COLORS)
        !          2939:     DWORD   offBmiSrc;          // Offset to the source BITMAPINFO structure
        !          2940:     DWORD   cbBmiSrc;           // Size of the source BITMAPINFO structure
        !          2941:     DWORD   offBitsSrc;         // Offset to the source bitmap bits
        !          2942:     DWORD   cbBitsSrc;          // Size of the source bitmap bits
        !          2943:     LONG    cxSrc;
        !          2944:     LONG    cySrc;
        !          2945: } EMRSTRETCHBLT, *PEMRSTRETCHBLT;
        !          2946: 
        !          2947: typedef struct tagEMRMASKBLT
        !          2948: {
        !          2949:     EMR     emr;
        !          2950:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2951:     LONG    xDest;
        !          2952:     LONG    yDest;
        !          2953:     LONG    cxDest;
        !          2954:     LONG    cyDest;
        !          2955:     DWORD   dwRop;
        !          2956:     LONG    xSrc;
        !          2957:     LONG    ySrc;
        !          2958:     XFORM   xformSrc;           // Source DC transform
        !          2959:     COLORREF crBkColorSrc;      // Source DC BkColor in RGB
        !          2960:     DWORD   iUsageSrc;          // Source bitmap info color table usage
        !          2961:                                 // (DIB_RGB_COLORS)
        !          2962:     DWORD   offBmiSrc;          // Offset to the source BITMAPINFO structure
        !          2963:     DWORD   cbBmiSrc;           // Size of the source BITMAPINFO structure
        !          2964:     DWORD   offBitsSrc;         // Offset to the source bitmap bits
        !          2965:     DWORD   cbBitsSrc;          // Size of the source bitmap bits
        !          2966:     LONG    xMask;
        !          2967:     LONG    yMask;
        !          2968:     DWORD   iUsageMask;         // Mask bitmap info color table usage
        !          2969:     DWORD   offBmiMask;         // Offset to the mask BITMAPINFO structure if any
        !          2970:     DWORD   cbBmiMask;          // Size of the mask BITMAPINFO structure if any
        !          2971:     DWORD   offBitsMask;        // Offset to the mask bitmap bits if any
        !          2972:     DWORD   cbBitsMask;         // Size of the mask bitmap bits if any
        !          2973: } EMRMASKBLT, *PEMRMASKBLT;
        !          2974: 
        !          2975: typedef struct tagEMRPLGBLT
        !          2976: {
        !          2977:     EMR     emr;
        !          2978:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          2979:     POINTL  aptlDest[3];
        !          2980:     LONG    xSrc;
        !          2981:     LONG    ySrc;
        !          2982:     LONG    cxSrc;
        !          2983:     LONG    cySrc;
        !          2984:     XFORM   xformSrc;           // Source DC transform
        !          2985:     COLORREF crBkColorSrc;      // Source DC BkColor in RGB
        !          2986:     DWORD   iUsageSrc;          // Source bitmap info color table usage
        !          2987:                                 // (DIB_RGB_COLORS)
        !          2988:     DWORD   offBmiSrc;          // Offset to the source BITMAPINFO structure
        !          2989:     DWORD   cbBmiSrc;           // Size of the source BITMAPINFO structure
        !          2990:     DWORD   offBitsSrc;         // Offset to the source bitmap bits
        !          2991:     DWORD   cbBitsSrc;          // Size of the source bitmap bits
        !          2992:     LONG    xMask;
        !          2993:     LONG    yMask;
        !          2994:     DWORD   iUsageMask;         // Mask bitmap info color table usage
        !          2995:     DWORD   offBmiMask;         // Offset to the mask BITMAPINFO structure if any
        !          2996:     DWORD   cbBmiMask;          // Size of the mask BITMAPINFO structure if any
        !          2997:     DWORD   offBitsMask;        // Offset to the mask bitmap bits if any
        !          2998:     DWORD   cbBitsMask;         // Size of the mask bitmap bits if any
        !          2999: } EMRPLGBLT, *PEMRPLGBLT;
        !          3000: 
        !          3001: typedef struct tagEMRSETDIBITSTODEVICE
        !          3002: {
        !          3003:     EMR     emr;
        !          3004:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          3005:     LONG    xDest;
        !          3006:     LONG    yDest;
        !          3007:     LONG    xSrc;
        !          3008:     LONG    ySrc;
        !          3009:     LONG    cxSrc;
        !          3010:     LONG    cySrc;
        !          3011:     DWORD   offBmiSrc;          // Offset to the source BITMAPINFO structure
        !          3012:     DWORD   cbBmiSrc;           // Size of the source BITMAPINFO structure
        !          3013:     DWORD   offBitsSrc;         // Offset to the source bitmap bits
        !          3014:     DWORD   cbBitsSrc;          // Size of the source bitmap bits
        !          3015:     DWORD   iUsageSrc;          // Source bitmap info color table usage
        !          3016:     DWORD   iStartScan;
        !          3017:     DWORD   cScans;
        !          3018: } EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE;
        !          3019: 
        !          3020: typedef struct tagEMRSTRETCHDIBITS
        !          3021: {
        !          3022:     EMR     emr;
        !          3023:     RECTL   rclBounds;          // Inclusive-inclusive bounds in device units
        !          3024:     LONG    xDest;
        !          3025:     LONG    yDest;
        !          3026:     LONG    xSrc;
        !          3027:     LONG    ySrc;
        !          3028:     LONG    cxSrc;
        !          3029:     LONG    cySrc;
        !          3030:     DWORD   offBmiSrc;          // Offset to the source BITMAPINFO structure
        !          3031:     DWORD   cbBmiSrc;           // Size of the source BITMAPINFO structure
        !          3032:     DWORD   offBitsSrc;         // Offset to the source bitmap bits
        !          3033:     DWORD   cbBitsSrc;          // Size of the source bitmap bits
        !          3034:     DWORD   iUsageSrc;          // Source bitmap info color table usage
        !          3035:     DWORD   dwRop;
        !          3036:     LONG    cxDest;
        !          3037:     LONG    cyDest;
        !          3038: } EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;
        !          3039: 
        !          3040: typedef struct tagEMREXTCREATEFONTINDIRECTW
        !          3041: {
        !          3042:     EMR     emr;
        !          3043:     DWORD   ihFont;             // Font handle index
        !          3044:     EXTLOGFONTW elfw;
        !          3045: } EMREXTCREATEFONTINDIRECTW, *PEMREXTCREATEFONTINDIRECTW;
        !          3046: 
        !          3047: typedef struct tagEMRCREATEPALETTE
        !          3048: {
        !          3049:     EMR     emr;
        !          3050:     DWORD   ihPal;              // Palette handle index
        !          3051:     LOGPALETTE lgpl;            // The peFlags fields in the palette entries
        !          3052:                                 // do not contain any flags
        !          3053: } EMRCREATEPALETTE, *PEMRCREATEPALETTE;
        !          3054: 
        !          3055: typedef struct tagEMRCREATEPEN
        !          3056: {
        !          3057:     EMR     emr;
        !          3058:     DWORD   ihPen;              // Pen handle index
        !          3059:     LOGPEN  lopn;
        !          3060: } EMRCREATEPEN, *PEMRCREATEPEN;
        !          3061: 
        !          3062: typedef struct tagEMREXTCREATEPEN
        !          3063: {
        !          3064:     EMR     emr;
        !          3065:     DWORD   ihPen;              // Pen handle index
        !          3066:     DWORD   offBmi;             // Offset to the BITMAPINFO structure if any
        !          3067:     DWORD   cbBmi;              // Size of the BITMAPINFO structure if any
        !          3068:                                 // The bitmap info is followed by the bitmap
        !          3069:                                 // bits to form a packed DIB.
        !          3070:     DWORD   offBits;            // Offset to the brush bitmap bits if any
        !          3071:     DWORD   cbBits;             // Size of the brush bitmap bits if any
        !          3072:     EXTLOGPEN elp;              // The extended pen with the style array.
        !          3073: } EMREXTCREATEPEN, *PEMREXTCREATEPEN;
        !          3074: 
        !          3075: typedef struct tagEMRCREATEBRUSHINDIRECT
        !          3076: {
        !          3077:     EMR     emr;
        !          3078:     DWORD   ihBrush;            // Brush handle index
        !          3079:     LOGBRUSH lb;                // The style must be BS_SOLID, BS_HOLLOW,
        !          3080:                                 // BS_NULL or BS_HATCHED.
        !          3081: } EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT;
        !          3082: 
        !          3083: typedef struct tagEMRCREATEMONOBRUSH
        !          3084: {
        !          3085:     EMR     emr;
        !          3086:     DWORD   ihBrush;            // Brush handle index
        !          3087:     DWORD   iUsage;             // Bitmap info color table usage
        !          3088:     DWORD   offBmi;             // Offset to the BITMAPINFO structure
        !          3089:     DWORD   cbBmi;              // Size of the BITMAPINFO structure
        !          3090:     DWORD   offBits;            // Offset to the bitmap bits
        !          3091:     DWORD   cbBits;             // Size of the bitmap bits
        !          3092: } EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH;
        !          3093: 
        !          3094: typedef struct tagEMRCREATEDIBPATTERNBRUSHPT
        !          3095: {
        !          3096:     EMR     emr;
        !          3097:     DWORD   ihBrush;            // Brush handle index
        !          3098:     DWORD   iUsage;             // Bitmap info color table usage
        !          3099:     DWORD   offBmi;             // Offset to the BITMAPINFO structure
        !          3100:     DWORD   cbBmi;              // Size of the BITMAPINFO structure
        !          3101:                                 // The bitmap info is followed by the bitmap
        !          3102:                                 // bits to form a packed DIB.
        !          3103:     DWORD   offBits;            // Offset to the bitmap bits
        !          3104:     DWORD   cbBits;             // Size of the bitmap bits
        !          3105: } EMRCREATEDIBPATTERNBRUSHPT, *PEMRCREATEDIBPATTERNBRUSHPT;
        !          3106: 
        !          3107: #endif  /* NOMETAFILE */
        !          3108: 
1.1       root     3109: #endif /* NOGDI */
1.1.1.3   root     3110: 
                   3111: #ifdef __cplusplus
                   3112: }
                   3113: #endif
                   3114: 
1.1       root     3115: #endif /* _WINGDI_ */

unix.superglobalmegacorp.com

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