Artifact 5fb8f5b21d4e8b0439d492fc87b82e91cabfe98c
- File
src/win32/wingdi.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
/***********************************************************************\ * wingdi.d * * * * Windows API header module * * * * Translated from MinGW Windows headers * * * * Placed into public domain * \***********************************************************************/ module win32.wingdi; pragma(lib, "gdi32"); // FIXME: clean up Windows version support private import win32.w32api, win32.windef, win32.winver; // BITMAPINFOHEADER.biCompression enum : DWORD { BI_RGB = 0, BI_RLE8, BI_RLE4, BI_BITFIELDS, BI_JPEG, BI_PNG } // --- // COLORADJUSTMENT -- only for NT 3.1+, Win2000+ const WORD CA_NEGATIVE = 1, CA_LOG_FILTER = 2; // COLORADJUSTMENT enum : WORD { ILLUMINANT_DEVICE_DEFAULT = 0, ILLUMINANT_A, ILLUMINANT_B, ILLUMINANT_C, ILLUMINANT_D50, ILLUMINANT_D55, ILLUMINANT_D65, ILLUMINANT_D75, ILLUMINANT_F2, ILLUMINANT_MAX_INDEX = ILLUMINANT_F2, ILLUMINANT_TUNGSTEN = ILLUMINANT_A, ILLUMINANT_DAYLIGHT = ILLUMINANT_C, ILLUMINANT_FLUORESCENT = ILLUMINANT_F2, ILLUMINANT_NTSC = ILLUMINANT_C } enum { RGB_GAMMA_MIN = 2500, RGB_GAMMA_MAX = 65000, REFERENCE_WHITE_MIN = 6000, REFERENCE_WHITE_MAX = 10000, REFERENCE_BLACK_MIN = 0, REFERENCE_BLACK_MAX = 4000, COLOR_ADJ_MIN = -100, COLOR_ADJ_MAX = 100, } //--- /* FIXME: move to win32.winuser ? */ // DrawIconEx() enum : UINT { DI_MASK = 1, DI_IMAGE = 2, DI_NORMAL = 3, DI_COMPAT = 4, DI_DEFAULTSIZE = 8 } // DOCINFO enum : DWORD { DI_APPBANDING = 1, DI_ROPS_READ_DESTINATION = 2, } // ENHMETAHEADER enum : DWORD { EMR_HEADER = 1, EMR_POLYBEZIER, EMR_POLYGON, EMR_POLYLINE, EMR_POLYBEZIERTO, EMR_POLYLINETO, EMR_POLYPOLYLINE, EMR_POLYPOLYGON, EMR_SETWINDOWEXTEX, EMR_SETWINDOWORGEX, EMR_SETVIEWPORTEXTEX, EMR_SETVIEWPORTORGEX, EMR_SETBRUSHORGEX, EMR_EOF, EMR_SETPIXELV, EMR_SETMAPPERFLAGS, EMR_SETMAPMODE, EMR_SETBKMODE, EMR_SETPOLYFILLMODE, EMR_SETROP2, EMR_SETSTRETCHBLTMODE, EMR_SETTEXTALIGN, EMR_SETCOLORADJUSTMENT, EMR_SETTEXTCOLOR, EMR_SETBKCOLOR, EMR_OFFSETCLIPRGN, EMR_MOVETOEX, EMR_SETMETARGN, EMR_EXCLUDECLIPRECT, EMR_INTERSECTCLIPRECT, EMR_SCALEVIEWPORTEXTEX, EMR_SCALEWINDOWEXTEX, EMR_SAVEDC, EMR_RESTOREDC, EMR_SETWORLDTRANSFORM, EMR_MODIFYWORLDTRANSFORM, EMR_SELECTOBJECT, EMR_CREATEPEN, EMR_CREATEBRUSHINDIRECT, EMR_DELETEOBJECT, EMR_ANGLEARC, EMR_ELLIPSE, EMR_RECTANGLE, EMR_ROUNDRECT, EMR_ARC, EMR_CHORD, EMR_PIE, EMR_SELECTPALETTE, EMR_CREATEPALETTE, EMR_SETPALETTEENTRIES, EMR_RESIZEPALETTE, EMR_REALIZEPALETTE, EMR_EXTFLOODFILL, EMR_LINETO, EMR_ARCTO, EMR_POLYDRAW, EMR_SETARCDIRECTION, EMR_SETMITERLIMIT, EMR_BEGINPATH, EMR_ENDPATH, EMR_CLOSEFIGURE, EMR_FILLPATH, EMR_STROKEANDFILLPATH, EMR_STROKEPATH, EMR_FLATTENPATH, EMR_WIDENPATH, EMR_SELECTCLIPPATH, EMR_ABORTPATH, // 68 // reserved 69 EMR_GDICOMMENT = 70, EMR_FILLRGN, EMR_FRAMERGN, EMR_INVERTRGN, EMR_PAINTRGN, EMR_EXTSELECTCLIPRGN, EMR_BITBLT, EMR_STRETCHBLT, EMR_MASKBLT, EMR_PLGBLT, EMR_SETDIBITSTODEVICE, EMR_STRETCHDIBITS, EMR_EXTCREATEFONTINDIRECTW, EMR_EXTTEXTOUTA, EMR_EXTTEXTOUTW, EMR_POLYBEZIER16, EMR_POLYGON16, EMR_POLYLINE16, EMR_POLYBEZIERTO16, EMR_POLYLINETO16, EMR_POLYPOLYLINE16, EMR_POLYPOLYGON16, EMR_POLYDRAW16, EMR_CREATEMONOBRUSH, EMR_CREATEDIBPATTERNBRUSHPT, EMR_EXTCREATEPEN, EMR_POLYTEXTOUTA, EMR_POLYTEXTOUTW, // 97 EMR_SETICMMODE, EMR_CREATECOLORSPACE, EMR_SETCOLORSPACE, EMR_DELETECOLORSPACE, EMR_GLSRECORD, EMR_GLSBOUNDEDRECORD, EMR_PIXELFORMAT, // = 104 // reserved 105 - 110 EMR_COLORCORRECTPALETTE = 111, EMR_SETICMPROFILEA, EMR_SETICMPROFILEW, EMR_ALPHABLEND, EMR_SETLAYOUT, EMR_TRANSPARENTBLT, // 116 // reserved 117 EMR_GRADIENTFILL = 118, // reserved 119, 120 EMR_COLORMATCHTOTARGETW = 121, EMR_CREATECOLORSPACEW // 122 } const EMR_MIN = EMR_HEADER; static if (_WIN32_WINNT >= 0x500) { const EMR_MAX = EMR_CREATECOLORSPACEW; } else { const EMR_MAX = EMR_PIXELFORMAT; } // ENHMETAHEADER.dSignature, ENHMETAHEADER3.dSignature, // EMRFORMAT.dSignature enum : DWORD { ENHMETA_SIGNATURE = 1179469088, EPS_SIGNATURE = 0x46535045 } static if (_WIN32_WINNT >= 0x500) { // AddFontResourceEx() enum : DWORD { FR_PRIVATE = 0x10, FR_NOT_ENUM = 0x20 } } enum { META_SAVEDC = 0x1E, META_REALIZEPALETTE = 0x35, META_SETPALENTRIES = 0x37, META_CREATEPALETTE = 0xf7, META_SETBKMODE = 0x102, META_SETMAPMODE = 0x103, META_SETROP2 = 0x104, META_SETRELABS = 0x105, META_SETPOLYFILLMODE = 0x106, META_SETSTRETCHBLTMODE = 0x107, META_SETTEXTCHAREXTRA = 0x108, META_RESTOREDC = 0x127, META_INVERTREGION = 0x12A, META_PAINTREGION = 0x12B, META_SELECTCLIPREGION = 0x12C, META_SELECTOBJECT = 0x12D, META_SETTEXTALIGN = 0x12E, META_RESIZEPALETTE = 0x139, META_DIBCREATEPATTERNBRUSH = 0x142, META_SETLAYOUT = 0x149, META_DELETEOBJECT = 0x1F0, META_CREATEPATTERNBRUSH = 0x1F9, META_SETBKCOLOR = 0x201, META_SETTEXTCOLOR = 0x209, META_SETTEXTJUSTIFICATION = 0x20A, META_SETWINDOWORG = 0x20B, META_SETWINDOWEXT = 0x20C, META_SETVIEWPORTORG = 0x20D, META_SETVIEWPORTEXT = 0x20E, META_OFFSETWINDOWORG = 0x20F, META_OFFSETVIEWPORTORG = 0x211, META_LINETO = 0x213, META_MOVETO = 0x214, META_OFFSETCLIPRGN = 0x220, META_FILLREGION = 0x228, META_SETMAPPERFLAGS = 0x231, META_SELECTPALETTE = 0x234, META_CREATEPENINDIRECT = 0x2FA, META_CREATEFONTINDIRECT = 0x2FB, META_CREATEBRUSHINDIRECT = 0x2FC, META_POLYGON = 0x324, META_POLYLINE = 0x325, META_SCALEWINDOWEXT = 0x410, META_SCALEVIEWPORTEXT = 0x412, META_EXCLUDECLIPRECT = 0x415, META_INTERSECTCLIPRECT = 0x416, META_ELLIPSE = 0x418, META_FLOODFILL = 0x419, META_RECTANGLE = 0x41B, META_SETPIXEL = 0x41F, META_FRAMEREGION = 0x429, META_ANIMATEPALETTE = 0x436, META_TEXTOUT = 0x521, META_POLYPOLYGON = 0x538, META_EXTFLOODFILL = 0x548, META_ROUNDRECT = 0x61C, META_PATBLT = 0x61D, META_ESCAPE = 0x626, META_CREATEREGION = 0x6FF, META_ARC = 0x817, META_PIE = 0x81A, META_CHORD = 0x830, META_BITBLT = 0x922, META_DIBBITBLT = 0x940, META_EXTTEXTOUT = 0xA32, META_STRETCHBLT = 0xB23, META_DIBSTRETCHBLT = 0xB41, META_SETDIBTODEV = 0xD33, META_STRETCHDIB = 0xF43 } // EMRPOLYDRAW enum : BYTE { PT_CLOSEFIGURE = 1, PT_LINETO = 2, PT_BEZIERTO = 4, PT_MOVETO = 6 } // ---- // PIXELFORMATDESCRIPTOR.iPixelType enum : BYTE { PFD_TYPE_RGBA = 0, PFD_TYPE_COLORINDEX = 1 } deprecated { // PIXELFORMATDESCRIPTOR. const byte PFD_MAIN_PLANE = 0, PFD_OVERLAY_PLANE = 1, PFD_UNDERLAY_PLANE = -1; } // PIXELFORMATDESCRIPTOR.dwFlags const DWORD PFD_DOUBLEBUFFER = 0x00000001, PFD_STEREO = 0x00000002, PFD_DRAW_TO_WINDOW = 0x00000004, PFD_DRAW_TO_BITMAP = 0x00000008, PFD_SUPPORT_GDI = 0x00000010, PFD_SUPPORT_OPENGL = 0x00000020, PFD_GENERIC_FORMAT = 0x00000040, PFD_NEED_PALETTE = 0x00000080, PFD_NEED_SYSTEM_PALETTE = 0x00000100, PFD_SWAP_EXCHANGE = 0x00000200, PFD_SWAP_COPY = 0x00000400, PFD_SWAP_LAYER_BUFFERS = 0x00000800, PFD_GENERIC_ACCELERATED = 0x00001000, PFD_SUPPORT_DIRECTDRAW = 0x00002000, /* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ PFD_DEPTH_DONTCARE = 0x20000000, PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, PFD_STEREO_DONTCARE = 0x80000000; // ---- const DWORD BLACKNESS = 0x000042, NOTSRCERASE = 0x1100A6, NOTSRCCOPY = 0x330008, SRCERASE = 0x440328, DSTINVERT = 0x550009, PATINVERT = 0x5A0049, SRCINVERT = 0x660046, SRCAND = 0x8800C6, MERGEPAINT = 0xBB0226, MERGECOPY = 0xC000CA, SRCCOPY = 0xCC0020, SRCPAINT = 0xEE0086, PATCOPY = 0xF00021, PATPAINT = 0xFB0A09, WHITENESS = 0xFF0062; static if (_WIN32_WINNT >= 0x500) { const DWORD NOMIRRORBITMAP = 0x80000000, CAPTUREBLT = 0x40000000; } // GetROP2(), SetROP2() enum : int { R2_BLACK = 1, R2_NOTMERGEPEN = 2, R2_MASKNOTPEN = 3, R2_NOTCOPYPEN = 4, R2_MASKPENNOT = 5, R2_NOT = 6, R2_XORPEN = 7, R2_NOTMASKPEN = 8, R2_MASKPEN = 9, R2_NOTXORPEN = 10, R2_NOP = 11, R2_MERGENOTPEN = 12, R2_COPYPEN = 13, R2_MERGEPENNOT = 14, R2_MERGEPEN = 15, R2_WHITE = 16 } const R2_LAST = R2_WHITE; // CheckColorsInGamut() const ubyte CM_IN_GAMUT = 0, CM_OUT_OF_GAMUT = 255; /* UpdateICMRegKey Constants */ const int ICM_ADDPROFILE = 1, ICM_DELETEPROFILE = 2, ICM_QUERYPROFILE = 3, ICM_SETDEFAULTPROFILE = 4, ICM_REGISTERICMATCHER = 5, ICM_UNREGISTERICMATCHER = 6, ICM_QUERYMATCH = 7; enum : int { RGN_AND = 1, RGN_OR = 2, RGN_XOR = 3, RGN_DIFF = 4, RGN_COPY = 5 } const RGN_MIN = RGN_AND; const RGN_MAX = RGN_COPY; // Return values for CombineRgn() enum { NULLREGION = 1, SIMPLEREGION = 2, COMPLEXREGION = 3 } const ERROR = 0; alias ERROR RGN_ERROR; // CreateDIBitmap() const DWORD CBM_INIT = 4; // CreateDIBitmap() enum : UINT { DIB_RGB_COLORS = 0, DIB_PAL_COLORS = 1 } // --- // Values for LOGFONT and CreateFont() // FIXME: For D, replace with lfFaceName.length() const LF_FACESIZE = 32; const LF_FULLFACESIZE = 64; // FIXME: Not needed for D, only EXTLOGFONT const ELF_VENDOR_SIZE = 4; // ??? const ELF_VERSION = 0; const ELF_CULTURE_LATIN = 0; // LOGFONT.lfWeight const LONG FW_DONTCARE = 0, FW_THIN = 100, FW_EXTRALIGHT = 200, FW_ULTRALIGHT = FW_EXTRALIGHT, FW_LIGHT = 300, FW_NORMAL = 400, FW_REGULAR = FW_NORMAL, FW_MEDIUM = 500, FW_SEMIBOLD = 600, FW_DEMIBOLD = FW_SEMIBOLD, FW_BOLD = 700, FW_EXTRABOLD = 800, FW_ULTRABOLD = FW_EXTRABOLD, FW_HEAVY = 900, FW_BLACK = FW_HEAVY; // LOGFONT.lfCharSet enum : DWORD { ANSI_CHARSET = 0, DEFAULT_CHARSET = 1, SYMBOL_CHARSET = 2, MAC_CHARSET = 77, SHIFTJIS_CHARSET = 128, HANGEUL_CHARSET = 129, HANGUL_CHARSET = 129, JOHAB_CHARSET = 130, GB2312_CHARSET = 134, CHINESEBIG5_CHARSET = 136, GREEK_CHARSET = 161, TURKISH_CHARSET = 162, VIETNAMESE_CHARSET = 163, HEBREW_CHARSET = 177, ARABIC_CHARSET = 178, BALTIC_CHARSET = 186, RUSSIAN_CHARSET = 204, THAI_CHARSET = 222, EASTEUROPE_CHARSET = 238, OEM_CHARSET = 255 } // LOGFONT.lfOutPrecision enum : BYTE { OUT_DEFAULT_PRECIS = 0, OUT_STRING_PRECIS, OUT_CHARACTER_PRECIS, OUT_STROKE_PRECIS, OUT_TT_PRECIS, OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS, OUT_TT_ONLY_PRECIS, OUT_OUTLINE_PRECIS, OUT_SCREEN_OUTLINE_PRECIS, OUT_PS_ONLY_PRECIS, // 10 } // LOGFONT.lfClipPrecision enum : BYTE { CLIP_DEFAULT_PRECIS = 0, CLIP_CHARACTER_PRECIS = 1, CLIP_STROKE_PRECIS = 2, CLIP_MASK = 15, CLIP_LH_ANGLES = 16, CLIP_TT_ALWAYS = 32, CLIP_DFA_DISABLE = 64, CLIP_EMBEDDED = 128 } // LOGFONT.lfQuality enum : BYTE { DEFAULT_QUALITY = 0, DRAFT_QUALITY, PROOF_QUALITY, NONANTIALIASED_QUALITY, ANTIALIASED_QUALITY } // LOGFONT.lfPitchAndFamily const BYTE DEFAULT_PITCH = 0, FIXED_PITCH = 1, VARIABLE_PITCH = 2, MONO_FONT = 8, FF_DONTCARE = 0, FF_ROMAN = 16, FF_SWISS = 32, FF_SCRIPT = 64, FF_MODERN = 48, FF_DECORATIVE = 80; // ---- // Enums for the PANOSE struct const PANOSE_COUNT=10; enum { PAN_FAMILYTYPE_INDEX = 0, PAN_SERIFSTYLE_INDEX, PAN_WEIGHT_INDEX, PAN_PROPORTION_INDEX, PAN_CONTRAST_INDEX, PAN_STROKEVARIATION_INDEX, PAN_ARMSTYLE_INDEX, PAN_LETTERFORM_INDEX, PAN_MIDLINE_INDEX, PAN_XHEIGHT_INDEX } const PAN_CULTURE_LATIN=0; // NOTE: the first two values (PAN_ANY and PAN_NO_FIT) apply to all these enums! enum : BYTE { PAN_ANY = 0, PAN_NO_FIT = 1, } enum : BYTE { PAN_FAMILY_TEXT_DISPLAY = 2, PAN_FAMILY_SCRIPT, PAN_FAMILY_DECORATIVE, PAN_FAMILY_PICTORIAL } enum : BYTE { PAN_SERIF_COVE = 2, PAN_SERIF_OBTUSE_COVE, PAN_SERIF_SQUARE_COVE, PAN_SERIF_OBTUSE_SQUARE_COVE, PAN_SERIF_SQUARE, PAN_SERIF_THIN, PAN_SERIF_BONE, PAN_SERIF_EXAGGERATED, PAN_SERIF_TRIANGLE, PAN_SERIF_NORMAL_SANS, PAN_SERIF_OBTUSE_SANS, PAN_SERIF_PERP_SANS, PAN_SERIF_FLARED, PAN_SERIF_ROUNDED } enum : BYTE { PAN_WEIGHT_VERY_LIGHT = 2, PAN_WEIGHT_LIGHT, PAN_WEIGHT_THIN, PAN_WEIGHT_BOOK, PAN_WEIGHT_MEDIUM, PAN_WEIGHT_DEMI, PAN_WEIGHT_BOLD, PAN_WEIGHT_HEAVY, PAN_WEIGHT_BLACK, PAN_WEIGHT_NORD } enum : BYTE { PAN_PROP_OLD_STYLE = 2, PAN_PROP_MODERN, PAN_PROP_EVEN_WIDTH, PAN_PROP_EXPANDED, PAN_PROP_CONDENSED, PAN_PROP_VERY_EXPANDED, PAN_PROP_VERY_CONDENSED, PAN_PROP_MONOSPACED } enum : BYTE { PAN_CONTRAST_NONE = 2, PAN_CONTRAST_VERY_LOW, PAN_CONTRAST_LOW, PAN_CONTRAST_MEDIUM_LOW, PAN_CONTRAST_MEDIUM, PAN_CONTRAST_MEDIUM_HIGH, PAN_CONTRAST_HIGH, PAN_CONTRAST_VERY_HIGH } // PANOSE.bStrokeVariation enum : BYTE { PAN_STROKE_GRADUAL_DIAG = 2, PAN_STROKE_GRADUAL_TRAN, PAN_STROKE_GRADUAL_VERT, PAN_STROKE_GRADUAL_HORZ, PAN_STROKE_RAPID_VERT, PAN_STROKE_RAPID_HORZ, PAN_STROKE_INSTANT_VERT } // PANOSE.bArmStyle enum : BYTE { PAN_STRAIGHT_ARMS_HORZ = 2, PAN_STRAIGHT_ARMS_WEDGE, PAN_STRAIGHT_ARMS_VERT, PAN_STRAIGHT_ARMS_SINGLE_SERIF, PAN_STRAIGHT_ARMS_DOUBLE_SERIF, PAN_BENT_ARMS_HORZ, PAN_BENT_ARMS_WEDGE, PAN_BENT_ARMS_VERT, PAN_BENT_ARMS_SINGLE_SERIF, PAN_BENT_ARMS_DOUBLE_SERIF } // PANOSE.bLetterForm enum : BYTE { PAN_LETT_NORMAL_CONTACT = 2, PAN_LETT_NORMAL_WEIGHTED, PAN_LETT_NORMAL_BOXED, PAN_LETT_NORMAL_FLATTENED, PAN_LETT_NORMAL_ROUNDED, PAN_LETT_NORMAL_OFF_CENTER, PAN_LETT_NORMAL_SQUARE, PAN_LETT_OBLIQUE_CONTACT, PAN_LETT_OBLIQUE_WEIGHTED, PAN_LETT_OBLIQUE_BOXED, PAN_LETT_OBLIQUE_FLATTENED, PAN_LETT_OBLIQUE_ROUNDED, PAN_LETT_OBLIQUE_OFF_CENTER, PAN_LETT_OBLIQUE_SQUARE } // PANOSE.bMidLine enum : BYTE { PAN_MIDLINE_STANDARD_TRIMMED = 2, PAN_MIDLINE_STANDARD_POINTED, PAN_MIDLINE_STANDARD_SERIFED, PAN_MIDLINE_HIGH_TRIMMED, PAN_MIDLINE_HIGH_POINTED, PAN_MIDLINE_HIGH_SERIFED, PAN_MIDLINE_CONSTANT_TRIMMED, PAN_MIDLINE_CONSTANT_POINTED, PAN_MIDLINE_CONSTANT_SERIFED, PAN_MIDLINE_LOW_TRIMMED, PAN_MIDLINE_LOW_POINTED, PAN_MIDLINE_LOW_SERIFED } // PANOSE.bXHeight enum : BYTE { PAN_XHEIGHT_CONSTANT_SMALL = 2, PAN_XHEIGHT_CONSTANT_STD, PAN_XHEIGHT_CONSTANT_LARGE, PAN_XHEIGHT_DUCKING_SMALL, PAN_XHEIGHT_DUCKING_STD, PAN_XHEIGHT_DUCKING_LARGE } // ---- // ??? const FS_LATIN1 = 0x00000001; const FS_LATIN2 = 0x00000002; const FS_CYRILLIC = 0x00000004; const FS_GREEK = 0x00000008; const FS_TURKISH = 0x00000010; const FS_HEBREW = 0x00000020; const FS_ARABIC = 0x00000040; const FS_BALTIC = 0x00000080; const FS_VIETNAMESE = 0x00000100; const FS_THAI = 0x00010000; const FS_JISJAPAN = 0x00020000; const FS_CHINESESIMP = 0x00040000; const FS_WANSUNG = 0x00080000; const FS_CHINESETRAD = 0x00100000; const FS_JOHAB = 0x00200000; const FS_SYMBOL = 0x80000000; // ---- // Poly Fill Mode enum : int { ALTERNATE = 1, WINDING = 2 } const int POLYFILL_LAST = WINDING; //--- // LOGBRUSH enum : LONG { HS_HORIZONTAL = 0, HS_VERTICAL, HS_FDIAGONAL, HS_BDIAGONAL, HS_CROSS, HS_DIAGCROSS } //LOGBRUSH.lbStyle enum : UINT { BS_SOLID = 0, BS_NULL = 1, BS_HOLLOW = BS_NULL, BS_HATCHED, BS_PATTERN, BS_INDEXED, BS_DIBPATTERN, BS_DIBPATTERNPT, BS_PATTERN8X8, BS_DIBPATTERN8X8, BS_MONOPATTERN, } //----- // EXTLOGPEN, ExtCreatePen() // EXTLOGPEN.elpPenStyle enum : DWORD { PS_SOLID = 0, PS_DASH = 1, PS_DOT = 2, PS_DASHDOT = 3, PS_DASHDOTDOT = 4, PS_NULL = 5, PS_INSIDEFRAME = 6, PS_USERSTYLE = 7, PS_ALTERNATE = 8, PS_STYLE_MASK = 15, } enum : DWORD { PS_COSMETIC = 0x00000000, PS_GEOMETRIC = 0x00010000, PS_TYPE_MASK = 0x000F0000, } enum : DWORD { PS_ENDCAP_ROUND = 0x00000000, PS_ENDCAP_SQUARE = 0x00000100, PS_ENDCAP_FLAT = 0x00000200, PS_ENDCAP_MASK = 0x00000F00, } enum : DWORD { PS_JOIN_ROUND = 0x00000000, PS_JOIN_BEVEL = 0x00001000, PS_JOIN_MITER = 0x00002000, PS_JOIN_MASK = 0x0000F000, } // --- // DeviceCapabilities() enum : WORD { DC_FIELDS = 1, DC_PAPERS, DC_PAPERSIZE, DC_MINEXTENT, DC_MAXEXTENT, DC_BINS, DC_DUPLEX, DC_SIZE, DC_EXTRA, DC_VERSION, DC_DRIVER, DC_BINNAMES, DC_ENUMRESOLUTIONS, DC_FILEDEPENDENCIES, DC_TRUETYPE, DC_PAPERNAMES, DC_ORIENTATION, DC_COPIES, DC_BINADJUST, DC_EMF_COMPLIANT, DC_DATATYPE_PRODUCED, DC_COLLATE, DC_MANUFACTURER, DC_MODEL, } static if (_WIN32_WINNT >= 0x500) { enum { DC_PERSONALITY = 25, DC_PRINTRATE = 26, DC_PRINTRATEUNIT = 27, DC_PRINTERMEM = 28, DC_MEDIAREADY = 29, DC_STAPLE = 30, DC_PRINTRATEPPM = 31, DC_COLORDEVICE = 32, DC_NUP = 33, DC_MEDIATYPENAMES = 34, DC_MEDIATYPES = 35, } enum { PRINTRATEUNIT_PPM = 1, PRINTRATEUNIT_CPS = 2, PRINTRATEUNIT_LPM = 3, PRINTRATEUNIT_IPM = 4, } } // return from DC_TRUETYPE const DWORD DCTT_BITMAP = 1, DCTT_DOWNLOAD = 2, DCTT_SUBDEV = 4, DCTT_DOWNLOAD_OUTLINE = 8; // return from DC_BINADJUST enum : DWORD { DCBA_FACEUPNONE = 0x0000, DCBA_FACEUPCENTER = 0x0001, DCBA_FACEUPLEFT = 0x0002, DCBA_FACEUPRIGHT = 0x0003, DCBA_FACEDOWNNONE = 0x0100, DCBA_FACEDOWNCENTER = 0x0101, DCBA_FACEDOWNLEFT = 0x0102, DCBA_FACEDOWNRIGHT = 0x0103, } //--- const FLOODFILLBORDER = 0; const FLOODFILLSURFACE = 1; // ExtTextOut() const UINT ETO_OPAQUE = 0x0002, ETO_CLIPPED = 0x0004, ETO_GLYPH_INDEX = 0x0010, ETO_RTLREADING = 0x0080, ETO_NUMERICSLOCAL = 0x0400, ETO_NUMERICSLATIN = 0x0800, ETO_IGNORELANGUAGE = 0x1000; static if (_WIN32_WINNT >= 0x500) { const UINT ETO_PDY = 0x2000; } // GdiComment() enum { GDICOMMENT_BEGINGROUP = 0x00000002, GDICOMMENT_ENDGROUP = 0x00000003, GDICOMMENT_UNICODE_STRING = 0x00000040, GDICOMMENT_UNICODE_END = 0x00000080, GDICOMMENT_MULTIFORMATS = 0x40000004, GDICOMMENT_IDENTIFIER = 0x43494447, GDICOMMENT_WINDOWS_METAFILE = 0x80000001, } // Get/SetArcDirection() enum : int { AD_COUNTERCLOCKWISE = 1, AD_CLOCKWISE = 2 } const RDH_RECTANGLES = 1; // GCPRESULTS.lpClass enum { GCPCLASS_LATIN = 1, GCPCLASS_HEBREW = 2, GCPCLASS_ARABIC = 2, GCPCLASS_NEUTRAL, GCPCLASS_LOCALNUMBER, GCPCLASS_LATINNUMBER, GCPCLASS_LATINNUMERICTERMINATOR, GCPCLASS_LATINNUMERICSEPARATOR, GCPCLASS_NUMERICSEPARATOR, // = 8, GCPCLASS_POSTBOUNDRTL = 16, GCPCLASS_POSTBOUNDLTR = 32, GCPCLASS_PREBOUNDRTL = 64, GCPCLASS_PREBOUNDLTR = 128, GCPGLYPH_LINKAFTER = 0x4000, GCPGLYPH_LINKBEFORE = 0x8000 } // GetBoundsRect(), SetBoundsRect() const UINT DCB_RESET = 1, DCB_ACCUMULATE = 2, DCB_SET = DCB_RESET | DCB_ACCUMULATE, DCB_ENABLE = 4, DCB_DISABLE = 8, DCB_DIRTY = DCB_ACCUMULATE; //--- // GetObjectType() enum : DWORD { OBJ_PEN = 1, OBJ_BRUSH, OBJ_DC, OBJ_METADC, OBJ_PAL, OBJ_FONT, OBJ_BITMAP, OBJ_REGION, OBJ_METAFILE, OBJ_MEMDC, OBJ_EXTPEN, OBJ_ENHMETADC, OBJ_ENHMETAFILE, OBJ_COLORSPACE, } //--------------------- // Capabilities for GetDeviceCaps(dc, xxx) enum : int { DRIVERVERSION = 0, TECHNOLOGY = 2, HORZSIZE = 4, VERTSIZE = 6, HORZRES = 8, VERTRES = 10, BITSPIXEL = 12, PLANES = 14, NUMBRUSHES = 16, NUMPENS = 18, NUMMARKERS = 20, NUMFONTS = 22, NUMCOLORS = 24, PDEVICESIZE = 26, CURVECAPS = 28, LINECAPS = 30, POLYGONALCAPS = 32, TEXTCAPS = 34, CLIPCAPS = 36, RASTERCAPS = 38, ASPECTX = 40, ASPECTY = 42, ASPECTXY = 44, LOGPIXELSX = 88, LOGPIXELSY = 90, SIZEPALETTE = 104, NUMRESERVED = 106, COLORRES = 108, PHYSICALWIDTH = 110, PHYSICALHEIGHT = 111, PHYSICALOFFSETX = 112, PHYSICALOFFSETY = 113, SCALINGFACTORX = 114, SCALINGFACTORY = 115, VREFRESH = 116, DESKTOPVERTRES = 117, DESKTOPHORZRES = 118, BLTALIGNMENT = 119 } static if (_WIN32_WINNT >= 0x500) { enum : int { SHADEBLENDCAPS = 120, COLORMGMTCAPS = 121, } } // Return values for GetDeviceCaps(dc, TECHNOLOGY) enum : int { DT_PLOTTER = 0, DT_RASDISPLAY, DT_RASPRINTER, DT_RASCAMERA, DT_CHARSTREAM, DT_METAFILE, DT_DISPFILE // = 6 } // Return values for GetDeviceCaps(dc, RASTERCAPS) const int RC_NONE = 0, RC_BITBLT = 1, RC_BANDING = 2, RC_SCALING = 4, RC_BITMAP64 = 8, RC_GDI20_OUTPUT = 16, RC_GDI20_STATE = 32, RC_SAVEBITMAP = 64, RC_DI_BITMAP = 128, RC_PALETTE = 256, RC_DIBTODEV = 512, RC_BIGFONT = 1024, RC_STRETCHBLT = 2048, RC_FLOODFILL = 4096, RC_STRETCHDIB = 8192, RC_OP_DX_OUTPUT = 0x4000, RC_DEVBITS = 0x8000; static if (_WIN32_WINNT >= 0x500) { /* Shading and blending caps */ const SB_NONE = 0x00000000; const SB_CONST_ALPHA = 0x00000001; const SB_PIXEL_ALPHA = 0x00000002; const SB_PREMULT_ALPHA = 0x00000004; const SB_GRAD_RECT = 0x00000010; const SB_GRAD_TRI = 0x00000020; /* Color Management caps */ const CM_NONE = 0x00000000; const CM_DEVICE_ICM = 0x00000001; const CM_GAMMA_RAMP = 0x00000002; const CM_CMYK_COLOR = 0x00000004; } // Return values for GetDeviceCaps(dc, CURVECAPS) const int CC_NONE = 0, CC_CIRCLES = 1, CC_PIE = 2, CC_CHORD = 4, CC_ELLIPSES = 8, CC_WIDE = 16, CC_STYLED = 32, CC_WIDESTYLED = 64, CC_INTERIORS = 128, CC_ROUNDRECT = 256; // Return values for GetDeviceCaps(dc, LINECAPS) const int LC_NONE = 0, LC_POLYLINE = 2, LC_MARKER = 4, LC_POLYMARKER = 8, LC_WIDE = 16, LC_STYLED = 32, LC_WIDESTYLED = 64, LC_INTERIORS = 128; // Return values for GetDeviceCaps(dc, POLYGONALCAPS) const int PC_NONE = 0, PC_POLYGON = 1, PC_RECTANGLE = 2, PC_WINDPOLYGON = 4, PC_TRAPEZOID = 4, PC_SCANLINE = 8, PC_WIDE = 16, PC_STYLED = 32, PC_WIDESTYLED = 64, PC_INTERIORS = 128, PC_POLYPOLYGON = 256, PC_PATHS = 512; /* Clipping Capabilities */ const int CP_NONE = 0, CP_RECTANGLE = 1, CP_REGION = 2; // Return values for GetDeviceCaps(dc, TEXTCAPS) const int TC_OP_CHARACTER = 1, TC_OP_STROKE = 2, TC_CP_STROKE = 4, TC_CR_90 = 8, TC_CR_ANY = 16, TC_SF_X_YINDEP = 32, TC_SA_DOUBLE = 64, TC_SA_INTEGER = 128, TC_SA_CONTIN = 256, TC_EA_DOUBLE = 512, TC_IA_ABLE = 1024, TC_UA_ABLE = 2048, TC_SO_ABLE = 4096, TC_RA_ABLE = 8192, TC_VA_ABLE = 16384, TC_RESERVED = 32768, TC_SCROLLBLT = 65536; // End GetDeviceCaps //--------------------- // GetCharacterPlacement(), and GetFontLanguageInfo() const DWORD GCP_DBCS = 1, GCP_REORDER = 2, GCP_USEKERNING = 8, GCP_GLYPHSHAPE = 16, GCP_LIGATE = 32, GCP_DIACRITIC = 256, GCP_KASHIDA = 1024, GCP_ERROR = 0x8000, GCP_JUSTIFY = 0x10000, GCP_CLASSIN = 0x80000, GCP_MAXEXTENT = 0x100000, GCP_JUSTIFYIN = 0x200000, GCP_DISPLAYZWG = 0x400000, GCP_SYMSWAPOFF = 0x800000, GCP_NUMERICOVERRIDE = 0x1000000, GCP_NEUTRALOVERRIDE = 0x2000000, GCP_NUMERICSLATIN = 0x4000000, GCP_NUMERICSLOCAL = 0x8000000, // Only for GetFontLanguageInfo() FLI_GLYPHS = 0x40000, FLI_MASK = 0x103b; // GetGlyphOutline() enum : UINT { GGO_METRICS = 0, GGO_BITMAP = 1, GGO_NATIVE = 2, GGO_BEZIER = 3, GGO_GRAY2_BITMAP = 4, GGO_GRAY4_BITMAP = 5, GGO_GRAY8_BITMAP = 6, GGO_GLYPH_INDEX = 128, GGO_UNHINTED = 256 } enum : int { GM_COMPATIBLE = 1, GM_ADVANCED } const GM_LAST = GM_ADVANCED; enum : int { MM_TEXT = 1, MM_LOMETRIC, MM_HIMETRIC, MM_LOENGLISH, MM_HIENGLISH, MM_TWIPS, MM_ISOTROPIC, MM_ANISOTROPIC, } const int MM_MIN = MM_TEXT, MM_MAX = MM_ANISOTROPIC, MM_MAX_FIXEDSCALE = MM_TWIPS; const ABSOLUTE = 1; const RELATIVE = 2; enum : BYTE { PC_RESERVED = 1, PC_EXPLICIT = 2, PC_NOCOLLAPSE = 4 } /* FIXME: move to win32.commctrl ? */ // ImageList const COLORREF CLR_NONE = 0xffffffff, CLR_INVALID = CLR_NONE, CLR_DEFAULT = 0xff000000; // RASTERIZER_STATUS.wFlags const short TT_AVAILABLE = 1, TT_ENABLED = 2; // GetStockObject() enum : int { WHITE_BRUSH = 0, LTGRAY_BRUSH, GRAY_BRUSH, DKGRAY_BRUSH, BLACK_BRUSH, HOLLOW_BRUSH, // = 5 NULL_BRUSH = HOLLOW_BRUSH, WHITE_PEN = 6, BLACK_PEN, NULL_PEN, // = 8 OEM_FIXED_FONT = 10, ANSI_FIXED_FONT, ANSI_VAR_FONT, SYSTEM_FONT, DEVICE_DEFAULT_FONT, DEFAULT_PALETTE, SYSTEM_FIXED_FONT, DEFAULT_GUI_FONT = SYSTEM_FIXED_FONT + 1, } static if (_WIN32_WINNT >= 0x500) { enum : int { DC_BRUSH = DEFAULT_GUI_FONT + 1, DC_PEN, } } static if (_WIN32_WINNT >= 0x500) { const STOCK_LAST = DC_PEN; } else { const STOCK_LAST = DEFAULT_GUI_FONT; } // Get/SetSystemPaletteUse() enum : UINT { SYSPAL_ERROR = 0, SYSPAL_STATIC = 1, SYSPAL_NOSTATIC = 2, SYSPAL_NOSTATIC256 = 3, } // SetTextAlign() const UINT TA_TOP = 0, TA_CENTER = 6, TA_BOTTOM = 8, TA_BASELINE = 24, TA_LEFT = 0, TA_RIGHT = 2, TA_RTLREADING = 256, TA_NOUPDATECP = 0, TA_UPDATECP = 1, TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING, VTA_BASELINE = TA_BASELINE, VTA_CENTER = TA_CENTER, VTA_LEFT = TA_BOTTOM, VTA_RIGHT = TA_TOP, VTA_BOTTOM = TA_RIGHT, VTA_TOP = TA_LEFT; // EMRMODIFYWORLDTRANSFORM.iMode enum : DWORD { MWT_IDENTITY = 1, MWT_LEFTMULTIPLY, MWT_RIGHTMULTIPLY } const DWORD MWT_MIN = MWT_IDENTITY, MWT_MAX = MWT_RIGHTMULTIPLY; enum { TRANSPARENT = 1, OPAQUE = 2 } // Get/SetStretchMode() enum : int { BLACKONWHITE = 1, WHITEONBLACK = 2, COLORONCOLOR = 3, HALFTONE = 4, STRETCH_ANDSCANS = 1, STRETCH_ORSCANS = 2, STRETCH_DELETESCANS = 3, STRETCH_HALFTONE = 4, MAXSTRETCHBLTMODE = 4 } // TranslateCharsetInfo() enum : DWORD { TCI_SRCCHARSET = 1, TCI_SRCCODEPAGE = 2, TCI_SRCFONTSIG = 3, TCI_SRCLOCALE = 0x1000, } // SetICMMode() enum : int { ICM_OFF = 1, ICM_ON = 2, ICM_QUERY = 3, ICM_DONE_OUTSIDEDC = 4, } // ---- // Escape() Spooler Error Codes enum : int { SP_NOTREPORTED = 0x4000, SP_ERROR = -1, SP_APPABORT = -2, SP_USERABORT = -3, SP_OUTOFDISK = -4, SP_OUTOFMEMORY = -5 } // Escape(), ExtEscape() // Most of the following are deprecated (Win16 only) enum : int { NEWFRAME = 1, ABORTDOC = 2, NEXTBAND = 3, SETCOLORTABLE = 4, GETCOLORTABLE = 5, FLUSHOUTPUT = 6, DRAFTMODE = 7, QUERYESCSUPPORT = 8, SETABORTPROC = 9, STARTDOC = 10, ENDDOC = 11, GETPHYSPAGESIZE = 12, GETPRINTINGOFFSET = 13, GETSCALINGFACTOR = 14, MFCOMMENT = 15, GETPENWIDTH = 16, SETCOPYCOUNT = 17, SELECTPAPERSOURCE = 18, DEVICEDATA = 19, PASSTHROUGH = 19, GETTECHNOLOGY = 20, SETLINECAP = 21, SETLINEJOIN = 22, SETMITERLIMIT = 23, BANDINFO = 24, DRAWPATTERNRECT = 25, GETVECTORPENSIZE = 26, GETVECTORBRUSHSIZE = 27, ENABLEDUPLEX = 28, GETSETPAPERBINS = 29, GETSETPRINTORIENT = 30, ENUMPAPERBINS = 31, SETDIBSCALING = 32, EPSPRINTING = 33, ENUMPAPERMETRICS = 34, GETSETPAPERMETRICS = 35, POSTSCRIPT_DATA = 37, POSTSCRIPT_IGNORE = 38, MOUSETRAILS = 39, GETDEVICEUNITS = 42, GETEXTENDEDTEXTMETRICS = 256, GETEXTENTTABLE = 257, GETPAIRKERNTABLE = 258, GETTRACKKERNTABLE = 259, EXTTEXTOUT = 512, GETFACENAME = 513, DOWNLOADFACE = 514, ENABLERELATIVEWIDTHS = 768, ENABLEPAIRKERNING = 769, SETKERNTRACK = 770, SETALLJUSTVALUES = 771, SETCHARSET = 772, STRETCHBLT = 2048, METAFILE_DRIVER = 2049, GETSETSCREENPARAMS = 3072, QUERYDIBSUPPORT = 3073, BEGIN_PATH = 4096, CLIP_TO_PATH = 4097, END_PATH = 4098, EXT_DEVICE_CAPS = 4099, RESTORE_CTM = 4100, SAVE_CTM = 4101, SET_ARC_DIRECTION = 4102, SET_BACKGROUND_COLOR = 4103, SET_POLY_MODE = 4104, SET_SCREEN_ANGLE = 4105, SET_SPREAD = 4106, TRANSFORM_CTM = 4107, SET_CLIP_BOX = 4108, SET_BOUNDS = 4109, SET_MIRROR_MODE = 4110, OPENCHANNEL = 4110, DOWNLOADHEADER = 4111, CLOSECHANNEL = 4112, POSTSCRIPT_PASSTHROUGH = 4115, ENCAPSULATED_POSTSCRIPT = 4116, POSTSCRIPT_IDENTIFY = 4117, POSTSCRIPT_INJECTION = 4118, CHECKJPEGFORMAT = 4119, CHECKPNGFORMAT = 4120, GET_PS_FEATURESETTING = 4121, SPCLPASSTHROUGH2 = 4568, } enum : int { PSIDENT_GDICENTRIC = 0, PSIDENT_PSCENTRIC = 1, } /* * Header structure for the input buffer to POSTSCRIPT_INJECTION escape */ struct PSINJECTDATA { DWORD DataBytes; WORD InjectionPoint; WORD PageNumber; } alias PSINJECTDATA* PPSINJECTDATA; /* Constants for PSINJECTDATA.InjectionPoint field */ enum { PSINJECT_BEGINSTREAM = 1, PSINJECT_PSADOBE = 2, PSINJECT_PAGESATEND = 3, PSINJECT_PAGES = 4, PSINJECT_DOCNEEDEDRES = 5, PSINJECT_DOCSUPPLIEDRES = 6, PSINJECT_PAGEORDER = 7, PSINJECT_ORIENTATION = 8, PSINJECT_BOUNDINGBOX = 9, PSINJECT_DOCUMENTPROCESSCOLORS = 10, PSINJECT_COMMENTS = 11, PSINJECT_BEGINDEFAULTS = 12, PSINJECT_ENDDEFAULTS = 13, PSINJECT_BEGINPROLOG = 14, PSINJECT_ENDPROLOG = 15, PSINJECT_BEGINSETUP = 16, PSINJECT_ENDSETUP = 17, PSINJECT_TRAILER = 18, PSINJECT_EOF = 19, PSINJECT_ENDSTREAM = 20, PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21, PSINJECT_PAGENUMBER = 100, PSINJECT_BEGINPAGESETUP = 101, PSINJECT_ENDPAGESETUP = 102, PSINJECT_PAGETRAILER = 103, PSINJECT_PLATECOLOR = 104, PSINJECT_SHOWPAGE = 105, PSINJECT_PAGEBBOX = 106, PSINJECT_ENDPAGECOMMENTS = 107, PSINJECT_VMSAVE = 200, PSINJECT_VMRESTORE = 201, } /* Parameter for GET_PS_FEATURESETTING escape */ enum { FEATURESETTING_NUP = 0, FEATURESETTING_OUTPUT = 1, FEATURESETTING_PSLEVEL = 2, FEATURESETTING_CUSTPAPER = 3, FEATURESETTING_MIRROR = 4, FEATURESETTING_NEGATIVE = 5, FEATURESETTING_PROTOCOL = 6, } enum { FEATURESETTING_PRIVATE_BEGIN = 0x1000, FEATURESETTING_PRIVATE_END = 0x1FFF, } /* Value returned for FEATURESETTING_PROTOCOL */ const PSPROTOCOL_ASCII = 0; const PSPROTOCOL_BCP = 1; const PSPROTOCOL_TBCP = 2; const PSPROTOCOL_BINARY = 3; // ---- const WPARAM PR_JOBSTATUS = 0; // ??? const QDI_SETDIBITS = 1; const QDI_GETDIBITS = 2; const QDI_DIBTOSCREEN = 4; const QDI_STRETCHDIB = 8; const ASPECT_FILTERING = 1; // LOGCOLORSPACE.lcsCSType enum : LCSCSTYPE { LCS_CALIBRATED_RGB = 0, LCS_DEVICE_RGB, LCS_DEVICE_CMYK } /* What this for? */ // LOGCOLORSPACE.lcsIntent enum : LCSGAMUTMATCH { LCS_GM_BUSINESS = 1, LCS_GM_GRAPHICS = 2, LCS_GM_IMAGES = 4, LCS_GM_ABS_COLORIMETRIC = 8, } const DWORD RASTER_FONTTYPE = 1, DEVICE_FONTTYPE = 2, TRUETYPE_FONTTYPE = 4; // --- // DEVMODE struct // FIXME: Not needed for D (use .length instead) const CCHDEVICENAME = 32; const CCHFORMNAME = 32; // DEVMODE.dmSpecVersion // current version of specification const WORD DM_SPECVERSION = 0x0401; // DEVMODE.dmOrientation enum : short { DMORIENT_PORTRAIT = 1, DMORIENT_LANDSCAPE = 2 } // DEVMODE.dmPaperSize enum : short { DMPAPER_LETTER = 1, DMPAPER_LETTERSMALL, DMPAPER_TABLOID, DMPAPER_LEDGER, DMPAPER_LEGAL, DMPAPER_STATEMENT, DMPAPER_EXECUTIVE, DMPAPER_A3, DMPAPER_A4, DMPAPER_A4SMALL, DMPAPER_A5, DMPAPER_B4, DMPAPER_B5, DMPAPER_FOLIO, DMPAPER_QUARTO, DMPAPER_10X14, DMPAPER_11X17, DMPAPER_NOTE, DMPAPER_ENV_9, DMPAPER_ENV_10, DMPAPER_ENV_11, DMPAPER_ENV_12, DMPAPER_ENV_14, DMPAPER_CSHEET, DMPAPER_DSHEET, DMPAPER_ESHEET, DMPAPER_ENV_DL, DMPAPER_ENV_C5, DMPAPER_ENV_C3, DMPAPER_ENV_C4, DMPAPER_ENV_C6, DMPAPER_ENV_C65, DMPAPER_ENV_B4, DMPAPER_ENV_B5, DMPAPER_ENV_B6, DMPAPER_ENV_ITALY, DMPAPER_ENV_MONARCH, DMPAPER_ENV_PERSONAL, DMPAPER_FANFOLD_US, DMPAPER_FANFOLD_STD_GERMAN, DMPAPER_FANFOLD_LGL_GERMAN, DMPAPER_ISO_B4, DMPAPER_JAPANESE_POSTCARD, DMPAPER_9X11, DMPAPER_10X11, DMPAPER_15X11, DMPAPER_ENV_INVITE, DMPAPER_RESERVED_48, DMPAPER_RESERVED_49, DMPAPER_LETTER_EXTRA, DMPAPER_LEGAL_EXTRA, DMPAPER_TABLOID_EXTRA, DMPAPER_A4_EXTRA, DMPAPER_LETTER_TRANSVERSE, DMPAPER_A4_TRANSVERSE, DMPAPER_LETTER_EXTRA_TRANSVERSE, DMPAPER_A_PLUS, DMPAPER_B_PLUS, DMPAPER_LETTER_PLUS, DMPAPER_A4_PLUS, DMPAPER_A5_TRANSVERSE, DMPAPER_B5_TRANSVERSE, DMPAPER_A3_EXTRA, DMPAPER_A5_EXTRA, DMPAPER_B5_EXTRA, DMPAPER_A2, DMPAPER_A3_TRANSVERSE, DMPAPER_A3_EXTRA_TRANSVERSE // = 68 } static if (_WIN32_WINNT >= 0x500) { enum : short { DMPAPER_DBL_JAPANESE_POSTCARD = 69, DMPAPER_A6, DMPAPER_JENV_KAKU2, DMPAPER_JENV_KAKU3, DMPAPER_JENV_CHOU3, DMPAPER_JENV_CHOU4, DMPAPER_LETTER_ROTATED, DMPAPER_A3_ROTATED, DMPAPER_A4_ROTATED, DMPAPER_A5_ROTATED, DMPAPER_B4_JIS_ROTATED, DMPAPER_B5_JIS_ROTATED, DMPAPER_JAPANESE_POSTCARD_ROTATED, DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED, DMPAPER_A6_ROTATED, DMPAPER_JENV_KAKU2_ROTATED, DMPAPER_JENV_KAKU3_ROTATED, DMPAPER_JENV_CHOU3_ROTATED, DMPAPER_JENV_CHOU4_ROTATED, DMPAPER_B6_JIS, DMPAPER_B6_JIS_ROTATED, DMPAPER_12X11, DMPAPER_JENV_YOU4, DMPAPER_JENV_YOU4_ROTATED, DMPAPER_P16K, DMPAPER_P32K, DMPAPER_P32KBIG, DMPAPER_PENV_1, DMPAPER_PENV_2, DMPAPER_PENV_3, DMPAPER_PENV_4, DMPAPER_PENV_5, DMPAPER_PENV_6, DMPAPER_PENV_7, DMPAPER_PENV_8, DMPAPER_PENV_9, DMPAPER_PENV_10, DMPAPER_P16K_ROTATED, DMPAPER_P32K_ROTATED, DMPAPER_P32KBIG_ROTATED, DMPAPER_PENV_1_ROTATED, DMPAPER_PENV_2_ROTATED, DMPAPER_PENV_3_ROTATED, DMPAPER_PENV_4_ROTATED, DMPAPER_PENV_5_ROTATED, DMPAPER_PENV_6_ROTATED, DMPAPER_PENV_7_ROTATED, DMPAPER_PENV_8_ROTATED, DMPAPER_PENV_9_ROTATED, DMPAPER_PENV_10_ROTATED // 118 } } const short DMPAPER_FIRST = DMPAPER_LETTER; static if (_WIN32_WINNT >= 0x500) { const short DMPAPER_LAST = DMPAPER_PENV_10_ROTATED; } else { const short DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE; } const short DMPAPER_USER = 256; // DEVMODE.dmDefaultSource enum : short { DMBIN_ONLYONE = 1, DMBIN_UPPER = 1, DMBIN_LOWER, DMBIN_MIDDLE, DMBIN_MANUAL, DMBIN_ENVELOPE, DMBIN_ENVMANUAL, DMBIN_AUTO, DMBIN_TRACTOR, DMBIN_SMALLFMT, DMBIN_LARGEFMT, DMBIN_LARGECAPACITY, // = 11 DMBIN_CASSETTE = 14, DMBIN_FORMSOURCE, } enum : short { DMBIN_FIRST = DMBIN_UPPER, DMBIN_LAST = DMBIN_FORMSOURCE, DMBIN_USER = 256, } // DEVMODE.dmPrintQuality enum : short { DMRES_DRAFT = -1, DMRES_LOW = -2, DMRES_MEDIUM = -3, DMRES_HIGH = -4 } // DEVMODE.dmColor enum : short { DMCOLOR_MONOCHROME = 1, DMCOLOR_COLOR = 2 } // DEVMODE.dmDuplex enum : short { DMDUP_SIMPLEX = 1, DMDUP_VERTICAL = 2, DMDUP_HORIZONTAL = 3 } // DEVMODE.dmTTOption enum : short { DMTT_BITMAP = 1, DMTT_DOWNLOAD, DMTT_SUBDEV, DMTT_DOWNLOAD_OUTLINE } // DEVMODE.dmCollate enum : short { DMCOLLATE_FALSE = 0, DMCOLLATE_TRUE } static if (_WIN32_WINNT >= 0x501) { /* DEVMODE dmDisplayOrientation specifiations */ enum : short { DMDO_DEFAULT = 0, DMDO_90 = 1, DMDO_180 = 2, DMDO_270 = 3, } /* DEVMODE dmDisplayFixedOutput specifiations */ enum : short { DMDFO_DEFAULT = 0, DMDFO_STRETCH = 1, DMDFO_CENTER = 2, } } /* FIXME: this flags are deprecated ? */ // DEVMODE.dmDisplayFlags const DWORD DM_GRAYSCALE = 1, DM_INTERLACED = 2; const DWORD DMDISPLAYFLAGS_TEXTMODE = 0x00000004; /* dmNup , multiple logical page per physical page options */ const DWORD DMNUP_SYSTEM = 1, DMNUP_ONEUP = 2; // DEVMODE.dmFields const DWORD DM_ORIENTATION = 0x00000001, DM_PAPERSIZE = 0x00000002, DM_PAPERLENGTH = 0x00000004, DM_PAPERWIDTH = 0x00000008, DM_SCALE = 0x00000010; static if (_WIN32_WINNT >= 0x500) { const DWORD DM_POSITION = 0x00000020, DM_NUP = 0x00000040; } static if (_WIN32_WINNT >= 0x501) { const DWORD DM_DISPLAYORIENTATION = 0x00000080; } const DWORD DM_COPIES = 0x00000100, DM_DEFAULTSOURCE = 0x00000200, DM_PRINTQUALITY = 0x00000400, DM_COLOR = 0x00000800, DM_DUPLEX = 0x00001000, DM_YRESOLUTION = 0x00002000, DM_TTOPTION = 0x00004000, DM_COLLATE = 0x00008000, DM_FORMNAME = 0x00010000, DM_LOGPIXELS = 0x00020000, DM_BITSPERPEL = 0x00040000, DM_PELSWIDTH = 0x00080000, DM_PELSHEIGHT = 0x00100000, DM_DISPLAYFLAGS = 0x00200000, DM_DISPLAYFREQUENCY = 0x00400000, DM_ICMMETHOD = 0x00800000, DM_ICMINTENT = 0x01000000, DM_MEDIATYPE = 0x02000000, DM_DITHERTYPE = 0x04000000, DM_PANNINGWIDTH = 0x08000000, DM_PANNINGHEIGHT = 0x10000000; static if (_WIN32_WINNT >= 0x501) { const DWORD DM_DISPLAYFIXEDOUTPUT = 0x20000000; } // DEVMODE.dmICMMethod enum : DWORD { DMICMMETHOD_NONE = 1, DMICMMETHOD_SYSTEM = 2, DMICMMETHOD_DRIVER = 3, DMICMMETHOD_DEVICE = 4, DMICMMETHOD_USER = 256 } // DEVMODE.dmICMIntent enum : DWORD { DMICM_SATURATE = 1, DMICM_CONTRAST = 2, DMICM_COLORIMETRIC = 3, DMICM_ABS_COLORIMETRIC = 4, DMICM_USER = 256 } // DEVMODE.dmMediaType enum : DWORD { DMMEDIA_STANDARD = 1, DMMEDIA_TRANSPARENCY = 2, DMMEDIA_GLOSSY = 3, DMMEDIA_USER = 256 } // DEVMODE.dmDitherType enum : DWORD { DMDITHER_NONE = 1, DMDITHER_COARSE, DMDITHER_FINE, DMDITHER_LINEART, DMDITHER_ERRORDIFFUSION, DMDITHER_RESERVED6, DMDITHER_RESERVED7, DMDITHER_RESERVED8, DMDITHER_RESERVED9, DMDITHER_GRAYSCALE, DMDITHER_USER = 256 } // ---- // DocumentProperties() const DWORD DM_UPDATE = 1, DM_COPY = 2, DM_PROMPT = 4, DM_MODIFY = 8, DM_IN_BUFFER = DM_MODIFY, DM_IN_PROMPT = DM_PROMPT, DM_OUT_BUFFER = DM_COPY, DM_OUT_DEFAULT = DM_UPDATE; // --- const GDI_ERROR = 0xFFFFFFFF; const HGDI_ERROR= cast(HANDLE)GDI_ERROR; // TEXTMETRIC.tmPitchAndFamily const BYTE TMPF_FIXED_PITCH = 1, TMPF_VECTOR = 2, TMPF_TRUETYPE = 4, TMPF_DEVICE = 8; // NEWTEXTMETRIC.ntmFlags const DWORD NTM_ITALIC = 0x00000001, NTM_BOLD = 0x00000020, NTM_REGULAR = 0x00000040, NTM_NONNEGATIVE_AC = 0x00010000, NTM_PS_OPENTYPE = 0x00020000, NTM_TT_OPENTYPE = 0x00040000, NTM_MULTIPLEMASTER = 0x00080000, NTM_TYPE1 = 0x00100000, NTM_DSIG = 0x00200000; // --- const DWORD TT_POLYGON_TYPE = 24; // TTPOLYCURVE enum : WORD { TT_PRIM_LINE = 1, TT_PRIM_QSPLINE = 2, TT_PRIM_CSPLINE = 3, } // --- const FONTMAPPER_MAX = 10; const ENHMETA_STOCK_OBJECT = 0x80000000; const WGL_FONT_LINES = 0; const WGL_FONT_POLYGONS = 1; // --- // LAYERPLANEDESCRIPTOR.dwFlags const DWORD LPD_DOUBLEBUFFER = 1, LPD_STEREO = 2, LPD_SUPPORT_GDI = 16, LPD_SUPPORT_OPENGL = 32, LPD_SHARE_DEPTH = 64, LPD_SHARE_STENCIL = 128, LPD_SHARE_ACCUM = 256, LPD_SWAP_EXCHANGE = 512, LPD_SWAP_COPY = 1024, LPD_TRANSPARENT = 4096; // LAYERPLANEDESCRIPTOR.iPixelType enum : BYTE { LPD_TYPE_RGBA = 0, LPD_TYPE_COLORINDEX = 1 } // --- // wglSwapLayerBuffers() const UINT WGL_SWAP_MAIN_PLANE = 1, WGL_SWAP_OVERLAY1 = 2, WGL_SWAP_OVERLAY2 = 4, WGL_SWAP_OVERLAY3 = 8, WGL_SWAP_OVERLAY4 = 16, WGL_SWAP_OVERLAY5 = 32, WGL_SWAP_OVERLAY6 = 64, WGL_SWAP_OVERLAY7 = 128, WGL_SWAP_OVERLAY8 = 256, WGL_SWAP_OVERLAY9 = 512, WGL_SWAP_OVERLAY10 = 1024, WGL_SWAP_OVERLAY11 = 2048, WGL_SWAP_OVERLAY12 = 4096, WGL_SWAP_OVERLAY13 = 8192, WGL_SWAP_OVERLAY14 = 16384, WGL_SWAP_OVERLAY15 = 32768, WGL_SWAP_UNDERLAY1 = 65536, WGL_SWAP_UNDERLAY2 = 0x20000, WGL_SWAP_UNDERLAY3 = 0x40000, WGL_SWAP_UNDERLAY4 = 0x80000, WGL_SWAP_UNDERLAY5 = 0x100000, WGL_SWAP_UNDERLAY6 = 0x200000, WGL_SWAP_UNDERLAY7 = 0x400000, WGL_SWAP_UNDERLAY8 = 0x800000, WGL_SWAP_UNDERLAY9 = 0x1000000, WGL_SWAP_UNDERLAY10 = 0x2000000, WGL_SWAP_UNDERLAY11 = 0x4000000, WGL_SWAP_UNDERLAY12 = 0x8000000, WGL_SWAP_UNDERLAY13 = 0x10000000, WGL_SWAP_UNDERLAY14 = 0x20000000, WGL_SWAP_UNDERLAY15 = 0x40000000; const AC_SRC_OVER = 0x00; const AC_SRC_ALPHA = 0x01; // ??? const AC_SRC_NO_PREMULT_ALPHA = 0x01; const AC_SRC_NO_ALPHA = 0x02; const AC_DST_NO_PREMULT_ALPHA = 0x10; const AC_DST_NO_ALPHA = 0x20; const LAYOUT_RTL = 1; const LAYOUT_BTT = 2; const LAYOUT_VBH = 4; const LAYOUT_BITMAPORIENTATIONPRESERVED = 8; const CS_ENABLE = 0x00000001; const CS_DISABLE = 0x00000002; const CS_DELETE_TRANSFORM = 0x00000003; static if (_WIN32_WINNT > 0x500) { const GRADIENT_FILL_RECT_H=0x00; const GRADIENT_FILL_RECT_V=0x01; const GRADIENT_FILL_TRIANGLE=0x02; const GRADIENT_FILL_OP_FLAG=0xff; const COLORMATCHTOTARGET_EMBEDED=0x00000001; const CREATECOLORSPACE_EMBEDED=0x00000001; const SETICMPROFILE_EMBEDED=0x00000001; } // DISPLAY_DEVICE.StateFlags const DWORD DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001, DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002, DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004, DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008, DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010, DISPLAY_DEVICE_REMOVABLE = 0x00000020, DISPLAY_DEVICE_DISCONNECT = 0x02000000, DISPLAY_DEVICE_REMOTE = 0x04000000, DISPLAY_DEVICE_MODESPRUNED = 0x08000000; /* Child device state */ const DWORD DISPLAY_DEVICE_ACTIVE = 0x00000001, DISPLAY_DEVICE_ATTACHED = 0x00000002; static if (_WIN32_WINNT >= 0x500) { const GGI_MARK_NONEXISTING_GLYPHS = 1; } // ---------- // STRUCTS // ---------- struct ABC { int abcA; UINT abcB; int abcC; } alias ABC* PABC, NPABC, LPABC; struct ABCFLOAT { FLOAT abcfA; FLOAT abcfB; FLOAT abcfC; } alias ABCFLOAT* PABCFLOAT, NPABCFLOAT, LPABCFLOAT; struct BITMAP { LONG bmType; LONG bmWidth; LONG bmHeight; LONG bmWidthBytes; WORD bmPlanes; WORD bmBitsPixel; LPVOID bmBits; } alias BITMAP* PBITMAP, NPBITMAP, LPBITMAP; struct BITMAPCOREHEADER { DWORD bcSize; WORD bcWidth; WORD bcHeight; WORD bcPlanes; WORD bcBitCount; } alias BITMAPCOREHEADER* PBITMAPCOREHEADER, LPBITMAPCOREHEADER; align(1): struct RGBTRIPLE { BYTE rgbtBlue; BYTE rgbtGreen; BYTE rgbtRed; } alias RGBTRIPLE* LPRGBTRIPLE; align(2): struct BITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } alias BITMAPFILEHEADER* LPBITMAPFILEHEADER, PBITMAPFILEHEADER; align: struct BITMAPCOREINFO { BITMAPCOREHEADER bmciHeader; RGBTRIPLE[1] bmciColors; } alias BITMAPCOREINFO* LPBITMAPCOREINFO, PBITMAPCOREINFO; struct BITMAPINFOHEADER { DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } alias BITMAPINFOHEADER* LPBITMAPINFOHEADER, PBITMAPINFOHEADER; struct RGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; }; alias RGBQUAD* LPRGBQUAD; struct BITMAPINFO { BITMAPINFOHEADER bmiHeader; RGBQUAD[1] bmiColors; }; alias BITMAPINFO* PBITMAPINFO, LPBITMAPINFO; alias int FXPT16DOT16; alias int* LPFXPT16DOT16; alias int FXPT2DOT30; alias int* LPFXPT2DOT30; struct CIEXYZ { FXPT2DOT30 ciexyzX; FXPT2DOT30 ciexyzY; FXPT2DOT30 ciexyzZ; } alias CIEXYZ* LPCIEXYZ; struct CIEXYZTRIPLE { CIEXYZ ciexyzRed; CIEXYZ ciexyzGreen; CIEXYZ ciexyzBlue; } alias CIEXYZTRIPLE* LPCIEXYZTRIPLE; struct BITMAPV4HEADER { 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; } alias BITMAPV4HEADER* LPBITMAPV4HEADER, PBITMAPV4HEADER; struct BITMAPV5HEADER { 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; } alias BITMAPV5HEADER* LPBITMAPV5HEADER, PBITMAPV5HEADER; struct FONTSIGNATURE { DWORD[4] fsUsb; DWORD[2] fsCsb; } alias FONTSIGNATURE* PFONTSIGNATURE, LPFONTSIGNATURE; struct CHARSETINFO { UINT ciCharset; UINT ciACP; FONTSIGNATURE fs; } alias CHARSETINFO* PCHARSETINFO, NPCHARSETINFO, LPCHARSETINFO; struct COLORADJUSTMENT { WORD caSize; WORD caFlags; WORD caIlluminantIndex; WORD caRedGamma; WORD caGreenGamma; WORD caBlueGamma; WORD caReferenceBlack; WORD caReferenceWhite; SHORT caContrast; SHORT caBrightness; SHORT caColorfulness; SHORT caRedGreenTint; } alias COLORADJUSTMENT* PCOLORADJUSTMENT, LPCOLORADJUSTMENT; struct DEVMODEA { BYTE[CCHDEVICENAME] dmDeviceName; 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; } POINTL dmPosition; DWORD dmDisplayOrientation; DWORD dmDisplayFixedOutput; } short dmColor; short dmDuplex; short dmYResolution; short dmTTOption; short dmCollate; BYTE[CCHFORMNAME] dmFormName; WORD dmLogPixels; DWORD dmBitsPerPel; DWORD dmPelsWidth; DWORD dmPelsHeight; union { DWORD dmDisplayFlags; DWORD dmNup; } DWORD dmDisplayFrequency; DWORD dmICMMethod; DWORD dmICMIntent; DWORD dmMediaType; DWORD dmDitherType; DWORD dmReserved1; DWORD dmReserved2; DWORD dmPanningWidth; DWORD dmPanningHeight; } alias DEVMODEA* PDEVMODEA, NPDEVMODEA, LPDEVMODEA; struct DEVMODEW { WCHAR[CCHDEVICENAME] dmDeviceName; 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; } POINTL dmPosition; DWORD dmDisplayOrientation; DWORD dmDisplayFixedOutput; } short dmColor; short dmDuplex; short dmYResolution; short dmTTOption; short dmCollate; WCHAR[CCHFORMNAME] dmFormName; WORD dmLogPixels; DWORD dmBitsPerPel; DWORD dmPelsWidth; DWORD dmPelsHeight; union { DWORD dmDisplayFlags; DWORD dmNup; } DWORD dmDisplayFrequency; DWORD dmICMMethod; DWORD dmICMIntent; DWORD dmMediaType; DWORD dmDitherType; DWORD dmReserved1; DWORD dmReserved2; DWORD dmPanningWidth; DWORD dmPanningHeight; } alias DEVMODEW* PDEVMODEW, NPDEVMODEW, LPDEVMODEW; /* * Information about output options */ struct PSFEATURE_OUTPUT { BOOL bPageIndependent; BOOL bSetPageDevice; } alias PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT; /* * Information about custom paper size */ struct PSFEATURE_CUSTPAPER { LONG lOrientation; LONG lWidth; LONG lHeight; LONG lWidthOffset; LONG lHeightOffset; } alias PSFEATURE_CUSTPAPER* PPSFEATURE_CUSTPAPER; struct DIBSECTION { BITMAP dsBm; BITMAPINFOHEADER dsBmih; DWORD[3] dsBitfields; HANDLE dshSection; DWORD dsOffset; } alias DIBSECTION* PDIBSECTION; struct DOCINFOA { int cbSize = DOCINFOA.sizeof; LPCSTR lpszDocName; LPCSTR lpszOutput; LPCSTR lpszDatatype; DWORD fwType; } alias DOCINFOA* LPDOCINFOA; struct DOCINFOW { int cbSize = DOCINFOW.sizeof; LPCWSTR lpszDocName; LPCWSTR lpszOutput; LPCWSTR lpszDatatype; DWORD fwType; } alias DOCINFOW* LPDOCINFOW; struct PANOSE { BYTE bFamilyType; BYTE bSerifStyle; BYTE bWeight; BYTE bProportion; BYTE bContrast; BYTE bStrokeVariation; BYTE bArmStyle; BYTE bLetterform; BYTE bMidline; BYTE bXHeight; } alias PANOSE* LPPANOSE; struct LOGFONTA { 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[LF_FACESIZE] lfFaceName; } alias LOGFONTA* PLOGFONTA, NPLOGFONTA, LPLOGFONTA; struct LOGFONTW { 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[LF_FACESIZE] lfFaceName; } alias LOGFONTW* PLOGFONTW, NPLOGFONTW, LPLOGFONTW; struct EXTLOGFONTA { LOGFONTA elfLogFont; BYTE[LF_FULLFACESIZE] elfFullName; BYTE[LF_FACESIZE] elfStyle; DWORD elfVersion; DWORD elfStyleSize; DWORD elfMatch; DWORD elfReserved; BYTE[ELF_VENDOR_SIZE] elfVendorId; DWORD elfCulture; PANOSE elfPanose; } alias EXTLOGFONTA* PEXTLOGFONTA, NPEXTLOGFONTA, LPEXTLOGFONTA; struct EXTLOGFONTW { LOGFONTW elfLogFont; WCHAR[LF_FULLFACESIZE] elfFullName; WCHAR[LF_FACESIZE] elfStyle; DWORD elfVersion; DWORD elfStyleSize; DWORD elfMatch; DWORD elfReserved; BYTE[ELF_VENDOR_SIZE] elfVendorId; DWORD elfCulture; PANOSE elfPanose; } alias EXTLOGFONTW* PEXTLOGFONTW, NPEXTLOGFONTW, LPEXTLOGFONTW; struct LOGPEN { UINT lopnStyle; POINT lopnWidth; COLORREF lopnColor; } alias LOGPEN* PLOGPEN, NPLOGPEN, LPLOGPEN; // ---------------------- EMR ------------ struct EMR { DWORD iType; DWORD nSize; } alias EMR* PEMR; struct EMRANGLEARC { EMR emr; POINTL ptlCenter; DWORD nRadius; FLOAT eStartAngle; FLOAT eSweepAngle; } alias EMRANGLEARC* PEMRANGLEARC; struct EMRARC { EMR emr; RECTL rclBox; POINTL ptlStart; POINTL ptlEnd; } alias EMRARC* PEMRARC; alias TypeDef!(EMRARC) EMRARCTO; alias EMRARCTO* PEMRARCTO; alias TypeDef!(EMRARC) EMRCHORD; alias EMRCHORD* PEMRCHORD; alias TypeDef!(EMRARC) EMRPIE; alias EMRPIE* PEMRPIE; struct XFORM { FLOAT eM11; FLOAT eM12; FLOAT eM21; FLOAT eM22; FLOAT eDx; FLOAT eDy; } alias XFORM* PXFORM, LPXFORM; struct EMRBITBLT { 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; } alias EMRBITBLT* PEMRBITBLT; struct LOGBRUSH { UINT lbStyle; COLORREF lbColor; LONG lbHatch; } alias TypeDef!(LOGBRUSH) PATTERN; alias LOGBRUSH* PLOGBRUSH, NPLOGBRUSH, LPLOGBRUSH; alias PATTERN* PPATTERN, NPPATTERN, LPPATTERN; struct LOGBRUSH32 { UINT lbStyle; COLORREF lbColor; ULONG lbHatch; } alias LOGBRUSH32* PLOGBRUSH32, NPLOGBRUSH32, LPLOGBRUSH32; struct EMRCREATEBRUSHINDIRECT { EMR emr; DWORD ihBrush; LOGBRUSH32 lb; } alias EMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT; alias LONG LCSCSTYPE, LCSGAMUTMATCH; struct LOGCOLORSPACEA { DWORD lcsSignature; DWORD lcsVersion; DWORD lcsSize; LCSCSTYPE lcsCSType; LCSGAMUTMATCH lcsIntent; CIEXYZTRIPLE lcsEndpoints; DWORD lcsGammaRed; DWORD lcsGammaGreen; DWORD lcsGammaBlue; CHAR[MAX_PATH] lcsFilename; } alias LOGCOLORSPACEA* LPLOGCOLORSPACEA; struct LOGCOLORSPACEW { DWORD lcsSignature; DWORD lcsVersion; DWORD lcsSize; LCSCSTYPE lcsCSType; LCSGAMUTMATCH lcsIntent; CIEXYZTRIPLE lcsEndpoints; DWORD lcsGammaRed; DWORD lcsGammaGreen; DWORD lcsGammaBlue; WCHAR[MAX_PATH] lcsFilename; } alias LOGCOLORSPACEW* LPLOGCOLORSPACEW; alias USHORT COLOR16; struct TRIVERTEX { LONG x; LONG y; COLOR16 Red; COLOR16 Green; COLOR16 Blue; COLOR16 Alpha; } alias TRIVERTEX* PTRIVERTEX, LPTRIVERTEX; struct EMRGLSRECORD { EMR emr; DWORD cbData; BYTE[1] Data; } alias EMRGLSRECORD* PEMRGLSRECORD; struct EMRGLSBOUNDEDRECORD { EMR emr; RECTL rclBounds; DWORD cbData; BYTE[1] Data; } alias EMRGLSBOUNDEDRECORD* PEMRGLSBOUNDEDRECORD; struct EMRPIXELFORMAT { EMR emr; PIXELFORMATDESCRIPTOR pfd; } alias EMRPIXELFORMAT* PEMRPIXELFORMAT; struct EMRCREATECOLORSPACE { EMR emr; DWORD ihCS; LOGCOLORSPACE lcs; } alias EMRCREATECOLORSPACE* PEMRCREATECOLORSPACE; struct EMRSETCOLORSPACE { EMR emr; DWORD ihCS; } alias EMRSETCOLORSPACE* PEMRSETCOLORSPACE; alias TypeDef!(EMRSETCOLORSPACE) EMRSELECTCOLORSPACE; alias EMRSELECTCOLORSPACE* PEMRSELECTCOLORSPACE; alias TypeDef!(EMRSETCOLORSPACE) EMRDELETECOLORSPACE; alias EMRDELETECOLORSPACE* PEMRDELETECOLORSPACE; static if (_WIN32_WINNT >= 0x500) { struct EMREXTESCAPE { EMR emr; INT iEscape; INT cbEscData; BYTE[1] EscData; } alias EMREXTESCAPE* PEMREXTESCAPE; alias TypeDef!(EMREXTESCAPE) EMRDRAWESCAPE; alias EMRDRAWESCAPE* PEMRDRAWESCAPE; struct EMRNAMEDESCAPE { EMR emr; INT iEscape; INT cbDriver; INT cbEscData; BYTE[1] EscData; } alias EMRNAMEDESCAPE* PEMRNAMEDESCAPE; struct EMRSETICMPROFILE { EMR emr; DWORD dwFlags; DWORD cbName; DWORD cbData; BYTE[1] Data; } alias EMRSETICMPROFILE* PEMRSETICMPROFILE; alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEA; alias EMRSETICMPROFILEA* PEMRSETICMPROFILEA; alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEW; alias EMRSETICMPROFILEW* PEMRSETICMPROFILEW; struct EMRCREATECOLORSPACEW { EMR emr; DWORD ihCS; LOGCOLORSPACEW lcs; DWORD dwFlags; DWORD cbData; BYTE[1] Data; } alias EMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW; struct EMRCOLORMATCHTOTARGET { EMR emr; DWORD dwAction; DWORD dwFlags; DWORD cbName; DWORD cbData; BYTE[1] Data; } alias EMRCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET; struct EMRCOLORCORRECTPALETTE { EMR emr; DWORD ihPalette; DWORD nFirstEntry; DWORD nPalEntries; DWORD nReserved; } alias EMRCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE; struct EMRALPHABLEND { 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; } alias EMRALPHABLEND* PEMRALPHABLEND; struct EMRGRADIENTFILL { EMR emr; RECTL rclBounds; DWORD nVer; DWORD nTri; ULONG ulMode; TRIVERTEX[1] Ver; } alias EMRGRADIENTFILL* PEMRGRADIENTFILL; struct EMRTRANSPARENTBLT { 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; } alias EMRTRANSPARENTBLT* PEMRTRANSPARENTBLT; } struct EMRCREATEDIBPATTERNBRUSHPT { EMR emr; DWORD ihBrush; DWORD iUsage; DWORD offBmi; DWORD cbBmi; DWORD offBits; DWORD cbBits; } alias EMRCREATEDIBPATTERNBRUSHPT* PEMRCREATEDIBPATTERNBRUSHPT; struct EMRCREATEMONOBRUSH { EMR emr; DWORD ihBrush; DWORD iUsage; DWORD offBmi; DWORD cbBmi; DWORD offBits; DWORD cbBits; } alias EMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH; struct PALETTEENTRY { BYTE peRed; BYTE peGreen; BYTE peBlue; BYTE peFlags; } alias PALETTEENTRY* PPALETTEENTRY, LPPALETTEENTRY; struct LOGPALETTE { WORD palVersion; WORD palNumEntries; PALETTEENTRY[1] palPalEntry; } alias LOGPALETTE* PLOGPALETTE, NPLOGPALETTE, LPLOGPALETTE; struct EMRCREATEPALETTE { EMR emr; DWORD ihPal; LOGPALETTE lgpl; } alias EMRCREATEPALETTE* PEMRCREATEPALETTE; struct EMRCREATEPEN { EMR emr; DWORD ihPen; LOGPEN lopn; } alias EMRCREATEPEN* PEMRCREATEPEN; struct EMRELLIPSE { EMR emr; RECTL rclBox; } alias EMRELLIPSE* PEMRELLIPSE; alias TypeDef!(EMRELLIPSE) EMRRECTANGLE; alias EMRRECTANGLE* PEMRRECTANGLE; struct EMREOF { EMR emr; DWORD nPalEntries; DWORD offPalEntries; DWORD nSizeLast; } alias EMREOF* PEMREOF; struct EMREXCLUDECLIPRECT { EMR emr; RECTL rclClip; } alias EMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT; alias TypeDef!(EMREXCLUDECLIPRECT) EMRINTERSECTCLIPRECT; alias EMRINTERSECTCLIPRECT* PEMRINTERSECTCLIPRECT; struct EMREXTCREATEFONTINDIRECTW { EMR emr; DWORD ihFont; EXTLOGFONTW elfw; } alias EMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW; struct EXTLOGPEN { UINT elpPenStyle; UINT elpWidth; UINT elpBrushStyle; COLORREF elpColor; LONG elpHatch; DWORD elpNumEntries; DWORD[1] elpStyleEntry; } alias EXTLOGPEN* PEXTLOGPEN, NPEXTLOGPEN, LPEXTLOGPEN; struct EMREXTCREATEPEN { EMR emr; DWORD ihPen; DWORD offBmi; DWORD cbBmi; DWORD offBits; DWORD cbBits; EXTLOGPEN elp; } alias EMREXTCREATEPEN* PEMREXTCREATEPEN; struct EMREXTFLOODFILL { EMR emr; POINTL ptlStart; COLORREF crColor; DWORD iMode; } alias EMREXTFLOODFILL* PEMREXTFLOODFILL; struct EMREXTSELECTCLIPRGN { EMR emr; DWORD cbRgnData; DWORD iMode; BYTE [1]RgnData; } alias EMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN; struct EMRTEXT { POINTL ptlReference; DWORD nChars; DWORD offString; DWORD fOptions; RECTL rcl; DWORD offDx; } alias EMRTEXT* PEMRTEXT; struct EMREXTTEXTOUTA { EMR emr; RECTL rclBounds; DWORD iGraphicsMode; FLOAT exScale; FLOAT eyScale; EMRTEXT emrtext; } alias EMREXTTEXTOUTA* PEMREXTTEXTOUTA; alias TypeDef!(EMREXTTEXTOUTA) EMREXTTEXTOUTW; alias EMREXTTEXTOUTW* PEMREXTTEXTOUTW; struct EMRFILLPATH { EMR emr; RECTL rclBounds; } alias EMRFILLPATH* PEMRFILLPATH; alias TypeDef!(EMRFILLPATH) EMRSTROKEANDFILLPATH; alias EMRSTROKEANDFILLPATH* PEMRSTROKEANDFILLPATH; alias TypeDef!(EMRFILLPATH) EMRSTROKEPATH; alias EMRSTROKEPATH* PEMRSTROKEPATH; struct EMRFILLRGN { EMR emr; RECTL rclBounds; DWORD cbRgnData; DWORD ihBrush; BYTE[1] RgnData; } alias EMRFILLRGN* PEMRFILLRGN; struct EMRFORMAT { DWORD dSignature; DWORD nVersion; DWORD cbData; DWORD offData; } alias EMRFORMAT* PEMRFORMAT; struct EMRFRAMERGN { EMR emr; RECTL rclBounds; DWORD cbRgnData; DWORD ihBrush; SIZEL szlStroke; BYTE[1] RgnData; } alias EMRFRAMERGN* PEMRFRAMERGN; struct EMRGDICOMMENT { EMR emr; DWORD cbData; BYTE[1] Data; } alias EMRGDICOMMENT* PEMRGDICOMMENT; struct EMRINVERTRGN { EMR emr; RECTL rclBounds; DWORD cbRgnData; BYTE[1] RgnData; } alias EMRINVERTRGN* PEMRINVERTRGN; alias TypeDef!(EMRINVERTRGN) EMRPAINTRGN; alias EMRPAINTRGN* PEMRPAINTRGN; struct EMRLINETO { EMR emr; POINTL ptl; } alias EMRLINETO* PEMRLINETO; alias TypeDef!(EMRLINETO) EMRMOVETOEX; alias EMRMOVETOEX* PEMRMOVETOEX; struct EMRMASKBLT { 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; } alias EMRMASKBLT* PEMRMASKBLT; struct EMRMODIFYWORLDTRANSFORM { EMR emr; XFORM xform; DWORD iMode; } alias EMRMODIFYWORLDTRANSFORM* PEMRMODIFYWORLDTRANSFORM; struct EMROFFSETCLIPRGN { EMR emr; POINTL ptlOffset; } alias EMROFFSETCLIPRGN* PEMROFFSETCLIPRGN; struct EMRPLGBLT { EMR emr; RECTL rclBounds; POINTL[3] aptlDest; 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; } alias EMRPLGBLT* PEMRPLGBLT; struct EMRPOLYDRAW { EMR emr; RECTL rclBounds; DWORD cptl; POINTL[1] aptl; BYTE[1] abTypes; } alias EMRPOLYDRAW* PEMRPOLYDRAW; struct EMRPOLYDRAW16 { EMR emr; RECTL rclBounds; DWORD cpts; POINTS[1] apts; BYTE[1] abTypes; } alias EMRPOLYDRAW16* PEMRPOLYDRAW16; struct EMRPOLYLINE { EMR emr; RECTL rclBounds; DWORD cptl; POINTL[1] aptl; } alias EMRPOLYLINE* PEMRPOLYLINE; alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIER; alias EMRPOLYBEZIER* PEMRPOLYBEZIER; alias TypeDef!(EMRPOLYLINE) EMRPOLYGON; alias EMRPOLYGON* PEMRPOLYGON; alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIERTO; alias EMRPOLYBEZIERTO* PEMRPOLYBEZIERTO; alias TypeDef!(EMRPOLYLINE) EMRPOLYLINETO; alias EMRPOLYLINETO* PEMRPOLYLINETO; struct EMRPOLYLINE16 { EMR emr; RECTL rclBounds; DWORD cpts; POINTS[1] apts; } alias EMRPOLYLINE16* PEMRPOLYLINE16; alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIER16; alias EMRPOLYBEZIER16* PEMRPOLYBEZIER16; alias TypeDef!(EMRPOLYLINE16) EMRPOLYGON16; alias EMRPOLYGON16* PEMRPOLYGON16; alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIERTO16; alias EMRPOLYBEZIERTO16* PEMRPOLYBEZIERTO16; alias TypeDef!(EMRPOLYLINE16) EMRPOLYLINETO16; alias EMRPOLYLINETO16* PEMRPOLYLINETO16; struct EMRPOLYPOLYLINE { EMR emr; RECTL rclBounds; DWORD nPolys; DWORD cptl; DWORD[1] aPolyCounts; POINTL[1] aptl; } alias EMRPOLYPOLYLINE* PEMRPOLYPOLYLINE; alias TypeDef!(EMRPOLYPOLYLINE) EMRPOLYPOLYGON; alias EMRPOLYPOLYGON* PEMRPOLYPOLYGON; struct EMRPOLYPOLYLINE16 { EMR emr; RECTL rclBounds; DWORD nPolys; DWORD cpts; DWORD[1] aPolyCounts; POINTS[1] apts; } alias EMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16; alias TypeDef!(EMRPOLYPOLYLINE16) EMRPOLYPOLYGON16; alias EMRPOLYPOLYGON16* PEMRPOLYPOLYGON16; struct EMRPOLYTEXTOUTA { EMR emr; RECTL rclBounds; DWORD iGraphicsMode; FLOAT exScale; FLOAT eyScale; LONG cStrings; EMRTEXT[1] aemrtext; } alias EMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA; alias TypeDef!(EMRPOLYTEXTOUTA) EMRPOLYTEXTOUTW; alias EMRPOLYTEXTOUTW* PEMRPOLYTEXTOUTW; struct EMRRESIZEPALETTE { EMR emr; DWORD ihPal; DWORD cEntries; } alias EMRRESIZEPALETTE* PEMRRESIZEPALETTE; struct EMRRESTOREDC { EMR emr; LONG iRelative; } alias EMRRESTOREDC* PEMRRESTOREDC; struct EMRROUNDRECT { EMR emr; RECTL rclBox; SIZEL szlCorner; } alias EMRROUNDRECT* PEMRROUNDRECT; struct EMRSCALEVIEWPORTEXTEX { EMR emr; LONG xNum; LONG xDenom; LONG yNum; LONG yDenom; } alias EMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX; alias TypeDef!(EMRSCALEVIEWPORTEXTEX) EMRSCALEWINDOWEXTEX; alias EMRSCALEWINDOWEXTEX* PEMRSCALEWINDOWEXTEX; struct EMRSELECTOBJECT { EMR emr; DWORD ihObject; } alias EMRSELECTOBJECT* PEMRSELECTOBJECT; alias TypeDef!(EMRSELECTOBJECT) EMRDELETEOBJECT; alias EMRDELETEOBJECT* PEMRDELETEOBJECT; struct EMRSELECTPALETTE { EMR emr; DWORD ihPal; } alias EMRSELECTPALETTE* PEMRSELECTPALETTE; struct EMRSETARCDIRECTION { EMR emr; DWORD iArcDirection; } alias EMRSETARCDIRECTION* PEMRSETARCDIRECTION; struct EMRSETTEXTCOLOR { EMR emr; COLORREF crColor; } alias EMRSETTEXTCOLOR* PEMRSETTEXTCOLOR; alias TypeDef!(EMRSETTEXTCOLOR) EMRSETBKCOLOR; alias EMRSETBKCOLOR* PEMRSETBKCOLOR; struct EMRSETCOLORADJUSTMENT { EMR emr; COLORADJUSTMENT ColorAdjustment; } alias EMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT; struct EMRSETDIBITSTODEVICE { 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; } alias EMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE; struct EMRSETMAPPERFLAGS { EMR emr; DWORD dwFlags; } alias EMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS; struct EMRSETMITERLIMIT { EMR emr; FLOAT eMiterLimit; } alias EMRSETMITERLIMIT* PEMRSETMITERLIMIT; struct EMRSETPALETTEENTRIES { EMR emr; DWORD ihPal; DWORD iStart; DWORD cEntries; PALETTEENTRY[1] aPalEntries; } alias EMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES; struct EMRSETPIXELV { EMR emr; POINTL ptlPixel; COLORREF crColor; } alias EMRSETPIXELV* PEMRSETPIXELV; struct EMRSETVIEWPORTEXTEX { EMR emr; SIZEL szlExtent; } alias EMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX; alias TypeDef!(EMRSETVIEWPORTEXTEX) EMRSETWINDOWEXTEX; alias EMRSETWINDOWEXTEX* PEMRSETWINDOWEXTEX; struct EMRSETVIEWPORTORGEX { EMR emr; POINTL ptlOrigin; } alias EMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX; alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETWINDOWORGEX; alias EMRSETWINDOWORGEX* PEMRSETWINDOWORGEX; alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETBRUSHORGEX; alias EMRSETBRUSHORGEX* PEMRSETBRUSHORGEX; struct EMRSETWORLDTRANSFORM { EMR emr; XFORM xform; } alias EMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM; struct EMRSTRETCHBLT { 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; } alias EMRSTRETCHBLT* PEMRSTRETCHBLT; struct EMRSTRETCHDIBITS { 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; } alias EMRSTRETCHDIBITS* PEMRSTRETCHDIBITS; struct EMRABORTPATH { EMR emr; } alias EMRABORTPATH* PEMRABORTPATH; alias TypeDef!(EMRABORTPATH) EMRBEGINPATH; alias EMRBEGINPATH* PEMRBEGINPATH; alias TypeDef!(EMRABORTPATH) EMRENDPATH; alias EMRENDPATH* PEMRENDPATH; alias TypeDef!(EMRABORTPATH) EMRCLOSEFIGURE; alias EMRCLOSEFIGURE* PEMRCLOSEFIGURE; alias TypeDef!(EMRABORTPATH) EMRFLATTENPATH; alias EMRFLATTENPATH* PEMRFLATTENPATH; alias TypeDef!(EMRABORTPATH) EMRWIDENPATH; alias EMRWIDENPATH* PEMRWIDENPATH; alias TypeDef!(EMRABORTPATH) EMRSETMETARGN; alias EMRSETMETARGN* PEMRSETMETARGN; alias TypeDef!(EMRABORTPATH) EMRSAVEDC; alias EMRSAVEDC* PEMRSAVEDC; alias TypeDef!(EMRABORTPATH) EMRREALIZEPALETTE; alias EMRREALIZEPALETTE* PEMRREALIZEPALETTE; struct EMRSELECTCLIPPATH { EMR emr; DWORD iMode; } alias EMRSELECTCLIPPATH* PEMRSELECTCLIPPATH; alias TypeDef!(EMRSELECTCLIPPATH) EMRSETBKMODE; alias EMRSETBKMODE* PEMRSETBKMODE; alias TypeDef!(EMRSELECTCLIPPATH) EMRSETMAPMODE; alias EMRSETMAPMODE* PEMRSETMAPMODE; alias TypeDef!(EMRSELECTCLIPPATH) EMRSETPOLYFILLMODE; alias EMRSETPOLYFILLMODE* PEMRSETPOLYFILLMODE; alias TypeDef!(EMRSELECTCLIPPATH) EMRSETROP2; alias EMRSETROP2* PEMRSETROP2; alias TypeDef!(EMRSELECTCLIPPATH) EMRSETSTRETCHBLTMODE; alias EMRSETSTRETCHBLTMODE* PEMRSETSTRETCHBLTMODE; alias TypeDef!(EMRSELECTCLIPPATH) EMRSETICMMODE; alias EMRSETICMMODE* PEMRSETICMMODE; alias TypeDef!(EMRSELECTCLIPPATH) EMRSETTEXTALIGN; alias EMRSETTEXTALIGN* PEMRSETTEXTALIGN; alias TypeDef!(EMRSELECTCLIPPATH) EMRENABLEICM; alias EMRENABLEICM* PEMRENABLEICM; static if (_WIN32_WINNT >= 0x500) { alias TypeDef!(EMRSELECTCLIPPATH) EMRSETLAYOUT; alias EMRSETLAYOUT* PEMRSETLAYOUT; } align(2): struct METAHEADER { WORD mtType; WORD mtHeaderSize; WORD mtVersion; DWORD mtSize; WORD mtNoObjects; DWORD mtMaxRecord; WORD mtNoParameters; } alias METAHEADER* PMETAHEADER; alias METAHEADER* LPMETAHEADER; align: struct ENHMETAHEADER { DWORD iType = EMR_HEADER; DWORD nSize = ENHMETAHEADER.sizeof; RECTL rclBounds; RECTL rclFrame; DWORD dSignature = ENHMETA_SIGNATURE; 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; static if (_WIN32_WINNT >= 0x500) { SIZEL szlMicrometers; } } alias ENHMETAHEADER* PENHMETAHEADER, LPENHMETAHEADER; struct METARECORD { DWORD rdSize; WORD rdFunction; WORD[1] rdParm; } alias METARECORD* PMETARECORD; alias METARECORD* LPMETARECORD; struct ENHMETARECORD { DWORD iType; DWORD nSize; DWORD[1] dParm; } alias ENHMETARECORD* PENHMETARECORD, LPENHMETARECORD; // --- struct HANDLETABLE { HGDIOBJ[1] objectHandle; } alias HANDLETABLE* PHANDLETABLE, LPHANDLETABLE; struct TEXTMETRICA { 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; } alias TEXTMETRICA* PTEXTMETRICA, NPTEXTMETRICA, LPTEXTMETRICA; struct TEXTMETRICW { 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; } alias TEXTMETRICW* PTEXTMETRICW, NPTEXTMETRICW, LPTEXTMETRICW; struct RGNDATAHEADER { DWORD dwSize; DWORD iType; DWORD nCount; DWORD nRgnSize; RECT rcBound; } alias RGNDATAHEADER* PRGNDATAHEADER; struct RGNDATA { RGNDATAHEADER rdh; char[1] Buffer; } alias RGNDATA* PRGNDATA, NPRGNDATA, LPRGNDATA; /* for GetRandomRgn */ const SYSRGN=4; struct GCP_RESULTSA { DWORD lStructSize; LPSTR lpOutString; UINT* lpOrder; INT* lpDx; INT* lpCaretPos; LPSTR lpClass; LPWSTR lpGlyphs; UINT nGlyphs; UINT nMaxFit; } alias GCP_RESULTSA* LPGCP_RESULTSA; struct GCP_RESULTSW { DWORD lStructSize; LPWSTR lpOutString; UINT* lpOrder; INT* lpDx; INT* lpCaretPos; LPWSTR lpClass; LPWSTR lpGlyphs; UINT nGlyphs; UINT nMaxFit; } alias GCP_RESULTSW* LPGCP_RESULTSW; struct GLYPHMETRICS { UINT gmBlackBoxX; UINT gmBlackBoxY; POINT gmptGlyphOrigin; short gmCellIncX; short gmCellIncY; } alias GLYPHMETRICS* LPGLYPHMETRICS; static if (_WIN32_WINNT >= 0x500) { struct WCRANGE { WCHAR wcLow; USHORT cGlyphs; } alias WCRANGE* PWCRANGE, LPWCRANGE; struct GLYPHSET { DWORD cbThis; DWORD flAccel; DWORD cGlyphsSupported; DWORD cRanges; WCRANGE[1] ranges; } alias GLYPHSET* PGLYPHSET, LPGLYPHSET; const DWORD GS_8BIT_INDICES = 0x00000001; } struct KERNINGPAIR { WORD wFirst; WORD wSecond; int iKernAmount; } alias KERNINGPAIR* LPKERNINGPAIR; struct FIXED { WORD fract; short value; } struct MAT2 { FIXED eM11; FIXED eM12; FIXED eM21; FIXED eM22; } alias MAT2* LPMAT2; 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; PSTR otmpFamilyName; PSTR otmpFaceName; PSTR otmpStyleName; PSTR otmpFullName; } alias OUTLINETEXTMETRICA* POUTLINETEXTMETRICA, NPOUTLINETEXTMETRICA, LPOUTLINETEXTMETRICA; 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; PSTR otmpFamilyName; PSTR otmpFaceName; PSTR otmpStyleName; PSTR otmpFullName; } alias OUTLINETEXTMETRICW* POUTLINETEXTMETRICW, NPOUTLINETEXTMETRICW, LPOUTLINETEXTMETRICW; struct RASTERIZER_STATUS { short nSize; short wFlags; short nLanguageID; } alias RASTERIZER_STATUS* LPRASTERIZER_STATUS; struct POLYTEXTA { int x; int y; UINT n; LPCSTR lpstr; UINT uiFlags; RECT rcl; int* pdx; } alias POLYTEXTA* PPOLYTEXTA, NPPOLYTEXTA, LPPOLYTEXTA; struct POLYTEXTW { int x; int y; UINT n; LPCWSTR lpstr; UINT uiFlags; RECT rcl; int* pdx; } alias POLYTEXTW* PPOLYTEXTW, NPPOLYTEXTW, LPPOLYTEXTW; struct PIXELFORMATDESCRIPTOR { 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; } alias PIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR, LPPIXELFORMATDESCRIPTOR; struct METAFILEPICT { LONG mm; LONG xExt; LONG yExt; HMETAFILE hMF; } alias METAFILEPICT* LPMETAFILEPICT; struct LOCALESIGNATURE { DWORD[4] lsUsb; DWORD[2] lsCsbDefault; DWORD[2] lsCsbSupported; } alias LOCALESIGNATURE* PLOCALESIGNATURE, LPLOCALESIGNATURE; alias LONG LCSTYPE; /* What this for? */ align(4): struct NEWTEXTMETRICA { 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; } alias NEWTEXTMETRICA* PNEWTEXTMETRICA, NPNEWTEXTMETRICA, LPNEWTEXTMETRICA; struct NEWTEXTMETRICW { 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; } alias NEWTEXTMETRICW* PNEWTEXTMETRICW, NPNEWTEXTMETRICW, LPNEWTEXTMETRICW; align: struct NEWTEXTMETRICEXA { NEWTEXTMETRICA ntmTm; FONTSIGNATURE ntmFontSig; } struct NEWTEXTMETRICEXW { NEWTEXTMETRICW ntmTm; FONTSIGNATURE ntmFontSig; } struct PELARRAY { LONG paXCount; LONG paYCount; LONG paXExt; LONG paYExt; BYTE paRGBs; } alias PELARRAY* PPELARRAY, NPPELARRAY, LPPELARRAY; struct ENUMLOGFONTA { LOGFONTA elfLogFont; BYTE[LF_FULLFACESIZE] elfFullName; BYTE[LF_FACESIZE] elfStyle; } alias ENUMLOGFONTA* LPENUMLOGFONTA; struct ENUMLOGFONTW { LOGFONTW elfLogFont; WCHAR[LF_FULLFACESIZE] elfFullName; WCHAR[LF_FACESIZE] elfStyle; } alias ENUMLOGFONTW* LPENUMLOGFONTW; struct ENUMLOGFONTEXA { LOGFONTA elfLogFont; BYTE[LF_FULLFACESIZE] elfFullName; BYTE[LF_FACESIZE] elfStyle; BYTE[LF_FACESIZE] elfScript; } alias ENUMLOGFONTEXA* LPENUMLOGFONTEXA; struct ENUMLOGFONTEXW { LOGFONTW elfLogFont; WCHAR[LF_FULLFACESIZE] elfFullName; WCHAR[LF_FACESIZE] elfStyle; WCHAR[LF_FACESIZE] elfScript; } alias ENUMLOGFONTEXW* LPENUMLOGFONTEXW; struct POINTFX { FIXED x; FIXED y; } alias POINTFX* LPPOINTFX; struct TTPOLYCURVE { WORD wType; WORD cpfx; POINTFX[1] apfx; } alias TTPOLYCURVE* LPTTPOLYCURVE; struct TTPOLYGONHEADER { DWORD cb; DWORD dwType; POINTFX pfxStart; } alias TTPOLYGONHEADER* LPTTPOLYGONHEADER; struct POINTFLOAT { FLOAT x; FLOAT y; } alias POINTFLOAT* PPOINTFLOAT; struct GLYPHMETRICSFLOAT { FLOAT gmfBlackBoxX; FLOAT gmfBlackBoxY; POINTFLOAT gmfptGlyphOrigin; FLOAT gmfCellIncX; FLOAT gmfCellIncY; } alias GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT, LPGLYPHMETRICSFLOAT; struct LAYERPLANEDESCRIPTOR { 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; } alias LAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR, LPLAYERPLANEDESCRIPTOR; struct BLENDFUNCTION { BYTE BlendOp; BYTE BlendFlags; BYTE SourceConstantAlpha; BYTE AlphaFormat; } alias BLENDFUNCTION* PBLENDFUNCTION, LPBLENDFUNCTION; const MM_MAX_NUMAXES = 16; struct DESIGNVECTOR { DWORD dvReserved; DWORD dvNumAxes; LONG[MM_MAX_NUMAXES] dvValues; } alias DESIGNVECTOR* PDESIGNVECTOR, LPDESIGNVECTOR; const STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8); const STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8); static if (_WIN32_WINNT >= 0x500) { const MM_MAX_AXES_NAMELEN = 16; struct AXISINFOA { LONG axMinValue; LONG axMaxValue; BYTE[MM_MAX_AXES_NAMELEN] axAxisName; } alias AXISINFOA* PAXISINFOA, LPAXISINFOA; struct AXISINFOW { LONG axMinValue; LONG axMaxValue; WCHAR[MM_MAX_AXES_NAMELEN] axAxisName; } alias AXISINFOW* PAXISINFOW, LPAXISINFOW; version (Unicode) { alias AXISINFOW AXISINFO; alias PAXISINFOW PAXISINFO; alias LPAXISINFOW LPAXISINFO; } else { alias AXISINFOA AXISINFO; alias PAXISINFOA PAXISINFO; alias LPAXISINFOA LPAXISINFO; } struct AXESLISTA { DWORD axlReserved; DWORD axlNumAxes; AXISINFOA[MM_MAX_NUMAXES] axlAxisInfo; } alias AXESLISTA* PAXESLISTA, LPAXESLISTA; struct AXESLISTW { DWORD axlReserved; DWORD axlNumAxes; AXISINFOW[MM_MAX_NUMAXES] axlAxisInfo; } alias AXESLISTW* PAXESLISTW, LPAXESLISTW; version (Unicode) { alias AXESLISTW AXESLIST; alias PAXESLISTW PAXESLIST; alias LPAXESLISTW LPAXESLIST; } else { alias AXESLISTA AXESLIST; alias PAXESLISTA PAXESLIST; alias LPAXESLISTA LPAXESLIST; } struct ENUMLOGFONTEXDVA { ENUMLOGFONTEXA elfEnumLogfontEx; DESIGNVECTOR elfDesignVector; } alias ENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA, LPENUMLOGFONTEXDVA; struct ENUMLOGFONTEXDVW { ENUMLOGFONTEXW elfEnumLogfontEx; DESIGNVECTOR elfDesignVector; } alias ENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW, LPENUMLOGFONTEXDVW; HFONT CreateFontIndirectExA(const(ENUMLOGFONTEXDVA)*); HFONT CreateFontIndirectExW(const(ENUMLOGFONTEXDVW)*); version (Unicode) alias CreateFontIndirectExW CreateFontIndirectEx; else alias CreateFontIndirectExA CreateFontIndirectEx; struct ENUMTEXTMETRICA { NEWTEXTMETRICEXA etmNewTextMetricEx; AXESLISTA etmAxesList; } alias ENUMTEXTMETRICA* PENUMTEXTMETRICA, LPENUMTEXTMETRICA; struct ENUMTEXTMETRICW { NEWTEXTMETRICEXW etmNewTextMetricEx; AXESLISTW etmAxesList; } alias ENUMTEXTMETRICW* PENUMTEXTMETRICW, LPENUMTEXTMETRICW; version (Unicode) { alias ENUMTEXTMETRICW ENUMTEXTMETRIC; alias PENUMTEXTMETRICW PENUMTEXTMETRIC; alias LPENUMTEXTMETRICW LPENUMTEXTMETRIC; } else { alias ENUMTEXTMETRICA ENUMTEXTMETRIC; alias PENUMTEXTMETRICA PENUMTEXTMETRIC; alias LPENUMTEXTMETRICA LPENUMTEXTMETRIC; } } /* _WIN32_WINNT >= 0x500 */ struct GRADIENT_TRIANGLE { ULONG Vertex1; ULONG Vertex2; ULONG Vertex3; } alias GRADIENT_TRIANGLE* PGRADIENT_TRIANGLE, LPGRADIENT_TRIANGLE; struct GRADIENT_RECT { ULONG UpperLeft; ULONG LowerRight; } alias GRADIENT_RECT* PGRADIENT_RECT, LPGRADIENT_RECT; struct DISPLAY_DEVICEA { DWORD cb; CHAR[32] DeviceName; CHAR[128] DeviceString; DWORD StateFlags; CHAR[128] DeviceID; CHAR[128] DeviceKey; } alias DISPLAY_DEVICEA* PDISPLAY_DEVICEA, LPDISPLAY_DEVICEA; struct DISPLAY_DEVICEW { DWORD cb; WCHAR[32] DeviceName; WCHAR[128] DeviceString; DWORD StateFlags; WCHAR[128] DeviceID; WCHAR[128] DeviceKey; } alias DISPLAY_DEVICEW* PDISPLAY_DEVICEW, LPDISPLAY_DEVICEW; struct DRAWPATRECT { POINT ptPosition; POINT ptSize; WORD wStyle; WORD wPattern; } alias DRAWPATRECT* PDRAWPATRECT; // --------- // Callbacks alias BOOL function (HDC, int) ABORTPROC; alias int function (HDC, HANDLETABLE*, METARECORD*, int, LPARAM) MFENUMPROC; alias int function (HDC, HANDLETABLE*, const(ENHMETARECORD)*, int, LPARAM) ENHMFENUMPROC; alias int function (const(LOGFONTA)*, const(TEXTMETRICA)*, DWORD, LPARAM) FONTENUMPROCA, OLDFONTENUMPROCA; alias int function (const(LOGFONTW)*, const(TEXTMETRICW)*, DWORD, LPARAM) FONTENUMPROCW, OLDFONTENUMPROCW; alias int function (LPSTR, LPARAM) ICMENUMPROCA; alias int function (LPWSTR, LPARAM) ICMENUMPROCW; alias void function (LPVOID, LPARAM) GOBJENUMPROC; alias void function (int, int, LPARAM) LINEDDAPROC; alias UINT function (HWND, HMODULE, LPDEVMODEA, LPSTR, LPSTR, LPDEVMODEA, LPSTR, UINT) LPFNDEVMODE; alias DWORD function (LPSTR, LPSTR, UINT, LPSTR, LPDEVMODEA) LPFNDEVCAPS; // --------- // C Macros. // FIXME: //POINTS MAKEPOINTS(DWORD dwValue) #define MAKEPOINTS(l) (*((POINTS*)&(l))) DWORD MAKEROP4(DWORD fore, DWORD back) { return ((back<<8) & 0xFF000000) | (fore); } COLORREF CMYK(BYTE c, BYTE m, BYTE y, BYTE k) { return cast(COLORREF)(k | (y << 8) | (m << 16) | (c << 24)); } BYTE GetCValue(COLORREF cmyk) { return cast(BYTE)(cmyk >> 24); } BYTE GetMValue(COLORREF cmyk) { return cast(BYTE)(cmyk >> 16); } BYTE GetYValue(COLORREF cmyk) { return cast(BYTE)(cmyk >> 8); } BYTE GetKValue(COLORREF cmyk) { return cast(BYTE)cmyk; } COLORREF RGB(BYTE r, BYTE g, BYTE b) { return cast(COLORREF)(r | (g << 8) | (b << 16)); } BYTE GetRValue(COLORREF c) { return cast(BYTE)c; } BYTE GetGValue(COLORREF c) { return cast(BYTE)(c >> 8); } BYTE GetBValue(COLORREF c) { return cast(BYTE)(c >> 16); } COLORREF PALETTEINDEX(WORD i) { return 0x01000000 | cast(COLORREF) i; } COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b) { return 0x02000000|RGB(r, g, b); } extern(Windows) { int AbortDoc(HDC); BOOL AbortPath(HDC); int AddFontResourceA(LPCSTR); int AddFontResourceW(LPCWSTR); BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); BOOL AnimatePalette(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); BOOL Arc(HDC, int, int, int, int, int, int, int, int); BOOL ArcTo(HDC, int, int, int, int, int, int, int, int); BOOL BeginPath(HDC); BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); BOOL CancelDC(HDC); BOOL CheckColorsInGamut(HDC, PVOID, PVOID, DWORD); BOOL Chord(HDC, int, int, int, int, int, int, int, int); int ChoosePixelFormat(HDC, const(PIXELFORMATDESCRIPTOR)*); HENHMETAFILE CloseEnhMetaFile(HDC); BOOL CloseFigure(HDC); HMETAFILE CloseMetaFile(HDC); BOOL ColorMatchToTarget(HDC, HDC, DWORD); BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD); int CombineRgn(HRGN, HRGN, HRGN, int); BOOL CombineTransform(LPXFORM, const(XFORM)*, const(XFORM)*); HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR); HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR); HBITMAP CreateBitmap(int, int, UINT, UINT, PCVOID); HBITMAP CreateBitmapIndirect(const(BITMAP)*); HBRUSH CreateBrushIndirect(const(LOGBRUSH)*); HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA); HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW); HBITMAP CreateCompatibleBitmap(HDC, int, int); HDC CreateCompatibleDC(HDC); HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); HBITMAP CreateDIBitmap(HDC, const(BITMAPINFOHEADER)*, DWORD, PCVOID, const(BITMAPINFO)*, UINT); HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT); HBRUSH CreateDIBPatternBrushPt(PCVOID, UINT); HBITMAP CreateDIBSection(HDC, const(BITMAPINFO)*, UINT, void**, HANDLE, DWORD); HBITMAP CreateDiscardableBitmap(HDC, int, int); HRGN CreateEllipticRgn(int, int, int, int); HRGN CreateEllipticRgnIndirect(LPCRECT); HDC CreateEnhMetaFileA(HDC, LPCSTR, LPCRECT, LPCSTR); HDC CreateEnhMetaFileW(HDC, LPCWSTR, LPCRECT, LPCWSTR); HFONT CreateFontA(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCSTR); HFONT CreateFontW(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCWSTR); HFONT CreateFontIndirectA(const(LOGFONTA)*); HFONT CreateFontIndirectW(const(LOGFONTW)*); HPALETTE CreateHalftonePalette(HDC); HBRUSH CreateHatchBrush(int, COLORREF); HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); HDC CreateMetaFileA(LPCSTR); HDC CreateMetaFileW(LPCWSTR); HPALETTE CreatePalette(const(LOGPALETTE)*); HBRUSH CreatePatternBrush(HBITMAP); HPEN CreatePen(int, int, COLORREF); HPEN CreatePenIndirect(const(LOGPEN)*); HRGN CreatePolygonRgn(const(POINT)*, int, int); HRGN CreatePolyPolygonRgn(const(POINT)*, const(INT)*, int, int); HRGN CreateRectRgn(int, int, int, int); HRGN CreateRectRgnIndirect(LPCRECT); HRGN CreateRoundRectRgn(int, int, int, int, int, int); BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); HBRUSH CreateSolidBrush(COLORREF); BOOL DeleteColorSpace(HCOLORSPACE); BOOL DeleteDC(HDC); BOOL DeleteEnhMetaFile(HENHMETAFILE); BOOL DeleteMetaFile(HMETAFILE); BOOL DeleteObject(HGDIOBJ); int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); DWORD DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, LPSTR, const(DEVMODEA)*); DWORD DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, LPWSTR, const(DEVMODEW)*); BOOL DPtoLP(HDC, LPPOINT, int); int DrawEscape(HDC, int, int, LPCSTR); BOOL Ellipse(HDC, int, int, int, int); int EndDoc(HDC); int EndPage(HDC); BOOL EndPath(HDC); BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, PVOID, LPCRECT); int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); int EnumFontFamiliesExA(HDC, PLOGFONTA, FONTENUMPROCA, LPARAM, DWORD); int EnumFontFamiliesExW(HDC, PLOGFONTW, FONTENUMPROCW, LPARAM, DWORD); int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM); int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM); BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); BOOL EqualRgn(HRGN, HRGN); int Escape(HDC, int, int, LPCSTR, PVOID); int ExcludeClipRect(HDC, int, int, int, int); int ExcludeUpdateRgn(HDC, HWND); HPEN ExtCreatePen(DWORD, DWORD, const(LOGBRUSH)*, DWORD, const(DWORD)*); HRGN ExtCreateRegion(const(XFORM)*, DWORD, const(RGNDATA)*); int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT); int ExtSelectClipRgn(HDC, HRGN, int); BOOL ExtTextOutA(HDC, int, int, UINT, LPCRECT, LPCSTR, UINT, const(INT)*); BOOL ExtTextOutW(HDC, int, int, UINT, LPCRECT, LPCWSTR, UINT, const(INT)*); BOOL FillPath(HDC); int FillRect(HDC, LPCRECT, HBRUSH); int FillRgn(HDC, HRGN, HBRUSH); BOOL FixBrushOrgEx(HDC, int, int, LPPOINT); BOOL FlattenPath(HDC); BOOL FloodFill(HDC, int, int, COLORREF); BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); BOOL GdiComment(HDC, UINT, const(BYTE)*); BOOL GdiFlush(); DWORD GdiGetBatchLimit(); DWORD GdiSetBatchLimit(DWORD); int GetArcDirection(HDC); BOOL GetAspectRatioFilterEx(HDC, LPSIZE); LONG GetBitmapBits(HBITMAP, LONG, PVOID); BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE); COLORREF GetBkColor(HDC); int GetBkMode(HDC); UINT GetBoundsRect(HDC, LPRECT, UINT); BOOL GetBrushOrgEx(HDC, LPPOINT); BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC); BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC); BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD); DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD); BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT); BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT); BOOL GetCharWidthA(HDC, UINT, UINT, LPINT); BOOL GetCharWidthW(HDC, UINT, UINT, LPINT); BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); int GetClipBox(HDC, LPRECT); int GetClipRgn(HDC, HRGN); BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT); HANDLE GetColorSpace(HDC); HGDIOBJ GetCurrentObject(HDC, UINT); BOOL GetCurrentPositionEx(HDC, LPPOINT); HCURSOR GetCursor(); BOOL GetDCOrgEx(HDC, LPPOINT); static if (_WIN32_WINNT >= 0x500) { DWORD GetDCPenColor(HGDIOBJ); COLORREF GetDCBrushColor(HGDIOBJ); } int GetDeviceCaps(HDC, int); BOOL GetDeviceGammaRamp(HDC, PVOID); UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD*); int GetDIBits(HDC, HBITMAP, UINT, UINT, PVOID, LPBITMAPINFO, UINT); HENHMETAFILE GetEnhMetaFileA(LPCSTR); HENHMETAFILE GetEnhMetaFileW(LPCWSTR); UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR); UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR); UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER); UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY); UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, DWORD, const(PIXELFORMATDESCRIPTOR)*); DWORD GetFontData(HDC, DWORD, DWORD, PVOID, DWORD); DWORD GetFontLanguageInfo(HDC); DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); int GetGraphicsMode(HDC); BOOL GetICMProfileA(HDC, DWORD, LPSTR); BOOL GetICMProfileW(HDC, DWORD, LPWSTR); DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD); BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD); int GetMapMode(HDC); HMETAFILE GetMetaFileA(LPCSTR); HMETAFILE GetMetaFileW(LPCWSTR); UINT GetMetaFileBitsEx(HMETAFILE, UINT, PVOID); int GetMetaRgn(HDC, HRGN); BOOL GetMiterLimit(HDC, PFLOAT); COLORREF GetNearestColor(HDC, COLORREF); UINT GetNearestPaletteIndex(HPALETTE, COLORREF); int GetObjectA(HGDIOBJ, int, PVOID); int GetObjectW(HGDIOBJ, int, PVOID); DWORD GetObjectType(HGDIOBJ); UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); int GetPath(HDC, LPPOINT, PBYTE, int); COLORREF GetPixel(HDC, int, int); int GetPixelFormat(HDC); int GetPolyFillMode(HDC); BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); int GetRandomRgn (HDC, HRGN, INT); DWORD GetRegionData(HRGN, DWORD, LPRGNDATA); int GetRgnBox(HRGN, LPRECT); int GetROP2(HDC); HGDIOBJ GetStockObject(int); int GetStretchBltMode(HDC); UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); UINT GetSystemPaletteUse(HDC); UINT GetTextAlign(HDC); int GetTextCharacterExtra(HDC); int GetTextCharset(HDC); int GetTextCharsetInfo(HDC, LPFONTSIGNATURE, DWORD); COLORREF GetTextColor(HDC); BOOL GetTextExtentExPointA(HDC, LPCSTR, int, int, LPINT, LPINT, LPSIZE); BOOL GetTextExtentExPointW(HDC, LPCWSTR, int, int, LPINT, LPINT, LPSIZE); BOOL GetTextExtentPointA(HDC, LPCSTR, int, LPSIZE); BOOL GetTextExtentPointW(HDC, LPCWSTR, int, LPSIZE); BOOL GetTextExtentPoint32A(HDC, LPCSTR, int, LPSIZE); BOOL GetTextExtentPoint32W(HDC, LPCWSTR, int, LPSIZE); int GetTextFaceA(HDC, int, LPSTR); int GetTextFaceW(HDC, int, LPWSTR); BOOL GetTextMetricsA(HDC, LPTEXTMETRICA); BOOL GetTextMetricsW(HDC, LPTEXTMETRICW); BOOL GetViewportExtEx(HDC, LPSIZE); BOOL GetViewportOrgEx(HDC, LPPOINT); BOOL GetWindowExtEx(HDC, LPSIZE); BOOL GetWindowOrgEx(HDC, LPPOINT); UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); BOOL GetWorldTransform(HDC, LPXFORM); int IntersectClipRect(HDC, int, int, int, int); BOOL InvertRgn(HDC, HRGN); BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); BOOL LineTo(HDC, int, int); BOOL LPtoDP(HDC, LPPOINT, int); BOOL MaskBlt(HDC, int, int, int, int, HDC, int, int, HBITMAP, int, int, DWORD); BOOL ModifyWorldTransform(HDC, const(XFORM)*, DWORD); BOOL MoveToEx(HDC, int, int, LPPOINT); int OffsetClipRgn(HDC, int, int); int OffsetRgn(HRGN, int, int); BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT); BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT); BOOL PaintRgn(HDC, HRGN); BOOL PatBlt(HDC, int, int, int, int, DWORD); HRGN PathToRegion(HDC); BOOL Pie(HDC, int, int, int, int, int, int, int, int); BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, LPCRECT); BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, const(ENHMETARECORD)*, UINT); BOOL PlayMetaFile(HDC, HMETAFILE); BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); BOOL PlgBlt(HDC, const(POINT)*, HDC, int, int, int, int, HBITMAP, int, int); BOOL PolyBezier(HDC, const(POINT)*, DWORD); BOOL PolyBezierTo(HDC, const(POINT)*, DWORD); BOOL PolyDraw(HDC, const(POINT)*, const(BYTE)*, int); BOOL Polygon(HDC, const(POINT)*, int); BOOL Polyline(HDC, const(POINT)*, int); BOOL PolylineTo(HDC, const(POINT)*, DWORD); BOOL PolyPolygon(HDC, const(POINT)*, const(INT)*, int); BOOL PolyPolyline(HDC, const(POINT)*, const(DWORD)*, DWORD); BOOL PolyTextOutA(HDC, const(POLYTEXTA)*, int); BOOL PolyTextOutW(HDC, const(POLYTEXTW)*, int); BOOL PtInRegion(HRGN, int, int); BOOL PtVisible(HDC, int, int); UINT RealizePalette(HDC); BOOL Rectangle(HDC, int, int, int, int); BOOL RectInRegion(HRGN, LPCRECT); BOOL RectVisible(HDC, LPCRECT); BOOL RemoveFontResourceA(LPCSTR); BOOL RemoveFontResourceW(LPCWSTR); HDC ResetDCA(HDC, const(DEVMODEA)*); HDC ResetDCW(HDC, const(DEVMODEW)*); BOOL ResizePalette(HPALETTE, UINT); BOOL RestoreDC(HDC, int); BOOL RoundRect(HDC, int, int, int, int, int, int); int SaveDC(HDC); BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); BOOL SelectClipPath(HDC, int); int SelectClipRgn(HDC, HRGN); HGDIOBJ SelectObject(HDC, HGDIOBJ); HPALETTE SelectPalette(HDC, HPALETTE, BOOL); int SetAbortProc(HDC, ABORTPROC); int SetArcDirection(HDC, int); LONG SetBitmapBits(HBITMAP, DWORD, PCVOID); BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); COLORREF SetBkColor(HDC, COLORREF); int SetBkMode(HDC, int); UINT SetBoundsRect(HDC, LPCRECT, UINT); BOOL SetBrushOrgEx(HDC, int, int, LPPOINT); BOOL SetColorAdjustment(HDC, const(COLORADJUSTMENT)*); BOOL SetColorSpace(HDC, HCOLORSPACE); BOOL SetDeviceGammaRamp(HDC, PVOID); UINT SetDIBColorTable(HDC, UINT, UINT, const(RGBQUAD)*); int SetDIBits(HDC, HBITMAP, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); HENHMETAFILE SetEnhMetaFileBits(UINT, const(BYTE)*); int SetGraphicsMode(HDC, int); int SetICMMode(HDC, int); BOOL SetICMProfileA(HDC, LPSTR); BOOL SetICMProfileW(HDC, LPWSTR); int SetMapMode(HDC, int); static if (_WIN32_WINNT >= 0x500) { DWORD SetLayout(HDC hdc, DWORD l); DWORD GetLayout(HDC hdc); } DWORD SetMapperFlags(HDC, DWORD); HMETAFILE SetMetaFileBitsEx(UINT, const(BYTE)*); int SetMetaRgn(HDC); BOOL SetMiterLimit(HDC, FLOAT, PFLOAT); UINT SetPaletteEntries(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); COLORREF SetPixel(HDC, int, int, COLORREF); BOOL SetPixelFormat(HDC, int, const(PIXELFORMATDESCRIPTOR)*); BOOL SetPixelV(HDC, int, int, COLORREF); int SetPolyFillMode(HDC, int); BOOL SetRectRgn(HRGN, int, int, int, int); int SetROP2(HDC, int); int SetStretchBltMode(HDC, int); UINT SetSystemPaletteUse(HDC, UINT); UINT SetTextAlign(HDC, UINT); int SetTextCharacterExtra(HDC, int); COLORREF SetTextColor(HDC, COLORREF); BOOL SetTextJustification(HDC, int, int); BOOL SetViewportExtEx(HDC, int, int, LPSIZE); BOOL SetViewportOrgEx(HDC, int, int, LPPOINT); BOOL SetWindowExtEx(HDC, int, int, LPSIZE); BOOL SetWindowOrgEx(HDC, int, int, LPPOINT); HENHMETAFILE SetWinMetaFileBits(UINT, const(BYTE)*, HDC, const(METAFILEPICT)*); BOOL SetWorldTransform(HDC, const(XFORM)*); int StartDocA(HDC, const(DOCINFOA)*); int StartDocW(HDC, const(DOCINFOW)*); int StartPage(HDC); BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); int StretchDIBits(HDC, int, int, int, int, int, int, int, int, const(VOID)* , const(BITMAPINFO)* , UINT, DWORD); BOOL StrokeAndFillPath(HDC); BOOL StrokePath(HDC); BOOL SwapBuffers(HDC); BOOL TextOutA(HDC, int, int, LPCSTR, int); BOOL TextOutW(HDC, int, int, LPCWSTR, int); BOOL TranslateCharsetInfo(PDWORD, LPCHARSETINFO, DWORD); BOOL UnrealizeObject(HGDIOBJ); BOOL UpdateColors(HDC); BOOL UpdateICMRegKeyA(DWORD, DWORD, LPSTR, UINT); BOOL UpdateICMRegKeyW(DWORD, DWORD, LPWSTR, UINT); BOOL WidenPath(HDC); BOOL wglCopyContext(HGLRC, HGLRC, UINT); HGLRC wglCreateContext(HDC); HGLRC wglCreateLayerContext(HDC, int); BOOL wglDeleteContext(HGLRC); BOOL wglDescribeLayerPlane(HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR); HGLRC wglGetCurrentContext(); HDC wglGetCurrentDC(); int wglGetLayerPaletteEntries(HDC, int, int, int, COLORREF*); PROC wglGetProcAddress(LPCSTR); BOOL wglMakeCurrent(HDC, HGLRC); BOOL wglRealizeLayerPalette(HDC, int, BOOL); int wglSetLayerPaletteEntries(HDC, int, int, int, const(COLORREF)*); BOOL wglShareLists(HGLRC, HGLRC); BOOL wglSwapLayerBuffers(HDC, UINT); BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD); BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD); BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); static if (_WIN32_WINNT >= 0x500) { alias WGLSWAP* PWGLSWAP; struct WGLSWAP { HDC hdc; UINT uiFlags; } const WGL_SWAPMULTIPLE_MAX = 16; DWORD wglSwapMultipleBuffers(UINT, WGLSWAP*); } static if (_WIN32_WINNT >= 0x500) { BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG); BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT); } static if (_WIN32_WINNT >= 0x500) { COLORREF SetDCBrushColor(HDC, COLORREF); COLORREF SetDCPenColor(HDC, COLORREF); HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD*); int AddFontResourceExA(LPCSTR, DWORD, PVOID); int AddFontResourceExW(LPCWSTR, DWORD, PVOID); BOOL RemoveFontMemResourceEx(HANDLE); BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID); BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET); DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD); DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD); BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE); BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE); BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT); BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC); } } // extern (Windows) version(Unicode) { alias WCHAR BCHAR; alias DOCINFOW DOCINFO; alias LOGFONTW LOGFONT; alias TEXTMETRICW TEXTMETRIC; alias NPTEXTMETRICW NPTEXTMETRIC; alias ICMENUMPROCW ICMENUMPROC; alias FONTENUMPROCW FONTENUMPROC; alias DEVMODEW DEVMODE; alias EXTLOGFONTW EXTLOGFONT; alias GCP_RESULTSW GCP_RESULTS; alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC; alias POLYTEXTW POLYTEXT; alias LOGCOLORSPACEW LOGCOLORSPACE; alias NEWTEXTMETRICW NEWTEXTMETRIC; alias NEWTEXTMETRICEXW NEWTEXTMETRICEX; alias ENUMLOGFONTW ENUMLOGFONT; alias ENUMLOGFONTEXW ENUMLOGFONTEX; alias DISPLAY_DEVICEW DISPLAY_DEVICE; alias AddFontResourceW AddFontResource; alias CopyEnhMetaFileW CopyEnhMetaFile; alias CopyMetaFileW CopyMetaFile; alias CreateColorSpaceW CreateColorSpace; alias CreateDCW CreateDC; alias CreateEnhMetaFileW CreateEnhMetaFile; alias CreateFontW CreateFont; alias CreateFontIndirectW CreateFontIndirect; alias CreateICW CreateIC; alias CreateMetaFileW CreateMetaFile; alias CreateScalableFontResourceW CreateScalableFontResource; alias DeviceCapabilitiesW DeviceCapabilities; alias EnumFontFamiliesW EnumFontFamilies; alias EnumFontFamiliesExW EnumFontFamiliesEx; alias EnumFontsW EnumFonts; alias EnumICMProfilesW EnumICMProfiles; alias ExtTextOutW ExtTextOut; alias GetCharABCWidthsFloatW GetCharABCWidthsFloat; alias GetCharABCWidthsW GetCharABCWidths; alias GetCharacterPlacementW GetCharacterPlacement; alias GetCharWidth32W GetCharWidth32; alias GetCharWidthFloatW GetCharWidthFloat; alias GetCharWidthW GetCharWidth; alias GetEnhMetaFileW GetEnhMetaFile; alias GetEnhMetaFileDescriptionW GetEnhMetaFileDescription; alias GetGlyphOutlineW GetGlyphOutline; alias GetICMProfileW GetICMProfile; alias GetKerningPairsW GetKerningPairs; alias GetLogColorSpaceW GetLogColorSpace; alias GetMetaFileW GetMetaFile; alias GetObjectW GetObject; alias GetOutlineTextMetricsW GetOutlineTextMetrics; alias GetTextExtentPointW GetTextExtentPoint; alias GetTextExtentExPointW GetTextExtentExPoint; alias GetTextExtentPoint32W GetTextExtentPoint32; alias GetTextFaceW GetTextFace; alias GetTextMetricsW GetTextMetrics; alias PolyTextOutW PolyTextOut; alias RemoveFontResourceW RemoveFontResource; alias ResetDCW ResetDC; alias SetICMProfileW SetICMProfile; alias StartDocW StartDoc; alias TextOutW TextOut; alias UpdateICMRegKeyW UpdateICMRegKey; alias wglUseFontBitmapsW wglUseFontBitmaps; alias wglUseFontOutlinesW wglUseFontOutlines; static if (_WIN32_WINNT >= 0x500) { alias ENUMLOGFONTEXDVW ENUMLOGFONTEXDV; alias PENUMLOGFONTEXDVW PENUMLOGFONTEXDV; alias LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV; alias AddFontResourceExW AddFontResourceEx; alias RemoveFontResourceExW RemoveFontResourceEx; alias GetGlyphIndicesW GetGlyphIndices; } } else { /* non-unicode build */ alias BYTE BCHAR; alias DOCINFOA DOCINFO; alias LOGFONTA LOGFONT; alias TEXTMETRICA TEXTMETRIC; alias NPTEXTMETRICA NPTEXTMETRIC; alias ICMENUMPROCA ICMENUMPROC; alias FONTENUMPROCA FONTENUMPROC; alias DEVMODEA DEVMODE; alias EXTLOGFONTA EXTLOGFONT; alias GCP_RESULTSA GCP_RESULTS; alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC; alias POLYTEXTA POLYTEXT; alias LOGCOLORSPACEA LOGCOLORSPACE; alias NEWTEXTMETRICA NEWTEXTMETRIC; alias NEWTEXTMETRICEXA NEWTEXTMETRICEX; alias ENUMLOGFONTA ENUMLOGFONT; alias ENUMLOGFONTEXA ENUMLOGFONTEX; alias DISPLAY_DEVICEA DISPLAY_DEVICE; alias AddFontResourceA AddFontResource; alias CopyEnhMetaFileA CopyEnhMetaFile; alias CopyMetaFileA CopyMetaFile; alias CreateColorSpaceA CreateColorSpace; alias CreateDCA CreateDC; alias CreateEnhMetaFileA CreateEnhMetaFile; alias CreateFontA CreateFont; alias CreateFontIndirectA CreateFontIndirect; alias CreateICA CreateIC; alias CreateMetaFileA CreateMetaFile; alias CreateScalableFontResourceA CreateScalableFontResource; alias DeviceCapabilitiesA DeviceCapabilities; alias EnumFontFamiliesA EnumFontFamilies; alias EnumFontFamiliesExA EnumFontFamiliesEx; alias EnumFontsA EnumFonts; alias EnumICMProfilesA EnumICMProfiles; alias ExtTextOutA ExtTextOut; alias GetCharWidthFloatA GetCharWidthFloat; alias GetCharWidthA GetCharWidth; alias GetCharacterPlacementA GetCharacterPlacement; alias GetCharABCWidthsA GetCharABCWidths; alias GetCharABCWidthsFloatA GetCharABCWidthsFloat; alias GetCharWidth32A GetCharWidth32; alias GetEnhMetaFileA GetEnhMetaFile; alias GetEnhMetaFileDescriptionA GetEnhMetaFileDescription; alias GetGlyphOutlineA GetGlyphOutline; alias GetICMProfileA GetICMProfile; alias GetKerningPairsA GetKerningPairs; alias GetLogColorSpaceA GetLogColorSpace; alias GetMetaFileA GetMetaFile; alias GetObjectA GetObject; alias GetOutlineTextMetricsA GetOutlineTextMetrics; alias GetTextExtentPointA GetTextExtentPoint; alias GetTextExtentExPointA GetTextExtentExPoint; alias GetTextExtentPoint32A GetTextExtentPoint32; alias GetTextFaceA GetTextFace; alias GetTextMetricsA GetTextMetrics; alias PolyTextOutA PolyTextOut; alias RemoveFontResourceA RemoveFontResource; alias ResetDCA ResetDC; alias SetICMProfileA SetICMProfile; alias StartDocA StartDoc; alias TextOutA TextOut; alias UpdateICMRegKeyA UpdateICMRegKey; alias wglUseFontBitmapsA wglUseFontBitmaps; alias wglUseFontOutlinesA wglUseFontOutlines; static if (_WIN32_WINNT >= 0x500) { alias ENUMLOGFONTEXDVA ENUMLOGFONTEXDV; alias PENUMLOGFONTEXDVA PENUMLOGFONTEXDV; alias LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV; alias AddFontResourceExA AddFontResourceEx; alias RemoveFontResourceExA RemoveFontResourceEx; alias GetGlyphIndicesA GetGlyphIndices; } } // Common to both ASCII & UNICODE alias DOCINFO* LPDOCINFO; alias LOGFONT* PLOGFONT, NPLOGFONT, LPLOGFONT; alias TEXTMETRIC* PTEXTMETRIC, LPTEXTMETRIC; alias DEVMODE* PDEVMODE, NPDEVMODE, LPDEVMODE; alias EXTLOGFONT* PEXTLOGFONT, NPEXTLOGFONT, LPEXTLOGFONT; alias GCP_RESULTS* LPGCP_RESULTS; alias OUTLINETEXTMETRIC* POUTLINETEXTMETRIC, NPOUTLINETEXTMETRIC, LPOUTLINETEXTMETRIC; alias POLYTEXT* PPOLYTEXT, NPPOLYTEXT, LPPOLYTEXT; alias LOGCOLORSPACE* LPLOGCOLORSPACE; alias NEWTEXTMETRIC* PNEWTEXTMETRIC, NPNEWTEXTMETRIC, LPNEWTEXTMETRIC; alias ENUMLOGFONT* LPENUMLOGFONT; alias ENUMLOGFONTEX* LPENUMLOGFONTEX; alias DISPLAY_DEVICE* PDISPLAY_DEVICE, LPDISPLAY_DEVICE;