forgot the header update part.
[reactos.git] / reactos / include / psdk / wingdi.h
index 574890c..c304a5c 100644 (file)
@@ -1,13 +1,17 @@
 #ifndef _WINGDI_H
 #define _WINGDI_H
-#if __GNUC__ >= 3
-#pragma GCC system_header
-#endif
+#define _WINGDI_
 
 #ifdef __cplusplus
 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
@@ -16,6 +20,13 @@ extern "C" {
 
 #define WINGDIAPI
 
+#define NTM_NONNEGATIVE_AC  0x00010000
+#define NTM_PS_OPENTYPE     0x00020000
+#define NTM_TT_OPENTYPE     0x00040000
+#define NTM_MULTIPLEMASTER  0x00080000
+#define NTM_TYPE1           0x00100000
+#define NTM_DSIG            0x00200000
+
 #define AC_SRC_OVER 0
 #define AC_SRC_ALPHA 1
 #define BI_RGB 0
@@ -161,6 +172,25 @@ 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_TRANSPARENTBLT 116
+#define EMR_TRANSPARENTDIB 117
+#define EMR_GRADIENTFILL 118
+#define EMR_SETLINKEDUFIS 119
+#define EMR_SETTEXTJUSTIFICATION 120
+#define EMR_COLORMATCHTOTARGETW 121
+#endif
 #define ENHMETA_SIGNATURE 1179469088
 #define EPS_SIGNATURE 0x46535045
 #if (_WIN32_WINNT >= 0x0500)
@@ -343,6 +373,7 @@ extern "C" {
 #define BALTIC_CHARSET 186
 #define RUSSIAN_CHARSET        204
 #define THAI_CHARSET   222
+#define EE_CHARSET         238
 #define EASTEUROPE_CHARSET     238
 #define OEM_CHARSET    255
 #define JOHAB_CHARSET  130
@@ -494,6 +525,7 @@ extern "C" {
 #define FS_HEBREW 32
 #define FS_ARABIC 64
 #define FS_BALTIC 128
+#define FS_VIETNAMESE 256
 #define FS_THAI 0x10000
 #define FS_JISJAPAN 0x20000
 #define FS_CHINESESIMP 0x40000
@@ -524,6 +556,7 @@ extern "C" {
 #define PS_JOIN_BEVEL  4096
 #define PS_JOIN_MITER  8192
 #define PS_JOIN_ROUND  0
+#define PS_JOIN_MASK    0x0000F000
 #define PS_STYLE_MASK  15
 #define PS_ENDCAP_MASK 3840
 #define PS_TYPE_MASK   983040
@@ -568,10 +601,21 @@ extern "C" {
 #define DCBA_FACEDOWNRIGHT     259
 #define FLOODFILLBORDER 0
 #define FLOODFILLSURFACE 1
-#define ETO_CLIPPED 4
-#define ETO_GLYPH_INDEX 16
-#define ETO_OPAQUE 2
-#define ETO_RTLREADING 128
+#define ETO_OPAQUE            0x00002
+#define ETO_CLIPPED           0x00004
+#if (WINVER >= 0x0400)
+#define ETO_GLYPH_INDEX       0x00010
+#define ETO_RTLREADING        0x00080
+#define ETO_NUMERICSLOCAL     0x00400
+#define ETO_NUMERICSLATIN     0x00800
+#define ETO_IGNORELANGUAGE    0x01000
+#endif
+#if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
+#define ETO_PDY               0x02000
+#endif
+#if (_WIN32_WINNT >= _WIN32_WINNT_LONGHORN)
+#define ETO_REVERSE_INDEX_MAP 0x10000
+#endif
 #define GDICOMMENT_WINDOWS_METAFILE (-2147483647)
 #define GDICOMMENT_BEGINGROUP 2
 #define GDICOMMENT_ENDGROUP 3
@@ -734,6 +778,10 @@ extern "C" {
 #define TC_VA_ABLE 16384
 #define TC_RESERVED 32768
 #define TC_SCROLLBLT 65536
+/* CLIPCAPS */
+#define CP_NONE 0
+#define CP_RECTANGLE 1
+#define CP_REGION 2
 #define GCP_DBCS 1
 #define GCP_ERROR 0x8000
 #define GCP_CLASSIN 0x80000
@@ -779,9 +827,7 @@ extern "C" {
 #define PC_EXPLICIT 2
 #define PC_NOCOLLAPSE 4
 #define PC_RESERVED 1
-#define CLR_NONE 0xffffffff
-#define CLR_INVALID CLR_NONE
-#define CLR_DEFAULT 0xff000000
+#define CLR_INVALID     0xFFFFFFFF
 #define PT_MOVETO 6
 #define PT_LINETO 2
 #define PT_BEZIERTO 4
@@ -810,6 +856,13 @@ extern "C" {
 #define DC_BRUSH       18
 #define DC_PEN 19
 #endif
+#if (_WIN32_WINNT >= 0x0500)
+#define STOCK_LAST          19
+#elif (WINVER >= 0x0400)
+#define STOCK_LAST          17
+#else
+#define STOCK_LAST          16
+#endif
 #define SYSPAL_NOSTATIC 2
 #define SYSPAL_STATIC 1
 #define SYSPAL_ERROR 0
@@ -848,6 +901,22 @@ extern "C" {
 #define TCI_SRCCHARSET 1
 #define TCI_SRCCODEPAGE 2
 #define TCI_SRCFONTSIG 3
+#if (_WIN32_WINNT >= 0x0500)
+#define SHADEBLENDCAPS    120
+#define COLORMGMTCAPS     121
+/* SHADEBLENDCAPS */
+#define SB_NONE           0x00000000
+#define SB_CONST_ALPHA    0x00000001
+#define SB_PIXEL_ALPHA    0x00000002
+#define SB_PREMULT_ALPHA  0x00000004
+#define SB_GRAD_RECT      0x00000010
+#define SB_GRAD_TRI       0x00000020
+/* Color Management caps */
+#define CM_NONE           0x00000000
+#define CM_DEVICE_ICM     0x00000001
+#define CM_GAMMA_RAMP     0x00000002
+#define CM_CMYK_COLOR     0x00000004
+#endif
 #define ICM_ON 2
 #define ICM_OFF 1
 #define ICM_QUERY 3
@@ -952,6 +1021,10 @@ extern "C" {
 #define LCS_GM_BUSINESS        1
 #define LCS_GM_GRAPHICS        2
 #define LCS_GM_IMAGES  4
+#define LCS_GM_ABS_COLORIMETRIC 8
+#define LCS_SIGNATURE   0x50534F43 // 'PSOC'
+#define LCS_sRGB        'sRGB'
+#define LCS_WINDOWS_COLOR_SPACE 'Win '
 #define RASTER_FONTTYPE        1
 #define DEVICE_FONTTYPE        2
 #define TRUETYPE_FONTTYPE      4
@@ -1071,30 +1144,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_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
@@ -1180,7 +1263,10 @@ extern "C" {
 #define WGL_SWAP_UNDERLAY14 0x20000000
 #define WGL_SWAP_UNDERLAY15 0x40000000
 #define AC_SRC_OVER 0
-#define LAYOUT_RTL 1
+#define LAYOUT_RTL 1 // Right to left
+#define LAYOUT_BTT 2 // Bottom to top
+#define LAYOUT_VBH 4 // Vertical before horizontal
+#define LAYOUT_ORIENTATIONMASK (LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH)
 #define LAYOUT_BITMAPORIENTATIONPRESERVED 8
 #if (WINVER > 0x400)
 #define CS_ENABLE           0x00000001
@@ -1188,14 +1274,7 @@ extern "C" {
 #define CS_DELETE_TRANSFORM 0x00000003
 #endif
 
-#if(WINVER >= 0x0400)
-typedef struct tagEMRGLSRECORD
-{
-    EMR   emr;
-    DWORD cbData;       
-    BYTE  Data[1];
-} EMRGLSRECORD, *PEMRGLSRECORD;
-#endif
+
 
 #if (WINVER > 0x500)
 #define GRADIENT_FILL_RECT_H 0x00
@@ -1213,18 +1292,20 @@ typedef struct tagEMRGLSRECORD
 #define DISPLAY_DEVICE_MIRRORING_DRIVER    0x00000008
 #define DISPLAY_DEVICE_VGA_COMPATIBLE      0x00000010
 #define DISPLAY_DEVICE_REMOVABLE           0x00000020
+#define DISPLAY_DEVICE_DISCONNECT          0x02000000
+#define DISPLAY_DEVICE_REMOTE              0x04000000
 #define DISPLAY_DEVICE_MODESPRUNED         0x08000000
 #ifndef RC_INVOKED
 typedef struct _ABC {
        int abcA;
        UINT abcB;
        int abcC;
-} ABC,*LPABC;
+} ABC, *PABC, *LPABC;
 typedef struct _ABCFLOAT {
        FLOAT abcfA;
        FLOAT abcfB;
        FLOAT abcfC;
-} ABCFLOAT,*LPABCFLOAT;
+} ABCFLOAT, *PABCFLOAT, *LPABCFLOAT;
 typedef struct tagBITMAP {
        LONG    bmType;
        LONG    bmWidth;
@@ -1350,11 +1431,11 @@ typedef struct tagFONTSIGNATURE {
        DWORD   fsUsb[4];
        DWORD   fsCsb[2];
 } FONTSIGNATURE, *PFONTSIGNATURE,*LPFONTSIGNATURE;
-typedef struct {
+typedef struct tagCHARSETINFO {
        UINT ciCharset;
        UINT ciACP;
        FONTSIGNATURE fs;
-} CHARSETINFO,*LPCHARSETINFO;
+} CHARSETINFO, *PCHARSETINFO, *LPCHARSETINFO;
 typedef struct  tagCOLORADJUSTMENT {
        WORD    caSize;
        WORD    caFlags;
@@ -1386,11 +1467,21 @@ typedef struct _devicemodeA {
       short dmCopies;
       short dmDefaultSource;
       short dmPrintQuality;
+#ifdef __WINESRC__
+    } DUMMYSTRUCTNAME1;
+#else
     } DUMMYSTRUCTNAME;
-    POINTL dmPosition;
-    DWORD  dmDisplayOrientation;
-    DWORD  dmDisplayFixedOutput;
+#endif
+    struct {
+      POINTL dmPosition;
+      DWORD  dmDisplayOrientation;
+      DWORD  dmDisplayFixedOutput;
+    } DUMMYSTRUCTNAME2;
+#ifdef __WINESRC__
+  } DUMMYUNIONNAME1;
+#else
   } DUMMYUNIONNAME;
+#endif
 
   short  dmColor;
   short  dmDuplex;
@@ -1437,11 +1528,21 @@ typedef struct _devicemodeW {
       short dmCopies;
       short dmDefaultSource;
       short dmPrintQuality;
+#ifdef __WINESRC__
+    } DUMMYSTRUCTNAME1;
+#else
     } DUMMYSTRUCTNAME;
-    POINTL dmPosition;
-    DWORD  dmDisplayOrientation;
-    DWORD  dmDisplayFixedOutput;
+#endif
+    struct {
+      POINTL dmPosition;
+      DWORD  dmDisplayOrientation;
+      DWORD  dmDisplayFixedOutput;
+    } DUMMYSTRUCTNAME2;
+#ifdef __WINESRC__
+  } DUMMYUNIONNAME1;
+#else
   } DUMMYUNIONNAME;
+#endif
 
   short  dmColor;
   short  dmDuplex;
@@ -1470,14 +1571,14 @@ typedef struct _devicemodeW {
   DWORD  dmPanningHeight;
 #endif
 #endif /* WINVER >= 0x0400 */
-} DEVMODEW,*LPDEVMODEW,*PDEVMODEW;
+} DEVMODEW,*LPDEVMODEW,*PDEVMODEW,*NPDEVMODEW;
 typedef struct tagDIBSECTION {
        BITMAP dsBm;
        BITMAPINFOHEADER dsBmih;
        DWORD dsBitfields[3];
        HANDLE dshSection;
        DWORD dsOffset;
-} DIBSECTION;
+} DIBSECTION,*PDIBSECTION,*LPDIBSECTION;
 typedef struct _DOCINFOA {
        int cbSize;
        LPCSTR lpszDocName;
@@ -1496,6 +1597,20 @@ typedef struct tagEMR {
        DWORD iType;
        DWORD nSize;
 } EMR,*PEMR;
+
+#if(WINVER >= 0x0400)
+typedef struct tagEMRGLSRECORD {
+       EMR emr;
+       DWORD cbData;
+       BYTE Data[1];
+} EMRGLSRECORD, *PEMRGLSRECORD;
+typedef struct tagEMRGLSBOUNDEDRECORD {
+       EMR emr;
+       RECTL rclBounds;
+       DWORD cbData;
+       BYTE Data[1];
+} EMRGLSBOUNDEDRECORD, *PEMRGLSBOUNDEDRECORD;
+#endif
 typedef struct tagEMRANGLEARC {
        EMR emr;
        POINTL ptlCenter;
@@ -1529,8 +1644,9 @@ typedef struct tagEMRBITBLT {
        LONG ySrc;
        XFORM xformSrc;
        COLORREF crBkColorSrc;
-       DWORD iUsageSrc;
+    DWORD iUsageSrc;
        DWORD offBmiSrc;
+       DWORD cbBmiSrc;
        DWORD offBitsSrc;
        DWORD cbBitsSrc;
 } EMRBITBLT,*PEMRBITBLT;
@@ -1540,6 +1656,11 @@ typedef struct tagLOGBRUSH {
        LONG lbHatch;
 } LOGBRUSH,*PLOGBRUSH,*LPLOGBRUSH;
 typedef LOGBRUSH PATTERN,*PPATTERN,*LPPATTERN;
+typedef struct tagLOGBRUSH32 {
+       UINT lbStyle;
+       COLORREF lbColor;
+       ULONG lbHatch;
+} LOGBRUSH32, *PLOGBRUSH32;
 typedef struct tagEMRCREATEBRUSHINDIRECT {
        EMR emr;
        DWORD ihBrush;
@@ -1571,10 +1692,18 @@ typedef struct tagLOGCOLORSPACEW {
        DWORD lcsGammaBlue;
        WCHAR lcsFilename[MAX_PATH];
 } LOGCOLORSPACEW,*LPLOGCOLORSPACEW;
-typedef struct tagEMRCREATECOLORSPACE {
+typedef struct tagEMRCREATECOLORSPACEW {
        EMR emr;
        DWORD ihCS;
        LOGCOLORSPACEW lcs;
+       DWORD dwFlags;
+       DWORD cbData;
+       BYTE Data[1];
+} EMRCREATECOLORSPACEW, *PEMRCREATECOLORSPACEW;
+typedef struct tagEMRCREATECOLORSPACE {
+       EMR emr;
+       DWORD ihCS;
+       LOGCOLORSPACEA lcs;
 } EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE;
 typedef struct tagEMRCREATEDIBPATTERNBRUSHPT {
        EMR emr;
@@ -1594,17 +1723,26 @@ typedef struct tagEMRCREATEMONOBRUSH {
        DWORD offBits;
        DWORD cbBits;
 } EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH;
+
+#ifndef _PALETTEENTRY_DEFINED
+#define _PALETTEENTRY_DEFINED
 typedef struct tagPALETTEENTRY {
        BYTE peRed;
        BYTE peGreen;
        BYTE peBlue;
        BYTE peFlags;
 } PALETTEENTRY,*LPPALETTEENTRY,*PPALETTEENTRY;
+#endif
+
+#ifndef _LOGPALETTE_DEFINED
+#define _LOGPALETTE_DEFINED
 typedef struct tagLOGPALETTE {
        WORD palVersion;
        WORD palNumEntries;
        PALETTEENTRY palPalEntry[1];
 } LOGPALETTE,*NPLOGPALETTE,*PLOGPALETTE,*LPLOGPALETTE;
+#endif
+
 typedef struct tagEMRCREATEPALETTE {
        EMR emr;
        DWORD ihPal;
@@ -1645,7 +1783,7 @@ typedef struct tagPANOSE {
        BYTE bLetterform;
        BYTE bMidline;
        BYTE bXHeight;
-} PANOSE;
+} PANOSE, *LPPANOSE;
 typedef struct tagLOGFONTA {
        LONG    lfHeight;
        LONG    lfWidth;
@@ -1715,7 +1853,7 @@ typedef struct tagEXTLOGPEN {
        LONG elpHatch;
        DWORD elpNumEntries;
        DWORD elpStyleEntry[1];
-} EXTLOGPEN,*PEXTLOGPEN,*LPEXTLOGPEN;
+} EXTLOGPEN,*PEXTLOGPEN,*LPEXTLOGPEN,*NPEXTLOGPEN;
 typedef struct tagEMREXTCREATEPEN {
        EMR emr;
        DWORD ihPen;
@@ -1769,18 +1907,14 @@ typedef struct tagEMRFORMAT   {
        DWORD nVersion;
        DWORD cbData;
        DWORD offData;
-} EMRFORMAT;
+} EMRFORMAT, *PEMRFORMAT;
+
 
-typedef struct tagEMRPIXELFORMAT
-{
-    EMR emr;
-    PIXELFORMATDESCRIPTOR pfd;
-} EMRPIXELFORMAT, *PEMRPIXELFORMAT;
 typedef struct tagEMRSETCOLORSPACE
 {
     EMR   emr;
     DWORD ihCS;
-} EMRSETCOLORSPACE, *PEMRSETCOLORSPACE, EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE, 
+} EMRSETCOLORSPACE, *PEMRSETCOLORSPACE, EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE,
   EMRDELETECOLORSPACE, *PEMRDELETECOLORSPACE;
 
 typedef struct tagEMRFRAMERGN {
@@ -1887,7 +2021,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;
@@ -1935,10 +2069,8 @@ typedef struct tagEMRSCALEVIEWPORTEXTEX {
        LONG yNum;
        LONG yDenom;
 } EMRSCALEVIEWPORTEXTEX,*PEMRSCALEVIEWPORTEXTEX,EMRSCALEWINDOWEXTEX,*PEMRSCALEWINDOWEXTEX;
-typedef struct tagEMRSELECTCOLORSPACE {
-       EMR emr;
-       DWORD ihCS;
-} EMRSELECTCOLORSPACE,*PEMRSELECTCOLORSPACE,EMRDELETECOLORSPACE,*PEMRDELETECOLORSPACE;
+
+
 typedef struct tagEMRSELECTOBJECT {
        EMR emr;
        DWORD ihObject;
@@ -2052,12 +2184,12 @@ typedef struct tagABORTPATH {
 typedef struct tagEMRSELECTCLIPPATH {
        EMR emr;
        DWORD iMode;
-} EMRSELECTCLIPPATH,*PEMRSELECTCLIPPATH, EMRSETBKMODE,*PEMRSETBKMODE, EMRSETMAPMODE, *PEMRSETMAPMODE, 
-  EMRSETPOLYFILLMODE, *PEMRSETPOLYFILLMODE, EMRSETROP2, *PEMRSETROP2, EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE, 
-  EMRSETICMMODE, *PEMRSETICMMODE, EMRSETTEXTALIGN, 
+} EMRSELECTCLIPPATH,*PEMRSELECTCLIPPATH, EMRSETBKMODE,*PEMRSETBKMODE, EMRSETMAPMODE, *PEMRSETMAPMODE,
+  EMRSETPOLYFILLMODE, *PEMRSETPOLYFILLMODE, EMRSETROP2, *PEMRSETROP2, EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
+  EMRSETICMMODE, *PEMRSETICMMODE, EMRSETTEXTALIGN,
 #if(WINVER >= 0x0500)
   EMRSETLAYOUT, *PEMRSETLAYOUT,
-#endif 
+#endif
   *PEMRSETTEXTALIGN;
 
 #include "pshpack2.h"
@@ -2109,6 +2241,9 @@ typedef struct tagENHMETARECORD {
 typedef struct tagHANDLETABLE {
        HGDIOBJ objectHandle[1];
 } HANDLETABLE,*PHANDLETABLE, *LPHANDLETABLE;
+
+#ifndef _TEXTMETRIC_DEFINED
+#define _TEXTMETRIC_DEFINED
 typedef struct tagTEXTMETRICA {
        LONG tmHeight;
        LONG tmAscent;
@@ -2153,13 +2288,15 @@ typedef struct tagTEXTMETRICW {
        BYTE tmPitchAndFamily;
        BYTE tmCharSet;
 } TEXTMETRICW,*PTEXTMETRICW,*LPTEXTMETRICW;
+#endif
+
 typedef struct _RGNDATAHEADER {
        DWORD dwSize;
        DWORD iType;
        DWORD nCount;
        DWORD nRgnSize;
        RECT rcBound;
-} RGNDATAHEADER;
+} RGNDATAHEADER, *PRGNDATAHEADER;
 typedef struct _RGNDATA {
        RGNDATAHEADER rdh;
        char Buffer[1];
@@ -2344,6 +2481,13 @@ typedef struct tagPIXELFORMATDESCRIPTOR {
        DWORD dwVisibleMask;
        DWORD dwDamageMask;
 } PIXELFORMATDESCRIPTOR,*PPIXELFORMATDESCRIPTOR,*LPPIXELFORMATDESCRIPTOR;
+
+typedef struct tagEMRPIXELFORMAT
+{
+    EMR emr;
+    PIXELFORMATDESCRIPTOR pfd;
+} EMRPIXELFORMAT, *PEMRPIXELFORMAT;
+
 typedef struct tagMETAFILEPICT {
        LONG mm;
        LONG xExt;
@@ -2509,7 +2653,7 @@ typedef struct _DESIGNVECTOR {
        DWORD dvReserved;
        DWORD dvNumAxes;
        LONG dvValues[MM_MAX_NUMAXES];
-} DESIGNVECTOR, *PDESIGNVECTOR, FAR *LPDESIGNVECTOR;
+} DESIGNVECTOR, *PDESIGNVECTOR, *LPDESIGNVECTOR;
 typedef struct tagENUMLOGFONTEXDVA
 {
        ENUMLOGFONTEXA elfEnumLogfontEx;
@@ -2554,28 +2698,99 @@ typedef struct _DISPLAY_DEVICEW {
   WCHAR DeviceID[128];
   WCHAR DeviceKey[128];
 } DISPLAY_DEVICEW, *PDISPLAY_DEVICEW, *LPDISPLAY_DEVICEW;
+#define MM_MAX_AXES_NAMELEN 16
+typedef struct _AXISINFOA
+{
+  LONG   axMinValue;
+  LONG   axMaxValue;
+  BYTE   axAxisName[MM_MAX_AXES_NAMELEN];
+} AXISINFOA, *PAXISINFOA, *LPAXISINFOA;
+typedef struct _AXISINFOW
+{
+  LONG   axMinValue;
+  LONG   axMaxValue;
+  WCHAR  axAxisName[MM_MAX_AXES_NAMELEN];
+} AXISINFOW, *PAXISINFOW, *LPAXISINFOW;
+typedef struct _AXESLISTA
+{
+  DWORD     axlReserved;
+  DWORD     axlNumAxes;
+  AXISINFOA axlAxisInfo[MM_MAX_NUMAXES];
+} AXESLISTA, *PAXESLISTA, *LPAXESLISTA;
+typedef struct _AXESLISTW
+{
+  DWORD     axlReserved;
+  DWORD     axlNumAxes;
+  AXISINFOW axlAxisInfo[MM_MAX_NUMAXES];
+} AXESLISTW, *PAXESLISTW, *LPAXESLISTW;
+typedef struct _ENUMTEXTMETRICA
+{
+    NEWTEXTMETRICEXA etmNewTextMetricEx;
+    AXESLISTA        etmAxesList;
+} ENUMTEXTMETRICA, *PENUMTEXTMETRICA, *LPENUMTEXTMETRICA;
+typedef struct _ENUMTEXTMETRICW
+{
+    NEWTEXTMETRICEXW etmNewTextMetricEx;
+    AXESLISTW        etmAxesList;
+} 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);
 
-#if (_WIN32_WINNT >= 0x0500)
-typedef struct _RGNDATAHEADER {
-  DWORD dwSize;
-  DWORD iType;
-  DWORD nCount;
-  DWORD nRgnSize;
-  RECT  rcBound;
-} RGNDATAHEADER, *PRGNDATAHEADER;
 #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);
+#ifdef UNICODE
+#define OLDFONTENUMPROC OLDFONTENUMPROCW
+#else
+#define OLDFONTENUMPROC OLDFONTENUMPROCA
+#endif
+
 typedef OLDFONTENUMPROCA FONTENUMPROCA;
 typedef OLDFONTENUMPROCW FONTENUMPROCW;
+
+#ifdef UNICODE
+typedef FONTENUMPROCW FONTENUMPROC;
+#else
+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);
 
@@ -2636,6 +2851,8 @@ HFONT WINAPI CreateFontA(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD
 HFONT WINAPI CreateFontW(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
 HFONT WINAPI CreateFontIndirectA(const LOGFONTA*);
 HFONT WINAPI CreateFontIndirectW(const LOGFONTW*);
+HFONT WINAPI CreateFontIndirectExA(const ENUMLOGFONTEXDVA *);
+HFONT WINAPI CreateFontIndirectExW(const ENUMLOGFONTEXDVW *);
 HPALETTE WINAPI CreateHalftonePalette(HDC);
 HBRUSH WINAPI CreateHatchBrush(int,COLORREF);
 HDC WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
@@ -2696,6 +2913,7 @@ 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 GdiAlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION);
 BOOL WINAPI GdiComment(HDC,UINT,const BYTE*);
 BOOL WINAPI GdiFlush(void);
 DWORD WINAPI GdiGetBatchLimit(void);
@@ -2720,6 +2938,7 @@ BOOL WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
 BOOL WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
 BOOL WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
 BOOL WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
+BOOL WINAPI GetCharABCWidthsI(HDC,UINT,UINT,LPWORD,LPABC);
 DWORD WINAPI GetCharacterPlacementA(HDC,LPCSTR,int,int,LPGCP_RESULTSA,DWORD);
 DWORD WINAPI GetCharacterPlacementW(HDC,LPCWSTR,int,int,LPGCP_RESULTSW,DWORD);
 BOOL WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT);
@@ -2736,6 +2955,10 @@ HGDIOBJ WINAPI GetCurrentObject(HDC,UINT);
 BOOL WINAPI GetCurrentPositionEx(HDC,LPPOINT);
 HCURSOR WINAPI GetCursor(void);
 BOOL WINAPI GetDCOrgEx(HDC,LPPOINT);
+#if (_WIN32_WINNT >= 0x0500)
+COLORREF WINAPI GetDCBrushColor(HDC);
+COLORREF WINAPI GetDCPenColor(HDC);
+#endif
 int WINAPI GetDeviceCaps(HDC,int);
 BOOL WINAPI GetDeviceGammaRamp(HDC,PVOID);
 UINT WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
@@ -2750,6 +2973,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);
+DWORD WINAPI GetFontUnicodeRanges(HDC,LPGLYPHSET);
+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*);
 DWORD WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
 int WINAPI GetGraphicsMode(HDC);
@@ -2888,6 +3114,10 @@ BOOL WINAPI SetICMProfileA(HDC,LPSTR);
 BOOL WINAPI SetICMProfileW(HDC,LPWSTR);
 int WINAPI SetMapMode(HDC,int);
 DWORD WINAPI SetMapperFlags(HDC,DWORD);
+#if (_WIN32_WINNT >= 0x0500)
+DWORD WINAPI SetLayout(HDC,DWORD);
+DWORD WINAPI GetLayout(HDC);
+#endif
 HMETAFILE WINAPI SetMetaFileBitsEx(UINT,const BYTE *);
 int WINAPI SetMetaRgn(HDC);
 BOOL WINAPI SetMiterLimit(HDC,FLOAT,PFLOAT);
@@ -2952,16 +3182,24 @@ BOOL WINAPI TransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT);
 #endif
 
 #ifdef UNICODE
+typedef AXESLISTW AXESLIST;
+typedef PAXESLISTW PAXESLIST;
+typedef LPAXESLISTW LPAXESLIST;
+typedef AXISINFOA AXISINFO;
+typedef PAXISINFOA PAXISINFO;
+typedef LPAXISINFOA LPAXISINFO;
 typedef WCHAR BCHAR;
 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;
 typedef LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV;
+typedef ENUMTEXTMETRICW ENUMTEXTMETRIC;
+typedef PENUMTEXTMETRICW PENUMTEXTMETRIC;
+typedef LPENUMTEXTMETRICW LPENUMTEXTMETRIC;
 typedef EXTLOGFONTW EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT;
 typedef GCP_RESULTSW GCP_RESULTS,*LPGCP_RESULTS;
 typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC;
@@ -2982,6 +3220,7 @@ typedef DISPLAY_DEVICEW DISPLAY_DEVICE, *PDISPLAY_DEVICE, *LPDISPLAY_DEVICE;
 #define CreateEnhMetaFile CreateEnhMetaFileW
 #define CreateFont CreateFontW
 #define CreateFontIndirect CreateFontIndirectW
+#define CreateFontIndirectEx CreateFontIndirectExW
 #define CreateIC CreateICW
 #define CreateMetaFile CreateMetaFileW
 #define CreateScalableFontResource CreateScalableFontResourceW
@@ -3024,16 +3263,24 @@ typedef DISPLAY_DEVICEW DISPLAY_DEVICE, *PDISPLAY_DEVICE, *LPDISPLAY_DEVICE;
 #define wglUseFontBitmaps wglUseFontBitmapsW
 #define wglUseFontOutlines wglUseFontOutlinesW
 #else
+typedef AXESLISTA AXESLIST;
+typedef PAXESLISTA PAXESLIST;
+typedef LPAXESLISTA LPAXESLIST;
+typedef AXISINFOA AXISINFO;
+typedef PAXISINFOA PAXISINFO;
+typedef LPAXISINFOA LPAXISINFO;
 typedef BYTE BCHAR;
 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;
 typedef LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV;
+typedef ENUMTEXTMETRICA ENUMTEXTMETRIC;
+typedef PENUMTEXTMETRICA PENUMTEXTMETRIC;
+typedef LPENUMTEXTMETRICA LPENUMTEXTMETRIC;
 typedef EXTLOGFONTA EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT;
 typedef GCP_RESULTSA GCP_RESULTS,*LPGCP_RESULTS;
 typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC;
@@ -3054,6 +3301,7 @@ typedef DISPLAY_DEVICEA DISPLAY_DEVICE, *PDISPLAY_DEVICE, *LPDISPLAY_DEVICE;
 #define CreateEnhMetaFile CreateEnhMetaFileA
 #define CreateFont CreateFontA
 #define CreateFontIndirect CreateFontIndirectA
+#define CreateFontIndirectEx CreateFontIndirectExA
 #define CreateIC CreateICA
 #define CreateMetaFile CreateMetaFileA
 #define CreateScalableFontResource CreateScalableFontResourceA
@@ -3097,6 +3345,11 @@ typedef DISPLAY_DEVICEA DISPLAY_DEVICE, *PDISPLAY_DEVICE, *LPDISPLAY_DEVICE;
 #define wglUseFontOutlines wglUseFontOutlinesA
 #endif
 #endif
+
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
 #ifdef __cplusplus
 }
 #endif