--- mstools/h/wingdi.h 2018/08/09 18:20:31 1.1.1.2 +++ mstools/h/wingdi.h 2018/08/09 18:21:10 1.1.1.3 @@ -16,6 +16,10 @@ Abstract: #ifndef _WINGDI_ #define _WINGDI_ +#ifdef __cplusplus +extern "C" { +#endif + #ifndef NOGDI #ifndef NORASTEROPS @@ -79,8 +83,8 @@ Abstract: #define BLACKONWHITE 1 #define WHITEONBLACK 2 #define COLORONCOLOR 3 -#define HALFTONE 4 -#define MAXSTRETCHBLTMODE 4 +#define HALFTONE 4 +#define MAXSTRETCHBLTMODE 4 /* PolyFill() Modes */ #define ALTERNATE 1 @@ -100,6 +104,14 @@ Abstract: #define TA_BASELINE 24 #define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP) +#define VTA_BASELINE TA_BASELINE +#define VTA_LEFT TA_BOTTOM +#define VTA_RIGHT TA_TOP +#define VTA_CENTER TA_CENTER +#define VTA_BOTTOM TA_RIGHT +#define VTA_TOP TA_LEFT + + #define ETO_GRAYED 1 #define ETO_OPAQUE 2 #define ETO_CLIPPED 4 @@ -373,7 +385,9 @@ typedef struct tagBITMAPINFOHEADER{ #define BI_RGB 0L #define BI_RLE8 1L #define BI_RLE4 2L -#define BI_TOPDOWN 4L +#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; @@ -683,7 +697,7 @@ typedef struct tagLOGFONTA BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; - BYTE lfFaceName[LF_FACESIZE]; + char lfFaceName[LF_FACESIZE]; } LOGFONTA, *PLOGFONTA, NEAR *NPLOGFONTA, FAR *LPLOGFONTA; typedef struct tagLOGFONTW { @@ -952,19 +966,25 @@ typedef struct tagEXTLOGFONTA { LOGFONTA elfLogFont; BYTE elfFullName[LF_FULLFACESIZE]; BYTE elfStyle[LF_FACESIZE]; - UINT elfVersion; /* 0 for the first release of NT */ - UINT elfCulture; /* 0 for Latin */ - PANOSE elfPanose; + DWORD elfVersion; /* 0 for the first release of NT */ + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; /* 0 for Latin */ + PANOSE elfPanose; } EXTLOGFONTA, *PEXTLOGFONTA, NEAR *NPEXTLOGFONTA, FAR *LPEXTLOGFONTA; typedef struct tagEXTLOGFONTW { LOGFONTW elfLogFont; WCHAR elfFullName[LF_FULLFACESIZE]; WCHAR elfStyle[LF_FACESIZE]; - UINT elfVersion; /* 0 for the first release of NT */ - UINT elfCulture; /* 0 for Latin */ - PANOSE elfPanose; + DWORD elfVersion; /* 0 for the first release of NT */ + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; /* 0 for Latin */ + PANOSE elfPanose; } EXTLOGFONTW, *PEXTLOGFONTW, NEAR *NPEXTLOGFONTW, FAR *LPEXTLOGFONTW; #ifdef UNICODE #define EXTLOGFONT EXTLOGFONTW @@ -1328,22 +1348,23 @@ typedef struct tagFMCONTROLS { #define CP_REGION 2 /* */ /* Text Capabilities */ -#define TC_OP_CHARACTER 0x0001 /* Can do OutputPrecision CHARACTER */ -#define TC_OP_STROKE 0x0002 /* Can do OutputPrecision STROKE */ -#define TC_CP_STROKE 0x0004 /* Can do ClipPrecision STROKE */ -#define TC_CR_90 0x0008 /* Can do CharRotAbility 90 */ -#define TC_CR_ANY 0x0010 /* Can do CharRotAbility ANY */ -#define TC_SF_X_YINDEP 0x0020 /* Can do ScaleFreedom X_YINDEPENDENT */ -#define TC_SA_DOUBLE 0x0040 /* Can do ScaleAbility DOUBLE */ -#define TC_SA_INTEGER 0x0080 /* Can do ScaleAbility INTEGER */ -#define TC_SA_CONTIN 0x0100 /* Can do ScaleAbility CONTINUOUS */ -#define TC_EA_DOUBLE 0x0200 /* Can do EmboldenAbility DOUBLE */ -#define TC_IA_ABLE 0x0400 /* Can do ItalisizeAbility ABLE */ -#define TC_UA_ABLE 0x0800 /* Can do UnderlineAbility ABLE */ -#define TC_SO_ABLE 0x1000 /* Can do StrikeOutAbility ABLE */ -#define TC_RA_ABLE 0x2000 /* Can do RasterFontAble ABLE */ -#define TC_VA_ABLE 0x4000 /* Can do VectorFontAble ABLE */ -#define TC_RESERVED 0x8000 +#define TC_OP_CHARACTER 0x00000001 /* Can do OutputPrecision CHARACTER */ +#define TC_OP_STROKE 0x00000002 /* Can do OutputPrecision STROKE */ +#define TC_CP_STROKE 0x00000004 /* Can do ClipPrecision STROKE */ +#define TC_CR_90 0x00000008 /* Can do CharRotAbility 90 */ +#define TC_CR_ANY 0x00000010 /* Can do CharRotAbility ANY */ +#define TC_SF_X_YINDEP 0x00000020 /* Can do ScaleFreedom X_YINDEPENDENT */ +#define TC_SA_DOUBLE 0x00000040 /* Can do ScaleAbility DOUBLE */ +#define TC_SA_INTEGER 0x00000080 /* Can do ScaleAbility INTEGER */ +#define TC_SA_CONTIN 0x00000100 /* Can do ScaleAbility CONTINUOUS */ +#define TC_EA_DOUBLE 0x00000200 /* Can do EmboldenAbility DOUBLE */ +#define TC_IA_ABLE 0x00000400 /* Can do ItalisizeAbility ABLE */ +#define TC_UA_ABLE 0x00000800 /* Can do UnderlineAbility ABLE */ +#define TC_SO_ABLE 0x00001000 /* Can do StrikeOutAbility ABLE */ +#define TC_RA_ABLE 0x00002000 /* Can do RasterFontAble ABLE */ +#define TC_VA_ABLE 0x00004000 /* Can do VectorFontAble ABLE */ +#define TC_RESERVED 0x00008000 +#define TC_SCROLLBLT 0x00010000 /* do text scroll with blt */ #endif /* NOGDICAPMASKS */ @@ -1381,6 +1402,7 @@ typedef struct tagFMCONTROLS { #define SYSPAL_NOSTATIC 2 /* constants for CreateDIBitmap */ +#define CBM_CREATEDIB 0x02L /* create DIB bitmap */ #define CBM_INIT 0x04L /* initialize bitmap */ /* ExtFloodFill style flags */ @@ -1408,6 +1430,8 @@ typedef struct _devicemodeA { short dmPrintQuality; short dmColor; short dmDuplex; + short dmYResolution; + short dmTTOption; short dmCollate; BYTE dmFormName[32]; USHORT dmBitsPerPel; @@ -1432,6 +1456,8 @@ typedef struct _devicemodeW { short dmPrintQuality; short dmColor; short dmDuplex; + short dmYResolution; + short dmTTOption; short dmCollate; WCHAR dmFormName[32]; USHORT dmBitsPerPel; @@ -1497,8 +1523,8 @@ typedef struct _OUTLINETEXTMETRICA { UINT otmAscent; int otmDescent; int otmLineGap; - UINT otmCapEmHeight; - UINT otmXHeight; + UINT otmsCapEmHeight; + UINT otmsXHeight; RECT otmrcFontBox; int otmMacAscent; int otmMacDescent; @@ -1531,8 +1557,8 @@ typedef struct _OUTLINETEXTMETRICW { UINT otmAscent; int otmDescent; int otmLineGap; - UINT otmCapEmHeight; - UINT otmXHeight; + UINT otmsCapEmHeight; + UINT otmsXHeight; RECT otmrcFontBox; int otmMacAscent; int otmMacDescent; @@ -1566,6 +1592,32 @@ typedef struct _OUTLINETEXTMETRICW { #endif /* NOTEXTMETRIC */ +typedef struct tagPOLYTEXTA +{ + int x; + int y; + UINT n; + BYTE *lpwstr; + UINT uiFlags; + RECT rcl; + int *pdx; +} POLYTEXTA; +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 +#endif // UNICODE + typedef struct _FIXED { WORD fract; short value; @@ -1633,8 +1685,12 @@ typedef struct _RASTERIZER_STATUS { #define TT_ENABLED 0x0002 #ifdef STRICT -typedef int (CALLBACK* FONTENUMPROC)(LPLOGFONT, LPTEXTMETRIC, DWORD, LPARAM); -typedef VOID (CALLBACK* GOBJENUMPROC)(LPVOID, LPARAM); +#if !defined(NOTEXTMETRIC) +typedef int (CALLBACK* FONTENUMPROC)(CONST LOGFONT * , CONST TEXTMETRIC *, DWORD, LPARAM); +#else +typedef int (CALLBACK* FONTENUMPROC)(CONST LOGFONT * , CONST VOID *, DWORD, LPARAM); +#endif +typedef int (CALLBACK* GOBJENUMPROC)(LPVOID, LPARAM); typedef VOID (CALLBACK* LINEDDAPROC)(int, int, LPARAM); #else typedef FARPROC FONTENUMPROC; @@ -1671,15 +1727,21 @@ HBRUSH WINAPI CreateBrushIndirect(LPLOG HBITMAP WINAPI CreateCompatibleBitmap(HDC, int, int); HBITMAP WINAPI CreateDiscardableBitmap(HDC, int, int); HDC WINAPI CreateCompatibleDC(HDC); -HDC WINAPI CreateDC(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODE *); +HDC WINAPI CreateDCA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA FAR*); +HDC WINAPI CreateDCW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW FAR *); +#ifdef UNICODE +#define CreateDC CreateDCW +#else +#define CreateDC CreateDCA +#endif // !UNICODE 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); +HFONT WINAPI CreateFontIndirectA(CONST LOGFONTA *); +HFONT WINAPI CreateFontIndirectW(CONST LOGFONTW *); #ifdef UNICODE #define CreateFontIndirect CreateFontIndirectW #else @@ -1698,7 +1760,13 @@ HFONT WINAPI CreateFontW(int, int, int #endif // !UNICODE HBRUSH WINAPI CreateHatchBrush(int, COLORREF); -HDC WINAPI CreateIC(LPCSTR, LPCSTR , LPCSTR , LPDEVMODE ); +HDC WINAPI CreateICA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA FAR*); +HDC WINAPI CreateICW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW FAR* ); +#ifdef UNICODE +#define CreateIC CreateICW +#else +#define CreateIC CreateICA +#endif // !UNICODE HDC WINAPI CreateMetaFileA(LPCSTR); HDC WINAPI CreateMetaFileW(LPCWSTR); #ifdef UNICODE @@ -1706,7 +1774,7 @@ HDC WINAPI CreateMetaFileW(LPCWSTR); #else #define CreateMetaFile CreateMetaFileA #endif // !UNICODE -HPALETTE WINAPI CreatePalette(LPLOGPALETTE); +HPALETTE WINAPI CreatePalette(CONST LOGPALETTE *); HPEN WINAPI CreatePen(int, int, COLORREF); HPEN WINAPI CreatePenIndirect(LPLOGPEN); HRGN WINAPI CreatePolyPolygonRgn(CONST POINT *, CONST INT *, int, int); @@ -1808,7 +1876,7 @@ 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, LPMAT2); +DWORD WINAPI GetGlyphOutline(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST MAT2 FAR*); int WINAPI GetMapMode(HDC); UINT WINAPI GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID); HMETAFILE WINAPI GetMetaFileA(LPCSTR); @@ -1824,8 +1892,8 @@ DWORD WINAPI GetObjectType(HGDIOBJ h); #ifndef NOTEXTMETRIC -DWORD APIENTRY GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); -DWORD APIENTRY GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); +UINT APIENTRY GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); +UINT APIENTRY GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); #ifdef UNICODE #define GetOutlineTextMetrics GetOutlineTextMetricsW #else @@ -1910,10 +1978,10 @@ 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, LPPOINT, LPINT, int); +BOOL WINAPI PolyPolygon(HDC, CONST POINT *, LPINT, int); BOOL WINAPI PtInRegion(HRGN, int, int); BOOL WINAPI PtVisible(HDC, int, int); -BOOL WINAPI RectInRegion(HRGN, LPRECT); +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); @@ -1937,9 +2005,9 @@ 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 *); +LONG WINAPI SetBitmapBits(HBITMAP, DWORD, CONST VOID *); -UINT WINAPI SetBoundsRect(HDC, LPRECT, UINT); +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); DWORD WINAPI SetMapperFlags(HDC, DWORD); @@ -1968,6 +2036,8 @@ 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); + // Enhanced Metafile Function Declarations HENHMETAFILE WINAPI CloseEnhMetaFile(HDC); @@ -1986,7 +2056,7 @@ HDC WINAPI CreateEnhMetaFileW(HDC, LPW #define CreateEnhMetaFile CreateEnhMetaFileA #endif // !UNICODE BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE); -BOOL WINAPI EnumEnhMetaFile(HDC, HENHMETAFILE, PROC, LPVOID, LPRECT); +BOOL WINAPI EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, LPVOID, LPRECT); HENHMETAFILE WINAPI GetEnhMetaFileA(LPSTR); HENHMETAFILE WINAPI GetEnhMetaFileW(LPWSTR); #ifdef UNICODE @@ -2033,21 +2103,91 @@ BOOL WINAPI SetWorldTransform(HDC, LPXFO BOOL WINAPI ModifyWorldTransform(HDC, LPXFORM , DWORD); BOOL WINAPI CombineTransform(LPXFORM, LPXFORM, LPXFORM); +/* Flags value for COLORADJUSTMENT */ +#define CA_NEGATIVE 0x0001 +#define CA_LOG_FILTER 0x0002 + +/* IlluminantIndex values */ +#define ILLUMINANT_EQUAL_ENERGY 0 +#define ILLUMINANT_A 1 +#define ILLUMINANT_B 2 +#define ILLUMINANT_C 3 +#define ILLUMINANT_D50 4 +#define ILLUMINANT_D55 5 +#define ILLUMINANT_D65 6 +#define ILLUMINANT_D75 7 +#define ILLUMINANT_F2 8 +#define ILLUMINANT_MAX_INDEX ILLUMINANT_F2 + +#define ILLUMINANT_TURNGSTEN ILLUMINANT_A +#define ILLUMINANT_DAYLIGHT ILLUMINANT_C +#define ILLUMINANT_FLUORESCENT ILLUMINANT_F2 +#define ILLUMINANT_NTSC ILLUMINANT_C + +/* Min and max for RedGamma, GreenGamma, BlueGamma */ +#define RGB_GAMMA_MIN (WORD)02500 +#define RGB_GAMMA_MAX (WORD)65000 + +/* Min and max for ReferenceBlack and ReferenceWhite */ +#define REFERENCE_WHITE_MIN (WORD)6000 +#define REFERENCE_WHITE_MAX (WORD)10000 +#define REFERENCE_BLACK_MIN (WORD)0 +#define REFERENCE_BLACK_MAX (WORD)4000 + +/* Min and max for Contrast, Brightness, Colorfulness, RedGreenTint */ +#define COLOR_ADJ_MIN (SHORT)-100 +#define COLOR_ADJ_MAX (SHORT)100 + +typedef struct tagCOLORADJUSTMENT { + WORD caSize; + WORD caFlags; + WORD caIlluminantIndex; + WORD caRedGamma; + WORD caGreenGamma; + WORD caBlueGamma; + WORD caReferenceBlack; + WORD caReferenceWhite; + SHORT caContrast; + SHORT caBrightness; + SHORT caColorfulness; + SHORT caRedGreenTint; +} COLORADJUSTMENT, *PCOLORADJUSTMENT, FAR *LPCOLORADJUSTMENT; + +BOOL WINAPI SetColorAdjustment(HDC, LPCOLORADJUSTMENT); +BOOL WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT); +HPALETTE WINAPI CreateHalftonePalette(HDC); + #ifdef STRICT typedef BOOL (CALLBACK* ABORTPROC)(HDC, int); #else typedef FARPROC ABORTPROC; #endif -typedef struct -{ +typedef struct _DOCINFOA { int cbSize; - PSTR lpszDocName; - PSTR lpszOutput; -} DOCINFO; -typedef DOCINFO *LPDOCINFO; + LPSTR lpszDocName; + LPSTR lpszOutput; +} DOCINFOA, *LPDOCINFOA; +typedef struct _DOCINFOW { + int cbSize; + LPWSTR lpszDocName; + LPWSTR lpszOutput; +} DOCINFOW, *LPDOCINFOW; +#ifdef UNICODE +#define DOCINFO DOCINFOW +#define LPDOCINFO LPDOCINFOW +#else +#define DOCINFO DOCINFOA +#define LPDOCINFO LPDOCINFOA +#endif // UNICODE -int WINAPI StartDoc(HDC, LPDOCINFO); +int WINAPI StartDocA(HDC, LPDOCINFOA); +int WINAPI StartDocW(HDC, LPDOCINFOW); +#ifdef UNICODE +#define StartDoc StartDocW +#else +#define StartDoc StartDocA +#endif // !UNICODE int WINAPI EndDoc(HDC); int WINAPI StartPage(HDC); int WINAPI EndPage(HDC); @@ -2097,11 +2237,18 @@ BOOL WINAPI ExtTextOutW(HDC, int, int, #else #define ExtTextOut ExtTextOutA #endif // !UNICODE +BOOL WINAPI PolyTextOutA(HDC, POLYTEXTA *, int); +BOOL WINAPI PolyTextOutW(HDC, POLYTEXTW *, int); +#ifdef UNICODE +#define PolyTextOut PolyTextOutW +#else +#define PolyTextOut PolyTextOutA +#endif // !UNICODE 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 Polygon(HDC, CONST POINT *, int); BOOL WINAPI Polyline(HDC, CONST POINT *, int); BOOL WINAPI PolyBezier(HDC, LPPOINT, DWORD); @@ -2157,9 +2304,18 @@ typedef struct tagKERNINGPAIR { DWORD WINAPI GetKerningPairs(HDC, DWORD, LPKERNINGPAIR); +DWORD WINAPI GetDCOrg(HDC); +BOOL WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT); +BOOL WINAPI UnrealizeObject(HGDIOBJ); + BOOL WINAPI GdiFlush(); DWORD WINAPI GdiSetBatchLimit(DWORD); DWORD WINAPI GdiGetBatchLimit(); #endif /* NOGDI */ + +#ifdef __cplusplus +} +#endif + #endif /* _WINGDI_ */