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

1.1     ! root        1: /*++ BUILD Version: 0004    // Increment this if a change has global effects
        !             2: 
        !             3: Copyright (c) 1985-91, Microsoft Corporation
        !             4: 
        !             5: Module Name:
        !             6: 
        !             7:     wingdi.h
        !             8: 
        !             9: Abstract:
        !            10: 
        !            11:     Procedure declarations, constant definitions and macros for the GDI
        !            12:     component.
        !            13: 
        !            14: --*/
        !            15: 
        !            16: #ifndef _WINGDI_
        !            17: #define _WINGDI_
        !            18: 
        !            19: #ifndef NOGDI
        !            20: 
        !            21: #ifndef NORASTEROPS
        !            22: 
        !            23: /* Binary raster ops */
        !            24: #define R2_BLACK            1   /*  0       */
        !            25: #define R2_NOTMERGEPEN      2   /* DPon     */
        !            26: #define R2_MASKNOTPEN       3   /* DPna     */
        !            27: #define R2_NOTCOPYPEN       4   /* PN       */
        !            28: #define R2_MASKPENNOT       5   /* PDna     */
        !            29: #define R2_NOT              6   /* Dn       */
        !            30: #define R2_XORPEN           7   /* DPx      */
        !            31: #define R2_NOTMASKPEN       8   /* DPan     */
        !            32: #define R2_MASKPEN          9   /* DPa      */
        !            33: #define R2_NOTXORPEN        10  /* DPxn     */
        !            34: #define R2_NOP              11  /* D        */
        !            35: #define R2_MERGENOTPEN      12  /* DPno     */
        !            36: #define R2_COPYPEN          13  /* P        */
        !            37: #define R2_MERGEPENNOT      14  /* PDno     */
        !            38: #define R2_MERGEPEN         15  /* DPo      */
        !            39: #define R2_WHITE            16  /*  1       */
        !            40: #define R2_LAST             16
        !            41: 
        !            42: /*  Ternary raster operations */
        !            43: #define SRCCOPY             (DWORD)0x00CC0020 /* dest = source                   */
        !            44: #define SRCPAINT            (DWORD)0x00EE0086 /* dest = source OR dest           */
        !            45: #define SRCAND              (DWORD)0x008800C6 /* dest = source AND dest          */
        !            46: #define SRCINVERT           (DWORD)0x00660046 /* dest = source XOR dest          */
        !            47: #define SRCERASE            (DWORD)0x00440328 /* dest = source AND (NOT dest )   */
        !            48: #define NOTSRCCOPY          (DWORD)0x00330008 /* dest = (NOT source)             */
        !            49: #define NOTSRCERASE         (DWORD)0x001100A6 /* dest = (NOT src) AND (NOT dest) */
        !            50: #define MERGECOPY           (DWORD)0x00C000CA /* dest = (source AND pattern)     */
        !            51: #define MERGEPAINT          (DWORD)0x00BB0226 /* dest = (NOT source) OR dest     */
        !            52: #define PATCOPY             (DWORD)0x00F00021 /* dest = pattern                  */
        !            53: #define PATPAINT            (DWORD)0x00FB0A09 /* dest = DPSnoo                   */
        !            54: #define PATINVERT           (DWORD)0x005A0049 /* dest = pattern XOR dest         */
        !            55: #define DSTINVERT           (DWORD)0x00550009 /* dest = (NOT dest)               */
        !            56: #define BLACKNESS           (DWORD)0x00000042 /* dest = BLACK                    */
        !            57: #define WHITENESS           (DWORD)0x00FF0062 /* dest = WHITE                    */
        !            58: #endif /* NORASTEROPS */
        !            59: 
        !            60: #define GDI_ERROR (0xFFFFFFFFL)
        !            61: 
        !            62: /* Region Flags */
        !            63: #define ERROR               0
        !            64: #define NULLREGION          1
        !            65: #define SIMPLEREGION        2
        !            66: #define COMPLEXREGION       3
        !            67: #define RGN_ERROR ERROR
        !            68: 
        !            69: /* CombineRgn() Styles */
        !            70: #define RGN_AND             1
        !            71: #define RGN_OR              2
        !            72: #define RGN_XOR             3
        !            73: #define RGN_DIFF            4
        !            74: #define RGN_COPY            5
        !            75: #define RGN_MIN             RGN_AND
        !            76: #define RGN_MAX             RGN_COPY
        !            77: 
        !            78: /* StretchBlt() Modes */
        !            79: #define BLACKONWHITE                 1
        !            80: #define WHITEONBLACK                 2
        !            81: #define COLORONCOLOR                 3
        !            82: #define BLEND                        4
        !            83: #define HALFTONE                     5
        !            84: #define MAXSTRETCHBLTMODE            5
        !            85: 
        !            86: /* PolyFill() Modes */
        !            87: #define ALTERNATE                    1
        !            88: #define WINDING                      2
        !            89: #define POLYFILL_LAST                2
        !            90: 
        !            91: /* Text Alignment Options */
        !            92: #define TA_NOUPDATECP                0
        !            93: #define TA_UPDATECP                  1
        !            94: 
        !            95: #define TA_LEFT                      0
        !            96: #define TA_RIGHT                     2
        !            97: #define TA_CENTER                    6
        !            98: 
        !            99: #define TA_TOP                       0
        !           100: #define TA_BOTTOM                    8
        !           101: #define TA_BASELINE                  24
        !           102: #define TA_MASK       (TA_BASELINE+TA_CENTER+TA_UPDATECP)
        !           103: 
        !           104: #define ETO_GRAYED                   1
        !           105: #define ETO_OPAQUE                   2
        !           106: #define ETO_CLIPPED                  4
        !           107: 
        !           108: #define ASPECT_FILTERING             0x0001
        !           109: 
        !           110: #ifndef NOMETAFILE
        !           111: 
        !           112: /* Metafile Functions */
        !           113: #define META_SETBKCOLOR              0x0201
        !           114: #define META_SETBKMODE               0x0102
        !           115: #define META_SETMAPMODE              0x0103
        !           116: #define META_SETROP2                 0x0104
        !           117: #define META_SETRELABS               0x0105
        !           118: #define META_SETPOLYFILLMODE         0x0106
        !           119: #define META_SETSTRETCHBLTMODE       0x0107
        !           120: #define META_SETTEXTCHAREXTRA        0x0108
        !           121: #define META_SETTEXTCOLOR            0x0209
        !           122: #define META_SETTEXTJUSTIFICATION    0x020A
        !           123: #define META_SETWINDOWORG            0x020B
        !           124: #define META_SETWINDOWEXT            0x020C
        !           125: #define META_SETVIEWPORTORG          0x020D
        !           126: #define META_SETVIEWPORTEXT          0x020E
        !           127: #define META_OFFSETWINDOWORG         0x020F
        !           128: #define META_SCALEWINDOWEXT          0x0400
        !           129: #define META_OFFSETVIEWPORTORG       0x0211
        !           130: #define META_SCALEVIEWPORTEXT        0x0412
        !           131: #define META_LINETO                  0x0213
        !           132: #define META_MOVETO                  0x0214
        !           133: #define META_EXCLUDECLIPRECT         0x0415
        !           134: #define META_INTERSECTCLIPRECT       0x0416
        !           135: #define META_ARC                     0x0817
        !           136: #define META_ELLIPSE                 0x0418
        !           137: #define META_FLOODFILL               0x0419
        !           138: #define META_PIE                     0x081A
        !           139: #define META_RECTANGLE               0x041B
        !           140: #define META_ROUNDRECT               0x061C
        !           141: #define META_PATBLT                  0x061D
        !           142: #define META_SAVEDC                  0x001E
        !           143: #define META_SETPIXEL                0x041F
        !           144: #define META_OFFSETCLIPRGN           0x0220
        !           145: #define META_TEXTOUT                 0x0521
        !           146: #define META_BITBLT                  0x0922
        !           147: #define META_STRETCHBLT              0x0B23
        !           148: #define META_POLYGON                 0x0324
        !           149: #define META_POLYLINE                0x0325
        !           150: #define META_ESCAPE                  0x0626
        !           151: #define META_RESTOREDC               0x0127
        !           152: #define META_FILLREGION              0x0228
        !           153: #define META_FRAMEREGION             0x0429
        !           154: #define META_INVERTREGION            0x012A
        !           155: #define META_PAINTREGION             0x012B
        !           156: #define META_SELECTCLIPREGION        0x012C
        !           157: #define META_SELECTOBJECT            0x012D
        !           158: #define META_SETTEXTALIGN            0x012E
        !           159: #define META_DRAWTEXT                0x062F
        !           160: 
        !           161: #define META_CHORD                   0x0830
        !           162: #define META_SETMAPPERFLAGS          0x0231
        !           163: #define META_EXTTEXTOUT              0x0a32
        !           164: #define META_SETDIBTODEV             0x0d33
        !           165: #define META_SELECTPALETTE           0x0234
        !           166: #define META_REALIZEPALETTE          0x0035
        !           167: #define META_ANIMATEPALETTE          0x0436
        !           168: #define META_SETPALENTRIES           0x0037
        !           169: #define META_POLYPOLYGON             0x0538
        !           170: #define META_RESIZEPALETTE           0x0139
        !           171: 
        !           172: #define META_DIBBITBLT               0x0940
        !           173: #define META_DIBSTRETCHBLT           0x0b41
        !           174: #define META_DIBCREATEPATTERNBRUSH   0x0142
        !           175: #define META_STRETCHDIB              0x0f43
        !           176: 
        !           177: #define META_DELETEOBJECT            0x01f0
        !           178: 
        !           179: #define META_CREATEPALETTE           0x00f7
        !           180: #define META_CREATEBRUSH             0x00F8
        !           181: #define META_CREATEPATTERNBRUSH      0x01F9
        !           182: #define META_CREATEPENINDIRECT       0x02FA
        !           183: #define META_CREATEFONTINDIRECT      0x02FB
        !           184: #define META_CREATEBRUSHINDIRECT     0x02FC
        !           185: #define META_CREATEBITMAPINDIRECT    0x02FD
        !           186: #define META_CREATEBITMAP            0x06FE
        !           187: #define META_CREATEREGION            0x06FF
        !           188: 
        !           189: #endif /* NOMETAFILE */
        !           190: 
        !           191: /* GDI Escapes */
        !           192: #define NEWFRAME                     1
        !           193: #define ABORTDOC                     2
        !           194: #define NEXTBAND                     3
        !           195: #define SETCOLORTABLE                4
        !           196: #define GETCOLORTABLE                5
        !           197: #define FLUSHOUTPUT                  6
        !           198: #define DRAFTMODE                    7
        !           199: #define QUERYESCSUPPORT              8
        !           200: #define SETABORTPROC                 9
        !           201: #define STARTDOC                     10
        !           202: #define ENDDOC                       11
        !           203: #define GETPHYSPAGESIZE              12
        !           204: #define GETPRINTINGOFFSET            13
        !           205: #define GETSCALINGFACTOR             14
        !           206: #define MFCOMMENT                    15
        !           207: #define GETPENWIDTH                  16
        !           208: #define SETCOPYCOUNT                 17
        !           209: #define SELECTPAPERSOURCE            18
        !           210: #define DEVICEDATA                   19
        !           211: #define PASSTHROUGH                  19
        !           212: #define GETTECHNOLGY                 20
        !           213: #define GETTECHNOLOGY                20
        !           214: #define SETENDCAP                    21
        !           215: #define SETLINEJOIN                  22
        !           216: #define SETMITERLIMIT                23
        !           217: #define BANDINFO                     24
        !           218: #define DRAWPATTERNRECT              25
        !           219: #define GETVECTORPENSIZE             26
        !           220: #define GETVECTORBRUSHSIZE           27
        !           221: #define ENABLEDUPLEX                 28
        !           222: #define GETSETPAPERBINS              29
        !           223: #define GETSETPRINTORIENT            30
        !           224: #define ENUMPAPERBINS                31
        !           225: #define SETDIBSCALING                32
        !           226: #define EPSPRINTING                  33
        !           227: #define ENUMPAPERMETRICS             34
        !           228: #define GETSETPAPERMETRICS           35
        !           229: #define POSTSCRIPT_DATA              37
        !           230: #define POSTSCRIPT_IGNORE            38
        !           231: #define GETEXTENDEDTEXTMETRICS       256
        !           232: #define GETEXTENTTABLE               257
        !           233: #define GETPAIRKERNTABLE             258
        !           234: #define GETTRACKKERNTABLE            259
        !           235: #define EXTTEXTOUT                   512
        !           236: #define ENABLERELATIVEWIDTHS         768
        !           237: #define ENABLEPAIRKERNING            769
        !           238: #define SETKERNTRACK                 770
        !           239: #define SETALLJUSTVALUES             771
        !           240: #define SETCHARSET                   772
        !           241: 
        !           242: #define STRETCHBLT                   2048
        !           243: #define BEGIN_PATH                   4096
        !           244: #define CLIP_TO_PATH                 4097
        !           245: #define END_PATH                     4098
        !           246: #define EXT_DEVICE_CAPS              4099
        !           247: #define RESTORE_CTM                  4100
        !           248: #define SAVE_CTM                     4101
        !           249: #define SET_ARC_DIRECTION            4102
        !           250: #define SET_BACKGROUND_COLOR         4103
        !           251: #define SET_POLY_MODE                4104
        !           252: #define SET_SCREEN_ANGLE             4105
        !           253: #define SET_SPREAD                   4106
        !           254: #define TRANSFORM_CTM                4107
        !           255: #define SET_CLIP_BOX                 4108
        !           256: #define SET_BOUNDS                   4109
        !           257: #define SET_MIRROR_MODE              4110
        !           258: 
        !           259: /* Spooler Error Codes */
        !           260: #define SP_NOTREPORTED               0x4000
        !           261: #define SP_ERROR                     (-1)
        !           262: #define SP_APPABORT                  (-2)
        !           263: #define SP_USERABORT                 (-3)
        !           264: #define SP_OUTOFDISK                 (-4)
        !           265: #define SP_OUTOFMEMORY               (-5)
        !           266: 
        !           267: #define PR_JOBSTATUS                 0x0000
        !           268: 
        !           269: /* Object Definitions for EnumObjects(), GetObjectType() */
        !           270: #define OBJ_PEN             1
        !           271: #define OBJ_BRUSH           2
        !           272: #define OBJ_DC              3
        !           273: #define OBJ_METADC          4
        !           274: #define OBJ_PAL             5
        !           275: #define OBJ_FONT            6
        !           276: #define OBJ_BITMAP          7
        !           277: #define OBJ_REGION          8
        !           278: #define OBJ_METAFILE        9
        !           279: #define OBJ_MEMDC           10
        !           280: 
        !           281: /* xform stuff */
        !           282: #define MWT_IDENTITY        1
        !           283: #define MWT_LEFTMULTIPLY    2
        !           284: #define MWT_RIGHTMULTIPLY   3
        !           285: 
        !           286: #define MWT_MIN             MWT_IDENTITY
        !           287: #define MWT_MAX             MWT_RIGHTMULTIPLY
        !           288: 
        !           289: #define _XFORM_
        !           290: typedef struct  tagXFORM
        !           291:   {
        !           292:     FLOAT   eM11;
        !           293:     FLOAT   eM12;
        !           294:     FLOAT   eM21;
        !           295:     FLOAT   eM22;
        !           296:     FLOAT   eDx;
        !           297:     FLOAT   eDy;
        !           298:   } XFORM, *PXFORM, FAR *LPXFORM;
        !           299: 
        !           300: /* Bitmap Header Definition */
        !           301: typedef struct tagBITMAP
        !           302:   {
        !           303:     LONG        bmType;
        !           304:     LONG        bmWidth;
        !           305:     LONG        bmHeight;
        !           306:     LONG        bmWidthBytes;
        !           307:     WORD        bmPlanes;
        !           308:     WORD        bmBitsPixel;
        !           309:     LPSTR       bmBits;
        !           310:   } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
        !           311: 
        !           312: typedef struct tagRGBTRIPLE {
        !           313:         BYTE    rgbtBlue;
        !           314:         BYTE    rgbtGreen;
        !           315:         BYTE    rgbtRed;
        !           316: } RGBTRIPLE;
        !           317: 
        !           318: typedef struct tagRGBQUAD {
        !           319:         BYTE    rgbBlue;
        !           320:         BYTE    rgbGreen;
        !           321:         BYTE    rgbRed;
        !           322:         BYTE    rgbReserved;
        !           323: } RGBQUAD;
        !           324: 
        !           325: /* structures for defining DIBs */
        !           326: typedef struct tagBITMAPCOREHEADER {
        !           327:         DWORD   bcSize;                 /* used to get to color table */
        !           328:         WORD    bcWidth;
        !           329:         WORD    bcHeight;
        !           330:         WORD    bcPlanes;
        !           331:         WORD    bcBitCount;
        !           332: } BITMAPCOREHEADER, FAR *LPBITMAPCOREHEADER, *PBITMAPCOREHEADER;
        !           333: 
        !           334: 
        !           335: typedef struct tagBITMAPINFOHEADER{
        !           336:         DWORD      biSize;
        !           337:         DWORD      biWidth;
        !           338:         DWORD      biHeight;
        !           339:         WORD       biPlanes;
        !           340:         WORD       biBitCount;
        !           341: 
        !           342:         DWORD      biCompression;
        !           343:         DWORD      biSizeImage;
        !           344:         DWORD      biXPelsPerMeter;
        !           345:         DWORD      biYPelsPerMeter;
        !           346:         DWORD      biClrUsed;
        !           347:         DWORD      biClrImportant;
        !           348: } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
        !           349: 
        !           350: /* constants for the biCompression field */
        !           351: #define BI_RGB      0L
        !           352: #define BI_RLE8     1L
        !           353: #define BI_RLE4     2L
        !           354: 
        !           355: typedef struct tagBITMAPINFO {
        !           356:     BITMAPINFOHEADER    bmiHeader;
        !           357:     RGBQUAD             bmiColors[1];
        !           358: } BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
        !           359: 
        !           360: typedef struct tagBITMAPCOREINFO {
        !           361:     BITMAPCOREHEADER    bmciHeader;
        !           362:     RGBTRIPLE           bmciColors[1];
        !           363: } BITMAPCOREINFO, FAR *LPBITMAPCOREINFO, *PBITMAPCOREINFO;
        !           364: 
        !           365: #pragma pack(2)
        !           366: typedef struct tagBITMAPFILEHEADER {
        !           367:         WORD    bfType;
        !           368:         DWORD   bfSize;
        !           369:         WORD    bfReserved1;
        !           370:         WORD    bfReserved2;
        !           371:         DWORD   bfOffBits;
        !           372: } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
        !           373: #pragma pack()
        !           374: 
        !           375: #define MAKEPOINTS(l)       (*((POINTS FAR *)&(l)))
        !           376: 
        !           377: #ifndef NOMETAFILE
        !           378: 
        !           379: /* Clipboard Metafile Picture Structure */
        !           380: typedef struct tagHANDLETABLE
        !           381:   {
        !           382:     HANDLE      objectHandle[1];
        !           383:   } HANDLETABLE, *PHANDLETABLE, FAR *LPHANDLETABLE;
        !           384: 
        !           385: typedef struct tagMETARECORD
        !           386:   {
        !           387:     DWORD       rdSize;
        !           388:     WORD        rdFunction;
        !           389:     WORD        rdParm[1];
        !           390:   } METARECORD, *PMETARECORD, FAR *LPMETARECORD;
        !           391: 
        !           392: typedef struct tagMETAFILEPICT
        !           393:   {
        !           394:     DWORD       mm;
        !           395:     DWORD       xExt;
        !           396:     DWORD       yExt;
        !           397:     HANDLE      hMF;
        !           398:   } METAFILEPICT, FAR *LPMETAFILEPICT;
        !           399: 
        !           400: typedef struct tagMETAHEADER
        !           401: {
        !           402:     WORD        mtType;
        !           403:     WORD        mtHeaderSize;
        !           404:     WORD        mtVersion;
        !           405:     DWORD       mtSize;
        !           406:     WORD        mtNoObjects;
        !           407:     DWORD       mtMaxRecord;
        !           408:     WORD        mtNoParameters;
        !           409: } METAHEADER;
        !           410: 
        !           411: #endif /* NOMETAFILE */
        !           412: 
        !           413: #ifndef NOTEXTMETRIC
        !           414: 
        !           415: typedef struct tagTEXTMETRICA
        !           416: {
        !           417:     LONG        tmHeight;
        !           418:     LONG        tmAscent;
        !           419:     LONG        tmDescent;
        !           420:     LONG        tmInternalLeading;
        !           421:     LONG        tmExternalLeading;
        !           422:     LONG        tmAveCharWidth;
        !           423:     LONG        tmMaxCharWidth;
        !           424:     LONG        tmWeight;
        !           425:     LONG        tmOverhang;
        !           426:     LONG        tmDigitizedAspectX;
        !           427:     LONG        tmDigitizedAspectY;
        !           428:     BYTE        tmFirstChar;
        !           429:     BYTE        tmLastChar;
        !           430:     BYTE        tmDefaultChar;
        !           431:     BYTE        tmBreakChar;
        !           432:     BYTE        tmItalic;
        !           433:     BYTE        tmUnderlined;
        !           434:     BYTE        tmStruckOut;
        !           435:     BYTE        tmPitchAndFamily;
        !           436:     BYTE        tmCharSet;
        !           437: } TEXTMETRICA, *PTEXTMETRICA, NEAR *NPTEXTMETRICA, FAR *LPTEXTMETRICA;
        !           438: typedef struct tagTEXTMETRICW
        !           439: {
        !           440:     LONG        tmHeight;
        !           441:     LONG        tmAscent;
        !           442:     LONG        tmDescent;
        !           443:     LONG        tmInternalLeading;
        !           444:     LONG        tmExternalLeading;
        !           445:     LONG        tmAveCharWidth;
        !           446:     LONG        tmMaxCharWidth;
        !           447:     LONG        tmWeight;
        !           448:     LONG        tmOverhang;
        !           449:     LONG        tmDigitizedAspectX;
        !           450:     LONG        tmDigitizedAspectY;
        !           451:     WCHAR       tmFirstChar;
        !           452:     WCHAR       tmLastChar;
        !           453:     WCHAR       tmDefaultChar;
        !           454:     WCHAR       tmBreakChar;
        !           455:     BYTE        tmItalic;
        !           456:     BYTE        tmUnderlined;
        !           457:     BYTE        tmStruckOut;
        !           458:     BYTE        tmPitchAndFamily;
        !           459:     BYTE        tmCharSet;
        !           460: } TEXTMETRICW, *PTEXTMETRICW, NEAR *NPTEXTMETRICW, FAR *LPTEXTMETRICW;
        !           461: #ifdef UNICODE
        !           462: #define TEXTMETRIC TEXTMETRICW
        !           463: #define PTEXTMETRIC PTEXTMETRICW
        !           464: #define NPTEXTMETRIC NPTEXTMETRICW
        !           465: #define LPTEXTMETRIC LPTEXTMETRICW
        !           466: #else
        !           467: #define TEXTMETRIC TEXTMETRICA
        !           468: #define PTEXTMETRIC PTEXTMETRICA
        !           469: #define NPTEXTMETRIC NPTEXTMETRICA
        !           470: #define LPTEXTMETRIC LPTEXTMETRICA
        !           471: #endif // UNICODE
        !           472: 
        !           473: #endif /* NOTEXTMETRIC */
        !           474: 
        !           475: /* GDI Logical Objects: */
        !           476: 
        !           477: /* Pel Array */
        !           478: typedef struct tagPELARRAY
        !           479:   {
        !           480:     LONG        paXCount;
        !           481:     LONG        paYCount;
        !           482:     LONG        paXExt;
        !           483:     LONG        paYExt;
        !           484:     BYTE        paRGBs;
        !           485:   } PELARRAY, *PPELARRAY, NEAR *NPPELARRAY, FAR *LPPELARRAY;
        !           486: 
        !           487: /* Logical Brush (or Pattern) */
        !           488: typedef struct tagLOGBRUSH
        !           489:   {
        !           490:     DWORD       lbStyle;
        !           491:     DWORD       lbColor;
        !           492:     LONG        lbHatch;
        !           493:   } LOGBRUSH, *PLOGBRUSH, NEAR *NPLOGBRUSH, FAR *LPLOGBRUSH;
        !           494: 
        !           495: typedef LOGBRUSH            PATTERN;
        !           496: typedef PATTERN             *PPATTERN;
        !           497: typedef PATTERN NEAR        *NPPATTERN;
        !           498: typedef PATTERN FAR         *LPPATTERN;
        !           499: 
        !           500: /* Logical Pen */
        !           501: typedef struct tagLOGPEN
        !           502:   {
        !           503:     DWORD       lopnStyle;
        !           504:     POINT       lopnWidth;
        !           505:     DWORD       lopnColor;
        !           506:   } LOGPEN, *PLOGPEN, NEAR *NPLOGPEN, FAR *LPLOGPEN;
        !           507: 
        !           508: typedef struct tagPALETTEENTRY {
        !           509:     BYTE        peRed;
        !           510:     BYTE        peGreen;
        !           511:     BYTE        peBlue;
        !           512:     BYTE        peFlags;
        !           513: } PALETTEENTRY, *PPALETTEENTRY, FAR *LPPALETTEENTRY;
        !           514: 
        !           515: /* Logical Palette */
        !           516: typedef struct tagLOGPALETTE {
        !           517:     WORD        palVersion;
        !           518:     WORD        palNumEntries;
        !           519:     PALETTEENTRY        palPalEntry[1];
        !           520: } LOGPALETTE, *PLOGPALETTE, NEAR *NPLOGPALETTE, FAR *LPLOGPALETTE;
        !           521: 
        !           522: 
        !           523: /* Logical Font */
        !           524: #define LF_FACESIZE         32
        !           525: 
        !           526: 
        !           527: typedef struct tagLOGFONTA
        !           528: {
        !           529:     LONG      lfHeight;
        !           530:     LONG      lfWidth;
        !           531:     LONG      lfEscapement;
        !           532:     LONG      lfOrientation;
        !           533:     LONG      lfWeight;
        !           534:     BYTE      lfItalic;
        !           535:     BYTE      lfUnderline;
        !           536:     BYTE      lfStrikeOut;
        !           537:     BYTE      lfCharSet;
        !           538:     BYTE      lfOutPrecision;
        !           539:     BYTE      lfClipPrecision;
        !           540:     BYTE      lfQuality;
        !           541:     BYTE      lfPitchAndFamily;
        !           542:     BYTE      lfFaceName[LF_FACESIZE];
        !           543: } LOGFONTA, *PLOGFONTA, NEAR *NPLOGFONTA, FAR *LPLOGFONTA;
        !           544: typedef struct tagLOGFONTW
        !           545: {
        !           546:     LONG      lfHeight;
        !           547:     LONG      lfWidth;
        !           548:     LONG      lfEscapement;
        !           549:     LONG      lfOrientation;
        !           550:     LONG      lfWeight;
        !           551:     BYTE      lfItalic;
        !           552:     BYTE      lfUnderline;
        !           553:     BYTE      lfStrikeOut;
        !           554:     BYTE      lfCharSet;
        !           555:     BYTE      lfOutPrecision;
        !           556:     BYTE      lfClipPrecision;
        !           557:     BYTE      lfQuality;
        !           558:     BYTE      lfPitchAndFamily;
        !           559:     WCHAR     lfFaceName[LF_FACESIZE];
        !           560: } LOGFONTW, *PLOGFONTW, NEAR *NPLOGFONTW, FAR *LPLOGFONTW;
        !           561: #ifdef UNICODE
        !           562: #define LOGFONT LOGFONTW
        !           563: #define PLOGFONT PLOGFONTW
        !           564: #define NPLOGFONT NPLOGFONTW
        !           565: #define LPLOGFONT LPLOGFONTW
        !           566: #else
        !           567: #define LOGFONT LOGFONTA
        !           568: #define PLOGFONT PLOGFONTA
        !           569: #define NPLOGFONT NPLOGFONTA
        !           570: #define LPLOGFONT LPLOGFONTA
        !           571: #endif // UNICODE
        !           572: 
        !           573: 
        !           574: #define OUT_DEFAULT_PRECIS      0
        !           575: #define OUT_STRING_PRECIS       1
        !           576: #define OUT_CHARACTER_PRECIS    2
        !           577: #define OUT_STROKE_PRECIS       3
        !           578: 
        !           579: #define CLIP_DEFAULT_PRECIS     0
        !           580: #define CLIP_CHARACTER_PRECIS   1
        !           581: #define CLIP_STROKE_PRECIS      2
        !           582: 
        !           583: #define DEFAULT_QUALITY         0
        !           584: #define DRAFT_QUALITY           1
        !           585: #define PROOF_QUALITY           2
        !           586: 
        !           587: #define DEFAULT_PITCH           0
        !           588: #define FIXED_PITCH             1
        !           589: #define VARIABLE_PITCH          2
        !           590: 
        !           591: #define ANSI_CHARSET            0
        !           592: #define SYMBOL_CHARSET          2
        !           593: #define SHIFTJIS_CHARSET        128
        !           594: #define OEM_CHARSET             255
        !           595: 
        !           596: /* Font Families */
        !           597: #define FF_DONTCARE         (0<<4)  /* Don't care or don't know. */
        !           598: #define FF_ROMAN            (1<<4)  /* Variable stroke width, serifed. */
        !           599:                                     /* Times Roman, Century Schoolbook, etc. */
        !           600: #define FF_SWISS            (2<<4)  /* Variable stroke width, sans-serifed. */
        !           601:                                     /* Helvetica, Swiss, etc. */
        !           602: #define FF_MODERN           (3<<4)  /* Constant stroke width, serifed or sans-serifed. */
        !           603:                                     /* Pica, Elite, Courier, etc. */
        !           604: #define FF_SCRIPT           (4<<4)  /* Cursive, etc. */
        !           605: #define FF_DECORATIVE       (5<<4)  /* Old English, etc. */
        !           606: 
        !           607: /* Font Weights */
        !           608: #define FW_DONTCARE         0
        !           609: #define FW_THIN             100
        !           610: #define FW_EXTRALIGHT       200
        !           611: #define FW_LIGHT            300
        !           612: #define FW_NORMAL           400
        !           613: #define FW_MEDIUM           500
        !           614: #define FW_SEMIBOLD         600
        !           615: #define FW_BOLD             700
        !           616: #define FW_EXTRABOLD        800
        !           617: #define FW_HEAVY            900
        !           618: 
        !           619: #define FW_ULTRALIGHT       FW_EXTRALIGHT
        !           620: #define FW_REGULAR          FW_NORMAL
        !           621: #define FW_DEMIBOLD         FW_SEMIBOLD
        !           622: #define FW_ULTRABOLD        FW_EXTRABOLD
        !           623: #define FW_BLACK            FW_HEAVY
        !           624: 
        !           625: 
        !           626: typedef struct tagCHARSET {
        !           627:     DWORD   aflBlock[3];
        !           628:     DWORD   flLang;
        !           629: } CHARSET, *LPCHARSET;
        !           630: 
        !           631: typedef struct tagPANOSE {
        !           632:     ULONG ulCulture;
        !           633:     BYTE  bFamilyType;
        !           634:     BYTE  bSerifStyle;
        !           635:     BYTE  bWeight;
        !           636:     BYTE  bProportion;
        !           637:     BYTE  bContrast;
        !           638:     BYTE  bStrokeVariation;
        !           639:     BYTE  bArmStyle;
        !           640:     BYTE  bLetterform;
        !           641:     BYTE  bMidline;
        !           642:     BYTE  bXHeight;
        !           643: } PANOSE, *LPPANOSE;
        !           644: 
        !           645: #define PAN_ANY                         0   /* Any */
        !           646: #define PAN_NO_FIT                      1   /* No Fit */
        !           647: 
        !           648: #define PAN_FAMILY_TEXT_DISPLAY         2   /* Text and Display */
        !           649: #define PAN_FAMILY_SCRIPT               3   /* Script */
        !           650: #define PAN_FAMILY_DECORATIVE           4   /* Decorative */
        !           651: #define PAN_FAMILY_PICTORIAL            5   /* Pictorial */
        !           652: 
        !           653: #define PAN_SERIF_COVE                  2   /* Cove */
        !           654: #define PAN_SERIF_OBTUSE_COVE           3   /* Obtuse Cove */
        !           655: #define PAN_SERIF_SQUARE_COVE           4   /* Square Cove */
        !           656: #define PAN_SERIF_OBTUSE_SQUARE_COVE    5   /* Obtuse Square Cove */
        !           657: #define PAN_SERIF_SQUARE                6   /* Square */
        !           658: #define PAN_SERIF_THIN                  7   /* Thin */
        !           659: #define PAN_SERIF_BONE                  8   /* Bone */
        !           660: #define PAN_SERIF_EXAGGERATED           9   /* Exaggerated */
        !           661: #define PAN_SERIF_TRIANGLE             10   /* Triangle */
        !           662: #define PAN_SERIF_NORMAL_SANS          11   /* Normal Sans */
        !           663: #define PAN_SERIF_OBTUSE_SANS          12   /* Obtuse Sans */
        !           664: #define PAN_SERIF_PERP_SANS            13   /* Prep Sans */
        !           665: #define PAN_SERIF_FLARED               14   /* Flared */
        !           666: #define PAN_SERIF_ROUNDED              15   /* Rounded */
        !           667: 
        !           668: #define PAN_WEIGHT_VERY_LIGHT           2   /* Very Light */
        !           669: #define PAN_WEIGHT_LIGHT                3   /* Light */
        !           670: #define PAN_WEIGHT_THIN                 4   /* Thin */
        !           671: #define PAN_WEIGHT_BOOK                 5   /* Book */
        !           672: #define PAN_WEIGHT_MEDIUM               6   /* Medium */
        !           673: #define PAN_WEIGHT_DEMI                 7   /* Demi */
        !           674: #define PAN_WEIGHT_BOLD                 8   /* Bold */
        !           675: #define PAN_WEIGHT_HEAVY                9   /* Heavy */
        !           676: #define PAN_WEIGHT_BLACK               10   /* Black */
        !           677: #define PAN_WEIGHT_NORD                11   /* Nord */
        !           678: 
        !           679: #define PAN_PROP_OLD_STYLE              2   /* Old Style */
        !           680: #define PAN_PROP_MODERN                 3   /* Modern */
        !           681: #define PAN_PROP_EVEN_WIDTH             4   /* Even Width */
        !           682: #define PAN_PROP_EXPANDED               5   /* Expanded */
        !           683: #define PAN_PROP_CONDENSED              6   /* Condensed */
        !           684: #define PAN_PROP_VERY_EXPANDED          7   /* Very Expanded */
        !           685: #define PAN_PROP_VERY_CONDENSED         8   /* Very Condensed */
        !           686: #define PAN_PROP_MONOSPACED             9   /* Monospaced */
        !           687: 
        !           688: #define PAN_CONTRAST_NONE               2   /* None */
        !           689: #define PAN_CONTRAST_VERY_LOW           3   /* Very Low */
        !           690: #define PAN_CONTRAST_LOW                4   /* Low */
        !           691: #define PAN_CONTRAST_MEDIUM_LOW         5   /* Medium Low */
        !           692: #define PAN_CONTRAST_MEDIUM             6   /* Medium */
        !           693: #define PAN_CONTRAST_MEDIUM_HIGH        7   /* Mediim High */
        !           694: #define PAN_CONTRAST_HIGH               8   /* High */
        !           695: #define PAN_CONTRAST_VERY_HIGH          9   /* Very High */
        !           696: 
        !           697: #define PAN_STROKE_GRADUAL_DIAG         2   /* Gradual/Diagonal */
        !           698: #define PAN_STROKE_GRADUAL_TRAN         3   /* Gradual/Transitional */
        !           699: #define PAN_STROKE_GRADUAL_VERT         4   /* Gradual/Vertical */
        !           700: #define PAN_STROKE_GRADUAL_HORZ         5   /* Gradual/Horizontal */
        !           701: #define PAN_STROKE_RAPID_VERT           6   /* Rapid/Vertical */
        !           702: #define PAN_STROKE_RAPID_HORZ           7   /* Rapid/Horizontal */
        !           703: #define PAN_STROKE_INSTANT_VERT         8   /* Instant/Vertical */
        !           704: 
        !           705: #define PAN_STRAIGHT_ARMS_HORZ          2   /* Straight Arms/Horizontal */
        !           706: #define PAN_STRAIGHT_ARMS_WEDGE         3   /* Straight Arms/Wedge */
        !           707: #define PAN_STRAIGHT_ARMS_VERT          4   /* Straight Arms/Vertical */
        !           708: #define PAN_STRAIGHT_ARMS_SINGLE_SERIF  5   /* Straight Arms/Single-Serif */
        !           709: #define PAN_STRAIGHT_ARMS_DOUBLE_SERIF  6   /* Straight Arms/Double-Serif */
        !           710: #define PAN_BENT_ARMS_HORZ              7   /* Non-Straight Arms/Horizontal */
        !           711: #define PAN_BENT_ARMS_WEDGE             8   /* Non-Straight Arms/Wedge */
        !           712: #define PAN_BENT_ARMS_VERT              9   /* Non-Straight Arms/Vertical */
        !           713: #define PAN_BENT_ARMS_SINGLE_SERIF     10   /* Non-Straight Arms/Single-Serif */
        !           714: #define PAN_BENT_ARMS_DOUBLE_SERIF     11   /* Non-Straight Arms/Double-Serif */
        !           715: 
        !           716: #define PAN_LETT_NORMAL_CONTACT         2   /* Normal/Contact */
        !           717: #define PAN_LETT_NORMAL_WEIGHTED        3   /* Normal/Weighted */
        !           718: #define PAN_LETT_NORMAL_BOXED           4   /* Normal/Boxed */
        !           719: #define PAN_LETT_NORMAL_FLATTENED       5   /* Normal/Flattened */
        !           720: #define PAN_LETT_NORMAL_ROUNDED         6   /* Normal/Rounded */
        !           721: #define PAN_LETT_NORMAL_OFF_CENTER      7   /* Normal/Off Center */
        !           722: #define PAN_LETT_NORMAL_SQUARE          8   /* Normal/Square */
        !           723: #define PAN_LETT_OBLIQUE_CONTACT        9   /* Oblique/Contact */
        !           724: #define PAN_LETT_OBLIQUE_WEIGHTED      10   /* Oblique/Weighted */
        !           725: #define PAN_LETT_OBLIQUE_BOXED         11   /* Oblique/Boxed */
        !           726: #define PAN_LETT_OBLIQUE_FLATTENED     12   /* Oblique/Flattened */
        !           727: #define PAN_LETT_OBLIQUE_ROUNDED       13   /* Oblique/Rounded */
        !           728: #define PAN_LETT_OBLIQUE_OFF_CENTER    14   /* Oblique/Off Center */
        !           729: #define PAN_LETT_OBLIQUE_SQUARE        15   /* Oblique/Square */
        !           730: 
        !           731: #define PAN_MIDLINE_STANDARD_TRIMMED    2   /* Standard/Trimmed */
        !           732: #define PAN_MIDLINE_STANDARD_POINTED    3   /* Standard/Pointed */
        !           733: #define PAN_MIDLINE_STANDARD_SERIFED    4   /* Standard/Serifed */
        !           734: #define PAN_MIDLINE_HIGH_TRIMMED        5   /* High/Trimmed */
        !           735: #define PAN_MIDLINE_HIGH_POINTED        6   /* High/Pointed */
        !           736: #define PAN_MIDLINE_HIGH_SERIFED        7   /* High/Serifed */
        !           737: #define PAN_MIDLINE_CONSTANT_TRIMMED    8   /* Constant/Trimmed */
        !           738: #define PAN_MIDLINE_CONSTANT_POINTED    9   /* Constant/Pointed */
        !           739: #define PAN_MIDLINE_CONSTANT_SERIFED   10   /* Constant/Serifed */
        !           740: #define PAN_MIDLINE_LOW_TRIMMED        11   /* Low/Trimmed */
        !           741: #define PAN_MIDLINE_LOW_POINTED        12   /* Low/Pointed */
        !           742: #define PAN_MIDLINE_LOW_SERIFED        13   /* Low/Serifed */
        !           743: 
        !           744: #define PAN_XHEIGHT_CONSTANT_SMALL      2   /* Constant/Small */
        !           745: #define PAN_XHEIGHT_CONSTANT_STD        3   /* Constant/Standard */
        !           746: #define PAN_XHEIGHT_CONSTANT_LARGE      4   /* Constant/Large */
        !           747: #define PAN_XHEIGHT_DUCKING_SMALL       5   /* Ducking/Small */
        !           748: #define PAN_XHEIGHT_DUCKING_STD         6   /* Ducking/Standard */
        !           749: #define PAN_XHEIGHT_DUCKING_LARGE       7   /* Ducking/Large */
        !           750: 
        !           751: 
        !           752: #define ELF_FAMILY_SIZE 32
        !           753: 
        !           754: /* The extended logical font */
        !           755: 
        !           756: typedef struct tagEXTLOGFONTA {
        !           757:     LOGFONTA    elfLogFont;
        !           758:     DWORD       elfSize;
        !           759:     DWORD       elfTech;
        !           760:     DWORD       elfXHeight;
        !           761:     PANOSE      elfPanose;
        !           762:     CHARSET     elfCharset;
        !           763:     BYTE        elfFamily[ELF_FAMILY_SIZE];
        !           764: } EXTLOGFONTA, *LPEXTLOGFONTA;
        !           765: typedef struct tagEXTLOGFONTW {
        !           766:     LOGFONTW    elfLogFont;
        !           767:     DWORD       elfSize;
        !           768:     DWORD       elfTech;
        !           769:     DWORD       elfXHeight;
        !           770:     PANOSE      elfPanose;
        !           771:     CHARSET     elfCharset;
        !           772:     WCHAR       elfFamily[ELF_FAMILY_SIZE];
        !           773: } EXTLOGFONTW, *LPEXTLOGFONTW;
        !           774: #ifdef UNICODE
        !           775: #define EXTLOGFONT EXTLOGFONTW
        !           776: #define LPEXTLOGFONT LPEXTLOGFONTW
        !           777: #else
        !           778: #define EXTLOGFONT EXTLOGFONTA
        !           779: #define LPEXTLOGFONT LPEXTLOGFONTA
        !           780: #endif // UNICODE
        !           781: 
        !           782: /* Allowed values for EXTLOGFONT::elfTech */
        !           783: #define ELF_ANY             0
        !           784: #define ELF_OUTLINE         1
        !           785: #define ELF_BITMAP          2
        !           786: #define ELF_STICK           3
        !           787: 
        !           788: /* complete set font attribute weights */
        !           789: typedef struct tagFMWEIGHTSET {
        !           790:     WORD wtFaceName;
        !           791:     WORD wtFamilyName;
        !           792:     WORD wtAvgWidth;
        !           793:     WORD wtXHeight;
        !           794:     WORD wtSize;
        !           795:     WORD wtTech;
        !           796:     WORD wtPanose;
        !           797:     WORD wtPanFamily;
        !           798:     WORD wtPanSerif;
        !           799:     WORD wtPanWeight;
        !           800:     WORD wtPanProp;
        !           801:     WORD wtPanContrast;
        !           802:     WORD wtPanStrokeVar;
        !           803:     WORD wtPanArmStyle;
        !           804:     WORD wtPanLetter;
        !           805:     WORD wtPanMidline;
        !           806:     WORD wtPanXHeight;
        !           807:     WORD wtCharSet;
        !           808: } FMWEIGHTSET, *LPFMWEIGHTSET;
        !           809: 
        !           810: /* the complete set of font attribute distances */
        !           811: typedef struct tagFMDISTANCESET {
        !           812:     WORD dFaceName;
        !           813:     WORD dFamilyName;
        !           814:     WORD dAvgWidth;
        !           815:     WORD dXHeight;
        !           816:     WORD dSize;
        !           817:     WORD dTech;
        !           818:     WORD dPanose;
        !           819:     WORD dPanFamily;
        !           820:     WORD dPanSerif;
        !           821:     WORD dPanWeight;
        !           822:     WORD dPanProp;
        !           823:     WORD dPanContrast;
        !           824:     WORD dPanStrokeVar;
        !           825:     WORD dPanArmStyle;
        !           826:     WORD dPanLetter;
        !           827:     WORD dPanMidline;
        !           828:     WORD dPanXHeight;
        !           829:     WORD dCharSet;
        !           830: } FMDISTANCESET, *LPFMDISTANCESET;
        !           831: 
        !           832: typedef struct tagFMCONTROLS {
        !           833:     DWORD           size;
        !           834:     DWORD           distsetSumMax;
        !           835:     FMDISTANCESET   distsetMax;
        !           836:     FMWEIGHTSET     wtsetNear;
        !           837:     FMWEIGHTSET     wtsetFar;
        !           838: } FMCONTROLS, *LPFMCONTROLS;
        !           839: 
        !           840: #define SIZEOFFMCONTROLS sizeof(FMCONTROLS)
        !           841: 
        !           842: typedef struct tagFMATCHA {
        !           843:     DWORD           size;
        !           844:     DWORD           type;
        !           845:     DWORD           distsetSum;
        !           846:     FMDISTANCESET   distset;
        !           847:     EXTLOGFONTA     ExtLogFont;
        !           848: } FMATCHA,*LPFMATCHA;
        !           849: typedef struct tagFMATCHW {
        !           850:     DWORD           size;
        !           851:     DWORD           type;
        !           852:     DWORD           distsetSum;
        !           853:     FMDISTANCESET   distset;
        !           854:     EXTLOGFONTW     ExtLogFont;
        !           855: } FMATCHW,*LPFMATCHW;
        !           856: #ifdef UNICODE
        !           857: #define FMATCH FMATCHW
        !           858: #define LPFMATCH LPFMATCHW
        !           859: #else
        !           860: #define FMATCH FMATCHA
        !           861: #define LPFMATCH LPFMATCHA
        !           862: #endif // UNICODE
        !           863: 
        !           864: /* Allowed values for FMATCH::wType */
        !           865: #define FMATCH_EXACT    0
        !           866: #define FMATCH_NEAR     1
        !           867: #define FMATCH_FAR      2
        !           868: 
        !           869: 
        !           870: 
        !           871: /* EnumFonts Masks */
        !           872: #define RASTER_FONTTYPE     0x0001
        !           873: #define DEVICE_FONTTYPE     0X0002
        !           874: 
        !           875: #define RGB(r,g,b)          ((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
        !           876: #define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
        !           877: #define PALETTEINDEX(i)     ((DWORD)(0x01000000 | (WORD)(i)))
        !           878: 
        !           879: /* palette entry flags */
        !           880: 
        !           881: #define PC_RESERVED     0x01    /* palette index used for animation */
        !           882: #define PC_EXPLICIT     0x02    /* palette index is explicit to device */
        !           883: #define PC_NOCOLLAPSE   0x04    /* do not match color to system palette */
        !           884: 
        !           885: #define GetRValue(rgb)      ((BYTE)(rgb))
        !           886: #define GetGValue(rgb)      ((BYTE)(((WORD)(rgb)) >> 8))
        !           887: #define GetBValue(rgb)      ((BYTE)((rgb)>>16))
        !           888: 
        !           889: /* Background Modes */
        !           890: #define TRANSPARENT         1
        !           891: #define OPAQUE              2
        !           892: #define BKMODE_LAST         2
        !           893: 
        !           894: /* PolyDraw and GetPath point types */
        !           895: #define PT_CLOSEFIGURE      0x01
        !           896: #define PT_LINETO           0x02
        !           897: #define PT_BEZIERTO         0x04
        !           898: #define PT_MOVETO           0x06
        !           899: 
        !           900: /* Mapping Modes */
        !           901: #define MM_TEXT             1
        !           902: #define MM_LOMETRIC         2
        !           903: #define MM_HIMETRIC         3
        !           904: #define MM_LOENGLISH        4
        !           905: #define MM_HIENGLISH        5
        !           906: #define MM_TWIPS            6
        !           907: 
        !           908: #define MM_ISOTROPIC        7
        !           909: #define MM_ANISOTROPIC     8
        !           910: 
        !           911: /*
        !           912:    Current mapping occurs in 'logical' scale.  To
        !           913:    use 'actual' scale, OR this to modes 2-6 above.
        !           914: */
        !           915: #define MM_REAL_UNITS      16
        !           916: 
        !           917: /* Min and Max Mapping Mode values */
        !           918: #define MM_MIN              MM_TEXT
        !           919: #define MM_MAX              MM_ANISOTROPIC
        !           920: #define MM_MAX_FIXEDSCALE   MM_TWIPS
        !           921: #define MM_REAL_MIN        (MM_REAL_UNITS | MM_LOMETRIC)
        !           922: #define MM_REAL_MAX        (MM_REAL_UNITS | MM_TWIPS)
        !           923: 
        !           924: /* Coordinate Modes */
        !           925: #define ABSOLUTE            1
        !           926: #define RELATIVE            2
        !           927: 
        !           928: /* Stock Logical Objects */
        !           929: #define WHITE_BRUSH         0
        !           930: #define LTGRAY_BRUSH        1
        !           931: #define GRAY_BRUSH          2
        !           932: #define DKGRAY_BRUSH        3
        !           933: #define BLACK_BRUSH         4
        !           934: #define NULL_BRUSH          5
        !           935: #define HOLLOW_BRUSH        NULL_BRUSH
        !           936: #define WHITE_PEN           6
        !           937: #define BLACK_PEN           7
        !           938: #define NULL_PEN            8
        !           939: #define OEM_FIXED_FONT      10
        !           940: #define ANSI_FIXED_FONT     11
        !           941: #define ANSI_VAR_FONT       12
        !           942: #define SYSTEM_FONT         13
        !           943: #define DEVICE_DEFAULT_FONT 14
        !           944: #define DEFAULT_PALETTE     15
        !           945: #define SYSTEM_FIXED_FONT   16
        !           946: #define STOCK_LAST          16
        !           947: 
        !           948: #define CLR_INVALID     0x80000000
        !           949: 
        !           950: /* Brush Styles */
        !           951: #define BS_SOLID            0
        !           952: #define BS_NULL             1
        !           953: #define BS_HOLLOW           BS_NULL
        !           954: #define BS_HATCHED          2
        !           955: #define BS_PATTERN          3
        !           956: #define BS_INDEXED          4
        !           957: #define BS_DIBPATTERN       5
        !           958: 
        !           959: /* Hatch Styles */
        !           960: #define HS_HORIZONTAL       0       /* ----- */
        !           961: #define HS_VERTICAL         1       /* ||||| */
        !           962: #define HS_FDIAGONAL        2       /* \\\\\ */
        !           963: #define HS_BDIAGONAL        3       /* ///// */
        !           964: #define HS_CROSS            4       /* +++++ */
        !           965: #define HS_DIAGCROSS        5       /* xxxxx */
        !           966: #define HS_FDIAGONAL1       6
        !           967: #define HS_BDIAGONAL1       7
        !           968: #define HS_SOLID            8
        !           969: #define HS_DENSE1           9
        !           970: #define HS_DENSE2           10
        !           971: #define HS_DENSE3           11
        !           972: #define HS_DENSE4           12
        !           973: #define HS_DENSE5           13
        !           974: #define HS_DENSE6           14
        !           975: #define HS_DENSE7           15
        !           976: #define HS_DENSE8           16
        !           977: #define HS_NOSHADE          17
        !           978: #define HS_HALFTONE         18
        !           979: #define HS_API_MAX          19
        !           980: 
        !           981: /* Pen Styles */
        !           982: #define PS_SOLID            0
        !           983: #define PS_DASH             1       /* -------  */
        !           984: #define PS_DOT              2       /* .......  */
        !           985: #define PS_DASHDOT          3       /* _._._._  */
        !           986: #define PS_DASHDOTDOT       4       /* _.._.._  */
        !           987: #define PS_NULL             5
        !           988: #define PS_INSIDEFRAME      6
        !           989: 
        !           990: /* Device Parameters for GetDeviceCaps() */
        !           991: #define DRIVERVERSION 0     /* Device driver version                    */
        !           992: #define TECHNOLOGY    2     /* Device classification                    */
        !           993: #define HORZSIZE      4     /* Horizontal size in millimeters           */
        !           994: #define VERTSIZE      6     /* Vertical size in millimeters             */
        !           995: #define HORZRES       8     /* Horizontal width in pixels               */
        !           996: #define VERTRES       10    /* Vertical width in pixels                 */
        !           997: #define BITSPIXEL     12    /* Number of bits per pixel                 */
        !           998: #define PLANES        14    /* Number of planes                         */
        !           999: #define NUMBRUSHES    16    /* Number of brushes the device has         */
        !          1000: #define NUMPENS       18    /* Number of pens the device has            */
        !          1001: #define NUMMARKERS    20    /* Number of markers the device has         */
        !          1002: #define NUMFONTS      22    /* Number of fonts the device has           */
        !          1003: #define NUMCOLORS     24    /* Number of colors the device supports     */
        !          1004: #define PDEVICESIZE   26    /* Size required for device descriptor      */
        !          1005: #define CURVECAPS     28    /* Curve capabilities                       */
        !          1006: #define LINECAPS      30    /* Line capabilities                        */
        !          1007: #define POLYGONALCAPS 32    /* Polygonal capabilities                   */
        !          1008: #define TEXTCAPS      34    /* Text capabilities                        */
        !          1009: #define CLIPCAPS      36    /* Clipping capabilities                    */
        !          1010: #define RASTERCAPS    38    /* Bitblt capabilities                      */
        !          1011: #define ASPECTX       40    /* Length of the X leg                      */
        !          1012: #define ASPECTY       42    /* Length of the Y leg                      */
        !          1013: #define ASPECTXY      44    /* Length of the hypotenuse                 */
        !          1014: 
        !          1015: #define LOGPIXELSX    88    /* Logical pixels/inch in X                 */
        !          1016: #define LOGPIXELSY    90    /* Logical pixels/inch in Y                 */
        !          1017: 
        !          1018: #define SIZEPALETTE  104    /* Number of entries in physical palette   */
        !          1019: #define NUMRESERVED  106    /* Number of reserved entries in palette    */
        !          1020: #define COLORRES     108    /* Actual color resolution                  */
        !          1021: 
        !          1022: 
        !          1023: // Printing related DeviceCaps. These replace the appropriate Escapes
        !          1024: 
        !          1025: #define PHYSICALWIDTH   110 // Physical Width in device units
        !          1026: #define PHYSICALHEIGHT  111 // Physical Height in device units
        !          1027: #define PHYSICALOFFSETX 112 // Physical Printable Area x margin
        !          1028: #define PHYSICALOFFSETY 113 // Physical Printable Area y margin
        !          1029: #define SCALINGFACTORX  114 // Scaling factor x
        !          1030: #define SCALINGFACTORY  115 // Scaling factor y
        !          1031: 
        !          1032: #ifndef NOGDICAPMASKS
        !          1033: 
        !          1034: /* Device Capability Masks: */
        !          1035: 
        !          1036: /* Device Technologies */
        !          1037: #define DT_PLOTTER          0   /* Vector plotter                   */
        !          1038: #define DT_RASDISPLAY       1   /* Raster display                   */
        !          1039: #define DT_RASPRINTER       2   /* Raster printer                   */
        !          1040: #define DT_RASCAMERA        3   /* Raster camera                    */
        !          1041: #define DT_CHARSTREAM       4   /* Character-stream, PLP            */
        !          1042: #define DT_METAFILE         5   /* Metafile, VDM                    */
        !          1043: #define DT_DISPFILE         6   /* Display-file                     */
        !          1044: 
        !          1045: /* Curve Capabilities */
        !          1046: #define CC_NONE             0   /* Curves not supported             */
        !          1047: #define CC_CIRCLES          1   /* Can do circles                   */
        !          1048: #define CC_PIE              2   /* Can do pie wedges                */
        !          1049: #define CC_CHORD            4   /* Can do chord arcs                */
        !          1050: #define CC_ELLIPSES         8   /* Can do ellipese                  */
        !          1051: #define CC_WIDE             16  /* Can do wide lines                */
        !          1052: #define CC_STYLED           32  /* Can do styled lines              */
        !          1053: #define CC_WIDESTYLED       64  /* Can do wide styled lines         */
        !          1054: #define CC_INTERIORS        128 /* Can do interiors                 */
        !          1055: 
        !          1056: /* Line Capabilities */
        !          1057: #define LC_NONE             0   /* Lines not supported              */
        !          1058: #define LC_POLYLINE         2   /* Can do polylines                 */
        !          1059: #define LC_MARKER           4   /* Can do markers                   */
        !          1060: #define LC_POLYMARKER       8   /* Can do polymarkers               */
        !          1061: #define LC_WIDE             16  /* Can do wide lines                */
        !          1062: #define LC_STYLED           32  /* Can do styled lines              */
        !          1063: #define LC_WIDESTYLED       64  /* Can do wide styled lines         */
        !          1064: #define LC_INTERIORS        128 /* Can do interiors                 */
        !          1065: 
        !          1066: /* Polygonal Capabilities */
        !          1067: #define PC_NONE             0   /* Polygonals not supported         */
        !          1068: #define PC_POLYGON          1   /* Can do polygons                  */
        !          1069: #define PC_RECTANGLE        2   /* Can do rectangles                */
        !          1070: #define PC_WINDPOLYGON      4   /* Can do winding polygons          */
        !          1071: #define PC_TRAPEZOID        4   /* Can do trapezoids                */
        !          1072: #define PC_SCANLINE         8   /* Can do scanlines                 */
        !          1073: #define PC_WIDE             16  /* Can do wide borders              */
        !          1074: #define PC_STYLED           32  /* Can do styled borders            */
        !          1075: #define PC_WIDESTYLED       64  /* Can do wide styled borders       */
        !          1076: #define PC_INTERIORS        128 /* Can do interiors                 */
        !          1077: 
        !          1078: /* Polygonal Capabilities */
        !          1079: #define CP_NONE             0   /* No clipping of output            */
        !          1080: #define CP_RECTANGLE        1   /* Output clipped to rects          */
        !          1081: 
        !          1082: /* Text Capabilities */
        !          1083: #define TC_OP_CHARACTER     0x0001  /* Can do OutputPrecision   CHARACTER      */
        !          1084: #define TC_OP_STROKE        0x0002  /* Can do OutputPrecision   STROKE         */
        !          1085: #define TC_CP_STROKE        0x0004  /* Can do ClipPrecision     STROKE         */
        !          1086: #define TC_CR_90            0x0008  /* Can do CharRotAbility    90             */
        !          1087: #define TC_CR_ANY           0x0010  /* Can do CharRotAbility    ANY            */
        !          1088: #define TC_SF_X_YINDEP      0x0020  /* Can do ScaleFreedom      X_YINDEPENDENT */
        !          1089: #define TC_SA_DOUBLE        0x0040  /* Can do ScaleAbility      DOUBLE         */
        !          1090: #define TC_SA_INTEGER       0x0080  /* Can do ScaleAbility      INTEGER        */
        !          1091: #define TC_SA_CONTIN        0x0100  /* Can do ScaleAbility      CONTINUOUS     */
        !          1092: #define TC_EA_DOUBLE        0x0200  /* Can do EmboldenAbility   DOUBLE         */
        !          1093: #define TC_IA_ABLE          0x0400  /* Can do ItalisizeAbility  ABLE           */
        !          1094: #define TC_UA_ABLE          0x0800  /* Can do UnderlineAbility  ABLE           */
        !          1095: #define TC_SO_ABLE          0x1000  /* Can do StrikeOutAbility  ABLE           */
        !          1096: #define TC_RA_ABLE          0x2000  /* Can do RasterFontAble    ABLE           */
        !          1097: #define TC_VA_ABLE          0x4000  /* Can do VectorFontAble    ABLE           */
        !          1098: #define TC_RESERVED         0x8000
        !          1099: 
        !          1100: #endif /* NOGDICAPMASKS */
        !          1101: 
        !          1102: /* Raster Capabilities */
        !          1103: #define RC_BITBLT           1       /* Can do standard BLT.             */
        !          1104: #define RC_BANDING          2       /* Device requires banding support  */
        !          1105: #define RC_SCALING          4       /* Device requires scaling support  */
        !          1106: #define RC_BITMAP64         8       /* Device can support >64K bitmap   */
        !          1107: #define RC_GDI20_OUTPUT     0x0010      /* has 2.0 output calls         */
        !          1108: #define RC_DI_BITMAP        0x0080      /* supports DIB to memory       */
        !          1109: #define RC_PALETTE          0x0100      /* supports a palette           */
        !          1110: #define RC_DIBTODEV         0x0200      /* supports DIBitsToDevice      */
        !          1111: #define RC_BIGFONT          0x0400      /* supports >64K fonts          */
        !          1112: #define RC_STRETCHBLT       0x0800      /* supports StretchBlt          */
        !          1113: #define RC_FLOODFILL        0x1000      /* supports FloodFill           */
        !          1114: #define RC_STRETCHDIB       0x2000      /* supports StretchDIBits       */
        !          1115: 
        !          1116: /* DIB color table identifiers */
        !          1117: 
        !          1118: #define DIB_RGB_COLORS  0       /* color table in RGBTriples */
        !          1119: #define DIB_PAL_COLORS  1       /* color table in palette indices */
        !          1120: #define DIB_PAL_INDICES 2       /* no color table, the indices are in      */
        !          1121:                                 /* the DC the bitmap will be selected into */
        !          1122: 
        !          1123: 
        !          1124: /* constants for Get/SetSystemPaletteUse() */
        !          1125: 
        !          1126: #define SYSPAL_ERROR    0
        !          1127: #define SYSPAL_STATIC   1
        !          1128: #define SYSPAL_NOSTATIC 2
        !          1129: 
        !          1130: /* constants for CreateDIBitmap */
        !          1131: #define CBM_INIT        0x04L   /* initialize bitmap */
        !          1132: 
        !          1133: #ifndef NODRAWTEXT
        !          1134: 
        !          1135: /* DrawText() Format Flags */
        !          1136: #define DT_TOP              0x0000
        !          1137: #define DT_LEFT             0x0000
        !          1138: #define DT_CENTER           0x0001
        !          1139: #define DT_RIGHT            0x0002
        !          1140: #define DT_VCENTER          0x0004
        !          1141: #define DT_BOTTOM           0x0008
        !          1142: #define DT_WORDBREAK        0x0010
        !          1143: #define DT_SINGLELINE       0x0020
        !          1144: #define DT_EXPANDTABS       0x0040
        !          1145: #define DT_TABSTOP          0x0080
        !          1146: #define DT_NOCLIP           0x0100
        !          1147: #define DT_EXTERNALLEADING  0x0200
        !          1148: #define DT_CALCRECT         0x0400
        !          1149: #define DT_NOPREFIX         0x0800
        !          1150: #define DT_INTERNAL         0x1000
        !          1151: 
        !          1152: #endif /* NODRAWTEXT */
        !          1153: 
        !          1154: /* ExtFloodFill style flags */
        !          1155: #define  FLOODFILLBORDER   0
        !          1156: #define  FLOODFILLSURFACE  1
        !          1157: 
        !          1158: typedef struct _devicemode {
        !          1159:     char dmDeviceName[32];
        !          1160:     WORD dmSpecVersion;
        !          1161:     WORD dmDriverVersion;
        !          1162:     WORD dmSize;
        !          1163:     WORD dmDriverExtra;
        !          1164:     DWORD dmFields;
        !          1165:     short dmOrientation;
        !          1166:     short dmPaperSize;
        !          1167:     short dmPaperLength;
        !          1168:     short dmPaperWidth;
        !          1169:     short dmScale;
        !          1170:     short dmCopies;
        !          1171:     short dmDefaultSource;
        !          1172:     short dmPrintQuality;
        !          1173:     short dmColor;
        !          1174:     short dmDuplex;
        !          1175: } DEVMODE, *PDEVMODE, *NPDEVMODE, *LPDEVMODE;
        !          1176: 
        !          1177: /* GetRegionData/ExtCreateRegion */
        !          1178: 
        !          1179: #define RDH_RECTANGLES 1
        !          1180: 
        !          1181: typedef struct _RGNDATAHEADER {
        !          1182:     DWORD   dwSize;
        !          1183:     DWORD   iType;
        !          1184:     DWORD   nCount;
        !          1185: } RGNDATAHEADER, *PRGNDATAHEADER;
        !          1186: 
        !          1187: typedef struct _RGNDATA {
        !          1188:     RGNDATAHEADER   rdh;
        !          1189:     char           Buffer[1];
        !          1190: } RGNDATA, *PRGNDATA, NEAR *NPRGNDATA, FAR *LPRGNDATA;
        !          1191: 
        !          1192: int APIENTRY AddFontResourceA(IN LPSTR);
        !          1193: int APIENTRY AddFontResourceW(IN LPWSTR);
        !          1194: #ifdef UNICODE
        !          1195: #define AddFontResource AddFontResourceW
        !          1196: #else
        !          1197: #define AddFontResource AddFontResourceA
        !          1198: #endif // !UNICODE
        !          1199: 
        !          1200: int     APIENTRY AddFontModule(IN HMODULE);
        !          1201: BOOL    APIENTRY AnimatePalette(IN HPALETTE, IN UINT, IN UINT, IN LPPALETTEENTRY);
        !          1202: BOOL BATCH APIENTRY Arc(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int, IN int, IN int);
        !          1203: BOOL BATCH APIENTRY BitBlt(IN HDC, IN int, IN int, IN int, IN int, IN HDC, IN int, IN int, IN DWORD);
        !          1204: BOOL BATCH APIENTRY Chord(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int, IN int, IN int);
        !          1205: HMF     APIENTRY CloseMetaFile(IN HDC);
        !          1206: int     APIENTRY CombineRgn(IN HRGN, IN HRGN, IN HRGN, IN int);
        !          1207: HMF     APIENTRY CopyMetaFile(IN HMF, IN LPSTR);
        !          1208: HBITMAP APIENTRY CreateBitmap(IN int, IN int, IN UINT, IN UINT, IN LPBYTE);
        !          1209: HBITMAP APIENTRY CreateBitmapIndirect(IN LPBITMAP);
        !          1210: HBRUSH  APIENTRY CreateBrushIndirect(IN LPLOGBRUSH);
        !          1211: HBITMAP APIENTRY CreateCompatibleBitmap(IN HDC, IN int, IN int);
        !          1212: HBITMAP APIENTRY CreateDiscardableBitmap(IN HDC, IN int, IN int);
        !          1213: HDC     APIENTRY CreateCompatibleDC(IN HDC);
        !          1214: HDC     APIENTRY CreateDC(IN LPSTR, IN LPSTR OPTIONAL, IN LPSTR OPTIONAL, IN LPDEVMODE OPTIONAL);
        !          1215: HBITMAP APIENTRY CreateDIBitmap(IN HDC, IN LPBITMAPINFOHEADER, IN DWORD, IN LPBYTE, IN LPBITMAPINFO, IN DWORD);
        !          1216: HBITMAP APIENTRY CreateDIBSection(IN HDC, IN LPBITMAPINFO, IN DWORD, IN DWORD, OUT LPBYTE *);
        !          1217: HBRUSH  APIENTRY CreateDIBPatternBrush(IN GLOBALHANDLE, IN DWORD);
        !          1218: HBRUSH  APIENTRY CreateDIBPatternBrushPt(IN LPVOID, IN DWORD);
        !          1219: HRGN    APIENTRY CreateEllipticRgn(IN int, IN int, IN int, IN int);
        !          1220: HRGN    APIENTRY CreateEllipticRgnIndirect(IN LPRECT);
        !          1221: 
        !          1222: HFONT   APIENTRY CreateFontIndirectA(IN LPLOGFONTA);
        !          1223: HFONT   APIENTRY CreateFontIndirectW(IN LPLOGFONTW);
        !          1224: #ifdef UNICODE
        !          1225: #define CreateFontIndirect CreateFontIndirectW
        !          1226: #else
        !          1227: #define CreateFontIndirect CreateFontIndirectA
        !          1228: #endif // !UNICODE
        !          1229: HFONT   APIENTRY CreateFontA(IN int, IN int, IN int, IN int, IN int, IN DWORD,
        !          1230:                              IN DWORD, IN DWORD, IN DWORD, IN DWORD, IN DWORD,
        !          1231:                              IN DWORD, IN DWORD, IN LPSTR);
        !          1232: HFONT   APIENTRY CreateFontW(IN int, IN int, IN int, IN int, IN int, IN DWORD,
        !          1233:                              IN DWORD, IN DWORD, IN DWORD, IN DWORD, IN DWORD,
        !          1234:                              IN DWORD, IN DWORD, IN LPWSTR);
        !          1235: #ifdef UNICODE
        !          1236: #define CreateFont CreateFontW
        !          1237: #else
        !          1238: #define CreateFont CreateFontA
        !          1239: #endif // !UNICODE
        !          1240: 
        !          1241: HBRUSH  APIENTRY CreateHatchBrush(IN int, IN COLORREF);
        !          1242: HDC     APIENTRY CreateIC(IN LPSTR, IN LPSTR OPTIONAL, IN LPSTR OPTIONAL, IN LPDEVMODE OPTIONAL);
        !          1243: HMF     APIENTRY CreateMetaFile(IN LPSTR);
        !          1244: HPALETTE APIENTRY CreatePalette(IN LPLOGPALETTE);
        !          1245: HPEN    APIENTRY CreatePen(IN int, IN int, IN COLORREF);
        !          1246: HPEN    APIENTRY CreatePenIndirect(IN LPLOGPEN);
        !          1247: HRGN    APIENTRY CreatePolyPolygonRgn(IN LPPOINT, IN LPINT, IN int, IN int);
        !          1248: HBRUSH  APIENTRY CreatePatternBrush(IN HBITMAP);
        !          1249: HRGN    APIENTRY CreateRectRgn(IN int, IN int, IN int, IN int);
        !          1250: HRGN    APIENTRY CreateRectRgnIndirect(IN LPRECT);
        !          1251: HRGN    APIENTRY CreateRoundRectRgn(IN int, IN int, IN int, IN int, IN int, IN int);
        !          1252: HBRUSH  APIENTRY CreateSolidBrush(IN COLORREF);
        !          1253: 
        !          1254: BOOL APIENTRY DeleteDC(IN HDC);
        !          1255: BOOL APIENTRY DeleteMetaFile(IN HMF);
        !          1256: BOOL APIENTRY DeleteObject(IN HANDLE);
        !          1257: int  APIENTRY DeviceCapabilitiesEx(IN LPSTR, IN LPSTR, IN LPSTR, IN int, OUT LPSTR, IN LPDEVMODE OPTIONAL);
        !          1258: BOOL APIENTRY DeviceModeEx(IN HWND, IN LPSTR, IN LPSTR, IN LPSTR);
        !          1259: 
        !          1260: BOOL BATCH APIENTRY Ellipse(IN HDC, IN int, IN int, IN int, IN int);
        !          1261: 
        !          1262: int  APIENTRY EnumFontsA(IN HDC, IN LPSTR,  IN PROC, IN LPVOID);
        !          1263: int  APIENTRY EnumFontsW(IN HDC, IN LPWSTR,  IN PROC, IN LPVOID);
        !          1264: #ifdef UNICODE
        !          1265: #define EnumFonts EnumFontsW
        !          1266: #else
        !          1267: #define EnumFonts EnumFontsA
        !          1268: #endif // !UNICODE
        !          1269: 
        !          1270: int  APIENTRY EnumObjects(IN HDC, IN int, IN PROC, IN LPVOID);
        !          1271: BOOL APIENTRY EqualRgn(IN HRGN, IN HRGN);
        !          1272: int  APIENTRY Escape(IN HDC,IN int,IN int,IN LPSTR,OUT LPSTR);
        !          1273: int  APIENTRY ExcludeClipRect(IN HDC, IN int, IN int, IN int, IN int);
        !          1274: HRGN APIENTRY ExtCreateRegion(IN LPXFORM, IN DWORD, IN LPRGNDATA);
        !          1275: LONG APIENTRY ExtDeviceModeEx(IN HWND, IN LPSTR, OUT LPDEVMODE, IN LPSTR, IN LPSTR, IN LPDEVMODE, IN LPSTR, IN DWORD);
        !          1276: BOOL BATCH APIENTRY ExtFloodFill(IN HDC, IN int, IN int, IN COLORREF, IN UINT);
        !          1277: BOOL BATCH  APIENTRY FillRgn(IN HDC, IN HRGN, IN HBRUSH);
        !          1278: BOOL BATCH  APIENTRY FloodFill(IN HDC, IN int, IN int, IN COLORREF);
        !          1279: BOOL BATCH  APIENTRY FrameRgn(IN HDC, IN HRGN, IN HBRUSH, IN int, IN int);
        !          1280: int   APIENTRY GetROP2(IN HDC);
        !          1281: BOOL  APIENTRY GetAspectRatioFilterEx(IN HDC, OUT LPSIZE);
        !          1282: COLORREF APIENTRY GetBkColor(IN HDC);
        !          1283: int   APIENTRY GetBkMode(IN HDC);
        !          1284: DWORD APIENTRY GetBitmapBits(IN HBITMAP, IN DWORD, OUT LPBYTE);
        !          1285: BOOL  APIENTRY GetBitmapDimensionEx(IN HBITMAP, OUT LPSIZE);
        !          1286: BOOL  APIENTRY GetBrushOrgEx(IN HDC, OUT LPPOINT);
        !          1287: 
        !          1288: BOOL  APIENTRY GetCharWidthA(IN HDC, IN UINT, IN UINT, OUT LPINT);
        !          1289: BOOL  APIENTRY GetCharWidthW(IN HDC, IN UINT, IN UINT, OUT LPINT);
        !          1290: #ifdef UNICODE
        !          1291: #define GetCharWidth GetCharWidthW
        !          1292: #else
        !          1293: #define GetCharWidth GetCharWidthA
        !          1294: #endif // !UNICODE
        !          1295: BOOL  APIENTRY GetCharWidthW(IN HDC, IN UINT, IN UINT, OUT LPINT);
        !          1296: 
        !          1297: int   APIENTRY GetClipBox(IN HDC, OUT LPRECT);
        !          1298: int   APIENTRY GetClipRgn(IN HDC, IN HRGN);
        !          1299: HANDLE APIENTRY GetCurrentObject(IN HDC, IN UINT);
        !          1300: BOOL  APIENTRY GetCurrentPositionEx(IN HDC, OUT LPPOINT);
        !          1301: int   APIENTRY GetDeviceCaps(IN HDC, IN int);
        !          1302: BOOL  APIENTRY GetDIBits(IN HDC, IN HBITMAP, IN UINT, IN UINT, OUT LPBYTE, IN LPBITMAPINFO, IN UINT);
        !          1303: int   APIENTRY GetMapMode(IN HDC);
        !          1304: DWORD APIENTRY GetMetaFileBits(IN HMF, IN DWORD, OUT LPBYTE);
        !          1305: HMF   APIENTRY GetMetaFile(IN LPSTR);
        !          1306: COLORREF APIENTRY GetNearestColor(IN HDC, IN COLORREF);
        !          1307: UINT  APIENTRY GetNearestPaletteIndex(IN HPALETTE, IN COLORREF);
        !          1308: DWORD APIENTRY GetObjectType(HANDLE h);
        !          1309: UINT  APIENTRY GetPaletteEntries(IN HPALETTE, IN UINT, IN UINT, OUT LPPALETTEENTRY);
        !          1310: DWORD APIENTRY GetPixel(IN HDC, IN int, IN int);
        !          1311: int   APIENTRY GetPolyFillMode(IN HDC);
        !          1312: DWORD APIENTRY GetRegionData(IN HRGN, IN DWORD, OUT LPRGNDATA);
        !          1313: int   APIENTRY GetRgnBox(IN HRGN, OUT LPRECT);
        !          1314: HANDLE APIENTRY GetStockObject(IN int);
        !          1315: int   APIENTRY GetStretchBltMode(IN HDC);
        !          1316: UINT  APIENTRY GetSystemPaletteEntries(IN HDC, IN UINT, IN UINT, OUT LPPALETTEENTRY);
        !          1317: UINT  APIENTRY GetSystemPaletteUse(IN HDC);
        !          1318: int   APIENTRY GetTextCharacterExtra(IN HDC);
        !          1319: UINT  APIENTRY GetTextAlign(IN HDC);
        !          1320: COLORREF APIENTRY GetTextColor(IN HDC);
        !          1321: 
        !          1322: BOOL  APIENTRY GetTextExtentPointA(
        !          1323:                     IN HDC,
        !          1324:                     IN LPSTR,
        !          1325:                     IN int,
        !          1326:                     OUT LPSIZE
        !          1327:                     );
        !          1328: BOOL  APIENTRY GetTextExtentPointW(
        !          1329:                     IN HDC,
        !          1330:                     IN LPWSTR,
        !          1331:                     IN int,
        !          1332:                     OUT LPSIZE
        !          1333:                     );
        !          1334: #ifdef UNICODE
        !          1335: #define GetTextExtentPoint GetTextExtentPointW
        !          1336: #else
        !          1337: #define GetTextExtentPoint GetTextExtentPointA
        !          1338: #endif // !UNICODE
        !          1339: 
        !          1340: BOOL  APIENTRY GetViewportExtEx(IN HDC, OUT LPSIZE);
        !          1341: BOOL  APIENTRY GetViewportOrgEx(IN HDC, OUT LPPOINT);
        !          1342: BOOL  APIENTRY GetWindowExtEx(IN HDC, OUT LPSIZE);
        !          1343: BOOL  APIENTRY GetWindowOrgEx(IN HDC, OUT LPPOINT);
        !          1344: 
        !          1345: int  APIENTRY IntersectClipRect(IN HDC, IN int, IN int, IN int, IN int);
        !          1346: BOOL BATCH APIENTRY InvertRgn(IN HDC, IN HRGN);
        !          1347: BOOL APIENTRY LineDDA(IN int, IN int, IN int, IN int, IN PROC, IN LPVOID);
        !          1348: BOOL BATCH APIENTRY LineTo(IN HDC, IN int, IN int);
        !          1349: BOOL APIENTRY MaskBlt(IN HDC, IN int, IN int, IN int, IN int,
        !          1350:               IN HDC, IN int, IN int, IN HBITMAP, IN int, IN int, IN DWORD);
        !          1351: BOOL APIENTRY PlgBlt(IN HDC, IN LPPOINT, IN HDC, IN int, IN int, IN int,
        !          1352:                      IN int, IN HBITMAP, IN int, IN int);
        !          1353: 
        !          1354: int  APIENTRY OffsetClipRgn(IN HDC, IN int, IN int);
        !          1355: int  APIENTRY OffsetRgn(IN HRGN, IN int, IN int);
        !          1356: BOOL BATCH APIENTRY PatBlt(IN HDC, IN int, IN int, IN int, IN int, IN DWORD);
        !          1357: BOOL BATCH APIENTRY Pie(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int, IN int, IN int);
        !          1358: BOOL APIENTRY PlayMetaFile(IN HDC, IN HMF);
        !          1359: BOOL BATCH APIENTRY PaintRgn(IN HDC, IN HRGN);
        !          1360: BOOL BATCH APIENTRY PolyPolygon(IN HDC, IN LPPOINT, IN LPINT, IN int);
        !          1361: BOOL APIENTRY PtInRegion(IN HRGN, IN int, IN int);
        !          1362: BOOL APIENTRY PtVisible(IN HDC, IN int, IN int);
        !          1363: 
        !          1364: BOOL APIENTRY RectInRegion(IN HRGN, IN LPRECT);
        !          1365: BOOL APIENTRY RectVisible(IN HDC, IN LPRECT);
        !          1366: BOOL BATCH APIENTRY Rectangle(IN HDC, IN int, IN int, IN int, IN int);
        !          1367: BOOL APIENTRY RestoreDC(IN HDC, IN int);
        !          1368: int  APIENTRY RealizePalette(IN HDC);
        !          1369: BOOL APIENTRY RemoveFontModule(IN HMODULE);
        !          1370: BOOL APIENTRY RemoveFontResourceA(IN LPSTR);
        !          1371: BOOL APIENTRY RemoveFontResourceW(IN LPWSTR);
        !          1372: #ifdef UNICODE
        !          1373: #define RemoveFontResource RemoveFontResourceW
        !          1374: #else
        !          1375: #define RemoveFontResource RemoveFontResourceA
        !          1376: #endif // !UNICODE
        !          1377: BOOL BATCH APIENTRY RoundRect(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int);
        !          1378: BOOL APIENTRY ResizePalette(IN HPALETTE, IN UINT);
        !          1379: 
        !          1380: int  APIENTRY SaveDC(IN HDC);
        !          1381: int  APIENTRY SelectClipRgn(IN HDC, IN HRGN);
        !          1382: int  APIENTRY ExtSelectClipRgn(IN HDC, IN HRGN, IN int);
        !          1383: HANDLE APIENTRY SelectObject(IN HDC, IN HANDLE);
        !          1384: HPALETTE APIENTRY SelectPalette(IN HDC, IN HPALETTE, IN BOOL);
        !          1385: COLORREF APIENTRY SetBkColor(IN HDC, IN COLORREF);
        !          1386: int   APIENTRY SetBkMode(IN HDC, IN int);
        !          1387: int   APIENTRY SetBitmapBits(IN HBITMAP, IN DWORD, IN LPBYTE);
        !          1388: 
        !          1389: int   APIENTRY SetDIBits(IN HDC, IN HBITMAP, IN UINT, IN UINT, IN LPBYTE, IN LPBITMAPINFO, IN UINT);
        !          1390: int   APIENTRY SetDIBitsToDevice(IN HDC, IN int, IN int, IN DWORD, IN DWORD, IN int, IN int, IN DWORD, IN DWORD, IN LPBYTE, IN LPBITMAPINFO, IN DWORD);
        !          1391: DWORD APIENTRY SetMapperFlags(IN HDC, IN DWORD);
        !          1392: int   APIENTRY SetMapMode(IN HDC, IN int);
        !          1393: HMF   APIENTRY SetMetaFileBits(IN DWORD, IN LPBYTE);
        !          1394: UINT  APIENTRY SetPaletteEntries(IN HPALETTE, IN UINT, IN UINT, IN LPPALETTEENTRY);
        !          1395: COLORREF APIENTRY SetPixel(IN HDC, IN int, IN int, IN COLORREF);
        !          1396: BOOL BATCH  APIENTRY SetPixelV(IN HDC, IN int, IN int, IN COLORREF);
        !          1397: int   APIENTRY SetPolyFillMode(IN HDC, IN int);
        !          1398: BOOL BATCH  APIENTRY StretchBlt(IN HDC, IN int, IN int, IN int, IN int, IN HDC, IN int, IN int, IN int, IN int, IN DWORD);
        !          1399: BOOL BATCH  APIENTRY SetRectRgn(IN HRGN, IN int, IN int, IN int, IN int);
        !          1400: int   APIENTRY StretchDIBits(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int, IN int, IN int, IN LPBYTE, IN LPBITMAPINFO, IN DWORD, IN DWORD);
        !          1401: int   APIENTRY SetROP2(IN HDC, IN int);
        !          1402: int   APIENTRY SetStretchBltMode(IN HDC, IN int);
        !          1403: UINT  APIENTRY SetSystemPaletteUse(IN HDC, IN UINT);
        !          1404: int   APIENTRY SetTextCharacterExtra(IN HDC, IN int);
        !          1405: COLORREF APIENTRY SetTextColor(IN HDC, IN COLORREF);
        !          1406: UINT  APIENTRY SetTextAlign(IN HDC, IN UINT);
        !          1407: BOOL  APIENTRY SetTextJustification(IN HDC, IN int, IN int);
        !          1408: BOOL  APIENTRY UpdateColors(IN HDC);
        !          1409: 
        !          1410: #ifndef NOMETAFILE
        !          1411: 
        !          1412: // TEMPORARY include file containing the new Metafile definitions.
        !          1413: // Eventually it will be folded into wingdi.h and the old metafile
        !          1414: // definitions will be removed when the metafile stuff settles down.
        !          1415: #include <winmeta.h>
        !          1416: 
        !          1417: BOOL APIENTRY PlayMetaFileRecord(IN HDC, IN LPHANDLETABLE, IN LPMETARECORD, IN UINT);
        !          1418: BOOL APIENTRY EnumMetaFile(IN HDC, IN HMF, IN PROC, IN LPVOID);
        !          1419: #endif
        !          1420: 
        !          1421: #ifndef NOTEXTMETRIC
        !          1422: 
        !          1423: BOOL APIENTRY GetTextMetricsA(IN HDC, OUT LPTEXTMETRICA);
        !          1424: BOOL APIENTRY GetTextMetricsW(IN HDC, OUT LPTEXTMETRICW);
        !          1425: #ifdef UNICODE
        !          1426: #define GetTextMetrics GetTextMetricsW
        !          1427: #else
        !          1428: #define GetTextMetrics GetTextMetricsA
        !          1429: #endif // !UNICODE
        !          1430: 
        !          1431: #endif
        !          1432: 
        !          1433: /* new GDI */
        !          1434: BOOL BATCH APIENTRY AngleArc(IN HDC, IN int, IN int, IN DWORD, IN FLOAT, IN FLOAT);
        !          1435: BOOL APIENTRY GetWorldTransform(IN HDC, OUT LPXFORM);
        !          1436: BOOL BATCH APIENTRY PolyPolyline(IN HDC, IN LPPOINT, IN LPDWORD, IN DWORD);
        !          1437: BOOL APIENTRY SetWorldTransform(IN HDC, IN LPXFORM);
        !          1438: BOOL APIENTRY ModifyWorldTransform(IN HDC,IN LPXFORM OPTIONAL, IN DWORD);
        !          1439: BOOL APIENTRY StartDoc(IN HDC, IN LPSTR);
        !          1440: BOOL APIENTRY EndDoc(IN HDC);
        !          1441: BOOL APIENTRY StartPage(IN HDC);
        !          1442: BOOL APIENTRY EndPage(IN HDC);
        !          1443: BOOL APIENTRY GdiFlush(VOID);
        !          1444: BOOL APIENTRY GdiSetBatchLimit(IN DWORD);
        !          1445: BOOL APIENTRY ArcTo(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int,IN int, IN int);
        !          1446: BOOL APIENTRY BeginPath(IN HDC);
        !          1447: BOOL APIENTRY CloseFigure(IN HDC);
        !          1448: BOOL APIENTRY EndPath(IN HDC);
        !          1449: BOOL APIENTRY FillPath(IN HDC);
        !          1450: BOOL APIENTRY FlattenPath(IN HDC);
        !          1451: int  APIENTRY GetPath(IN HDC, OUT LPPOINT, OUT LPBYTE, IN int);
        !          1452: HRGN APIENTRY PathToRegion(IN HDC);
        !          1453: BOOL APIENTRY PolyDraw(IN HDC, IN LPPOINT, IN LPBYTE, IN int);
        !          1454: BOOL APIENTRY SelectClipPath(IN HDC, IN int);
        !          1455: BOOL APIENTRY SetFlatness(IN HDC, IN FLOAT, OUT PFLOAT);
        !          1456: BOOL APIENTRY SetMiterLimit(IN HDC, IN FLOAT, OUT PFLOAT);
        !          1457: BOOL APIENTRY StrokeAndFillPath(IN HDC);
        !          1458: BOOL APIENTRY StrokePath(IN HDC);
        !          1459: BOOL APIENTRY WidenPath(IN HDC);
        !          1460: 
        !          1461: /* if the thank compiler is reading this file, don't define these */
        !          1462: #ifndef THANKS
        !          1463: 
        !          1464: int     APIENTRY GetObjectA(IN HANDLE, IN int, OUT LPVOID);
        !          1465: int     APIENTRY GetObjectW(IN HANDLE, IN int, OUT LPVOID);
        !          1466: #ifdef UNICODE
        !          1467: #define GetObject GetObjectW
        !          1468: #else
        !          1469: #define GetObject GetObjectA
        !          1470: #endif // !UNICODE
        !          1471: 
        !          1472: BOOL    APIENTRY MoveToEx(IN HDC, IN int, IN int, OUT LPPOINT);
        !          1473: 
        !          1474: BOOL    BATCH APIENTRY TextOutA(
        !          1475:                         IN HDC,
        !          1476:                         IN int,
        !          1477:                         IN int,
        !          1478:                         IN LPSTR,
        !          1479:                         IN int
        !          1480:                         );
        !          1481: BOOL    BATCH APIENTRY TextOutW(
        !          1482:                         IN HDC,
        !          1483:                         IN int,
        !          1484:                         IN int,
        !          1485:                         IN LPWSTR,
        !          1486:                         IN int
        !          1487:                         );
        !          1488: #ifdef UNICODE
        !          1489: #define TextOut TextOutW
        !          1490: #else
        !          1491: #define TextOut TextOutA
        !          1492: #endif // !UNICODE
        !          1493: 
        !          1494: BOOL    BATCH APIENTRY ExtTextOutA(
        !          1495:                             IN HDC,
        !          1496:                             IN int,
        !          1497:                             IN int,
        !          1498:                             IN UINT,
        !          1499:                             IN LPRECT,
        !          1500:                             IN LPSTR,
        !          1501:                             IN int,
        !          1502:                             IN LPINT
        !          1503:                             );
        !          1504: BOOL    BATCH APIENTRY ExtTextOutW(
        !          1505:                             IN HDC,
        !          1506:                             IN int,
        !          1507:                             IN int,
        !          1508:                             IN UINT,
        !          1509:                             IN LPRECT,
        !          1510:                             IN LPWSTR,
        !          1511:                             IN int,
        !          1512:                             IN LPINT
        !          1513:                             );
        !          1514: #ifdef UNICODE
        !          1515: #define ExtTextOut ExtTextOutW
        !          1516: #else
        !          1517: #define ExtTextOut ExtTextOutA
        !          1518: #endif // !UNICODE
        !          1519: 
        !          1520: HRGN  APIENTRY CreatePolygonRgn(IN LPPOINT, IN int, IN int);
        !          1521: BOOL  APIENTRY DPtoLP(IN HDC, IN OUT LPPOINT, IN int);
        !          1522: BOOL  APIENTRY LPtoDP(IN HDC, IN OUT LPPOINT, IN int);
        !          1523: BOOL  APIENTRY Polygon(IN HDC, IN LPPOINT, IN int);
        !          1524: BOOL  APIENTRY Polyline(IN HDC, IN LPPOINT, IN int);
        !          1525: 
        !          1526: BOOL  APIENTRY PolyBezier(IN HDC, IN LPPOINT, IN DWORD);
        !          1527: BOOL  APIENTRY PolyBezierTo(IN HDC, IN LPPOINT, IN DWORD);
        !          1528: BOOL  APIENTRY PolylineTo(IN HDC, IN LPPOINT, IN DWORD);
        !          1529: 
        !          1530: BOOL  APIENTRY SetViewportExtEx(IN HDC, IN int, IN int, OUT LPSIZE);
        !          1531: BOOL  APIENTRY SetViewportOrgEx(IN HDC, IN int, IN int, OUT LPPOINT);
        !          1532: BOOL  APIENTRY SetWindowExtEx(IN HDC, IN int, IN int, OUT LPSIZE);
        !          1533: BOOL  APIENTRY SetWindowOrgEx(IN HDC, IN int, IN int, OUT LPPOINT);
        !          1534: 
        !          1535: BOOL  APIENTRY OffsetViewportOrgEx(IN HDC, IN int, IN int, OUT LPPOINT);
        !          1536: BOOL  APIENTRY OffsetWindowOrgEx(IN HDC, IN int, IN int, OUT LPPOINT);
        !          1537: BOOL  APIENTRY ScaleViewportExtEx(IN HDC, IN int, IN int, IN int, IN int, OUT LPSIZE);
        !          1538: BOOL  APIENTRY ScaleWindowExtEx(IN HDC, IN int, IN int, IN int, IN int, OUT LPSIZE);
        !          1539: BOOL  APIENTRY SetBitmapDimensionEx(IN HBITMAP, IN int, IN int, OUT LPSIZE);
        !          1540: BOOL  APIENTRY SetBrushOrg(IN HDC, IN int, IN int, OUT LPPOINT);
        !          1541: 
        !          1542: int   APIENTRY GetTextFaceA(IN HDC, IN int, OUT LPSTR);
        !          1543: int   APIENTRY GetTextFaceW(IN HDC, IN int, OUT LPWSTR);
        !          1544: #ifdef UNICODE
        !          1545: #define GetTextFace GetTextFaceW
        !          1546: #else
        !          1547: #define GetTextFace GetTextFaceA
        !          1548: #endif // !UNICODE
        !          1549: 
        !          1550: DWORD  APIENTRY EnumNearestFontsA(IN HDC,IN LPEXTLOGFONTA,IN DWORD,OUT LPFMATCHA);
        !          1551: DWORD  APIENTRY EnumNearestFontsW(IN HDC,IN LPEXTLOGFONTW,IN DWORD,OUT LPFMATCHW);
        !          1552: #ifdef UNICODE
        !          1553: #define EnumNearestFonts EnumNearestFontsW
        !          1554: #else
        !          1555: #define EnumNearestFonts EnumNearestFontsA
        !          1556: #endif // !UNICODE
        !          1557: 
        !          1558: HFONT  APIENTRY ExtCreateFontIndirectA(IN LPEXTLOGFONTA);
        !          1559: HFONT  APIENTRY ExtCreateFontIndirectW(IN LPEXTLOGFONTW);
        !          1560: #ifdef UNICODE
        !          1561: #define ExtCreateFontIndirect ExtCreateFontIndirectW
        !          1562: #else
        !          1563: #define ExtCreateFontIndirect ExtCreateFontIndirectA
        !          1564: #endif // !UNICODE
        !          1565: 
        !          1566: BOOL   APIENTRY SetFontMapperControls(IN LPFMCONTROLS);
        !          1567: BOOL   APIENTRY GetFontMapperControls(OUT LPFMCONTROLS,IN DWORD);
        !          1568: 
        !          1569: #endif /* THANKS */
        !          1570: #endif /* NOGDI */
        !          1571: 
        !          1572: #ifdef LATER
        !          1573: /*
        !          1574:  * JimA - 11/30/90
        !          1575:  *   gdidelta.doc lists these as obsolete
        !          1576:  */
        !          1577: DWORD   APIENTRY GetDCOrg(HDC);
        !          1578: #endif  /* LATER */
        !          1579: 
        !          1580: 
        !          1581: #endif /* _WINGDI_ */

unix.superglobalmegacorp.com

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