--- mstools/h/wingdi.h 2018/08/09 18:20:01 1.1 +++ mstools/h/wingdi.h 2018/08/09 18:23:05 1.1.1.4 @@ -16,6 +16,10 @@ Abstract: #ifndef _WINGDI_ #define _WINGDI_ +#ifdef __cplusplus +extern "C" { +#endif + #ifndef NOGDI #ifndef NORASTEROPS @@ -39,7 +43,7 @@ Abstract: #define R2_WHITE 16 /* 1 */ #define R2_LAST 16 -/* Ternary raster operations */ +/* Ternary raster operations */ #define SRCCOPY (DWORD)0x00CC0020 /* dest = source */ #define SRCPAINT (DWORD)0x00EE0086 /* dest = source OR dest */ #define SRCAND (DWORD)0x008800C6 /* dest = source AND dest */ @@ -55,9 +59,14 @@ Abstract: #define DSTINVERT (DWORD)0x00550009 /* dest = (NOT dest) */ #define BLACKNESS (DWORD)0x00000042 /* dest = BLACK */ #define WHITENESS (DWORD)0x00FF0062 /* dest = WHITE */ + +/* Quaternary raster codes */ +#define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore)) + #endif /* NORASTEROPS */ #define GDI_ERROR (0xFFFFFFFFL) +#define HGDI_ERROR ((HANDLE)(0xFFFFFFFFL)) /* Region Flags */ #define ERROR 0 @@ -79,9 +88,8 @@ Abstract: #define BLACKONWHITE 1 #define WHITEONBLACK 2 #define COLORONCOLOR 3 -#define BLEND 4 -#define HALFTONE 5 -#define MAXSTRETCHBLTMODE 5 +#define HALFTONE 4 +#define MAXSTRETCHBLTMODE 4 /* PolyFill() Modes */ #define ALTERNATE 1 @@ -101,12 +109,29 @@ Abstract: #define TA_BASELINE 24 #define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP) +#define VTA_BASELINE TA_BASELINE +#define VTA_LEFT TA_BOTTOM +#define VTA_RIGHT TA_TOP +#define VTA_CENTER TA_CENTER +#define VTA_BOTTOM TA_RIGHT +#define VTA_TOP TA_LEFT + + #define ETO_GRAYED 1 #define ETO_OPAQUE 2 #define ETO_CLIPPED 4 #define ASPECT_FILTERING 0x0001 +/* Bounds Accumulation APIs */ + +#define DCB_RESET 0x0001 +#define DCB_ACCUMULATE 0x0002 +#define DCB_DIRTY DCB_ACCUMULATE +#define DCB_SET (DCB_RESET | DCB_ACCUMULATE) +#define DCB_ENABLE 0x0004 +#define DCB_DISABLE 0x0008 + #ifndef NOMETAFILE /* Metafile Functions */ @@ -125,7 +150,7 @@ Abstract: #define META_SETVIEWPORTORG 0x020D #define META_SETVIEWPORTEXT 0x020E #define META_OFFSETWINDOWORG 0x020F -#define META_SCALEWINDOWEXT 0x0400 +#define META_SCALEWINDOWEXT 0x0410 #define META_OFFSETVIEWPORTORG 0x0211 #define META_SCALEVIEWPORTEXT 0x0412 #define META_LINETO 0x0213 @@ -156,8 +181,6 @@ Abstract: #define META_SELECTCLIPREGION 0x012C #define META_SELECTOBJECT 0x012D #define META_SETTEXTALIGN 0x012E -#define META_DRAWTEXT 0x062F - #define META_CHORD 0x0830 #define META_SETMAPPERFLAGS 0x0231 #define META_EXTTEXTOUT 0x0a32 @@ -168,22 +191,17 @@ Abstract: #define META_SETPALENTRIES 0x0037 #define META_POLYPOLYGON 0x0538 #define META_RESIZEPALETTE 0x0139 - #define META_DIBBITBLT 0x0940 #define META_DIBSTRETCHBLT 0x0b41 #define META_DIBCREATEPATTERNBRUSH 0x0142 #define META_STRETCHDIB 0x0f43 - +#define META_EXTFLOODFILL 0x0548 #define META_DELETEOBJECT 0x01f0 - #define META_CREATEPALETTE 0x00f7 -#define META_CREATEBRUSH 0x00F8 #define META_CREATEPATTERNBRUSH 0x01F9 #define META_CREATEPENINDIRECT 0x02FA #define META_CREATEFONTINDIRECT 0x02FB #define META_CREATEBRUSHINDIRECT 0x02FC -#define META_CREATEBITMAPINDIRECT 0x02FD -#define META_CREATEBITMAP 0x06FE #define META_CREATEREGION 0x06FF #endif /* NOMETAFILE */ @@ -211,7 +229,7 @@ Abstract: #define PASSTHROUGH 19 #define GETTECHNOLGY 20 #define GETTECHNOLOGY 20 -#define SETENDCAP 21 +#define SETLINECAP 21 #define SETLINEJOIN 22 #define SETMITERLIMIT 23 #define BANDINFO 24 @@ -228,11 +246,16 @@ Abstract: #define GETSETPAPERMETRICS 35 #define POSTSCRIPT_DATA 37 #define POSTSCRIPT_IGNORE 38 +#define MOUSETRAILS 39 +#define GETDEVICEUNITS 42 + #define GETEXTENDEDTEXTMETRICS 256 #define GETEXTENTTABLE 257 #define GETPAIRKERNTABLE 258 #define GETTRACKKERNTABLE 259 #define EXTTEXTOUT 512 +#define GETFACENAME 513 +#define DOWNLOADFACE 514 #define ENABLERELATIVEWIDTHS 768 #define ENABLEPAIRKERNING 769 #define SETKERNTRACK 770 @@ -240,6 +263,7 @@ Abstract: #define SETCHARSET 772 #define STRETCHBLT 2048 +#define GETSETSCREENPARAMS 3072 #define BEGIN_PATH 4096 #define CLIP_TO_PATH 4097 #define END_PATH 4098 @@ -255,6 +279,11 @@ Abstract: #define SET_CLIP_BOX 4108 #define SET_BOUNDS 4109 #define SET_MIRROR_MODE 4110 +#define OPENCHANNEL 4110 +#define DOWNLOADHEADER 4111 +#define CLOSECHANNEL 4112 +#define POSTSCRIPT_PASSTHROUGH 4115 +#define ENCAPSULATED_POSTSCRIPT 4116 /* Spooler Error Codes */ #define SP_NOTREPORTED 0x4000 @@ -266,7 +295,7 @@ Abstract: #define PR_JOBSTATUS 0x0000 -/* Object Definitions for EnumObjects(), GetObjectType() */ +/* Object Definitions for EnumObjects() */ #define OBJ_PEN 1 #define OBJ_BRUSH 2 #define OBJ_DC 3 @@ -277,6 +306,9 @@ Abstract: #define OBJ_REGION 8 #define OBJ_METAFILE 9 #define OBJ_MEMDC 10 +#define OBJ_EXTPEN 11 +#define OBJ_ENHMETADC 12 +#define OBJ_ENHMETAFILE 13 /* xform stuff */ #define MWT_IDENTITY 1 @@ -306,7 +338,7 @@ typedef struct tagBITMAP LONG bmWidthBytes; WORD bmPlanes; WORD bmBitsPixel; - LPSTR bmBits; + LPVOID bmBits; } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP; typedef struct tagRGBTRIPLE { @@ -321,6 +353,8 @@ typedef struct tagRGBQUAD { BYTE rgbRed; BYTE rgbReserved; } RGBQUAD; +typedef RGBQUAD FAR* LPRGBQUAD; + /* structures for defining DIBs */ typedef struct tagBITMAPCOREHEADER { @@ -334,23 +368,23 @@ typedef struct tagBITMAPCOREHEADER { typedef struct tagBITMAPINFOHEADER{ DWORD biSize; - DWORD biWidth; - DWORD biHeight; + LONG biWidth; + LONG biHeight; WORD biPlanes; WORD biBitCount; - DWORD biCompression; DWORD biSizeImage; - DWORD biXPelsPerMeter; - DWORD biYPelsPerMeter; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER; /* constants for the biCompression field */ -#define BI_RGB 0L -#define BI_RLE8 1L -#define BI_RLE4 2L +#define BI_RGB 0L +#define BI_RLE8 1L +#define BI_RLE4 2L +#define BI_BITFIELDS 3L typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; @@ -379,7 +413,7 @@ typedef struct tagBITMAPFILEHEADER { /* Clipboard Metafile Picture Structure */ typedef struct tagHANDLETABLE { - HANDLE objectHandle[1]; + HGDIOBJ objectHandle[1]; } HANDLETABLE, *PHANDLETABLE, FAR *LPHANDLETABLE; typedef struct tagMETARECORD @@ -387,16 +421,19 @@ typedef struct tagMETARECORD DWORD rdSize; WORD rdFunction; WORD rdParm[1]; - } METARECORD, *PMETARECORD, FAR *LPMETARECORD; + } METARECORD; +typedef struct tagMETARECORD UNALIGNED *PMETARECORD; +typedef struct tagMETARECORD UNALIGNED FAR *LPMETARECORD; typedef struct tagMETAFILEPICT { - DWORD mm; - DWORD xExt; - DWORD yExt; - HANDLE hMF; + LONG mm; + LONG xExt; + LONG yExt; + HMETAFILE hMF; } METAFILEPICT, FAR *LPMETAFILEPICT; +#pragma pack(2) typedef struct tagMETAHEADER { WORD mtType; @@ -407,11 +444,52 @@ typedef struct tagMETAHEADER DWORD mtMaxRecord; WORD mtNoParameters; } METAHEADER; +typedef struct tagMETAHEADER UNALIGNED *PMETAHEADER; +typedef struct tagMETAHEADER UNALIGNED FAR *LPMETAHEADER; + +#pragma pack() + +/* Enhanced Metafile structures */ +typedef struct tagENHMETARECORD +{ + DWORD iType; // Record type EMR_XXX + DWORD nSize; // Record size in bytes + DWORD dParm[1]; // Parameters +} ENHMETARECORD, *PENHMETARECORD, *LPENHMETARECORD; + +typedef struct tagENHMETAHEADER +{ + DWORD iType; // Record type EMR_HEADER + DWORD nSize; // Record size in bytes. This may be greater + // than the sizeof(ENHMETAHEADER). + RECTL rclBounds; // Inclusive-inclusive bounds in device units + RECTL rclFrame; // Inclusive-inclusive Picture Frame of metafile in .01 mm units + DWORD dSignature; // Signature. Must be ENHMETA_SIGNATURE. + DWORD nVersion; // Version number + DWORD nBytes; // Size of the metafile in bytes + DWORD nRecords; // Number of records in the metafile + WORD nHandles; // Number of handles in the handle table + // Handle index zero is reserved. + WORD sReserved; // Reserved. Must be zero. + DWORD nDescription; // Number of chars in the unicode description string + // This is 0 if there is no description string + DWORD offDescription; // Offset to the metafile description record. + // This is 0 if there is no description string + DWORD nPalEntries; // Number of entries in the metafile palette. + SIZEL szlDevice; // Size of the reference device in pels + SIZEL szlMillimeters; // Size of the reference device in millimeters +} ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER; #endif /* NOMETAFILE */ #ifndef NOTEXTMETRIC +/* tmPitchAndFamily flags */ +#define TMPF_FIXED_PITCH 0x01 +#define TMPF_VECTOR 0x02 +#define TMPF_DEVICE 0x08 +#define TMPF_TRUETYPE 0x04 + typedef struct tagTEXTMETRICA { LONG tmHeight; @@ -459,19 +537,89 @@ typedef struct tagTEXTMETRICW BYTE tmCharSet; } TEXTMETRICW, *PTEXTMETRICW, NEAR *NPTEXTMETRICW, FAR *LPTEXTMETRICW; #ifdef UNICODE -#define TEXTMETRIC TEXTMETRICW -#define PTEXTMETRIC PTEXTMETRICW -#define NPTEXTMETRIC NPTEXTMETRICW -#define LPTEXTMETRIC LPTEXTMETRICW -#else -#define TEXTMETRIC TEXTMETRICA -#define PTEXTMETRIC PTEXTMETRICA -#define NPTEXTMETRIC NPTEXTMETRICA -#define LPTEXTMETRIC LPTEXTMETRICA +typedef TEXTMETRICW TEXTMETRIC; +typedef PTEXTMETRICW PTEXTMETRIC; +typedef NPTEXTMETRICW NPTEXTMETRIC; +typedef LPTEXTMETRICW LPTEXTMETRIC; +#else +typedef TEXTMETRICA TEXTMETRIC; +typedef PTEXTMETRICA PTEXTMETRIC; +typedef NPTEXTMETRICA NPTEXTMETRIC; +typedef LPTEXTMETRICA LPTEXTMETRIC; #endif // UNICODE -#endif /* NOTEXTMETRIC */ +/* ntmFlags field flags */ +#define NTM_REGULAR 0x00000040L +#define NTM_BOLD 0x00000020L +#define NTM_ITALIC 0x00000001L + +typedef struct tagNEWTEXTMETRICA +{ + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; +} NEWTEXTMETRICA, *PNEWTEXTMETRICA, NEAR *NPNEWTEXTMETRICA, FAR *LPNEWTEXTMETRICA; +typedef struct tagNEWTEXTMETRICW +{ + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; +} NEWTEXTMETRICW, *PNEWTEXTMETRICW, NEAR *NPNEWTEXTMETRICW, FAR *LPNEWTEXTMETRICW; +#ifdef UNICODE +typedef NEWTEXTMETRICW NEWTEXTMETRIC; +typedef PNEWTEXTMETRICW PNEWTEXTMETRIC; +typedef NPNEWTEXTMETRICW NPNEWTEXTMETRIC; +typedef LPNEWTEXTMETRICW LPNEWTEXTMETRIC; +#else +typedef NEWTEXTMETRICA NEWTEXTMETRIC; +typedef PNEWTEXTMETRICA PNEWTEXTMETRIC; +typedef NPNEWTEXTMETRICA NPNEWTEXTMETRIC; +typedef LPNEWTEXTMETRICA LPNEWTEXTMETRIC; +#endif // UNICODE +#endif /* NOTEXTMETRIC */ /* GDI Logical Objects: */ /* Pel Array */ @@ -487,8 +635,8 @@ typedef struct tagPELARRAY /* Logical Brush (or Pattern) */ typedef struct tagLOGBRUSH { - DWORD lbStyle; - DWORD lbColor; + UINT lbStyle; + COLORREF lbColor; LONG lbHatch; } LOGBRUSH, *PLOGBRUSH, NEAR *NPLOGBRUSH, FAR *LPLOGBRUSH; @@ -500,11 +648,21 @@ typedef PATTERN FAR *LPPATTERN; /* Logical Pen */ typedef struct tagLOGPEN { - DWORD lopnStyle; + UINT lopnStyle; POINT lopnWidth; - DWORD lopnColor; + COLORREF lopnColor; } LOGPEN, *PLOGPEN, NEAR *NPLOGPEN, FAR *LPLOGPEN; +typedef struct tagEXTLOGPEN { + DWORD elpPenStyle; + DWORD elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + LONG elpHatch; + DWORD elpNumEntries; + DWORD elpStyleEntry[1]; +} EXTLOGPEN, *PEXTLOGPEN, NEAR *NPEXTLOGPEN, FAR *LPEXTLOGPEN; + typedef struct tagPALETTEENTRY { BYTE peRed; BYTE peGreen; @@ -523,7 +681,6 @@ typedef struct tagLOGPALETTE { /* Logical Font */ #define LF_FACESIZE 32 - typedef struct tagLOGFONTA { LONG lfHeight; @@ -539,7 +696,7 @@ typedef struct tagLOGFONTA BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; - BYTE lfFaceName[LF_FACESIZE]; + CHAR lfFaceName[LF_FACESIZE]; } LOGFONTA, *PLOGFONTA, NEAR *NPLOGFONTA, FAR *LPLOGFONTA; typedef struct tagLOGFONTW { @@ -559,26 +716,58 @@ typedef struct tagLOGFONTW WCHAR lfFaceName[LF_FACESIZE]; } LOGFONTW, *PLOGFONTW, NEAR *NPLOGFONTW, FAR *LPLOGFONTW; #ifdef UNICODE -#define LOGFONT LOGFONTW -#define PLOGFONT PLOGFONTW -#define NPLOGFONT NPLOGFONTW -#define LPLOGFONT LPLOGFONTW -#else -#define LOGFONT LOGFONTA -#define PLOGFONT PLOGFONTA -#define NPLOGFONT NPLOGFONTA -#define LPLOGFONT LPLOGFONTA +typedef LOGFONTW LOGFONT; +typedef PLOGFONTW PLOGFONT; +typedef NPLOGFONTW NPLOGFONT; +typedef LPLOGFONTW LPLOGFONT; +#else +typedef LOGFONTA LOGFONT; +typedef PLOGFONTA PLOGFONT; +typedef NPLOGFONTA NPLOGFONT; +typedef LPLOGFONTA LPLOGFONT; #endif // UNICODE +#define LF_FULLFACESIZE 64 + +/* Structure passed to FONTENUMPROC */ +typedef struct tagENUMLOGFONTA +{ + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; +} ENUMLOGFONTA, FAR* LPENUMLOGFONTA; +/* Structure passed to FONTENUMPROC */ +typedef struct tagENUMLOGFONTW +{ + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; +} ENUMLOGFONTW, FAR* LPENUMLOGFONTW; +#ifdef UNICODE +typedef ENUMLOGFONTW ENUMLOGFONT; +typedef LPENUMLOGFONTW LPENUMLOGFONT; +#else +typedef ENUMLOGFONTA ENUMLOGFONT; +typedef LPENUMLOGFONTA LPENUMLOGFONT; +#endif // UNICODE #define OUT_DEFAULT_PRECIS 0 #define OUT_STRING_PRECIS 1 #define OUT_CHARACTER_PRECIS 2 #define OUT_STROKE_PRECIS 3 +#define OUT_TT_PRECIS 4 +#define OUT_DEVICE_PRECIS 5 +#define OUT_RASTER_PRECIS 6 +#define OUT_TT_ONLY_PRECIS 7 +#define OUT_OUTLINE_PRECIS 8 #define CLIP_DEFAULT_PRECIS 0 #define CLIP_CHARACTER_PRECIS 1 #define CLIP_STROKE_PRECIS 2 +#define CLIP_MASK 0xf +#define CLIP_LH_ANGLES (1<<4) +#define CLIP_TT_ALWAYS (2<<4) +#define CLIP_EMBEDDED (8<<4) #define DEFAULT_QUALITY 0 #define DRAFT_QUALITY 1 @@ -589,8 +778,11 @@ typedef struct tagLOGFONTW #define VARIABLE_PITCH 2 #define ANSI_CHARSET 0 +#define DEFAULT_CHARSET 1 #define SYMBOL_CHARSET 2 #define SHIFTJIS_CHARSET 128 +#define HANGEUL_CHARSET 129 +#define CHINESEBIG5_CHARSET 136 #define OEM_CHARSET 255 /* Font Families */ @@ -622,259 +814,194 @@ typedef struct tagLOGFONTW #define FW_ULTRABOLD FW_EXTRABOLD #define FW_BLACK FW_HEAVY +#define PANOSE_COUNT 10 +#define PAN_FAMILYTYPE_INDEX 0 +#define PAN_SERIFSTYLE_INDEX 1 +#define PAN_WEIGHT_INDEX 2 +#define PAN_PROPORTION_INDEX 3 +#define PAN_CONTRAST_INDEX 4 +#define PAN_STROKEVARIATION_INDEX 5 +#define PAN_ARMSTYLE_INDEX 6 +#define PAN_LETTERFORM_INDEX 7 +#define PAN_MIDLINE_INDEX 8 +#define PAN_XHEIGHT_INDEX 9 -typedef struct tagCHARSET { - DWORD aflBlock[3]; - DWORD flLang; -} CHARSET, *LPCHARSET; - -typedef struct tagPANOSE { - ULONG ulCulture; - BYTE bFamilyType; - BYTE bSerifStyle; - BYTE bWeight; - BYTE bProportion; - BYTE bContrast; - BYTE bStrokeVariation; - BYTE bArmStyle; - BYTE bLetterform; - BYTE bMidline; - BYTE bXHeight; -} PANOSE, *LPPANOSE; - -#define PAN_ANY 0 /* Any */ -#define PAN_NO_FIT 1 /* No Fit */ - -#define PAN_FAMILY_TEXT_DISPLAY 2 /* Text and Display */ -#define PAN_FAMILY_SCRIPT 3 /* Script */ -#define PAN_FAMILY_DECORATIVE 4 /* Decorative */ -#define PAN_FAMILY_PICTORIAL 5 /* Pictorial */ - -#define PAN_SERIF_COVE 2 /* Cove */ -#define PAN_SERIF_OBTUSE_COVE 3 /* Obtuse Cove */ -#define PAN_SERIF_SQUARE_COVE 4 /* Square Cove */ -#define PAN_SERIF_OBTUSE_SQUARE_COVE 5 /* Obtuse Square Cove */ -#define PAN_SERIF_SQUARE 6 /* Square */ -#define PAN_SERIF_THIN 7 /* Thin */ -#define PAN_SERIF_BONE 8 /* Bone */ -#define PAN_SERIF_EXAGGERATED 9 /* Exaggerated */ -#define PAN_SERIF_TRIANGLE 10 /* Triangle */ -#define PAN_SERIF_NORMAL_SANS 11 /* Normal Sans */ -#define PAN_SERIF_OBTUSE_SANS 12 /* Obtuse Sans */ -#define PAN_SERIF_PERP_SANS 13 /* Prep Sans */ -#define PAN_SERIF_FLARED 14 /* Flared */ -#define PAN_SERIF_ROUNDED 15 /* Rounded */ - -#define PAN_WEIGHT_VERY_LIGHT 2 /* Very Light */ -#define PAN_WEIGHT_LIGHT 3 /* Light */ -#define PAN_WEIGHT_THIN 4 /* Thin */ -#define PAN_WEIGHT_BOOK 5 /* Book */ -#define PAN_WEIGHT_MEDIUM 6 /* Medium */ -#define PAN_WEIGHT_DEMI 7 /* Demi */ -#define PAN_WEIGHT_BOLD 8 /* Bold */ -#define PAN_WEIGHT_HEAVY 9 /* Heavy */ -#define PAN_WEIGHT_BLACK 10 /* Black */ -#define PAN_WEIGHT_NORD 11 /* Nord */ - -#define PAN_PROP_OLD_STYLE 2 /* Old Style */ -#define PAN_PROP_MODERN 3 /* Modern */ -#define PAN_PROP_EVEN_WIDTH 4 /* Even Width */ -#define PAN_PROP_EXPANDED 5 /* Expanded */ -#define PAN_PROP_CONDENSED 6 /* Condensed */ -#define PAN_PROP_VERY_EXPANDED 7 /* Very Expanded */ -#define PAN_PROP_VERY_CONDENSED 8 /* Very Condensed */ -#define PAN_PROP_MONOSPACED 9 /* Monospaced */ - -#define PAN_CONTRAST_NONE 2 /* None */ -#define PAN_CONTRAST_VERY_LOW 3 /* Very Low */ -#define PAN_CONTRAST_LOW 4 /* Low */ -#define PAN_CONTRAST_MEDIUM_LOW 5 /* Medium Low */ -#define PAN_CONTRAST_MEDIUM 6 /* Medium */ -#define PAN_CONTRAST_MEDIUM_HIGH 7 /* Mediim High */ -#define PAN_CONTRAST_HIGH 8 /* High */ -#define PAN_CONTRAST_VERY_HIGH 9 /* Very High */ - -#define PAN_STROKE_GRADUAL_DIAG 2 /* Gradual/Diagonal */ -#define PAN_STROKE_GRADUAL_TRAN 3 /* Gradual/Transitional */ -#define PAN_STROKE_GRADUAL_VERT 4 /* Gradual/Vertical */ -#define PAN_STROKE_GRADUAL_HORZ 5 /* Gradual/Horizontal */ -#define PAN_STROKE_RAPID_VERT 6 /* Rapid/Vertical */ -#define PAN_STROKE_RAPID_HORZ 7 /* Rapid/Horizontal */ -#define PAN_STROKE_INSTANT_VERT 8 /* Instant/Vertical */ - -#define PAN_STRAIGHT_ARMS_HORZ 2 /* Straight Arms/Horizontal */ -#define PAN_STRAIGHT_ARMS_WEDGE 3 /* Straight Arms/Wedge */ -#define PAN_STRAIGHT_ARMS_VERT 4 /* Straight Arms/Vertical */ -#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5 /* Straight Arms/Single-Serif */ -#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6 /* Straight Arms/Double-Serif */ -#define PAN_BENT_ARMS_HORZ 7 /* Non-Straight Arms/Horizontal */ -#define PAN_BENT_ARMS_WEDGE 8 /* Non-Straight Arms/Wedge */ -#define PAN_BENT_ARMS_VERT 9 /* Non-Straight Arms/Vertical */ -#define PAN_BENT_ARMS_SINGLE_SERIF 10 /* Non-Straight Arms/Single-Serif */ -#define PAN_BENT_ARMS_DOUBLE_SERIF 11 /* Non-Straight Arms/Double-Serif */ - -#define PAN_LETT_NORMAL_CONTACT 2 /* Normal/Contact */ -#define PAN_LETT_NORMAL_WEIGHTED 3 /* Normal/Weighted */ -#define PAN_LETT_NORMAL_BOXED 4 /* Normal/Boxed */ -#define PAN_LETT_NORMAL_FLATTENED 5 /* Normal/Flattened */ -#define PAN_LETT_NORMAL_ROUNDED 6 /* Normal/Rounded */ -#define PAN_LETT_NORMAL_OFF_CENTER 7 /* Normal/Off Center */ -#define PAN_LETT_NORMAL_SQUARE 8 /* Normal/Square */ -#define PAN_LETT_OBLIQUE_CONTACT 9 /* Oblique/Contact */ -#define PAN_LETT_OBLIQUE_WEIGHTED 10 /* Oblique/Weighted */ -#define PAN_LETT_OBLIQUE_BOXED 11 /* Oblique/Boxed */ -#define PAN_LETT_OBLIQUE_FLATTENED 12 /* Oblique/Flattened */ -#define PAN_LETT_OBLIQUE_ROUNDED 13 /* Oblique/Rounded */ -#define PAN_LETT_OBLIQUE_OFF_CENTER 14 /* Oblique/Off Center */ -#define PAN_LETT_OBLIQUE_SQUARE 15 /* Oblique/Square */ - -#define PAN_MIDLINE_STANDARD_TRIMMED 2 /* Standard/Trimmed */ -#define PAN_MIDLINE_STANDARD_POINTED 3 /* Standard/Pointed */ -#define PAN_MIDLINE_STANDARD_SERIFED 4 /* Standard/Serifed */ -#define PAN_MIDLINE_HIGH_TRIMMED 5 /* High/Trimmed */ -#define PAN_MIDLINE_HIGH_POINTED 6 /* High/Pointed */ -#define PAN_MIDLINE_HIGH_SERIFED 7 /* High/Serifed */ -#define PAN_MIDLINE_CONSTANT_TRIMMED 8 /* Constant/Trimmed */ -#define PAN_MIDLINE_CONSTANT_POINTED 9 /* Constant/Pointed */ -#define PAN_MIDLINE_CONSTANT_SERIFED 10 /* Constant/Serifed */ -#define PAN_MIDLINE_LOW_TRIMMED 11 /* Low/Trimmed */ -#define PAN_MIDLINE_LOW_POINTED 12 /* Low/Pointed */ -#define PAN_MIDLINE_LOW_SERIFED 13 /* Low/Serifed */ - -#define PAN_XHEIGHT_CONSTANT_SMALL 2 /* Constant/Small */ -#define PAN_XHEIGHT_CONSTANT_STD 3 /* Constant/Standard */ -#define PAN_XHEIGHT_CONSTANT_LARGE 4 /* Constant/Large */ -#define PAN_XHEIGHT_DUCKING_SMALL 5 /* Ducking/Small */ -#define PAN_XHEIGHT_DUCKING_STD 6 /* Ducking/Standard */ -#define PAN_XHEIGHT_DUCKING_LARGE 7 /* Ducking/Large */ +#define PAN_CULTURE_LATIN 0 + +typedef struct tagPANOSE +{ + BYTE bFamilyType; + BYTE bSerifStyle; + BYTE bWeight; + BYTE bProportion; + BYTE bContrast; + BYTE bStrokeVariation; + BYTE bArmStyle; + BYTE bLetterform; + BYTE bMidline; + BYTE bXHeight; +} PANOSE, * LPPANOSE; + +#define PAN_ANY 0 /* Any */ +#define PAN_NO_FIT 1 /* No Fit */ + +#define PAN_FAMILY_TEXT_DISPLAY 2 /* Text and Display */ +#define PAN_FAMILY_SCRIPT 3 /* Script */ +#define PAN_FAMILY_DECORATIVE 4 /* Decorative */ +#define PAN_FAMILY_PICTORIAL 5 /* Pictorial */ + +#define PAN_SERIF_COVE 2 /* Cove */ +#define PAN_SERIF_OBTUSE_COVE 3 /* Obtuse Cove */ +#define PAN_SERIF_SQUARE_COVE 4 /* Square Cove */ +#define PAN_SERIF_OBTUSE_SQUARE_COVE 5 /* Obtuse Square Cove */ +#define PAN_SERIF_SQUARE 6 /* Square */ +#define PAN_SERIF_THIN 7 /* Thin */ +#define PAN_SERIF_BONE 8 /* Bone */ +#define PAN_SERIF_EXAGGERATED 9 /* Exaggerated */ +#define PAN_SERIF_TRIANGLE 10 /* Triangle */ +#define PAN_SERIF_NORMAL_SANS 11 /* Normal Sans */ +#define PAN_SERIF_OBTUSE_SANS 12 /* Obtuse Sans */ +#define PAN_SERIF_PERP_SANS 13 /* Prep Sans */ +#define PAN_SERIF_FLARED 14 /* Flared */ +#define PAN_SERIF_ROUNDED 15 /* Rounded */ + +#define PAN_WEIGHT_VERY_LIGHT 2 /* Very Light */ +#define PAN_WEIGHT_LIGHT 3 /* Light */ +#define PAN_WEIGHT_THIN 4 /* Thin */ +#define PAN_WEIGHT_BOOK 5 /* Book */ +#define PAN_WEIGHT_MEDIUM 6 /* Medium */ +#define PAN_WEIGHT_DEMI 7 /* Demi */ +#define PAN_WEIGHT_BOLD 8 /* Bold */ +#define PAN_WEIGHT_HEAVY 9 /* Heavy */ +#define PAN_WEIGHT_BLACK 10 /* Black */ +#define PAN_WEIGHT_NORD 11 /* Nord */ + +#define PAN_PROP_OLD_STYLE 2 /* Old Style */ +#define PAN_PROP_MODERN 3 /* Modern */ +#define PAN_PROP_EVEN_WIDTH 4 /* Even Width */ +#define PAN_PROP_EXPANDED 5 /* Expanded */ +#define PAN_PROP_CONDENSED 6 /* Condensed */ +#define PAN_PROP_VERY_EXPANDED 7 /* Very Expanded */ +#define PAN_PROP_VERY_CONDENSED 8 /* Very Condensed */ +#define PAN_PROP_MONOSPACED 9 /* Monospaced */ + +#define PAN_CONTRAST_NONE 2 /* None */ +#define PAN_CONTRAST_VERY_LOW 3 /* Very Low */ +#define PAN_CONTRAST_LOW 4 /* Low */ +#define PAN_CONTRAST_MEDIUM_LOW 5 /* Medium Low */ +#define PAN_CONTRAST_MEDIUM 6 /* Medium */ +#define PAN_CONTRAST_MEDIUM_HIGH 7 /* Mediim High */ +#define PAN_CONTRAST_HIGH 8 /* High */ +#define PAN_CONTRAST_VERY_HIGH 9 /* Very High */ + +#define PAN_STROKE_GRADUAL_DIAG 2 /* Gradual/Diagonal */ +#define PAN_STROKE_GRADUAL_TRAN 3 /* Gradual/Transitional */ +#define PAN_STROKE_GRADUAL_VERT 4 /* Gradual/Vertical */ +#define PAN_STROKE_GRADUAL_HORZ 5 /* Gradual/Horizontal */ +#define PAN_STROKE_RAPID_VERT 6 /* Rapid/Vertical */ +#define PAN_STROKE_RAPID_HORZ 7 /* Rapid/Horizontal */ +#define PAN_STROKE_INSTANT_VERT 8 /* Instant/Vertical */ + +#define PAN_STRAIGHT_ARMS_HORZ 2 /* Straight Arms/Horizontal */ +#define PAN_STRAIGHT_ARMS_WEDGE 3 /* Straight Arms/Wedge */ +#define PAN_STRAIGHT_ARMS_VERT 4 /* Straight Arms/Vertical */ +#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5 /* Straight Arms/Single-Serif */ +#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6 /* Straight Arms/Double-Serif */ +#define PAN_BENT_ARMS_HORZ 7 /* Non-Straight Arms/Horizontal */ +#define PAN_BENT_ARMS_WEDGE 8 /* Non-Straight Arms/Wedge */ +#define PAN_BENT_ARMS_VERT 9 /* Non-Straight Arms/Vertical */ +#define PAN_BENT_ARMS_SINGLE_SERIF 10 /* Non-Straight Arms/Single-Serif */ +#define PAN_BENT_ARMS_DOUBLE_SERIF 11 /* Non-Straight Arms/Double-Serif */ + +#define PAN_LETT_NORMAL_CONTACT 2 /* Normal/Contact */ +#define PAN_LETT_NORMAL_WEIGHTED 3 /* Normal/Weighted */ +#define PAN_LETT_NORMAL_BOXED 4 /* Normal/Boxed */ +#define PAN_LETT_NORMAL_FLATTENED 5 /* Normal/Flattened */ +#define PAN_LETT_NORMAL_ROUNDED 6 /* Normal/Rounded */ +#define PAN_LETT_NORMAL_OFF_CENTER 7 /* Normal/Off Center */ +#define PAN_LETT_NORMAL_SQUARE 8 /* Normal/Square */ +#define PAN_LETT_OBLIQUE_CONTACT 9 /* Oblique/Contact */ +#define PAN_LETT_OBLIQUE_WEIGHTED 10 /* Oblique/Weighted */ +#define PAN_LETT_OBLIQUE_BOXED 11 /* Oblique/Boxed */ +#define PAN_LETT_OBLIQUE_FLATTENED 12 /* Oblique/Flattened */ +#define PAN_LETT_OBLIQUE_ROUNDED 13 /* Oblique/Rounded */ +#define PAN_LETT_OBLIQUE_OFF_CENTER 14 /* Oblique/Off Center */ +#define PAN_LETT_OBLIQUE_SQUARE 15 /* Oblique/Square */ + +#define PAN_MIDLINE_STANDARD_TRIMMED 2 /* Standard/Trimmed */ +#define PAN_MIDLINE_STANDARD_POINTED 3 /* Standard/Pointed */ +#define PAN_MIDLINE_STANDARD_SERIFED 4 /* Standard/Serifed */ +#define PAN_MIDLINE_HIGH_TRIMMED 5 /* High/Trimmed */ +#define PAN_MIDLINE_HIGH_POINTED 6 /* High/Pointed */ +#define PAN_MIDLINE_HIGH_SERIFED 7 /* High/Serifed */ +#define PAN_MIDLINE_CONSTANT_TRIMMED 8 /* Constant/Trimmed */ +#define PAN_MIDLINE_CONSTANT_POINTED 9 /* Constant/Pointed */ +#define PAN_MIDLINE_CONSTANT_SERIFED 10 /* Constant/Serifed */ +#define PAN_MIDLINE_LOW_TRIMMED 11 /* Low/Trimmed */ +#define PAN_MIDLINE_LOW_POINTED 12 /* Low/Pointed */ +#define PAN_MIDLINE_LOW_SERIFED 13 /* Low/Serifed */ + +#define PAN_XHEIGHT_CONSTANT_SMALL 2 /* Constant/Small */ +#define PAN_XHEIGHT_CONSTANT_STD 3 /* Constant/Standard */ +#define PAN_XHEIGHT_CONSTANT_LARGE 4 /* Constant/Large */ +#define PAN_XHEIGHT_DUCKING_SMALL 5 /* Ducking/Small */ +#define PAN_XHEIGHT_DUCKING_STD 6 /* Ducking/Standard */ +#define PAN_XHEIGHT_DUCKING_LARGE 7 /* Ducking/Large */ -#define ELF_FAMILY_SIZE 32 +#define ELF_VENDOR_SIZE 4 -/* The extended logical font */ +/* The extended logical font */ +/* An extension of the ENUMLOGFONT */ typedef struct tagEXTLOGFONTA { LOGFONTA elfLogFont; - DWORD elfSize; - DWORD elfTech; - DWORD elfXHeight; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; + DWORD elfVersion; /* 0 for the first release of NT */ + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; /* 0 for Latin */ PANOSE elfPanose; - CHARSET elfCharset; - BYTE elfFamily[ELF_FAMILY_SIZE]; -} EXTLOGFONTA, *LPEXTLOGFONTA; +} EXTLOGFONTA, *PEXTLOGFONTA, NEAR *NPEXTLOGFONTA, FAR *LPEXTLOGFONTA; typedef struct tagEXTLOGFONTW { LOGFONTW elfLogFont; - DWORD elfSize; - DWORD elfTech; - DWORD elfXHeight; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; + DWORD elfVersion; /* 0 for the first release of NT */ + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; /* 0 for Latin */ PANOSE elfPanose; - CHARSET elfCharset; - WCHAR elfFamily[ELF_FAMILY_SIZE]; -} EXTLOGFONTW, *LPEXTLOGFONTW; +} EXTLOGFONTW, *PEXTLOGFONTW, NEAR *NPEXTLOGFONTW, FAR *LPEXTLOGFONTW; #ifdef UNICODE -#define EXTLOGFONT EXTLOGFONTW -#define LPEXTLOGFONT LPEXTLOGFONTW +typedef EXTLOGFONTW EXTLOGFONT; +typedef PEXTLOGFONTW PEXTLOGFONT; +typedef NPEXTLOGFONTW NPEXTLOGFONT; +typedef LPEXTLOGFONTW LPEXTLOGFONT; #else -#define EXTLOGFONT EXTLOGFONTA -#define LPEXTLOGFONT LPEXTLOGFONTA +typedef EXTLOGFONTA EXTLOGFONT; +typedef PEXTLOGFONTA PEXTLOGFONT; +typedef NPEXTLOGFONTA NPEXTLOGFONT; +typedef LPEXTLOGFONTA LPEXTLOGFONT; #endif // UNICODE -/* Allowed values for EXTLOGFONT::elfTech */ -#define ELF_ANY 0 -#define ELF_OUTLINE 1 -#define ELF_BITMAP 2 -#define ELF_STICK 3 - -/* complete set font attribute weights */ -typedef struct tagFMWEIGHTSET { - WORD wtFaceName; - WORD wtFamilyName; - WORD wtAvgWidth; - WORD wtXHeight; - WORD wtSize; - WORD wtTech; - WORD wtPanose; - WORD wtPanFamily; - WORD wtPanSerif; - WORD wtPanWeight; - WORD wtPanProp; - WORD wtPanContrast; - WORD wtPanStrokeVar; - WORD wtPanArmStyle; - WORD wtPanLetter; - WORD wtPanMidline; - WORD wtPanXHeight; - WORD wtCharSet; -} FMWEIGHTSET, *LPFMWEIGHTSET; - -/* the complete set of font attribute distances */ -typedef struct tagFMDISTANCESET { - WORD dFaceName; - WORD dFamilyName; - WORD dAvgWidth; - WORD dXHeight; - WORD dSize; - WORD dTech; - WORD dPanose; - WORD dPanFamily; - WORD dPanSerif; - WORD dPanWeight; - WORD dPanProp; - WORD dPanContrast; - WORD dPanStrokeVar; - WORD dPanArmStyle; - WORD dPanLetter; - WORD dPanMidline; - WORD dPanXHeight; - WORD dCharSet; -} FMDISTANCESET, *LPFMDISTANCESET; - -typedef struct tagFMCONTROLS { - DWORD size; - DWORD distsetSumMax; - FMDISTANCESET distsetMax; - FMWEIGHTSET wtsetNear; - FMWEIGHTSET wtsetFar; -} FMCONTROLS, *LPFMCONTROLS; - -#define SIZEOFFMCONTROLS sizeof(FMCONTROLS) - -typedef struct tagFMATCHA { - DWORD size; - DWORD type; - DWORD distsetSum; - FMDISTANCESET distset; - EXTLOGFONTA ExtLogFont; -} FMATCHA,*LPFMATCHA; -typedef struct tagFMATCHW { - DWORD size; - DWORD type; - DWORD distsetSum; - FMDISTANCESET distset; - EXTLOGFONTW ExtLogFont; -} FMATCHW,*LPFMATCHW; -#ifdef UNICODE -#define FMATCH FMATCHW -#define LPFMATCH LPFMATCHW -#else -#define FMATCH FMATCHA -#define LPFMATCH LPFMATCHA -#endif // UNICODE - -/* Allowed values for FMATCH::wType */ -#define FMATCH_EXACT 0 -#define FMATCH_NEAR 1 -#define FMATCH_FAR 2 - +#define ELF_VERSION 0 +#define ELF_CULTURE_LATIN 0 /* EnumFonts Masks */ #define RASTER_FONTTYPE 0x0001 -#define DEVICE_FONTTYPE 0X0002 +#define DEVICE_FONTTYPE 0x002 +#define TRUETYPE_FONTTYPE 0x004 -#define RGB(r,g,b) ((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16))) +#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) #define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b)) -#define PALETTEINDEX(i) ((DWORD)(0x01000000 | (WORD)(i))) +#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i))) /* palette entry flags */ @@ -891,6 +1018,12 @@ typedef struct tagFMATCHW { #define OPAQUE 2 #define BKMODE_LAST 2 +/* Graphics Modes */ + +#define GM_COMPATIBLE 1 +#define GM_ADVANCED 2 +#define GM_LAST 2 + /* PolyDraw and GetPath point types */ #define PT_CLOSEFIGURE 0x01 #define PT_LINETO 0x02 @@ -904,22 +1037,13 @@ typedef struct tagFMATCHW { #define MM_LOENGLISH 4 #define MM_HIENGLISH 5 #define MM_TWIPS 6 - #define MM_ISOTROPIC 7 -#define MM_ANISOTROPIC 8 - -/* - Current mapping occurs in 'logical' scale. To - use 'actual' scale, OR this to modes 2-6 above. -*/ -#define MM_REAL_UNITS 16 +#define MM_ANISOTROPIC 8 /* Min and Max Mapping Mode values */ #define MM_MIN MM_TEXT #define MM_MAX MM_ANISOTROPIC #define MM_MAX_FIXEDSCALE MM_TWIPS -#define MM_REAL_MIN (MM_REAL_UNITS | MM_LOMETRIC) -#define MM_REAL_MAX (MM_REAL_UNITS | MM_TWIPS) /* Coordinate Modes */ #define ABSOLUTE 1 @@ -945,7 +1069,7 @@ typedef struct tagFMATCHW { #define SYSTEM_FIXED_FONT 16 #define STOCK_LAST 16 -#define CLR_INVALID 0x80000000 +#define CLR_INVALID 0xFFFFFFFF /* Brush Styles */ #define BS_SOLID 0 @@ -955,6 +1079,9 @@ typedef struct tagFMATCHW { #define BS_PATTERN 3 #define BS_INDEXED 4 #define BS_DIBPATTERN 5 +#define BS_DIBPATTERNPT 6 +#define BS_PATTERN8X8 7 +#define BS_DIBPATTERN8X8 8 /* Hatch Styles */ #define HS_HORIZONTAL 0 /* ----- */ @@ -976,7 +1103,13 @@ typedef struct tagFMATCHW { #define HS_DENSE8 16 #define HS_NOSHADE 17 #define HS_HALFTONE 18 -#define HS_API_MAX 19 +#define HS_SOLIDCLR 19 +#define HS_DITHEREDCLR 20 +#define HS_SOLIDTEXTCLR 21 +#define HS_DITHEREDTEXTCLR 22 +#define HS_SOLIDBKCLR 23 +#define HS_DITHEREDBKCLR 24 +#define HS_API_MAX 25 /* Pen Styles */ #define PS_SOLID 0 @@ -986,6 +1119,26 @@ typedef struct tagFMATCHW { #define PS_DASHDOTDOT 4 /* _.._.._ */ #define PS_NULL 5 #define PS_INSIDEFRAME 6 +#define PS_USERSTYLE 7 +#define PS_ALTERNATE 8 +#define PS_STYLE_MASK 0x0000000F + +#define PS_ENDCAP_ROUND 0x00000000 +#define PS_ENDCAP_SQUARE 0x00000100 +#define PS_ENDCAP_FLAT 0x00000200 +#define PS_ENDCAP_MASK 0x00000F00 + +#define PS_JOIN_ROUND 0x00000000 +#define PS_JOIN_BEVEL 0x00001000 +#define PS_JOIN_MITER 0x00002000 +#define PS_JOIN_MASK 0x0000F000 + +#define PS_COSMETIC 0x00000000 +#define PS_GEOMETRIC 0x00010000 +#define PS_TYPE_MASK 0x000F0000 + +#define AD_COUNTERCLOCKWISE 1 +#define AD_CLOCKWISE 2 /* Device Parameters for GetDeviceCaps() */ #define DRIVERVERSION 0 /* Device driver version */ @@ -1015,7 +1168,7 @@ typedef struct tagFMATCHW { #define LOGPIXELSX 88 /* Logical pixels/inch in X */ #define LOGPIXELSY 90 /* Logical pixels/inch in Y */ -#define SIZEPALETTE 104 /* Number of entries in physical palette */ +#define SIZEPALETTE 104 /* Number of entries in physical palette */ #define NUMRESERVED 106 /* Number of reserved entries in palette */ #define COLORRES 108 /* Actual color resolution */ @@ -1052,6 +1205,7 @@ typedef struct tagFMATCHW { #define CC_STYLED 32 /* Can do styled lines */ #define CC_WIDESTYLED 64 /* Can do wide styled lines */ #define CC_INTERIORS 128 /* Can do interiors */ +#define CC_ROUNDRECT 256 /* */ /* Line Capabilities */ #define LC_NONE 0 /* Lines not supported */ @@ -1078,33 +1232,38 @@ typedef struct tagFMATCHW { /* Polygonal Capabilities */ #define CP_NONE 0 /* No clipping of output */ #define CP_RECTANGLE 1 /* Output clipped to rects */ +#define CP_REGION 2 /* */ /* Text Capabilities */ -#define TC_OP_CHARACTER 0x0001 /* Can do OutputPrecision CHARACTER */ -#define TC_OP_STROKE 0x0002 /* Can do OutputPrecision STROKE */ -#define TC_CP_STROKE 0x0004 /* Can do ClipPrecision STROKE */ -#define TC_CR_90 0x0008 /* Can do CharRotAbility 90 */ -#define TC_CR_ANY 0x0010 /* Can do CharRotAbility ANY */ -#define TC_SF_X_YINDEP 0x0020 /* Can do ScaleFreedom X_YINDEPENDENT */ -#define TC_SA_DOUBLE 0x0040 /* Can do ScaleAbility DOUBLE */ -#define TC_SA_INTEGER 0x0080 /* Can do ScaleAbility INTEGER */ -#define TC_SA_CONTIN 0x0100 /* Can do ScaleAbility CONTINUOUS */ -#define TC_EA_DOUBLE 0x0200 /* Can do EmboldenAbility DOUBLE */ -#define TC_IA_ABLE 0x0400 /* Can do ItalisizeAbility ABLE */ -#define TC_UA_ABLE 0x0800 /* Can do UnderlineAbility ABLE */ -#define TC_SO_ABLE 0x1000 /* Can do StrikeOutAbility ABLE */ -#define TC_RA_ABLE 0x2000 /* Can do RasterFontAble ABLE */ -#define TC_VA_ABLE 0x4000 /* Can do VectorFontAble ABLE */ -#define TC_RESERVED 0x8000 +#define TC_OP_CHARACTER 0x00000001 /* Can do OutputPrecision CHARACTER */ +#define TC_OP_STROKE 0x00000002 /* Can do OutputPrecision STROKE */ +#define TC_CP_STROKE 0x00000004 /* Can do ClipPrecision STROKE */ +#define TC_CR_90 0x00000008 /* Can do CharRotAbility 90 */ +#define TC_CR_ANY 0x00000010 /* Can do CharRotAbility ANY */ +#define TC_SF_X_YINDEP 0x00000020 /* Can do ScaleFreedom X_YINDEPENDENT */ +#define TC_SA_DOUBLE 0x00000040 /* Can do ScaleAbility DOUBLE */ +#define TC_SA_INTEGER 0x00000080 /* Can do ScaleAbility INTEGER */ +#define TC_SA_CONTIN 0x00000100 /* Can do ScaleAbility CONTINUOUS */ +#define TC_EA_DOUBLE 0x00000200 /* Can do EmboldenAbility DOUBLE */ +#define TC_IA_ABLE 0x00000400 /* Can do ItalisizeAbility ABLE */ +#define TC_UA_ABLE 0x00000800 /* Can do UnderlineAbility ABLE */ +#define TC_SO_ABLE 0x00001000 /* Can do StrikeOutAbility ABLE */ +#define TC_RA_ABLE 0x00002000 /* Can do RasterFontAble ABLE */ +#define TC_VA_ABLE 0x00004000 /* Can do VectorFontAble ABLE */ +#define TC_RESERVED 0x00008000 +#define TC_SCROLLBLT 0x00010000 /* do text scroll with blt */ #endif /* NOGDICAPMASKS */ /* Raster Capabilities */ +#define RC_NONE #define RC_BITBLT 1 /* Can do standard BLT. */ #define RC_BANDING 2 /* Device requires banding support */ #define RC_SCALING 4 /* Device requires scaling support */ #define RC_BITMAP64 8 /* Device can support >64K bitmap */ #define RC_GDI20_OUTPUT 0x0010 /* has 2.0 output calls */ +#define RC_GDI20_STATE 0x0020 +#define RC_SAVEBITMAP 0x0040 #define RC_DI_BITMAP 0x0080 /* supports DIB to memory */ #define RC_PALETTE 0x0100 /* supports a palette */ #define RC_DIBTODEV 0x0200 /* supports DIBitsToDevice */ @@ -1112,14 +1271,16 @@ typedef struct tagFMATCHW { #define RC_STRETCHBLT 0x0800 /* supports StretchBlt */ #define RC_FLOODFILL 0x1000 /* supports FloodFill */ #define RC_STRETCHDIB 0x2000 /* supports StretchDIBits */ +#define RC_OP_DX_OUTPUT 0x4000 +#define RC_DEVBITS 0x8000 /* DIB color table identifiers */ -#define DIB_RGB_COLORS 0 /* color table in RGBTriples */ -#define DIB_PAL_COLORS 1 /* color table in palette indices */ -#define DIB_PAL_INDICES 2 /* no color table, the indices are in */ - /* the DC the bitmap will be selected into */ - +#define DIB_RGB_COLORS 0 /* color table in RGBs */ +#define DIB_PAL_COLORS 1 /* color table in palette indices */ +#define DIB_PAL_INDICES 2 /* No color table indices into surf palette */ +#define DIB_PAL_PHYSINDICES 2 /* No color table indices into surf palette */ +#define DIB_PAL_LOGINDICES 4 /* No color table indices into DC palette */ /* constants for Get/SetSystemPaletteUse() */ @@ -1128,35 +1289,49 @@ typedef struct tagFMATCHW { #define SYSPAL_NOSTATIC 2 /* constants for CreateDIBitmap */ +#define CBM_CREATEDIB 0x02L /* create DIB bitmap */ #define CBM_INIT 0x04L /* initialize bitmap */ -#ifndef NODRAWTEXT - -/* DrawText() Format Flags */ -#define DT_TOP 0x0000 -#define DT_LEFT 0x0000 -#define DT_CENTER 0x0001 -#define DT_RIGHT 0x0002 -#define DT_VCENTER 0x0004 -#define DT_BOTTOM 0x0008 -#define DT_WORDBREAK 0x0010 -#define DT_SINGLELINE 0x0020 -#define DT_EXPANDTABS 0x0040 -#define DT_TABSTOP 0x0080 -#define DT_NOCLIP 0x0100 -#define DT_EXTERNALLEADING 0x0200 -#define DT_CALCRECT 0x0400 -#define DT_NOPREFIX 0x0800 -#define DT_INTERNAL 0x1000 - -#endif /* NODRAWTEXT */ - /* ExtFloodFill style flags */ #define FLOODFILLBORDER 0 #define FLOODFILLSURFACE 1 -typedef struct _devicemode { - char dmDeviceName[32]; +/* size of a device name string */ +#define CCHDEVICENAME 32 + +/* size of a form name string */ +#define CCHFORMNAME 32 + +typedef struct _devicemodeA { + BYTE dmDeviceName[CCHDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE dmFormName[CCHFORMNAME]; + WORD dmUnusedPadding; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + DWORD dmDisplayFlags; + DWORD dmDisplayFrequency; +} DEVMODEA, *PDEVMODEA, *NPDEVMODEA, *LPDEVMODEA; +typedef struct _devicemodeW { + WCHAR dmDeviceName[CCHDEVICENAME]; WORD dmSpecVersion; WORD dmDriverVersion; WORD dmSize; @@ -1172,410 +1347,1769 @@ typedef struct _devicemode { short dmPrintQuality; short dmColor; short dmDuplex; -} DEVMODE, *PDEVMODE, *NPDEVMODE, *LPDEVMODE; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR dmFormName[CCHFORMNAME]; + WORD dmUnusedPadding; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + DWORD dmDisplayFlags; + DWORD dmDisplayFrequency; +} DEVMODEW, *PDEVMODEW, *NPDEVMODEW, *LPDEVMODEW; +#ifdef UNICODE +typedef DEVMODEW DEVMODE; +typedef PDEVMODEW PDEVMODE; +typedef NPDEVMODEW NPDEVMODE; +typedef LPDEVMODEW LPDEVMODE; +#else +typedef DEVMODEA DEVMODE; +typedef PDEVMODEA PDEVMODE; +typedef NPDEVMODEA NPDEVMODE; +typedef LPDEVMODEA LPDEVMODE; +#endif // UNICODE + +/* current version of specification */ +#define DM_SPECVERSION 0x320 + +/* field selection bits */ +#define DM_ORIENTATION 0x0000001L +#define DM_PAPERSIZE 0x0000002L +#define DM_PAPERLENGTH 0x0000004L +#define DM_PAPERWIDTH 0x0000008L +#define DM_SCALE 0x0000010L +#define DM_COPIES 0x0000100L +#define DM_DEFAULTSOURCE 0x0000200L +#define DM_PRINTQUALITY 0x0000400L +#define DM_COLOR 0x0000800L +#define DM_DUPLEX 0x0001000L +#define DM_YRESOLUTION 0x0002000L +#define DM_TTOPTION 0x0004000L +#define DM_COLLATE 0x0008000L +#define DM_FORMNAME 0x0010000L + +/* orientation selections */ +#define DMORIENT_PORTRAIT 1 +#define DMORIENT_LANDSCAPE 2 + +/* paper selections */ +#define DMPAPER_FIRST DMPAPER_LETTER +#define DMPAPER_LETTER 1 /* Letter 8 1/2 x 11 in */ +#define DMPAPER_LETTERSMALL 2 /* Letter Small 8 1/2 x 11 in */ +#define DMPAPER_TABLOID 3 /* Tabloid 11 x 17 in */ +#define DMPAPER_LEDGER 4 /* Ledger 17 x 11 in */ +#define DMPAPER_LEGAL 5 /* Legal 8 1/2 x 14 in */ +#define DMPAPER_STATEMENT 6 /* Statement 5 1/2 x 8 1/2 in */ +#define DMPAPER_EXECUTIVE 7 /* Executive 7 1/4 x 10 1/2 in */ +#define DMPAPER_A3 8 /* A3 297 x 420 mm */ +#define DMPAPER_A4 9 /* A4 210 x 297 mm */ +#define DMPAPER_A4SMALL 10 /* A4 Small 210 x 297 mm */ +#define DMPAPER_A5 11 /* A5 148 x 210 mm */ +#define DMPAPER_B4 12 /* B4 250 x 354 */ +#define DMPAPER_B5 13 /* B5 182 x 257 mm */ +#define DMPAPER_FOLIO 14 /* Folio 8 1/2 x 13 in */ +#define DMPAPER_QUARTO 15 /* Quarto 215 x 275 mm */ +#define DMPAPER_10X14 16 /* 10x14 in */ +#define DMPAPER_11X17 17 /* 11x17 in */ +#define DMPAPER_NOTE 18 /* Note 8 1/2 x 11 in */ +#define DMPAPER_ENV_9 19 /* Envelope #9 3 7/8 x 8 7/8 */ +#define DMPAPER_ENV_10 20 /* Envelope #10 4 1/8 x 9 1/2 */ +#define DMPAPER_ENV_11 21 /* Envelope #11 4 1/2 x 10 3/8 */ +#define DMPAPER_ENV_12 22 /* Envelope #12 4 \276 x 11 */ +#define DMPAPER_ENV_14 23 /* Envelope #14 5 x 11 1/2 */ +#define DMPAPER_CSHEET 24 /* C size sheet */ +#define DMPAPER_DSHEET 25 /* D size sheet */ +#define DMPAPER_ESHEET 26 /* E size sheet */ +#define DMPAPER_ENV_DL 27 /* Envelope DL 110 x 220mm */ +#define DMPAPER_ENV_C5 28 /* Envelope C5 162 x 229 mm */ +#define DMPAPER_ENV_C3 29 /* Envelope C3 324 x 458 mm */ +#define DMPAPER_ENV_C4 30 /* Envelope C4 229 x 324 mm */ +#define DMPAPER_ENV_C6 31 /* Envelope C6 114 x 162 mm */ +#define DMPAPER_ENV_C65 32 /* Envelope C65 114 x 229 mm */ +#define DMPAPER_ENV_B4 33 /* Envelope B4 250 x 353 mm */ +#define DMPAPER_ENV_B5 34 /* Envelope B5 176 x 250 mm */ +#define DMPAPER_ENV_B6 35 /* Envelope B6 176 x 125 mm */ +#define DMPAPER_ENV_ITALY 36 /* Envelope 110 x 230 mm */ +#define DMPAPER_ENV_MONARCH 37 /* Envelope Monarch 3.875 x 7.5 in */ +#define DMPAPER_ENV_PERSONAL 38 /* 6 3/4 Envelope 3 5/8 x 6 1/2 in */ +#define DMPAPER_FANFOLD_US 39 /* US Std Fanfold 14 7/8 x 11 in */ +#define DMPAPER_FANFOLD_STD_GERMAN 40 /* German Std Fanfold 8 1/2 x 12 in */ +#define DMPAPER_FANFOLD_LGL_GERMAN 41 /* German Legal Fanfold 8 1/2 x 13 in */ + +#define DMPAPER_LAST DMPAPER_FANFOLD_LGL_GERMAN + +#define DMPAPER_USER 256 + +/* bin selections */ +#define DMBIN_FIRST DMBIN_UPPER +#define DMBIN_UPPER 1 +#define DMBIN_ONLYONE 1 +#define DMBIN_LOWER 2 +#define DMBIN_MIDDLE 3 +#define DMBIN_MANUAL 4 +#define DMBIN_ENVELOPE 5 +#define DMBIN_ENVMANUAL 6 +#define DMBIN_AUTO 7 +#define DMBIN_TRACTOR 8 +#define DMBIN_SMALLFMT 9 +#define DMBIN_LARGEFMT 10 +#define DMBIN_LARGECAPACITY 11 +#define DMBIN_CASSETTE 14 +#define DMBIN_LAST DMBIN_CASSETTE + +#define DMBIN_USER 256 /* device specific bins start here */ + +/* print qualities */ +#define DMRES_DRAFT (-1) +#define DMRES_LOW (-2) +#define DMRES_MEDIUM (-3) +#define DMRES_HIGH (-4) + +/* color enable/disable for color printers */ +#define DMCOLOR_MONOCHROME 1 +#define DMCOLOR_COLOR 2 + +/* duplex enable */ +#define DMDUP_SIMPLEX 1 +#define DMDUP_VERTICAL 2 +#define DMDUP_HORIZONTAL 3 + +/* TrueType options */ +#define DMTT_BITMAP 1 /* print TT fonts as graphics */ +#define DMTT_DOWNLOAD 2 /* download TT fonts as soft fonts */ +#define DMTT_SUBDEV 3 /* substitute device fonts for TT fonts */ + +/* Collation selections */ +#define DMCOLLATE_FALSE 0 +#define DMCOLLATE_TRUE 1 + +/* DEVMODE dmDisplayFlags flags */ + +#define DM_GRAYSCALE 0x00000001 +#define DM_INTERLACED 0x00000002 /* GetRegionData/ExtCreateRegion */ -#define RDH_RECTANGLES 1 +#define RDH_RECTANGLES 1 typedef struct _RGNDATAHEADER { DWORD dwSize; DWORD iType; DWORD nCount; + DWORD nRgnSize; + RECT rcBound; } RGNDATAHEADER, *PRGNDATAHEADER; typedef struct _RGNDATA { RGNDATAHEADER rdh; - char Buffer[1]; + char Buffer[1]; } RGNDATA, *PRGNDATA, NEAR *NPRGNDATA, FAR *LPRGNDATA; -int APIENTRY AddFontResourceA(IN LPSTR); -int APIENTRY AddFontResourceW(IN LPWSTR); + +typedef struct _ABC { + int abcA; + UINT abcB; + int abcC; +} ABC, *PABC, NEAR *NPABC, FAR *LPABC; + +typedef struct _ABCFLOAT { + FLOAT abcfA; + FLOAT abcfB; + FLOAT abcfC; +} ABCFLOAT, *PABCFLOAT, NEAR *NPABCFLOAT, FAR *LPABCFLOAT; + +#ifndef NOTEXTMETRIC + +typedef struct _OUTLINETEXTMETRICA { + UINT otmSize; + TEXTMETRICA otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; +} OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, NEAR *NPOUTLINETEXTMETRICA, FAR *LPOUTLINETEXTMETRICA; +typedef struct _OUTLINETEXTMETRICW { + UINT otmSize; + TEXTMETRICW otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; + UINT otmEMSquare; + int otmAscent; + int otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + int otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; +} OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, NEAR *NPOUTLINETEXTMETRICW, FAR *LPOUTLINETEXTMETRICW; +#ifdef UNICODE +typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC; +typedef POUTLINETEXTMETRICW POUTLINETEXTMETRIC; +typedef NPOUTLINETEXTMETRICW NPOUTLINETEXTMETRIC; +typedef LPOUTLINETEXTMETRICW LPOUTLINETEXTMETRIC; +#else +typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC; +typedef POUTLINETEXTMETRICA POUTLINETEXTMETRIC; +typedef NPOUTLINETEXTMETRICA NPOUTLINETEXTMETRIC; +typedef LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC; +#endif // UNICODE + +#endif /* NOTEXTMETRIC */ + + +typedef struct tagPOLYTEXTA +{ + int x; + int y; + UINT n; + LPCSTR lpstr; + UINT uiFlags; + RECT rcl; + int *pdx; +} POLYTEXTA, *PPOLYTEXTA, NEAR *NPPOLYTEXTA, FAR *LPPOLYTEXTA; +typedef struct tagPOLYTEXTW +{ + int x; + int y; + UINT n; + LPCWSTR lpstr; + UINT uiFlags; + RECT rcl; + int *pdx; +} POLYTEXTW, *PPOLYTEXTW, NEAR *NPPOLYTEXTW, FAR *LPPOLYTEXTW; +#ifdef UNICODE +typedef POLYTEXTW POLYTEXT; +typedef PPOLYTEXTW PPOLYTEXT; +typedef NPPOLYTEXTW NPPOLYTEXT; +typedef LPPOLYTEXTW LPPOLYTEXT; +#else +typedef POLYTEXTA POLYTEXT; +typedef PPOLYTEXTA PPOLYTEXT; +typedef NPPOLYTEXTA NPPOLYTEXT; +typedef LPPOLYTEXTA LPPOLYTEXT; +#endif // UNICODE + +typedef struct _FIXED { + WORD fract; + short value; +} FIXED; + + +typedef struct _MAT2 { + FIXED eM11; + FIXED eM12; + FIXED eM21; + FIXED eM22; +} MAT2, FAR *LPMAT2; + + + +typedef struct _GLYPHMETRICS { + UINT gmBlackBoxX; + UINT gmBlackBoxY; + POINT gmptGlyphOrigin; + short gmCellIncX; + short gmCellIncY; +} GLYPHMETRICS, FAR *LPGLYPHMETRICS; + +// GetGlyphOutline constants + +#define GGO_METRICS 0 +#define GGO_BITMAP 1 +#define GGO_NATIVE 2 + +#define TT_POLYGON_TYPE 24 + +#define TT_PRIM_LINE 1 +#define TT_PRIM_QSPLINE 2 + +typedef struct tagPOINTFX +{ + FIXED x; + FIXED y; +} POINTFX, FAR* LPPOINTFX; + +typedef struct tagTTPOLYCURVE +{ + WORD wType; + WORD cpfx; + POINTFX apfx[1]; +} TTPOLYCURVE, FAR* LPTTPOLYCURVE; + +typedef struct tagTTPOLYGONHEADER +{ + DWORD cb; + DWORD dwType; + POINTFX pfxStart; +} TTPOLYGONHEADER, FAR* LPTTPOLYGONHEADER; + + + +typedef struct _RASTERIZER_STATUS { + short nSize; + short wFlags; + short nLanguageID; +} RASTERIZER_STATUS, FAR *LPRASTERIZER_STATUS; + +/* bits defined in wFlags of RASTERIZER_STATUS */ +#define TT_AVAILABLE 0x0001 +#define TT_ENABLED 0x0002 + +#ifdef STRICT +#if !defined(NOTEXTMETRIC) +typedef int (CALLBACK* OLDFONTENUMPROC)(CONST LOGFONT *, CONST TEXTMETRIC *, DWORD, LPARAM); +#else +typedef int (CALLBACK* OLDFONTENUMPROC)(CONST LOGFONT * ,CONST VOID *, DWORD, LPARAM); +#endif +typedef int (CALLBACK* GOBJENUMPROC)(LPVOID, LPARAM); +typedef VOID (CALLBACK* LINEDDAPROC)(int, int, LPARAM); +#else +typedef FARPROC OLDFONTENUMPROC; +typedef FARPROC GOBJENUMPROC; +typedef FARPROC LINEDDAPROC; +#endif + +typedef OLDFONTENUMPROC FONTENUMPROC; + +int WINAPI AddFontResourceA(LPCSTR); +int WINAPI AddFontResourceW(LPCWSTR); +#ifdef UNICODE +#define AddFontResource AddFontResourceW +#else +#define AddFontResource AddFontResourceA +#endif // !UNICODE + +BOOL WINAPI AnimatePalette(HPALETTE, UINT, UINT, CONST PALETTEENTRY *); +BOOL WINAPI Arc(HDC, int, int, int, int, int, int, int, int); +BOOL WINAPI BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); +BOOL WINAPI CancelDC(HDC); +BOOL WINAPI Chord(HDC, int, int, int, int, int, int, int, int); +HMETAFILE WINAPI CloseMetaFile(HDC); +int WINAPI CombineRgn(HRGN, HRGN, HRGN, int); +HMETAFILE WINAPI CopyMetaFileA(HMETAFILE, LPCSTR); +HMETAFILE WINAPI CopyMetaFileW(HMETAFILE, LPCWSTR); +#ifdef UNICODE +#define CopyMetaFile CopyMetaFileW +#else +#define CopyMetaFile CopyMetaFileA +#endif // !UNICODE +HBITMAP WINAPI CreateBitmap(int, int, UINT, UINT, CONST VOID *); +HBITMAP WINAPI CreateBitmapIndirect(CONST BITMAP *); +HBRUSH WINAPI CreateBrushIndirect(CONST LOGBRUSH *); +HBITMAP WINAPI CreateCompatibleBitmap(HDC, int, int); +HBITMAP WINAPI CreateDiscardableBitmap(HDC, int, int); +HDC WINAPI CreateCompatibleDC(HDC); +HDC WINAPI CreateDCA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA *); +HDC WINAPI CreateDCW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW *); +#ifdef UNICODE +#define CreateDC CreateDCW +#else +#define CreateDC CreateDCA +#endif // !UNICODE +HBITMAP WINAPI CreateDIBitmap(HDC, CONST BITMAPINFOHEADER *, DWORD, CONST VOID *, CONST BITMAPINFO *, UINT); +HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL, UINT); +HBRUSH WINAPI CreateDIBPatternBrushPt(CONST VOID *, UINT); +HRGN WINAPI CreateEllipticRgn(int, int, int, int); +HRGN WINAPI CreateEllipticRgnIndirect(CONST RECT *); +HFONT WINAPI CreateFontIndirectA(CONST LOGFONTA *); +HFONT WINAPI CreateFontIndirectW(CONST LOGFONTW *); +#ifdef UNICODE +#define CreateFontIndirect CreateFontIndirectW +#else +#define CreateFontIndirect CreateFontIndirectA +#endif // !UNICODE +HFONT WINAPI CreateFontA(int, int, int, int, int, DWORD, + DWORD, DWORD, DWORD, DWORD, DWORD, + DWORD, DWORD, LPCSTR); +HFONT WINAPI CreateFontW(int, int, int, int, int, DWORD, + DWORD, DWORD, DWORD, DWORD, DWORD, + DWORD, DWORD, LPCWSTR); +#ifdef UNICODE +#define CreateFont CreateFontW +#else +#define CreateFont CreateFontA +#endif // !UNICODE + +HBRUSH WINAPI CreateHatchBrush(int, COLORREF); +HDC WINAPI CreateICA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA *); +HDC WINAPI CreateICW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW *); +#ifdef UNICODE +#define CreateIC CreateICW +#else +#define CreateIC CreateICA +#endif // !UNICODE +HDC WINAPI CreateMetaFileA(LPCSTR); +HDC WINAPI CreateMetaFileW(LPCWSTR); +#ifdef UNICODE +#define CreateMetaFile CreateMetaFileW +#else +#define CreateMetaFile CreateMetaFileA +#endif // !UNICODE +HPALETTE WINAPI CreatePalette(CONST LOGPALETTE *); +HPEN WINAPI CreatePen(int, int, COLORREF); +HPEN WINAPI CreatePenIndirect(CONST LOGPEN *); +HRGN WINAPI CreatePolyPolygonRgn(CONST POINT *, CONST INT *, int, int); +HBRUSH WINAPI CreatePatternBrush(HBITMAP); +HRGN WINAPI CreateRectRgn(int, int, int, int); +HRGN WINAPI CreateRectRgnIndirect(CONST RECT *); +HRGN WINAPI CreateRoundRectRgn(int, int, int, int, int, int); +BOOL WINAPI CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); +BOOL WINAPI CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); +#ifdef UNICODE +#define CreateScalableFontResource CreateScalableFontResourceW +#else +#define CreateScalableFontResource CreateScalableFontResourceA +#endif // !UNICODE +HBRUSH WINAPI CreateSolidBrush(COLORREF); + +BOOL WINAPI DeleteDC(HDC); +BOOL WINAPI DeleteMetaFile(HMETAFILE); +BOOL WINAPI DeleteObject(HGDIOBJ); + +/* define types of pointers to ExtDeviceMode() and DeviceCapabilities() + * functions for Win 3.1 compatibility + */ + +typedef UINT (CALLBACK* LPFNDEVMODE)(HWND, HMODULE, LPDEVMODE, LPSTR, LPSTR, LPDEVMODE, LPSTR, UINT); + +typedef DWORD (CALLBACK* LPFNDEVCAPS)(LPSTR, LPSTR, UINT, LPSTR, LPDEVMODE); + +/* mode selections for the device mode function */ +#define DM_UPDATE 1 +#define DM_COPY 2 +#define DM_PROMPT 4 +#define DM_MODIFY 8 + +#define DM_IN_BUFFER DM_MODIFY +#define DM_IN_PROMPT DM_PROMPT +#define DM_OUT_BUFFER DM_COPY +#define DM_OUT_DEFAULT DM_UPDATE + +/* device capabilities indices */ +#define DC_FIELDS 1 +#define DC_PAPERS 2 +#define DC_PAPERSIZE 3 +#define DC_MINEXTENT 4 +#define DC_MAXEXTENT 5 +#define DC_BINS 6 +#define DC_DUPLEX 7 +#define DC_SIZE 8 +#define DC_EXTRA 9 +#define DC_VERSION 10 +#define DC_DRIVER 11 +#define DC_BINNAMES 12 +#define DC_ENUMRESOLUTIONS 13 +#define DC_FILEDEPENDENCIES 14 +#define DC_TRUETYPE 15 +#define DC_PAPERNAMES 16 +#define DC_ORIENTATION 17 +#define DC_COPIES 18 + +/* bit fields of the return value (DWORD) for DC_TRUETYPE */ +#define DCTT_BITMAP 0x0000001L +#define DCTT_DOWNLOAD 0x0000002L +#define DCTT_SUBDEV 0x0000004L + +int WINAPI DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, + LPSTR, CONST DEVMODEA *); +int WINAPI DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, + LPWSTR, CONST DEVMODEW *); +#ifdef UNICODE +#define DeviceCapabilities DeviceCapabilitiesW +#else +#define DeviceCapabilities DeviceCapabilitiesA +#endif // !UNICODE + +BOOL WINAPI Ellipse(HDC, int, int, int, int); + +int WINAPI EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROC, LPARAM); +int WINAPI EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROC, LPARAM); +#ifdef UNICODE +#define EnumFontFamilies EnumFontFamiliesW +#else +#define EnumFontFamilies EnumFontFamiliesA +#endif // !UNICODE +int WINAPI EnumFontsA(HDC, LPCSTR, FONTENUMPROC, LPARAM); +int WINAPI EnumFontsW(HDC, LPCWSTR, FONTENUMPROC, LPARAM); +#ifdef UNICODE +#define EnumFonts EnumFontsW +#else +#define EnumFonts EnumFontsA +#endif // !UNICODE + +#ifdef STRICT +int WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); +#else +int WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPVOID); +#endif + +BOOL WINAPI EqualRgn(HRGN, HRGN); +int WINAPI Escape(HDC, int, int, LPCSTR, LPVOID); +int WINAPI ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); +int WINAPI DrawEscape(HDC, int, int, LPCSTR); +int WINAPI ExcludeClipRect(HDC, int, int, int, int); +HRGN WINAPI ExtCreateRegion(CONST XFORM *, DWORD, CONST RGNDATA *); +BOOL WINAPI ExtFloodFill(HDC, int, int, COLORREF, UINT); +BOOL WINAPI FillRgn(HDC, HRGN, HBRUSH); +BOOL WINAPI FloodFill(HDC, int, int, COLORREF); +BOOL WINAPI FrameRgn(HDC, HRGN, HBRUSH, int, int); +int WINAPI GetROP2(HDC); +BOOL WINAPI GetAspectRatioFilterEx(HDC, LPSIZE); +COLORREF WINAPI GetBkColor(HDC); +int WINAPI GetBkMode(HDC); +LONG WINAPI GetBitmapBits(HBITMAP, LONG, LPVOID); +BOOL WINAPI GetBitmapDimensionEx(HBITMAP, LPSIZE); +UINT WINAPI GetBoundsRect(HDC, LPRECT, UINT); + +BOOL WINAPI GetBrushOrgEx(HDC, LPPOINT); + +BOOL WINAPI GetCharWidthA(HDC, UINT, UINT, LPINT); +BOOL WINAPI GetCharWidthW(HDC, UINT, UINT, LPINT); +#ifdef UNICODE +#define GetCharWidth GetCharWidthW +#else +#define GetCharWidth GetCharWidthA +#endif // !UNICODE +BOOL WINAPI GetCharWidth32A(HDC, UINT, UINT, LPINT); +BOOL WINAPI GetCharWidth32W(HDC, UINT, UINT, LPINT); +#ifdef UNICODE +#define GetCharWidth32 GetCharWidth32W +#else +#define GetCharWidth32 GetCharWidth32A +#endif // !UNICODE +BOOL APIENTRY GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); +BOOL APIENTRY GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); +#ifdef UNICODE +#define GetCharWidthFloat GetCharWidthFloatW +#else +#define GetCharWidthFloat GetCharWidthFloatA +#endif // !UNICODE + +BOOL APIENTRY GetCharABCWidthsA(HDC, UINT, UINT, LPABC); +BOOL APIENTRY GetCharABCWidthsW(HDC, UINT, UINT, LPABC); +#ifdef UNICODE +#define GetCharABCWidths GetCharABCWidthsW +#else +#define GetCharABCWidths GetCharABCWidthsA +#endif // !UNICODE +BOOL APIENTRY GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); +BOOL APIENTRY GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); #ifdef UNICODE -#define AddFontResource AddFontResourceW +#define GetCharABCWidthsFloat GetCharABCWidthsFloatW #else -#define AddFontResource AddFontResourceA +#define GetCharABCWidthsFloat GetCharABCWidthsFloatA #endif // !UNICODE -int APIENTRY AddFontModule(IN HMODULE); -BOOL APIENTRY AnimatePalette(IN HPALETTE, IN UINT, IN UINT, IN LPPALETTEENTRY); -BOOL BATCH APIENTRY Arc(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int, IN int, IN int); -BOOL BATCH APIENTRY BitBlt(IN HDC, IN int, IN int, IN int, IN int, IN HDC, IN int, IN int, IN DWORD); -BOOL BATCH APIENTRY Chord(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int, IN int, IN int); -HMF APIENTRY CloseMetaFile(IN HDC); -int APIENTRY CombineRgn(IN HRGN, IN HRGN, IN HRGN, IN int); -HMF APIENTRY CopyMetaFile(IN HMF, IN LPSTR); -HBITMAP APIENTRY CreateBitmap(IN int, IN int, IN UINT, IN UINT, IN LPBYTE); -HBITMAP APIENTRY CreateBitmapIndirect(IN LPBITMAP); -HBRUSH APIENTRY CreateBrushIndirect(IN LPLOGBRUSH); -HBITMAP APIENTRY CreateCompatibleBitmap(IN HDC, IN int, IN int); -HBITMAP APIENTRY CreateDiscardableBitmap(IN HDC, IN int, IN int); -HDC APIENTRY CreateCompatibleDC(IN HDC); -HDC APIENTRY CreateDC(IN LPSTR, IN LPSTR OPTIONAL, IN LPSTR OPTIONAL, IN LPDEVMODE OPTIONAL); -HBITMAP APIENTRY CreateDIBitmap(IN HDC, IN LPBITMAPINFOHEADER, IN DWORD, IN LPBYTE, IN LPBITMAPINFO, IN DWORD); -HBITMAP APIENTRY CreateDIBSection(IN HDC, IN LPBITMAPINFO, IN DWORD, IN DWORD, OUT LPBYTE *); -HBRUSH APIENTRY CreateDIBPatternBrush(IN GLOBALHANDLE, IN DWORD); -HBRUSH APIENTRY CreateDIBPatternBrushPt(IN LPVOID, IN DWORD); -HRGN APIENTRY CreateEllipticRgn(IN int, IN int, IN int, IN int); -HRGN APIENTRY CreateEllipticRgnIndirect(IN LPRECT); - -HFONT APIENTRY CreateFontIndirectA(IN LPLOGFONTA); -HFONT APIENTRY CreateFontIndirectW(IN LPLOGFONTW); -#ifdef UNICODE -#define CreateFontIndirect CreateFontIndirectW -#else -#define CreateFontIndirect CreateFontIndirectA -#endif // !UNICODE -HFONT APIENTRY CreateFontA(IN int, IN int, IN int, IN int, IN int, IN DWORD, - IN DWORD, IN DWORD, IN DWORD, IN DWORD, IN DWORD, - IN DWORD, IN DWORD, IN LPSTR); -HFONT APIENTRY CreateFontW(IN int, IN int, IN int, IN int, IN int, IN DWORD, - IN DWORD, IN DWORD, IN DWORD, IN DWORD, IN DWORD, - IN DWORD, IN DWORD, IN LPWSTR); -#ifdef UNICODE -#define CreateFont CreateFontW -#else -#define CreateFont CreateFontA -#endif // !UNICODE - -HBRUSH APIENTRY CreateHatchBrush(IN int, IN COLORREF); -HDC APIENTRY CreateIC(IN LPSTR, IN LPSTR OPTIONAL, IN LPSTR OPTIONAL, IN LPDEVMODE OPTIONAL); -HMF APIENTRY CreateMetaFile(IN LPSTR); -HPALETTE APIENTRY CreatePalette(IN LPLOGPALETTE); -HPEN APIENTRY CreatePen(IN int, IN int, IN COLORREF); -HPEN APIENTRY CreatePenIndirect(IN LPLOGPEN); -HRGN APIENTRY CreatePolyPolygonRgn(IN LPPOINT, IN LPINT, IN int, IN int); -HBRUSH APIENTRY CreatePatternBrush(IN HBITMAP); -HRGN APIENTRY CreateRectRgn(IN int, IN int, IN int, IN int); -HRGN APIENTRY CreateRectRgnIndirect(IN LPRECT); -HRGN APIENTRY CreateRoundRectRgn(IN int, IN int, IN int, IN int, IN int, IN int); -HBRUSH APIENTRY CreateSolidBrush(IN COLORREF); - -BOOL APIENTRY DeleteDC(IN HDC); -BOOL APIENTRY DeleteMetaFile(IN HMF); -BOOL APIENTRY DeleteObject(IN HANDLE); -int APIENTRY DeviceCapabilitiesEx(IN LPSTR, IN LPSTR, IN LPSTR, IN int, OUT LPSTR, IN LPDEVMODE OPTIONAL); -BOOL APIENTRY DeviceModeEx(IN HWND, IN LPSTR, IN LPSTR, IN LPSTR); - -BOOL BATCH APIENTRY Ellipse(IN HDC, IN int, IN int, IN int, IN int); - -int APIENTRY EnumFontsA(IN HDC, IN LPSTR, IN PROC, IN LPVOID); -int APIENTRY EnumFontsW(IN HDC, IN LPWSTR, IN PROC, IN LPVOID); -#ifdef UNICODE -#define EnumFonts EnumFontsW -#else -#define EnumFonts EnumFontsA -#endif // !UNICODE - -int APIENTRY EnumObjects(IN HDC, IN int, IN PROC, IN LPVOID); -BOOL APIENTRY EqualRgn(IN HRGN, IN HRGN); -int APIENTRY Escape(IN HDC,IN int,IN int,IN LPSTR,OUT LPSTR); -int APIENTRY ExcludeClipRect(IN HDC, IN int, IN int, IN int, IN int); -HRGN APIENTRY ExtCreateRegion(IN LPXFORM, IN DWORD, IN LPRGNDATA); -LONG APIENTRY ExtDeviceModeEx(IN HWND, IN LPSTR, OUT LPDEVMODE, IN LPSTR, IN LPSTR, IN LPDEVMODE, IN LPSTR, IN DWORD); -BOOL BATCH APIENTRY ExtFloodFill(IN HDC, IN int, IN int, IN COLORREF, IN UINT); -BOOL BATCH APIENTRY FillRgn(IN HDC, IN HRGN, IN HBRUSH); -BOOL BATCH APIENTRY FloodFill(IN HDC, IN int, IN int, IN COLORREF); -BOOL BATCH APIENTRY FrameRgn(IN HDC, IN HRGN, IN HBRUSH, IN int, IN int); -int APIENTRY GetROP2(IN HDC); -BOOL APIENTRY GetAspectRatioFilterEx(IN HDC, OUT LPSIZE); -COLORREF APIENTRY GetBkColor(IN HDC); -int APIENTRY GetBkMode(IN HDC); -DWORD APIENTRY GetBitmapBits(IN HBITMAP, IN DWORD, OUT LPBYTE); -BOOL APIENTRY GetBitmapDimensionEx(IN HBITMAP, OUT LPSIZE); -BOOL APIENTRY GetBrushOrgEx(IN HDC, OUT LPPOINT); - -BOOL APIENTRY GetCharWidthA(IN HDC, IN UINT, IN UINT, OUT LPINT); -BOOL APIENTRY GetCharWidthW(IN HDC, IN UINT, IN UINT, OUT LPINT); -#ifdef UNICODE -#define GetCharWidth GetCharWidthW -#else -#define GetCharWidth GetCharWidthA -#endif // !UNICODE -BOOL APIENTRY GetCharWidthW(IN HDC, IN UINT, IN UINT, OUT LPINT); - -int APIENTRY GetClipBox(IN HDC, OUT LPRECT); -int APIENTRY GetClipRgn(IN HDC, IN HRGN); -HANDLE APIENTRY GetCurrentObject(IN HDC, IN UINT); -BOOL APIENTRY GetCurrentPositionEx(IN HDC, OUT LPPOINT); -int APIENTRY GetDeviceCaps(IN HDC, IN int); -BOOL APIENTRY GetDIBits(IN HDC, IN HBITMAP, IN UINT, IN UINT, OUT LPBYTE, IN LPBITMAPINFO, IN UINT); -int APIENTRY GetMapMode(IN HDC); -DWORD APIENTRY GetMetaFileBits(IN HMF, IN DWORD, OUT LPBYTE); -HMF APIENTRY GetMetaFile(IN LPSTR); -COLORREF APIENTRY GetNearestColor(IN HDC, IN COLORREF); -UINT APIENTRY GetNearestPaletteIndex(IN HPALETTE, IN COLORREF); -DWORD APIENTRY GetObjectType(HANDLE h); -UINT APIENTRY GetPaletteEntries(IN HPALETTE, IN UINT, IN UINT, OUT LPPALETTEENTRY); -DWORD APIENTRY GetPixel(IN HDC, IN int, IN int); -int APIENTRY GetPolyFillMode(IN HDC); -DWORD APIENTRY GetRegionData(IN HRGN, IN DWORD, OUT LPRGNDATA); -int APIENTRY GetRgnBox(IN HRGN, OUT LPRECT); -HANDLE APIENTRY GetStockObject(IN int); -int APIENTRY GetStretchBltMode(IN HDC); -UINT APIENTRY GetSystemPaletteEntries(IN HDC, IN UINT, IN UINT, OUT LPPALETTEENTRY); -UINT APIENTRY GetSystemPaletteUse(IN HDC); -int APIENTRY GetTextCharacterExtra(IN HDC); -UINT APIENTRY GetTextAlign(IN HDC); -COLORREF APIENTRY GetTextColor(IN HDC); +int WINAPI GetClipBox(HDC, LPRECT); +int WINAPI GetClipRgn(HDC, HRGN); +int WINAPI GetMetaRgn(HDC, HRGN); +HGDIOBJ WINAPI GetCurrentObject(HDC, UINT); +BOOL WINAPI GetCurrentPositionEx(HDC, LPPOINT); +int WINAPI GetDeviceCaps(HDC, int); +int WINAPI GetDIBits(HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT); +DWORD WINAPI GetFontData(HDC, DWORD, DWORD, LPVOID, DWORD); +DWORD WINAPI GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST MAT2 *); +DWORD WINAPI GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST MAT2 *); +#ifdef UNICODE +#define GetGlyphOutline GetGlyphOutlineW +#else +#define GetGlyphOutline GetGlyphOutlineA +#endif // !UNICODE +int WINAPI GetGraphicsMode(HDC); +int WINAPI GetMapMode(HDC); +UINT WINAPI GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID); +HMETAFILE WINAPI GetMetaFileA(LPCSTR); +HMETAFILE WINAPI GetMetaFileW(LPCWSTR); +#ifdef UNICODE +#define GetMetaFile GetMetaFileW +#else +#define GetMetaFile GetMetaFileA +#endif // !UNICODE +COLORREF WINAPI GetNearestColor(HDC, COLORREF); +UINT WINAPI GetNearestPaletteIndex(HPALETTE, COLORREF); +DWORD WINAPI GetObjectType(HGDIOBJ h); + +#ifndef NOTEXTMETRIC + +UINT APIENTRY GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); +UINT APIENTRY GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); +#ifdef UNICODE +#define GetOutlineTextMetrics GetOutlineTextMetricsW +#else +#define GetOutlineTextMetrics GetOutlineTextMetricsA +#endif // !UNICODE + +#endif /* NOTEXTMETRIC */ + +UINT WINAPI GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); +COLORREF WINAPI GetPixel(HDC, int, int); +int WINAPI GetPolyFillMode(HDC); +BOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); +DWORD WINAPI GetRegionData(HRGN, DWORD, LPRGNDATA); +int WINAPI GetRgnBox(HRGN, LPRECT); +HGDIOBJ WINAPI GetStockObject(int); +int WINAPI GetStretchBltMode(HDC); +UINT WINAPI GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); +UINT WINAPI GetSystemPaletteUse(HDC); +int WINAPI GetTextCharacterExtra(HDC); +UINT WINAPI GetTextAlign(HDC); +COLORREF WINAPI GetTextColor(HDC); BOOL APIENTRY GetTextExtentPointA( - IN HDC, - IN LPSTR, - IN int, - OUT LPSIZE + HDC, + LPCSTR, + int, + LPSIZE ); BOOL APIENTRY GetTextExtentPointW( - IN HDC, - IN LPWSTR, - IN int, - OUT LPSIZE + HDC, + LPCWSTR, + int, + LPSIZE + ); +#ifdef UNICODE +#define GetTextExtentPoint GetTextExtentPointW +#else +#define GetTextExtentPoint GetTextExtentPointA +#endif // !UNICODE + +BOOL APIENTRY GetTextExtentPoint32A( + HDC, + LPCSTR, + int, + LPSIZE + ); +BOOL APIENTRY GetTextExtentPoint32W( + HDC, + LPCWSTR, + int, + LPSIZE + ); +#ifdef UNICODE +#define GetTextExtentPoint32 GetTextExtentPoint32W +#else +#define GetTextExtentPoint32 GetTextExtentPoint32A +#endif // !UNICODE + +BOOL APIENTRY GetTextExtentExPointA( + HDC, + LPCSTR, + int, + int, + LPINT, + LPINT, + LPSIZE + ); +BOOL APIENTRY GetTextExtentExPointW( + HDC, + LPCWSTR, + int, + int, + LPINT, + LPINT, + LPSIZE ); #ifdef UNICODE -#define GetTextExtentPoint GetTextExtentPointW +#define GetTextExtentExPoint GetTextExtentExPointW #else -#define GetTextExtentPoint GetTextExtentPointA +#define GetTextExtentExPoint GetTextExtentExPointA #endif // !UNICODE -BOOL APIENTRY GetViewportExtEx(IN HDC, OUT LPSIZE); -BOOL APIENTRY GetViewportOrgEx(IN HDC, OUT LPPOINT); -BOOL APIENTRY GetWindowExtEx(IN HDC, OUT LPSIZE); -BOOL APIENTRY GetWindowOrgEx(IN HDC, OUT LPPOINT); - -int APIENTRY IntersectClipRect(IN HDC, IN int, IN int, IN int, IN int); -BOOL BATCH APIENTRY InvertRgn(IN HDC, IN HRGN); -BOOL APIENTRY LineDDA(IN int, IN int, IN int, IN int, IN PROC, IN LPVOID); -BOOL BATCH APIENTRY LineTo(IN HDC, IN int, IN int); -BOOL APIENTRY MaskBlt(IN HDC, IN int, IN int, IN int, IN int, - IN HDC, IN int, IN int, IN HBITMAP, IN int, IN int, IN DWORD); -BOOL APIENTRY PlgBlt(IN HDC, IN LPPOINT, IN HDC, IN int, IN int, IN int, - IN int, IN HBITMAP, IN int, IN int); - -int APIENTRY OffsetClipRgn(IN HDC, IN int, IN int); -int APIENTRY OffsetRgn(IN HRGN, IN int, IN int); -BOOL BATCH APIENTRY PatBlt(IN HDC, IN int, IN int, IN int, IN int, IN DWORD); -BOOL BATCH APIENTRY Pie(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int, IN int, IN int); -BOOL APIENTRY PlayMetaFile(IN HDC, IN HMF); -BOOL BATCH APIENTRY PaintRgn(IN HDC, IN HRGN); -BOOL BATCH APIENTRY PolyPolygon(IN HDC, IN LPPOINT, IN LPINT, IN int); -BOOL APIENTRY PtInRegion(IN HRGN, IN int, IN int); -BOOL APIENTRY PtVisible(IN HDC, IN int, IN int); - -BOOL APIENTRY RectInRegion(IN HRGN, IN LPRECT); -BOOL APIENTRY RectVisible(IN HDC, IN LPRECT); -BOOL BATCH APIENTRY Rectangle(IN HDC, IN int, IN int, IN int, IN int); -BOOL APIENTRY RestoreDC(IN HDC, IN int); -int APIENTRY RealizePalette(IN HDC); -BOOL APIENTRY RemoveFontModule(IN HMODULE); -BOOL APIENTRY RemoveFontResourceA(IN LPSTR); -BOOL APIENTRY RemoveFontResourceW(IN LPWSTR); -#ifdef UNICODE -#define RemoveFontResource RemoveFontResourceW -#else -#define RemoveFontResource RemoveFontResourceA -#endif // !UNICODE -BOOL BATCH APIENTRY RoundRect(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int); -BOOL APIENTRY ResizePalette(IN HPALETTE, IN UINT); - -int APIENTRY SaveDC(IN HDC); -int APIENTRY SelectClipRgn(IN HDC, IN HRGN); -int APIENTRY ExtSelectClipRgn(IN HDC, IN HRGN, IN int); -HANDLE APIENTRY SelectObject(IN HDC, IN HANDLE); -HPALETTE APIENTRY SelectPalette(IN HDC, IN HPALETTE, IN BOOL); -COLORREF APIENTRY SetBkColor(IN HDC, IN COLORREF); -int APIENTRY SetBkMode(IN HDC, IN int); -int APIENTRY SetBitmapBits(IN HBITMAP, IN DWORD, IN LPBYTE); - -int APIENTRY SetDIBits(IN HDC, IN HBITMAP, IN UINT, IN UINT, IN LPBYTE, IN LPBITMAPINFO, IN UINT); -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); -DWORD APIENTRY SetMapperFlags(IN HDC, IN DWORD); -int APIENTRY SetMapMode(IN HDC, IN int); -HMF APIENTRY SetMetaFileBits(IN DWORD, IN LPBYTE); -UINT APIENTRY SetPaletteEntries(IN HPALETTE, IN UINT, IN UINT, IN LPPALETTEENTRY); -COLORREF APIENTRY SetPixel(IN HDC, IN int, IN int, IN COLORREF); -BOOL BATCH APIENTRY SetPixelV(IN HDC, IN int, IN int, IN COLORREF); -int APIENTRY SetPolyFillMode(IN HDC, IN int); -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); -BOOL BATCH APIENTRY SetRectRgn(IN HRGN, IN int, IN int, IN int, IN int); -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); -int APIENTRY SetROP2(IN HDC, IN int); -int APIENTRY SetStretchBltMode(IN HDC, IN int); -UINT APIENTRY SetSystemPaletteUse(IN HDC, IN UINT); -int APIENTRY SetTextCharacterExtra(IN HDC, IN int); -COLORREF APIENTRY SetTextColor(IN HDC, IN COLORREF); -UINT APIENTRY SetTextAlign(IN HDC, IN UINT); -BOOL APIENTRY SetTextJustification(IN HDC, IN int, IN int); -BOOL APIENTRY UpdateColors(IN HDC); +BOOL WINAPI GetViewportExtEx(HDC, LPSIZE); +BOOL WINAPI GetViewportOrgEx(HDC, LPPOINT); +BOOL WINAPI GetWindowExtEx(HDC, LPSIZE); +BOOL WINAPI GetWindowOrgEx(HDC, LPPOINT); + +int WINAPI IntersectClipRect(HDC, int, int, int, int); +BOOL WINAPI InvertRgn(HDC, HRGN); +BOOL WINAPI LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); +BOOL WINAPI LineTo(HDC, int, int); +BOOL WINAPI MaskBlt(HDC, int, int, int, int, + HDC, int, int, HBITMAP, int, int, DWORD); +BOOL WINAPI PlgBlt(HDC, CONST POINT *, HDC, int, int, int, + int, HBITMAP, int, int); + +int WINAPI OffsetClipRgn(HDC, int, int); +int WINAPI OffsetRgn(HRGN, int, int); +BOOL WINAPI PatBlt(HDC, int, int, int, int, DWORD); +BOOL WINAPI Pie(HDC, int, int, int, int, int, int, int, int); +BOOL WINAPI PlayMetaFile(HDC, HMETAFILE); +BOOL WINAPI PaintRgn(HDC, HRGN); +BOOL WINAPI PolyPolygon(HDC, CONST POINT *, CONST INT *, int); +BOOL WINAPI PtInRegion(HRGN, int, int); +BOOL WINAPI PtVisible(HDC, int, int); +BOOL WINAPI RectInRegion(HRGN, CONST RECT *); +BOOL WINAPI RectVisible(HDC, CONST RECT *); +BOOL WINAPI Rectangle(HDC, int, int, int, int); +BOOL WINAPI RestoreDC(HDC, int); +HDC WINAPI ResetDCA(HDC, CONST DEVMODEA *); +HDC WINAPI ResetDCW(HDC, CONST DEVMODEW *); +#ifdef UNICODE +#define ResetDC ResetDCW +#else +#define ResetDC ResetDCA +#endif // !UNICODE +UINT WINAPI RealizePalette(HDC); +BOOL WINAPI RemoveFontResourceA(LPCSTR); +BOOL WINAPI RemoveFontResourceW(LPCWSTR); +#ifdef UNICODE +#define RemoveFontResource RemoveFontResourceW +#else +#define RemoveFontResource RemoveFontResourceA +#endif // !UNICODE +BOOL WINAPI RoundRect(HDC, int, int, int, int, int, int); +BOOL WINAPI ResizePalette(HPALETTE, UINT); + +int WINAPI SaveDC(HDC); +int WINAPI SelectClipRgn(HDC, HRGN); +int WINAPI ExtSelectClipRgn(HDC, HRGN, int); +int WINAPI SetMetaRgn(HDC); +HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ); +HPALETTE WINAPI SelectPalette(HDC, HPALETTE, BOOL); +COLORREF WINAPI SetBkColor(HDC, COLORREF); +int WINAPI SetBkMode(HDC, int); +LONG WINAPI SetBitmapBits(HBITMAP, DWORD, CONST VOID *); + +UINT WINAPI SetBoundsRect(HDC, CONST RECT *, UINT); +int WINAPI SetDIBits(HDC, HBITMAP, UINT, UINT, CONST VOID *, CONST BITMAPINFO *, UINT); +int WINAPI SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, +int, UINT, UINT, CONST VOID *, CONST BITMAPINFO *, UINT); +DWORD WINAPI SetMapperFlags(HDC, DWORD); +int WINAPI SetGraphicsMode(HDC hdc, int iMode); +int WINAPI SetMapMode(HDC, int); +HMETAFILE WINAPI SetMetaFileBitsEx(UINT, CONST BYTE *); +UINT WINAPI SetPaletteEntries(HPALETTE, UINT, UINT, CONST PALETTEENTRY *); +COLORREF WINAPI SetPixel(HDC, int, int, COLORREF); +BOOL WINAPI SetPixelV(HDC, int, int, COLORREF); +int WINAPI SetPolyFillMode(HDC, int); +BOOL WINAPI StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); +BOOL WINAPI SetRectRgn(HRGN, int, int, int, int); +int WINAPI StretchDIBits(HDC, int, int, int, int, int, int, int, int, CONST + VOID *, CONST BITMAPINFO *, UINT, DWORD); +int WINAPI SetROP2(HDC, int); +int WINAPI SetStretchBltMode(HDC, int); +UINT WINAPI SetSystemPaletteUse(HDC, UINT); +int WINAPI SetTextCharacterExtra(HDC, int); +COLORREF WINAPI SetTextColor(HDC, COLORREF); +UINT WINAPI SetTextAlign(HDC, UINT); +BOOL WINAPI SetTextJustification(HDC, int, int); +BOOL WINAPI UpdateColors(HDC); #ifndef NOMETAFILE -// TEMPORARY include file containing the new Metafile definitions. -// Eventually it will be folded into wingdi.h and the old metafile -// definitions will be removed when the metafile stuff settles down. -#include +BOOL WINAPI PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); +typedef int (CALLBACK* MFENUMPROC)(HDC, HANDLETABLE FAR*, METARECORD FAR*, int, LPARAM); +BOOL WINAPI EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); -BOOL APIENTRY PlayMetaFileRecord(IN HDC, IN LPHANDLETABLE, IN LPMETARECORD, IN UINT); -BOOL APIENTRY EnumMetaFile(IN HDC, IN HMF, IN PROC, IN LPVOID); -#endif +typedef int (CALLBACK* ENHMFENUMPROC)(HDC, HANDLETABLE FAR*, CONST ENHMETARECORD *, int, LPARAM); + +// Enhanced Metafile Function Declarations + +HENHMETAFILE WINAPI CloseEnhMetaFile(HDC); +HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); +HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); +#ifdef UNICODE +#define CopyEnhMetaFile CopyEnhMetaFileW +#else +#define CopyEnhMetaFile CopyEnhMetaFileA +#endif // !UNICODE +HDC WINAPI CreateEnhMetaFileA(HDC, LPCSTR, CONST RECT *, LPCSTR); +HDC WINAPI CreateEnhMetaFileW(HDC, LPCWSTR, CONST RECT *, LPCWSTR); +#ifdef UNICODE +#define CreateEnhMetaFile CreateEnhMetaFileW +#else +#define CreateEnhMetaFile CreateEnhMetaFileA +#endif // !UNICODE +BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE); +BOOL WINAPI EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, +LPVOID, CONST RECT *); +HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR); +HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR); +#ifdef UNICODE +#define GetEnhMetaFile GetEnhMetaFileW +#else +#define GetEnhMetaFile GetEnhMetaFileA +#endif // !UNICODE +UINT WINAPI GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); +UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR ); +UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR ); +#ifdef UNICODE +#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionW +#else +#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionA +#endif // !UNICODE +UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER ); +UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY ); +UINT WINAPI GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); +BOOL WINAPI PlayEnhMetaFile(HDC, HENHMETAFILE, CONST RECT *); +BOOL WINAPI PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, CONST ENHMETARECORD *, UINT); +HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT, CONST BYTE *); +HENHMETAFILE WINAPI SetWinMetaFileBits(UINT, CONST BYTE *, HDC, CONST METAFILEPICT *); +BOOL WINAPI GdiComment(HDC, UINT, CONST BYTE *); + +#endif /* NOMETAFILE */ #ifndef NOTEXTMETRIC -BOOL APIENTRY GetTextMetricsA(IN HDC, OUT LPTEXTMETRICA); -BOOL APIENTRY GetTextMetricsW(IN HDC, OUT LPTEXTMETRICW); +BOOL WINAPI GetTextMetricsA(HDC, LPTEXTMETRICA); +BOOL WINAPI GetTextMetricsW(HDC, LPTEXTMETRICW); #ifdef UNICODE -#define GetTextMetrics GetTextMetricsW +#define GetTextMetrics GetTextMetricsW #else -#define GetTextMetrics GetTextMetricsA +#define GetTextMetrics GetTextMetricsA #endif // !UNICODE #endif /* new GDI */ -BOOL BATCH APIENTRY AngleArc(IN HDC, IN int, IN int, IN DWORD, IN FLOAT, IN FLOAT); -BOOL APIENTRY GetWorldTransform(IN HDC, OUT LPXFORM); -BOOL BATCH APIENTRY PolyPolyline(IN HDC, IN LPPOINT, IN LPDWORD, IN DWORD); -BOOL APIENTRY SetWorldTransform(IN HDC, IN LPXFORM); -BOOL APIENTRY ModifyWorldTransform(IN HDC,IN LPXFORM OPTIONAL, IN DWORD); -BOOL APIENTRY StartDoc(IN HDC, IN LPSTR); -BOOL APIENTRY EndDoc(IN HDC); -BOOL APIENTRY StartPage(IN HDC); -BOOL APIENTRY EndPage(IN HDC); -BOOL APIENTRY GdiFlush(VOID); -BOOL APIENTRY GdiSetBatchLimit(IN DWORD); -BOOL APIENTRY ArcTo(IN HDC, IN int, IN int, IN int, IN int, IN int, IN int,IN int, IN int); -BOOL APIENTRY BeginPath(IN HDC); -BOOL APIENTRY CloseFigure(IN HDC); -BOOL APIENTRY EndPath(IN HDC); -BOOL APIENTRY FillPath(IN HDC); -BOOL APIENTRY FlattenPath(IN HDC); -int APIENTRY GetPath(IN HDC, OUT LPPOINT, OUT LPBYTE, IN int); -HRGN APIENTRY PathToRegion(IN HDC); -BOOL APIENTRY PolyDraw(IN HDC, IN LPPOINT, IN LPBYTE, IN int); -BOOL APIENTRY SelectClipPath(IN HDC, IN int); -BOOL APIENTRY SetFlatness(IN HDC, IN FLOAT, OUT PFLOAT); -BOOL APIENTRY SetMiterLimit(IN HDC, IN FLOAT, OUT PFLOAT); -BOOL APIENTRY StrokeAndFillPath(IN HDC); -BOOL APIENTRY StrokePath(IN HDC); -BOOL APIENTRY WidenPath(IN HDC); - -/* if the thank compiler is reading this file, don't define these */ -#ifndef THANKS - -int APIENTRY GetObjectA(IN HANDLE, IN int, OUT LPVOID); -int APIENTRY GetObjectW(IN HANDLE, IN int, OUT LPVOID); -#ifdef UNICODE -#define GetObject GetObjectW -#else -#define GetObject GetObjectA -#endif // !UNICODE - -BOOL APIENTRY MoveToEx(IN HDC, IN int, IN int, OUT LPPOINT); - -BOOL BATCH APIENTRY TextOutA( - IN HDC, - IN int, - IN int, - IN LPSTR, - IN int - ); -BOOL BATCH APIENTRY TextOutW( - IN HDC, - IN int, - IN int, - IN LPWSTR, - IN int - ); -#ifdef UNICODE -#define TextOut TextOutW -#else -#define TextOut TextOutA -#endif // !UNICODE - -BOOL BATCH APIENTRY ExtTextOutA( - IN HDC, - IN int, - IN int, - IN UINT, - IN LPRECT, - IN LPSTR, - IN int, - IN LPINT - ); -BOOL BATCH APIENTRY ExtTextOutW( - IN HDC, - IN int, - IN int, - IN UINT, - IN LPRECT, - IN LPWSTR, - IN int, - IN LPINT - ); -#ifdef UNICODE -#define ExtTextOut ExtTextOutW -#else -#define ExtTextOut ExtTextOutA -#endif // !UNICODE - -HRGN APIENTRY CreatePolygonRgn(IN LPPOINT, IN int, IN int); -BOOL APIENTRY DPtoLP(IN HDC, IN OUT LPPOINT, IN int); -BOOL APIENTRY LPtoDP(IN HDC, IN OUT LPPOINT, IN int); -BOOL APIENTRY Polygon(IN HDC, IN LPPOINT, IN int); -BOOL APIENTRY Polyline(IN HDC, IN LPPOINT, IN int); - -BOOL APIENTRY PolyBezier(IN HDC, IN LPPOINT, IN DWORD); -BOOL APIENTRY PolyBezierTo(IN HDC, IN LPPOINT, IN DWORD); -BOOL APIENTRY PolylineTo(IN HDC, IN LPPOINT, IN DWORD); - -BOOL APIENTRY SetViewportExtEx(IN HDC, IN int, IN int, OUT LPSIZE); -BOOL APIENTRY SetViewportOrgEx(IN HDC, IN int, IN int, OUT LPPOINT); -BOOL APIENTRY SetWindowExtEx(IN HDC, IN int, IN int, OUT LPSIZE); -BOOL APIENTRY SetWindowOrgEx(IN HDC, IN int, IN int, OUT LPPOINT); - -BOOL APIENTRY OffsetViewportOrgEx(IN HDC, IN int, IN int, OUT LPPOINT); -BOOL APIENTRY OffsetWindowOrgEx(IN HDC, IN int, IN int, OUT LPPOINT); -BOOL APIENTRY ScaleViewportExtEx(IN HDC, IN int, IN int, IN int, IN int, OUT LPSIZE); -BOOL APIENTRY ScaleWindowExtEx(IN HDC, IN int, IN int, IN int, IN int, OUT LPSIZE); -BOOL APIENTRY SetBitmapDimensionEx(IN HBITMAP, IN int, IN int, OUT LPSIZE); -BOOL APIENTRY SetBrushOrg(IN HDC, IN int, IN int, OUT LPPOINT); - -int APIENTRY GetTextFaceA(IN HDC, IN int, OUT LPSTR); -int APIENTRY GetTextFaceW(IN HDC, IN int, OUT LPWSTR); -#ifdef UNICODE -#define GetTextFace GetTextFaceW -#else -#define GetTextFace GetTextFaceA -#endif // !UNICODE - -DWORD APIENTRY EnumNearestFontsA(IN HDC,IN LPEXTLOGFONTA,IN DWORD,OUT LPFMATCHA); -DWORD APIENTRY EnumNearestFontsW(IN HDC,IN LPEXTLOGFONTW,IN DWORD,OUT LPFMATCHW); -#ifdef UNICODE -#define EnumNearestFonts EnumNearestFontsW -#else -#define EnumNearestFonts EnumNearestFontsA -#endif // !UNICODE - -HFONT APIENTRY ExtCreateFontIndirectA(IN LPEXTLOGFONTA); -HFONT APIENTRY ExtCreateFontIndirectW(IN LPEXTLOGFONTW); -#ifdef UNICODE -#define ExtCreateFontIndirect ExtCreateFontIndirectW +BOOL WINAPI AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); +BOOL WINAPI PolyPolyline(HDC, CONST POINT *, CONST DWORD *, DWORD); +BOOL WINAPI GetWorldTransform(HDC, LPXFORM); +BOOL WINAPI SetWorldTransform(HDC, CONST XFORM *); +BOOL WINAPI ModifyWorldTransform(HDC, CONST XFORM *, DWORD); +BOOL WINAPI CombineTransform(LPXFORM, CONST XFORM *, CONST XFORM *); + +/* Flags value for COLORADJUSTMENT */ +#define CA_NEGATIVE 0x0001 +#define CA_LOG_FILTER 0x0002 + +/* IlluminantIndex values */ +#define ILLUMINANT_DEVICE_DEFAULT 0 +#define ILLUMINANT_A 1 +#define ILLUMINANT_B 2 +#define ILLUMINANT_C 3 +#define ILLUMINANT_D50 4 +#define ILLUMINANT_D55 5 +#define ILLUMINANT_D65 6 +#define ILLUMINANT_D75 7 +#define ILLUMINANT_F2 8 +#define ILLUMINANT_MAX_INDEX ILLUMINANT_F2 + +#define ILLUMINANT_TUNGSTEN ILLUMINANT_A +#define ILLUMINANT_DAYLIGHT ILLUMINANT_C +#define ILLUMINANT_FLUORESCENT ILLUMINANT_F2 +#define ILLUMINANT_NTSC ILLUMINANT_C + +/* Min and max for RedGamma, GreenGamma, BlueGamma */ +#define RGB_GAMMA_MIN (WORD)02500 +#define RGB_GAMMA_MAX (WORD)65000 + +/* Min and max for ReferenceBlack and ReferenceWhite */ +#define REFERENCE_WHITE_MIN (WORD)6000 +#define REFERENCE_WHITE_MAX (WORD)10000 +#define REFERENCE_BLACK_MIN (WORD)0 +#define REFERENCE_BLACK_MAX (WORD)4000 + +/* Min and max for Contrast, Brightness, Colorfulness, RedGreenTint */ +#define COLOR_ADJ_MIN (SHORT)-100 +#define COLOR_ADJ_MAX (SHORT)100 + +typedef struct tagCOLORADJUSTMENT { + WORD caSize; + WORD caFlags; + WORD caIlluminantIndex; + WORD caRedGamma; + WORD caGreenGamma; + WORD caBlueGamma; + WORD caReferenceBlack; + WORD caReferenceWhite; + SHORT caContrast; + SHORT caBrightness; + SHORT caColorfulness; + SHORT caRedGreenTint; +} COLORADJUSTMENT, *PCOLORADJUSTMENT, FAR *LPCOLORADJUSTMENT; + +BOOL WINAPI SetColorAdjustment(HDC, CONST COLORADJUSTMENT *); +BOOL WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT); +HPALETTE WINAPI CreateHalftonePalette(HDC); + +#ifdef STRICT +typedef BOOL (CALLBACK* ABORTPROC)(HDC, int); +#else +typedef FARPROC ABORTPROC; +#endif + +typedef struct _DOCINFOA { + int cbSize; + LPCSTR lpszDocName; + LPCSTR lpszOutput; +} DOCINFOA, *LPDOCINFOA; +typedef struct _DOCINFOW { + int cbSize; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; +} DOCINFOW, *LPDOCINFOW; +#ifdef UNICODE +typedef DOCINFOW DOCINFO; +typedef LPDOCINFOW LPDOCINFO; #else -#define ExtCreateFontIndirect ExtCreateFontIndirectA +typedef DOCINFOA DOCINFO; +typedef LPDOCINFOA LPDOCINFO; +#endif // UNICODE + +int WINAPI StartDocA(HDC, CONST DOCINFOA *); +int WINAPI StartDocW(HDC, CONST DOCINFOW *); +#ifdef UNICODE +#define StartDoc StartDocW +#else +#define StartDoc StartDocA #endif // !UNICODE +int WINAPI EndDoc(HDC); +int WINAPI StartPage(HDC); +int WINAPI EndPage(HDC); +int WINAPI AbortDoc(HDC); +int WINAPI SetAbortProc(HDC, ABORTPROC); + +BOOL WINAPI AbortPath(HDC); +BOOL WINAPI ArcTo(HDC, int, int, int, int, int, int,int, int); +BOOL WINAPI BeginPath(HDC); +BOOL WINAPI CloseFigure(HDC); +BOOL WINAPI EndPath(HDC); +BOOL WINAPI FillPath(HDC); +BOOL WINAPI FlattenPath(HDC); +int WINAPI GetPath(HDC, LPPOINT, LPBYTE, int); +HRGN WINAPI PathToRegion(HDC); +BOOL WINAPI PolyDraw(HDC, CONST POINT *, CONST BYTE *, int); +BOOL WINAPI SelectClipPath(HDC, int); +int WINAPI SetArcDirection(HDC, int); +BOOL WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT); +BOOL WINAPI StrokeAndFillPath(HDC); +BOOL WINAPI StrokePath(HDC); +BOOL WINAPI WidenPath(HDC); +HPEN WINAPI ExtCreatePen(DWORD, DWORD, CONST LOGBRUSH *, DWORD, CONST DWORD *); +BOOL WINAPI GetMiterLimit(HDC, PFLOAT); +int WINAPI GetArcDirection(HDC); -BOOL APIENTRY SetFontMapperControls(IN LPFMCONTROLS); -BOOL APIENTRY GetFontMapperControls(OUT LPFMCONTROLS,IN DWORD); +int WINAPI GetObjectA(HGDIOBJ, int, LPVOID); +int WINAPI GetObjectW(HGDIOBJ, int, LPVOID); +#ifdef UNICODE +#define GetObject GetObjectW +#else +#define GetObject GetObjectA +#endif // !UNICODE +BOOL WINAPI MoveToEx(HDC, int, int, LPPOINT); +BOOL WINAPI TextOutA(HDC, int, int, LPCSTR, int); +BOOL WINAPI TextOutW(HDC, int, int, LPCWSTR, int); +#ifdef UNICODE +#define TextOut TextOutW +#else +#define TextOut TextOutA +#endif // !UNICODE +BOOL WINAPI ExtTextOutA(HDC, int, int, UINT, CONST RECT *,LPCSTR, UINT, CONST INT *); +BOOL WINAPI ExtTextOutW(HDC, int, int, UINT, CONST RECT *,LPCWSTR, UINT, CONST INT *); +#ifdef UNICODE +#define ExtTextOut ExtTextOutW +#else +#define ExtTextOut ExtTextOutA +#endif // !UNICODE +BOOL WINAPI PolyTextOutA(HDC, CONST POLYTEXTA *, int); +BOOL WINAPI PolyTextOutW(HDC, CONST POLYTEXTW *, int); +#ifdef UNICODE +#define PolyTextOut PolyTextOutW +#else +#define PolyTextOut PolyTextOutA +#endif // !UNICODE -#endif /* THANKS */ -#endif /* NOGDI */ +HRGN WINAPI CreatePolygonRgn(CONST POINT *, int, int); +BOOL WINAPI DPtoLP(HDC, LPPOINT, int); +BOOL WINAPI LPtoDP(HDC, LPPOINT, int); +BOOL WINAPI Polygon(HDC, CONST POINT *, int); +BOOL WINAPI Polyline(HDC, CONST POINT *, int); + +BOOL WINAPI PolyBezier(HDC, CONST POINT *, DWORD); +BOOL WINAPI PolyBezierTo(HDC, CONST POINT *, DWORD); +BOOL WINAPI PolylineTo(HDC, CONST POINT *, DWORD); + +BOOL WINAPI SetViewportExtEx(HDC, int, int, LPSIZE); +BOOL WINAPI SetViewportOrgEx(HDC, int, int, LPPOINT); +BOOL WINAPI SetWindowExtEx(HDC, int, int, LPSIZE); +BOOL WINAPI SetWindowOrgEx(HDC, int, int, LPPOINT); + +BOOL WINAPI OffsetViewportOrgEx(HDC, int, int, LPPOINT); +BOOL WINAPI OffsetWindowOrgEx(HDC, int, int, LPPOINT); +BOOL WINAPI ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); +BOOL WINAPI ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); +BOOL WINAPI SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); +BOOL WINAPI SetBrushOrgEx(HDC, int, int, LPPOINT); -#ifdef LATER -/* - * JimA - 11/30/90 - * gdidelta.doc lists these as obsolete - */ -DWORD APIENTRY GetDCOrg(HDC); -#endif /* LATER */ +int WINAPI GetTextFaceA(HDC, int, LPSTR); +int WINAPI GetTextFaceW(HDC, int, LPWSTR); +#ifdef UNICODE +#define GetTextFace GetTextFaceW +#else +#define GetTextFace GetTextFaceA +#endif // !UNICODE + +#define FONTMAPPER_MAX 10 + +typedef struct tagKERNINGPAIR { + WORD wFirst; + WORD wSecond; + int iKernAmount; +} KERNINGPAIR, *LPKERNINGPAIR; + +DWORD WINAPI GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); +DWORD WINAPI GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); +#ifdef UNICODE +#define GetKerningPairs GetKerningPairsW +#else +#define GetKerningPairs GetKerningPairsA +#endif // !UNICODE + +BOOL WINAPI GetDCOrgEx(HDC,LPPOINT); +BOOL WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT); +BOOL WINAPI UnrealizeObject(HGDIOBJ); + +BOOL WINAPI GdiFlush(); +DWORD WINAPI GdiSetBatchLimit(DWORD); +DWORD WINAPI GdiGetBatchLimit(); + +#ifndef NOMETAFILE + +// Enhanced metafile constants. + +#define ENHMETA_SIGNATURE 0x464D4520 + +// Stock object flag used in the object handle index in the enhanced +// metafile records. +// E.g. The object handle index (META_STOCK_OBJECT | BLACK_BRUSH) +// represents the stock object BLACK_BRUSH. + +#define ENHMETA_STOCK_OBJECT 0x80000000 + +// Enhanced metafile record types. + +#define EMR_HEADER 1 +#define EMR_POLYBEZIER 2 +#define EMR_POLYGON 3 +#define EMR_POLYLINE 4 +#define EMR_POLYBEZIERTO 5 +#define EMR_POLYLINETO 6 +#define EMR_POLYPOLYLINE 7 +#define EMR_POLYPOLYGON 8 +#define EMR_SETWINDOWEXTEX 9 +#define EMR_SETWINDOWORGEX 10 +#define EMR_SETVIEWPORTEXTEX 11 +#define EMR_SETVIEWPORTORGEX 12 +#define EMR_SETBRUSHORGEX 13 +#define EMR_EOF 14 +#define EMR_SETPIXELV 15 +#define EMR_SETMAPPERFLAGS 16 +#define EMR_SETMAPMODE 17 +#define EMR_SETBKMODE 18 +#define EMR_SETPOLYFILLMODE 19 +#define EMR_SETROP2 20 +#define EMR_SETSTRETCHBLTMODE 21 +#define EMR_SETTEXTALIGN 22 +#define EMR_SETCOLORADJUSTMENT 23 +#define EMR_SETTEXTCOLOR 24 +#define EMR_SETBKCOLOR 25 +#define EMR_OFFSETCLIPRGN 26 +#define EMR_MOVETOEX 27 +#define EMR_SETMETARGN 28 +#define EMR_EXCLUDECLIPRECT 29 +#define EMR_INTERSECTCLIPRECT 30 +#define EMR_SCALEVIEWPORTEXTEX 31 +#define EMR_SCALEWINDOWEXTEX 32 +#define EMR_SAVEDC 33 +#define EMR_RESTOREDC 34 +#define EMR_SETWORLDTRANSFORM 35 +#define EMR_MODIFYWORLDTRANSFORM 36 +#define EMR_SELECTOBJECT 37 +#define EMR_CREATEPEN 38 +#define EMR_CREATEBRUSHINDIRECT 39 +#define EMR_DELETEOBJECT 40 +#define EMR_ANGLEARC 41 +#define EMR_ELLIPSE 42 +#define EMR_RECTANGLE 43 +#define EMR_ROUNDRECT 44 +#define EMR_ARC 45 +#define EMR_CHORD 46 +#define EMR_PIE 47 +#define EMR_SELECTPALETTE 48 +#define EMR_CREATEPALETTE 49 +#define EMR_SETPALETTEENTRIES 50 +#define EMR_RESIZEPALETTE 51 +#define EMR_REALIZEPALETTE 52 +#define EMR_EXTFLOODFILL 53 +#define EMR_LINETO 54 +#define EMR_ARCTO 55 +#define EMR_POLYDRAW 56 +#define EMR_SETARCDIRECTION 57 +#define EMR_SETMITERLIMIT 58 +#define EMR_BEGINPATH 59 +#define EMR_ENDPATH 60 +#define EMR_CLOSEFIGURE 61 +#define EMR_FILLPATH 62 +#define EMR_STROKEANDFILLPATH 63 +#define EMR_STROKEPATH 64 +#define EMR_FLATTENPATH 65 +#define EMR_WIDENPATH 66 +#define EMR_SELECTCLIPPATH 67 +#define EMR_ABORTPATH 68 + +#define EMR_GDICOMMENT 70 +#define EMR_FILLRGN 71 +#define EMR_FRAMERGN 72 +#define EMR_INVERTRGN 73 +#define EMR_PAINTRGN 74 +#define EMR_EXTSELECTCLIPRGN 75 +#define EMR_BITBLT 76 +#define EMR_STRETCHBLT 77 +#define EMR_MASKBLT 78 +#define EMR_PLGBLT 79 +#define EMR_SETDIBITSTODEVICE 80 +#define EMR_STRETCHDIBITS 81 +#define EMR_EXTCREATEFONTINDIRECTW 82 +#define EMR_EXTTEXTOUTA 83 +#define EMR_EXTTEXTOUTW 84 +#define EMR_POLYBEZIER16 85 +#define EMR_POLYGON16 86 +#define EMR_POLYLINE16 87 +#define EMR_POLYBEZIERTO16 88 +#define EMR_POLYLINETO16 89 +#define EMR_POLYPOLYLINE16 90 +#define EMR_POLYPOLYGON16 91 +#define EMR_POLYDRAW16 92 +#define EMR_CREATEMONOBRUSH 93 +#define EMR_CREATEDIBPATTERNBRUSHPT 94 +#define EMR_EXTCREATEPEN 95 +#define EMR_POLYTEXTOUTA 96 +#define EMR_POLYTEXTOUTW 97 + +#define EMR_MIN 1 +#define EMR_MAX 97 + +// Base record type for the enhanced metafile. + +typedef struct tagEMR +{ + DWORD iType; // Enhanced metafile record type + DWORD nSize; // Length of the record in bytes. + // This must be a multiple of 4. +} EMR, *PEMR; + +// Base text record type for the enhanced metafile. + +typedef struct tagEMRTEXT +{ + POINTL ptlReference; + DWORD nChars; + DWORD offString; // Offset to the string + DWORD fOptions; + RECTL rcl; + DWORD offDx; // Offset to the inter-character spacing array. + // This is always given. +} EMRTEXT, *PEMRTEXT; + +// Record structures for the enhanced metafile. + +typedef struct tagABORTPATH +{ + EMR emr; +} EMRABORTPATH, *PEMRABORTPATH, + EMRBEGINPATH, *PEMRBEGINPATH, + EMRENDPATH, *PEMRENDPATH, + EMRCLOSEFIGURE, *PEMRCLOSEFIGURE, + EMRFLATTENPATH, *PEMRFLATTENPATH, + EMRWIDENPATH, *PEMRWIDENPATH, + EMRSETMETARGN, *PEMRSETMETARGN, + EMRSAVEDC, *PEMRSAVEDC, + EMRREALIZEPALETTE, *PEMRREALIZEPALETTE; + +typedef struct tagEMRSELECTCLIPPATH +{ + EMR emr; + DWORD iMode; +} EMRSELECTCLIPPATH, *PEMRSELECTCLIPPATH, + EMRSETBKMODE, *PEMRSETBKMODE, + EMRSETMAPMODE, *PEMRSETMAPMODE, + EMRSETPOLYFILLMODE, *PEMRSETPOLYFILLMODE, + EMRSETROP2, *PEMRSETROP2, + EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE, + EMRSETTEXTALIGN, *PEMRSETTEXTALIGN; +typedef struct tagEMRSETMITERLIMIT +{ + EMR emr; + FLOAT eMiterLimit; +} EMRSETMITERLIMIT, *PEMRSETMITERLIMIT; + +typedef struct tagEMRRESTOREDC +{ + EMR emr; + LONG iRelative; // Specifies a relative instance +} EMRRESTOREDC, *PEMRRESTOREDC; + +typedef struct tagEMRSETARCDIRECTION +{ + EMR emr; + DWORD iArcDirection; // Specifies the arc direction in the + // advanced graphics mode. +} EMRSETARCDIRECTION, *PEMRSETARCDIRECTION; + +typedef struct tagEMRSETMAPPERFLAGS +{ + EMR emr; + DWORD dwFlags; +} EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS; + +typedef struct tagEMRSETTEXTCOLOR +{ + EMR emr; + COLORREF crColor; +} EMRSETBKCOLOR, *PEMRSETBKCOLOR, + EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR; + +typedef struct tagEMRSELECTOBJECT +{ + EMR emr; + DWORD ihObject; // Object handle index +} EMRSELECTOBJECT, *PEMRSELECTOBJECT, + EMRDELETEOBJECT, *PEMRDELETEOBJECT; + +typedef struct tagEMRSELECTPALETTE +{ + EMR emr; + DWORD ihPal; // Palette handle index, background mode only +} EMRSELECTPALETTE, *PEMRSELECTPALETTE; + +typedef struct tagEMRRESIZEPALETTE +{ + EMR emr; + DWORD ihPal; // Palette handle index + DWORD cEntries; +} EMRRESIZEPALETTE, *PEMRRESIZEPALETTE; + +typedef struct tagEMRSETPALETTEENTRIES +{ + EMR emr; + DWORD ihPal; // Palette handle index + DWORD iStart; + DWORD cEntries; + PALETTEENTRY aPalEntries[1];// The peFlags fields do not contain any flags +} EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES; + +typedef struct tagEMRSETCOLORADJUSTMENT +{ + EMR emr; + COLORADJUSTMENT ColorAdjustment; +} EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT; + +typedef struct tagEMRGDICOMMENT +{ + EMR emr; + DWORD cbData; // Size of data in bytes + BYTE Data[1]; +} EMRGDICOMMENT, *PEMRGDICOMMENT; + +typedef struct tagEMREOF +{ + EMR emr; + DWORD nPalEntries; // Number of palette entries + DWORD offPalEntries; // Offset to the palette entries + DWORD nSizeLast; // Same as nSize and must be the last DWORD + // of the record. The palette entries, + // if exist, precede this field. +} EMREOF, *PEMREOF; + +typedef struct tagEMRLINETO +{ + EMR emr; + POINTL ptl; +} EMRLINETO, *PEMRLINETO, + EMRMOVETOEX, *PEMRMOVETOEX; + +typedef struct tagEMROFFSETCLIPRGN +{ + EMR emr; + POINTL ptlOffset; +} EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN; + +typedef struct tagEMRFILLPATH +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units +} EMRFILLPATH, *PEMRFILLPATH, + EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH, + EMRSTROKEPATH, *PEMRSTROKEPATH; + +typedef struct tagEMREXCLUDECLIPRECT +{ + EMR emr; + RECTL rclClip; +} EMREXCLUDECLIPRECT, *PEMREXCLUDECLIPRECT, + EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT; + +typedef struct tagEMRSETVIEWPORTORGEX +{ + EMR emr; + POINTL ptlOrigin; +} EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX, + EMRSETWINDOWORGEX, *PEMRSETWINDOWORGEX, + EMRSETBRUSHORGEX, *PEMRSETBRUSHORGEX; + +typedef struct tagEMRSETVIEWPORTEXTEX +{ + EMR emr; + SIZEL szlExtent; +} EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX, + EMRSETWINDOWEXTEX, *PEMRSETWINDOWEXTEX; + +typedef struct tagEMRSCALEVIEWPORTEXTEX +{ + EMR emr; + LONG xNum; + LONG xDenom; + LONG yNum; + LONG yDenom; +} EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX, + EMRSCALEWINDOWEXTEX, *PEMRSCALEWINDOWEXTEX; + +typedef struct tagEMRSETWORLDTRANSFORM +{ + EMR emr; + XFORM xform; +} EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM; + +typedef struct tagEMRMODIFYWORLDTRANSFORM +{ + EMR emr; + XFORM xform; + DWORD iMode; +} EMRMODIFYWORLDTRANSFORM, *PEMRMODIFYWORLDTRANSFORM; + +typedef struct tagEMRSETPIXELV +{ + EMR emr; + POINTL ptlPixel; + COLORREF crColor; +} EMRSETPIXELV, *PEMRSETPIXELV; + +typedef struct tagEMREXTFLOODFILL +{ + EMR emr; + POINTL ptlStart; + COLORREF crColor; + DWORD iMode; +} EMREXTFLOODFILL, *PEMREXTFLOODFILL; + +typedef struct tagEMRELLIPSE +{ + EMR emr; + RECTL rclBox; // Inclusive-inclusive bounding rectangle +} EMRELLIPSE, *PEMRELLIPSE, + EMRRECTANGLE, *PEMRRECTANGLE; + +typedef struct tagEMRROUNDRECT +{ + EMR emr; + RECTL rclBox; // Inclusive-inclusive bounding rectangle + SIZEL szlCorner; +} EMRROUNDRECT, *PEMRROUNDRECT; + +typedef struct tagEMRARC +{ + EMR emr; + RECTL rclBox; // Inclusive-inclusive bounding rectangle + POINTL ptlStart; + POINTL ptlEnd; +} EMRARC, *PEMRARC, + EMRARCTO, *PEMRARCTO, + EMRCHORD, *PEMRCHORD, + EMRPIE, *PEMRPIE; + +typedef struct tagEMRANGLEARC +{ + EMR emr; + POINTL ptlCenter; + DWORD nRadius; + FLOAT eStartAngle; + FLOAT eSweepAngle; +} EMRANGLEARC, *PEMRANGLEARC; + +typedef struct tagEMRPOLYLINE +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD cptl; + POINTL aptl[1]; +} EMRPOLYLINE, *PEMRPOLYLINE, + EMRPOLYBEZIER, *PEMRPOLYBEZIER, + EMRPOLYGON, *PEMRPOLYGON, + EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO, + EMRPOLYLINETO, *PEMRPOLYLINETO; + +typedef struct tagEMRPOLYLINE16 +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD cpts; + POINTS apts[1]; +} EMRPOLYLINE16, *PEMRPOLYLINE16, + EMRPOLYBEZIER16, *PEMRPOLYBEZIER16, + EMRPOLYGON16, *PEMRPOLYGON16, + EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16, + EMRPOLYLINETO16, *PEMRPOLYLINETO16; + +typedef struct tagEMRPOLYDRAW +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD cptl; // Number of points + POINTL aptl[1]; // Array of points + BYTE abTypes[1]; // Array of point types +} EMRPOLYDRAW, *PEMRPOLYDRAW; + +typedef struct tagEMRPOLYDRAW16 +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD cpts; // Number of points + POINTS apts[1]; // Array of points + BYTE abTypes[1]; // Array of point types +} EMRPOLYDRAW16, *PEMRPOLYDRAW16; + +typedef struct tagEMRPOLYPOLYLINE +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD nPolys; // Number of polys + DWORD cptl; // Total number of points in all polys + DWORD aPolyCounts[1]; // Array of point counts for each poly + POINTL aptl[1]; // Array of points +} EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE, + EMRPOLYPOLYGON, *PEMRPOLYPOLYGON; + +typedef struct tagEMRPOLYPOLYLINE16 +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD nPolys; // Number of polys + DWORD cpts; // Total number of points in all polys + DWORD aPolyCounts[1]; // Array of point counts for each poly + POINTS apts[1]; // Array of points +} EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16, + EMRPOLYPOLYGON16, *PEMRPOLYPOLYGON16; + +typedef struct tagEMRINVERTRGN +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD cbRgnData; // Size of region data in bytes + BYTE RgnData[1]; +} EMRINVERTRGN, *PEMRINVERTRGN, + EMRPAINTRGN, *PEMRPAINTRGN; + +typedef struct tagEMRFILLRGN +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD cbRgnData; // Size of region data in bytes + DWORD ihBrush; // Brush handle index + BYTE RgnData[1]; +} EMRFILLRGN, *PEMRFILLRGN; + +typedef struct tagEMRFRAMERGN +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD cbRgnData; // Size of region data in bytes + DWORD ihBrush; // Brush handle index + SIZEL szlStroke; + BYTE RgnData[1]; +} EMRFRAMERGN, *PEMRFRAMERGN; + +typedef struct tagEMREXTSELECTCLIPRGN +{ + EMR emr; + DWORD cbRgnData; // Size of region data in bytes + DWORD iMode; + BYTE RgnData[1]; +} EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN; + +typedef struct tagEMREXTTEXTOUTA +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD iGraphicsMode; // Current graphics mode + FLOAT exScale; // X and Y scales from Page units to .01mm units + FLOAT eyScale; // if graphics mode is GM_COMPATIBLE. + EMRTEXT emrtext; // This is followed by the string and spacing + // array +} EMREXTTEXTOUTA, *PEMREXTTEXTOUTA, + EMREXTTEXTOUTW, *PEMREXTTEXTOUTW; + +typedef struct tagEMRPOLYTEXTOUTA +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + DWORD iGraphicsMode; // Current graphics mode + FLOAT exScale; // X and Y scales from Page units to .01mm units + FLOAT eyScale; // if graphics mode is GM_COMPATIBLE. + LONG cStrings; + EMRTEXT aemrtext[1]; // Array of EMRTEXT structures. This is + // followed by the strings and spacing arrays. +} EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA, + EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW; + +typedef struct tagEMRBITBLT +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; // Source DC transform + COLORREF crBkColorSrc; // Source DC BkColor in RGB + DWORD iUsageSrc; // Source bitmap info color table usage + // (DIB_RGB_COLORS) + DWORD offBmiSrc; // Offset to the source BITMAPINFO structure + DWORD cbBmiSrc; // Size of the source BITMAPINFO structure + DWORD offBitsSrc; // Offset to the source bitmap bits + DWORD cbBitsSrc; // Size of the source bitmap bits +} EMRBITBLT, *PEMRBITBLT; + +typedef struct tagEMRSTRETCHBLT +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; // Source DC transform + COLORREF crBkColorSrc; // Source DC BkColor in RGB + DWORD iUsageSrc; // Source bitmap info color table usage + // (DIB_RGB_COLORS) + DWORD offBmiSrc; // Offset to the source BITMAPINFO structure + DWORD cbBmiSrc; // Size of the source BITMAPINFO structure + DWORD offBitsSrc; // Offset to the source bitmap bits + DWORD cbBitsSrc; // Size of the source bitmap bits + LONG cxSrc; + LONG cySrc; +} EMRSTRETCHBLT, *PEMRSTRETCHBLT; + +typedef struct tagEMRMASKBLT +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + LONG xDest; + LONG yDest; + LONG cxDest; + LONG cyDest; + DWORD dwRop; + LONG xSrc; + LONG ySrc; + XFORM xformSrc; // Source DC transform + COLORREF crBkColorSrc; // Source DC BkColor in RGB + DWORD iUsageSrc; // Source bitmap info color table usage + // (DIB_RGB_COLORS) + DWORD offBmiSrc; // Offset to the source BITMAPINFO structure + DWORD cbBmiSrc; // Size of the source BITMAPINFO structure + DWORD offBitsSrc; // Offset to the source bitmap bits + DWORD cbBitsSrc; // Size of the source bitmap bits + LONG xMask; + LONG yMask; + DWORD iUsageMask; // Mask bitmap info color table usage + DWORD offBmiMask; // Offset to the mask BITMAPINFO structure if any + DWORD cbBmiMask; // Size of the mask BITMAPINFO structure if any + DWORD offBitsMask; // Offset to the mask bitmap bits if any + DWORD cbBitsMask; // Size of the mask bitmap bits if any +} EMRMASKBLT, *PEMRMASKBLT; + +typedef struct tagEMRPLGBLT +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + POINTL aptlDest[3]; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + XFORM xformSrc; // Source DC transform + COLORREF crBkColorSrc; // Source DC BkColor in RGB + DWORD iUsageSrc; // Source bitmap info color table usage + // (DIB_RGB_COLORS) + DWORD offBmiSrc; // Offset to the source BITMAPINFO structure + DWORD cbBmiSrc; // Size of the source BITMAPINFO structure + DWORD offBitsSrc; // Offset to the source bitmap bits + DWORD cbBitsSrc; // Size of the source bitmap bits + LONG xMask; + LONG yMask; + DWORD iUsageMask; // Mask bitmap info color table usage + DWORD offBmiMask; // Offset to the mask BITMAPINFO structure if any + DWORD cbBmiMask; // Size of the mask BITMAPINFO structure if any + DWORD offBitsMask; // Offset to the mask bitmap bits if any + DWORD cbBitsMask; // Size of the mask bitmap bits if any +} EMRPLGBLT, *PEMRPLGBLT; + +typedef struct tagEMRSETDIBITSTODEVICE +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; // Offset to the source BITMAPINFO structure + DWORD cbBmiSrc; // Size of the source BITMAPINFO structure + DWORD offBitsSrc; // Offset to the source bitmap bits + DWORD cbBitsSrc; // Size of the source bitmap bits + DWORD iUsageSrc; // Source bitmap info color table usage + DWORD iStartScan; + DWORD cScans; +} EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE; + +typedef struct tagEMRSTRETCHDIBITS +{ + EMR emr; + RECTL rclBounds; // Inclusive-inclusive bounds in device units + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; // Offset to the source BITMAPINFO structure + DWORD cbBmiSrc; // Size of the source BITMAPINFO structure + DWORD offBitsSrc; // Offset to the source bitmap bits + DWORD cbBitsSrc; // Size of the source bitmap bits + DWORD iUsageSrc; // Source bitmap info color table usage + DWORD dwRop; + LONG cxDest; + LONG cyDest; +} EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS; + +typedef struct tagEMREXTCREATEFONTINDIRECTW +{ + EMR emr; + DWORD ihFont; // Font handle index + EXTLOGFONTW elfw; +} EMREXTCREATEFONTINDIRECTW, *PEMREXTCREATEFONTINDIRECTW; + +typedef struct tagEMRCREATEPALETTE +{ + EMR emr; + DWORD ihPal; // Palette handle index + LOGPALETTE lgpl; // The peFlags fields in the palette entries + // do not contain any flags +} EMRCREATEPALETTE, *PEMRCREATEPALETTE; + +typedef struct tagEMRCREATEPEN +{ + EMR emr; + DWORD ihPen; // Pen handle index + LOGPEN lopn; +} EMRCREATEPEN, *PEMRCREATEPEN; + +typedef struct tagEMREXTCREATEPEN +{ + EMR emr; + DWORD ihPen; // Pen handle index + DWORD offBmi; // Offset to the BITMAPINFO structure if any + DWORD cbBmi; // Size of the BITMAPINFO structure if any + // The bitmap info is followed by the bitmap + // bits to form a packed DIB. + DWORD offBits; // Offset to the brush bitmap bits if any + DWORD cbBits; // Size of the brush bitmap bits if any + EXTLOGPEN elp; // The extended pen with the style array. +} EMREXTCREATEPEN, *PEMREXTCREATEPEN; + +typedef struct tagEMRCREATEBRUSHINDIRECT +{ + EMR emr; + DWORD ihBrush; // Brush handle index + LOGBRUSH lb; // The style must be BS_SOLID, BS_HOLLOW, + // BS_NULL or BS_HATCHED. +} EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT; + +typedef struct tagEMRCREATEMONOBRUSH +{ + EMR emr; + DWORD ihBrush; // Brush handle index + DWORD iUsage; // Bitmap info color table usage + DWORD offBmi; // Offset to the BITMAPINFO structure + DWORD cbBmi; // Size of the BITMAPINFO structure + DWORD offBits; // Offset to the bitmap bits + DWORD cbBits; // Size of the bitmap bits +} EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH; + +typedef struct tagEMRCREATEDIBPATTERNBRUSHPT +{ + EMR emr; + DWORD ihBrush; // Brush handle index + DWORD iUsage; // Bitmap info color table usage + DWORD offBmi; // Offset to the BITMAPINFO structure + DWORD cbBmi; // Size of the BITMAPINFO structure + // The bitmap info is followed by the bitmap + // bits to form a packed DIB. + DWORD offBits; // Offset to the bitmap bits + DWORD cbBits; // Size of the bitmap bits +} EMRCREATEDIBPATTERNBRUSHPT, *PEMRCREATEDIBPATTERNBRUSHPT; + +#endif /* NOMETAFILE */ + +#endif /* NOGDI */ + +#ifdef __cplusplus +} +#endif #endif /* _WINGDI_ */