--- mstools/h/wingdi.h 2018/08/09 18:21:10 1.1.1.3 +++ mstools/h/wingdi.h 2018/08/09 18:23:05 1.1.1.4 @@ -43,7 +43,7 @@ extern "C" { #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 */ @@ -59,9 +59,14 @@ extern "C" { #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 @@ -176,8 +181,6 @@ extern "C" { #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 @@ -188,31 +191,17 @@ extern "C" { #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_RESETDC 0x014C -// #define META_STARTDOC 0x014D -// #define META_STARTPAGE 0x004F -// #define META_ENDPAGE 0x0050 -// #define META_ABORTDOC 0x0052 -// #define META_ENDDOC 0x004E - +#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 */ @@ -240,7 +229,7 @@ extern "C" { #define PASSTHROUGH 19 #define GETTECHNOLGY 20 #define GETTECHNOLOGY 20 -#define SETENDCAP 21 +#define SETLINECAP 21 #define SETLINEJOIN 22 #define SETMITERLIMIT 23 #define BANDINFO 24 @@ -258,12 +247,15 @@ extern "C" { #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 @@ -287,6 +279,11 @@ extern "C" { #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 @@ -356,6 +353,8 @@ typedef struct tagRGBQUAD { BYTE rgbRed; BYTE rgbReserved; } RGBQUAD; +typedef RGBQUAD FAR* LPRGBQUAD; + /* structures for defining DIBs */ typedef struct tagBITMAPCOREHEADER { @@ -386,8 +385,6 @@ typedef struct tagBITMAPINFOHEADER{ #define BI_RLE8 1L #define BI_RLE4 2L #define BI_BITFIELDS 3L -#define BI_TOPDOWN 4L //!!! This should be deleted, I only leave - //!!! it temp till Insignia changes there code !!! remove by 10/1/92 [patrickh] typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; @@ -425,7 +422,8 @@ typedef struct tagMETARECORD WORD rdFunction; WORD rdParm[1]; } METARECORD; -typedef struct tagMETARECORD UNALIGNED *PMETARECORD, FAR *LPMETARECORD; +typedef struct tagMETARECORD UNALIGNED *PMETARECORD; +typedef struct tagMETARECORD UNALIGNED FAR *LPMETARECORD; typedef struct tagMETAFILEPICT { @@ -446,21 +444,22 @@ typedef struct tagMETAHEADER DWORD mtMaxRecord; WORD mtNoParameters; } METAHEADER; -typedef struct tagMETAHEADER UNALIGNED *PMETAHEADER, FAR *LPMETAHEADER; +typedef struct tagMETAHEADER UNALIGNED *PMETAHEADER; +typedef struct tagMETAHEADER UNALIGNED FAR *LPMETAHEADER; #pragma pack() /* Enhanced Metafile structures */ typedef struct tagENHMETARECORD { - DWORD iType; // Record type MR_XXX + 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 MR_METAFILE + 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 @@ -485,7 +484,7 @@ typedef struct tagENHMETAHEADER #ifndef NOTEXTMETRIC -/* tmPitchAntFamily flags */ +/* tmPitchAndFamily flags */ #define TMPF_FIXED_PITCH 0x01 #define TMPF_VECTOR 0x02 #define TMPF_DEVICE 0x08 @@ -538,15 +537,15 @@ 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 /* ntmFlags field flags */ @@ -609,15 +608,15 @@ typedef struct tagNEWTEXTMETRICW 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 +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 */ @@ -697,7 +696,7 @@ typedef struct tagLOGFONTA BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; - char lfFaceName[LF_FACESIZE]; + CHAR lfFaceName[LF_FACESIZE]; } LOGFONTA, *PLOGFONTA, NEAR *NPLOGFONTA, FAR *LPLOGFONTA; typedef struct tagLOGFONTW { @@ -717,15 +716,15 @@ 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 @@ -745,11 +744,11 @@ typedef struct tagENUMLOGFONTW WCHAR elfStyle[LF_FACESIZE]; } ENUMLOGFONTW, FAR* LPENUMLOGFONTW; #ifdef UNICODE -#define ENUMLOGFONT ENUMLOGFONTW -#define LPENUMLOGFONT LPENUMLOGFONTW +typedef ENUMLOGFONTW ENUMLOGFONT; +typedef LPENUMLOGFONTW LPENUMLOGFONT; #else -#define ENUMLOGFONT ENUMLOGFONTA -#define LPENUMLOGFONT LPENUMLOGFONTA +typedef ENUMLOGFONTA ENUMLOGFONT; +typedef LPENUMLOGFONTA LPENUMLOGFONT; #endif // UNICODE #define OUT_DEFAULT_PRECIS 0 @@ -779,7 +778,7 @@ typedef struct tagENUMLOGFONTW #define VARIABLE_PITCH 2 #define ANSI_CHARSET 0 -#define UNICODE_CHARSET 1 +#define DEFAULT_CHARSET 1 #define SYMBOL_CHARSET 2 #define SHIFTJIS_CHARSET 128 #define HANGEUL_CHARSET 129 @@ -815,13 +814,6 @@ typedef struct tagENUMLOGFONTW #define FW_ULTRABOLD FW_EXTRABOLD #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 @@ -836,19 +828,19 @@ typedef struct tagCHARSET { #define PAN_CULTURE_LATIN 0 -typedef struct tagPANOSE { - DWORD ulCulture; /* !!! [kirko] this field will disappear */ - BYTE bFamilyType; - BYTE bSerifStyle; - BYTE bWeight; - BYTE bProportion; - BYTE bContrast; - BYTE bStrokeVariation; - BYTE bArmStyle; - BYTE bLetterform; - BYTE bMidline; - BYTE bXHeight; -} PANOSE, *LPPANOSE; +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 */ @@ -987,146 +979,27 @@ typedef struct tagEXTLOGFONTW { PANOSE elfPanose; } 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 +typedef EXTLOGFONTW EXTLOGFONT; +typedef PEXTLOGFONTW PEXTLOGFONT; +typedef NPEXTLOGFONTW NPEXTLOGFONT; +typedef LPEXTLOGFONTW LPEXTLOGFONT; +#else +typedef EXTLOGFONTA EXTLOGFONT; +typedef PEXTLOGFONTA PEXTLOGFONT; +typedef NPEXTLOGFONTA NPEXTLOGFONT; +typedef LPEXTLOGFONTA LPEXTLOGFONT; #endif // UNICODE #define ELF_VERSION 0 #define ELF_CULTURE_LATIN 0 -/* the complete set of font attribute distances */ - -/* Allowed values for FMATCH::wType */ -#define FMATCH_EXACT 0 -#define FMATCH_NEAR 1 -#define FMATCH_FAR 2 -#define FMATCH_ERROR 3 - -#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 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 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 -#else -#define FMATCH FMATCHA -#define LPFMATCH LPFMATCHA -#endif // UNICODE - -/* 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 0x002 #define TRUETYPE_FONTTYPE 0x004 -#define RGB(r,g,b) ((COLORREF)(((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) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i))) @@ -1145,6 +1018,12 @@ typedef struct tagFMCONTROLS { #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 @@ -1201,6 +1080,8 @@ typedef struct tagFMCONTROLS { #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 /* ----- */ @@ -1222,7 +1103,13 @@ typedef struct tagFMCONTROLS { #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 @@ -1409,12 +1296,14 @@ typedef struct tagFMCONTROLS { #define FLOODFILLBORDER 0 #define FLOODFILLSURFACE 1 -/* DEVMODE dmDisplayMode flags */ +/* size of a device name string */ +#define CCHDEVICENAME 32 -#define DM_GRAYSCALE 1 +/* size of a form name string */ +#define CCHFORMNAME 32 typedef struct _devicemodeA { - BYTE dmDeviceName[32]; + BYTE dmDeviceName[CCHDEVICENAME]; WORD dmSpecVersion; WORD dmDriverVersion; WORD dmSize; @@ -1433,14 +1322,16 @@ typedef struct _devicemodeA { short dmYResolution; short dmTTOption; short dmCollate; - BYTE dmFormName[32]; - USHORT dmBitsPerPel; + BYTE dmFormName[CCHFORMNAME]; + WORD dmUnusedPadding; + DWORD dmBitsPerPel; DWORD dmPelsWidth; DWORD dmPelsHeight; - DWORD dmDisplayMode; + DWORD dmDisplayFlags; + DWORD dmDisplayFrequency; } DEVMODEA, *PDEVMODEA, *NPDEVMODEA, *LPDEVMODEA; typedef struct _devicemodeW { - WCHAR dmDeviceName[32]; + WCHAR dmDeviceName[CCHDEVICENAME]; WORD dmSpecVersion; WORD dmDriverVersion; WORD dmSize; @@ -1459,24 +1350,145 @@ typedef struct _devicemodeW { short dmYResolution; short dmTTOption; short dmCollate; - WCHAR dmFormName[32]; - USHORT dmBitsPerPel; + WCHAR dmFormName[CCHFORMNAME]; + WORD dmUnusedPadding; + DWORD dmBitsPerPel; DWORD dmPelsWidth; DWORD dmPelsHeight; - DWORD dmDisplayMode; + DWORD dmDisplayFlags; + DWORD dmDisplayFrequency; } 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 +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 @@ -1516,13 +1528,13 @@ typedef struct _OUTLINETEXTMETRICA { PANOSE otmPanoseNumber; UINT otmfsSelection; UINT otmfsType; - UINT otmsCharSlopeRise; - UINT otmsCharSlopeRun; - UINT otmItalicAngle; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; UINT otmEMSquare; - UINT otmAscent; + int otmAscent; int otmDescent; - int otmLineGap; + UINT otmLineGap; UINT otmsCapEmHeight; UINT otmsXHeight; RECT otmrcFontBox; @@ -1537,7 +1549,7 @@ typedef struct _OUTLINETEXTMETRICA { UINT otmsStrikeoutSize; int otmsStrikeoutPosition; int otmsUnderscoreSize; - UINT otmsUnderscorePosition; + int otmsUnderscorePosition; PSTR otmpFamilyName; PSTR otmpFaceName; PSTR otmpStyleName; @@ -1550,13 +1562,13 @@ typedef struct _OUTLINETEXTMETRICW { PANOSE otmPanoseNumber; UINT otmfsSelection; UINT otmfsType; - UINT otmsCharSlopeRise; - UINT otmsCharSlopeRun; - UINT otmItalicAngle; + int otmsCharSlopeRise; + int otmsCharSlopeRun; + int otmItalicAngle; UINT otmEMSquare; - UINT otmAscent; + int otmAscent; int otmDescent; - int otmLineGap; + UINT otmLineGap; UINT otmsCapEmHeight; UINT otmsXHeight; RECT otmrcFontBox; @@ -1571,22 +1583,22 @@ typedef struct _OUTLINETEXTMETRICW { UINT otmsStrikeoutSize; int otmsStrikeoutPosition; int otmsUnderscoreSize; - UINT otmsUnderscorePosition; + int 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 +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 */ @@ -1594,28 +1606,34 @@ typedef struct _OUTLINETEXTMETRICW { typedef struct tagPOLYTEXTA { - int x; - int y; - UINT n; - BYTE *lpwstr; - UINT uiFlags; - RECT rcl; - int *pdx; -} POLYTEXTA; + 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; - WCHAR *lpwstr; - UINT uiFlags; - RECT rcl; - int *pdx; -} POLYTEXTW; -#ifdef UNICODE -#define POLYTEXT POLYTEXTW -#else -#define POLYTEXT POLYTEXTA + 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 { @@ -1643,7 +1661,7 @@ typedef struct _GLYPHMETRICS { // GetGlyphOutline constants -#define GGO_NONE 0 +#define GGO_METRICS 0 #define GGO_BITMAP 1 #define GGO_NATIVE 2 @@ -1686,27 +1704,28 @@ typedef struct _RASTERIZER_STATUS { #ifdef STRICT #if !defined(NOTEXTMETRIC) -typedef int (CALLBACK* FONTENUMPROC)(CONST LOGFONT * , CONST TEXTMETRIC *, DWORD, LPARAM); +typedef int (CALLBACK* OLDFONTENUMPROC)(CONST LOGFONT *, CONST TEXTMETRIC *, DWORD, LPARAM); #else -typedef int (CALLBACK* FONTENUMPROC)(CONST LOGFONT * , CONST VOID *, DWORD, LPARAM); +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 FONTENUMPROC; +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 +#define AddFontResource AddFontResourceW #else -#define AddFontResource AddFontResourceA +#define AddFontResource AddFontResourceA #endif // !UNICODE -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); @@ -1714,38 +1733,37 @@ 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); +HMETAFILE WINAPI CopyMetaFileA(HMETAFILE, LPCSTR); +HMETAFILE WINAPI CopyMetaFileW(HMETAFILE, LPCWSTR); #ifdef UNICODE -#define CopyMetaFile CopyMetaFileW +#define CopyMetaFile CopyMetaFileW #else -#define CopyMetaFile CopyMetaFileA +#define CopyMetaFile CopyMetaFileA #endif // !UNICODE HBITMAP WINAPI CreateBitmap(int, int, UINT, UINT, CONST VOID *); -HBITMAP WINAPI CreateBitmapIndirect(LPBITMAP); -HBRUSH WINAPI CreateBrushIndirect(LPLOGBRUSH); +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 FAR*); -HDC WINAPI CreateDCW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW FAR *); +HDC WINAPI CreateDCA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA *); +HDC WINAPI CreateDCW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW *); #ifdef UNICODE -#define CreateDC CreateDCW +#define CreateDC CreateDCW #else -#define CreateDC CreateDCA +#define CreateDC CreateDCA #endif // !UNICODE -HBITMAP WINAPI CreateDIBitmap(HDC, LPBITMAPINFOHEADER, DWORD, CONST BYTE *, LPBITMAPINFO, UINT); -HBITMAP WINAPI CreateDIBSection(HDC, LPBITMAPINFO, DWORD, DWORD, LPBYTE *); +HBITMAP WINAPI CreateDIBitmap(HDC, CONST BITMAPINFOHEADER *, DWORD, CONST VOID *, CONST BITMAPINFO *, UINT); HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL, UINT); -HBRUSH WINAPI CreateDIBPatternBrushPt(LPVOID, DWORD); +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 +#define CreateFontIndirect CreateFontIndirectW #else -#define CreateFontIndirect CreateFontIndirectA +#define CreateFontIndirect CreateFontIndirectA #endif // !UNICODE HFONT WINAPI CreateFontA(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, @@ -1754,62 +1772,116 @@ HFONT WINAPI CreateFontW(int, int, int DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCWSTR); #ifdef UNICODE -#define CreateFont CreateFontW +#define CreateFont CreateFontW #else -#define CreateFont CreateFontA +#define CreateFont CreateFontA #endif // !UNICODE HBRUSH WINAPI CreateHatchBrush(int, COLORREF); -HDC WINAPI CreateICA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA FAR*); -HDC WINAPI CreateICW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW FAR* ); +HDC WINAPI CreateICA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA *); +HDC WINAPI CreateICW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW *); #ifdef UNICODE -#define CreateIC CreateICW +#define CreateIC CreateICW #else -#define CreateIC CreateICA +#define CreateIC CreateICA #endif // !UNICODE HDC WINAPI CreateMetaFileA(LPCSTR); HDC WINAPI CreateMetaFileW(LPCWSTR); #ifdef UNICODE -#define CreateMetaFile CreateMetaFileW +#define CreateMetaFile CreateMetaFileW #else -#define CreateMetaFile CreateMetaFileA +#define CreateMetaFile CreateMetaFileA #endif // !UNICODE HPALETTE WINAPI CreatePalette(CONST LOGPALETTE *); HPEN WINAPI CreatePen(int, int, COLORREF); -HPEN WINAPI CreatePenIndirect(LPLOGPEN); +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, LPSTR); -BOOL WINAPI CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPWSTR); +BOOL WINAPI CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); +BOOL WINAPI CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); #ifdef UNICODE -#define CreateScalableFontResource CreateScalableFontResourceW +#define CreateScalableFontResource CreateScalableFontResourceW #else -#define CreateScalableFontResource CreateScalableFontResourceA +#define CreateScalableFontResource CreateScalableFontResourceA #endif // !UNICODE HBRUSH WINAPI CreateSolidBrush(COLORREF); BOOL WINAPI DeleteDC(HDC); BOOL WINAPI DeleteMetaFile(HMETAFILE); BOOL WINAPI DeleteObject(HGDIOBJ); -int WINAPI DeviceCapabilitiesEx(LPSTR, LPSTR, LPSTR, int, LPSTR, LPDEVMODE ); + +/* 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 +#define EnumFontFamilies EnumFontFamiliesW #else -#define EnumFontFamilies EnumFontFamiliesA +#define EnumFontFamilies EnumFontFamiliesA #endif // !UNICODE int WINAPI EnumFontsA(HDC, LPCSTR, FONTENUMPROC, LPARAM); int WINAPI EnumFontsW(HDC, LPCWSTR, FONTENUMPROC, LPARAM); #ifdef UNICODE -#define EnumFonts EnumFontsW +#define EnumFonts EnumFontsW #else -#define EnumFonts EnumFontsA +#define EnumFonts EnumFontsA #endif // !UNICODE #ifdef STRICT @@ -1823,7 +1895,7 @@ int WINAPI Escape(HDC, int, int, LPCSTR 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); +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); @@ -1841,31 +1913,38 @@ BOOL WINAPI GetBrushOrgEx(HDC, LPPOINT) BOOL WINAPI GetCharWidthA(HDC, UINT, UINT, LPINT); BOOL WINAPI GetCharWidthW(HDC, UINT, UINT, LPINT); #ifdef UNICODE -#define GetCharWidth GetCharWidthW +#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 GetCharWidth GetCharWidthA +#define GetCharWidth32 GetCharWidth32A #endif // !UNICODE BOOL APIENTRY GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); BOOL APIENTRY GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); #ifdef UNICODE -#define GetCharWidthFloat GetCharWidthFloatW +#define GetCharWidthFloat GetCharWidthFloatW #else -#define GetCharWidthFloat GetCharWidthFloatA +#define GetCharWidthFloat GetCharWidthFloatA #endif // !UNICODE BOOL APIENTRY GetCharABCWidthsA(HDC, UINT, UINT, LPABC); BOOL APIENTRY GetCharABCWidthsW(HDC, UINT, UINT, LPABC); #ifdef UNICODE -#define GetCharABCWidths GetCharABCWidthsW +#define GetCharABCWidths GetCharABCWidthsW #else -#define GetCharABCWidths GetCharABCWidthsA +#define GetCharABCWidths GetCharABCWidthsA #endif // !UNICODE BOOL APIENTRY GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); BOOL APIENTRY GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); #ifdef UNICODE -#define GetCharABCWidthsFloat GetCharABCWidthsFloatW +#define GetCharABCWidthsFloat GetCharABCWidthsFloatW #else -#define GetCharABCWidthsFloat GetCharABCWidthsFloatA +#define GetCharABCWidthsFloat GetCharABCWidthsFloatA #endif // !UNICODE int WINAPI GetClipBox(HDC, LPRECT); @@ -1876,15 +1955,22 @@ BOOL WINAPI GetCurrentPositionEx(HDC, L 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, CONST MAT2 FAR*); +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 +#define GetMetaFile GetMetaFileW #else -#define GetMetaFile GetMetaFileA +#define GetMetaFile GetMetaFileA #endif // !UNICODE COLORREF WINAPI GetNearestColor(HDC, COLORREF); UINT WINAPI GetNearestPaletteIndex(HPALETTE, COLORREF); @@ -1895,9 +1981,9 @@ DWORD WINAPI GetObjectType(HGDIOBJ h); UINT APIENTRY GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); UINT APIENTRY GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); #ifdef UNICODE -#define GetOutlineTextMetrics GetOutlineTextMetricsW +#define GetOutlineTextMetrics GetOutlineTextMetricsW #else -#define GetOutlineTextMetrics GetOutlineTextMetricsA +#define GetOutlineTextMetrics GetOutlineTextMetricsA #endif // !UNICODE #endif /* NOTEXTMETRIC */ @@ -1929,9 +2015,27 @@ BOOL APIENTRY GetTextExtentPointW( LPSIZE ); #ifdef UNICODE -#define GetTextExtentPoint GetTextExtentPointW +#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 GetTextExtentPoint GetTextExtentPointA +#define GetTextExtentPoint32 GetTextExtentPoint32A #endif // !UNICODE BOOL APIENTRY GetTextExtentExPointA( @@ -1953,9 +2057,9 @@ BOOL APIENTRY GetTextExtentExPointW( LPSIZE ); #ifdef UNICODE -#define GetTextExtentExPoint GetTextExtentExPointW +#define GetTextExtentExPoint GetTextExtentExPointW #else -#define GetTextExtentExPoint GetTextExtentExPointA +#define GetTextExtentExPoint GetTextExtentExPointA #endif // !UNICODE BOOL WINAPI GetViewportExtEx(HDC, LPSIZE); @@ -1969,7 +2073,7 @@ BOOL WINAPI LineDDA(int, int, int, int, 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, +BOOL WINAPI PlgBlt(HDC, CONST POINT *, HDC, int, int, int, int, HBITMAP, int, int); int WINAPI OffsetClipRgn(HDC, int, int); @@ -1978,21 +2082,27 @@ BOOL WINAPI PatBlt(HDC, int, int, int, i 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 *, LPINT, int); +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 RemoveFontModule(HMODULE); -BOOL WINAPI RemoveFontResourceA(LPSTR); -BOOL WINAPI RemoveFontResourceW(LPWSTR); +BOOL WINAPI RemoveFontResourceA(LPCSTR); +BOOL WINAPI RemoveFontResourceW(LPCWSTR); #ifdef UNICODE -#define RemoveFontResource RemoveFontResourceW +#define RemoveFontResource RemoveFontResourceW #else -#define RemoveFontResource RemoveFontResourceA +#define RemoveFontResource RemoveFontResourceA #endif // !UNICODE BOOL WINAPI RoundRect(HDC, int, int, int, int, int, int); BOOL WINAPI ResizePalette(HPALETTE, UINT); @@ -2008,11 +2118,13 @@ 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 *, LPBITMAPINFO, UINT); -int WINAPI SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, LPVOID, LPBITMAPINFO, 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, LPBYTE); +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); @@ -2020,7 +2132,7 @@ 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); + VOID *, CONST BITMAPINFO *, UINT, DWORD); int WINAPI SetROP2(HDC, int); int WINAPI SetStretchBltMode(HDC, int); UINT WINAPI SetSystemPaletteUse(HDC, UINT); @@ -2036,50 +2148,51 @@ BOOL WINAPI PlayMetaFileRecord(HDC, LPH typedef int (CALLBACK* MFENUMPROC)(HDC, HANDLETABLE FAR*, METARECORD FAR*, int, LPARAM); BOOL WINAPI EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); -typedef int (CALLBACK* ENHMFENUMPROC)(HDC, HANDLETABLE FAR*, ENHMETARECORD FAR*, int, LPARAM); +typedef int (CALLBACK* ENHMFENUMPROC)(HDC, HANDLETABLE FAR*, CONST ENHMETARECORD *, int, LPARAM); // Enhanced Metafile Function Declarations HENHMETAFILE WINAPI CloseEnhMetaFile(HDC); -HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE, LPSTR); -HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE, LPWSTR); +HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); +HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); #ifdef UNICODE -#define CopyEnhMetaFile CopyEnhMetaFileW +#define CopyEnhMetaFile CopyEnhMetaFileW #else -#define CopyEnhMetaFile CopyEnhMetaFileA +#define CopyEnhMetaFile CopyEnhMetaFileA #endif // !UNICODE -HDC WINAPI CreateEnhMetaFileA(HDC, LPSTR, LPRECT, LPSTR); -HDC WINAPI CreateEnhMetaFileW(HDC, LPWSTR, LPRECT, LPWSTR); +HDC WINAPI CreateEnhMetaFileA(HDC, LPCSTR, CONST RECT *, LPCSTR); +HDC WINAPI CreateEnhMetaFileW(HDC, LPCWSTR, CONST RECT *, LPCWSTR); #ifdef UNICODE -#define CreateEnhMetaFile CreateEnhMetaFileW +#define CreateEnhMetaFile CreateEnhMetaFileW #else -#define CreateEnhMetaFile CreateEnhMetaFileA +#define CreateEnhMetaFile CreateEnhMetaFileA #endif // !UNICODE BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE); -BOOL WINAPI EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, LPVOID, LPRECT); -HENHMETAFILE WINAPI GetEnhMetaFileA(LPSTR); -HENHMETAFILE WINAPI GetEnhMetaFileW(LPWSTR); +BOOL WINAPI EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, +LPVOID, CONST RECT *); +HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR); +HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR); #ifdef UNICODE -#define GetEnhMetaFile GetEnhMetaFileW +#define GetEnhMetaFile GetEnhMetaFileW #else -#define GetEnhMetaFile GetEnhMetaFileA +#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 +#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionW #else -#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionA +#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 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 */ @@ -2088,27 +2201,27 @@ BOOL WINAPI GdiComment(HDC, UINT, LPBYT 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 WINAPI AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); -BOOL WINAPI PolyPolyline(HDC, LPPOINT, LPDWORD, DWORD); +BOOL WINAPI PolyPolyline(HDC, CONST POINT *, CONST DWORD *, DWORD); BOOL WINAPI GetWorldTransform(HDC, LPXFORM); -BOOL WINAPI SetWorldTransform(HDC, LPXFORM); -BOOL WINAPI ModifyWorldTransform(HDC, LPXFORM , DWORD); -BOOL WINAPI CombineTransform(LPXFORM, LPXFORM, 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_EQUAL_ENERGY 0 +#define ILLUMINANT_DEVICE_DEFAULT 0 #define ILLUMINANT_A 1 #define ILLUMINANT_B 2 #define ILLUMINANT_C 3 @@ -2119,7 +2232,7 @@ BOOL WINAPI CombineTransform(LPXFORM, LP #define ILLUMINANT_F2 8 #define ILLUMINANT_MAX_INDEX ILLUMINANT_F2 -#define ILLUMINANT_TURNGSTEN ILLUMINANT_A +#define ILLUMINANT_TUNGSTEN ILLUMINANT_A #define ILLUMINANT_DAYLIGHT ILLUMINANT_C #define ILLUMINANT_FLUORESCENT ILLUMINANT_F2 #define ILLUMINANT_NTSC ILLUMINANT_C @@ -2153,7 +2266,7 @@ typedef struct tagCOLORADJUSTMENT { SHORT caRedGreenTint; } COLORADJUSTMENT, *PCOLORADJUSTMENT, FAR *LPCOLORADJUSTMENT; -BOOL WINAPI SetColorAdjustment(HDC, LPCOLORADJUSTMENT); +BOOL WINAPI SetColorAdjustment(HDC, CONST COLORADJUSTMENT *); BOOL WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT); HPALETTE WINAPI CreateHalftonePalette(HDC); @@ -2165,28 +2278,28 @@ typedef FARPROC ABORTPROC; typedef struct _DOCINFOA { int cbSize; - LPSTR lpszDocName; - LPSTR lpszOutput; + LPCSTR lpszDocName; + LPCSTR lpszOutput; } DOCINFOA, *LPDOCINFOA; typedef struct _DOCINFOW { int cbSize; - LPWSTR lpszDocName; - LPWSTR lpszOutput; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; } DOCINFOW, *LPDOCINFOW; #ifdef UNICODE -#define DOCINFO DOCINFOW -#define LPDOCINFO LPDOCINFOW +typedef DOCINFOW DOCINFO; +typedef LPDOCINFOW LPDOCINFO; #else -#define DOCINFO DOCINFOA -#define LPDOCINFO LPDOCINFOA +typedef DOCINFOA DOCINFO; +typedef LPDOCINFOA LPDOCINFO; #endif // UNICODE -int WINAPI StartDocA(HDC, LPDOCINFOA); -int WINAPI StartDocW(HDC, LPDOCINFOW); +int WINAPI StartDocA(HDC, CONST DOCINFOA *); +int WINAPI StartDocW(HDC, CONST DOCINFOW *); #ifdef UNICODE -#define StartDoc StartDocW +#define StartDoc StartDocW #else -#define StartDoc StartDocA +#define StartDoc StartDocA #endif // !UNICODE int WINAPI EndDoc(HDC); int WINAPI StartPage(HDC); @@ -2194,7 +2307,6 @@ 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); @@ -2204,45 +2316,45 @@ 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 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, LPLOGBRUSH, DWORD, LPDWORD); +HPEN WINAPI ExtCreatePen(DWORD, DWORD, CONST LOGBRUSH *, DWORD, CONST DWORD *); BOOL WINAPI GetMiterLimit(HDC, PFLOAT); int WINAPI GetArcDirection(HDC); int WINAPI GetObjectA(HGDIOBJ, int, LPVOID); int WINAPI GetObjectW(HGDIOBJ, int, LPVOID); #ifdef UNICODE -#define GetObject GetObjectW +#define GetObject GetObjectW #else -#define GetObject GetObjectA +#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 +#define TextOut TextOutW #else -#define TextOut TextOutA +#define TextOut TextOutA #endif // !UNICODE -BOOL WINAPI ExtTextOutA(HDC, int, int, UINT, CONST RECT *, LPCSTR, UINT, LPINT); -BOOL WINAPI ExtTextOutW(HDC, int, int, UINT, CONST RECT *, LPCWSTR, UINT, LPINT); +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 +#define ExtTextOut ExtTextOutW #else -#define ExtTextOut ExtTextOutA +#define ExtTextOut ExtTextOutA #endif // !UNICODE -BOOL WINAPI PolyTextOutA(HDC, POLYTEXTA *, int); -BOOL WINAPI PolyTextOutW(HDC, POLYTEXTW *, int); +BOOL WINAPI PolyTextOutA(HDC, CONST POLYTEXTA *, int); +BOOL WINAPI PolyTextOutW(HDC, CONST POLYTEXTW *, int); #ifdef UNICODE -#define PolyTextOut PolyTextOutW +#define PolyTextOut PolyTextOutW #else -#define PolyTextOut PolyTextOutA +#define PolyTextOut PolyTextOutA #endif // !UNICODE HRGN WINAPI CreatePolygonRgn(CONST POINT *, int, int); @@ -2251,9 +2363,9 @@ BOOL WINAPI LPtoDP(HDC, LPPOINT, int); BOOL WINAPI Polygon(HDC, CONST POINT *, 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 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); @@ -2270,41 +2382,28 @@ BOOL WINAPI SetBrushOrgEx(HDC, int, int int WINAPI GetTextFaceA(HDC, int, LPSTR); int WINAPI GetTextFaceW(HDC, int, LPWSTR); #ifdef UNICODE -#define GetTextFace GetTextFaceW +#define GetTextFace GetTextFaceW #else -#define GetTextFace GetTextFaceA +#define GetTextFace GetTextFaceA #endif // !UNICODE #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 - -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); +DWORD WINAPI GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); +DWORD WINAPI GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); +#ifdef UNICODE +#define GetKerningPairs GetKerningPairsW +#else +#define GetKerningPairs GetKerningPairsA +#endif // !UNICODE -DWORD WINAPI GetDCOrg(HDC); +BOOL WINAPI GetDCOrgEx(HDC,LPPOINT); BOOL WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT); BOOL WINAPI UnrealizeObject(HGDIOBJ); @@ -2312,6 +2411,701 @@ 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