[PSDK]
[reactos.git] / reactos / include / psdk / wingdi.h
index 72f1edb..641aeb3 100644 (file)
@@ -6,6 +6,12 @@
 extern "C" {
 #endif
 
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4201)
+#pragma warning(disable:4820)
+#endif
+
 /* Get/SetSystemPaletteUse() values */
 #define SYSPAL_ERROR        0
 #define SYSPAL_STATIC       1
@@ -63,6 +69,7 @@ extern "C" {
 #define DI_MASK        1
 #define DI_NORMAL      3
 #define DI_APPBANDING 1
+#define DI_NOMIRROR    16
 #define EMR_HEADER     1
 #define EMR_POLYBEZIER 2
 #define EMR_POLYGON    3
@@ -166,6 +173,32 @@ extern "C" {
 #define EMR_GLSRECORD 102
 #define EMR_GLSBOUNDEDRECORD 103
 #define EMR_PIXELFORMAT 104
+#if (_WIN32_WINNT >= 0x0500)
+#define EMR_DRAWESCAPE 105
+#define EMR_EXTESCAPE 106
+#define EMR_STARTDOC 107
+#define EMR_SMALLTEXTOUT 108
+#define EMR_FORCEUFIMAPPING 109
+#define EMR_NAMEDESCAPE 110
+#define EMR_COLORCORRECTPALETTE 111
+#define EMR_SETICMPROFILEA 112
+#define EMR_SETICMPROFILEW 113
+#define EMR_ALPHABLEND 114
+#define EMR_ALPHADIBBLEND 115
+#define EMR_SETLAYOUT 115
+#define EMR_TRANSPARENTBLT 116
+#define EMR_TRANSPARENTDIB 117
+#define EMR_RESERVED_117 117
+#define EMR_GRADIENTFILL 118
+#define EMR_SETLINKEDUFIS 119
+#define EMR_SETTEXTJUSTIFICATION 120
+#define EMR_COLORMATCHTOTARGETW 121
+#define EMR_CREATECOLORSPACEW 122
+
+#define EMR_MIN 1
+#define EMR_MAX 122
+
+#endif
 #define ENHMETA_SIGNATURE 1179469088
 #define EPS_SIGNATURE 0x46535045
 #if (_WIN32_WINNT >= 0x0500)
@@ -240,6 +273,16 @@ extern "C" {
 #define META_CREATEFONTINDIRECT        0x2FB
 #define META_CREATEBRUSHINDIRECT       0x2FC
 #define META_CREATEREGION      0x6FF
+#define META_DRAWTEXT  0x062F
+#define META_RESETDC   0x014C
+#define META_STARTDOC  0x014D
+#define META_STARTPAGE 0x004F
+#define META_ENDPAGE   0x0050
+#define META_ABORTDOC  0x0052
+#define META_ENDDOC    0x005E
+#define META_CREATEBRUSH       0x00F8
+#define META_CREATEBITMAPINDIRECT      0x02FD
+#define META_CREATEBITMAP      0x06FE
 #define PT_MOVETO      6
 #define PT_LINETO      2
 #define PT_BEZIERTO    4
@@ -354,6 +397,17 @@ extern "C" {
 #define JOHAB_CHARSET  130
 #define VIETNAMESE_CHARSET     163
 #define MAC_CHARSET 77
+/* I don't know if the values of *_CHARSET macros are defined in Windows
+ * or if we can choose them as we want. -- srtxg
+ */
+#define VISCII_CHARSET        (BYTE)240 /* viscii1.1-1 */
+#define TCVN_CHARSET          (BYTE)241 /* tcvn-0 */
+#define KOI8_CHARSET          (BYTE)242 /* koi8-{r,u,ru} */
+#define ISO3_CHARSET          (BYTE)243 /* iso8859-3 */
+#define ISO4_CHARSET          (BYTE)244 /* iso8859-4 */
+#define ISO10_CHARSET         (BYTE)245 /* iso8859-10 */
+#define CELTIC_CHARSET        (BYTE)246 /* iso8859-14 */
+
 #define OUT_DEFAULT_PRECIS     0
 #define OUT_STRING_PRECIS      1
 #define OUT_CHARACTER_PRECIS   2
@@ -375,6 +429,8 @@ extern "C" {
 #define PROOF_QUALITY  2
 #define NONANTIALIASED_QUALITY 3
 #define ANTIALIASED_QUALITY 4
+#define CLEARTYPE_QUALITY 5
+#define CLEARTYPE_NATURAL_QUALITY 6
 #define DEFAULT_PITCH  0
 #define FIXED_PITCH    1
 #define VARIABLE_PITCH 2
@@ -537,6 +593,7 @@ extern "C" {
 #define PS_TYPE_MASK   983040
 #define ALTERNATE      1
 #define WINDING        2
+#define POLYFILL_LAST  2
 #define DC_BINNAMES    12
 #define DC_BINS        6
 #define DC_COPIES      18
@@ -576,6 +633,7 @@ extern "C" {
 #define DCBA_FACEDOWNRIGHT     259
 #define FLOODFILLBORDER 0
 #define FLOODFILLSURFACE 1
+#define ETO_GRAYED            0x00001
 #define ETO_OPAQUE            0x00002
 #define ETO_CLIPPED           0x00004
 #if (WINVER >= 0x0400)
@@ -786,8 +844,16 @@ extern "C" {
 #define GGO_GRAY8_BITMAP 6
 #define GGO_GLYPH_INDEX 128
 #define GGO_UNHINTED 256
+#ifdef __WINESRC__
+#define WINE_GGO_GRAY16_BITMAP 0x10
+#define WINE_GGO_HRGB_BITMAP   0x11
+#define WINE_GGO_HBGR_BITMAP   0x12
+#define WINE_GGO_VRGB_BITMAP   0x13
+#define WINE_GGO_VBGR_BITMAP   0x14
+#endif
 #define GM_COMPATIBLE 1
 #define GM_ADVANCED 2
+#define GM_LAST     2
 #define MM_ANISOTROPIC 8
 #define MM_HIENGLISH 5
 #define MM_HIMETRIC 3
@@ -797,6 +863,8 @@ extern "C" {
 #define MM_TEXT 1
 #define MM_TWIPS 6
 #define MM_MAX_FIXEDSCALE      MM_TWIPS
+#define MM_MIN MM_TEXT
+#define MM_MAX MM_ANISOTROPIC
 #define ABSOLUTE       1
 #define RELATIVE       2
 #define PC_EXPLICIT 2
@@ -809,6 +877,12 @@ extern "C" {
 #define PT_CLOSEFIGURE 1
 #define TT_AVAILABLE 1
 #define TT_ENABLED 2
+
+#ifdef __WINESRC__
+#define WINE_TT_SUBPIXEL_RENDERING_ENABLED 0x4000
+#define WINE_TT_HINTER_ENABLED 0x8000
+#endif
+
 #define BLACK_BRUSH 4
 #define DKGRAY_BRUSH 3
 #define GRAY_BRUSH 2
@@ -864,6 +938,7 @@ extern "C" {
 #define MWT_MAX MWT_RIGHTMULTIPLY
 #define OPAQUE 2
 #define TRANSPARENT 1
+#define BKMODE_LAST  2
 #define BLACKONWHITE 1
 #define WHITEONBLACK 2
 #define COLORONCOLOR 3
@@ -990,6 +1065,7 @@ extern "C" {
 #define BS_DIBPATTERNPT        6
 #define BS_PATTERN8X8  7
 #define BS_DIBPATTERN8X8       8
+#define BS_MONOPATTERN 9
 #define LCS_CALIBRATED_RGB     0
 #define LCS_DEVICE_RGB 1
 #define LCS_DEVICE_CMYK        2
@@ -1119,31 +1195,40 @@ extern "C" {
 #define DM_IN_PROMPT   DM_PROMPT
 #define DM_OUT_BUFFER  DM_COPY
 #define DM_OUT_DEFAULT DM_UPDATE
-#define DM_ORIENTATION 1
-#define DM_PAPERSIZE 2
-#define DM_PAPERLENGTH 4
-#define DM_PAPERWIDTH 8
-#define DM_POSITION 32
-#define DM_SCALE 16
-#define DM_COPIES 256
-#define DM_DEFAULTSOURCE 512
-#define DM_PRINTQUALITY 1024
-#define DM_COLOR 2048
-#define DM_DUPLEX 4096
-#define DM_YRESOLUTION 8192
-#define DM_TTOPTION 16384
-#define DM_COLLATE 32768
-#define DM_FORMNAME 65536
-#define DM_LOGPIXELS 0x20000
-#define DM_BITSPERPEL 0x40000
-#define DM_PELSWIDTH 0x80000
-#define DM_PELSHEIGHT 0x100000
-#define DM_DISPLAYFLAGS 0x200000
-#define DM_DISPLAYFREQUENCY 0x400000
-#define DM_ICMMETHOD 0x800000
-#define DM_ICMINTENT 0x1000000
-#define DM_MEDIATYPE 0x2000000
-#define DM_DITHERTYPE 0x4000000
+
+#define DM_ORIENTATION        0x00000001
+#define DM_PAPERSIZE          0x00000002
+#define DM_PAPERLENGTH        0x00000004
+#define DM_PAPERWIDTH         0x00000008
+#define DM_SCALE              0x00000010
+#define DM_POSITION           0x00000020
+#define DM_NUP                0x00000040
+#define DM_DISPLAYORIENTATION 0x00000080
+#define DM_COPIES             0x00000100
+#define DM_DEFAULTSOURCE      0x00000200
+#define DM_PRINTQUALITY       0x00000400
+#define DM_COLOR              0x00000800
+#define DM_DUPLEX             0x00001000
+#define DM_YRESOLUTION        0x00002000
+#define DM_TTOPTION           0x00004000
+#define DM_COLLATE            0x00008000
+#define DM_FORMNAME           0x00010000
+#define DM_LOGPIXELS          0x00020000
+#define DM_BITSPERPEL         0x00040000
+#define DM_PELSWIDTH          0x00080000
+#define DM_PELSHEIGHT         0x00100000
+#define DM_DISPLAYFLAGS       0x00200000
+#define DM_DISPLAYFREQUENCY   0x00400000
+#define DM_ICMMETHOD          0x00800000
+#define DM_ICMINTENT          0x01000000
+#define DM_MEDIATYPE          0x02000000
+#define DM_DITHERTYPE         0x04000000
+#define DM_PANNINGWIDTH       0x08000000
+#define DM_PANNINGHEIGHT      0x10000000
+#if (WINVER >= 0x0501)
+#define DM_DISPLAYFIXEDOUTPUT 0x20000000
+#endif
+
 #define DMICMMETHOD_NONE       1
 #define DMICMMETHOD_SYSTEM     2
 #define DMICMMETHOD_DRIVER     3
@@ -1438,9 +1523,11 @@ typedef struct _devicemodeA {
 #else
     } DUMMYSTRUCTNAME;
 #endif
-    POINTL dmPosition;
-    DWORD  dmDisplayOrientation;
-    DWORD  dmDisplayFixedOutput;
+    struct {
+      POINTL dmPosition;
+      DWORD  dmDisplayOrientation;
+      DWORD  dmDisplayFixedOutput;
+    } DUMMYSTRUCTNAME2;
 #ifdef __WINESRC__
   } DUMMYUNIONNAME1;
 #else
@@ -1497,9 +1584,11 @@ typedef struct _devicemodeW {
 #else
     } DUMMYSTRUCTNAME;
 #endif
-    POINTL dmPosition;
-    DWORD  dmDisplayOrientation;
-    DWORD  dmDisplayFixedOutput;
+    struct {
+      POINTL dmPosition;
+      DWORD  dmDisplayOrientation;
+      DWORD  dmDisplayFixedOutput;
+    } DUMMYSTRUCTNAME2;
 #ifdef __WINESRC__
   } DUMMYUNIONNAME1;
 #else
@@ -1533,7 +1622,7 @@ typedef struct _devicemodeW {
   DWORD  dmPanningHeight;
 #endif
 #endif /* WINVER >= 0x0400 */
-} DEVMODEW,*LPDEVMODEW,*PDEVMODEW;
+} DEVMODEW,*LPDEVMODEW,*PDEVMODEW,*NPDEVMODEW;
 typedef struct tagDIBSECTION {
        BITMAP dsBm;
        BITMAPINFOHEADER dsBmih;
@@ -1615,7 +1704,7 @@ typedef struct tagEMRBITBLT {
 typedef struct tagLOGBRUSH {
        UINT lbStyle;
        COLORREF lbColor;
-       LONG lbHatch;
+       ULONG_PTR lbHatch;
 } LOGBRUSH,*PLOGBRUSH,*LPLOGBRUSH;
 typedef LOGBRUSH PATTERN,*PPATTERN,*LPPATTERN;
 typedef struct tagLOGBRUSH32 {
@@ -1626,7 +1715,7 @@ typedef struct tagLOGBRUSH32 {
 typedef struct tagEMRCREATEBRUSHINDIRECT {
        EMR emr;
        DWORD ihBrush;
-       LOGBRUSH lb;
+       LOGBRUSH32 lb;
 } EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT;
 typedef LONG LCSCSTYPE;
 typedef LONG LCSGAMUTMATCH;
@@ -1665,7 +1754,7 @@ typedef struct tagEMRCREATECOLORSPACEW {
 typedef struct tagEMRCREATECOLORSPACE {
        EMR emr;
        DWORD ihCS;
-       LOGCOLORSPACEW lcs;
+       LOGCOLORSPACEA lcs;
 } EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE;
 typedef struct tagEMRCREATEDIBPATTERNBRUSHPT {
        EMR emr;
@@ -1745,7 +1834,7 @@ typedef struct tagPANOSE {
        BYTE bLetterform;
        BYTE bMidline;
        BYTE bXHeight;
-} PANOSE, *LPPANOSE;;
+} PANOSE, *LPPANOSE;
 typedef struct tagLOGFONTA {
        LONG    lfHeight;
        LONG    lfWidth;
@@ -1808,11 +1897,11 @@ typedef struct tagEMREXTCREATEFONTINDIRECTW {
        EXTLOGFONTW elfw;
 } EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW;
 typedef struct tagEXTLOGPEN {
-       UINT elpPenStyle;
-       UINT elpWidth;
+       DWORD elpPenStyle;
+       DWORD elpWidth;
        UINT elpBrushStyle;
        COLORREF elpColor;
-       LONG elpHatch;
+       ULONG_PTR elpHatch;
        DWORD elpNumEntries;
        DWORD elpStyleEntry[1];
 } EXTLOGPEN,*PEXTLOGPEN,*LPEXTLOGPEN,*NPEXTLOGPEN;
@@ -1983,7 +2072,7 @@ typedef struct tagEMRPOLYLINE16 {
        EMR emr;
        RECTL rclBounds;
        DWORD cpts;
-       POINTL apts[1];
+       POINTS apts[1];
 } EMRPOLYLINE16,*PEMRPOLYLINE16,EMRPOLYBEZIER16,*PEMRPOLYBEZIER16,EMRPOLYGON16,*PEMRPOLYGON16,EMRPOLYBEZIERTO16,*PEMRPOLYBEZIERTO16,EMRPOLYLINETO16,*PEMRPOLYLINETO16;
 typedef struct tagEMRPOLYPOLYLINE {
        EMR emr;
@@ -2122,6 +2211,26 @@ typedef struct tagEMRSTRETCHBLT {
        LONG cxSrc;
        LONG cySrc;
 } EMRSTRETCHBLT,*PEMRSTRETCHBLT;
+typedef struct tagEMRALPHABLEND {
+       EMR      emr;
+       RECTL    rclBounds;
+       LONG     xDest;
+       LONG     yDest;
+       LONG     cxDest;
+       LONG     cyDest;
+       DWORD    dwRop;
+       LONG     xSrc;
+       LONG     ySrc;
+       XFORM    xformSrc;
+       COLORREF crBkColorSrc;
+       DWORD    iUsageSrc;
+       DWORD    offBmiSrc;
+       DWORD    cbBmiSrc;
+       DWORD    offBitsSrc;
+       DWORD    cbBitsSrc;
+       LONG     cxSrc;
+       LONG     cySrc;
+} EMRALPHABLEND, *PEMRALPHABLEND;
 typedef struct tagEMRSTRETCHDIBITS {
        EMR emr;
        RECTL rclBounds;
@@ -2697,23 +2806,62 @@ typedef struct _ENUMTEXTMETRICW
 } ENUMTEXTMETRICW, *PENUMTEXTMETRICW, *LPENUMTEXTMETRICW;
 
 
+#if defined(STRICT)
+
+#if !defined(NOTEXTMETRIC)
+
+typedef int (CALLBACK *OLDFONTENUMPROCA)(CONST LOGFONTA *, CONST TEXTMETRICA *, DWORD, LPARAM);
+typedef int (CALLBACK *OLDFONTENUMPROCW)(CONST LOGFONTW *, CONST TEXTMETRICW *, DWORD, LPARAM);
+
+#else
+
+typedef int (CALLBACK* OLDFONTENUMPROCA)(CONST LOGFONTA *, CONST VOID *, DWORD, LPARAM);
+typedef int (CALLBACK* OLDFONTENUMPROCW)(CONST LOGFONTW *, CONST VOID *, DWORD, LPARAM);
+
+#endif
+
+#ifdef UNICODE
+#define OLDFONTENUMPROC OLDFONTENUMPROCW
+#else
+#define OLDFONTENUMPROC OLDFONTENUMPROCA
+#endif
 
-typedef BOOL (CALLBACK *ABORTPROC)(HDC,int);
-typedef int (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,int,LPARAM);
-typedef int (CALLBACK *ENHMFENUMPROC)(HDC,HANDLETABLE*,ENHMETARECORD*,int,LPARAM);
-typedef int (CALLBACK *OLDFONTENUMPROCA)(ENUMLOGFONTEXA*,NEWTEXTMETRICEXA*,DWORD,LPARAM);
-typedef int (CALLBACK *OLDFONTENUMPROCW)(ENUMLOGFONTEXW*,NEWTEXTMETRICEXW*,DWORD,LPARAM);
 typedef OLDFONTENUMPROCA FONTENUMPROCA;
 typedef OLDFONTENUMPROCW FONTENUMPROCW;
+
 #ifdef UNICODE
-#define OLDFONTENUMPROC  OLDFONTENUMPROCW
+typedef FONTENUMPROCW FONTENUMPROC;
 #else
-#define OLDFONTENUMPROC  OLDFONTENUMPROCA
+typedef FONTENUMPROCA FONTENUMPROC;
 #endif
+
+typedef INT (CALLBACK *GOBJENUMPROC)(LPVOID, LPARAM);
+typedef VOID (CALLBACK *LINEDDAPROC)(INT, INT, LPARAM);
+
+#else // defined(STRICT)
+
+typedef FARPROC OLDFONTENUMPROC;
+typedef FARPROC FONTENUMPROCA;
+typedef FARPROC FONTENUMPROCW;
+
+#ifdef UNICODE
+typedef FONTENUMPROCW FONTENUMPROC;
+#else
+typedef FONTENUMPROCA FONTENUMPROC;
+#endif
+
+typedef FARPROC GOBJENUMPROC;
+typedef FARPROC LINEDDAPROC;
+
+#endif
+
+
+typedef BOOL (CALLBACK *ABORTPROC)(HDC,int);
+
+typedef int (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,int,LPARAM);
+typedef int (CALLBACK *ENHMFENUMPROC)(HDC,HANDLETABLE*,const ENHMETARECORD*,int,LPARAM);
 typedef int (CALLBACK *ICMENUMPROCA)(LPSTR,LPARAM);
 typedef int (CALLBACK *ICMENUMPROCW)(LPWSTR,LPARAM);
-typedef void (CALLBACK *GOBJENUMPROC)(LPVOID,LPARAM);
-typedef void (CALLBACK *LINEDDAPROC)(int,int,LPARAM);
 typedef UINT (CALLBACK *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODEA,LPSTR,LPSTR,LPDEVMODEA,LPSTR,UINT);
 typedef DWORD (CALLBACK *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODEA);
 
@@ -2752,7 +2900,7 @@ HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
 HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
 HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
 HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
-HBITMAP WINAPI CreateBitmap(int,int,UINT,UINT,PCVOID);
+HBITMAP WINAPI CreateBitmap(int,int,UINT,UINT,CONST VOID*);
 HBITMAP WINAPI CreateBitmapIndirect(const BITMAP*);
 HBRUSH WINAPI CreateBrushIndirect(const LOGBRUSH*);
 HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
@@ -2761,9 +2909,9 @@ HBITMAP WINAPI CreateCompatibleBitmap(HDC,int,int);
 HDC WINAPI CreateCompatibleDC(HDC);
 HDC WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
 HDC WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
-HBITMAP WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,PCVOID,const BITMAPINFO*,UINT);
+HBITMAP WINAPI CreateDIBitmap(HDC,CONST BITMAPINFOHEADER*,DWORD,CONST VOID*,CONST BITMAPINFO*,UINT);
 HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL,UINT);
-HBRUSH WINAPI CreateDIBPatternBrushPt(PCVOID,UINT);
+HBRUSH WINAPI CreateDIBPatternBrushPt(CONST VOID*,UINT);
 HBITMAP WINAPI CreateDIBSection(HDC,const BITMAPINFO*,UINT,PVOID*,HANDLE,DWORD);
 HBITMAP WINAPI CreateDiscardableBitmap(HDC,int,int);
 HRGN WINAPI CreateEllipticRgn(int,int,int,int);
@@ -2836,10 +2984,17 @@ int WINAPI FillRgn(HDC,HRGN,HBRUSH);
 BOOL WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT);
 BOOL WINAPI FlattenPath(HDC);
 BOOL WINAPI FloodFill(HDC,int,int,COLORREF);
+BOOL WINAPI FrameRgn(HDC,HRGN,HBRUSH,INT,INT);
+BOOL WINAPI GdiAlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
 BOOL WINAPI GdiComment(HDC,UINT,const BYTE*);
+DEVMODEW * WINAPI GdiConvertToDevmodeW(const DEVMODEA *);
 BOOL WINAPI GdiFlush(void);
+LONG WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *);
+DWORD WINAPI GdiGetCodePage(HDC);
 DWORD WINAPI GdiGetBatchLimit(void);
 DWORD WINAPI GdiSetBatchLimit(DWORD);
+BOOL WINAPI GdiGradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG);
+BOOL WINAPI GdiIsMetaFileDC(HDC);
 #define GetCValue(cmyk) ((BYTE)(cmyk))
 #define GetMValue(cmyk) ((BYTE)((cmyk)>> 8))
 #define GetYValue(cmyk) ((BYTE)((cmyk)>>16))
@@ -2895,6 +3050,9 @@ UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
 UINT WINAPI GetEnhMetaFilePixelFormat(HENHMETAFILE,UINT,PIXELFORMATDESCRIPTOR*);
 DWORD WINAPI GetFontData(HDC,DWORD,DWORD,PVOID,DWORD);
 DWORD WINAPI GetFontLanguageInfo(HDC);
+#if (_WIN32_WINNT >= 0x0500)
+DWORD WINAPI GetFontUnicodeRanges(HDC,LPGLYPHSET);
+#endif
 DWORD WINAPI GetGlyphIndicesA(HDC,LPCSTR,INT,LPWORD,DWORD);
 DWORD WINAPI GetGlyphIndicesW(HDC,LPCWSTR,INT,LPWORD,DWORD);
 DWORD WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
@@ -3012,7 +3170,7 @@ HGDIOBJ WINAPI SelectObject(HDC,HGDIOBJ);
 HPALETTE WINAPI SelectPalette(HDC,HPALETTE,BOOL);
 int WINAPI SetAbortProc(HDC,ABORTPROC);
 int WINAPI SetArcDirection(HDC,int);
-LONG WINAPI SetBitmapBits(HBITMAP,DWORD,PCVOID);
+LONG WINAPI SetBitmapBits(HBITMAP,DWORD,CONST VOID*);
 BOOL WINAPI SetBitmapDimensionEx(HBITMAP,int,int,LPSIZE);
 COLORREF WINAPI SetBkColor(HDC,COLORREF);
 int WINAPI SetBkMode(HDC,int);
@@ -3026,8 +3184,8 @@ COLORREF WINAPI SetDCPenColor(HDC,COLORREF);
 #endif
 BOOL WINAPI SetDeviceGammaRamp(HDC,PVOID);
 UINT WINAPI SetDIBColorTable(HDC,UINT,UINT,const RGBQUAD*);
-int WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,PCVOID,const BITMAPINFO*,UINT);
-int WINAPI SetDIBitsToDevice(HDC,int,int,DWORD,DWORD,int,int,UINT,UINT,PCVOID,const BITMAPINFO*,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);
 HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE*);
 int WINAPI SetGraphicsMode(HDC,int);
 int WINAPI SetICMMode(HDC,int);
@@ -3048,6 +3206,7 @@ BOOL WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
 BOOL WINAPI SetPixelV(HDC,int,int,COLORREF);
 int WINAPI SetPolyFillMode(HDC,int);
 BOOL WINAPI SetRectRgn(HRGN,int,int,int,int);
+INT WINAPI SetRelAbs(HDC,INT);
 int WINAPI SetROP2(HDC,int);
 int WINAPI SetStretchBltMode(HDC,int);
 UINT WINAPI SetSystemPaletteUse(HDC,UINT);
@@ -3114,7 +3273,6 @@ typedef DOCINFOW DOCINFO, *LPDOCINFO;
 typedef LOGFONTW LOGFONT,*PLOGFONT,*LPLOGFONT;
 typedef TEXTMETRICW TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC;
 #define ICMENUMPROC ICMENUMPROCW
-#define FONTENUMPROC FONTENUMPROCW
 typedef DEVMODEW DEVMODE,*PDEVMODE,*LPDEVMODE;
 typedef ENUMLOGFONTEXDVW ENUMLOGFONTEXDV;
 typedef PENUMLOGFONTEXDVW PENUMLOGFONTEXDV;
@@ -3196,7 +3354,6 @@ typedef DOCINFOA DOCINFO, *LPDOCINFO;
 typedef LOGFONTA LOGFONT,*PLOGFONT,*LPLOGFONT;
 typedef TEXTMETRICA TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC;
 #define ICMENUMPROC ICMENUMPROCA
-#define FONTENUMPROC FONTENUMPROCA
 typedef DEVMODEA DEVMODE,*PDEVMODE,*LPDEVMODE;
 typedef ENUMLOGFONTEXDVA ENUMLOGFONTEXDV;
 typedef PENUMLOGFONTEXDVA PENUMLOGFONTEXDV;
@@ -3268,6 +3425,27 @@ typedef DISPLAY_DEVICEA DISPLAY_DEVICE, *PDISPLAY_DEVICE, *LPDISPLAY_DEVICE;
 #define wglUseFontOutlines wglUseFontOutlinesA
 #endif
 #endif
+
+#ifdef __WINESRC__
+/* the DC hook support is only exported on Win16, the 32-bit version is a Wine extension */
+
+#define DCHC_INVALIDVISRGN      0x0001
+#define DCHC_DELETEDC           0x0002
+#define DCHF_INVALIDATEVISRGN   0x0001
+#define DCHF_VALIDATEVISRGN     0x0002
+
+typedef BOOL (CALLBACK *DCHOOKPROC)(HDC,WORD,DWORD_PTR,LPARAM);
+
+WINGDIAPI DWORD_PTR WINAPI GetDCHook(HDC,DCHOOKPROC*);
+WINGDIAPI BOOL      WINAPI SetDCHook(HDC,DCHOOKPROC,DWORD_PTR);
+WINGDIAPI WORD      WINAPI SetHookFlags(HDC,WORD);
+WINGDIAPI INT       WINAPI SelectVisRgn(HDC,HRGN);
+#endif /* __WINESRC__ */
+
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
 #ifdef __cplusplus
 }
 #endif