diff options
Diffstat (limited to 'src/VBox/Devices/Graphics/shaderlib/wine/include/wingdi.h')
-rw-r--r-- | src/VBox/Devices/Graphics/shaderlib/wine/include/wingdi.h | 3809 |
1 files changed, 3809 insertions, 0 deletions
diff --git a/src/VBox/Devices/Graphics/shaderlib/wine/include/wingdi.h b/src/VBox/Devices/Graphics/shaderlib/wine/include/wingdi.h new file mode 100644 index 00000000..b537bf31 --- /dev/null +++ b/src/VBox/Devices/Graphics/shaderlib/wine/include/wingdi.h @@ -0,0 +1,3809 @@ +/* + * Copyright (C) the Wine project + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + +#ifndef _WINGDI_ +#define _WINGDI_ +#ifndef NOGDI + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _GDI32_ +#define WINGDIAPI +#else +#define WINGDIAPI DECLSPEC_IMPORT +#endif + +typedef struct _ABCFLOAT { + FLOAT abcfA; + FLOAT abcfB; + FLOAT abcfC; +} ABCFLOAT, *PABCFLOAT, *LPABCFLOAT; + +#define FONTMAPPER_MAX 10 + +typedef struct +{ + WORD wFirst; + WORD wSecond; + INT iKernAmount; +} KERNINGPAIR, *LPKERNINGPAIR; + +typedef struct tagPIXELFORMATDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerType; + BYTE bReserved; + DWORD dwLayerMask; + DWORD dwVisibleMask; + DWORD dwDamageMask; +} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR; + +#define PFD_TYPE_RGBA 0 +#define PFD_TYPE_COLORINDEX 1 + +#define PFD_MAIN_PLANE 0 +#define PFD_OVERLAY_PLANE 1 +#define PFD_UNDERLAY_PLANE (-1) + +#define PFD_DOUBLEBUFFER 0x00000001 +#define PFD_STEREO 0x00000002 +#define PFD_DRAW_TO_WINDOW 0x00000004 +#define PFD_DRAW_TO_BITMAP 0x00000008 +#define PFD_SUPPORT_GDI 0x00000010 +#define PFD_SUPPORT_OPENGL 0x00000020 +#define PFD_GENERIC_FORMAT 0x00000040 +#define PFD_NEED_PALETTE 0x00000080 +#define PFD_NEED_SYSTEM_PALETTE 0x00000100 +#define PFD_SWAP_EXCHANGE 0x00000200 +#define PFD_SWAP_COPY 0x00000400 +#define PFD_SWAP_LAYER_BUFFERS 0x00000800 +#define PFD_GENERIC_ACCELERATED 0x00001000 +#define PFD_SUPPORT_COMPOSITION 0x00008000 /* Vista stuff */ + +#define PFD_DEPTH_DONTCARE 0x20000000 +#define PFD_DOUBLEBUFFER_DONTCARE 0x40000000 +#define PFD_STEREO_DONTCARE 0x80000000 + +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, *LPCOLORADJUSTMENT; + +#define CA_NEGATIVE 0x0001 +#define CA_LOG_FILTER 0x0002 + +#define ILLUMINANT_DEVICE_DEFAULT 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_TUNGSTEN ILLUMINANT_A +#define ILLUMINANT_DAYLIGHT ILLUMINANT_C +#define ILLUMINANT_FLUORESCENT ILLUMINANT_F2 +#define ILLUMINANT_NTSC ILLUMINANT_C + +#define RGB_GAMMA_MIN (WORD)02500 +#define RGB_GAMMA_MAX (WORD)65000 + +#define REFERENCE_WHITE_MIN (WORD)6000 +#define REFERENCE_WHITE_MAX (WORD)10000 +#define REFERENCE_BLACK_MIN (WORD)0 +#define REFERENCE_BLACK_MAX (WORD)4000 + +#define COLOR_ADJ_MIN ((SHORT)-100) +#define COLOR_ADJ_MAX (SHORT) 100 + +typedef LONG FXPT16DOT16, *LPFXPT16DOT16; +typedef LONG FXPT2DOT30, *LPFXPT2DOT30; +typedef LONG LCSCSTYPE; +typedef LONG LCSGAMUTMATCH; + +#define LCS_sRGB 0x73524742 /* 'sRGB' */ +#define LCS_WINDOWS_COLOR_SPACE 0x57696e20 /* 'Win ' */ + +#define LCS_CALIBRATED_RGB __MSABI_LONG(0x00000000) +#define LCS_DEVICE_RGB __MSABI_LONG(0x00000001) +#define LCS_DEVICE_CMYK __MSABI_LONG(0x00000002) + +#define LCS_GM_BUSINESS __MSABI_LONG(0x00000001) +#define LCS_GM_GRAPHICS __MSABI_LONG(0x00000002) +#define LCS_GM_IMAGES __MSABI_LONG(0x00000004) + +#define CM_OUT_OF_GAMUT 255 +#define CM_IN_GAMUT 0 + +typedef struct tagCIEXYZ +{ + FXPT2DOT30 ciexyzX; + FXPT2DOT30 ciexyzY; + FXPT2DOT30 ciexyzZ; +} CIEXYZ, *LPCIEXYZ; + +typedef struct tagCIEXYZTRIPLE +{ + CIEXYZ ciexyzRed; + CIEXYZ ciexyzGreen; + CIEXYZ ciexyzBlue; +} CIEXYZTRIPLE, *LPCIEXYZTRIPLE; + +typedef struct tagLOGCOLORSPACEA +{ + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + CHAR lcsFilename[MAX_PATH]; +} LOGCOLORSPACEA, *LPLOGCOLORSPACEA; + + typedef struct tagLOGCOLORSPACEW +{ + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + WCHAR lcsFilename[MAX_PATH]; +} LOGCOLORSPACEW, *LPLOGCOLORSPACEW; + +DECL_WINELIB_TYPE_AW(LPLOGCOLORSPACE) +DECL_WINELIB_TYPE_AW(LOGCOLORSPACE) + +#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 +#define DC_BINADJUST 19 +#define DC_EMF_COMPLIANT 20 +#define DC_DATATYPE_PRODUCED 21 +#define DC_COLLATE 22 +#define DC_MANUFACTURER 23 +#define DC_MODEL 24 +#define DC_PERSONALITY 25 +#define DC_PRINTRATE 26 +#define DC_PRINTRATEUNIT 27 +#define DC_PRINTERMEM 28 +#define DC_MEDIAREADY 29 +#define DC_STAPLE 30 +#define DC_PRINTRATEPPM 31 +#define DC_COLORDEVICE 32 +#define DC_NUP 33 +#define DC_MEDIATYPENAMES 34 +#define DC_MEDIATYPES 35 + +#define DCTT_BITMAP __MSABI_LONG(0x00000001) +#define DCTT_DOWNLOAD __MSABI_LONG(0x00000002) +#define DCTT_SUBDEV __MSABI_LONG(0x00000004) +#define DCTT_DOWNLOAD_OUTLINE __MSABI_LONG(0x00000008) + +#define DCBA_FACEUPNONE 0x0000 +#define DCBA_FACEUPCENTER 0x0001 +#define DCBA_FACEUPLEFT 0x0002 +#define DCBA_FACEUPRIGHT 0x0003 +#define DCBA_FACEDOWNNONE 0x0100 +#define DCBA_FACEDOWNCENTER 0x0101 +#define DCBA_FACEDOWNLEFT 0x0102 +#define DCBA_FACEDOWNRIGHT 0x0103 + +#define PRINTRATEUNIT_PPM 1 +#define PRINTRATEUNIT_CPS 2 +#define PRINTRATEUNIT_LPM 3 +#define PRINTRATEUNIT_IPM 4 + +/* Flag returned from Escape QUERYDIBSUPPORT */ +#define QDI_SETDIBITS 1 +#define QDI_GETDIBITS 2 +#define QDI_DIBTOSCREEN 4 +#define QDI_STRETCHDIB 8 + + +/* GDI Escape commands */ +#define NEWFRAME 1 +#define ABORTDOC 2 +#define NEXTBAND 3 +#define SETCOLORTABLE 4 +#define GETCOLORTABLE 5 +#define FLUSHOUTPUT 6 +#define DRAFTMODE 7 +#define QUERYESCSUPPORT 8 +#define SETABORTPROC 9 +#define STARTDOC 10 +#define ENDDOC 11 +#define GETPHYSPAGESIZE 12 +#define GETPRINTINGOFFSET 13 +#define GETSCALINGFACTOR 14 +#define MFCOMMENT 15 +#define GETPENWIDTH 16 +#define SETCOPYCOUNT 17 +#define SELECTPAPERSOURCE 18 +#define DEVICEDATA 19 +#define PASSTHROUGH 19 +#define GETTECHNOLGY 20 +#define GETTECHNOLOGY 20 /* yes, both of them */ +#define SETLINECAP 21 +#define SETLINEJOIN 22 +#define SETMITERLIMIT 23 +#define BANDINFO 24 +#define DRAWPATTERNRECT 25 +#define GETVECTORPENSIZE 26 +#define GETVECTORBRUSHSIZE 27 +#define ENABLEDUPLEX 28 +#define GETSETPAPERBINS 29 +#define GETSETPRINTORIENT 30 +#define ENUMPAPERBINS 31 +#define SETDIBSCALING 32 +#define EPSPRINTING 33 +#define ENUMPAPERMETRICS 34 +#define GETSETPAPERMETRICS 35 +#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 +#define SETALLJUSTVALUES 771 +#define SETCHARSET 772 + +#define STRETCHBLT 2048 +#define GETSETSCREENPARAMS 3072 +#define QUERYDIBSUPPORT 3073 +#define BEGIN_PATH 4096 +#define CLIP_TO_PATH 4097 +#define END_PATH 4098 +#define EXT_DEVICE_CAPS 4099 +#define RESTORE_CTM 4100 +#define SAVE_CTM 4101 +#define SET_ARC_DIRECTION 4102 +#define SET_BACKGROUND_COLOR 4103 +#define SET_POLY_MODE 4104 +#define SET_SCREEN_ANGLE 4105 +#define SET_SPREAD 4106 +#define TRANSFORM_CTM 4107 +#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 +#define POSTSCRIPT_IDENTIFY 4117 +#define POSTSCRIPT_INJECTION 4118 +#define CHECKJPEGFORMAT 4119 +#define CHECKPNGFORMAT 4120 +#define GET_PS_FEATURESETTING 4121 +#define GDIPLUS_TS_QUERYVER 4122 +#define GDIPLUS_TS_RECORD 4123 + +/* for POSTSCRIPT_IDENTIFY */ +#define PSIDENT_GDICENTRIC 0 +#define PSIDENT_PSCENTRIC 1 + + +#define QDI_SETDIBITS 1 +#define QDI_GETDIBITS 2 +#define QDI_DIBTOSCREEN 4 +#define QDI_STRETCHDIB 8 + +/* Spooler Error Codes */ +#define SP_NOTREPORTED 0x4000 +#define SP_ERROR (-1) +#define SP_APPABORT (-2) +#define SP_USERABORT (-3) +#define SP_OUTOFDISK (-4) +#define SP_OUTOFMEMORY (-5) + +#define PR_JOBSTATUS 0 + + /* Raster operations */ + +#define R2_BLACK 1 +#define R2_NOTMERGEPEN 2 +#define R2_MASKNOTPEN 3 +#define R2_NOTCOPYPEN 4 +#define R2_MASKPENNOT 5 +#define R2_NOT 6 +#define R2_XORPEN 7 +#define R2_NOTMASKPEN 8 +#define R2_MASKPEN 9 +#define R2_NOTXORPEN 10 +#define R2_NOP 11 +#define R2_MERGENOTPEN 12 +#define R2_COPYPEN 13 +#define R2_MERGEPENNOT 14 +#define R2_MERGEPEN 15 +#define R2_WHITE 16 +#define R2_LAST 16 + +#define MAKEROP4(fore,back) (DWORD)((((back)<<8)&0xFF000000)|(fore)) + +#define SRCCOPY 0xcc0020 +#define SRCPAINT 0xee0086 +#define SRCAND 0x8800c6 +#define SRCINVERT 0x660046 +#define SRCERASE 0x440328 +#define NOTSRCCOPY 0x330008 +#define NOTSRCERASE 0x1100a6 +#define MERGECOPY 0xc000ca +#define MERGEPAINT 0xbb0226 +#define PATCOPY 0xf00021 +#define PATPAINT 0xfb0a09 +#define PATINVERT 0x5a0049 +#define DSTINVERT 0x550009 +#define BLACKNESS 0x000042 +#define WHITENESS 0xff0062 + + /* StretchBlt() modes */ +#define BLACKONWHITE 1 +#define WHITEONBLACK 2 +#define COLORONCOLOR 3 +#define HALFTONE 4 +#define MAXSTRETCHBLTMODE 4 + +#define STRETCH_ANDSCANS BLACKONWHITE +#define STRETCH_ORSCANS WHITEONBLACK +#define STRETCH_DELETESCANS COLORONCOLOR +#define STRETCH_HALFTONE HALFTONE + + /* Colors */ + +#define RGB(r,g,b) ((COLORREF)((BYTE)(r) | ((BYTE)(g) << 8) | ((BYTE)(b) << 16))) +#define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b)) +#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (WORD)(i))) + +#define GetRValue(rgb) ((BYTE) (rgb) ) +#define GetGValue(rgb) ((BYTE) ((rgb) >> 8)) +#define GetBValue(rgb) ((BYTE) ((rgb) >> 16)) + +#define GetKValue(cmyk) ((BYTE) (cmyk) ) +#define GetYValue(cmyk) ((BYTE) ((cmyk) >> 8)) +#define GetMValue(cmyk) ((BYTE) ((cmyk) >> 16)) +#define GetCValue(cmyk) ((BYTE) ((cmyk) >> 24)) + +#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24))) + +/* ICM stuff */ +typedef INT (CALLBACK *ICMENUMPROCA)(LPSTR lpszFilename,LPARAM lParam); +typedef INT (CALLBACK *ICMENUMPROCW)(LPWSTR lpszFilename,LPARAM lParam); +DECL_WINELIB_TYPE_AW(ICMENUMPROC) + + +#define ICM_OFF 1 +#define ICM_ON 2 +#define ICM_QUERY 3 + + /* Bounds Accumulation APIs */ +#define DCB_RESET 0x0001 +#define DCB_ACCUMULATE 0x0002 +#define DCB_DIRTY DCB_ACCUMULATE +#define DCB_SET (DCB_RESET | DCB_ACCUMULATE) +#define DCB_ENABLE 0x0004 +#define DCB_DISABLE 0x0008 + +typedef struct +{ + LONG paXCount; + LONG paYCount; + LONG paXExt; + LONG paYExt; + BYTE paRGBs; +} PELARRAY, *PPELARRAY, *LPPELARRAY; + + /* Bitmaps */ + +typedef struct +{ + INT bmType; + INT bmWidth; + INT bmHeight; + INT bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; +} BITMAP, *PBITMAP, *LPBITMAP; + + + /* Brushes */ + +typedef struct +{ + UINT lbStyle; + COLORREF lbColor; + ULONG_PTR lbHatch; +} LOGBRUSH, *PLOGBRUSH, *LPLOGBRUSH; + +typedef struct +{ + UINT lbStyle; + COLORREF lbColor; + ULONG lbHatch; +} LOGBRUSH32, *PLOGBRUSH32, *LPLOGBRUSH32; + +typedef LOGBRUSH PATTERN, *PPATTERN, *LPPATTERN; + + + /* Brush styles */ +#define BS_SOLID 0 +#define BS_NULL 1 +#define BS_HOLLOW 1 +#define BS_HATCHED 2 +#define BS_PATTERN 3 +#define BS_INDEXED 4 +#define BS_DIBPATTERN 5 +#define BS_DIBPATTERNPT 6 +#define BS_PATTERN8X8 7 +#define BS_DIBPATTERN8X8 8 +#define BS_MONOPATTERN 9 + + /* Hatch styles */ +#define HS_HORIZONTAL 0 +#define HS_VERTICAL 1 +#define HS_FDIAGONAL 2 +#define HS_BDIAGONAL 3 +#define HS_CROSS 4 +#define HS_DIAGCROSS 5 +#define HS_API_MAX 12 + + /* Fonts */ + +#define LF_FACESIZE 32 +#define LF_FULLFACESIZE 64 + +#define RASTER_FONTTYPE 0x0001 +#define DEVICE_FONTTYPE 0x0002 +#define TRUETYPE_FONTTYPE 0x0004 + +typedef struct tagLOGFONTA +{ + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + CHAR lfFaceName[LF_FACESIZE]; +} LOGFONTA, *PLOGFONTA, *LPLOGFONTA; + +typedef struct tagLOGFONTW +{ + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + WCHAR lfFaceName[LF_FACESIZE]; +} LOGFONTW, *PLOGFONTW, *LPLOGFONTW; + +DECL_WINELIB_TYPE_AW(LOGFONT) +DECL_WINELIB_TYPE_AW(PLOGFONT) +DECL_WINELIB_TYPE_AW(LPLOGFONT) + +typedef struct +{ + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; +} ENUMLOGFONTA, *LPENUMLOGFONTA; + +typedef struct +{ + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; +} ENUMLOGFONTW, *LPENUMLOGFONTW; + +DECL_WINELIB_TYPE_AW(ENUMLOGFONT) +DECL_WINELIB_TYPE_AW(LPENUMLOGFONT) + +typedef struct +{ + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; + BYTE elfScript[LF_FACESIZE]; +} ENUMLOGFONTEXA,*LPENUMLOGFONTEXA; + +typedef struct +{ + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; + WCHAR elfScript[LF_FACESIZE]; +} ENUMLOGFONTEXW,*LPENUMLOGFONTEXW; + +DECL_WINELIB_TYPE_AW(ENUMLOGFONTEX) +DECL_WINELIB_TYPE_AW(LPENUMLOGFONTEX) + +#define MM_MAX_NUMAXES 16 + +typedef struct +{ + DWORD dvReserved; + DWORD dvNumAxes; + LONG dvValues[MM_MAX_NUMAXES]; +} DESIGNVECTOR, *PDESIGNVECTOR; + +typedef struct +{ + ENUMLOGFONTEXA elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; +} ENUMLOGFONTEXDVA, *PENUMLOGFONTEXDVA; + +typedef struct +{ + ENUMLOGFONTEXW elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; +} ENUMLOGFONTEXDVW, *PENUMLOGFONTEXDVW; + +DECL_WINELIB_TYPE_AW(ENUMLOGFONTEXDV) +DECL_WINELIB_TYPE_AW(PENUMLOGFONTEXDV) + +/* + * The FONTSIGNATURE tells which Unicode ranges and which code pages + * have glyphs in a font. + * + * fsUsb 128-bit bitmap. The most significant bits are 10 (magic number). + * The remaining 126 bits map the Unicode ISO 10646 subranges + * for which the font provides glyphs. + * + * fsCsb 64-bit bitmap. The low 32 bits map the Windows codepages for + * which the font provides glyphs. The high 32 bits are for + * non Windows codepages. + */ +typedef struct +{ + DWORD fsUsb[4]; + DWORD fsCsb[2]; +} FONTSIGNATURE, *PFONTSIGNATURE, *LPFONTSIGNATURE; + +typedef struct +{ + UINT ciCharset; /* character set */ + UINT ciACP; /* ANSI code page */ + FONTSIGNATURE fs; +} CHARSETINFO, *PCHARSETINFO, *LPCHARSETINFO; + +/* Flags for TranslateCharsetInfo */ +#define TCI_SRCCHARSET 1 +#define TCI_SRCCODEPAGE 2 +#define TCI_SRCFONTSIG 3 + +typedef struct +{ + DWORD lsUsb[4]; + DWORD lsCsbDefault[2]; + DWORD lsCsbSupported[2]; +} LOCALESIGNATURE, *PLOCALESIGNATURE, *LPLOCALESIGNATURE; + + +/* Flags for ModifyWorldTransform */ +#define MWT_IDENTITY 1 +#define MWT_LEFTMULTIPLY 2 +#define MWT_RIGHTMULTIPLY 3 +#define MWT_MIN MWT_IDENTITY +#define MWT_MAX MWT_RIGHTMULTIPLY + +/* Object Definitions for EnumObjects() */ +#define OBJ_PEN 1 +#define OBJ_BRUSH 2 +#define OBJ_DC 3 +#define OBJ_METADC 4 +#define OBJ_PAL 5 +#define OBJ_FONT 6 +#define OBJ_BITMAP 7 +#define OBJ_REGION 8 +#define OBJ_METAFILE 9 +#define OBJ_MEMDC 10 +#define OBJ_EXTPEN 11 +#define OBJ_ENHMETADC 12 +#define OBJ_ENHMETAFILE 13 +#define OBJ_COLORSPACE 14 + +typedef struct tagXFORM +{ + FLOAT eM11; + FLOAT eM12; + FLOAT eM21; + FLOAT eM22; + FLOAT eDx; + FLOAT eDy; +} XFORM, *PXFORM, *LPXFORM; + + /* lfWeight values */ +#define FW_DONTCARE 0 +#define FW_THIN 100 +#define FW_EXTRALIGHT 200 +#define FW_ULTRALIGHT 200 +#define FW_LIGHT 300 +#define FW_NORMAL 400 +#define FW_REGULAR 400 +#define FW_MEDIUM 500 +#define FW_SEMIBOLD 600 +#define FW_DEMIBOLD 600 +#define FW_BOLD 700 +#define FW_EXTRABOLD 800 +#define FW_ULTRABOLD 800 +#define FW_HEAVY 900 +#define FW_BLACK 900 + + /* lfCharSet values */ +#define ANSI_CHARSET (BYTE)0 /* CP1252, ansi-0, iso8859-{1,15} */ +#define DEFAULT_CHARSET (BYTE)1 +#define SYMBOL_CHARSET (BYTE)2 +#define SHIFTJIS_CHARSET (BYTE)128 /* CP932 */ +#define HANGEUL_CHARSET (BYTE)129 /* CP949, ksc5601.1987-0 */ +#define HANGUL_CHARSET HANGEUL_CHARSET +#define GB2312_CHARSET (BYTE)134 /* CP936, gb2312.1980-0 */ +#define CHINESEBIG5_CHARSET (BYTE)136 /* CP950, big5.et-0 */ +#define GREEK_CHARSET (BYTE)161 /* CP1253 */ +#define TURKISH_CHARSET (BYTE)162 /* CP1254, -iso8859-9 */ +#define HEBREW_CHARSET (BYTE)177 /* CP1255, -iso8859-8 */ +#define ARABIC_CHARSET (BYTE)178 /* CP1256, -iso8859-6 */ +#define BALTIC_CHARSET (BYTE)186 /* CP1257, -iso8859-13 */ +#define VIETNAMESE_CHARSET (BYTE)163 /* CP1258 */ +#define RUSSIAN_CHARSET (BYTE)204 /* CP1251, -iso8859-5 */ +#define EE_CHARSET (BYTE)238 /* CP1250, -iso8859-2 */ +#define EASTEUROPE_CHARSET EE_CHARSET +#define THAI_CHARSET (BYTE)222 /* CP874, iso8859-11, tis620 */ +#define JOHAB_CHARSET (BYTE)130 /* korean (johab) CP1361 */ +#define MAC_CHARSET (BYTE)77 +#define OEM_CHARSET (BYTE)255 +/* 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 FS_LATIN1 __MSABI_LONG(0x00000001) +#define FS_LATIN2 __MSABI_LONG(0x00000002) +#define FS_CYRILLIC __MSABI_LONG(0x00000004) +#define FS_GREEK __MSABI_LONG(0x00000008) +#define FS_TURKISH __MSABI_LONG(0x00000010) +#define FS_HEBREW __MSABI_LONG(0x00000020) +#define FS_ARABIC __MSABI_LONG(0x00000040) +#define FS_BALTIC __MSABI_LONG(0x00000080) +#define FS_VIETNAMESE __MSABI_LONG(0x00000100) +#define FS_THAI __MSABI_LONG(0x00010000) +#define FS_JISJAPAN __MSABI_LONG(0x00020000) +#define FS_CHINESESIMP __MSABI_LONG(0x00040000) +#define FS_WANSUNG __MSABI_LONG(0x00080000) +#define FS_CHINESETRAD __MSABI_LONG(0x00100000) +#define FS_JOHAB __MSABI_LONG(0x00200000) +#define FS_SYMBOL __MSABI_LONG(0x80000000) + + /* lfOutPrecision values */ +#define OUT_DEFAULT_PRECIS 0 +#define OUT_STRING_PRECIS 1 +#define OUT_CHARACTER_PRECIS 2 +#define OUT_STROKE_PRECIS 3 +#define OUT_TT_PRECIS 4 +#define OUT_DEVICE_PRECIS 5 +#define OUT_RASTER_PRECIS 6 +#define OUT_TT_ONLY_PRECIS 7 +#define OUT_OUTLINE_PRECIS 8 + + /* lfClipPrecision values */ +#define CLIP_DEFAULT_PRECIS 0x00 +#define CLIP_CHARACTER_PRECIS 0x01 +#define CLIP_STROKE_PRECIS 0x02 +#define CLIP_MASK 0x0F +#define CLIP_LH_ANGLES 0x10 +#define CLIP_TT_ALWAYS 0x20 +#define CLIP_EMBEDDED 0x80 + + /* lfQuality values */ +#define DEFAULT_QUALITY 0 +#define DRAFT_QUALITY 1 +#define PROOF_QUALITY 2 +#define NONANTIALIASED_QUALITY 3 +#define ANTIALIASED_QUALITY 4 +#define CLEARTYPE_QUALITY 5 +#define CLEARTYPE_NATURAL_QUALITY 6 + + /* lfPitchAndFamily pitch values */ +#define DEFAULT_PITCH 0x00 +#define FIXED_PITCH 0x01 +#define VARIABLE_PITCH 0x02 +#define MONO_FONT 0x08 + +#define FF_DONTCARE 0x00 +#define FF_ROMAN 0x10 +#define FF_SWISS 0x20 +#define FF_MODERN 0x30 +#define FF_SCRIPT 0x40 +#define FF_DECORATIVE 0x50 + +#ifndef _TEXTMETRIC_DEFINED +#define _TEXTMETRIC_DEFINED + +typedef struct tagTEXTMETRICA +{ + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA; + +typedef struct tagTEXTMETRICW +{ + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; +} TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW; + +DECL_WINELIB_TYPE_AW(TEXTMETRIC) +DECL_WINELIB_TYPE_AW(PTEXTMETRIC) +DECL_WINELIB_TYPE_AW(LPTEXTMETRIC) +#endif /* _TEXTMETRIC_DEFINED */ + + +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 PANOSE_COUNT 10 + +#define PAN_FAMILYTYPE_INDEX 0 +#define PAN_SERIFSTYLE_INDEX 1 +#define PAN_WEIGTH_INDEX 2 +#define PAN_PROPORTION_INDEX 3 +#define PAN_CONTRAST_INDEX 4 +#define PAN_STROKEVARIATION_INDEX 5 +#define PAN_ARMSTYLE_INDEX 6 +#define PAN_LETTERFORM_INDEX 7 +#define PAN_MIDLINE_INDEX 8 +#define PAN_XHEIGHT_INDEX 9 + +#define PAN_CULTURE_LATIN 0 + +#define PAN_ANY 0 +#define PAN_NO_FIT 1 + +#define PAN_FAMILY_TEXT_DISPLAY 2 +#define PAN_FAMILY_SCRIPT 3 +#define PAN_FAMILY_DECORATIVE 4 +#define PAN_FAMILY_PICTORIAL 5 + +#define PAN_SERIF_COVE 2 +#define PAN_SERIF_OBTUSE_COVE 3 +#define PAN_SERIF_SQUARE_COVE 4 +#define PAN_SERIF_OBTUSE_SQUARE_COVE 5 +#define PAN_SERIF_SQUARE 6 +#define PAN_SERIF_THIN 7 +#define PAN_SERIF_BONE 8 +#define PAN_SERIF_EXAGGERATED 9 +#define PAN_SERIF_TRIANGLE 10 +#define PAN_SERIF_NORMAL_SANS 11 +#define PAN_SERIF_OBTUSE_SANS 12 +#define PAN_SERIF_PERP_SANS 13 +#define PAN_SERIF_FLARED 14 +#define PAN_SERIF_ROUNDED 15 + +#define PAN_WEIGHT_VERY_LIGHT 2 +#define PAN_WEIGHT_LIGHT 3 +#define PAN_WEIGHT_THIN 4 +#define PAN_WEIGHT_BOOK 5 +#define PAN_WEIGHT_MEDIUM 6 +#define PAN_WEIGHT_DEMI 7 +#define PAN_WEIGHT_BOLD 8 +#define PAN_WEIGHT_HEAVY 9 +#define PAN_WEIGHT_BLACK 10 +#define PAN_WEIGHT_NORD 11 + +#define PAN_PROP_OLD_STYLE 2 +#define PAN_PROP_MODERN 3 +#define PAN_PROP_EVEN_WIDTH 4 +#define PAN_PROP_EXPANDED 5 +#define PAN_PROP_CONDENSED 6 +#define PAN_PROP_VERY_EXPANDED 7 +#define PAN_PROP_VERY_CONDENSED 8 +#define PAN_PROP_MONOSPACED 9 + +#define PAN_CONTRAST_NONE 2 +#define PAN_CONTRAST_VERY_LOW 3 +#define PAN_CONTRAST_LOW 4 +#define PAN_CONTRAST_MEDIUM_LOW 5 +#define PAN_CONTRAST_MEDIUM 6 +#define PAN_CONTRAST_MEDIUM_HIGH 7 +#define PAN_CONTRAST_HIGH 8 +#define PAN_CONTRAST_VERY_HIGH 9 + +#define PAN_STROKE_GRADUAL_DIAG 2 +#define PAN_STROKE_GRADUAL_TRAN 3 +#define PAN_STROKE_GRADUAL_VERT 4 +#define PAN_STROKE_GRADUAL_HORZ 5 +#define PAN_STROKE_RAPID_VERT 6 +#define PAN_STROKE_RAPID_HORZ 7 +#define PAN_STROKE_INSTANT_VERT 8 + +#define PAN_STRAIGHT_ARMS_HORZ 2 +#define PAN_STRAIGHT_ARMS_WEDGE 3 +#define PAN_STRAIGHT_ARMS_VERT 4 +#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5 +#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6 +#define PAN_BENT_ARMS_HORZ 7 +#define PAN_BENT_ARMS_WEDGE 8 +#define PAN_BENT_ARMS_VERT 9 +#define PAN_BENT_ARMS_SINGLE_SERIF 10 +#define PAN_BENT_ARMS_DOUBLE_SERIF 11 + +#define PAN_LETT_NORMAL_COMPACT 2 +#define PAN_LETT_NORMAL_WEIGHTED 3 +#define PAN_LETT_NORMAL_BOXED 4 +#define PAN_LETT_NORMAL_FLATTENED 5 +#define PAN_LETT_NORMAL_ROUNDED 6 +#define PAN_LETT_NORMAL_OFF_CENTER 7 +#define PAN_LETT_NORMAL_SQUARE 8 +#define PAN_LETT_OBLIQUE_COMPACT 9 +#define PAN_LETT_OBLIQUE_WEIGHTED 10 +#define PAN_LETT_OBLIQUE_BOXED 11 +#define PAN_LETT_OBLIQUE_FLATTENED 12 +#define PAN_LETT_OBLIQUE_ROUNDED 13 +#define PAN_LETT_OBLIQUE_OFF_CENTER 14 +#define PAN_LETT_OBLIQUE_SQUARE 15 + +#define PAN_MIDLINE_STANDARD_TRIMMED 2 +#define PAN_MIDLINE_STANDARD_POINTED 3 +#define PAN_MIDLINE_STANDARD_SERIFED 4 +#define PAN_MIDLINE_HIGH_TRIMMED 5 +#define PAN_MIDLINE_HIGH_POINTED 6 +#define PAN_MIDLINE_HIGH_SERIFED 7 +#define PAN_MIDLINE_CONSTANT_TRIMMED 8 +#define PAN_MIDLINE_CONSTANT_POINTED 9 +#define PAN_MIDLINE_CONSTANT_SERIFED 10 +#define PAN_MIDLINE_LOW_TRIMMED 11 +#define PAN_MIDLINE_LOW_POINTED 12 +#define PAN_MIDLINE_LOW_SERIFED 13 + +#define PAN_XHEIGHT_CONSTANT_SMALL 2 +#define PAN_XHEIGHT_CONSTANT_STANDARD 3 +#define PAN_XHEIGHT_CONSTANT_LARGE 4 +#define PAN_XHEIGHT_DUCKING_SMALL 5 +#define PAN_XHEIGHT_DUCKING_STANDARD 6 +#define PAN_XHEIGHT_DUCKING_LARGE 7 + +#define ELF_VENDOR_SIZE 4 +typedef struct +{ + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; + PANOSE elfPanose; +} EXTLOGFONTA, *PEXTLOGFONTA, *LPEXTLOGFONTA; + +typedef struct +{ + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; + PANOSE elfPanose; +} EXTLOGFONTW, *PEXTLOGFONTW, *LPEXTLOGFONTW; + +DECL_WINELIB_TYPE_AW(EXTLOGFONT) +DECL_WINELIB_TYPE_AW(PEXTLOGFONT) +DECL_WINELIB_TYPE_AW(LPEXTLOGFONT) + +#define ELF_VERSION 0 +#define ELF_CULTURE_LATIN 0 + +typedef struct _OUTLINETEXTMETRICA +{ + UINT otmSize; + TEXTMETRICA otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + INT otmsCharSlopeRise; + INT otmsCharSlopeRun; + INT otmItalicAngle; + UINT otmEMSquare; + INT otmAscent; + INT otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + INT otmMacAscent; + INT otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + INT otmsStrikeoutPosition; + INT otmsUnderscoreSize; + INT otmsUnderscorePosition; + LPSTR otmpFamilyName; + LPSTR otmpFaceName; + LPSTR otmpStyleName; + LPSTR otmpFullName; +} OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, *LPOUTLINETEXTMETRICA; + +typedef struct _OUTLINETEXTMETRICW +{ + UINT otmSize; + TEXTMETRICW otmTextMetrics; + BYTE otmFiller; + PANOSE otmPanoseNumber; + UINT otmfsSelection; + UINT otmfsType; + INT otmsCharSlopeRise; + INT otmsCharSlopeRun; + INT otmItalicAngle; + UINT otmEMSquare; + INT otmAscent; + INT otmDescent; + UINT otmLineGap; + UINT otmsCapEmHeight; + UINT otmsXHeight; + RECT otmrcFontBox; + INT otmMacAscent; + INT otmMacDescent; + UINT otmMacLineGap; + UINT otmusMinimumPPEM; + POINT otmptSubscriptSize; + POINT otmptSubscriptOffset; + POINT otmptSuperscriptSize; + POINT otmptSuperscriptOffset; + UINT otmsStrikeoutSize; + INT otmsStrikeoutPosition; + INT otmsUnderscoreSize; + INT otmsUnderscorePosition; + LPSTR otmpFamilyName; + LPSTR otmpFaceName; + LPSTR otmpStyleName; + LPSTR otmpFullName; +} OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, *LPOUTLINETEXTMETRICW; + +DECL_WINELIB_TYPE_AW(OUTLINETEXTMETRIC) +DECL_WINELIB_TYPE_AW(POUTLINETEXTMETRIC) +DECL_WINELIB_TYPE_AW(LPOUTLINETEXTMETRIC) + +typedef struct +{ + INT x; + INT y; + UINT n; + LPCSTR lpstr; + UINT uiFlags; + RECT rcl; + INT *pdx; +} POLYTEXTA, *PPOLYTEXTA, *LPPOLYTEXTA; + +typedef struct +{ + INT x; + INT y; + UINT n; + LPCWSTR lpstr; + UINT uiFlags; + RECT rcl; + INT *pdx; +} POLYTEXTW, *PPOLYTEXTW, *LPPOLYTEXTW; + +DECL_WINELIB_TYPE_AW(POLYTEXT) +DECL_WINELIB_TYPE_AW(PPOLYTEXT) +DECL_WINELIB_TYPE_AW(LPPOLYTEXT) + + +/* ntmFlags field flags */ +#define NTM_REGULAR __MSABI_LONG(0x00000040) +#define NTM_BOLD __MSABI_LONG(0x00000020) +#define NTM_ITALIC __MSABI_LONG(0x00000001) + +#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 + + +typedef struct +{ + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + BYTE tmFirstChar; + BYTE tmLastChar; + BYTE tmDefaultChar; + BYTE tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; +} NEWTEXTMETRICA, *PNEWTEXTMETRICA, *LPNEWTEXTMETRICA; + +typedef struct +{ + LONG tmHeight; + LONG tmAscent; + LONG tmDescent; + LONG tmInternalLeading; + LONG tmExternalLeading; + LONG tmAveCharWidth; + LONG tmMaxCharWidth; + LONG tmWeight; + LONG tmOverhang; + LONG tmDigitizedAspectX; + LONG tmDigitizedAspectY; + WCHAR tmFirstChar; + WCHAR tmLastChar; + WCHAR tmDefaultChar; + WCHAR tmBreakChar; + BYTE tmItalic; + BYTE tmUnderlined; + BYTE tmStruckOut; + BYTE tmPitchAndFamily; + BYTE tmCharSet; + DWORD ntmFlags; + UINT ntmSizeEM; + UINT ntmCellHeight; + UINT ntmAvgWidth; +} NEWTEXTMETRICW, *PNEWTEXTMETRICW, *LPNEWTEXTMETRICW; + +DECL_WINELIB_TYPE_AW(NEWTEXTMETRIC) +DECL_WINELIB_TYPE_AW(PNEWTEXTMETRIC) +DECL_WINELIB_TYPE_AW(LPNEWTEXTMETRIC) + +typedef struct +{ + NEWTEXTMETRICA ntmTm; + FONTSIGNATURE ntmFontSig; +} NEWTEXTMETRICEXA; + +typedef struct +{ + NEWTEXTMETRICW ntmTm; + FONTSIGNATURE ntmFontSig; +} NEWTEXTMETRICEXW; + +DECL_WINELIB_TYPE_AW(NEWTEXTMETRICEX) + +#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 /* !defined(NOTEXTMETRIC) */ +typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA *, const VOID *, DWORD, LPARAM); +typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW *, const VOID *, DWORD, LPARAM); +#endif /* !defined(NOTEXTMETRIC) */ +DECL_WINELIB_TYPE_AW(OLDFONTENUMPROC) + +typedef OLDFONTENUMPROCA FONTENUMPROCA; +typedef OLDFONTENUMPROCW FONTENUMPROCW; +DECL_WINELIB_TYPE_AW(FONTENUMPROC) + +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; +DECL_WINELIB_TYPE_AW(FONTENUMPROC) + +typedef FARPROC GOBJENUMPROC; +typedef FARPROC LINEDDAPROC; + +#endif /* defined(STRICT) */ + + /* tmPitchAndFamily bits */ +#define TMPF_FIXED_PITCH 1 /* means variable pitch */ +#define TMPF_VECTOR 2 +#define TMPF_TRUETYPE 4 +#define TMPF_DEVICE 8 + + /* Text alignment */ +#define TA_NOUPDATECP 0x00 +#define TA_UPDATECP 0x01 +#define TA_LEFT 0x00 +#define TA_RIGHT 0x02 +#define TA_CENTER 0x06 +#define TA_TOP 0x00 +#define TA_BOTTOM 0x08 +#define TA_BASELINE 0x18 +#define TA_RTLREADING 0x100 +#define TA_MASK TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING + +#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 + + + /* ExtTextOut() parameters */ +#define ETO_GRAYED 0x0001 +#define ETO_OPAQUE 0x0002 +#define ETO_CLIPPED 0x0004 +#define ETO_GLYPH_INDEX 0x0010 +#define ETO_RTLREADING 0x0080 +#define ETO_NUMERICSLOCAL 0x0400 +#define ETO_NUMERICSLATIN 0x0800 +#define ETO_IGNORELANGUAGE 0x1000 +#define ETO_PDY 0x2000 + +#define ASPECT_FILTERING 0x0001 + + /* for GetGlyphIndices() */ +#define GGI_MARK_NONEXISTING_GLYPHS 0x0001 + +typedef struct +{ + UINT gmBlackBoxX; + UINT gmBlackBoxY; + POINT gmptGlyphOrigin; + SHORT gmCellIncX; + SHORT gmCellIncY; +} GLYPHMETRICS, *LPGLYPHMETRICS; + + +#define GGO_METRICS 0 +#define GGO_BITMAP 1 +#define GGO_NATIVE 2 +#define GGO_BEZIER 3 +#define GGO_GRAY2_BITMAP 4 +#define GGO_GRAY4_BITMAP 5 +#define GGO_GRAY8_BITMAP 6 +#define GGO_GLYPH_INDEX 0x80 +#define GGO_UNHINTED 0x100 + +#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 + +typedef struct +{ + WORD fract; + SHORT value; +} FIXED; + +typedef struct tagPOINTFX +{ + FIXED x; + FIXED y; +} POINTFX, *LPPOINTFX; + +typedef struct tagTTPOLYCURVE +{ + WORD wType; + WORD cpfx; + POINTFX apfx[1]; +} TTPOLYCURVE, *LPTTPOLYCURVE; + +typedef struct tagTTPOLYGONHEADER +{ + DWORD cb; + DWORD dwType; + POINTFX pfxStart; +} TTPOLYGONHEADER, *LPTTPOLYGONHEADER; + +typedef struct +{ + FIXED eM11; + FIXED eM12; + FIXED eM21; + FIXED eM22; +} MAT2, *LPMAT2; + + /* for GetCharABCWidths() */ +typedef struct +{ + INT abcA; + UINT abcB; + INT abcC; +} ABC, *PABC, *LPABC; + + + /* for GetCharacterPlacement () */ + +#define GCP_DBCS 0x0001 +#define GCP_REORDER 0x0002 +#define GCP_USEKERNING 0x0008 +#define GCP_GLYPHSHAPE 0x0010 +#define GCP_LIGATE 0x0020 +#define GCP_DIACRITIC 0x0100 +#define GCP_KASHIDA 0x0200 +#define GCP_ERROR 0x8000 +#define FLI_MASK 0x103b +#define GCP_JUSTIFY __MSABI_LONG(0x00010000) +#define FLI_GLYPHS __MSABI_LONG(0x00040000) +#define GCP_CLASSIN __MSABI_LONG(0x00080000) +#define GCP_MAXEXTENT __MSABI_LONG(0x00100000) +#define GCP_JUSTIFYIN __MSABI_LONG(0x00200000) +#define GCP_DISPLAYZWG __MSABI_LONG(0x00400000) +#define GCP_SYMSWAPOFF __MSABI_LONG(0x00800000) +#define GCP_NUMERICOVERRIDE __MSABI_LONG(0x01000000) +#define GCP_NEUTRALOVERRIDE __MSABI_LONG(0x02000000) +#define GCP_NUMERICSLATIN __MSABI_LONG(0x04000000) +#define GCP_NUMERICSLOCAL __MSABI_LONG(0x08000000) + +#define GCPCLASS_LATIN 1 +#define GCPCLASS_HEBREW 2 +#define GCPCLASS_ARABIC 3 +#define GCPCLASS_NEUTRAL 4 +#define GCPCLASS_LOCALNUMBER 5 +#define GCPCLASS_LATINNUMBER 6 +#define GCPCLASS_LATINNUMERICTERMINATOR 7 +#define GCPCLASS_LATINNUMERICSEPARATOR 8 +#define GCPCLASS_NUMERICSEPARATOR 9 +#define GCPCLASS_PREBOUNDLTR 0x80 +#define GCPCLASS_PREBOUNDRLT 0x40 +#define GCPCLASS_POSTBOUNDLTR 0x20 +#define GCPCLASS_POSTBOUNDRTL 0x10 + +#define GCPGLYPH_LINKBEFORE 0x8000 +#define GCPGLYPH_LINKAFTER 0x4000 + + +typedef struct tagGCP_RESULTSA{ + DWORD lStructSize; + LPSTR lpOutString; + UINT *lpOrder; + INT *lpDx; + INT *lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; +} GCP_RESULTSA, *LPGCP_RESULTSA; + +typedef struct tagGCP_RESULTSW +{ + DWORD lStructSize; + LPWSTR lpOutString; + UINT *lpOrder; + INT *lpDx; + INT *lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; +} GCP_RESULTSW, *LPGCP_RESULTSW; + +DECL_WINELIB_TYPE_AW(GCP_RESULTS) +DECL_WINELIB_TYPE_AW(LPGCP_RESULTS) + + /* Rasterizer status */ +typedef struct +{ + SHORT nSize; + SHORT wFlags; + SHORT nLanguageID; +} RASTERIZER_STATUS, *LPRASTERIZER_STATUS; + +#define TT_AVAILABLE 0x0001 +#define TT_ENABLED 0x0002 + +#define TT_PRIM_LINE 1 +#define TT_PRIM_QSPLINE 2 +#define TT_PRIM_CSPLINE 3 +#define TT_POLYGON_TYPE 24 + + /* OpenGL defines */ +typedef struct { + FLOAT x; + FLOAT y; +} POINTFLOAT, *PPOINTFLOAT; + +typedef struct { + FLOAT gmfBlackBoxX; + FLOAT gmfBlackBoxY; + POINTFLOAT gmfptGlyphOrigin; + FLOAT gmfCellIncX; + FLOAT gmfCellIncY; +} GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT; + +typedef struct { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerPlane; + BYTE bReserved; + COLORREF crTransparent; +} LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR; + +/* Get/SetSystemPaletteUse() values */ +#define SYSPAL_ERROR 0 +#define SYSPAL_STATIC 1 +#define SYSPAL_NOSTATIC 2 +#define SYSPAL_NOSTATIC256 3 + +#ifndef _PALETTEENTRY_DEFINED +#define _PALETTEENTRY_DEFINED +typedef struct tagPALETTEENTRY +{ + BYTE peRed, peGreen, peBlue, peFlags; +} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY; +#endif + +/* Logical palette entry flags */ +#define PC_RESERVED 0x01 +#define PC_EXPLICIT 0x02 +#define PC_NOCOLLAPSE 0x04 + +#ifndef _LOGPALETTE_DEFINED +#define _LOGPALETTE_DEFINED +typedef struct tagLOGPALETTE +{ + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY palPalEntry[1]; +} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE, *NPLOGPALETTE; +#endif + + /* Pens */ + +typedef struct +{ + UINT lopnStyle; + POINT lopnWidth; + COLORREF lopnColor; +} LOGPEN, *LPLOGPEN; + + +typedef struct tagEXTLOGPEN +{ + DWORD elpPenStyle; + DWORD elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + ULONG_PTR elpHatch; + DWORD elpNumEntries; + DWORD elpStyleEntry[1]; +} EXTLOGPEN, *PEXTLOGPEN, *NPEXTLOGPEN, *LPEXTLOGPEN; + +#define PS_SOLID 0x00000000 +#define PS_DASH 0x00000001 +#define PS_DOT 0x00000002 +#define PS_DASHDOT 0x00000003 +#define PS_DASHDOTDOT 0x00000004 +#define PS_NULL 0x00000005 +#define PS_INSIDEFRAME 0x00000006 +#define PS_USERSTYLE 0x00000007 +#define PS_ALTERNATE 0x00000008 +#define PS_STYLE_MASK 0x0000000f + +#define PS_ENDCAP_ROUND 0x00000000 +#define PS_ENDCAP_SQUARE 0x00000100 +#define PS_ENDCAP_FLAT 0x00000200 +#define PS_ENDCAP_MASK 0x00000f00 + +#define PS_JOIN_ROUND 0x00000000 +#define PS_JOIN_BEVEL 0x00001000 +#define PS_JOIN_MITER 0x00002000 +#define PS_JOIN_MASK 0x0000f000 + +#define PS_COSMETIC 0x00000000 +#define PS_GEOMETRIC 0x00010000 +#define PS_TYPE_MASK 0x000f0000 + + /* Regions */ + +#define ERROR 0 +#define NULLREGION 1 +#define SIMPLEREGION 2 +#define COMPLEXREGION 3 +#define RGN_ERROR ERROR + +#define RGN_AND 1 +#define RGN_OR 2 +#define RGN_XOR 3 +#define RGN_DIFF 4 +#define RGN_COPY 5 +#define RGN_MIN RGN_AND +#define RGN_MAX RGN_COPY + +#define SYSRGN 4 + + /* Device contexts */ + + /* Polygon modes */ +#define ALTERNATE 1 +#define WINDING 2 +#define POLYFILL_LAST 2 + +/* Background modes */ +/* Apparently some broken svr4 includes define TRANSPARENT */ +#undef TRANSPARENT +#define TRANSPARENT 1 +#define OPAQUE 2 +#define BKMODE_LAST 2 + + /* Graphics Modes */ +#define GM_COMPATIBLE 1 +#define GM_ADVANCED 2 +#define GM_LAST 2 + + /* Arc direction modes */ +#define AD_COUNTERCLOCKWISE 1 +#define AD_CLOCKWISE 2 + + /* Map modes */ +#define MM_TEXT 1 +#define MM_LOMETRIC 2 +#define MM_HIMETRIC 3 +#define MM_LOENGLISH 4 +#define MM_HIENGLISH 5 +#define MM_TWIPS 6 +#define MM_ISOTROPIC 7 +#define MM_ANISOTROPIC 8 + +#define MM_MIN MM_TEXT +#define MM_MAX MM_ANISOTROPIC +#define MM_MAX_FIXEDSCALE MM_TWIPS + + /* Coordinate modes */ +#define ABSOLUTE 1 +#define RELATIVE 2 + + /* Flood fill modes */ +#define FLOODFILLBORDER 0 +#define FLOODFILLSURFACE 1 + + /* Device parameters for GetDeviceCaps() */ +#define DRIVERVERSION 0 +#define TECHNOLOGY 2 +#define HORZSIZE 4 +#define VERTSIZE 6 +#define HORZRES 8 +#define VERTRES 10 +#define BITSPIXEL 12 +#define PLANES 14 +#define NUMBRUSHES 16 +#define NUMPENS 18 +#define NUMMARKERS 20 +#define NUMFONTS 22 +#define NUMCOLORS 24 +#define PDEVICESIZE 26 +#define CURVECAPS 28 +#define LINECAPS 30 +#define POLYGONALCAPS 32 +#define TEXTCAPS 34 +#define CLIPCAPS 36 +#define RASTERCAPS 38 +#define ASPECTX 40 +#define ASPECTY 42 +#define ASPECTXY 44 +#define LOGPIXELSX 88 +#define LOGPIXELSY 90 +#define CAPS1 94 +#define SIZEPALETTE 104 +#define NUMRESERVED 106 +#define COLORRES 108 + +#define PHYSICALWIDTH 110 +#define PHYSICALHEIGHT 111 +#define PHYSICALOFFSETX 112 +#define PHYSICALOFFSETY 113 +#define SCALINGFACTORX 114 +#define SCALINGFACTORY 115 +#define VREFRESH 116 +#define DESKTOPVERTRES 117 +#define DESKTOPHORZRES 118 +#define BLTALIGNMENT 119 +#define SHADEBLENDCAPS 120 +#define COLORMGMTCAPS 121 + +/* TECHNOLOGY */ +#define DT_PLOTTER 0 +#define DT_RASDISPLAY 1 +#define DT_RASPRINTER 2 +#define DT_RASCAMERA 3 +#define DT_CHARSTREAM 4 +#define DT_METAFILE 5 +#define DT_DISPFILE 6 + +/* CURVECAPS */ +#define CC_NONE 0x0000 +#define CC_CIRCLES 0x0001 +#define CC_PIE 0x0002 +#define CC_CHORD 0x0004 +#define CC_ELLIPSES 0x0008 +#define CC_WIDE 0x0010 +#define CC_STYLED 0x0020 +#define CC_WIDESTYLED 0x0040 +#define CC_INTERIORS 0x0080 +#define CC_ROUNDRECT 0x0100 + +/* LINECAPS */ +#define LC_NONE 0x0000 +#define LC_POLYLINE 0x0002 +#define LC_MARKER 0x0004 +#define LC_POLYMARKER 0x0008 +#define LC_WIDE 0x0010 +#define LC_STYLED 0x0020 +#define LC_WIDESTYLED 0x0040 +#define LC_INTERIORS 0x0080 + +/* POLYGONALCAPS */ +#define PC_NONE 0x0000 +#define PC_POLYGON 0x0001 +#define PC_RECTANGLE 0x0002 +#define PC_WINDPOLYGON 0x0004 +#define PC_TRAPEZOID 0x0004 +#define PC_SCANLINE 0x0008 +#define PC_WIDE 0x0010 +#define PC_STYLED 0x0020 +#define PC_WIDESTYLED 0x0040 +#define PC_INTERIORS 0x0080 +#define PC_POLYPOLYGON 0x0100 +#define PC_PATHS 0x0200 + +/* TEXTCAPS */ +#define TC_OP_CHARACTER 0x0001 +#define TC_OP_STROKE 0x0002 +#define TC_CP_STROKE 0x0004 +#define TC_CR_90 0x0008 +#define TC_CR_ANY 0x0010 +#define TC_SF_X_YINDEP 0x0020 +#define TC_SA_DOUBLE 0x0040 +#define TC_SA_INTEGER 0x0080 +#define TC_SA_CONTIN 0x0100 +#define TC_EA_DOUBLE 0x0200 +#define TC_IA_ABLE 0x0400 +#define TC_UA_ABLE 0x0800 +#define TC_SO_ABLE 0x1000 +#define TC_RA_ABLE 0x2000 +#define TC_VA_ABLE 0x4000 +#define TC_RESERVED 0x8000 +#define TC_SCROLLBLT 0x00010000 + +/* CLIPCAPS */ +#define CP_NONE 0x0000 +#define CP_RECTANGLE 0x0001 +#define CP_REGION 0x0002 + +/* RASTERCAPS */ +#define RC_NONE 0x0000 +#define RC_BITBLT 0x0001 +#define RC_BANDING 0x0002 +#define RC_SCALING 0x0004 +#define RC_BITMAP64 0x0008 +#define RC_GDI20_OUTPUT 0x0010 +#define RC_GDI20_STATE 0x0020 +#define RC_SAVEBITMAP 0x0040 +#define RC_DI_BITMAP 0x0080 +#define RC_PALETTE 0x0100 +#define RC_DIBTODEV 0x0200 +#define RC_BIGFONT 0x0400 +#define RC_STRETCHBLT 0x0800 +#define RC_FLOODFILL 0x1000 +#define RC_STRETCHDIB 0x2000 +#define RC_OP_DX_OUTPUT 0x4000 +#define RC_DEVBITS 0x8000 + +/* CAPS1 */ +#define C1_TRANSPARENT 0x0001 +#define TC_TT_ABLE 0x0002 +#define C1_TT_CR_ANY 0x0004 +#define C1_EMF_COMPLIANT 0x0008 +#define C1_DIBENGINE 0x0010 +#define C1_GAMMA_RAMP 0x0040 +#define C1_REINIT_ABLE 0x0080 +#define C1_GLYPH_INDEX 0x0100 +#define C1_BIT_PACKED 0x0200 +#define C1_BYTE_PACKED 0x0400 +#define C1_COLORCURSOR 0x0800 +#define C1_CMYK_ABLE 0x1000 +#define C1_SLOW_CARD 0x2000 + +/* SHADEBLENDCAPS */ +#define SB_NONE 0x0000 +#define SB_CONST_ALPHA 0x0001 +#define SB_PIXEL_ALPHA 0x0002 +#define SB_PREMULT_ALPHA 0x0004 +#define SB_GRAD_RECT 0x0010 +#define SB_GRAD_TRI 0x0020 + + /* Device-independent bitmaps */ + +typedef struct tagRGBQUAD { + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; +} RGBQUAD, *LPRGBQUAD; + +typedef struct tagRGBTRIPLE { + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; +} RGBTRIPLE; + +#include <pshpack2.h> +typedef struct +{ + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; +} BITMAPFILEHEADER, *PBITMAPFILEHEADER, *LPBITMAPFILEHEADER; +#include <poppack.h> + +#define MAKEPOINTS(l) (*((POINTS *)&(l))) + +typedef struct +{ + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER; + +typedef struct +{ + DWORD bV4Size; + LONG bV4Width; + LONG bV4Height; + WORD bV4Planes; + WORD bV4BitCount; + DWORD bV4V4Compression; + DWORD bV4SizeImage; + LONG bV4XPelsPerMeter; + LONG bV4YPelsPerMeter; + DWORD bV4ClrUsed; + DWORD bV4ClrImportant; + DWORD bV4RedMask; + DWORD bV4GreenMask; + DWORD bV4BlueMask; + DWORD bV4AlphaMask; + DWORD bV4CSType; + CIEXYZTRIPLE bV4Endpoints; + DWORD bV4GammaRed; + DWORD bV4GammaGreen; + DWORD bV4GammaBlue; +} BITMAPV4HEADER, *PBITMAPV4HEADER; + +typedef struct { + DWORD bV5Size; + LONG bV5Width; + LONG bV5Height; + WORD bV5Planes; + WORD bV5BitCount; + DWORD bV5Compression; + DWORD bV5SizeImage; + LONG bV5XPelsPerMeter; + LONG bV5YPelsPerMeter; + DWORD bV5ClrUsed; + DWORD bV5ClrImportant; + DWORD bV5RedMask; + DWORD bV5GreenMask; + DWORD bV5BlueMask; + DWORD bV5AlphaMask; + DWORD bV5CSType; + CIEXYZTRIPLE bV5Endpoints; + DWORD bV5GammaRed; + DWORD bV5GammaGreen; + DWORD bV5GammaBlue; + DWORD bV5Intent; + DWORD bV5ProfileData; + DWORD bV5ProfileSize; + DWORD bV5Reserved; +} BITMAPV5HEADER, *LPBITMAPV5HEADER, *PBITMAPV5HEADER; + +#define PROFILE_LINKED 0x4c494e4b /* 'LINK' */ +#define PROFILE_EMBEDDED 0x4d424544 /* 'MBED' */ + + + /* biCompression */ +#define BI_RGB 0 +#define BI_RLE8 1 +#define BI_RLE4 2 +#define BI_BITFIELDS 3 +#define BI_JPEG 4 +#define BI_PNG 5 + +typedef struct tagBITMAPINFO +{ + BITMAPINFOHEADER bmiHeader; + RGBQUAD bmiColors[1]; +} BITMAPINFO, *PBITMAPINFO, *LPBITMAPINFO; + +typedef struct +{ + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; +} BITMAPCOREHEADER, *PBITMAPCOREHEADER, *LPBITMAPCOREHEADER; + +typedef struct +{ + BITMAPCOREHEADER bmciHeader; + RGBTRIPLE bmciColors[1]; +} BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO; + +#define DIB_RGB_COLORS 0 +#define DIB_PAL_COLORS 1 +#define CBM_INIT 4 + +typedef struct +{ + BITMAP dsBm; + BITMAPINFOHEADER dsBmih; + DWORD dsBitfields[3]; + HANDLE dshSection; + DWORD dsOffset; +} DIBSECTION, *PDIBSECTION, *LPDIBSECTION; + + /* Stock GDI objects for GetStockObject() */ + +#define WHITE_BRUSH 0 +#define LTGRAY_BRUSH 1 +#define GRAY_BRUSH 2 +#define DKGRAY_BRUSH 3 +#define BLACK_BRUSH 4 +#define NULL_BRUSH 5 +#define HOLLOW_BRUSH 5 +#define WHITE_PEN 6 +#define BLACK_PEN 7 +#define NULL_PEN 8 +#define OEM_FIXED_FONT 10 +#define ANSI_FIXED_FONT 11 +#define ANSI_VAR_FONT 12 +#define SYSTEM_FONT 13 +#define DEVICE_DEFAULT_FONT 14 +#define DEFAULT_PALETTE 15 +#define SYSTEM_FIXED_FONT 16 +#define DEFAULT_GUI_FONT 17 +#define DC_BRUSH 18 +#define DC_PEN 19 + +#define STOCK_LAST 19 + +#define CLR_INVALID 0xffffffff + +typedef USHORT COLOR16; + +typedef struct _TRIVERTEX +{ + LONG x; + LONG y; + COLOR16 Red; + COLOR16 Green; + COLOR16 Blue; + COLOR16 Alpha; +} TRIVERTEX, *PTRIVERTEX, *LPTRIVERTEX; + +typedef struct _GRADIENT_TRIANGLE +{ + ULONG Vertex1; + ULONG Vertex2; + ULONG Vertex3; +} GRADIENT_TRIANGLE, *PGRADIENT_TRIANGLE, *LPGRADIENT_TRIANGLE; + +typedef struct _GRADIENT_RECT +{ + ULONG UpperLeft; + ULONG LowerRight; +} GRADIENT_RECT, *PGRADIENT_RECT, *LPGRADIENT_RECT; + +#define AC_SRC_OVER 0x00 +#define AC_SRC_ALPHA 0x01 + +typedef struct _BLENDFUNCTION +{ + BYTE BlendOp; + BYTE BlendFlags; + BYTE SourceConstantAlpha; + BYTE AlphaFormat; +} BLENDFUNCTION, *PBLENDFUNCTION; + +#define GRADIENT_FILL_RECT_H 0x00000000 +#define GRADIENT_FILL_RECT_V 0x00000001 +#define GRADIENT_FILL_TRIANGLE 0x00000002 +#define GRADIENT_FILL_OP_FLAG 0x000000ff + + +/* Metafile header structure */ +#include <pshpack2.h> +typedef struct +{ + WORD mtType; + WORD mtHeaderSize; + WORD mtVersion; + DWORD mtSize; + WORD mtNoObjects; + DWORD mtMaxRecord; + WORD mtNoParameters; +} METAHEADER, *PMETAHEADER, *LPMETAHEADER; +#include <poppack.h> + +/* Metafile typical record structure */ +typedef struct +{ + DWORD rdSize; + WORD rdFunction; + WORD rdParm[1]; +} METARECORD, *PMETARECORD, *LPMETARECORD; + +/* Handle table structure */ + +typedef struct +{ + HGDIOBJ objectHandle[1]; +} HANDLETABLE, *PHANDLETABLE, *LPHANDLETABLE; + + +/* Clipboard metafile picture structure */ +typedef struct +{ + LONG mm; + LONG xExt; + LONG yExt; + HMETAFILE hMF; +} METAFILEPICT, *LPMETAFILEPICT; + + +/* Metafile functions */ +#define META_SETBKCOLOR 0x0201 +#define META_SETBKMODE 0x0102 +#define META_SETMAPMODE 0x0103 +#define META_SETROP2 0x0104 +#define META_SETRELABS 0x0105 +#define META_SETPOLYFILLMODE 0x0106 +#define META_SETSTRETCHBLTMODE 0x0107 +#define META_SETTEXTCHAREXTRA 0x0108 +#define META_SETTEXTCOLOR 0x0209 +#define META_SETTEXTJUSTIFICATION 0x020A +#define META_SETWINDOWORG 0x020B +#define META_SETWINDOWEXT 0x020C +#define META_SETVIEWPORTORG 0x020D +#define META_SETVIEWPORTEXT 0x020E +#define META_OFFSETWINDOWORG 0x020F +#define META_SCALEWINDOWEXT 0x0410 +#define META_OFFSETVIEWPORTORG 0x0211 +#define META_SCALEVIEWPORTEXT 0x0412 +#define META_LINETO 0x0213 +#define META_MOVETO 0x0214 +#define META_EXCLUDECLIPRECT 0x0415 +#define META_INTERSECTCLIPRECT 0x0416 +#define META_ARC 0x0817 +#define META_ELLIPSE 0x0418 +#define META_FLOODFILL 0x0419 +#define META_PIE 0x081A +#define META_RECTANGLE 0x041B +#define META_ROUNDRECT 0x061C +#define META_PATBLT 0x061D +#define META_SAVEDC 0x001E +#define META_SETPIXEL 0x041F +#define META_OFFSETCLIPRGN 0x0220 +#define META_TEXTOUT 0x0521 +#define META_BITBLT 0x0922 +#define META_STRETCHBLT 0x0B23 +#define META_POLYGON 0x0324 +#define META_POLYLINE 0x0325 +#define META_ESCAPE 0x0626 +#define META_RESTOREDC 0x0127 +#define META_FILLREGION 0x0228 +#define META_FRAMEREGION 0x0429 +#define META_INVERTREGION 0x012A +#define META_PAINTREGION 0x012B +#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 +#define META_SETDIBTODEV 0x0D33 +#define META_SELECTPALETTE 0x0234 +#define META_REALIZEPALETTE 0x0035 +#define META_ANIMATEPALETTE 0x0436 +#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 0x005E +#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 +#define META_UNKNOWN 0x0529 /* FIXME: unknown meta magic */ + +typedef INT (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*, + INT,LPARAM); + +/* enhanced metafile structures and functions */ + +/* note that ENHMETAHEADER is just a particular kind of ENHMETARECORD, + ie. the header is just the first record in the metafile */ +typedef struct { + DWORD iType; + DWORD nSize; + RECTL rclBounds; + RECTL rclFrame; + DWORD dSignature; + DWORD nVersion; + DWORD nBytes; + DWORD nRecords; + WORD nHandles; + WORD sReserved; + DWORD nDescription; + DWORD offDescription; + DWORD nPalEntries; + SIZEL szlDevice; + SIZEL szlMillimeters; + DWORD cbPixelFormat; + DWORD offPixelFormat; + DWORD bOpenGL; + SIZEL szlMicrometers; +} ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER; + +typedef struct { + DWORD iType; + DWORD nSize; + DWORD dParm[1]; +} ENHMETARECORD, *LPENHMETARECORD; + +typedef struct { + DWORD iType; + DWORD nSize; +} EMR, *PEMR; + +typedef struct { + POINTL ptlReference; + DWORD nChars; + DWORD offString; + DWORD fOptions; + RECTL rcl; + DWORD offDx; +} EMRTEXT, *PEMRTEXT; + +typedef struct { + EMR emr; +} EMRABORTPATH, *PEMRABORTPATH, + EMRBEGINPATH, *PEMRBEGINPATH, + EMRENDPATH, *PEMRENDPATH, + EMRCLOSEFIGURE, *PEMRCLOSEFIGURE, + EMRFLATTENPATH, *PEMRFLATTENPATH, + EMRWIDENPATH, *PEMRWIDENPATH, + EMRSETMETARGN, *PEMRSETMETARGN, + EMRSAVEDC, *PEMRSAVEDC, + EMRREALIZEPALETTE, *PEMRREALIZEPALETTE; + +typedef struct { + EMR emr; + POINTL ptlCenter; + DWORD nRadius; + FLOAT eStartAngle; + FLOAT eSweepAngle; +} EMRANGLEARC, *PEMRANGLEARC; + +typedef struct { + EMR emr; + RECTL rclBox; + POINTL ptlStart; + POINTL ptlEnd; +} EMRARC, *PEMRARC, + EMRARCTO, *PEMRARCTO, + EMRCHORD, *PEMRCHORD, + EMRPIE, *PEMRPIE; + +typedef struct { + 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; +} EMRBITBLT, *PEMRBITBLT; + +typedef struct { + EMR emr; + DWORD ihBrush; + LOGBRUSH32 lb; +} EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT; + +typedef struct { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEA lcs; +} EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE; + +typedef struct { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEW lcs; + DWORD dwFlags; + DWORD cbData; + BYTE Data[1]; +} EMRCREATECOLORSPACEW, *PEMRCREATECOLORSPACEW; + +typedef struct { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} EMRCREATEDIBPATTERNBRUSHPT, *PEMRCREATEDIBPATTERNBRUSHPT; + +typedef struct { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH; + +typedef struct { + EMR emr; + DWORD ihPal; + LOGPALETTE lgpl; +} EMRCREATEPALETTE, *PEMRCREATEPALETTE; + +typedef struct { + EMR emr; + DWORD ihPen; + LOGPEN lopn; +} EMRCREATEPEN, *PEMRCREATEPEN; + +typedef struct { + EMR emr; + DWORD ihCS; +} EMRDELETECOLORSPACE, *PEMRDELETECOLORSPACE, + EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE, + EMRSETCOLORSPACE, *PEMRSETCOLORSPACE; + +typedef struct { + EMR emr; + DWORD ihObject; +} EMRDELETEOBJECT, *PEMRDELETEOBJECT, + EMRSELECTOBJECT, *PEMRSELECTOBJECT; + +typedef struct { + EMR emr; + RECTL rclBox; +} EMRELLIPSE, *PEMRELLIPSE, + EMRRECTANGLE, *PEMRRECTANGLE; + +typedef struct { + EMR emr; + DWORD nPalEntries; + DWORD offPalEntries; + DWORD nSizeLast; +} EMREOF, *PEMREOF; + +typedef struct { + EMR emr; + RECTL rclClip; +} EMREXCLUDECLIPRECT, *PEMREXCLUDECLIPRECT, + EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT; + +typedef struct { + EMR emr; + DWORD ihFont; + EXTLOGFONTW elfw; +} EMREXTCREATEFONTINDIRECTW, *PEMREXTCREATEFONTINDIRECTW; + +typedef struct { + EMR emr; + DWORD ihPen; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; + EXTLOGPEN elp; +} EMREXTCREATEPEN, *PEMREXTCREATEPEN; + +typedef struct { + EMR emr; + POINTL ptlStart; + COLORREF crColor; + DWORD iMode; +} EMREXTFLOODFILL, *PEMREXTFLOODFILL; + +typedef struct { + EMR emr; + DWORD cbRgnData; + DWORD iMode; + BYTE RgnData[1]; +} EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + EMRTEXT emrtext; +} EMREXTTEXTOUTA, *PEMREXTTEXTOUTA, + EMREXTTEXTOUTW, *PEMREXTTEXTOUTW; + +typedef struct { + EMR emr; + RECTL rclBounds; +} EMRFILLPATH, *PEMRFILLPATH, + EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH, + EMRSTROKEPATH, *PEMRSTROKEPATH; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + BYTE RgnData[1]; +} EMRFILLRGN, *PEMRFILLRGN; + +typedef struct { + DWORD dSignature; + DWORD nVersion; + DWORD cbData; + DWORD offData; +} EMRFORMAT, *PEMRFORMAT; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + SIZEL szlStroke; + BYTE RgnData[1]; +} EMRFRAMERGN, *PEMRFRAMERGN; + +typedef struct { + EMR emr; + DWORD cbData; + BYTE Data[1]; +} EMRGDICOMMENT, *PEMRGDICOMMENT; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD nVer; + DWORD nTri; + ULONG ulMode; + TRIVERTEX Ver[1]; +} EMRGRADIENTFILL, *PEMRGRADIENTFILL; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + BYTE RgnData[1]; +} EMRINVERTRGN, *PEMRINVERTRGN, + EMRPAINTRGN, *PEMRPAINTRGN; + +typedef struct { + EMR emr; + POINTL ptl; +} EMRLINETO, *PEMRLINETO, + EMRMOVETOEX, *PEMRMOVETOEX; + +typedef struct { + 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 xMask; + LONG yMask; + DWORD iUsageMask; + DWORD offBmiMask; + DWORD cbBmiMask; + DWORD offBitsMask; + DWORD cbBitsMask; +} EMRMASKBLT, *PEMRMASKBLT; + +typedef struct { + EMR emr; + XFORM xform; + DWORD iMode; +} EMRMODIFYWORLDTRANSFORM, *PEMRMODIFYWORLDTRANSFORM; + +typedef struct { + EMR emr; + POINTL ptlOffset; +} EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN; + +typedef struct { + EMR emr; + RECTL rclBounds; + POINTL aptlDest[3]; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + XFORM xformSrc; + COLORREF crBkColorSrc; + DWORD iUsageSrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + LONG xMask; + LONG yMask; + DWORD iUsageMask; + DWORD offBmiMask; + DWORD cbBmiMask; + DWORD offBitsMask; + DWORD cbBitsMask; +} EMRPLGBLT, *PEMRPLGBLT; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL aptl[1]; +} EMRPOLYLINE, *PEMRPOLYLINE, + EMRPOLYBEZIER, *PEMRPOLYBEZIER, + EMRPOLYGON, *PEMRPOLYGON, + EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO, + EMRPOLYLINETO, *PEMRPOLYLINETO; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS apts[1]; +} EMRPOLYLINE16, *PEMRPOLYLINE16, + EMRPOLYBEZIER16, *PEMRPOLYBEZIER16, + EMRPOLYGON16, *PEMRPOLYGON16, + EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16, + EMRPOLYLINETO16, *PEMRPOLYLINETO16; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS apts[1]; + BYTE abTypes[1]; +} EMRPOLYDRAW16, *PEMRPOLYDRAW16; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cpts; + DWORD aPolyCounts[1]; + POINTS apts[1]; +} EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16, + EMRPOLYPOLYGON16, *PEMRPOLYPOLYGON16; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL aptl[1]; + BYTE abTypes[1]; +} EMRPOLYDRAW, *PEMRPOLYDRAW; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cptl; + DWORD aPolyCounts[1]; + POINTL aptl[1]; +} EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE, + EMRPOLYPOLYGON, *PEMRPOLYPOLYGON; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + LONG cStrings; + EMRTEXT aemrtext[1]; +} EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA, + EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW; + +typedef struct { + EMR emr; + DWORD ihPal; + DWORD cEntries; +} EMRRESIZEPALETTE, *PEMRRESIZEPALETTE; + +typedef struct { + EMR emr; + LONG iRelative; +} EMRRESTOREDC, *PEMRRESTOREDC; + +typedef struct { + EMR emr; + RECTL rclBox; + SIZEL szlCorner; +} EMRROUNDRECT, *PEMRROUNDRECT; + +typedef struct { + EMR emr; + LONG xNum; + LONG xDenom; + LONG yNum; + LONG yDenom; +} EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX, + EMRSCALEWINDOWEXTEX, *PEMRSCALEWINDOWEXTEX; + +typedef struct { + EMR emr; + DWORD iMode; +} EMRSELECTCLIPPATH, *PEMRSELECTCLIPPATH, + EMRSETBKMODE, *PEMRSETBKMODE, + EMRSETMAPMODE, *PEMRSETMAPMODE, + EMRSETPOLYFILLMODE, *PEMRSETPOLYFILLMODE, + EMRSETROP2, *PEMRSETROP2, + EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE, + EMRSETTEXTALIGN, *PEMRSETTEXTALIGN, + EMRSETICMMODE, *PEMRSETICMMODE, + EMRSETLAYOUT, *PEMRSETLAYOUT; + +typedef struct { + EMR emr; + DWORD ihPal; +} EMRSELECTPALETTE, *PEMRSELECTPALETTE; + +typedef struct { + EMR emr; + DWORD iArcDirection; +} EMRSETARCDIRECTION, *PEMRSETARCDIRECTION; + +typedef struct { + EMR emr; + COLORREF crColor; +} EMRSETBKCOLOR, *PEMRSETBKCOLOR, + EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR; + +typedef struct { + EMR emr; + POINTL ptlOrigin; +} EMRSETBRUSHORGEX, *PEMRSETBRUSHORGEX, + EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX, + EMRSETWINDOWORGEX, *PEMRSETWINDOWORGEX; + +typedef struct { + EMR emr; + COLORADJUSTMENT ColorAdjustment; +} EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT; + +typedef struct { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + DWORD iUsageSrc; + DWORD iStartScan; + DWORD cScans; +} EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE; + +typedef struct { + EMR emr; + DWORD dwFlags; +} EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS; + +typedef struct { + EMR emr; + FLOAT eMiterLimit; +} EMRSETMITERLIMIT, *PEMRSETMITERLIMIT; + +typedef struct { + EMR emr; + DWORD ihPal; + DWORD iStart; + DWORD cEntries; + PALETTEENTRY aPalEntries[1]; +} EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES; + +typedef struct { + EMR emr; + POINTL ptlPixel; + COLORREF crColor; +} EMRSETPIXELV, *PEMRSETPIXELV; + +typedef struct { + EMR emr; + SIZEL szlExtent; +} EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX, + EMRSETWINDOWEXTEX, *PEMRSETWINDOWEXTEX; + +typedef struct { + EMR emr; + XFORM xform; +} EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM; + +typedef struct { + 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; +} EMRSTRETCHBLT, *PEMRSTRETCHBLT; + +typedef struct { + 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 { + EMR emr; + RECTL rclBounds; + LONG xDest; + LONG yDest; + LONG xSrc; + LONG ySrc; + LONG cxSrc; + LONG cySrc; + DWORD offBmiSrc; + DWORD cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; + DWORD iUsageSrc; + DWORD dwRop; + LONG cxDest; + LONG cyDest; +} EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS; + +typedef struct { + EMR emr; + PIXELFORMATDESCRIPTOR pfd; +} EMRPIXELFORMAT, *PEMRPIXELFORMAT; + +typedef struct tagEMRGLSRECORD { + EMR emr; + DWORD cbData; + BYTE Data[1]; +} EMRGLSRECORD, *PEMRGLSRECORD; + +typedef struct { + EMR emr; + RECTL rclBounds; + DWORD cbData; + BYTE Data[1]; +} EMRGLSBOUNDEDRECORD, *PEMRGLSBOUNDEDRECORD; + +typedef INT (CALLBACK *ENHMFENUMPROC)(HDC, HANDLETABLE *, + const ENHMETARECORD *, INT, LPARAM); + +#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_SETICMMODE 98 +#define EMR_CREATECOLORSPACE 99 +#define EMR_SETCOLORSPACE 100 +#define EMR_DELETECOLORSPACE 101 +#define EMR_GLSRECORD 102 +#define EMR_GLSBOUNDEDRECORD 103 +#define EMR_PIXELFORMAT 104 +#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_SETLAYOUT 115 +#define EMR_TRANSPARENTBLT 116 +#define EMR_RESERVED_117 117 +#define EMR_GRADIENTFILL 118 +#define EMR_SETLINKEDUFI 119 +#define EMR_SETTEXTJUSTIFICATION 120 +#define EMR_COLORMATCHTOTARGETW 121 +#define EMR_CREATECOLORSPACEW 122 + +#define EMR_MIN 1 +#define EMR_MAX 122 + +#define ENHMETA_SIGNATURE 1179469088 +#define ENHMETA_STOCK_OBJECT 0x80000000 + +#define GDICOMMENT_IDENTIFIER 0x43494447 +#define GDICOMMENT_WINDOWS_METAFILE 0x80000001 +#define GDICOMMENT_BEGINGROUP 0x00000002 +#define GDICOMMENT_ENDGROUP 0x00000003 +#define GDICOMMENT_MULTIFORMATS 0x40000004 +#define GDICOMMENT_UNICODE_STRING 0x00000040 +#define GDICOMMENT_UNICODE_END 0x00000080 +#define EPS_SIGNATURE 0x46535045 + +#define CCHDEVICENAME 32 +#define CCHFORMNAME 32 + +typedef struct +{ + BYTE dmDeviceName[CCHDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union { + struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } DUMMYSTRUCTNAME1; + struct { + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } DUMMYSTRUCTNAME2; + } DUMMYUNIONNAME1; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE dmFormName[CCHFORMNAME]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union { + DWORD dmDisplayFlags; + DWORD dmNup; + } DUMMYUNIONNAME2; + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; +} DEVMODEA, *PDEVMODEA, *LPDEVMODEA; + +typedef struct +{ + WCHAR dmDeviceName[CCHDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union { + struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } DUMMYSTRUCTNAME1; + struct { + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } DUMMYSTRUCTNAME2; + } DUMMYUNIONNAME1; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR dmFormName[CCHFORMNAME]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union { + DWORD dmDisplayFlags; + DWORD dmNup; + } DUMMYUNIONNAME2; + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; +} DEVMODEW, *PDEVMODEW, *LPDEVMODEW; + +DECL_WINELIB_TYPE_AW(DEVMODE) +DECL_WINELIB_TYPE_AW(PDEVMODE) +DECL_WINELIB_TYPE_AW(LPDEVMODE) + +#define DM_SPECVERSION 0x401 +#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 + +#define DM_ORIENTATION __MSABI_LONG(0x00000001) +#define DM_PAPERSIZE __MSABI_LONG(0x00000002) +#define DM_PAPERLENGTH __MSABI_LONG(0x00000004) +#define DM_PAPERWIDTH __MSABI_LONG(0x00000008) +#define DM_SCALE __MSABI_LONG(0x00000010) +#define DM_POSITION __MSABI_LONG(0x00000020) +#define DM_NUP __MSABI_LONG(0x00000040) +#define DM_DISPLAYORIENTATION __MSABI_LONG(0x00000080) +#define DM_COPIES __MSABI_LONG(0x00000100) +#define DM_DEFAULTSOURCE __MSABI_LONG(0x00000200) +#define DM_PRINTQUALITY __MSABI_LONG(0x00000400) +#define DM_COLOR __MSABI_LONG(0x00000800) +#define DM_DUPLEX __MSABI_LONG(0x00001000) +#define DM_YRESOLUTION __MSABI_LONG(0x00002000) +#define DM_TTOPTION __MSABI_LONG(0x00004000) +#define DM_COLLATE __MSABI_LONG(0x00008000) +#define DM_FORMNAME __MSABI_LONG(0x00010000) +#define DM_LOGPIXELS __MSABI_LONG(0x00020000) +#define DM_BITSPERPEL __MSABI_LONG(0x00040000) +#define DM_PELSWIDTH __MSABI_LONG(0x00080000) +#define DM_PELSHEIGHT __MSABI_LONG(0x00100000) +#define DM_DISPLAYFLAGS __MSABI_LONG(0x00200000) +#define DM_DISPLAYFREQUENCY __MSABI_LONG(0x00400000) +#define DM_ICMMETHOD __MSABI_LONG(0x00800000) +#define DM_ICMINTENT __MSABI_LONG(0x01000000) +#define DM_MEDIATYPE __MSABI_LONG(0x02000000) +#define DM_DITHERTYPE __MSABI_LONG(0x04000000) +#define DM_PANNINGWIDTH __MSABI_LONG(0x08000000) +#define DM_PANNINGHEIGHT __MSABI_LONG(0x10000000) +#define DM_DISPLAYFIXEDOUTPUT __MSABI_LONG(0x20000000) + +#define DM_GRAYSCALE 1 +#define DM_INTERLACED 2 +#define DMDISPLAYFLAGS_TEXTMODE 4 + +#define DMORIENT_PORTRAIT 1 +#define DMORIENT_LANDSCAPE 2 + +#define DMPAPER_FIRST DMPAPER_LETTER +#define DMPAPER_LETTER 1 +#define DMPAPER_LETTERSMALL 2 +#define DMPAPER_TABLOID 3 +#define DMPAPER_LEDGER 4 +#define DMPAPER_LEGAL 5 +#define DMPAPER_STATEMENT 6 +#define DMPAPER_EXECUTIVE 7 +#define DMPAPER_A3 8 +#define DMPAPER_A4 9 +#define DMPAPER_A4SMALL 10 +#define DMPAPER_A5 11 +#define DMPAPER_B4 12 +#define DMPAPER_B5 13 +#define DMPAPER_FOLIO 14 +#define DMPAPER_QUARTO 15 +#define DMPAPER_10X14 16 +#define DMPAPER_11X17 17 +#define DMPAPER_NOTE 18 +#define DMPAPER_ENV_9 19 +#define DMPAPER_ENV_10 20 +#define DMPAPER_ENV_11 21 +#define DMPAPER_ENV_12 22 +#define DMPAPER_ENV_14 23 +#define DMPAPER_CSHEET 24 +#define DMPAPER_DSHEET 25 +#define DMPAPER_ESHEET 26 +#define DMPAPER_ENV_DL 27 +#define DMPAPER_ENV_C5 28 +#define DMPAPER_ENV_C3 29 +#define DMPAPER_ENV_C4 30 +#define DMPAPER_ENV_C6 31 +#define DMPAPER_ENV_C65 32 +#define DMPAPER_ENV_B4 33 +#define DMPAPER_ENV_B5 34 +#define DMPAPER_ENV_B6 35 +#define DMPAPER_ENV_ITALY 36 +#define DMPAPER_ENV_MONARCH 37 +#define DMPAPER_ENV_PERSONAL 38 +#define DMPAPER_FANFOLD_US 39 +#define DMPAPER_FANFOLD_STD_GERMAN 40 +#define DMPAPER_FANFOLD_LGL_GERMAN 41 +#define DMPAPER_ISO_B4 42 +#define DMPAPER_JAPANESE_POSTCARD 43 +#define DMPAPER_9X11 44 +#define DMPAPER_10X11 45 +#define DMPAPER_15X11 46 +#define DMPAPER_ENV_INVITE 47 +#define DMPAPER_RESERVED_48 48 +#define DMPAPER_RESERVED_49 49 +#define DMPAPER_LETTER_EXTRA 50 +#define DMPAPER_LEGAL_EXTRA 51 +#define DMPAPER_TABLOID_EXTRA 52 +#define DMPAPER_A4_EXTRA 53 +#define DMPAPER_LETTER_TRANSVERSE 54 +#define DMPAPER_A4_TRANSVERSE 55 +#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56 +#define DMPAPER_A_PLUS 57 +#define DMPAPER_B_PLUS 58 +#define DMPAPER_LETTER_PLUS 59 +#define DMPAPER_A4_PLUS 60 +#define DMPAPER_A5_TRANSVERSE 61 +#define DMPAPER_B5_TRANSVERSE 62 +#define DMPAPER_A3_EXTRA 63 +#define DMPAPER_A5_EXTRA 64 +#define DMPAPER_B5_EXTRA 65 +#define DMPAPER_A2 66 +#define DMPAPER_A3_TRANSVERSE 67 +#define DMPAPER_A3_EXTRA_TRANSVERSE 68 +#define DMPAPER_DBL_JAPANESE_POSTCARD 69 +#define DMPAPER_A6 70 +#define DMPAPER_JENV_KAKU2 71 +#define DMPAPER_JENV_KAKU3 72 +#define DMPAPER_JENV_CHOU3 73 +#define DMPAPER_JENV_CHOU4 74 +#define DMPAPER_LETTER_ROTATED 75 +#define DMPAPER_A3_ROTATED 76 +#define DMPAPER_A4_ROTATED 77 +#define DMPAPER_A5_ROTATED 78 +#define DMPAPER_B4_JIS_ROTATED 79 +#define DMPAPER_B5_JIS_ROTATED 80 +#define DMPAPER_JAPANESE_POSTCARD_ROTATED 81 +#define DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED 82 +#define DMPAPER_A6_ROTATED 83 +#define DMPAPER_JENV_KAKU2_ROTATED 84 +#define DMPAPER_JENV_KAKU3_ROTATED 85 +#define DMPAPER_JENV_CHOU3_ROTATED 86 +#define DMPAPER_JENV_CHOU4_ROTATED 87 +#define DMPAPER_B6_JIS 88 +#define DMPAPER_B6_JIS_ROTATED 89 +#define DMPAPER_12X11 90 +#define DMPAPER_JENV_YOU4 91 +#define DMPAPER_JENV_YOU4_ROTATED 92 +#define DMPAPER_P16K 93 +#define DMPAPER_P32K 94 +#define DMPAPER_P32KBIG 95 +#define DMPAPER_PENV_1 96 +#define DMPAPER_PENV_2 97 +#define DMPAPER_PENV_3 98 +#define DMPAPER_PENV_4 99 +#define DMPAPER_PENV_5 100 +#define DMPAPER_PENV_6 101 +#define DMPAPER_PENV_7 102 +#define DMPAPER_PENV_8 103 +#define DMPAPER_PENV_9 104 +#define DMPAPER_PENV_10 105 +#define DMPAPER_P16K_ROTATED 106 +#define DMPAPER_P32K_ROTATED 107 +#define DMPAPER_P32KBIG_ROTATED 108 +#define DMPAPER_PENV_1_ROTATED 109 +#define DMPAPER_PENV_2_ROTATED 110 +#define DMPAPER_PENV_3_ROTATED 111 +#define DMPAPER_PENV_4_ROTATED 112 +#define DMPAPER_PENV_5_ROTATED 113 +#define DMPAPER_PENV_6_ROTATED 114 +#define DMPAPER_PENV_7_ROTATED 115 +#define DMPAPER_PENV_8_ROTATED 116 +#define DMPAPER_PENV_9_ROTATED 117 +#define DMPAPER_PENV_10_ROTATED 118 + +#define DMPAPER_LAST DMPAPER_PENV_10_ROTATED +#define DMPAPER_USER 256 + +#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_FORMSOURCE 15 +#define DMBIN_LAST DMBIN_FORMSOURCE +#define DMBIN_USER 256 + +#define DMRES_DRAFT (-1) +#define DMRES_LOW (-2) +#define DMRES_MEDIUM (-3) +#define DMRES_HIGH (-4) + +#define DMCOLOR_MONOCHROME 1 +#define DMCOLOR_COLOR 2 + +#define DMDUP_SIMPLEX 1 +#define DMDUP_VERTICAL 2 +#define DMDUP_HORIZONTAL 3 + +#define DMTT_BITMAP 1 +#define DMTT_DOWNLOAD 2 +#define DMTT_SUBDEV 3 +#define DMTT_DOWNLOAD_OUTLINE 4 + +#define DMCOLLATE_FALSE 0 +#define DMCOLLATE_TRUE 1 + +#define DMICMMETHOD_NONE 1 +#define DMICMMETHOD_SYSTEM 2 +#define DMICMMETHOD_DRIVER 3 +#define DMICMMETHOD_DEVICE 4 +#define DMICMMETHOD_USER 256 + +#define DMICM_SATURATE 1 +#define DMICM_CONTRAST 2 +#define DMICM_COLORMETRIC 3 +#define DMICM_USER 256 + +#define DMMEDIA_STANDARD 1 +#define DMMEDIA_TRANSPARENCY 2 +#define DMMEDIA_GLOSSY 3 +#define DMMEDIA_USER 256 + +#define DMDITHER_NONE 1 +#define DMDITHER_COARSE 2 +#define DMDITHER_FINE 3 +#define DMDITHER_LINEART 4 +#define DMDITHER_GRAYSCALE 5 +#define DMDITHER_USER 256 + +#define DMDO_DEFAULT 0 +#define DMDO_90 1 +#define DMDO_180 2 +#define DMDO_270 3 + +#define DMDFO_DEFAULT 0 +#define DMDFO_STRETCH 1 +#define DMDFO_CENTER 2 + +typedef struct +{ + INT cbSize; + LPCSTR lpszDocName; + LPCSTR lpszOutput; + LPCSTR lpszDatatype; + DWORD fwType; +} DOCINFOA, *LPDOCINFOA; + +typedef struct +{ + INT cbSize; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; + LPCWSTR lpszDatatype; + DWORD fwType; +} DOCINFOW, *LPDOCINFOW; + +DECL_WINELIB_TYPE_AW(DOCINFO) +DECL_WINELIB_TYPE_AW(LPDOCINFO) + +#define DI_APPBANDING 0x0001 + +/* Flags for PolyDraw and GetPath */ +#define PT_CLOSEFIGURE 0x0001 +#define PT_LINETO 0x0002 +#define PT_BEZIERTO 0x0004 +#define PT_MOVETO 0x0006 + +#define RDH_RECTANGLES 1 + +typedef struct _RGNDATAHEADER { + DWORD dwSize; + DWORD iType; + DWORD nCount; + DWORD nRgnSize; + RECT rcBound; +} RGNDATAHEADER,*PRGNDATAHEADER; + +typedef struct _RGNDATA { + RGNDATAHEADER rdh; + char Buffer[1]; +} RGNDATA,*PRGNDATA,*LPRGNDATA; + +typedef BOOL (CALLBACK *ABORTPROC)(HDC, INT); + +typedef struct { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD StateFlags; + CHAR DeviceID[128]; + CHAR DeviceKey[128]; +} DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA; + +typedef struct { + DWORD cb; + WCHAR DeviceName[32]; + WCHAR DeviceString[128]; + DWORD StateFlags; + WCHAR DeviceID[128]; + WCHAR DeviceKey[128]; +} DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW; +DECL_WINELIB_TYPE_AW(DISPLAY_DEVICE) +DECL_WINELIB_TYPE_AW(PDISPLAY_DEVICE) +DECL_WINELIB_TYPE_AW(LPDISPLAY_DEVICE) + +/* DISPLAY_DEVICE.StateFlags (?)*/ +#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001 +#define DISPLAY_DEVICE_MULTI_DRIVER 0x00000002 +#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004 +#define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008 +#define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010 + +#define GDI_ERROR (~0u) +#define HGDI_ERROR ((HANDLE)~(ULONG_PTR)0) + +/* AddFontResourceEx flags */ +#define FR_PRIVATE 0x10 +#define FR_NOT_ENUM 0x20 + +/* Mirroring flags */ +#define LAYOUT_LTR 0x00000000 +#define LAYOUT_RTL 0x00000001 +#define LAYOUT_BITMAPORIENTATIONPRESERVED 0x00000008 +#define NOMIRRORBITMAP 0x80000000 + +/* For DRAWPATTERNRECT Escape */ +typedef struct _DRAWPATRECT +{ + POINT ptPosition; + POINT ptSize; + WORD wStyle; + WORD wPattern; +} DRAWPATRECT, *PDRAWPATRECT; + +typedef struct tagWCRANGE { + WCHAR wcLow; + USHORT cGlyphs; +} WCRANGE, *PWCRANGE, *LPWCRANGE; + +typedef struct tagGLYPHSET { + DWORD cbThis; + DWORD flAccel; + DWORD cGlyphsSupported; + DWORD cRanges; + WCRANGE ranges[1]; +} GLYPHSET, *PGLYPHSET, *LPGLYPHSET; + +#define GS_8BIT_INDICES 0x00000001 + +WINGDIAPI INT WINAPI AbortDoc(HDC); +WINGDIAPI BOOL WINAPI AbortPath(HDC); +WINGDIAPI INT WINAPI AddFontResourceA(LPCSTR); +WINGDIAPI INT WINAPI AddFontResourceW(LPCWSTR); +#define AddFontResource WINELIB_NAME_AW(AddFontResource) +WINGDIAPI INT WINAPI AddFontResourceExA(LPCSTR, DWORD, PVOID); +WINGDIAPI INT WINAPI AddFontResourceExW(LPCWSTR, DWORD, PVOID); +#define AddFontResourceEx WINELIB_NAME_AW(AddFontResourceEx) +WINGDIAPI HANDLE WINAPI AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD *); +WINGDIAPI BOOL WINAPI AlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION); +WINGDIAPI BOOL WINAPI AngleArc(HDC, INT, INT, DWORD, FLOAT, FLOAT); +WINGDIAPI BOOL WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*); +WINGDIAPI BOOL WINAPI Arc(HDC,INT,INT,INT,INT,INT,INT,INT,INT); +WINGDIAPI BOOL WINAPI ArcTo(HDC, INT, INT, INT, INT, INT, INT, INT, INT); +WINGDIAPI BOOL WINAPI BeginPath(HDC); +WINGDIAPI BOOL WINAPI BitBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,DWORD); +WINGDIAPI INT WINAPI ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR*); +WINGDIAPI BOOL WINAPI Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT); +WINGDIAPI HENHMETAFILE WINAPI CloseEnhMetaFile(HDC); +WINGDIAPI BOOL WINAPI CloseFigure(HDC); +WINGDIAPI HMETAFILE WINAPI CloseMetaFile(HDC); +WINGDIAPI INT WINAPI CombineRgn(HRGN,HRGN,HRGN,INT); +WINGDIAPI BOOL WINAPI CombineTransform(LPXFORM,const XFORM *,const XFORM *); +WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR); +WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR); +#define CopyEnhMetaFile WINELIB_NAME_AW(CopyEnhMetaFile) +WINGDIAPI HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR); +WINGDIAPI HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR); +#define CopyMetaFile WINELIB_NAME_AW(CopyMetaFile) +WINGDIAPI HBITMAP WINAPI CreateBitmap(INT,INT,UINT,UINT,LPCVOID); +WINGDIAPI HBITMAP WINAPI CreateBitmapIndirect(const BITMAP*); +WINGDIAPI HBRUSH WINAPI CreateBrushIndirect(const LOGBRUSH*); +WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA); +WINGDIAPI HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW); +#define CreateColorSpace WINELIB_NAME_AW(CreateColorSpace) +WINGDIAPI HBITMAP WINAPI CreateCompatibleBitmap(HDC,INT,INT); +WINGDIAPI HDC WINAPI CreateCompatibleDC(HDC); +WINGDIAPI HDC WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*); +WINGDIAPI HDC WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*); +#define CreateDC WINELIB_NAME_AW(CreateDC) +WINGDIAPI HBITMAP WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,LPCVOID,const BITMAPINFO*,UINT); +WINGDIAPI HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL,UINT); +WINGDIAPI HBRUSH WINAPI CreateDIBPatternBrushPt(const void*,UINT); +WINGDIAPI HBITMAP WINAPI CreateDIBSection(HDC, const BITMAPINFO *, UINT, void **, HANDLE, DWORD offset); +WINGDIAPI HBITMAP WINAPI CreateDiscardableBitmap(HDC,INT,INT); +WINGDIAPI HRGN WINAPI CreateEllipticRgn(INT,INT,INT,INT); +WINGDIAPI HRGN WINAPI CreateEllipticRgnIndirect(const RECT *); +WINGDIAPI HDC WINAPI CreateEnhMetaFileA(HDC,LPCSTR,const RECT*,LPCSTR); +WINGDIAPI HDC WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,const RECT*,LPCWSTR); +#define CreateEnhMetaFile WINELIB_NAME_AW(CreateEnhMetaFile) +WINGDIAPI HFONT WINAPI CreateFontA(INT,INT,INT,INT,INT,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR); +WINGDIAPI HFONT WINAPI CreateFontW(INT,INT,INT,INT,INT,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR); +#define CreateFont WINELIB_NAME_AW(CreateFont) +WINGDIAPI HFONT WINAPI CreateFontIndirectA(const LOGFONTA*); +WINGDIAPI HFONT WINAPI CreateFontIndirectW(const LOGFONTW*); +#define CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect) +WINGDIAPI HFONT WINAPI CreateFontIndirectExA(const ENUMLOGFONTEXDVA*); +WINGDIAPI HFONT WINAPI CreateFontIndirectExW(const ENUMLOGFONTEXDVW*); +#define CreateFontIndirectEx WINELIB_NAME_AW(CreateFontIndirectEx) +WINGDIAPI HPALETTE WINAPI CreateHalftonePalette(HDC); +WINGDIAPI HBRUSH WINAPI CreateHatchBrush(INT,COLORREF); +WINGDIAPI HDC WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*); +WINGDIAPI HDC WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*); +#define CreateIC WINELIB_NAME_AW(CreateIC) +WINGDIAPI HDC WINAPI CreateMetaFileA(LPCSTR); +WINGDIAPI HDC WINAPI CreateMetaFileW(LPCWSTR); +#define CreateMetaFile WINELIB_NAME_AW(CreateMetaFile) +WINGDIAPI HPALETTE WINAPI CreatePalette(const LOGPALETTE*); +WINGDIAPI HBRUSH WINAPI CreatePatternBrush(HBITMAP); +WINGDIAPI HPEN WINAPI CreatePen(INT,INT,COLORREF); +WINGDIAPI HPEN WINAPI CreatePenIndirect(const LOGPEN*); +WINGDIAPI HRGN WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,INT,INT); +WINGDIAPI HRGN WINAPI CreatePolygonRgn(const POINT*,INT,INT); +WINGDIAPI HRGN WINAPI CreateRectRgn(INT,INT,INT,INT); +WINGDIAPI HRGN WINAPI CreateRectRgnIndirect(const RECT*); +WINGDIAPI HRGN WINAPI CreateRoundRectRgn(INT,INT,INT,INT,INT,INT); +WINGDIAPI BOOL WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR); +WINGDIAPI BOOL WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR); +#define CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource) +WINGDIAPI HBRUSH WINAPI CreateSolidBrush(COLORREF); +WINGDIAPI BOOL WINAPI DPtoLP(HDC,LPPOINT,INT); +WINGDIAPI BOOL WINAPI DeleteColorSpace(HCOLORSPACE); +WINGDIAPI BOOL WINAPI DeleteDC(HDC); +WINGDIAPI BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE); +WINGDIAPI BOOL WINAPI DeleteMetaFile(HMETAFILE); +WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ); +WINGDIAPI INT WINAPI DescribePixelFormat(HDC,int,UINT,LPPIXELFORMATDESCRIPTOR); +WINGDIAPI INT WINAPI DrawEscape(HDC,INT,INT,LPCSTR); +WINGDIAPI BOOL WINAPI Ellipse(HDC,INT,INT,INT,INT); +WINGDIAPI INT WINAPI EndDoc(HDC); +WINGDIAPI BOOL WINAPI EndPath(HDC); +WINGDIAPI BOOL WINAPI EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,LPVOID,const RECT*); +WINGDIAPI INT WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM); +WINGDIAPI INT WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM); +#define EnumFontFamilies WINELIB_NAME_AW(EnumFontFamilies) +WINGDIAPI INT WINAPI EnumFontFamiliesExA(HDC,LPLOGFONTA,FONTENUMPROCA,LPARAM,DWORD); +WINGDIAPI INT WINAPI EnumFontFamiliesExW(HDC,LPLOGFONTW,FONTENUMPROCW,LPARAM,DWORD); +#define EnumFontFamiliesEx WINELIB_NAME_AW(EnumFontFamiliesEx) +WINGDIAPI INT WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM); +WINGDIAPI INT WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM); +#define EnumFonts WINELIB_NAME_AW(EnumFonts) +WINGDIAPI INT WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM); +WINGDIAPI INT WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM); +#define EnumICMProfiles WINELIB_NAME_AW(EnumICMProfiles) +WINGDIAPI BOOL WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM); +WINGDIAPI INT WINAPI EnumObjects(HDC,INT,GOBJENUMPROC,LPARAM); +WINGDIAPI BOOL WINAPI EqualRgn(HRGN,HRGN); +WINGDIAPI INT WINAPI Escape(HDC,INT,INT,LPCSTR,LPVOID); +WINGDIAPI INT WINAPI ExcludeClipRect(HDC,INT,INT,INT,INT); +WINGDIAPI HPEN WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*); +WINGDIAPI HRGN WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*); +WINGDIAPI INT WINAPI ExtEscape(HDC,INT,INT,LPCSTR,INT,LPSTR); +WINGDIAPI BOOL WINAPI ExtFloodFill(HDC,INT,INT,COLORREF,UINT); +WINGDIAPI INT WINAPI ExtSelectClipRgn(HDC,HRGN,INT); +WINGDIAPI BOOL WINAPI ExtTextOutA(HDC,INT,INT,UINT,const RECT*,LPCSTR,UINT,const INT*); +WINGDIAPI BOOL WINAPI ExtTextOutW(HDC,INT,INT,UINT,const RECT*,LPCWSTR,UINT,const INT*); +#define ExtTextOut WINELIB_NAME_AW(ExtTextOut) +WINGDIAPI BOOL WINAPI FillPath(HDC); +WINGDIAPI BOOL WINAPI FillRgn(HDC,HRGN,HBRUSH); +WINGDIAPI BOOL WINAPI FixBrushOrgEx(HDC,INT,INT,LPPOINT); +WINGDIAPI BOOL WINAPI FlattenPath(HDC); +WINGDIAPI BOOL WINAPI FloodFill(HDC,INT,INT,COLORREF); +WINGDIAPI BOOL WINAPI FrameRgn(HDC,HRGN,HBRUSH,INT,INT); +WINGDIAPI BOOL WINAPI GdiAlphaBlend(HDC,int,int,int,int,HDC,int,int,int,int,BLENDFUNCTION); +WINGDIAPI BOOL WINAPI GdiComment(HDC,UINT,const BYTE *); +WINGDIAPI DEVMODEW * WINAPI GdiConvertToDevmodeW(const DEVMODEA *); +WINGDIAPI BOOL WINAPI GdiFlush(void); +WINGDIAPI LONG WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *); +WINGDIAPI DWORD WINAPI GdiGetCodePage(HDC); +WINGDIAPI BOOL WINAPI GdiGradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG); +WINGDIAPI BOOL WINAPI GdiIsMetaFileDC(HDC); +WINGDIAPI BOOL WINAPI GdiIsMetaPrintDC(HDC); +WINGDIAPI BOOL WINAPI GdiIsPlayMetafileDC(HDC); +WINGDIAPI BOOL WINAPI GdiTransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT); +WINGDIAPI INT WINAPI GetArcDirection(HDC); +WINGDIAPI BOOL WINAPI GetAspectRatioFilterEx(HDC,LPSIZE); +WINGDIAPI LONG WINAPI GetBitmapBits(HBITMAP,LONG,LPVOID); +WINGDIAPI BOOL WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE); +WINGDIAPI BOOL WINAPI GetBrushOrgEx(HDC,LPPOINT); +WINGDIAPI COLORREF WINAPI GetBkColor(HDC); +WINGDIAPI INT WINAPI GetBkMode(HDC); +WINGDIAPI UINT WINAPI GetBoundsRect(HDC,LPRECT,UINT); +WINGDIAPI BOOL WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC); +WINGDIAPI BOOL WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC); +#define GetCharABCWidths WINELIB_NAME_AW(GetCharABCWidths) +WINGDIAPI BOOL WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT); +WINGDIAPI BOOL WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT); +#define GetCharABCWidthsFloat WINELIB_NAME_AW(GetCharABCWidthsFloat) +WINGDIAPI BOOL WINAPI GetCharABCWidthsI(HDC,UINT,UINT,LPWORD,LPABC); +WINGDIAPI DWORD WINAPI GetCharacterPlacementA(HDC,LPCSTR,INT,INT,GCP_RESULTSA*,DWORD); +WINGDIAPI DWORD WINAPI GetCharacterPlacementW(HDC,LPCWSTR,INT,INT,GCP_RESULTSW*,DWORD); +#define GetCharacterPlacement WINELIB_NAME_AW(GetCharacterPlacement) +WINGDIAPI BOOL WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT); +WINGDIAPI BOOL WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT); +#define GetCharWidth32 WINELIB_NAME_AW(GetCharWidth32) +WINGDIAPI BOOL WINAPI GetCharWidthA(HDC,UINT,UINT,LPINT); +WINGDIAPI BOOL WINAPI GetCharWidthI(HDC,UINT,UINT,LPWORD,LPINT); +WINGDIAPI BOOL WINAPI GetCharWidthW(HDC,UINT,UINT,LPINT); +#define GetCharWidth WINELIB_NAME_AW(GetCharWidth) +WINGDIAPI BOOL WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT); +WINGDIAPI BOOL WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT); +#define GetCharWidthFloat WINELIB_NAME_AW(GetCharWidthFloat) +WINGDIAPI INT WINAPI GetClipBox(HDC,LPRECT); +WINGDIAPI INT WINAPI GetClipRgn(HDC,HRGN); +WINGDIAPI BOOL WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT); +WINGDIAPI HCOLORSPACE WINAPI GetColorSpace(HDC); +WINGDIAPI HGDIOBJ WINAPI GetCurrentObject(HDC,UINT); +WINGDIAPI BOOL WINAPI GetCurrentPositionEx(HDC,LPPOINT); +WINGDIAPI INT WINAPI GetDeviceCaps(HDC,INT); +WINGDIAPI BOOL WINAPI GetDeviceGammaRamp(HDC,LPVOID); +WINGDIAPI COLORREF WINAPI GetDCBrushColor(HDC); +WINGDIAPI BOOL WINAPI GetDCOrgEx(HDC,LPPOINT); +WINGDIAPI COLORREF WINAPI GetDCPenColor(HDC); +WINGDIAPI UINT WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*); +WINGDIAPI INT WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,LPVOID,LPBITMAPINFO,UINT); +WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR); +WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR); +#define GetEnhMetaFile WINELIB_NAME_AW(GetEnhMetaFile) +WINGDIAPI UINT WINAPI GetEnhMetaFileBits(HENHMETAFILE,UINT,LPBYTE); +WINGDIAPI UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR); +WINGDIAPI UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR); +#define GetEnhMetaFileDescription WINELIB_NAME_AW(GetEnhMetaFileDescription) +WINGDIAPI UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER); +WINGDIAPI UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY); +WINGDIAPI DWORD WINAPI GetFontData(HDC,DWORD,DWORD,LPVOID,DWORD); +WINGDIAPI DWORD WINAPI GetFontLanguageInfo(HDC); +WINGDIAPI DWORD WINAPI GetFontUnicodeRanges(HDC,LPGLYPHSET); +WINGDIAPI DWORD WINAPI GetGlyphIndicesA(HDC,LPCSTR,INT,LPWORD,DWORD); +WINGDIAPI DWORD WINAPI GetGlyphIndicesW(HDC,LPCWSTR,INT,LPWORD,DWORD); +#define GetGlyphIndices WINELIB_NAME_AW(GetGlyphIndices) +WINGDIAPI DWORD WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*); +WINGDIAPI DWORD WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,LPVOID,const MAT2*); +#define GetGlyphOutline WINELIB_NAME_AW(GetGlyphOutline) +WINGDIAPI INT WINAPI GetGraphicsMode(HDC); +WINGDIAPI BOOL WINAPI GetICMProfileA(HDC,LPDWORD,LPSTR); +WINGDIAPI BOOL WINAPI GetICMProfileW(HDC,LPDWORD,LPWSTR); +#define GetICMProfile WINELIB_NAME_AW(GetICMProfile) +WINGDIAPI DWORD WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR); +WINGDIAPI DWORD WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR); +#define GetKerningPairs WINELIB_NAME_AW(GetKerningPairs) +WINGDIAPI DWORD WINAPI GetLayout(HDC); +WINGDIAPI BOOL WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD); +WINGDIAPI BOOL WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD); +#define GetLogColorSpace WINELIB_NAME_AW(GetLogColorSpace) +WINGDIAPI INT WINAPI GetMapMode(HDC); +WINGDIAPI HMETAFILE WINAPI GetMetaFileA(LPCSTR); +WINGDIAPI HMETAFILE WINAPI GetMetaFileW(LPCWSTR); +#define GetMetaFile WINELIB_NAME_AW(GetMetaFile) +WINGDIAPI UINT WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,LPVOID); +WINGDIAPI INT WINAPI GetMetaRgn(HDC,HRGN); +WINGDIAPI BOOL WINAPI GetMiterLimit(HDC, PFLOAT); +WINGDIAPI DWORD WINAPI GetNearestColor(HDC,DWORD); +WINGDIAPI UINT WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF); +WINGDIAPI INT WINAPI GetObjectA(HGDIOBJ,INT,LPVOID); +WINGDIAPI INT WINAPI GetObjectW(HGDIOBJ,INT,LPVOID); +#define GetObject WINELIB_NAME_AW(GetObject) +WINGDIAPI DWORD WINAPI GetObjectType(HGDIOBJ); +WINGDIAPI UINT WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA); +WINGDIAPI UINT WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW); +#define GetOutlineTextMetrics WINELIB_NAME_AW(GetOutlineTextMetrics) +WINGDIAPI UINT WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY); +WINGDIAPI INT WINAPI GetPath(HDC,LPPOINT,LPBYTE,INT); +WINGDIAPI COLORREF WINAPI GetPixel(HDC,INT,INT); +WINGDIAPI INT WINAPI GetPixelFormat(HDC); +WINGDIAPI INT WINAPI GetPolyFillMode(HDC); +WINGDIAPI INT WINAPI GetRandomRgn(HDC,HRGN,INT); +WINGDIAPI BOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT); +WINGDIAPI DWORD WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA); +WINGDIAPI INT WINAPI GetRelAbs(HDC,DWORD); +WINGDIAPI INT WINAPI GetRgnBox(HRGN,LPRECT); +WINGDIAPI INT WINAPI GetROP2(HDC); +WINGDIAPI HGDIOBJ WINAPI GetStockObject(INT); +WINGDIAPI INT WINAPI GetStretchBltMode(HDC); +WINGDIAPI UINT WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY); +WINGDIAPI UINT WINAPI GetSystemPaletteUse(HDC); +WINGDIAPI UINT WINAPI GetTextAlign(HDC); +WINGDIAPI INT WINAPI GetTextCharacterExtra(HDC); +WINGDIAPI UINT WINAPI GetTextCharset(HDC); +WINGDIAPI UINT WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD); +WINGDIAPI COLORREF WINAPI GetTextColor(HDC); +WINGDIAPI BOOL WINAPI GetTextExtentExPointA(HDC,LPCSTR,INT,INT,LPINT,LPINT,LPSIZE); +WINGDIAPI BOOL WINAPI GetTextExtentExPointW(HDC,LPCWSTR,INT,INT,LPINT,LPINT,LPSIZE); +#define GetTextExtentExPoint WINELIB_NAME_AW(GetTextExtentExPoint) +WINGDIAPI BOOL WINAPI GetTextExtentPointA(HDC,LPCSTR,INT,LPSIZE); +WINGDIAPI BOOL WINAPI GetTextExtentPointW(HDC,LPCWSTR,INT,LPSIZE); +#define GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint) +WINGDIAPI BOOL WINAPI GetTextExtentPoint32A(HDC,LPCSTR,INT,LPSIZE); +WINGDIAPI BOOL WINAPI GetTextExtentPoint32W(HDC,LPCWSTR,INT,LPSIZE); +#define GetTextExtentPoint32 WINELIB_NAME_AW(GetTextExtentPoint32) +WINGDIAPI BOOL WINAPI GetTextExtentExPointI(HDC,const WORD*,INT,INT,LPINT,LPINT,LPSIZE); +WINGDIAPI BOOL WINAPI GetTextExtentPointI(HDC,const WORD*,INT,LPSIZE); +WINGDIAPI INT WINAPI GetTextFaceA(HDC,INT,LPSTR); +WINGDIAPI INT WINAPI GetTextFaceW(HDC,INT,LPWSTR); +#define GetTextFace WINELIB_NAME_AW(GetTextFace) +WINGDIAPI BOOL WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA); +WINGDIAPI BOOL WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW); +#define GetTextMetrics WINELIB_NAME_AW(GetTextMetrics) +WINGDIAPI BOOL WINAPI GetTransform(HDC,DWORD,XFORM*); +WINGDIAPI BOOL WINAPI GetViewportExtEx(HDC,LPSIZE); +WINGDIAPI BOOL WINAPI GetViewportOrgEx(HDC,LPPOINT); +WINGDIAPI BOOL WINAPI GetWindowExtEx(HDC,LPSIZE); +WINGDIAPI BOOL WINAPI GetWindowOrgEx(HDC,LPPOINT); +WINGDIAPI UINT WINAPI GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC); +WINGDIAPI BOOL WINAPI GetWorldTransform(HDC,LPXFORM); +WINGDIAPI BOOL WINAPI GradientFill(HDC,PTRIVERTEX,ULONG,PVOID,ULONG,ULONG); +WINGDIAPI INT WINAPI IntersectClipRect(HDC,INT,INT,INT,INT); +WINGDIAPI BOOL WINAPI InvertRgn(HDC,HRGN); +WINGDIAPI BOOL WINAPI LineDDA(INT,INT,INT,INT,LINEDDAPROC,LPARAM); +WINGDIAPI BOOL WINAPI LineTo(HDC,INT,INT); +WINGDIAPI BOOL WINAPI LPtoDP(HDC,LPPOINT,INT); +WINGDIAPI BOOL WINAPI MaskBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,HBITMAP,INT,INT,DWORD); +WINGDIAPI BOOL WINAPI MirrorRgn(HWND,HRGN); +WINGDIAPI BOOL WINAPI ModifyWorldTransform(HDC,const XFORM *, DWORD); +WINGDIAPI BOOL WINAPI MoveToEx(HDC,INT,INT,LPPOINT); +WINGDIAPI INT WINAPI OffsetClipRgn(HDC,INT,INT); +WINGDIAPI INT WINAPI OffsetRgn(HRGN,INT,INT); +WINGDIAPI BOOL WINAPI OffsetViewportOrgEx(HDC,INT,INT,LPPOINT); +WINGDIAPI BOOL WINAPI OffsetWindowOrgEx(HDC,INT,INT,LPPOINT); +WINGDIAPI BOOL WINAPI PaintRgn(HDC,HRGN); +WINGDIAPI BOOL WINAPI PatBlt(HDC,INT,INT,INT,INT,DWORD); +WINGDIAPI HRGN WINAPI PathToRegion(HDC); +WINGDIAPI BOOL WINAPI Pie(HDC,INT,INT,INT,INT,INT,INT,INT,INT); +WINGDIAPI BOOL WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,const RECT*); +WINGDIAPI BOOL WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT); +WINGDIAPI BOOL WINAPI PlayMetaFile(HDC,HMETAFILE); +WINGDIAPI BOOL WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT); +WINGDIAPI BOOL WINAPI PlgBlt(HDC,const POINT*,HDC,INT,INT,INT,INT,HBITMAP,INT,INT); +WINGDIAPI BOOL WINAPI PolyBezier(HDC,const POINT*,DWORD); +WINGDIAPI BOOL WINAPI PolyBezierTo(HDC,const POINT*,DWORD); +WINGDIAPI BOOL WINAPI PolyDraw(HDC,const POINT*,const BYTE*,DWORD); +WINGDIAPI BOOL WINAPI PolyPolygon(HDC,const POINT*,const INT*,UINT); +WINGDIAPI BOOL WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD); +WINGDIAPI BOOL WINAPI Polygon(HDC,const POINT*,INT); +WINGDIAPI BOOL WINAPI Polyline(HDC,const POINT*,INT); +WINGDIAPI BOOL WINAPI PolylineTo(HDC,const POINT*,DWORD); +WINGDIAPI BOOL WINAPI PtInRegion(HRGN,INT,INT); +WINGDIAPI BOOL WINAPI PtVisible(HDC,INT,INT); +WINGDIAPI UINT WINAPI RealizePalette(HDC); +WINGDIAPI BOOL WINAPI Rectangle(HDC,INT,INT,INT,INT); +WINGDIAPI BOOL WINAPI RectInRegion(HRGN,const RECT *); +WINGDIAPI BOOL WINAPI RectVisible(HDC,const RECT*); +WINGDIAPI BOOL WINAPI RemoveFontMemResourceEx(HANDLE); +WINGDIAPI BOOL WINAPI RemoveFontResourceA(LPCSTR); +WINGDIAPI BOOL WINAPI RemoveFontResourceW(LPCWSTR); +#define RemoveFontResource WINELIB_NAME_AW(RemoveFontResource) +WINGDIAPI BOOL WINAPI RemoveFontResourceExA(LPCSTR, DWORD, PVOID); +WINGDIAPI BOOL WINAPI RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); +#define RemoveFontResourceEx WINELIB_NAME_AW(RemoveFontResourceEx) +WINGDIAPI HDC WINAPI ResetDCA(HDC,const DEVMODEA *); +WINGDIAPI HDC WINAPI ResetDCW(HDC,const DEVMODEW *); +#define ResetDC WINELIB_NAME_AW(ResetDC) +WINGDIAPI BOOL WINAPI ResizePalette(HPALETTE,UINT); +WINGDIAPI BOOL WINAPI RestoreDC(HDC,INT); +WINGDIAPI BOOL WINAPI RoundRect(HDC,INT,INT,INT,INT,INT,INT); +WINGDIAPI INT WINAPI SaveDC(HDC); +WINGDIAPI BOOL WINAPI ScaleViewportExtEx(HDC,INT,INT,INT,INT,LPSIZE); +WINGDIAPI BOOL WINAPI ScaleWindowExtEx(HDC,INT,INT,INT,INT,LPSIZE); +WINGDIAPI BOOL WINAPI SelectClipPath(HDC,INT); +WINGDIAPI INT WINAPI SelectClipRgn(HDC,HRGN); +WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC,HGDIOBJ); +WINGDIAPI HPALETTE WINAPI SelectPalette(HDC,HPALETTE,BOOL); +WINGDIAPI INT WINAPI SetAbortProc(HDC,ABORTPROC); +WINGDIAPI INT WINAPI SetArcDirection(HDC,INT); +WINGDIAPI LONG WINAPI SetBitmapBits(HBITMAP,LONG,LPCVOID); +WINGDIAPI BOOL WINAPI SetBitmapDimensionEx(HBITMAP,INT,INT,LPSIZE); +WINGDIAPI COLORREF WINAPI SetBkColor(HDC,COLORREF); +WINGDIAPI INT WINAPI SetBkMode(HDC,INT); +WINGDIAPI UINT WINAPI SetBoundsRect(HDC,const RECT*,UINT); +WINGDIAPI BOOL WINAPI SetBrushOrgEx(HDC,INT,INT,LPPOINT); +WINGDIAPI BOOL WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*); +WINGDIAPI HCOLORSPACE WINAPI SetColorSpace(HDC,HCOLORSPACE); +WINGDIAPI BOOL WINAPI SetDeviceGammaRamp(HDC,LPVOID); +WINGDIAPI COLORREF WINAPI SetDCBrushColor(HDC,COLORREF); +WINGDIAPI COLORREF WINAPI SetDCPenColor(HDC, COLORREF); +WINGDIAPI UINT WINAPI SetDIBColorTable(HDC,UINT,UINT,const RGBQUAD*); +WINGDIAPI INT WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT); +WINGDIAPI INT WINAPI SetDIBitsToDevice(HDC,INT,INT,DWORD,DWORD,INT,INT,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT); +WINGDIAPI HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE *); +WINGDIAPI INT WINAPI SetGraphicsMode(HDC,INT); +WINGDIAPI INT WINAPI SetICMMode(HDC,INT); +WINGDIAPI BOOL WINAPI SetICMProfileA(HDC,LPSTR); +WINGDIAPI BOOL WINAPI SetICMProfileW(HDC,LPWSTR); +#define SetICMProfile WINELIB_NAME_AW(SetICMProfile) +WINGDIAPI DWORD WINAPI SetLayout(HDC,DWORD); +WINGDIAPI INT WINAPI SetMapMode(HDC,INT); +WINGDIAPI DWORD WINAPI SetMapperFlags(HDC,DWORD); +WINGDIAPI HMETAFILE WINAPI SetMetaFileBitsEx(UINT,const BYTE*); +WINGDIAPI INT WINAPI SetMetaRgn(HDC); +WINGDIAPI BOOL WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT); +WINGDIAPI UINT WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*); +WINGDIAPI COLORREF WINAPI SetPixel(HDC,INT,INT,COLORREF); +WINGDIAPI BOOL WINAPI SetPixelV(HDC,INT,INT,COLORREF); +WINGDIAPI BOOL WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*); +WINGDIAPI INT WINAPI SetPolyFillMode(HDC,INT); +WINGDIAPI BOOL WINAPI SetRectRgn(HRGN,INT,INT,INT,INT); +WINGDIAPI INT WINAPI SetRelAbs(HDC,INT); +WINGDIAPI INT WINAPI SetROP2(HDC,INT); +WINGDIAPI INT WINAPI SetStretchBltMode(HDC,INT); +WINGDIAPI UINT WINAPI SetSystemPaletteUse(HDC,UINT); +WINGDIAPI UINT WINAPI SetTextAlign(HDC,UINT); +WINGDIAPI INT WINAPI SetTextCharacterExtra(HDC,INT); +WINGDIAPI COLORREF WINAPI SetTextColor(HDC,COLORREF); +WINGDIAPI BOOL WINAPI SetTextJustification(HDC,INT,INT); +WINGDIAPI BOOL WINAPI SetViewportExtEx(HDC,INT,INT,LPSIZE); +WINGDIAPI BOOL WINAPI SetViewportOrgEx(HDC,INT,INT,LPPOINT); +WINGDIAPI BOOL WINAPI SetWindowExtEx(HDC,INT,INT,LPSIZE); +WINGDIAPI BOOL WINAPI SetWindowOrgEx(HDC,INT,INT,LPPOINT); +WINGDIAPI HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,const BYTE*,HDC,const METAFILEPICT *); +WINGDIAPI BOOL WINAPI SetWorldTransform(HDC,const XFORM*); +WINGDIAPI INT WINAPI StartDocA(HDC,const DOCINFOA*); +WINGDIAPI INT WINAPI StartDocW(HDC,const DOCINFOW*); +#define StartDoc WINELIB_NAME_AW(StartDoc) +WINGDIAPI INT WINAPI StartPage(HDC); +WINGDIAPI INT WINAPI EndPage(HDC); +WINGDIAPI BOOL WINAPI StretchBlt(HDC,INT,INT,INT,INT,HDC,INT,INT,INT,INT,DWORD); +WINGDIAPI INT WINAPI StretchDIBits(HDC,INT,INT,INT,INT,INT,INT,INT,INT,const VOID*,const BITMAPINFO*,UINT,DWORD); +WINGDIAPI BOOL WINAPI StrokeAndFillPath(HDC); +WINGDIAPI BOOL WINAPI StrokePath(HDC); +WINGDIAPI BOOL WINAPI SwapBuffers(HDC); +WINGDIAPI BOOL WINAPI TextOutA(HDC,INT,INT,LPCSTR,INT); +WINGDIAPI BOOL WINAPI TextOutW(HDC,INT,INT,LPCWSTR,INT); +#define TextOut WINELIB_NAME_AW(TextOut) +WINGDIAPI BOOL WINAPI TranslateCharsetInfo(LPDWORD,LPCHARSETINFO,DWORD); +WINGDIAPI BOOL WINAPI TransparentBlt(HDC,int,int,int,int,HDC,int,int,int,int,UINT); +WINGDIAPI BOOL WINAPI UnrealizeObject(HGDIOBJ); +WINGDIAPI BOOL WINAPI UpdateColors(HDC); +WINGDIAPI BOOL WINAPI UpdateICMRegKeyA(DWORD,LPSTR,LPSTR,UINT); +WINGDIAPI BOOL WINAPI UpdateICMRegKeyW(DWORD,LPWSTR,LPWSTR,UINT); +#define UpdateICMRegKey WINELIB_NAME_AW(UpdateICMRegKey) +WINGDIAPI BOOL WINAPI WidenPath(HDC); +WINGDIAPI BOOL WINAPI PolyTextOutA(HDC,const POLYTEXTA*,INT); +WINGDIAPI BOOL WINAPI PolyTextOutW(HDC,const POLYTEXTW*,INT); +#define PolyTextOut WINELIB_NAME_AW(PolyTextOut) + +/* These defines are used by wglSwapLayerBuffers */ +#define WGL_SWAP_MAIN_PLANE (1 << 0) +#define WGL_SWAP_OVERLAY1 (1 << 1) +#define WGL_SWAP_OVERLAY2 (1 << 2) +#define WGL_SWAP_OVERLAY3 (1 << 3) +#define WGL_SWAP_OVERLAY4 (1 << 4) +#define WGL_SWAP_OVERLAY5 (1 << 5) +#define WGL_SWAP_OVERLAY6 (1 << 6) +#define WGL_SWAP_OVERLAY7 (1 << 7) +#define WGL_SWAP_OVERLAY8 (1 << 8) +#define WGL_SWAP_OVERLAY9 (1 << 9) +#define WGL_SWAP_OVERLAY10 (1 << 10) +#define WGL_SWAP_OVERLAY11 (1 << 11) +#define WGL_SWAP_OVERLAY12 (1 << 12) +#define WGL_SWAP_OVERLAY13 (1 << 13) +#define WGL_SWAP_OVERLAY14 (1 << 14) +#define WGL_SWAP_OVERLAY15 (1 << 15) +#define WGL_SWAP_UNDERLAY1 (1 << 16) +#define WGL_SWAP_UNDERLAY2 (1 << 17) +#define WGL_SWAP_UNDERLAY3 (1 << 18) +#define WGL_SWAP_UNDERLAY4 (1 << 19) +#define WGL_SWAP_UNDERLAY5 (1 << 20) +#define WGL_SWAP_UNDERLAY6 (1 << 21) +#define WGL_SWAP_UNDERLAY7 (1 << 22) +#define WGL_SWAP_UNDERLAY8 (1 << 23) +#define WGL_SWAP_UNDERLAY9 (1 << 24) +#define WGL_SWAP_UNDERLAY10 (1 << 25) +#define WGL_SWAP_UNDERLAY11 (1 << 26) +#define WGL_SWAP_UNDERLAY12 (1 << 27) +#define WGL_SWAP_UNDERLAY13 (1 << 28) +#define WGL_SWAP_UNDERLAY14 (1 << 29) +#define WGL_SWAP_UNDERLAY15 (1 << 30) + +#define WGL_FONT_LINES 0 +#define WGL_FONT_POLYGONS 1 + +/* WGL prototypes */ +WINGDIAPI HGLRC WINAPI wglCreateContext(HDC); +WINGDIAPI HGLRC WINAPI wglCreateLayerContext(HDC,INT); +WINGDIAPI BOOL WINAPI wglCopyContext(HGLRC,HGLRC,UINT); +WINGDIAPI BOOL WINAPI wglDeleteContext(HGLRC); +WINGDIAPI BOOL WINAPI wglDescribeLayerPlane(HDC,INT,INT,UINT,LPLAYERPLANEDESCRIPTOR); +WINGDIAPI HGLRC WINAPI wglGetCurrentContext(void); +WINGDIAPI HDC WINAPI wglGetCurrentDC(void); +WINGDIAPI INT WINAPI wglGetLayerPaletteEntries(HDC,INT,INT,INT,const COLORREF *); +WINGDIAPI PROC WINAPI wglGetProcAddress(LPCSTR); +WINGDIAPI BOOL WINAPI wglMakeCurrent(HDC,HGLRC); +WINGDIAPI BOOL WINAPI wglRealizeLayerPalette(HDC,INT,BOOL); +WINGDIAPI INT WINAPI wglSetLayerPaletteEntries(HDC,INT,INT,INT,const COLORREF *); +WINGDIAPI BOOL WINAPI wglShareLists(HGLRC,HGLRC); +WINGDIAPI BOOL WINAPI wglSwapLayerBuffers(HDC,UINT); +WINGDIAPI BOOL WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD); +WINGDIAPI BOOL WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD); +#define wglUseFontBitmaps WINELIB_NAME_AW(wglUseFontBitmaps) +WINGDIAPI BOOL WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,INT,LPGLYPHMETRICSFLOAT); +WINGDIAPI BOOL WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,INT,LPGLYPHMETRICSFLOAT); +#define wglUseFontOutlines WINELIB_NAME_AW(wglUseFontOutlines) + +#ifdef __cplusplus +} +#endif + +#endif /* !NOGDI */ +#endif /* _WINGDI_ */ |