--- mstools/h/wingdi.h 2018/08/09 18:20:01 1.1 +++ mstools/h/wingdi.h 2018/08/09 18:20:31 1.1.1.2 @@ -79,9 +79,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 @@ -107,6 +106,15 @@ Abstract: #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 +133,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 @@ -174,16 +182,25 @@ Abstract: #define META_DIBCREATEPATTERNBRUSH 0x0142 #define META_STRETCHDIB 0x0f43 +#define META_EXTFLOODFILL 0x0548 + +// #define META_RESETDC 0x014C +// #define META_STARTDOC 0x014D +// #define META_STARTPAGE 0x004F +// #define META_ENDPAGE 0x0050 +// #define META_ABORTDOC 0x0052 +// #define META_ENDDOC 0x004E + #define META_DELETEOBJECT 0x01f0 #define META_CREATEPALETTE 0x00f7 -#define META_CREATEBRUSH 0x00F8 +// #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_CREATEBITMAPINDIRECT 0x02FD +// #define META_CREATEBITMAP 0x06FE #define META_CREATEREGION 0x06FF #endif /* NOMETAFILE */ @@ -228,6 +245,8 @@ Abstract: #define GETSETPAPERMETRICS 35 #define POSTSCRIPT_DATA 37 #define POSTSCRIPT_IGNORE 38 +#define MOUSETRAILS 39 + #define GETEXTENDEDTEXTMETRICS 256 #define GETEXTENTTABLE 257 #define GETPAIRKERNTABLE 258 @@ -240,6 +259,7 @@ Abstract: #define SETCHARSET 772 #define STRETCHBLT 2048 +#define GETSETSCREENPARAMS 3072 #define BEGIN_PATH 4096 #define CLIP_TO_PATH 4097 #define END_PATH 4098 @@ -266,7 +286,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 +297,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 +329,7 @@ typedef struct tagBITMAP LONG bmWidthBytes; WORD bmPlanes; WORD bmBitsPixel; - LPSTR bmBits; + LPVOID bmBits; } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP; typedef struct tagRGBTRIPLE { @@ -334,23 +357,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_TOPDOWN 4L typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; @@ -379,7 +402,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 +410,18 @@ typedef struct tagMETARECORD DWORD rdSize; WORD rdFunction; WORD rdParm[1]; - } METARECORD, *PMETARECORD, FAR *LPMETARECORD; + } METARECORD; +typedef struct tagMETARECORD UNALIGNED *PMETARECORD, 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 +432,51 @@ typedef struct tagMETAHEADER DWORD mtMaxRecord; WORD mtNoParameters; } METAHEADER; +typedef struct tagMETAHEADER UNALIGNED *PMETAHEADER, FAR *LPMETAHEADER; + +#pragma pack() + +/* Enhanced Metafile structures */ +typedef struct tagENHMETARECORD +{ + DWORD iType; // Record type MR_XXX + DWORD nSize; // Record size in bytes + DWORD dParm[1]; // Parameters +} ENHMETARECORD, *PENHMETARECORD, *LPENHMETARECORD; + +typedef struct tagENHMETAHEADER +{ + DWORD iType; // Record type MR_METAFILE + 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 +/* tmPitchAntFamily flags */ +#define TMPF_FIXED_PITCH 0x01 +#define TMPF_VECTOR 0x02 +#define TMPF_DEVICE 0x08 +#define TMPF_TRUETYPE 0x04 + typedef struct tagTEXTMETRICA { LONG tmHeight; @@ -470,8 +535,78 @@ typedef struct tagTEXTMETRICW #define LPTEXTMETRIC LPTEXTMETRICA #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 +#define NEWTEXTMETRIC NEWTEXTMETRICW +#define PNEWTEXTMETRIC PNEWTEXTMETRICW +#define NPNEWTEXTMETRIC NPNEWTEXTMETRICW +#define LPNEWTEXTMETRIC LPNEWTEXTMETRICW +#else +#define NEWTEXTMETRIC NEWTEXTMETRICA +#define PNEWTEXTMETRIC PNEWTEXTMETRICA +#define NPNEWTEXTMETRIC NPNEWTEXTMETRICA +#define LPNEWTEXTMETRIC LPNEWTEXTMETRICA +#endif // UNICODE + +#endif /* NOTEXTMETRIC */ /* GDI Logical Objects: */ /* Pel Array */ @@ -487,8 +622,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 +635,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 +668,6 @@ typedef struct tagLOGPALETTE { /* Logical Font */ #define LF_FACESIZE 32 - typedef struct tagLOGFONTA { LONG lfHeight; @@ -570,15 +714,47 @@ typedef struct tagLOGFONTW #define LPLOGFONT LPLOGFONTA #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 +#define ENUMLOGFONT ENUMLOGFONTW +#define LPENUMLOGFONT LPENUMLOGFONTW +#else +#define ENUMLOGFONT ENUMLOGFONTA +#define LPENUMLOGFONT LPENUMLOGFONTA +#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 +765,11 @@ typedef struct tagLOGFONTW #define VARIABLE_PITCH 2 #define ANSI_CHARSET 0 +#define UNICODE_CHARSET 1 #define SYMBOL_CHARSET 2 #define SHIFTJIS_CHARSET 128 +#define HANGEUL_CHARSET 129 +#define CHINESEBIG5_CHARSET 136 #define OEM_CHARSET 255 /* Font Families */ @@ -623,13 +802,28 @@ typedef struct tagLOGFONTW #define FW_BLACK FW_HEAVY +/* !!![kirko] The CHARSET structure is sheduled to die */ typedef struct tagCHARSET { DWORD aflBlock[3]; DWORD flLang; } CHARSET, *LPCHARSET; +#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 + +#define PAN_CULTURE_LATIN 0 + typedef struct tagPANOSE { - ULONG ulCulture; + DWORD ulCulture; /* !!! [kirko] this field will disappear */ BYTE bFamilyType; BYTE bSerifStyle; BYTE bWeight; @@ -642,217 +836,220 @@ typedef struct tagPANOSE { BYTE bXHeight; } PANOSE, *LPPANOSE; -#define PAN_ANY 0 /* Any */ -#define PAN_NO_FIT 1 /* No Fit */ +#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_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]; + UINT elfVersion; /* 0 for the first release of NT */ + UINT elfCulture; /* 0 for Latin */ PANOSE elfPanose; - CHARSET elfCharset; - BYTE elfFamily[ELF_FAMILY_SIZE]; -} EXTLOGFONTA, *LPEXTLOGFONTA; + BYTE elfVendorId[ELF_VENDOR_SIZE]; +} 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]; + UINT elfVersion; /* 0 for the first release of NT */ + UINT elfCulture; /* 0 for Latin */ PANOSE elfPanose; - CHARSET elfCharset; - WCHAR elfFamily[ELF_FAMILY_SIZE]; -} EXTLOGFONTW, *LPEXTLOGFONTW; + BYTE elfVendorId[ELF_VENDOR_SIZE]; +} EXTLOGFONTW, *PEXTLOGFONTW, NEAR *NPEXTLOGFONTW, FAR *LPEXTLOGFONTW; #ifdef UNICODE #define EXTLOGFONT EXTLOGFONTW +#define PEXTLOGFONT PEXTLOGFONTW +#define NPEXTLOGFONT NPEXTLOGFONTW #define LPEXTLOGFONT LPEXTLOGFONTW #else #define EXTLOGFONT EXTLOGFONTA +#define PEXTLOGFONT PEXTLOGFONTA +#define NPEXTLOGFONT NPEXTLOGFONTA #define LPEXTLOGFONT LPEXTLOGFONTA #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; +#define ELF_VERSION 0 +#define ELF_CULTURE_LATIN 0 /* 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; +/* Allowed values for FMATCH::wType */ +#define FMATCH_EXACT 0 +#define FMATCH_NEAR 1 +#define FMATCH_FAR 2 +#define FMATCH_ERROR 3 -#define SIZEOFFMCONTROLS sizeof(FMCONTROLS) +#define PANOSE_RANGE 16 + +#define FM_LOCATION_GDI 1 // location of font is in GDI + +typedef struct tagFMPENALTYSET { + DWORD psSize; // size of this structure in BYTE's + DWORD psHeight; + DWORD psWidth; + DWORD psEscapement; + DWORD psOrientation; + DWORD psWeight; + DWORD psItalic; + DWORD psUnderline; + DWORD psStrikeOut; + DWORD psOutPrecsion; + DWORD psClipPrecision; + DWORD psQuality; + DWORD psPitchAndFamily; + DWORD psFaceName; + DWORD psFullName; + DWORD psStyle; + DWORD psPanose[PANOSE_COUNT]; + DWORD psVendorId; + DWORD psLocation; +} FMPENALTYSET, *LPFMPENALTYSET; + +typedef struct tagFMWEIGHTSET { + DWORD wsSize; // size of this structure in BYTE's + DWORD wsHeight; + DWORD wsWidth; + DWORD wsEscapement; + DWORD wsOrientation; + DWORD wsWeight; + DWORD wsItalic; + DWORD wsUnderline; + DWORD wsStrikeOut; + DWORD wsOutPrecsion; + DWORD wsClipPrecision; + DWORD wsQuality; + DWORD wsPitchAndFamily; + DWORD wsFaceName; + DWORD wsFullName; + DWORD wsStyle; + DWORD wsPanose[PANOSE_COUNT]; + DWORD wsVendorId; + DWORD wsLocation; +} FMWEIGHTSET, *LPFMWEIGHTSET; typedef struct tagFMATCHA { - DWORD size; - DWORD type; - DWORD distsetSum; - FMDISTANCESET distset; - EXTLOGFONTA ExtLogFont; -} FMATCHA,*LPFMATCHA; + DWORD fmSize; // size of this structure in bytes + DWORD fmTotalPenalty; // total penalty of physical font + FMPENALTYSET fmPenaltySet; // penalties of physical font + EXTLOGFONTA fmExtLogFont; // describes physical font +} FMATCHA, *LPFMATCHA; typedef struct tagFMATCHW { - DWORD size; - DWORD type; - DWORD distsetSum; - FMDISTANCESET distset; - EXTLOGFONTW ExtLogFont; -} FMATCHW,*LPFMATCHW; + DWORD fmSize; // size of this structure in bytes + DWORD fmTotalPenalty; // total penalty of physical font + FMPENALTYSET fmPenaltySet; // penalties of physical font + EXTLOGFONTW fmExtLogFont; // describes physical font +} FMATCHW, *LPFMATCHW; #ifdef UNICODE #define FMATCH FMATCHW #define LPFMATCH LPFMATCHW @@ -861,20 +1058,57 @@ typedef struct tagFMATCHW { #define LPFMATCH LPFMATCHA #endif // UNICODE -/* Allowed values for FMATCH::wType */ -#define FMATCH_EXACT 0 -#define FMATCH_NEAR 1 -#define FMATCH_FAR 2 +/* indices to font mapping functions */ + +#define MAPPER_INDEX_TERMINATE 0 + +#define MAPPER_INDEX_HEIGHT 1 +#define MAPPER_INDEX_WIDTH 2 +#define MAPPER_INDEX_ESCAPEMENT 3 +#define MAPPER_INDEX_ORIENTATION 4 +#define MAPPER_INDEX_WEIGHT 5 +#define MAPPER_INDEX_ITALIC 6 +#define MAPPER_INDEX_UNDERLINE 7 +#define MAPPER_INDEX_STRIKEOUT 8 +#define MAPPER_INDEX_CHARSET 9 +#define MAPPER_INDEX_OUTPRECISION 10 +#define MAPPER_INDEX_CLIPPRECISION 11 +#define MAPPER_INDEX_QUALITY 12 +#define MAPPER_INDEX_PITCHANDFAMILY 13 +#define MAPPER_INDEX_FACENAME 14 +#define MAPPER_INDEX_FULLNAME 15 +#define MAPPER_INDEX_STYLE 16 +#define MAPPER_INDEX_PANOSE 17 +#define MAPPER_INDEX_VENDORID 18 +#define MAPPER_INDEX_ASPECT 19 +#define MAPPER_INDEX_LOCATION 20 + +#define MAPPER_INDEX_LAST MAPPER_INDEX_LOCATION +#define SIZEOFMAPORDER sizeof(UINT)*(MAPPER_INDEX_LAST+1) +typedef DWORD FMORDER[MAPPER_INDEX_LAST+1]; + +typedef FMORDER *LPFMORDER; + +typedef struct tagFMCONTROLS { + DWORD size; + DWORD penaltySumMax; + FMPENALTYSET fmpsMax; + FMWEIGHTSET fmws; + FMORDER fmorder; +} FMCONTROLS, *LPFMCONTROLS; + +#define SIZEOFFMCONTROLS sizeof(FMCONTROLS) /* 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)(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 */ @@ -904,22 +1138,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 +1170,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 +1180,7 @@ typedef struct tagFMATCHW { #define BS_PATTERN 3 #define BS_INDEXED 4 #define BS_DIBPATTERN 5 +#define BS_DIBPATTERNPT 6 /* Hatch Styles */ #define HS_HORIZONTAL 0 /* ----- */ @@ -986,6 +1212,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 +1261,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 +1298,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,6 +1325,7 @@ 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 */ @@ -1100,11 +1348,14 @@ typedef struct tagFMATCHW { #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 +1363,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() */ @@ -1130,33 +1383,40 @@ typedef struct tagFMATCHW { /* constants for CreateDIBitmap */ #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]; +/* DEVMODE dmDisplayMode flags */ + +#define DM_GRAYSCALE 1 + +typedef struct _devicemodeA { + BYTE dmDeviceName[32]; + 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 dmCollate; + BYTE dmFormName[32]; + USHORT dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + DWORD dmDisplayMode; +} DEVMODEA, *PDEVMODEA, *NPDEVMODEA, *LPDEVMODEA; +typedef struct _devicemodeW { + WCHAR dmDeviceName[32]; WORD dmSpecVersion; WORD dmDriverVersion; WORD dmSize; @@ -1172,164 +1432,433 @@ typedef struct _devicemode { short dmPrintQuality; short dmColor; short dmDuplex; -} DEVMODE, *PDEVMODE, *NPDEVMODE, *LPDEVMODE; + short dmCollate; + WCHAR dmFormName[32]; + USHORT dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + DWORD dmDisplayMode; +} DEVMODEW, *PDEVMODEW, *NPDEVMODEW, *LPDEVMODEW; +#ifdef UNICODE +#define DEVMODE DEVMODEW +#define PDEVMODE PDEVMODEW +#define NPDEVMODE NPDEVMODEW +#define LPDEVMODE LPDEVMODEW +#else +#define DEVMODE DEVMODEA +#define PDEVMODE PDEVMODEA +#define NPDEVMODE NPDEVMODEA +#define LPDEVMODE LPDEVMODEA +#endif // UNICODE /* 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; + UINT otmsCharSlopeRise; + UINT otmsCharSlopeRun; + UINT otmItalicAngle; + UINT otmEMSquare; + UINT otmAscent; + int otmDescent; + int otmLineGap; + UINT otmCapEmHeight; + UINT otmXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + UINT 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; + UINT otmsCharSlopeRise; + UINT otmsCharSlopeRun; + UINT otmItalicAngle; + UINT otmEMSquare; + UINT otmAscent; + int otmDescent; + int otmLineGap; + UINT otmCapEmHeight; + UINT otmXHeight; + RECT otmrcFontBox; + int otmMacAscent; + int otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + int otmsStrikeoutPosition; + int otmsUnderscoreSize; + UINT otmsUnderscorePosition; + PSTR otmpFamilyName; + PSTR otmpFaceName; + PSTR otmpStyleName; + PSTR otmpFullName; +} OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, NEAR *NPOUTLINETEXTMETRICW, FAR *LPOUTLINETEXTMETRICW; +#ifdef UNICODE +#define OUTLINETEXTMETRIC OUTLINETEXTMETRICW +#define POUTLINETEXTMETRIC POUTLINETEXTMETRICW +#define NPOUTLINETEXTMETRIC NPOUTLINETEXTMETRICW +#define LPOUTLINETEXTMETRIC LPOUTLINETEXTMETRICW +#else +#define OUTLINETEXTMETRIC OUTLINETEXTMETRICA +#define POUTLINETEXTMETRIC POUTLINETEXTMETRICA +#define NPOUTLINETEXTMETRIC NPOUTLINETEXTMETRICA +#define LPOUTLINETEXTMETRIC LPOUTLINETEXTMETRICA +#endif // UNICODE + +#endif /* NOTEXTMETRIC */ + + +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_NONE 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 +typedef int (CALLBACK* FONTENUMPROC)(LPLOGFONT, LPTEXTMETRIC, DWORD, LPARAM); +typedef VOID (CALLBACK* GOBJENUMPROC)(LPVOID, LPARAM); +typedef VOID (CALLBACK* LINEDDAPROC)(int, int, LPARAM); +#else +typedef FARPROC FONTENUMPROC; +typedef FARPROC GOBJENUMPROC; +typedef FARPROC LINEDDAPROC; +#endif + +int WINAPI AddFontResourceA(LPCSTR); +int WINAPI AddFontResourceW(LPCWSTR); #ifdef UNICODE #define AddFontResource AddFontResourceW #else #define AddFontResource AddFontResourceA #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); +int WINAPI AddFontModule(HMODULE); +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, LPSTR); +HMETAFILE WINAPI CopyMetaFileW(HMETAFILE, LPWSTR); +#ifdef UNICODE +#define CopyMetaFile CopyMetaFileW +#else +#define CopyMetaFile CopyMetaFileA +#endif // !UNICODE +HBITMAP WINAPI CreateBitmap(int, int, UINT, UINT, CONST VOID *); +HBITMAP WINAPI CreateBitmapIndirect(LPBITMAP); +HBRUSH WINAPI CreateBrushIndirect(LPLOGBRUSH); +HBITMAP WINAPI CreateCompatibleBitmap(HDC, int, int); +HBITMAP WINAPI CreateDiscardableBitmap(HDC, int, int); +HDC WINAPI CreateCompatibleDC(HDC); +HDC WINAPI CreateDC(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODE *); +HBITMAP WINAPI CreateDIBitmap(HDC, LPBITMAPINFOHEADER, DWORD, CONST BYTE *, LPBITMAPINFO, UINT); +HBITMAP WINAPI CreateDIBSection(HDC, LPBITMAPINFO, DWORD, DWORD, LPBYTE *); +HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL, UINT); +HBRUSH WINAPI CreateDIBPatternBrushPt(LPVOID, DWORD); +HRGN WINAPI CreateEllipticRgn(int, int, int, int); +HRGN WINAPI CreateEllipticRgnIndirect(CONST RECT *); +HFONT WINAPI CreateFontIndirectA(LPLOGFONTA); +HFONT WINAPI CreateFontIndirectW(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); +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 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); +HBRUSH WINAPI CreateHatchBrush(int, COLORREF); +HDC WINAPI CreateIC(LPCSTR, LPCSTR , LPCSTR , LPDEVMODE ); +HDC WINAPI CreateMetaFileA(LPCSTR); +HDC WINAPI CreateMetaFileW(LPCWSTR); +#ifdef UNICODE +#define CreateMetaFile CreateMetaFileW +#else +#define CreateMetaFile CreateMetaFileA +#endif // !UNICODE +HPALETTE WINAPI CreatePalette(LPLOGPALETTE); +HPEN WINAPI CreatePen(int, int, COLORREF); +HPEN WINAPI CreatePenIndirect(LPLOGPEN); +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, LPSTR); +BOOL WINAPI CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPWSTR); +#ifdef UNICODE +#define CreateScalableFontResource CreateScalableFontResourceW +#else +#define CreateScalableFontResource CreateScalableFontResourceA +#endif // !UNICODE +HBRUSH WINAPI CreateSolidBrush(COLORREF); -BOOL BATCH APIENTRY Ellipse(IN HDC, IN int, IN int, IN int, IN int); +BOOL WINAPI DeleteDC(HDC); +BOOL WINAPI DeleteMetaFile(HMETAFILE); +BOOL WINAPI DeleteObject(HGDIOBJ); +int WINAPI DeviceCapabilitiesEx(LPSTR, LPSTR, LPSTR, int, LPSTR, LPDEVMODE ); +BOOL WINAPI Ellipse(HDC, int, int, int, int); -int APIENTRY EnumFontsA(IN HDC, IN LPSTR, IN PROC, IN LPVOID); -int APIENTRY EnumFontsW(IN HDC, IN LPWSTR, IN PROC, IN LPVOID); +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 -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); +#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(LPXFORM, DWORD, LPRGNDATA); +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 APIENTRY GetCharWidthA(IN HDC, IN UINT, IN UINT, OUT LPINT); -BOOL APIENTRY GetCharWidthW(IN HDC, IN UINT, IN UINT, OUT LPINT); +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 APIENTRY GetCharWidthW(IN HDC, IN UINT, IN UINT, OUT LPINT); +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 -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); +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 GetCharABCWidthsFloat GetCharABCWidthsFloatW +#else +#define GetCharABCWidthsFloat GetCharABCWidthsFloatA +#endif // !UNICODE + +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 GetGlyphOutline(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, LPMAT2); +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 + +DWORD APIENTRY GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); +DWORD 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 @@ -1337,91 +1866,157 @@ BOOL APIENTRY GetTextExtentPointW( #define GetTextExtentPoint GetTextExtentPointA #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); +BOOL APIENTRY GetTextExtentExPointA( + HDC, + LPCSTR, + int, + int, + LPINT, + LPINT, + LPSIZE + ); +BOOL APIENTRY GetTextExtentExPointW( + HDC, + LPCWSTR, + int, + int, + LPINT, + LPINT, + LPSIZE + ); +#ifdef UNICODE +#define GetTextExtentExPoint GetTextExtentExPointW +#else +#define GetTextExtentExPoint GetTextExtentExPointA +#endif // !UNICODE + +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, LPPOINT, 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, LPPOINT, LPINT, int); +BOOL WINAPI PtInRegion(HRGN, int, int); +BOOL WINAPI PtVisible(HDC, int, int); +BOOL WINAPI RectInRegion(HRGN, LPRECT); +BOOL WINAPI RectVisible(HDC, CONST RECT *); +BOOL WINAPI Rectangle(HDC, int, int, int, int); +BOOL WINAPI RestoreDC(HDC, int); +UINT WINAPI RealizePalette(HDC); +BOOL WINAPI RemoveFontModule(HMODULE); +BOOL WINAPI RemoveFontResourceA(LPSTR); +BOOL WINAPI RemoveFontResourceW(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); +BOOL WINAPI RoundRect(HDC, int, int, int, int, int, int); +BOOL WINAPI ResizePalette(HPALETTE, 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); +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 BYTE *); + +UINT WINAPI SetBoundsRect(HDC, LPRECT, UINT); +int WINAPI SetDIBits(HDC, HBITMAP, UINT, UINT, CONST VOID *, LPBITMAPINFO, UINT); +int WINAPI SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, LPVOID, LPBITMAPINFO, UINT); +DWORD WINAPI SetMapperFlags(HDC, DWORD); +int WINAPI SetMapMode(HDC, int); +HMETAFILE WINAPI SetMetaFileBitsEx(UINT, LPBYTE); +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 *, LPBITMAPINFO, 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); + +// Enhanced Metafile Function Declarations + +HENHMETAFILE WINAPI CloseEnhMetaFile(HDC); +HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE, LPSTR); +HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE, LPWSTR); +#ifdef UNICODE +#define CopyEnhMetaFile CopyEnhMetaFileW +#else +#define CopyEnhMetaFile CopyEnhMetaFileA +#endif // !UNICODE +HDC WINAPI CreateEnhMetaFileA(HDC, LPSTR, LPRECT, LPSTR); +HDC WINAPI CreateEnhMetaFileW(HDC, LPWSTR, LPRECT, LPWSTR); +#ifdef UNICODE +#define CreateEnhMetaFile CreateEnhMetaFileW +#else +#define CreateEnhMetaFile CreateEnhMetaFileA +#endif // !UNICODE +BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE); +BOOL WINAPI EnumEnhMetaFile(HDC, HENHMETAFILE, PROC, LPVOID, LPRECT); +HENHMETAFILE WINAPI GetEnhMetaFileA(LPSTR); +HENHMETAFILE WINAPI GetEnhMetaFileW(LPWSTR); +#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, LPRECT); +BOOL WINAPI PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, LPENHMETARECORD, UINT); +HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT, LPBYTE); +HENHMETAFILE WINAPI SetWinMetaFileBits(UINT, LPBYTE, HDC, LPMETAFILEPICT); +BOOL WINAPI GdiComment(HDC, UINT, LPBYTE); -BOOL APIENTRY PlayMetaFileRecord(IN HDC, IN LPHANDLETABLE, IN LPMETARECORD, IN UINT); -BOOL APIENTRY EnumMetaFile(IN HDC, IN HMF, IN PROC, IN LPVOID); -#endif +#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 #else @@ -1431,151 +2026,140 @@ BOOL APIENTRY GetTextMetricsW(IN HDC, OU #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); +BOOL WINAPI AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); +BOOL WINAPI PolyPolyline(HDC, LPPOINT, LPDWORD, DWORD); +BOOL WINAPI GetWorldTransform(HDC, LPXFORM); +BOOL WINAPI SetWorldTransform(HDC, LPXFORM); +BOOL WINAPI ModifyWorldTransform(HDC, LPXFORM , DWORD); +BOOL WINAPI CombineTransform(LPXFORM, LPXFORM, LPXFORM); -/* if the thank compiler is reading this file, don't define these */ -#ifndef THANKS +#ifdef STRICT +typedef BOOL (CALLBACK* ABORTPROC)(HDC, int); +#else +typedef FARPROC ABORTPROC; +#endif + +typedef struct +{ + int cbSize; + PSTR lpszDocName; + PSTR lpszOutput; +} DOCINFO; +typedef DOCINFO *LPDOCINFO; + +int WINAPI StartDoc(HDC, LPDOCINFO); +int WINAPI EndDoc(HDC); +int WINAPI StartPage(HDC); +int WINAPI EndPage(HDC); +int WINAPI AbortDoc(HDC); +int WINAPI SetAbortProc(HDC, ABORTPROC); + +BOOL WINAPI GdiPlayJournal(HDC,LPCSTR,DWORD,DWORD); +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, LPPOINT, LPBYTE, 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, LPLOGBRUSH, DWORD, LPDWORD); +BOOL WINAPI GetMiterLimit(HDC, PFLOAT); +int WINAPI GetArcDirection(HDC); -int APIENTRY GetObjectA(IN HANDLE, IN int, OUT LPVOID); -int APIENTRY GetObjectW(IN HANDLE, IN int, OUT LPVOID); +int WINAPI GetObjectA(HGDIOBJ, int, LPVOID); +int WINAPI GetObjectW(HGDIOBJ, int, 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 - ); +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 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 - ); +BOOL WINAPI ExtTextOutA(HDC, int, int, UINT, CONST RECT *, LPCSTR, UINT, LPINT); +BOOL WINAPI ExtTextOutW(HDC, int, int, UINT, CONST RECT *, LPCWSTR, UINT, 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); +HRGN WINAPI CreatePolygonRgn(CONST POINT *, int, int); +BOOL WINAPI DPtoLP(HDC, LPPOINT, int); +BOOL WINAPI LPtoDP(HDC, LPPOINT, int); +BOOL WINAPI Polygon(HDC, LPPOINT, int); +BOOL WINAPI Polyline(HDC, CONST POINT *, int); + +BOOL WINAPI PolyBezier(HDC, LPPOINT, DWORD); +BOOL WINAPI PolyBezierTo(HDC, LPPOINT, DWORD); +BOOL WINAPI PolylineTo(HDC, LPPOINT, 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); -int APIENTRY GetTextFaceA(IN HDC, IN int, OUT LPSTR); -int APIENTRY GetTextFaceW(IN HDC, IN int, OUT LPWSTR); +int WINAPI GetTextFaceA(HDC, int, LPSTR); +int WINAPI GetTextFaceW(HDC, int, 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); +#define FONTMAPPER_MAX 10 + +DWORD WINAPI EnumNearestFontsA(HDC, LPEXTLOGFONTA, DWORD, LPFMATCHA); +DWORD WINAPI EnumNearestFontsW(HDC, LPEXTLOGFONTW, DWORD, LPFMATCHW); #ifdef UNICODE #define EnumNearestFonts EnumNearestFontsW #else #define EnumNearestFonts EnumNearestFontsA #endif // !UNICODE -HFONT APIENTRY ExtCreateFontIndirectA(IN LPEXTLOGFONTA); -HFONT APIENTRY ExtCreateFontIndirectW(IN LPEXTLOGFONTW); +BOOL WINAPI SetFontMapperControls(LPFMCONTROLS); + +BOOL WINAPI GetFontMapperControls(LPFMCONTROLS, DWORD); + +HFONT WINAPI ExtCreateFontIndirectA(LPEXTLOGFONTA); +HFONT WINAPI ExtCreateFontIndirectW(LPEXTLOGFONTW); #ifdef UNICODE #define ExtCreateFontIndirect ExtCreateFontIndirectW #else #define ExtCreateFontIndirect ExtCreateFontIndirectA #endif // !UNICODE +typedef struct tagKERNINGPAIR { + WORD wFirst; + WORD wSecond; + int iKernAmount; +} KERNINGPAIR, *LPKERNINGPAIR; + +DWORD WINAPI GetKerningPairs(HDC, DWORD, LPKERNINGPAIR); + +BOOL WINAPI GdiFlush(); +DWORD WINAPI GdiSetBatchLimit(DWORD); +DWORD WINAPI GdiGetBatchLimit(); -BOOL APIENTRY SetFontMapperControls(IN LPFMCONTROLS); -BOOL APIENTRY GetFontMapperControls(OUT LPFMCONTROLS,IN DWORD); - -#endif /* THANKS */ #endif /* NOGDI */ - -#ifdef LATER -/* - * JimA - 11/30/90 - * gdidelta.doc lists these as obsolete - */ -DWORD APIENTRY GetDCOrg(HDC); -#endif /* LATER */ - - #endif /* _WINGDI_ */