Artifact Content

Not logged in

Artifact 5b4303f052c35c45d82b2f0fc75e08f2c1bd5de6


     1  module win32.ansi.wingdi;
     2  
     3  // Translated from Microsoft Platform SDK August 2001 Edition
     4  // by Y.Tomino (demoonlit@inter7.jp)
     5  
     6  import win32.ansi.windef;
     7  
     8  // #ifndef _WINGDI_
     9  // #define _WINGDI_
    10  
    11  // #ifdef _MAC
    12  // #...
    13  // #endif
    14  
    15  // #if !defined(_GDI32_)
    16  // #define WINGDIAPI DECLSPEC_IMPORT
    17  // #else
    18  // #...
    19  // #endif
    20  
    21  // #if !defined(_SPOOL32_)
    22  // #define WINSPOOLAPI DECLSPEC_IMPORT
    23  // #else
    24  // #...
    25  // #endif
    26  
    27  // #ifdef __cplusplus
    28  // extern "C" {
    29  // #endif
    30  
    31  // #ifndef WINVER
    32  // #...
    33  // #endif /* WINVER */
    34  
    35  // #ifndef NOGDI
    36  
    37  // #ifndef NORASTEROPS
    38  
    39  enum : uint { R2_BLACK = 1 }
    40  enum : uint { R2_NOTMERGEPEN = 2 }
    41  enum : uint { R2_MASKNOTPEN = 3 }
    42  enum : uint { R2_NOTCOPYPEN = 4 }
    43  enum : uint { R2_MASKPENNOT = 5 }
    44  enum : uint { R2_NOT = 6 }
    45  enum : uint { R2_XORPEN = 7 }
    46  enum : uint { R2_NOTMASKPEN = 8 }
    47  enum : uint { R2_MASKPEN = 9 }
    48  enum : uint { R2_NOTXORPEN = 10 }
    49  enum : uint { R2_NOP = 11 }
    50  enum : uint { R2_MERGENOTPEN = 12 }
    51  enum : uint { R2_COPYPEN = 13 }
    52  enum : uint { R2_MERGEPENNOT = 14 }
    53  enum : uint { R2_MERGEPEN = 15 }
    54  enum : uint { R2_WHITE = 16 }
    55  enum : uint { R2_LAST = 16 }
    56  
    57  enum : DWORD { SRCCOPY = 0x00CC0020 }
    58  enum : DWORD { SRCPAINT = 0x00EE0086 }
    59  enum : DWORD { SRCAND = 0x008800C6 }
    60  enum : DWORD { SRCINVERT = 0x00660046 }
    61  enum : DWORD { SRCERASE = 0x00440328 }
    62  enum : DWORD { NOTSRCCOPY = 0x00330008 }
    63  enum : DWORD { NOTSRCERASE = 0x001100A6 }
    64  enum : DWORD { MERGECOPY = 0x00C000CA }
    65  enum : DWORD { MERGEPAINT = 0x00BB0226 }
    66  enum : DWORD { PATCOPY = 0x00F00021 }
    67  enum : DWORD { PATPAINT = 0x00FB0A09 }
    68  enum : DWORD { PATINVERT = 0x005A0049 }
    69  enum : DWORD { DSTINVERT = 0x00550009 }
    70  enum : DWORD { BLACKNESS = 0x00000042 }
    71  enum : DWORD { WHITENESS = 0x00FF0062 }
    72  // #if(WINVER >= 0x0500)
    73  
    74  enum : DWORD { NOMIRRORBITMAP = 0x80000000 }
    75  enum : DWORD { CAPTUREBLT = 0x40000000 }
    76  // #endif /* WINVER >= 0x0500 */
    77  
    78  DWORD MAKEROP4(DWORD fore, DWORD back){ return ((back << 8) & 0xFF000000) | fore; }
    79  
    80  // #endif /* NORASTEROPS */
    81  
    82  enum : uint { GDI_ERROR = 0xFFFFFFFF }
    83  const HANDLE HGDI_ERROR = cast(HANDLE)(0xFFFFFFFFL);
    84  
    85  enum : uint { ERROR = 0 }
    86  enum : uint { NULLREGION = 1 }
    87  enum : uint { SIMPLEREGION = 2 }
    88  enum : uint { COMPLEXREGION = 3 }
    89  alias ERROR RGN_ERROR;
    90  
    91  enum : uint { RGN_AND = 1 }
    92  enum : uint { RGN_OR = 2 }
    93  enum : uint { RGN_XOR = 3 }
    94  enum : uint { RGN_DIFF = 4 }
    95  enum : uint { RGN_COPY = 5 }
    96  alias RGN_AND RGN_MIN;
    97  alias RGN_COPY RGN_MAX;
    98  
    99  enum : uint { BLACKONWHITE = 1 }
   100  enum : uint { WHITEONBLACK = 2 }
   101  enum : uint { COLORONCOLOR = 3 }
   102  enum : uint { HALFTONE = 4 }
   103  enum : uint { MAXSTRETCHBLTMODE = 4 }
   104  
   105  // #if(WINVER >= 0x0400)
   106  
   107  alias BLACKONWHITE STRETCH_ANDSCANS;
   108  alias WHITEONBLACK STRETCH_ORSCANS;
   109  alias COLORONCOLOR STRETCH_DELETESCANS;
   110  alias HALFTONE STRETCH_HALFTONE;
   111  // #endif /* WINVER >= 0x0400 */
   112  
   113  enum : uint { ALTERNATE = 1 }
   114  enum : uint { WINDING = 2 }
   115  enum : uint { POLYFILL_LAST = 2 }
   116  
   117  // #if(WINVER >= 0x0500)
   118  enum : uint { LAYOUT_RTL = 0x00000001 }
   119  enum : uint { LAYOUT_BTT = 0x00000002 }
   120  enum : uint { LAYOUT_VBH = 0x00000004 }
   121  enum : uint { LAYOUT_ORIENTATIONMASK = LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH }
   122  enum : uint { LAYOUT_BITMAPORIENTATIONPRESERVED = 0x00000008 }
   123  // #endif /* WINVER >= 0x0500 */
   124  
   125  enum : uint { TA_NOUPDATECP = 0 }
   126  enum : uint { TA_UPDATECP = 1 }
   127  
   128  enum : uint { TA_LEFT = 0 }
   129  enum : uint { TA_RIGHT = 2 }
   130  enum : uint { TA_CENTER = 6 }
   131  
   132  enum : uint { TA_TOP = 0 }
   133  enum : uint { TA_BOTTOM = 8 }
   134  enum : uint { TA_BASELINE = 24 }
   135  // #if (WINVER >= 0x0400)
   136  enum : uint { TA_RTLREADING = 256 }
   137  enum : uint { TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING }
   138  // #else
   139  // #...
   140  // #endif
   141  
   142  alias TA_BASELINE VTA_BASELINE;
   143  alias TA_BOTTOM VTA_LEFT;
   144  alias TA_TOP VTA_RIGHT;
   145  alias TA_CENTER VTA_CENTER;
   146  alias TA_RIGHT VTA_BOTTOM;
   147  alias TA_LEFT VTA_TOP;
   148  
   149  enum : uint { ETO_OPAQUE = 0x0002 }
   150  enum : uint { ETO_CLIPPED = 0x0004 }
   151  // #if(WINVER >= 0x0400)
   152  enum : uint { ETO_GLYPH_INDEX = 0x0010 }
   153  enum : uint { ETO_RTLREADING = 0x0080 }
   154  enum : uint { ETO_NUMERICSLOCAL = 0x0400 }
   155  enum : uint { ETO_NUMERICSLATIN = 0x0800 }
   156  enum : uint { ETO_IGNORELANGUAGE = 0x1000 }
   157  // #endif /* WINVER >= 0x0400 */
   158  // #if (_WIN32_WINNT >= 0x0500)
   159  enum : uint { ETO_PDY = 0x2000 }
   160  // #endif // (_WIN32_WINNT >= 0x0500)
   161  
   162  enum : uint { ASPECT_FILTERING = 0x0001 }
   163  
   164  enum : uint { DCB_RESET = 0x0001 }
   165  enum : uint { DCB_ACCUMULATE = 0x0002 }
   166  alias DCB_ACCUMULATE DCB_DIRTY;
   167  enum : uint { DCB_SET = DCB_RESET | DCB_ACCUMULATE }
   168  enum : uint { DCB_ENABLE = 0x0004 }
   169  enum : uint { DCB_DISABLE = 0x0008 }
   170  
   171  // #ifndef NOMETAFILE
   172  
   173  enum : uint { META_SETBKCOLOR = 0x0201 }
   174  enum : uint { META_SETBKMODE = 0x0102 }
   175  enum : uint { META_SETMAPMODE = 0x0103 }
   176  enum : uint { META_SETROP2 = 0x0104 }
   177  enum : uint { META_SETRELABS = 0x0105 }
   178  enum : uint { META_SETPOLYFILLMODE = 0x0106 }
   179  enum : uint { META_SETSTRETCHBLTMODE = 0x0107 }
   180  enum : uint { META_SETTEXTCHAREXTRA = 0x0108 }
   181  enum : uint { META_SETTEXTCOLOR = 0x0209 }
   182  enum : uint { META_SETTEXTJUSTIFICATION = 0x020A }
   183  enum : uint { META_SETWINDOWORG = 0x020B }
   184  enum : uint { META_SETWINDOWEXT = 0x020C }
   185  enum : uint { META_SETVIEWPORTORG = 0x020D }
   186  enum : uint { META_SETVIEWPORTEXT = 0x020E }
   187  enum : uint { META_OFFSETWINDOWORG = 0x020F }
   188  enum : uint { META_SCALEWINDOWEXT = 0x0410 }
   189  enum : uint { META_OFFSETVIEWPORTORG = 0x0211 }
   190  enum : uint { META_SCALEVIEWPORTEXT = 0x0412 }
   191  enum : uint { META_LINETO = 0x0213 }
   192  enum : uint { META_MOVETO = 0x0214 }
   193  enum : uint { META_EXCLUDECLIPRECT = 0x0415 }
   194  enum : uint { META_INTERSECTCLIPRECT = 0x0416 }
   195  enum : uint { META_ARC = 0x0817 }
   196  enum : uint { META_ELLIPSE = 0x0418 }
   197  enum : uint { META_FLOODFILL = 0x0419 }
   198  enum : uint { META_PIE = 0x081A }
   199  enum : uint { META_RECTANGLE = 0x041B }
   200  enum : uint { META_ROUNDRECT = 0x061C }
   201  enum : uint { META_PATBLT = 0x061D }
   202  enum : uint { META_SAVEDC = 0x001E }
   203  enum : uint { META_SETPIXEL = 0x041F }
   204  enum : uint { META_OFFSETCLIPRGN = 0x0220 }
   205  enum : uint { META_TEXTOUT = 0x0521 }
   206  enum : uint { META_BITBLT = 0x0922 }
   207  enum : uint { META_STRETCHBLT = 0x0B23 }
   208  enum : uint { META_POLYGON = 0x0324 }
   209  enum : uint { META_POLYLINE = 0x0325 }
   210  enum : uint { META_ESCAPE = 0x0626 }
   211  enum : uint { META_RESTOREDC = 0x0127 }
   212  enum : uint { META_FILLREGION = 0x0228 }
   213  enum : uint { META_FRAMEREGION = 0x0429 }
   214  enum : uint { META_INVERTREGION = 0x012A }
   215  enum : uint { META_PAINTREGION = 0x012B }
   216  enum : uint { META_SELECTCLIPREGION = 0x012C }
   217  enum : uint { META_SELECTOBJECT = 0x012D }
   218  enum : uint { META_SETTEXTALIGN = 0x012E }
   219  enum : uint { META_CHORD = 0x0830 }
   220  enum : uint { META_SETMAPPERFLAGS = 0x0231 }
   221  enum : uint { META_EXTTEXTOUT = 0x0a32 }
   222  enum : uint { META_SETDIBTODEV = 0x0d33 }
   223  enum : uint { META_SELECTPALETTE = 0x0234 }
   224  enum : uint { META_REALIZEPALETTE = 0x0035 }
   225  enum : uint { META_ANIMATEPALETTE = 0x0436 }
   226  enum : uint { META_SETPALENTRIES = 0x0037 }
   227  enum : uint { META_POLYPOLYGON = 0x0538 }
   228  enum : uint { META_RESIZEPALETTE = 0x0139 }
   229  enum : uint { META_DIBBITBLT = 0x0940 }
   230  enum : uint { META_DIBSTRETCHBLT = 0x0b41 }
   231  enum : uint { META_DIBCREATEPATTERNBRUSH = 0x0142 }
   232  enum : uint { META_STRETCHDIB = 0x0f43 }
   233  enum : uint { META_EXTFLOODFILL = 0x0548 }
   234  // #if(WINVER >= 0x0500)
   235  enum : uint { META_SETLAYOUT = 0x0149 }
   236  // #endif /* WINVER >= 0x0500 */
   237  enum : uint { META_DELETEOBJECT = 0x01f0 }
   238  enum : uint { META_CREATEPALETTE = 0x00f7 }
   239  enum : uint { META_CREATEPATTERNBRUSH = 0x01F9 }
   240  enum : uint { META_CREATEPENINDIRECT = 0x02FA }
   241  enum : uint { META_CREATEFONTINDIRECT = 0x02FB }
   242  enum : uint { META_CREATEBRUSHINDIRECT = 0x02FC }
   243  enum : uint { META_CREATEREGION = 0x06FF }
   244  
   245  // #if(WINVER >= 0x0400)
   246  struct _DRAWPATRECT {
   247    POINT ptPosition;
   248    POINT ptSize;
   249    WORD wStyle;
   250    WORD wPattern;
   251  }
   252  alias _DRAWPATRECT DRAWPATRECT;
   253  alias _DRAWPATRECT* PDRAWPATRECT;
   254  
   255  // #endif /* WINVER >= 0x0400 */
   256  
   257  // #endif /* NOMETAFILE */
   258  
   259  enum : uint { NEWFRAME = 1 }
   260  enum : uint { ABORTDOC = 2 }
   261  enum : uint { NEXTBAND = 3 }
   262  enum : uint { SETCOLORTABLE = 4 }
   263  enum : uint { GETCOLORTABLE = 5 }
   264  enum : uint { FLUSHOUTPUT = 6 }
   265  enum : uint { DRAFTMODE = 7 }
   266  enum : uint { QUERYESCSUPPORT = 8 }
   267  enum : uint { SETABORTPROC = 9 }
   268  enum : uint { STARTDOC = 10 }
   269  enum : uint { ENDDOC = 11 }
   270  enum : uint { GETPHYSPAGESIZE = 12 }
   271  enum : uint { GETPRINTINGOFFSET = 13 }
   272  enum : uint { GETSCALINGFACTOR = 14 }
   273  enum : uint { MFCOMMENT = 15 }
   274  enum : uint { GETPENWIDTH = 16 }
   275  enum : uint { SETCOPYCOUNT = 17 }
   276  enum : uint { SELECTPAPERSOURCE = 18 }
   277  enum : uint { DEVICEDATA = 19 }
   278  enum : uint { PASSTHROUGH = 19 }
   279  enum : uint { GETTECHNOLGY = 20 }
   280  enum : uint { GETTECHNOLOGY = 20 }
   281  enum : uint { SETLINECAP = 21 }
   282  enum : uint { SETLINEJOIN = 22 }
   283  enum : uint { SETMITERLIMIT = 23 }
   284  enum : uint { BANDINFO = 24 }
   285  enum : uint { DRAWPATTERNRECT = 25 }
   286  enum : uint { GETVECTORPENSIZE = 26 }
   287  enum : uint { GETVECTORBRUSHSIZE = 27 }
   288  enum : uint { ENABLEDUPLEX = 28 }
   289  enum : uint { GETSETPAPERBINS = 29 }
   290  enum : uint { GETSETPRINTORIENT = 30 }
   291  enum : uint { ENUMPAPERBINS = 31 }
   292  enum : uint { SETDIBSCALING = 32 }
   293  enum : uint { EPSPRINTING = 33 }
   294  enum : uint { ENUMPAPERMETRICS = 34 }
   295  enum : uint { GETSETPAPERMETRICS = 35 }
   296  enum : uint { POSTSCRIPT_DATA = 37 }
   297  enum : uint { POSTSCRIPT_IGNORE = 38 }
   298  enum : uint { MOUSETRAILS = 39 }
   299  enum : uint { GETDEVICEUNITS = 42 }
   300  
   301  enum : uint { GETEXTENDEDTEXTMETRICS = 256 }
   302  enum : uint { GETEXTENTTABLE = 257 }
   303  enum : uint { GETPAIRKERNTABLE = 258 }
   304  enum : uint { GETTRACKKERNTABLE = 259 }
   305  enum : uint { EXTTEXTOUT = 512 }
   306  enum : uint { GETFACENAME = 513 }
   307  enum : uint { DOWNLOADFACE = 514 }
   308  enum : uint { ENABLERELATIVEWIDTHS = 768 }
   309  enum : uint { ENABLEPAIRKERNING = 769 }
   310  enum : uint { SETKERNTRACK = 770 }
   311  enum : uint { SETALLJUSTVALUES = 771 }
   312  enum : uint { SETCHARSET = 772 }
   313  
   314  enum : uint { STRETCHBLT = 2048 }
   315  enum : uint { METAFILE_DRIVER = 2049 }
   316  enum : uint { GETSETSCREENPARAMS = 3072 }
   317  enum : uint { QUERYDIBSUPPORT = 3073 }
   318  enum : uint { BEGIN_PATH = 4096 }
   319  enum : uint { CLIP_TO_PATH = 4097 }
   320  enum : uint { END_PATH = 4098 }
   321  enum : uint { EXT_DEVICE_CAPS = 4099 }
   322  enum : uint { RESTORE_CTM = 4100 }
   323  enum : uint { SAVE_CTM = 4101 }
   324  enum : uint { SET_ARC_DIRECTION = 4102 }
   325  enum : uint { SET_BACKGROUND_COLOR = 4103 }
   326  enum : uint { SET_POLY_MODE = 4104 }
   327  enum : uint { SET_SCREEN_ANGLE = 4105 }
   328  enum : uint { SET_SPREAD = 4106 }
   329  enum : uint { TRANSFORM_CTM = 4107 }
   330  enum : uint { SET_CLIP_BOX = 4108 }
   331  enum : uint { SET_BOUNDS = 4109 }
   332  enum : uint { SET_MIRROR_MODE = 4110 }
   333  enum : uint { OPENCHANNEL = 4110 }
   334  enum : uint { DOWNLOADHEADER = 4111 }
   335  enum : uint { CLOSECHANNEL = 4112 }
   336  enum : uint { POSTSCRIPT_PASSTHROUGH = 4115 }
   337  enum : uint { ENCAPSULATED_POSTSCRIPT = 4116 }
   338  
   339  enum : uint { POSTSCRIPT_IDENTIFY = 4117 }
   340  enum : uint { POSTSCRIPT_INJECTION = 4118 }
   341  
   342  enum : uint { CHECKJPEGFORMAT = 4119 }
   343  enum : uint { CHECKPNGFORMAT = 4120 }
   344  
   345  enum : uint { GET_PS_FEATURESETTING = 4121 }
   346  
   347  enum : uint { SPCLPASSTHROUGH2 = 4568 }
   348  
   349  enum : uint { PSIDENT_GDICENTRIC = 0 }
   350  enum : uint { PSIDENT_PSCENTRIC = 1 }
   351  
   352  struct _PSINJECTDATA {
   353  
   354    DWORD DataBytes;
   355    WORD InjectionPoint;
   356    WORD PageNumber;
   357  
   358  }
   359  alias _PSINJECTDATA PSINJECTDATA;
   360  alias _PSINJECTDATA* PPSINJECTDATA;
   361  
   362  enum : uint { PSINJECT_BEGINSTREAM = 1 }
   363  enum : uint { PSINJECT_PSADOBE = 2 }
   364  enum : uint { PSINJECT_PAGESATEND = 3 }
   365  enum : uint { PSINJECT_PAGES = 4 }
   366  
   367  enum : uint { PSINJECT_DOCNEEDEDRES = 5 }
   368  enum : uint { PSINJECT_DOCSUPPLIEDRES = 6 }
   369  enum : uint { PSINJECT_PAGEORDER = 7 }
   370  enum : uint { PSINJECT_ORIENTATION = 8 }
   371  enum : uint { PSINJECT_BOUNDINGBOX = 9 }
   372  enum : uint { PSINJECT_DOCUMENTPROCESSCOLORS = 10 }
   373  
   374  enum : uint { PSINJECT_COMMENTS = 11 }
   375  enum : uint { PSINJECT_BEGINDEFAULTS = 12 }
   376  enum : uint { PSINJECT_ENDDEFAULTS = 13 }
   377  enum : uint { PSINJECT_BEGINPROLOG = 14 }
   378  enum : uint { PSINJECT_ENDPROLOG = 15 }
   379  enum : uint { PSINJECT_BEGINSETUP = 16 }
   380  enum : uint { PSINJECT_ENDSETUP = 17 }
   381  enum : uint { PSINJECT_TRAILER = 18 }
   382  enum : uint { PSINJECT_EOF = 19 }
   383  enum : uint { PSINJECT_ENDSTREAM = 20 }
   384  enum : uint { PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21 }
   385  
   386  enum : uint { PSINJECT_PAGENUMBER = 100 }
   387  enum : uint { PSINJECT_BEGINPAGESETUP = 101 }
   388  enum : uint { PSINJECT_ENDPAGESETUP = 102 }
   389  enum : uint { PSINJECT_PAGETRAILER = 103 }
   390  enum : uint { PSINJECT_PLATECOLOR = 104 }
   391  
   392  enum : uint { PSINJECT_SHOWPAGE = 105 }
   393  enum : uint { PSINJECT_PAGEBBOX = 106 }
   394  enum : uint { PSINJECT_ENDPAGECOMMENTS = 107 }
   395  
   396  enum : uint { PSINJECT_VMSAVE = 200 }
   397  enum : uint { PSINJECT_VMRESTORE = 201 }
   398  
   399  enum : uint { FEATURESETTING_NUP = 0 }
   400  enum : uint { FEATURESETTING_OUTPUT = 1 }
   401  enum : uint { FEATURESETTING_PSLEVEL = 2 }
   402  enum : uint { FEATURESETTING_CUSTPAPER = 3 }
   403  enum : uint { FEATURESETTING_MIRROR = 4 }
   404  enum : uint { FEATURESETTING_NEGATIVE = 5 }
   405  enum : uint { FEATURESETTING_PROTOCOL = 6 }
   406  
   407  enum : uint { FEATURESETTING_PRIVATE_BEGIN = 0x1000 }
   408  enum : uint { FEATURESETTING_PRIVATE_END = 0x1FFF }
   409  
   410  struct _PSFEATURE_OUTPUT {
   411  
   412    BOOL bPageIndependent;
   413    BOOL bSetPageDevice;
   414  }
   415  alias _PSFEATURE_OUTPUT PSFEATURE_OUTPUT;
   416  alias _PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT;
   417  
   418  struct _PSFEATURE_CUSTPAPER {
   419  
   420    LONG lOrientation;
   421    LONG lWidth;
   422    LONG lHeight;
   423    LONG lWidthOffset;
   424    LONG lHeightOffset;
   425  }
   426  alias _PSFEATURE_CUSTPAPER PSFEATURE_CUSTPAPER;
   427  alias _PSFEATURE_CUSTPAPER* PPSFEATURE_CUSTPAPER;
   428  
   429  enum : uint { PSPROTOCOL_ASCII = 0 }
   430  enum : uint { PSPROTOCOL_BCP = 1 }
   431  enum : uint { PSPROTOCOL_TBCP = 2 }
   432  enum : uint { PSPROTOCOL_BINARY = 3 }
   433  
   434  enum : uint { QDI_SETDIBITS = 1 }
   435  enum : uint { QDI_GETDIBITS = 2 }
   436  enum : uint { QDI_DIBTOSCREEN = 4 }
   437  enum : uint { QDI_STRETCHDIB = 8 }
   438  
   439  enum : uint { SP_NOTREPORTED = 0x4000 }
   440  enum { SP_ERROR = -1 }
   441  enum { SP_APPABORT = -2 }
   442  enum { SP_USERABORT = -3 }
   443  enum { SP_OUTOFDISK = -4 }
   444  enum { SP_OUTOFMEMORY = -5 }
   445  
   446  enum : uint { PR_JOBSTATUS = 0x0000 }
   447  
   448  enum : uint { OBJ_PEN = 1 }
   449  enum : uint { OBJ_BRUSH = 2 }
   450  enum : uint { OBJ_DC = 3 }
   451  enum : uint { OBJ_METADC = 4 }
   452  enum : uint { OBJ_PAL = 5 }
   453  enum : uint { OBJ_FONT = 6 }
   454  enum : uint { OBJ_BITMAP = 7 }
   455  enum : uint { OBJ_REGION = 8 }
   456  enum : uint { OBJ_METAFILE = 9 }
   457  enum : uint { OBJ_MEMDC = 10 }
   458  enum : uint { OBJ_EXTPEN = 11 }
   459  enum : uint { OBJ_ENHMETADC = 12 }
   460  enum : uint { OBJ_ENHMETAFILE = 13 }
   461  enum : uint { OBJ_COLORSPACE = 14 }
   462  
   463  enum : uint { MWT_IDENTITY = 1 }
   464  enum : uint { MWT_LEFTMULTIPLY = 2 }
   465  enum : uint { MWT_RIGHTMULTIPLY = 3 }
   466  
   467  alias MWT_IDENTITY MWT_MIN;
   468  alias MWT_RIGHTMULTIPLY MWT_MAX;
   469  
   470  // #define _XFORM_
   471  struct tagXFORM {
   472    FLOAT eM11;
   473    FLOAT eM12;
   474    FLOAT eM21;
   475    FLOAT eM22;
   476    FLOAT eDx;
   477    FLOAT eDy;
   478  }
   479  alias tagXFORM XFORM;
   480  alias tagXFORM* PXFORM;
   481  alias tagXFORM* LPXFORM;
   482  
   483  struct tagBITMAP {
   484    LONG bmType;
   485    LONG bmWidth;
   486    LONG bmHeight;
   487    LONG bmWidthBytes;
   488    WORD bmPlanes;
   489    WORD bmBitsPixel;
   490    LPVOID bmBits;
   491  }
   492  alias tagBITMAP BITMAP;
   493  alias tagBITMAP* PBITMAP;
   494  alias tagBITMAP* NPBITMAP;
   495  alias tagBITMAP* LPBITMAP;
   496  
   497  align(1):
   498  struct tagRGBTRIPLE {
   499    BYTE rgbtBlue;
   500    BYTE rgbtGreen;
   501    BYTE rgbtRed;
   502  }
   503  alias tagRGBTRIPLE RGBTRIPLE;
   504  
   505  align:
   506  
   507  struct tagRGBQUAD {
   508    BYTE rgbBlue;
   509    BYTE rgbGreen;
   510    BYTE rgbRed;
   511    BYTE rgbReserved;
   512  }
   513  alias tagRGBQUAD RGBQUAD;
   514  
   515  alias RGBQUAD* LPRGBQUAD;
   516  
   517  // #if(WINVER >= 0x0400)
   518  
   519  enum : uint { CS_ENABLE = 0x00000001 }
   520  enum : uint { CS_DISABLE = 0x00000002 }
   521  enum : uint { CS_DELETE_TRANSFORM = 0x00000003 }
   522  
   523  // #define LCS_SIGNATURE 'PSOC'
   524  
   525  // #define LCS_sRGB 'sRGB'
   526  // #define LCS_WINDOWS_COLOR_SPACE 'Win '
   527  
   528  alias LONG LCSCSTYPE;
   529  enum : uint { LCS_CALIBRATED_RGB = 0x00000000 }
   530  
   531  alias LONG LCSGAMUTMATCH;
   532  enum : uint { LCS_GM_BUSINESS = 0x00000001 }
   533  enum : uint { LCS_GM_GRAPHICS = 0x00000002 }
   534  enum : uint { LCS_GM_IMAGES = 0x00000004 }
   535  enum : uint { LCS_GM_ABS_COLORIMETRIC = 0x00000008 }
   536  
   537  enum : uint { CM_OUT_OF_GAMUT = 255 }
   538  enum : uint { CM_IN_GAMUT = 0 }
   539  
   540  enum : uint { ICM_ADDPROFILE = 1 }
   541  enum : uint { ICM_DELETEPROFILE = 2 }
   542  enum : uint { ICM_QUERYPROFILE = 3 }
   543  enum : uint { ICM_SETDEFAULTPROFILE = 4 }
   544  enum : uint { ICM_REGISTERICMATCHER = 5 }
   545  enum : uint { ICM_UNREGISTERICMATCHER = 6 }
   546  enum : uint { ICM_QUERYMATCH = 7 }
   547  
   548  BYTE GetKValue(DWORD cmyk){ return cast(BYTE)cmyk; }
   549  BYTE GetYValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 8); }
   550  BYTE GetMValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 16); }
   551  BYTE GetCValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 24); }
   552  
   553  DWORD CMYK(BYTE c, BYTE m, BYTE y, BYTE k){ return (cast(COLORREF)(((cast(BYTE)(k)|(cast(WORD)(cast(BYTE)(y))<<8))|((cast(DWORD)cast(BYTE)(m))<<16))|((cast(DWORD)cast(BYTE)(c))<<24))); }
   554  
   555  alias int FXPT16DOT16;
   556  alias int* LPFXPT16DOT16;
   557  alias int FXPT2DOT30;
   558  alias int* LPFXPT2DOT30;
   559  
   560  struct tagCIEXYZ {
   561    FXPT2DOT30 ciexyzX;
   562    FXPT2DOT30 ciexyzY;
   563    FXPT2DOT30 ciexyzZ;
   564  }
   565  alias tagCIEXYZ CIEXYZ;
   566  
   567  alias CIEXYZ* LPCIEXYZ;
   568  
   569  struct tagICEXYZTRIPLE {
   570    CIEXYZ ciexyzRed;
   571    CIEXYZ ciexyzGreen;
   572    CIEXYZ ciexyzBlue;
   573  }
   574  alias tagICEXYZTRIPLE CIEXYZTRIPLE;
   575  
   576  alias CIEXYZTRIPLE* LPCIEXYZTRIPLE;
   577  
   578  struct tagLOGCOLORSPACEA {
   579    DWORD lcsSignature;
   580    DWORD lcsVersion;
   581    DWORD lcsSize;
   582    LCSCSTYPE lcsCSType;
   583    LCSGAMUTMATCH lcsIntent;
   584    CIEXYZTRIPLE lcsEndpoints;
   585    DWORD lcsGammaRed;
   586    DWORD lcsGammaGreen;
   587    DWORD lcsGammaBlue;
   588    CHAR lcsFilename[MAX_PATH];
   589  }
   590  alias tagLOGCOLORSPACEA LOGCOLORSPACEA;
   591  alias tagLOGCOLORSPACEA* LPLOGCOLORSPACEA;
   592  
   593  struct tagLOGCOLORSPACEW {
   594    DWORD lcsSignature;
   595    DWORD lcsVersion;
   596    DWORD lcsSize;
   597    LCSCSTYPE lcsCSType;
   598    LCSGAMUTMATCH lcsIntent;
   599    CIEXYZTRIPLE lcsEndpoints;
   600    DWORD lcsGammaRed;
   601    DWORD lcsGammaGreen;
   602    DWORD lcsGammaBlue;
   603    WCHAR lcsFilename[MAX_PATH];
   604  }
   605  alias tagLOGCOLORSPACEW LOGCOLORSPACEW;
   606  alias tagLOGCOLORSPACEW* LPLOGCOLORSPACEW;
   607  
   608  // #ifdef UNICODE
   609  // ...
   610  // #else
   611  alias LOGCOLORSPACEA LOGCOLORSPACE;
   612  alias LPLOGCOLORSPACEA LPLOGCOLORSPACE;
   613  // #endif // UNICODE
   614  
   615  // #endif /* WINVER >= 0x0400 */
   616  
   617  struct tagBITMAPCOREHEADER {
   618    DWORD bcSize;
   619    WORD bcWidth;
   620    WORD bcHeight;
   621    WORD bcPlanes;
   622    WORD bcBitCount;
   623  }
   624  alias tagBITMAPCOREHEADER BITMAPCOREHEADER;
   625  alias tagBITMAPCOREHEADER* LPBITMAPCOREHEADER;
   626  alias tagBITMAPCOREHEADER* PBITMAPCOREHEADER;
   627  
   628  struct tagBITMAPINFOHEADER {
   629    DWORD biSize;
   630    LONG biWidth;
   631    LONG biHeight;
   632    WORD biPlanes;
   633    WORD biBitCount;
   634    DWORD biCompression;
   635    DWORD biSizeImage;
   636    LONG biXPelsPerMeter;
   637    LONG biYPelsPerMeter;
   638    DWORD biClrUsed;
   639    DWORD biClrImportant;
   640  }
   641  alias tagBITMAPINFOHEADER BITMAPINFOHEADER;
   642  alias tagBITMAPINFOHEADER* LPBITMAPINFOHEADER;
   643  alias tagBITMAPINFOHEADER* PBITMAPINFOHEADER;
   644  
   645  // #if(WINVER >= 0x0400)
   646  struct _0 {
   647    DWORD bV4Size;
   648    LONG bV4Width;
   649    LONG bV4Height;
   650    WORD bV4Planes;
   651    WORD bV4BitCount;
   652    DWORD bV4V4Compression;
   653    DWORD bV4SizeImage;
   654    LONG bV4XPelsPerMeter;
   655    LONG bV4YPelsPerMeter;
   656    DWORD bV4ClrUsed;
   657    DWORD bV4ClrImportant;
   658    DWORD bV4RedMask;
   659    DWORD bV4GreenMask;
   660    DWORD bV4BlueMask;
   661    DWORD bV4AlphaMask;
   662    DWORD bV4CSType;
   663    CIEXYZTRIPLE bV4Endpoints;
   664    DWORD bV4GammaRed;
   665    DWORD bV4GammaGreen;
   666    DWORD bV4GammaBlue;
   667  }
   668  alias _0 BITMAPV4HEADER;
   669  alias _0* LPBITMAPV4HEADER;
   670  alias _0* PBITMAPV4HEADER;
   671  
   672  // #endif /* WINVER >= 0x0400 */
   673  
   674  // #if (WINVER >= 0x0500)
   675  struct _1 {
   676    DWORD bV5Size;
   677    LONG bV5Width;
   678    LONG bV5Height;
   679    WORD bV5Planes;
   680    WORD bV5BitCount;
   681    DWORD bV5Compression;
   682    DWORD bV5SizeImage;
   683    LONG bV5XPelsPerMeter;
   684    LONG bV5YPelsPerMeter;
   685    DWORD bV5ClrUsed;
   686    DWORD bV5ClrImportant;
   687    DWORD bV5RedMask;
   688    DWORD bV5GreenMask;
   689    DWORD bV5BlueMask;
   690    DWORD bV5AlphaMask;
   691    DWORD bV5CSType;
   692    CIEXYZTRIPLE bV5Endpoints;
   693    DWORD bV5GammaRed;
   694    DWORD bV5GammaGreen;
   695    DWORD bV5GammaBlue;
   696    DWORD bV5Intent;
   697    DWORD bV5ProfileData;
   698    DWORD bV5ProfileSize;
   699    DWORD bV5Reserved;
   700  }
   701  alias _1 BITMAPV5HEADER;
   702  alias _1* LPBITMAPV5HEADER;
   703  alias _1* PBITMAPV5HEADER;
   704  
   705  // #define PROFILE_LINKED 'LINK'
   706  // #define PROFILE_EMBEDDED 'MBED'
   707  // #endif
   708  
   709  enum : uint { BI_RGB = 0 }
   710  enum : uint { BI_RLE8 = 1 }
   711  enum : uint { BI_RLE4 = 2 }
   712  enum : uint { BI_BITFIELDS = 3 }
   713  enum : uint { BI_JPEG = 4 }
   714  enum : uint { BI_PNG = 5 }
   715  // #if (_WIN32_WINNT >= 0x0400)
   716  // #endif
   717  
   718  struct tagBITMAPINFO {
   719    BITMAPINFOHEADER bmiHeader;
   720    RGBQUAD bmiColors[1];
   721  }
   722  alias tagBITMAPINFO BITMAPINFO;
   723  alias tagBITMAPINFO* LPBITMAPINFO;
   724  alias tagBITMAPINFO* PBITMAPINFO;
   725  
   726  struct tagBITMAPCOREINFO {
   727    BITMAPCOREHEADER bmciHeader;
   728    RGBTRIPLE bmciColors[1];
   729  }
   730  alias tagBITMAPCOREINFO BITMAPCOREINFO;
   731  alias tagBITMAPCOREINFO* LPBITMAPCOREINFO;
   732  alias tagBITMAPCOREINFO* PBITMAPCOREINFO;
   733  
   734  align(2):
   735  struct tagBITMAPFILEHEADER {
   736    WORD bfType;
   737    DWORD bfSize;
   738    WORD bfReserved1;
   739    WORD bfReserved2;
   740    DWORD bfOffBits;
   741  }
   742  alias tagBITMAPFILEHEADER BITMAPFILEHEADER;
   743  alias tagBITMAPFILEHEADER* LPBITMAPFILEHEADER;
   744  alias tagBITMAPFILEHEADER* PBITMAPFILEHEADER;
   745  
   746  align:
   747  
   748  // #define MAKEPOINTS(l) (*((POINTS FAR *)&(l)))
   749  
   750  // #if(WINVER >= 0x0400)
   751  // #ifndef NOFONTSIG
   752  struct tagFONTSIGNATURE {
   753    DWORD fsUsb[4];
   754    DWORD fsCsb[2];
   755  }
   756  alias tagFONTSIGNATURE FONTSIGNATURE;
   757  alias tagFONTSIGNATURE* PFONTSIGNATURE;
   758  alias tagFONTSIGNATURE* LPFONTSIGNATURE;
   759  
   760  struct tagCHARSETINFO {
   761    UINT ciCharset;
   762    UINT ciACP;
   763    FONTSIGNATURE fs;
   764  }
   765  alias tagCHARSETINFO CHARSETINFO;
   766  alias tagCHARSETINFO* PCHARSETINFO;
   767  alias tagCHARSETINFO* NPCHARSETINFO;
   768  alias tagCHARSETINFO* LPCHARSETINFO;
   769  
   770  enum : uint { TCI_SRCCHARSET = 1 }
   771  enum : uint { TCI_SRCCODEPAGE = 2 }
   772  enum : uint { TCI_SRCFONTSIG = 3 }
   773  
   774  struct tagLOCALESIGNATURE {
   775    DWORD lsUsb[4];
   776    DWORD lsCsbDefault[2];
   777    DWORD lsCsbSupported[2];
   778  }
   779  alias tagLOCALESIGNATURE LOCALESIGNATURE;
   780  alias tagLOCALESIGNATURE* PLOCALESIGNATURE;
   781  alias tagLOCALESIGNATURE* LPLOCALESIGNATURE;
   782  
   783  // #endif
   784  // #endif /* WINVER >= 0x0400 */
   785  
   786  // #ifndef NOMETAFILE
   787  
   788  struct tagHANDLETABLE {
   789    HGDIOBJ objectHandle[1];
   790  }
   791  alias tagHANDLETABLE HANDLETABLE;
   792  alias tagHANDLETABLE* PHANDLETABLE;
   793  alias tagHANDLETABLE* LPHANDLETABLE;
   794  
   795  struct tagMETARECORD {
   796    DWORD rdSize;
   797    WORD rdFunction;
   798    WORD rdParm[1];
   799  }
   800  alias tagMETARECORD METARECORD;
   801  
   802  alias tagMETARECORD* PMETARECORD;
   803  alias tagMETARECORD* LPMETARECORD;
   804  
   805  struct tagMETAFILEPICT {
   806    LONG mm;
   807    LONG xExt;
   808    LONG yExt;
   809    HMETAFILE hMF;
   810  }
   811  alias tagMETAFILEPICT METAFILEPICT;
   812  alias tagMETAFILEPICT* LPMETAFILEPICT;
   813  
   814  align(2):
   815  struct tagMETAHEADER {
   816    WORD mtType;
   817    WORD mtHeaderSize;
   818    WORD mtVersion;
   819    DWORD mtSize;
   820    WORD mtNoObjects;
   821    DWORD mtMaxRecord;
   822    WORD mtNoParameters;
   823  }
   824  alias tagMETAHEADER METAHEADER;
   825  
   826  alias tagMETAHEADER* PMETAHEADER;
   827  alias tagMETAHEADER* LPMETAHEADER;
   828  
   829  align:
   830  
   831  struct tagENHMETARECORD {
   832    DWORD iType;
   833    DWORD nSize;
   834    DWORD dParm[1];
   835  }
   836  alias tagENHMETARECORD ENHMETARECORD;
   837  alias tagENHMETARECORD* PENHMETARECORD;
   838  alias tagENHMETARECORD* LPENHMETARECORD;
   839  
   840  struct tagENHMETAHEADER {
   841    DWORD iType;
   842    DWORD nSize;
   843  
   844    RECTL rclBounds;
   845    RECTL rclFrame;
   846    DWORD dSignature;
   847    DWORD nVersion;
   848    DWORD nBytes;
   849    DWORD nRecords;
   850    WORD nHandles;
   851  
   852    WORD sReserved;
   853    DWORD nDescription;
   854  
   855    DWORD offDescription;
   856  
   857    DWORD nPalEntries;
   858    SIZEL szlDevice;
   859    SIZEL szlMillimeters;
   860  // #if(WINVER >= 0x0400)
   861    DWORD cbPixelFormat;
   862  
   863    DWORD offPixelFormat;
   864  
   865    DWORD bOpenGL;
   866  
   867  // #endif /* WINVER >= 0x0400 */
   868  // #if(WINVER >= 0x0500)
   869    SIZEL szlMicrometers;
   870  // #endif /* WINVER >= 0x0500 */
   871  
   872  }
   873  alias tagENHMETAHEADER ENHMETAHEADER;
   874  alias tagENHMETAHEADER* PENHMETAHEADER;
   875  alias tagENHMETAHEADER* LPENHMETAHEADER;
   876  
   877  // #endif /* NOMETAFILE */
   878  
   879  // #ifndef NOTEXTMETRIC
   880  
   881  enum : uint { TMPF_FIXED_PITCH = 0x01 }
   882  enum : uint { TMPF_VECTOR = 0x02 }
   883  enum : uint { TMPF_DEVICE = 0x08 }
   884  enum : uint { TMPF_TRUETYPE = 0x04 }
   885  
   886  // #ifdef UNICODE
   887  // ...
   888  // #else
   889  alias BYTE BCHAR;
   890  // #endif
   891  
   892  // #ifndef _TEXTMETRIC_DEFINED
   893  // #define _TEXTMETRIC_DEFINED
   894  struct tagTEXTMETRICA {
   895    LONG tmHeight;
   896    LONG tmAscent;
   897    LONG tmDescent;
   898    LONG tmInternalLeading;
   899    LONG tmExternalLeading;
   900    LONG tmAveCharWidth;
   901    LONG tmMaxCharWidth;
   902    LONG tmWeight;
   903    LONG tmOverhang;
   904    LONG tmDigitizedAspectX;
   905    LONG tmDigitizedAspectY;
   906    BYTE tmFirstChar;
   907    BYTE tmLastChar;
   908    BYTE tmDefaultChar;
   909    BYTE tmBreakChar;
   910    BYTE tmItalic;
   911    BYTE tmUnderlined;
   912    BYTE tmStruckOut;
   913    BYTE tmPitchAndFamily;
   914    BYTE tmCharSet;
   915  }
   916  alias tagTEXTMETRICA TEXTMETRICA;
   917  alias tagTEXTMETRICA* PTEXTMETRICA;
   918  alias tagTEXTMETRICA* NPTEXTMETRICA;
   919  alias tagTEXTMETRICA* LPTEXTMETRICA;
   920  
   921  struct tagTEXTMETRICW {
   922    LONG tmHeight;
   923    LONG tmAscent;
   924    LONG tmDescent;
   925    LONG tmInternalLeading;
   926    LONG tmExternalLeading;
   927    LONG tmAveCharWidth;
   928    LONG tmMaxCharWidth;
   929    LONG tmWeight;
   930    LONG tmOverhang;
   931    LONG tmDigitizedAspectX;
   932    LONG tmDigitizedAspectY;
   933    WCHAR tmFirstChar;
   934    WCHAR tmLastChar;
   935    WCHAR tmDefaultChar;
   936    WCHAR tmBreakChar;
   937    BYTE tmItalic;
   938    BYTE tmUnderlined;
   939    BYTE tmStruckOut;
   940    BYTE tmPitchAndFamily;
   941    BYTE tmCharSet;
   942  }
   943  alias tagTEXTMETRICW TEXTMETRICW;
   944  alias tagTEXTMETRICW* PTEXTMETRICW;
   945  alias tagTEXTMETRICW* NPTEXTMETRICW;
   946  alias tagTEXTMETRICW* LPTEXTMETRICW;
   947  
   948  // #ifdef UNICODE
   949  // ...
   950  // #else
   951  alias TEXTMETRICA TEXTMETRIC;
   952  alias PTEXTMETRICA PTEXTMETRIC;
   953  alias NPTEXTMETRICA NPTEXTMETRIC;
   954  alias LPTEXTMETRICA LPTEXTMETRIC;
   955  // #endif // UNICODE
   956  // #endif // !_TEXTMETRIC_DEFINED
   957  
   958  enum : uint { NTM_REGULAR = 0x00000040 }
   959  enum : uint { NTM_BOLD = 0x00000020 }
   960  enum : uint { NTM_ITALIC = 0x00000001 }
   961  
   962  enum : uint { NTM_NONNEGATIVE_AC = 0x00010000 }
   963  enum : uint { NTM_PS_OPENTYPE = 0x00020000 }
   964  enum : uint { NTM_TT_OPENTYPE = 0x00040000 }
   965  enum : uint { NTM_MULTIPLEMASTER = 0x00080000 }
   966  enum : uint { NTM_TYPE1 = 0x00100000 }
   967  enum : uint { NTM_DSIG = 0x00200000 }
   968  
   969  align(4):
   970  struct tagNEWTEXTMETRICA {
   971    LONG tmHeight;
   972    LONG tmAscent;
   973    LONG tmDescent;
   974    LONG tmInternalLeading;
   975    LONG tmExternalLeading;
   976    LONG tmAveCharWidth;
   977    LONG tmMaxCharWidth;
   978    LONG tmWeight;
   979    LONG tmOverhang;
   980    LONG tmDigitizedAspectX;
   981    LONG tmDigitizedAspectY;
   982    BYTE tmFirstChar;
   983    BYTE tmLastChar;
   984    BYTE tmDefaultChar;
   985    BYTE tmBreakChar;
   986    BYTE tmItalic;
   987    BYTE tmUnderlined;
   988    BYTE tmStruckOut;
   989    BYTE tmPitchAndFamily;
   990    BYTE tmCharSet;
   991    DWORD ntmFlags;
   992    UINT ntmSizeEM;
   993    UINT ntmCellHeight;
   994    UINT ntmAvgWidth;
   995  }
   996  alias tagNEWTEXTMETRICA NEWTEXTMETRICA;
   997  alias tagNEWTEXTMETRICA* PNEWTEXTMETRICA;
   998  alias tagNEWTEXTMETRICA* NPNEWTEXTMETRICA;
   999  alias tagNEWTEXTMETRICA* LPNEWTEXTMETRICA;
  1000  
  1001  struct tagNEWTEXTMETRICW {
  1002    LONG tmHeight;
  1003    LONG tmAscent;
  1004    LONG tmDescent;
  1005    LONG tmInternalLeading;
  1006    LONG tmExternalLeading;
  1007    LONG tmAveCharWidth;
  1008    LONG tmMaxCharWidth;
  1009    LONG tmWeight;
  1010    LONG tmOverhang;
  1011    LONG tmDigitizedAspectX;
  1012    LONG tmDigitizedAspectY;
  1013    WCHAR tmFirstChar;
  1014    WCHAR tmLastChar;
  1015    WCHAR tmDefaultChar;
  1016    WCHAR tmBreakChar;
  1017    BYTE tmItalic;
  1018    BYTE tmUnderlined;
  1019    BYTE tmStruckOut;
  1020    BYTE tmPitchAndFamily;
  1021    BYTE tmCharSet;
  1022    DWORD ntmFlags;
  1023    UINT ntmSizeEM;
  1024    UINT ntmCellHeight;
  1025    UINT ntmAvgWidth;
  1026  }
  1027  alias tagNEWTEXTMETRICW NEWTEXTMETRICW;
  1028  alias tagNEWTEXTMETRICW* PNEWTEXTMETRICW;
  1029  alias tagNEWTEXTMETRICW* NPNEWTEXTMETRICW;
  1030  alias tagNEWTEXTMETRICW* LPNEWTEXTMETRICW;
  1031  
  1032  // #ifdef UNICODE
  1033  // ...
  1034  // #else
  1035  alias NEWTEXTMETRICA NEWTEXTMETRIC;
  1036  alias PNEWTEXTMETRICA PNEWTEXTMETRIC;
  1037  alias NPNEWTEXTMETRICA NPNEWTEXTMETRIC;
  1038  alias LPNEWTEXTMETRICA LPNEWTEXTMETRIC;
  1039  // #endif // UNICODE
  1040  align:
  1041  
  1042  // #if(WINVER >= 0x0400)
  1043  struct tagNEWTEXTMETRICEXA {
  1044    NEWTEXTMETRICA ntmTm;
  1045    FONTSIGNATURE ntmFontSig;
  1046  }
  1047  alias tagNEWTEXTMETRICEXA NEWTEXTMETRICEXA;
  1048  
  1049  struct tagNEWTEXTMETRICEXW {
  1050    NEWTEXTMETRICW ntmTm;
  1051    FONTSIGNATURE ntmFontSig;
  1052  }
  1053  alias tagNEWTEXTMETRICEXW NEWTEXTMETRICEXW;
  1054  
  1055  // #ifdef UNICODE
  1056  // ...
  1057  // #else
  1058  alias NEWTEXTMETRICEXA NEWTEXTMETRICEX;
  1059  // #endif // UNICODE
  1060  // #endif /* WINVER >= 0x0400 */
  1061  
  1062  // #endif /* NOTEXTMETRIC */
  1063  
  1064  struct tagPELARRAY {
  1065    LONG paXCount;
  1066    LONG paYCount;
  1067    LONG paXExt;
  1068    LONG paYExt;
  1069    BYTE paRGBs;
  1070  }
  1071  alias tagPELARRAY PELARRAY;
  1072  alias tagPELARRAY* PPELARRAY;
  1073  alias tagPELARRAY* NPPELARRAY;
  1074  alias tagPELARRAY* LPPELARRAY;
  1075  
  1076  struct tagLOGBRUSH {
  1077    UINT lbStyle;
  1078    COLORREF lbColor;
  1079    ULONG_PTR lbHatch;
  1080  }
  1081  alias tagLOGBRUSH LOGBRUSH;
  1082  alias tagLOGBRUSH* PLOGBRUSH;
  1083  alias tagLOGBRUSH* NPLOGBRUSH;
  1084  alias tagLOGBRUSH* LPLOGBRUSH;
  1085  
  1086  struct tagLOGBRUSH32 {
  1087    UINT lbStyle;
  1088    COLORREF lbColor;
  1089    ULONG lbHatch;
  1090  }
  1091  alias tagLOGBRUSH32 LOGBRUSH32;
  1092  alias tagLOGBRUSH32* PLOGBRUSH32;
  1093  alias tagLOGBRUSH32* NPLOGBRUSH32;
  1094  alias tagLOGBRUSH32* LPLOGBRUSH32;
  1095  
  1096  alias LOGBRUSH PATTERN;
  1097  alias PATTERN* PPATTERN;
  1098  alias PATTERN* NPPATTERN;
  1099  alias PATTERN* LPPATTERN;
  1100  
  1101  struct tagLOGPEN {
  1102    UINT lopnStyle;
  1103    POINT lopnWidth;
  1104    COLORREF lopnColor;
  1105  }
  1106  alias tagLOGPEN LOGPEN;
  1107  alias tagLOGPEN* PLOGPEN;
  1108  alias tagLOGPEN* NPLOGPEN;
  1109  alias tagLOGPEN* LPLOGPEN;
  1110  
  1111  struct tagEXTLOGPEN {
  1112    DWORD elpPenStyle;
  1113    DWORD elpWidth;
  1114    UINT elpBrushStyle;
  1115    COLORREF elpColor;
  1116    ULONG_PTR elpHatch;
  1117    DWORD elpNumEntries;
  1118    DWORD elpStyleEntry[1];
  1119  }
  1120  alias tagEXTLOGPEN EXTLOGPEN;
  1121  alias tagEXTLOGPEN* PEXTLOGPEN;
  1122  alias tagEXTLOGPEN* NPEXTLOGPEN;
  1123  alias tagEXTLOGPEN* LPEXTLOGPEN;
  1124  
  1125  // #ifndef _PALETTEENTRY_DEFINED
  1126  // #define _PALETTEENTRY_DEFINED
  1127  struct tagPALETTEENTRY {
  1128    BYTE peRed;
  1129    BYTE peGreen;
  1130    BYTE peBlue;
  1131    BYTE peFlags;
  1132  }
  1133  alias tagPALETTEENTRY PALETTEENTRY;
  1134  alias tagPALETTEENTRY* PPALETTEENTRY;
  1135  alias tagPALETTEENTRY* LPPALETTEENTRY;
  1136  
  1137  // #endif // !_PALETTEENTRY_DEFINED
  1138  
  1139  // #ifndef _LOGPALETTE_DEFINED
  1140  // #define _LOGPALETTE_DEFINED
  1141  
  1142  struct tagLOGPALETTE {
  1143    WORD palVersion;
  1144    WORD palNumEntries;
  1145    PALETTEENTRY palPalEntry[1];
  1146  }
  1147  alias tagLOGPALETTE LOGPALETTE;
  1148  alias tagLOGPALETTE* PLOGPALETTE;
  1149  alias tagLOGPALETTE* NPLOGPALETTE;
  1150  alias tagLOGPALETTE* LPLOGPALETTE;
  1151  
  1152  // #endif // !_LOGPALETTE_DEFINED
  1153  
  1154  enum : uint { LF_FACESIZE = 32 }
  1155  
  1156  struct tagLOGFONTA {
  1157    LONG lfHeight;
  1158    LONG lfWidth;
  1159    LONG lfEscapement;
  1160    LONG lfOrientation;
  1161    LONG lfWeight;
  1162    BYTE lfItalic;
  1163    BYTE lfUnderline;
  1164    BYTE lfStrikeOut;
  1165    BYTE lfCharSet;
  1166    BYTE lfOutPrecision;
  1167    BYTE lfClipPrecision;
  1168    BYTE lfQuality;
  1169    BYTE lfPitchAndFamily;
  1170    CHAR lfFaceName[LF_FACESIZE];
  1171  }
  1172  alias tagLOGFONTA LOGFONTA;
  1173  alias tagLOGFONTA* PLOGFONTA;
  1174  alias tagLOGFONTA* NPLOGFONTA;
  1175  alias tagLOGFONTA* LPLOGFONTA;
  1176  
  1177  struct tagLOGFONTW {
  1178    LONG lfHeight;
  1179    LONG lfWidth;
  1180    LONG lfEscapement;
  1181    LONG lfOrientation;
  1182    LONG lfWeight;
  1183    BYTE lfItalic;
  1184    BYTE lfUnderline;
  1185    BYTE lfStrikeOut;
  1186    BYTE lfCharSet;
  1187    BYTE lfOutPrecision;
  1188    BYTE lfClipPrecision;
  1189    BYTE lfQuality;
  1190    BYTE lfPitchAndFamily;
  1191    WCHAR lfFaceName[LF_FACESIZE];
  1192  }
  1193  alias tagLOGFONTW LOGFONTW;
  1194  alias tagLOGFONTW* PLOGFONTW;
  1195  alias tagLOGFONTW* NPLOGFONTW;
  1196  alias tagLOGFONTW* LPLOGFONTW;
  1197  
  1198  // #ifdef UNICODE
  1199  // ...
  1200  // #else
  1201  alias LOGFONTA LOGFONT;
  1202  alias PLOGFONTA PLOGFONT;
  1203  alias NPLOGFONTA NPLOGFONT;
  1204  alias LPLOGFONTA LPLOGFONT;
  1205  // #endif // UNICODE
  1206  
  1207  enum : uint { LF_FULLFACESIZE = 64 }
  1208  
  1209  struct tagENUMLOGFONTA {
  1210    LOGFONTA elfLogFont;
  1211    BYTE elfFullName[LF_FULLFACESIZE];
  1212    BYTE elfStyle[LF_FACESIZE];
  1213  }
  1214  alias tagENUMLOGFONTA ENUMLOGFONTA;
  1215  alias tagENUMLOGFONTA* LPENUMLOGFONTA;
  1216  
  1217  struct tagENUMLOGFONTW {
  1218    LOGFONTW elfLogFont;
  1219    WCHAR elfFullName[LF_FULLFACESIZE];
  1220    WCHAR elfStyle[LF_FACESIZE];
  1221  }
  1222  alias tagENUMLOGFONTW ENUMLOGFONTW;
  1223  alias tagENUMLOGFONTW* LPENUMLOGFONTW;
  1224  
  1225  // #ifdef UNICODE
  1226  // ...
  1227  // #else
  1228  alias ENUMLOGFONTA ENUMLOGFONT;
  1229  alias LPENUMLOGFONTA LPENUMLOGFONT;
  1230  // #endif // UNICODE
  1231  
  1232  // #if(WINVER >= 0x0400)
  1233  struct tagENUMLOGFONTEXA {
  1234    LOGFONTA elfLogFont;
  1235    BYTE elfFullName[LF_FULLFACESIZE];
  1236    BYTE elfStyle[LF_FACESIZE];
  1237    BYTE elfScript[LF_FACESIZE];
  1238  }
  1239  alias tagENUMLOGFONTEXA ENUMLOGFONTEXA;
  1240  alias tagENUMLOGFONTEXA* LPENUMLOGFONTEXA;
  1241  
  1242  struct tagENUMLOGFONTEXW {
  1243    LOGFONTW elfLogFont;
  1244    WCHAR elfFullName[LF_FULLFACESIZE];
  1245    WCHAR elfStyle[LF_FACESIZE];
  1246    WCHAR elfScript[LF_FACESIZE];
  1247  }
  1248  alias tagENUMLOGFONTEXW ENUMLOGFONTEXW;
  1249  alias tagENUMLOGFONTEXW* LPENUMLOGFONTEXW;
  1250  
  1251  // #ifdef UNICODE
  1252  // ...
  1253  // #else
  1254  alias ENUMLOGFONTEXA ENUMLOGFONTEX;
  1255  alias LPENUMLOGFONTEXA LPENUMLOGFONTEX;
  1256  // #endif // UNICODE
  1257  // #endif /* WINVER >= 0x0400 */
  1258  
  1259  enum : uint { OUT_DEFAULT_PRECIS = 0 }
  1260  enum : uint { OUT_STRING_PRECIS = 1 }
  1261  enum : uint { OUT_CHARACTER_PRECIS = 2 }
  1262  enum : uint { OUT_STROKE_PRECIS = 3 }
  1263  enum : uint { OUT_TT_PRECIS = 4 }
  1264  enum : uint { OUT_DEVICE_PRECIS = 5 }
  1265  enum : uint { OUT_RASTER_PRECIS = 6 }
  1266  enum : uint { OUT_TT_ONLY_PRECIS = 7 }
  1267  enum : uint { OUT_OUTLINE_PRECIS = 8 }
  1268  enum : uint { OUT_SCREEN_OUTLINE_PRECIS = 9 }
  1269  enum : uint { OUT_PS_ONLY_PRECIS = 10 }
  1270  
  1271  enum : uint { CLIP_DEFAULT_PRECIS = 0 }
  1272  enum : uint { CLIP_CHARACTER_PRECIS = 1 }
  1273  enum : uint { CLIP_STROKE_PRECIS = 2 }
  1274  enum : uint { CLIP_MASK = 0xf }
  1275  enum : uint { CLIP_LH_ANGLES = 1<<4 }
  1276  enum : uint { CLIP_TT_ALWAYS = 2<<4 }
  1277  enum : uint { CLIP_EMBEDDED = 8<<4 }
  1278  
  1279  enum : uint { DEFAULT_QUALITY = 0 }
  1280  enum : uint { DRAFT_QUALITY = 1 }
  1281  enum : uint { PROOF_QUALITY = 2 }
  1282  // #if(WINVER >= 0x0400)
  1283  enum : uint { NONANTIALIASED_QUALITY = 3 }
  1284  enum : uint { ANTIALIASED_QUALITY = 4 }
  1285  // #endif /* WINVER >= 0x0400 */
  1286  
  1287  // #if (_WIN32_WINNT >= 0x0500)
  1288  enum : uint { CLEARTYPE_QUALITY = 5 }
  1289  // #endif
  1290  
  1291  enum : uint { DEFAULT_PITCH = 0 }
  1292  enum : uint { FIXED_PITCH = 1 }
  1293  enum : uint { VARIABLE_PITCH = 2 }
  1294  // #if(WINVER >= 0x0400)
  1295  enum : uint { MONO_FONT = 8 }
  1296  // #endif /* WINVER >= 0x0400 */
  1297  
  1298  enum : uint { ANSI_CHARSET = 0 }
  1299  enum : uint { DEFAULT_CHARSET = 1 }
  1300  enum : uint { SYMBOL_CHARSET = 2 }
  1301  enum : uint { SHIFTJIS_CHARSET = 128 }
  1302  enum : uint { HANGEUL_CHARSET = 129 }
  1303  enum : uint { HANGUL_CHARSET = 129 }
  1304  enum : uint { GB2312_CHARSET = 134 }
  1305  enum : uint { CHINESEBIG5_CHARSET = 136 }
  1306  enum : uint { OEM_CHARSET = 255 }
  1307  // #if(WINVER >= 0x0400)
  1308  enum : uint { JOHAB_CHARSET = 130 }
  1309  enum : uint { HEBREW_CHARSET = 177 }
  1310  enum : uint { ARABIC_CHARSET = 178 }
  1311  enum : uint { GREEK_CHARSET = 161 }
  1312  enum : uint { TURKISH_CHARSET = 162 }
  1313  enum : uint { VIETNAMESE_CHARSET = 163 }
  1314  enum : uint { THAI_CHARSET = 222 }
  1315  enum : uint { EASTEUROPE_CHARSET = 238 }
  1316  enum : uint { RUSSIAN_CHARSET = 204 }
  1317  
  1318  enum : uint { MAC_CHARSET = 77 }
  1319  enum : uint { BALTIC_CHARSET = 186 }
  1320  
  1321  enum : uint { FS_LATIN1 = 0x00000001 }
  1322  enum : uint { FS_LATIN2 = 0x00000002 }
  1323  enum : uint { FS_CYRILLIC = 0x00000004 }
  1324  enum : uint { FS_GREEK = 0x00000008 }
  1325  enum : uint { FS_TURKISH = 0x00000010 }
  1326  enum : uint { FS_HEBREW = 0x00000020 }
  1327  enum : uint { FS_ARABIC = 0x00000040 }
  1328  enum : uint { FS_BALTIC = 0x00000080 }
  1329  enum : uint { FS_VIETNAMESE = 0x00000100 }
  1330  enum : uint { FS_THAI = 0x00010000 }
  1331  enum : uint { FS_JISJAPAN = 0x00020000 }
  1332  enum : uint { FS_CHINESESIMP = 0x00040000 }
  1333  enum : uint { FS_WANSUNG = 0x00080000 }
  1334  enum : uint { FS_CHINESETRAD = 0x00100000 }
  1335  enum : uint { FS_JOHAB = 0x00200000 }
  1336  enum : uint { FS_SYMBOL = 0x80000000 }
  1337  // #endif /* WINVER >= 0x0400 */
  1338  
  1339  enum : uint { FF_DONTCARE = 0<<4 }
  1340  enum : uint { FF_ROMAN = 1<<4 }
  1341  
  1342  enum : uint { FF_SWISS = 2<<4 }
  1343  
  1344  enum : uint { FF_MODERN = 3<<4 }
  1345  
  1346  enum : uint { FF_SCRIPT = 4<<4 }
  1347  enum : uint { FF_DECORATIVE = 5<<4 }
  1348  
  1349  enum : uint { FW_DONTCARE = 0 }
  1350  enum : uint { FW_THIN = 100 }
  1351  enum : uint { FW_EXTRALIGHT = 200 }
  1352  enum : uint { FW_LIGHT = 300 }
  1353  enum : uint { FW_NORMAL = 400 }
  1354  enum : uint { FW_MEDIUM = 500 }
  1355  enum : uint { FW_SEMIBOLD = 600 }
  1356  enum : uint { FW_BOLD = 700 }
  1357  enum : uint { FW_EXTRABOLD = 800 }
  1358  enum : uint { FW_HEAVY = 900 }
  1359  
  1360  alias FW_EXTRALIGHT FW_ULTRALIGHT;
  1361  alias FW_NORMAL FW_REGULAR;
  1362  alias FW_SEMIBOLD FW_DEMIBOLD;
  1363  alias FW_EXTRABOLD FW_ULTRABOLD;
  1364  alias FW_HEAVY FW_BLACK;
  1365  
  1366  enum : uint { PANOSE_COUNT = 10 }
  1367  enum : uint { PAN_FAMILYTYPE_INDEX = 0 }
  1368  enum : uint { PAN_SERIFSTYLE_INDEX = 1 }
  1369  enum : uint { PAN_WEIGHT_INDEX = 2 }
  1370  enum : uint { PAN_PROPORTION_INDEX = 3 }
  1371  enum : uint { PAN_CONTRAST_INDEX = 4 }
  1372  enum : uint { PAN_STROKEVARIATION_INDEX = 5 }
  1373  enum : uint { PAN_ARMSTYLE_INDEX = 6 }
  1374  enum : uint { PAN_LETTERFORM_INDEX = 7 }
  1375  enum : uint { PAN_MIDLINE_INDEX = 8 }
  1376  enum : uint { PAN_XHEIGHT_INDEX = 9 }
  1377  
  1378  enum : uint { PAN_CULTURE_LATIN = 0 }
  1379  
  1380  struct tagPANOSE {
  1381    BYTE bFamilyType;
  1382    BYTE bSerifStyle;
  1383    BYTE bWeight;
  1384    BYTE bProportion;
  1385    BYTE bContrast;
  1386    BYTE bStrokeVariation;
  1387    BYTE bArmStyle;
  1388    BYTE bLetterform;
  1389    BYTE bMidline;
  1390    BYTE bXHeight;
  1391  }
  1392  alias tagPANOSE PANOSE;
  1393  alias tagPANOSE* LPPANOSE;
  1394  
  1395  enum : uint { PAN_ANY = 0 }
  1396  enum : uint { PAN_NO_FIT = 1 }
  1397  
  1398  enum : uint { PAN_FAMILY_TEXT_DISPLAY = 2 }
  1399  enum : uint { PAN_FAMILY_SCRIPT = 3 }
  1400  enum : uint { PAN_FAMILY_DECORATIVE = 4 }
  1401  enum : uint { PAN_FAMILY_PICTORIAL = 5 }
  1402  
  1403  enum : uint { PAN_SERIF_COVE = 2 }
  1404  enum : uint { PAN_SERIF_OBTUSE_COVE = 3 }
  1405  enum : uint { PAN_SERIF_SQUARE_COVE = 4 }
  1406  enum : uint { PAN_SERIF_OBTUSE_SQUARE_COVE = 5 }
  1407  enum : uint { PAN_SERIF_SQUARE = 6 }
  1408  enum : uint { PAN_SERIF_THIN = 7 }
  1409  enum : uint { PAN_SERIF_BONE = 8 }
  1410  enum : uint { PAN_SERIF_EXAGGERATED = 9 }
  1411  enum : uint { PAN_SERIF_TRIANGLE = 10 }
  1412  enum : uint { PAN_SERIF_NORMAL_SANS = 11 }
  1413  enum : uint { PAN_SERIF_OBTUSE_SANS = 12 }
  1414  enum : uint { PAN_SERIF_PERP_SANS = 13 }
  1415  enum : uint { PAN_SERIF_FLARED = 14 }
  1416  enum : uint { PAN_SERIF_ROUNDED = 15 }
  1417  
  1418  enum : uint { PAN_WEIGHT_VERY_LIGHT = 2 }
  1419  enum : uint { PAN_WEIGHT_LIGHT = 3 }
  1420  enum : uint { PAN_WEIGHT_THIN = 4 }
  1421  enum : uint { PAN_WEIGHT_BOOK = 5 }
  1422  enum : uint { PAN_WEIGHT_MEDIUM = 6 }
  1423  enum : uint { PAN_WEIGHT_DEMI = 7 }
  1424  enum : uint { PAN_WEIGHT_BOLD = 8 }
  1425  enum : uint { PAN_WEIGHT_HEAVY = 9 }
  1426  enum : uint { PAN_WEIGHT_BLACK = 10 }
  1427  enum : uint { PAN_WEIGHT_NORD = 11 }
  1428  
  1429  enum : uint { PAN_PROP_OLD_STYLE = 2 }
  1430  enum : uint { PAN_PROP_MODERN = 3 }
  1431  enum : uint { PAN_PROP_EVEN_WIDTH = 4 }
  1432  enum : uint { PAN_PROP_EXPANDED = 5 }
  1433  enum : uint { PAN_PROP_CONDENSED = 6 }
  1434  enum : uint { PAN_PROP_VERY_EXPANDED = 7 }
  1435  enum : uint { PAN_PROP_VERY_CONDENSED = 8 }
  1436  enum : uint { PAN_PROP_MONOSPACED = 9 }
  1437  
  1438  enum : uint { PAN_CONTRAST_NONE = 2 }
  1439  enum : uint { PAN_CONTRAST_VERY_LOW = 3 }
  1440  enum : uint { PAN_CONTRAST_LOW = 4 }
  1441  enum : uint { PAN_CONTRAST_MEDIUM_LOW = 5 }
  1442  enum : uint { PAN_CONTRAST_MEDIUM = 6 }
  1443  enum : uint { PAN_CONTRAST_MEDIUM_HIGH = 7 }
  1444  enum : uint { PAN_CONTRAST_HIGH = 8 }
  1445  enum : uint { PAN_CONTRAST_VERY_HIGH = 9 }
  1446  
  1447  enum : uint { PAN_STROKE_GRADUAL_DIAG = 2 }
  1448  enum : uint { PAN_STROKE_GRADUAL_TRAN = 3 }
  1449  enum : uint { PAN_STROKE_GRADUAL_VERT = 4 }
  1450  enum : uint { PAN_STROKE_GRADUAL_HORZ = 5 }
  1451  enum : uint { PAN_STROKE_RAPID_VERT = 6 }
  1452  enum : uint { PAN_STROKE_RAPID_HORZ = 7 }
  1453  enum : uint { PAN_STROKE_INSTANT_VERT = 8 }
  1454  
  1455  enum : uint { PAN_STRAIGHT_ARMS_HORZ = 2 }
  1456  enum : uint { PAN_STRAIGHT_ARMS_WEDGE = 3 }
  1457  enum : uint { PAN_STRAIGHT_ARMS_VERT = 4 }
  1458  enum : uint { PAN_STRAIGHT_ARMS_SINGLE_SERIF = 5 }
  1459  enum : uint { PAN_STRAIGHT_ARMS_DOUBLE_SERIF = 6 }
  1460  enum : uint { PAN_BENT_ARMS_HORZ = 7 }
  1461  enum : uint { PAN_BENT_ARMS_WEDGE = 8 }
  1462  enum : uint { PAN_BENT_ARMS_VERT = 9 }
  1463  enum : uint { PAN_BENT_ARMS_SINGLE_SERIF = 10 }
  1464  enum : uint { PAN_BENT_ARMS_DOUBLE_SERIF = 11 }
  1465  
  1466  enum : uint { PAN_LETT_NORMAL_CONTACT = 2 }
  1467  enum : uint { PAN_LETT_NORMAL_WEIGHTED = 3 }
  1468  enum : uint { PAN_LETT_NORMAL_BOXED = 4 }
  1469  enum : uint { PAN_LETT_NORMAL_FLATTENED = 5 }
  1470  enum : uint { PAN_LETT_NORMAL_ROUNDED = 6 }
  1471  enum : uint { PAN_LETT_NORMAL_OFF_CENTER = 7 }
  1472  enum : uint { PAN_LETT_NORMAL_SQUARE = 8 }
  1473  enum : uint { PAN_LETT_OBLIQUE_CONTACT = 9 }
  1474  enum : uint { PAN_LETT_OBLIQUE_WEIGHTED = 10 }
  1475  enum : uint { PAN_LETT_OBLIQUE_BOXED = 11 }
  1476  enum : uint { PAN_LETT_OBLIQUE_FLATTENED = 12 }
  1477  enum : uint { PAN_LETT_OBLIQUE_ROUNDED = 13 }
  1478  enum : uint { PAN_LETT_OBLIQUE_OFF_CENTER = 14 }
  1479  enum : uint { PAN_LETT_OBLIQUE_SQUARE = 15 }
  1480  
  1481  enum : uint { PAN_MIDLINE_STANDARD_TRIMMED = 2 }
  1482  enum : uint { PAN_MIDLINE_STANDARD_POINTED = 3 }
  1483  enum : uint { PAN_MIDLINE_STANDARD_SERIFED = 4 }
  1484  enum : uint { PAN_MIDLINE_HIGH_TRIMMED = 5 }
  1485  enum : uint { PAN_MIDLINE_HIGH_POINTED = 6 }
  1486  enum : uint { PAN_MIDLINE_HIGH_SERIFED = 7 }
  1487  enum : uint { PAN_MIDLINE_CONSTANT_TRIMMED = 8 }
  1488  enum : uint { PAN_MIDLINE_CONSTANT_POINTED = 9 }
  1489  enum : uint { PAN_MIDLINE_CONSTANT_SERIFED = 10 }
  1490  enum : uint { PAN_MIDLINE_LOW_TRIMMED = 11 }
  1491  enum : uint { PAN_MIDLINE_LOW_POINTED = 12 }
  1492  enum : uint { PAN_MIDLINE_LOW_SERIFED = 13 }
  1493  
  1494  enum : uint { PAN_XHEIGHT_CONSTANT_SMALL = 2 }
  1495  enum : uint { PAN_XHEIGHT_CONSTANT_STD = 3 }
  1496  enum : uint { PAN_XHEIGHT_CONSTANT_LARGE = 4 }
  1497  enum : uint { PAN_XHEIGHT_DUCKING_SMALL = 5 }
  1498  enum : uint { PAN_XHEIGHT_DUCKING_STD = 6 }
  1499  enum : uint { PAN_XHEIGHT_DUCKING_LARGE = 7 }
  1500  
  1501  enum : uint { ELF_VENDOR_SIZE = 4 }
  1502  
  1503  struct tagEXTLOGFONTA {
  1504    LOGFONTA elfLogFont;
  1505    BYTE elfFullName[LF_FULLFACESIZE];
  1506    BYTE elfStyle[LF_FACESIZE];
  1507    DWORD elfVersion;
  1508    DWORD elfStyleSize;
  1509    DWORD elfMatch;
  1510    DWORD elfReserved;
  1511    BYTE elfVendorId[ELF_VENDOR_SIZE];
  1512    DWORD elfCulture;
  1513    PANOSE elfPanose;
  1514  }
  1515  alias tagEXTLOGFONTA EXTLOGFONTA;
  1516  alias tagEXTLOGFONTA* PEXTLOGFONTA;
  1517  alias tagEXTLOGFONTA* NPEXTLOGFONTA;
  1518  alias tagEXTLOGFONTA* LPEXTLOGFONTA;
  1519  
  1520  struct tagEXTLOGFONTW {
  1521    LOGFONTW elfLogFont;
  1522    WCHAR elfFullName[LF_FULLFACESIZE];
  1523    WCHAR elfStyle[LF_FACESIZE];
  1524    DWORD elfVersion;
  1525    DWORD elfStyleSize;
  1526    DWORD elfMatch;
  1527    DWORD elfReserved;
  1528    BYTE elfVendorId[ELF_VENDOR_SIZE];
  1529    DWORD elfCulture;
  1530    PANOSE elfPanose;
  1531  }
  1532  alias tagEXTLOGFONTW EXTLOGFONTW;
  1533  alias tagEXTLOGFONTW* PEXTLOGFONTW;
  1534  alias tagEXTLOGFONTW* NPEXTLOGFONTW;
  1535  alias tagEXTLOGFONTW* LPEXTLOGFONTW;
  1536  
  1537  // #ifdef UNICODE
  1538  // ...
  1539  // #else
  1540  alias EXTLOGFONTA EXTLOGFONT;
  1541  alias PEXTLOGFONTA PEXTLOGFONT;
  1542  alias NPEXTLOGFONTA NPEXTLOGFONT;
  1543  alias LPEXTLOGFONTA LPEXTLOGFONT;
  1544  // #endif // UNICODE
  1545  
  1546  enum : uint { ELF_VERSION = 0 }
  1547  enum : uint { ELF_CULTURE_LATIN = 0 }
  1548  
  1549  enum : uint { RASTER_FONTTYPE = 0x0001 }
  1550  enum : uint { DEVICE_FONTTYPE = 0x002 }
  1551  enum : uint { TRUETYPE_FONTTYPE = 0x004 }
  1552  
  1553  COLORREF RGB(BYTE r, BYTE g, BYTE b){ return r|(g <<8)|(b << 16); }
  1554  COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b){ return (0x02000000 | RGB(r,g,b)); }
  1555  COLORREF PALETTEINDEX(WORD i){ return (cast(COLORREF)(0x01000000 | cast(DWORD)cast(WORD)(i))); }
  1556  
  1557  enum : uint { PC_RESERVED = 0x01 }
  1558  enum : uint { PC_EXPLICIT = 0x02 }
  1559  enum : uint { PC_NOCOLLAPSE = 0x04 }
  1560  
  1561  BYTE GetRValue(COLORREF rgb){ return cast(BYTE)rgb; }
  1562  BYTE GetGValue(COLORREF rgb){ return cast(BYTE)(rgb >>> 8); }
  1563  BYTE GetBValue(COLORREF rgb){ return cast(BYTE)(rgb >>> 16); }
  1564  
  1565  enum : uint { TRANSPARENT = 1 }
  1566  enum : uint { OPAQUE = 2 }
  1567  enum : uint { BKMODE_LAST = 2 }
  1568  
  1569  enum : uint { GM_COMPATIBLE = 1 }
  1570  enum : uint { GM_ADVANCED = 2 }
  1571  enum : uint { GM_LAST = 2 }
  1572  
  1573  enum : uint { PT_CLOSEFIGURE = 0x01 }
  1574  enum : uint { PT_LINETO = 0x02 }
  1575  enum : uint { PT_BEZIERTO = 0x04 }
  1576  enum : uint { PT_MOVETO = 0x06 }
  1577  
  1578  enum : uint { MM_TEXT = 1 }
  1579  enum : uint { MM_LOMETRIC = 2 }
  1580  enum : uint { MM_HIMETRIC = 3 }
  1581  enum : uint { MM_LOENGLISH = 4 }
  1582  enum : uint { MM_HIENGLISH = 5 }
  1583  enum : uint { MM_TWIPS = 6 }
  1584  enum : uint { MM_ISOTROPIC = 7 }
  1585  enum : uint { MM_ANISOTROPIC = 8 }
  1586  
  1587  alias MM_TEXT MM_MIN;
  1588  alias MM_ANISOTROPIC MM_MAX;
  1589  alias MM_TWIPS MM_MAX_FIXEDSCALE;
  1590  
  1591  enum : uint { ABSOLUTE = 1 }
  1592  enum : uint { RELATIVE = 2 }
  1593  
  1594  enum : uint { WHITE_BRUSH = 0 }
  1595  enum : uint { LTGRAY_BRUSH = 1 }
  1596  enum : uint { GRAY_BRUSH = 2 }
  1597  enum : uint { DKGRAY_BRUSH = 3 }
  1598  enum : uint { BLACK_BRUSH = 4 }
  1599  enum : uint { NULL_BRUSH = 5 }
  1600  alias NULL_BRUSH HOLLOW_BRUSH;
  1601  enum : uint { WHITE_PEN = 6 }
  1602  enum : uint { BLACK_PEN = 7 }
  1603  enum : uint { NULL_PEN = 8 }
  1604  enum : uint { OEM_FIXED_FONT = 10 }
  1605  enum : uint { ANSI_FIXED_FONT = 11 }
  1606  enum : uint { ANSI_VAR_FONT = 12 }
  1607  enum : uint { SYSTEM_FONT = 13 }
  1608  enum : uint { DEVICE_DEFAULT_FONT = 14 }
  1609  enum : uint { DEFAULT_PALETTE = 15 }
  1610  enum : uint { SYSTEM_FIXED_FONT = 16 }
  1611  
  1612  // #if(WINVER >= 0x0400)
  1613  enum : uint { DEFAULT_GUI_FONT = 17 }
  1614  // #endif /* WINVER >= 0x0400 */
  1615  
  1616  // #if (_WIN32_WINNT >= 0x0500)
  1617  enum : uint { DC_BRUSH = 18 }
  1618  enum : uint { DC_PEN = 19 }
  1619  // #endif
  1620  
  1621  // #if (_WIN32_WINNT >= 0x0500)
  1622  enum : uint { STOCK_LAST = 19 }
  1623  // #elif (WINVER >= 0x0400)
  1624  // #...
  1625  // #else
  1626  // #...
  1627  // #endif
  1628  
  1629  enum : uint { CLR_INVALID = 0xFFFFFFFF }
  1630  
  1631  enum : uint { BS_SOLID = 0 }
  1632  enum : uint { BS_NULL = 1 }
  1633  alias BS_NULL BS_HOLLOW;
  1634  enum : uint { BS_HATCHED = 2 }
  1635  enum : uint { BS_PATTERN = 3 }
  1636  enum : uint { BS_INDEXED = 4 }
  1637  enum : uint { BS_DIBPATTERN = 5 }
  1638  enum : uint { BS_DIBPATTERNPT = 6 }
  1639  enum : uint { BS_PATTERN8X8 = 7 }
  1640  enum : uint { BS_DIBPATTERN8X8 = 8 }
  1641  enum : uint { BS_MONOPATTERN = 9 }
  1642  
  1643  enum : uint { HS_HORIZONTAL = 0 }
  1644  enum : uint { HS_VERTICAL = 1 }
  1645  enum : uint { HS_FDIAGONAL = 2 }
  1646  enum : uint { HS_BDIAGONAL = 3 }
  1647  enum : uint { HS_CROSS = 4 }
  1648  enum : uint { HS_DIAGCROSS = 5 }
  1649  
  1650  enum : uint { PS_SOLID = 0 }
  1651  enum : uint { PS_DASH = 1 }
  1652  enum : uint { PS_DOT = 2 }
  1653  enum : uint { PS_DASHDOT = 3 }
  1654  enum : uint { PS_DASHDOTDOT = 4 }
  1655  enum : uint { PS_NULL = 5 }
  1656  enum : uint { PS_INSIDEFRAME = 6 }
  1657  enum : uint { PS_USERSTYLE = 7 }
  1658  enum : uint { PS_ALTERNATE = 8 }
  1659  enum : uint { PS_STYLE_MASK = 0x0000000F }
  1660  
  1661  enum : uint { PS_ENDCAP_ROUND = 0x00000000 }
  1662  enum : uint { PS_ENDCAP_SQUARE = 0x00000100 }
  1663  enum : uint { PS_ENDCAP_FLAT = 0x00000200 }
  1664  enum : uint { PS_ENDCAP_MASK = 0x00000F00 }
  1665  
  1666  enum : uint { PS_JOIN_ROUND = 0x00000000 }
  1667  enum : uint { PS_JOIN_BEVEL = 0x00001000 }
  1668  enum : uint { PS_JOIN_MITER = 0x00002000 }
  1669  enum : uint { PS_JOIN_MASK = 0x0000F000 }
  1670  
  1671  enum : uint { PS_COSMETIC = 0x00000000 }
  1672  enum : uint { PS_GEOMETRIC = 0x00010000 }
  1673  enum : uint { PS_TYPE_MASK = 0x000F0000 }
  1674  
  1675  enum : uint { AD_COUNTERCLOCKWISE = 1 }
  1676  enum : uint { AD_CLOCKWISE = 2 }
  1677  
  1678  enum : uint { DRIVERVERSION = 0 }
  1679  enum : uint { TECHNOLOGY = 2 }
  1680  enum : uint { HORZSIZE = 4 }
  1681  enum : uint { VERTSIZE = 6 }
  1682  enum : uint { HORZRES = 8 }
  1683  enum : uint { VERTRES = 10 }
  1684  enum : uint { BITSPIXEL = 12 }
  1685  enum : uint { PLANES = 14 }
  1686  enum : uint { NUMBRUSHES = 16 }
  1687  enum : uint { NUMPENS = 18 }
  1688  enum : uint { NUMMARKERS = 20 }
  1689  enum : uint { NUMFONTS = 22 }
  1690  enum : uint { NUMCOLORS = 24 }
  1691  enum : uint { PDEVICESIZE = 26 }
  1692  enum : uint { CURVECAPS = 28 }
  1693  enum : uint { LINECAPS = 30 }
  1694  enum : uint { POLYGONALCAPS = 32 }
  1695  enum : uint { TEXTCAPS = 34 }
  1696  enum : uint { CLIPCAPS = 36 }
  1697  enum : uint { RASTERCAPS = 38 }
  1698  enum : uint { ASPECTX = 40 }
  1699  enum : uint { ASPECTY = 42 }
  1700  enum : uint { ASPECTXY = 44 }
  1701  
  1702  enum : uint { LOGPIXELSX = 88 }
  1703  enum : uint { LOGPIXELSY = 90 }
  1704  
  1705  enum : uint { SIZEPALETTE = 104 }
  1706  enum : uint { NUMRESERVED = 106 }
  1707  enum : uint { COLORRES = 108 }
  1708  
  1709  enum : uint { PHYSICALWIDTH = 110 }
  1710  enum : uint { PHYSICALHEIGHT = 111 }
  1711  enum : uint { PHYSICALOFFSETX = 112 }
  1712  enum : uint { PHYSICALOFFSETY = 113 }
  1713  enum : uint { SCALINGFACTORX = 114 }
  1714  enum : uint { SCALINGFACTORY = 115 }
  1715  
  1716  enum : uint { VREFRESH = 116 }
  1717  
  1718  enum : uint { DESKTOPVERTRES = 117 }
  1719  
  1720  enum : uint { DESKTOPHORZRES = 118 }
  1721  
  1722  enum : uint { BLTALIGNMENT = 119 }
  1723  
  1724  // #if(WINVER >= 0x0500)
  1725  enum : uint { SHADEBLENDCAPS = 120 }
  1726  enum : uint { COLORMGMTCAPS = 121 }
  1727  // #endif /* WINVER >= 0x0500 */
  1728  
  1729  // #ifndef NOGDICAPMASKS
  1730  
  1731  enum : uint { DT_PLOTTER = 0 }
  1732  enum : uint { DT_RASDISPLAY = 1 }
  1733  enum : uint { DT_RASPRINTER = 2 }
  1734  enum : uint { DT_RASCAMERA = 3 }
  1735  enum : uint { DT_CHARSTREAM = 4 }
  1736  enum : uint { DT_METAFILE = 5 }
  1737  enum : uint { DT_DISPFILE = 6 }
  1738  
  1739  enum : uint { CC_NONE = 0 }
  1740  enum : uint { CC_CIRCLES = 1 }
  1741  enum : uint { CC_PIE = 2 }
  1742  enum : uint { CC_CHORD = 4 }
  1743  enum : uint { CC_ELLIPSES = 8 }
  1744  enum : uint { CC_WIDE = 16 }
  1745  enum : uint { CC_STYLED = 32 }
  1746  enum : uint { CC_WIDESTYLED = 64 }
  1747  enum : uint { CC_INTERIORS = 128 }
  1748  enum : uint { CC_ROUNDRECT = 256 }
  1749  
  1750  enum : uint { LC_NONE = 0 }
  1751  enum : uint { LC_POLYLINE = 2 }
  1752  enum : uint { LC_MARKER = 4 }
  1753  enum : uint { LC_POLYMARKER = 8 }
  1754  enum : uint { LC_WIDE = 16 }
  1755  enum : uint { LC_STYLED = 32 }
  1756  enum : uint { LC_WIDESTYLED = 64 }
  1757  enum : uint { LC_INTERIORS = 128 }
  1758  
  1759  enum : uint { PC_NONE = 0 }
  1760  enum : uint { PC_POLYGON = 1 }
  1761  enum : uint { PC_RECTANGLE = 2 }
  1762  enum : uint { PC_WINDPOLYGON = 4 }
  1763  enum : uint { PC_TRAPEZOID = 4 }
  1764  enum : uint { PC_SCANLINE = 8 }
  1765  enum : uint { PC_WIDE = 16 }
  1766  enum : uint { PC_STYLED = 32 }
  1767  enum : uint { PC_WIDESTYLED = 64 }
  1768  enum : uint { PC_INTERIORS = 128 }
  1769  enum : uint { PC_POLYPOLYGON = 256 }
  1770  enum : uint { PC_PATHS = 512 }
  1771  
  1772  enum : uint { CP_NONE = 0 }
  1773  enum : uint { CP_RECTANGLE = 1 }
  1774  enum : uint { CP_REGION = 2 }
  1775  
  1776  enum : uint { TC_OP_CHARACTER = 0x00000001 }
  1777  enum : uint { TC_OP_STROKE = 0x00000002 }
  1778  enum : uint { TC_CP_STROKE = 0x00000004 }
  1779  enum : uint { TC_CR_90 = 0x00000008 }
  1780  enum : uint { TC_CR_ANY = 0x00000010 }
  1781  enum : uint { TC_SF_X_YINDEP = 0x00000020 }
  1782  enum : uint { TC_SA_DOUBLE = 0x00000040 }
  1783  enum : uint { TC_SA_INTEGER = 0x00000080 }
  1784  enum : uint { TC_SA_CONTIN = 0x00000100 }
  1785  enum : uint { TC_EA_DOUBLE = 0x00000200 }
  1786  enum : uint { TC_IA_ABLE = 0x00000400 }
  1787  enum : uint { TC_UA_ABLE = 0x00000800 }
  1788  enum : uint { TC_SO_ABLE = 0x00001000 }
  1789  enum : uint { TC_RA_ABLE = 0x00002000 }
  1790  enum : uint { TC_VA_ABLE = 0x00004000 }
  1791  enum : uint { TC_RESERVED = 0x00008000 }
  1792  enum : uint { TC_SCROLLBLT = 0x00010000 }
  1793  
  1794  // #endif /* NOGDICAPMASKS */
  1795  
  1796  // #define RC_NONE
  1797  enum : uint { RC_BITBLT = 1 }
  1798  enum : uint { RC_BANDING = 2 }
  1799  enum : uint { RC_SCALING = 4 }
  1800  enum : uint { RC_BITMAP64 = 8 }
  1801  enum : uint { RC_GDI20_OUTPUT = 0x0010 }
  1802  enum : uint { RC_GDI20_STATE = 0x0020 }
  1803  enum : uint { RC_SAVEBITMAP = 0x0040 }
  1804  enum : uint { RC_DI_BITMAP = 0x0080 }
  1805  enum : uint { RC_PALETTE = 0x0100 }
  1806  enum : uint { RC_DIBTODEV = 0x0200 }
  1807  enum : uint { RC_BIGFONT = 0x0400 }
  1808  enum : uint { RC_STRETCHBLT = 0x0800 }
  1809  enum : uint { RC_FLOODFILL = 0x1000 }
  1810  enum : uint { RC_STRETCHDIB = 0x2000 }
  1811  enum : uint { RC_OP_DX_OUTPUT = 0x4000 }
  1812  enum : uint { RC_DEVBITS = 0x8000 }
  1813  
  1814  // #if(WINVER >= 0x0500)
  1815  
  1816  enum : uint { SB_NONE = 0x00000000 }
  1817  enum : uint { SB_CONST_ALPHA = 0x00000001 }
  1818  enum : uint { SB_PIXEL_ALPHA = 0x00000002 }
  1819  enum : uint { SB_PREMULT_ALPHA = 0x00000004 }
  1820  
  1821  enum : uint { SB_GRAD_RECT = 0x00000010 }
  1822  enum : uint { SB_GRAD_TRI = 0x00000020 }
  1823  
  1824  enum : uint { CM_NONE = 0x00000000 }
  1825  enum : uint { CM_DEVICE_ICM = 0x00000001 }
  1826  enum : uint { CM_GAMMA_RAMP = 0x00000002 }
  1827  enum : uint { CM_CMYK_COLOR = 0x00000004 }
  1828  
  1829  // #endif /* WINVER >= 0x0500 */
  1830  
  1831  enum : uint { DIB_RGB_COLORS = 0 }
  1832  enum : uint { DIB_PAL_COLORS = 1 }
  1833  
  1834  enum : uint { SYSPAL_ERROR = 0 }
  1835  enum : uint { SYSPAL_STATIC = 1 }
  1836  enum : uint { SYSPAL_NOSTATIC = 2 }
  1837  enum : uint { SYSPAL_NOSTATIC256 = 3 }
  1838  
  1839  enum : uint { CBM_INIT = 0x04 }
  1840  
  1841  enum : uint { FLOODFILLBORDER = 0 }
  1842  enum : uint { FLOODFILLSURFACE = 1 }
  1843  
  1844  enum : uint { CCHDEVICENAME = 32 }
  1845  
  1846  enum : uint { CCHFORMNAME = 32 }
  1847  
  1848  struct _devicemodeA {
  1849    BYTE dmDeviceName[CCHDEVICENAME];
  1850    WORD dmSpecVersion;
  1851    WORD dmDriverVersion;
  1852    WORD dmSize;
  1853    WORD dmDriverExtra;
  1854    DWORD dmFields;
  1855  union {
  1856  struct {
  1857    short dmOrientation;
  1858    short dmPaperSize;
  1859    short dmPaperLength;
  1860    short dmPaperWidth;
  1861  }
  1862  
  1863    POINTL dmPosition;
  1864  }
  1865  
  1866    short dmScale;
  1867    short dmCopies;
  1868    short dmDefaultSource;
  1869    short dmPrintQuality;
  1870    short dmColor;
  1871    short dmDuplex;
  1872    short dmYResolution;
  1873    short dmTTOption;
  1874    short dmCollate;
  1875    BYTE dmFormName[CCHFORMNAME];
  1876    WORD dmLogPixels;
  1877    DWORD dmBitsPerPel;
  1878    DWORD dmPelsWidth;
  1879    DWORD dmPelsHeight;
  1880  union {
  1881    DWORD dmDisplayFlags;
  1882    DWORD dmNup;
  1883  }
  1884  
  1885    DWORD dmDisplayFrequency;
  1886  // #if(WINVER >= 0x0400)
  1887    DWORD dmICMMethod;
  1888    DWORD dmICMIntent;
  1889    DWORD dmMediaType;
  1890    DWORD dmDitherType;
  1891    DWORD dmReserved1;
  1892    DWORD dmReserved2;
  1893  // #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
  1894    DWORD dmPanningWidth;
  1895    DWORD dmPanningHeight;
  1896  // #endif
  1897  // #endif /* WINVER >= 0x0400 */
  1898  }
  1899  alias _devicemodeA DEVMODEA;
  1900  alias _devicemodeA* PDEVMODEA;
  1901  alias _devicemodeA* NPDEVMODEA;
  1902  alias _devicemodeA* LPDEVMODEA;
  1903  
  1904  struct _devicemodeW {
  1905    WCHAR dmDeviceName[CCHDEVICENAME];
  1906    WORD dmSpecVersion;
  1907    WORD dmDriverVersion;
  1908    WORD dmSize;
  1909    WORD dmDriverExtra;
  1910    DWORD dmFields;
  1911  union {
  1912  struct {
  1913    short dmOrientation;
  1914    short dmPaperSize;
  1915    short dmPaperLength;
  1916    short dmPaperWidth;
  1917  }
  1918  
  1919    POINTL dmPosition;
  1920  }
  1921  
  1922    short dmScale;
  1923    short dmCopies;
  1924    short dmDefaultSource;
  1925    short dmPrintQuality;
  1926    short dmColor;
  1927    short dmDuplex;
  1928    short dmYResolution;
  1929    short dmTTOption;
  1930    short dmCollate;
  1931    WCHAR dmFormName[CCHFORMNAME];
  1932    WORD dmLogPixels;
  1933    DWORD dmBitsPerPel;
  1934    DWORD dmPelsWidth;
  1935    DWORD dmPelsHeight;
  1936  union {
  1937    DWORD dmDisplayFlags;
  1938    DWORD dmNup;
  1939  }
  1940  
  1941    DWORD dmDisplayFrequency;
  1942  // #if(WINVER >= 0x0400)
  1943    DWORD dmICMMethod;
  1944    DWORD dmICMIntent;
  1945    DWORD dmMediaType;
  1946    DWORD dmDitherType;
  1947    DWORD dmReserved1;
  1948    DWORD dmReserved2;
  1949  // #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
  1950    DWORD dmPanningWidth;
  1951    DWORD dmPanningHeight;
  1952  // #endif
  1953  // #endif /* WINVER >= 0x0400 */
  1954  }
  1955  alias _devicemodeW DEVMODEW;
  1956  alias _devicemodeW* PDEVMODEW;
  1957  alias _devicemodeW* NPDEVMODEW;
  1958  alias _devicemodeW* LPDEVMODEW;
  1959  
  1960  // #ifdef UNICODE
  1961  // ...
  1962  // #else
  1963  alias DEVMODEA DEVMODE;
  1964  alias PDEVMODEA PDEVMODE;
  1965  alias NPDEVMODEA NPDEVMODE;
  1966  alias LPDEVMODEA LPDEVMODE;
  1967  // #endif // UNICODE
  1968  
  1969  // #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
  1970  enum : uint { DM_SPECVERSION = 0x0401 }
  1971  // #elif (WINVER >= 0x0400)
  1972  // #...
  1973  // #else
  1974  // #...
  1975  // #endif /* WINVER */
  1976  
  1977  enum : uint { DM_ORIENTATION = 0x00000001 }
  1978  enum : uint { DM_PAPERSIZE = 0x00000002 }
  1979  enum : uint { DM_PAPERLENGTH = 0x00000004 }
  1980  enum : uint { DM_PAPERWIDTH = 0x00000008 }
  1981  enum : uint { DM_SCALE = 0x00000010 }
  1982  // #if(WINVER >= 0x0500)
  1983  enum : uint { DM_POSITION = 0x00000020 }
  1984  enum : uint { DM_NUP = 0x00000040 }
  1985  // #endif /* WINVER >= 0x0500 */
  1986  enum : uint { DM_COPIES = 0x00000100 }
  1987  enum : uint { DM_DEFAULTSOURCE = 0x00000200 }
  1988  enum : uint { DM_PRINTQUALITY = 0x00000400 }
  1989  enum : uint { DM_COLOR = 0x00000800 }
  1990  enum : uint { DM_DUPLEX = 0x00001000 }
  1991  enum : uint { DM_YRESOLUTION = 0x00002000 }
  1992  enum : uint { DM_TTOPTION = 0x00004000 }
  1993  enum : uint { DM_COLLATE = 0x00008000 }
  1994  enum : uint { DM_FORMNAME = 0x00010000 }
  1995  enum : uint { DM_LOGPIXELS = 0x00020000 }
  1996  enum : uint { DM_BITSPERPEL = 0x00040000 }
  1997  enum : uint { DM_PELSWIDTH = 0x00080000 }
  1998  enum : uint { DM_PELSHEIGHT = 0x00100000 }
  1999  enum : uint { DM_DISPLAYFLAGS = 0x00200000 }
  2000  enum : uint { DM_DISPLAYFREQUENCY = 0x00400000 }
  2001  // #if(WINVER >= 0x0400)
  2002  enum : uint { DM_ICMMETHOD = 0x00800000 }
  2003  enum : uint { DM_ICMINTENT = 0x01000000 }
  2004  enum : uint { DM_MEDIATYPE = 0x02000000 }
  2005  enum : uint { DM_DITHERTYPE = 0x04000000 }
  2006  enum : uint { DM_PANNINGWIDTH = 0x08000000 }
  2007  enum : uint { DM_PANNINGHEIGHT = 0x10000000 }
  2008  // #endif /* WINVER >= 0x0400 */
  2009  
  2010  enum : uint { DMORIENT_PORTRAIT = 1 }
  2011  enum : uint { DMORIENT_LANDSCAPE = 2 }
  2012  
  2013  enum { DMPAPER_FIRST = 1 }
  2014  enum : uint { DMPAPER_LETTER = 1 }
  2015  enum : uint { DMPAPER_LETTERSMALL = 2 }
  2016  enum : uint { DMPAPER_TABLOID = 3 }
  2017  enum : uint { DMPAPER_LEDGER = 4 }
  2018  enum : uint { DMPAPER_LEGAL = 5 }
  2019  enum : uint { DMPAPER_STATEMENT = 6 }
  2020  enum : uint { DMPAPER_EXECUTIVE = 7 }
  2021  enum : uint { DMPAPER_A3 = 8 }
  2022  enum : uint { DMPAPER_A4 = 9 }
  2023  enum : uint { DMPAPER_A4SMALL = 10 }
  2024  enum : uint { DMPAPER_A5 = 11 }
  2025  enum : uint { DMPAPER_B4 = 12 }
  2026  enum : uint { DMPAPER_B5 = 13 }
  2027  enum : uint { DMPAPER_FOLIO = 14 }
  2028  enum : uint { DMPAPER_QUARTO = 15 }
  2029  enum : uint { DMPAPER_10X14 = 16 }
  2030  enum : uint { DMPAPER_11X17 = 17 }
  2031  enum : uint { DMPAPER_NOTE = 18 }
  2032  enum : uint { DMPAPER_ENV_9 = 19 }
  2033  enum : uint { DMPAPER_ENV_10 = 20 }
  2034  enum : uint { DMPAPER_ENV_11 = 21 }
  2035  enum : uint { DMPAPER_ENV_12 = 22 }
  2036  enum : uint { DMPAPER_ENV_14 = 23 }
  2037  enum : uint { DMPAPER_CSHEET = 24 }
  2038  enum : uint { DMPAPER_DSHEET = 25 }
  2039  enum : uint { DMPAPER_ESHEET = 26 }
  2040  enum : uint { DMPAPER_ENV_DL = 27 }
  2041  enum : uint { DMPAPER_ENV_C5 = 28 }
  2042  enum : uint { DMPAPER_ENV_C3 = 29 }
  2043  enum : uint { DMPAPER_ENV_C4 = 30 }
  2044  enum : uint { DMPAPER_ENV_C6 = 31 }
  2045  enum : uint { DMPAPER_ENV_C65 = 32 }
  2046  enum : uint { DMPAPER_ENV_B4 = 33 }
  2047  enum : uint { DMPAPER_ENV_B5 = 34 }
  2048  enum : uint { DMPAPER_ENV_B6 = 35 }
  2049  enum : uint { DMPAPER_ENV_ITALY = 36 }
  2050  enum : uint { DMPAPER_ENV_MONARCH = 37 }
  2051  enum : uint { DMPAPER_ENV_PERSONAL = 38 }
  2052  enum : uint { DMPAPER_FANFOLD_US = 39 }
  2053  enum : uint { DMPAPER_FANFOLD_STD_GERMAN = 40 }
  2054  enum : uint { DMPAPER_FANFOLD_LGL_GERMAN = 41 }
  2055  // #if(WINVER >= 0x0400)
  2056  enum : uint { DMPAPER_ISO_B4 = 42 }
  2057  enum : uint { DMPAPER_JAPANESE_POSTCARD = 43 }
  2058  enum : uint { DMPAPER_9X11 = 44 }
  2059  enum : uint { DMPAPER_10X11 = 45 }
  2060  enum : uint { DMPAPER_15X11 = 46 }
  2061  enum : uint { DMPAPER_ENV_INVITE = 47 }
  2062  enum : uint { DMPAPER_RESERVED_48 = 48 }
  2063  enum : uint { DMPAPER_RESERVED_49 = 49 }
  2064  enum : uint { DMPAPER_LETTER_EXTRA = 50 }
  2065  enum : uint { DMPAPER_LEGAL_EXTRA = 51 }
  2066  enum : uint { DMPAPER_TABLOID_EXTRA = 52 }
  2067  enum : uint { DMPAPER_A4_EXTRA = 53 }
  2068  enum : uint { DMPAPER_LETTER_TRANSVERSE = 54 }
  2069  enum : uint { DMPAPER_A4_TRANSVERSE = 55 }
  2070  enum : uint { DMPAPER_LETTER_EXTRA_TRANSVERSE = 56 }
  2071  enum : uint { DMPAPER_A_PLUS = 57 }
  2072  enum : uint { DMPAPER_B_PLUS = 58 }
  2073  enum : uint { DMPAPER_LETTER_PLUS = 59 }
  2074  enum : uint { DMPAPER_A4_PLUS = 60 }
  2075  enum : uint { DMPAPER_A5_TRANSVERSE = 61 }
  2076  enum : uint { DMPAPER_B5_TRANSVERSE = 62 }
  2077  enum : uint { DMPAPER_A3_EXTRA = 63 }
  2078  enum : uint { DMPAPER_A5_EXTRA = 64 }
  2079  enum : uint { DMPAPER_B5_EXTRA = 65 }
  2080  enum : uint { DMPAPER_A2 = 66 }
  2081  enum : uint { DMPAPER_A3_TRANSVERSE = 67 }
  2082  enum : uint { DMPAPER_A3_EXTRA_TRANSVERSE = 68 }
  2083  // #endif /* WINVER >= 0x0400 */
  2084  
  2085  // #if(WINVER >= 0x0500)
  2086  enum : uint { DMPAPER_DBL_JAPANESE_POSTCARD = 69 }
  2087  enum : uint { DMPAPER_A6 = 70 }
  2088  enum : uint { DMPAPER_JENV_KAKU2 = 71 }
  2089  enum : uint { DMPAPER_JENV_KAKU3 = 72 }
  2090  enum : uint { DMPAPER_JENV_CHOU3 = 73 }
  2091  enum : uint { DMPAPER_JENV_CHOU4 = 74 }
  2092  enum : uint { DMPAPER_LETTER_ROTATED = 75 }
  2093  enum : uint { DMPAPER_A3_ROTATED = 76 }
  2094  enum : uint { DMPAPER_A4_ROTATED = 77 }
  2095  enum : uint { DMPAPER_A5_ROTATED = 78 }
  2096  enum : uint { DMPAPER_B4_JIS_ROTATED = 79 }
  2097  enum : uint { DMPAPER_B5_JIS_ROTATED = 80 }
  2098  enum : uint { DMPAPER_JAPANESE_POSTCARD_ROTATED = 81 }
  2099  enum : uint { DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED = 82 }
  2100  enum : uint { DMPAPER_A6_ROTATED = 83 }
  2101  enum : uint { DMPAPER_JENV_KAKU2_ROTATED = 84 }
  2102  enum : uint { DMPAPER_JENV_KAKU3_ROTATED = 85 }
  2103  enum : uint { DMPAPER_JENV_CHOU3_ROTATED = 86 }
  2104  enum : uint { DMPAPER_JENV_CHOU4_ROTATED = 87 }
  2105  enum : uint { DMPAPER_B6_JIS = 88 }
  2106  enum : uint { DMPAPER_B6_JIS_ROTATED = 89 }
  2107  enum : uint { DMPAPER_12X11 = 90 }
  2108  enum : uint { DMPAPER_JENV_YOU4 = 91 }
  2109  enum : uint { DMPAPER_JENV_YOU4_ROTATED = 92 }
  2110  enum : uint { DMPAPER_P16K = 93 }
  2111  enum : uint { DMPAPER_P32K = 94 }
  2112  enum : uint { DMPAPER_P32KBIG = 95 }
  2113  enum : uint { DMPAPER_PENV_1 = 96 }
  2114  enum : uint { DMPAPER_PENV_2 = 97 }
  2115  enum : uint { DMPAPER_PENV_3 = 98 }
  2116  enum : uint { DMPAPER_PENV_4 = 99 }
  2117  enum : uint { DMPAPER_PENV_5 = 100 }
  2118  enum : uint { DMPAPER_PENV_6 = 101 }
  2119  enum : uint { DMPAPER_PENV_7 = 102 }
  2120  enum : uint { DMPAPER_PENV_8 = 103 }
  2121  enum : uint { DMPAPER_PENV_9 = 104 }
  2122  enum : uint { DMPAPER_PENV_10 = 105 }
  2123  enum : uint { DMPAPER_P16K_ROTATED = 106 }
  2124  enum : uint { DMPAPER_P32K_ROTATED = 107 }
  2125  enum : uint { DMPAPER_P32KBIG_ROTATED = 108 }
  2126  enum : uint { DMPAPER_PENV_1_ROTATED = 109 }
  2127  enum : uint { DMPAPER_PENV_2_ROTATED = 110 }
  2128  enum : uint { DMPAPER_PENV_3_ROTATED = 111 }
  2129  enum : uint { DMPAPER_PENV_4_ROTATED = 112 }
  2130  enum : uint { DMPAPER_PENV_5_ROTATED = 113 }
  2131  enum : uint { DMPAPER_PENV_6_ROTATED = 114 }
  2132  enum : uint { DMPAPER_PENV_7_ROTATED = 115 }
  2133  enum : uint { DMPAPER_PENV_8_ROTATED = 116 }
  2134  enum : uint { DMPAPER_PENV_9_ROTATED = 117 }
  2135  enum : uint { DMPAPER_PENV_10_ROTATED = 118 }
  2136  // #endif /* WINVER >= 0x0500 */
  2137  
  2138  // #if (WINVER >= 0x0500)
  2139  alias DMPAPER_PENV_10_ROTATED DMPAPER_LAST;
  2140  // #elif (WINVER >= 0x0400)
  2141  // #...
  2142  // #else
  2143  // #...
  2144  // #endif
  2145  
  2146  enum : uint { DMPAPER_USER = 256 }
  2147  
  2148  enum { DMBIN_FIRST = 1 }
  2149  enum : uint { DMBIN_UPPER = 1 }
  2150  enum : uint { DMBIN_ONLYONE = 1 }
  2151  enum : uint { DMBIN_LOWER = 2 }
  2152  enum : uint { DMBIN_MIDDLE = 3 }
  2153  enum : uint { DMBIN_MANUAL = 4 }
  2154  enum : uint { DMBIN_ENVELOPE = 5 }
  2155  enum : uint { DMBIN_ENVMANUAL = 6 }
  2156  enum : uint { DMBIN_AUTO = 7 }
  2157  enum : uint { DMBIN_TRACTOR = 8 }
  2158  enum : uint { DMBIN_SMALLFMT = 9 }
  2159  enum : uint { DMBIN_LARGEFMT = 10 }
  2160  enum : uint { DMBIN_LARGECAPACITY = 11 }
  2161  enum : uint { DMBIN_CASSETTE = 14 }
  2162  enum : uint { DMBIN_FORMSOURCE = 15 }
  2163  alias DMBIN_FORMSOURCE DMBIN_LAST;
  2164  
  2165  enum : uint { DMBIN_USER = 256 }
  2166  
  2167  enum { DMRES_DRAFT = -1 }
  2168  enum { DMRES_LOW = -2 }
  2169  enum { DMRES_MEDIUM = -3 }
  2170  enum { DMRES_HIGH = -4 }
  2171  
  2172  enum : uint { DMCOLOR_MONOCHROME = 1 }
  2173  enum : uint { DMCOLOR_COLOR = 2 }
  2174  
  2175  enum : uint { DMDUP_SIMPLEX = 1 }
  2176  enum : uint { DMDUP_VERTICAL = 2 }
  2177  enum : uint { DMDUP_HORIZONTAL = 3 }
  2178  
  2179  enum : uint { DMTT_BITMAP = 1 }
  2180  enum : uint { DMTT_DOWNLOAD = 2 }
  2181  enum : uint { DMTT_SUBDEV = 3 }
  2182  // #if(WINVER >= 0x0400)
  2183  enum : uint { DMTT_DOWNLOAD_OUTLINE = 4 }
  2184  // #endif /* WINVER >= 0x0400 */
  2185  
  2186  enum : uint { DMCOLLATE_FALSE = 0 }
  2187  enum : uint { DMCOLLATE_TRUE = 1 }
  2188  
  2189  enum : uint { DMDISPLAYFLAGS_TEXTMODE = 0x00000004 }
  2190  
  2191  enum : uint { DMNUP_SYSTEM = 1 }
  2192  enum : uint { DMNUP_ONEUP = 2 }
  2193  
  2194  // #if(WINVER >= 0x0400)
  2195  
  2196  enum : uint { DMICMMETHOD_NONE = 1 }
  2197  enum : uint { DMICMMETHOD_SYSTEM = 2 }
  2198  enum : uint { DMICMMETHOD_DRIVER = 3 }
  2199  enum : uint { DMICMMETHOD_DEVICE = 4 }
  2200  
  2201  enum : uint { DMICMMETHOD_USER = 256 }
  2202  
  2203  enum : uint { DMICM_SATURATE = 1 }
  2204  enum : uint { DMICM_CONTRAST = 2 }
  2205  enum : uint { DMICM_COLORIMETRIC = 3 }
  2206  enum : uint { DMICM_ABS_COLORIMETRIC = 4 }
  2207  
  2208  enum : uint { DMICM_USER = 256 }
  2209  
  2210  enum : uint { DMMEDIA_STANDARD = 1 }
  2211  enum : uint { DMMEDIA_TRANSPARENCY = 2 }
  2212  enum : uint { DMMEDIA_GLOSSY = 3 }
  2213  
  2214  enum : uint { DMMEDIA_USER = 256 }
  2215  
  2216  enum : uint { DMDITHER_NONE = 1 }
  2217  enum : uint { DMDITHER_COARSE = 2 }
  2218  enum : uint { DMDITHER_FINE = 3 }
  2219  enum : uint { DMDITHER_LINEART = 4 }
  2220  enum : uint { DMDITHER_ERRORDIFFUSION = 5 }
  2221  enum : uint { DMDITHER_RESERVED6 = 6 }
  2222  enum : uint { DMDITHER_RESERVED7 = 7 }
  2223  enum : uint { DMDITHER_RESERVED8 = 8 }
  2224  enum : uint { DMDITHER_RESERVED9 = 9 }
  2225  enum : uint { DMDITHER_GRAYSCALE = 10 }
  2226  
  2227  enum : uint { DMDITHER_USER = 256 }
  2228  // #endif /* WINVER >= 0x0400 */
  2229  
  2230  struct _DISPLAY_DEVICEA {
  2231    DWORD cb;
  2232    CHAR DeviceName[32];
  2233    CHAR DeviceString[128];
  2234    DWORD StateFlags;
  2235    CHAR DeviceID[128];
  2236    CHAR DeviceKey[128];
  2237  }
  2238  alias _DISPLAY_DEVICEA DISPLAY_DEVICEA;
  2239  alias _DISPLAY_DEVICEA* PDISPLAY_DEVICEA;
  2240  alias _DISPLAY_DEVICEA* LPDISPLAY_DEVICEA;
  2241  
  2242  struct _DISPLAY_DEVICEW {
  2243    DWORD cb;
  2244    WCHAR DeviceName[32];
  2245    WCHAR DeviceString[128];
  2246    DWORD StateFlags;
  2247    WCHAR DeviceID[128];
  2248    WCHAR DeviceKey[128];
  2249  }
  2250  alias _DISPLAY_DEVICEW DISPLAY_DEVICEW;
  2251  alias _DISPLAY_DEVICEW* PDISPLAY_DEVICEW;
  2252  alias _DISPLAY_DEVICEW* LPDISPLAY_DEVICEW;
  2253  
  2254  // #ifdef UNICODE
  2255  // ...
  2256  // #else
  2257  alias DISPLAY_DEVICEA DISPLAY_DEVICE;
  2258  alias PDISPLAY_DEVICEA PDISPLAY_DEVICE;
  2259  alias LPDISPLAY_DEVICEA LPDISPLAY_DEVICE;
  2260  // #endif // UNICODE
  2261  
  2262  enum : uint { DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001 }
  2263  enum : uint { DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002 }
  2264  enum : uint { DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004 }
  2265  enum : uint { DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008 }
  2266  enum : uint { DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010 }
  2267  enum : uint { DISPLAY_DEVICE_REMOVABLE = 0x00000020 }
  2268  enum : uint { DISPLAY_DEVICE_MODESPRUNED = 0x08000000 }
  2269  enum : uint { DISPLAY_DEVICE_REMOTE = 0x04000000 }
  2270  enum : uint { DISPLAY_DEVICE_DISCONNECT = 0x02000000 }
  2271  
  2272  enum : uint { DISPLAY_DEVICE_ACTIVE = 0x00000001 }
  2273  enum : uint { DISPLAY_DEVICE_ATTACHED = 0x00000002 }
  2274  
  2275  enum : uint { RDH_RECTANGLES = 1 }
  2276  
  2277  struct _RGNDATAHEADER {
  2278    DWORD dwSize;
  2279    DWORD iType;
  2280    DWORD nCount;
  2281    DWORD nRgnSize;
  2282    RECT rcBound;
  2283  }
  2284  alias _RGNDATAHEADER RGNDATAHEADER;
  2285  alias _RGNDATAHEADER* PRGNDATAHEADER;
  2286  
  2287  struct _RGNDATA {
  2288    RGNDATAHEADER rdh;
  2289    char Buffer[1];
  2290  }
  2291  alias _RGNDATA RGNDATA;
  2292  alias _RGNDATA* PRGNDATA;
  2293  alias _RGNDATA* NPRGNDATA;
  2294  alias _RGNDATA* LPRGNDATA;
  2295  
  2296  enum : uint { SYSRGN = 4 }
  2297  
  2298  struct _ABC {
  2299    int abcA;
  2300    UINT abcB;
  2301    int abcC;
  2302  }
  2303  alias _ABC ABC;
  2304  alias _ABC* PABC;
  2305  alias _ABC* NPABC;
  2306  alias _ABC* LPABC;
  2307  
  2308  struct _ABCFLOAT {
  2309    FLOAT abcfA;
  2310    FLOAT abcfB;
  2311    FLOAT abcfC;
  2312  }
  2313  alias _ABCFLOAT ABCFLOAT;
  2314  alias _ABCFLOAT* PABCFLOAT;
  2315  alias _ABCFLOAT* NPABCFLOAT;
  2316  alias _ABCFLOAT* LPABCFLOAT;
  2317  
  2318  // #ifndef NOTEXTMETRIC
  2319  
  2320  // #ifdef _MAC
  2321  // #...
  2322  // #endif
  2323  struct _OUTLINETEXTMETRICA {
  2324    UINT otmSize;
  2325    TEXTMETRICA otmTextMetrics;
  2326    BYTE otmFiller;
  2327    PANOSE otmPanoseNumber;
  2328    UINT otmfsSelection;
  2329    UINT otmfsType;
  2330    int otmsCharSlopeRise;
  2331    int otmsCharSlopeRun;
  2332    int otmItalicAngle;
  2333    UINT otmEMSquare;
  2334    int otmAscent;
  2335    int otmDescent;
  2336    UINT otmLineGap;
  2337    UINT otmsCapEmHeight;
  2338    UINT otmsXHeight;
  2339    RECT otmrcFontBox;
  2340    int otmMacAscent;
  2341    int otmMacDescent;
  2342    UINT otmMacLineGap;
  2343    UINT otmusMinimumPPEM;
  2344    POINT otmptSubscriptSize;
  2345    POINT otmptSubscriptOffset;
  2346    POINT otmptSuperscriptSize;
  2347    POINT otmptSuperscriptOffset;
  2348    UINT otmsStrikeoutSize;
  2349    int otmsStrikeoutPosition;
  2350    int otmsUnderscoreSize;
  2351    int otmsUnderscorePosition;
  2352    PSTR otmpFamilyName;
  2353    PSTR otmpFaceName;
  2354    PSTR otmpStyleName;
  2355    PSTR otmpFullName;
  2356  }
  2357  alias _OUTLINETEXTMETRICA OUTLINETEXTMETRICA;
  2358  alias _OUTLINETEXTMETRICA* POUTLINETEXTMETRICA;
  2359  alias _OUTLINETEXTMETRICA* NPOUTLINETEXTMETRICA;
  2360  alias _OUTLINETEXTMETRICA* LPOUTLINETEXTMETRICA;
  2361  
  2362  struct _OUTLINETEXTMETRICW {
  2363    UINT otmSize;
  2364    TEXTMETRICW otmTextMetrics;
  2365    BYTE otmFiller;
  2366    PANOSE otmPanoseNumber;
  2367    UINT otmfsSelection;
  2368    UINT otmfsType;
  2369    int otmsCharSlopeRise;
  2370    int otmsCharSlopeRun;
  2371    int otmItalicAngle;
  2372    UINT otmEMSquare;
  2373    int otmAscent;
  2374    int otmDescent;
  2375    UINT otmLineGap;
  2376    UINT otmsCapEmHeight;
  2377    UINT otmsXHeight;
  2378    RECT otmrcFontBox;
  2379    int otmMacAscent;
  2380    int otmMacDescent;
  2381    UINT otmMacLineGap;
  2382    UINT otmusMinimumPPEM;
  2383    POINT otmptSubscriptSize;
  2384    POINT otmptSubscriptOffset;
  2385    POINT otmptSuperscriptSize;
  2386    POINT otmptSuperscriptOffset;
  2387    UINT otmsStrikeoutSize;
  2388    int otmsStrikeoutPosition;
  2389    int otmsUnderscoreSize;
  2390    int otmsUnderscorePosition;
  2391    PSTR otmpFamilyName;
  2392    PSTR otmpFaceName;
  2393    PSTR otmpStyleName;
  2394    PSTR otmpFullName;
  2395  }
  2396  alias _OUTLINETEXTMETRICW OUTLINETEXTMETRICW;
  2397  alias _OUTLINETEXTMETRICW* POUTLINETEXTMETRICW;
  2398  alias _OUTLINETEXTMETRICW* NPOUTLINETEXTMETRICW;
  2399  alias _OUTLINETEXTMETRICW* LPOUTLINETEXTMETRICW;
  2400  
  2401  // #ifdef UNICODE
  2402  // ...
  2403  // #else
  2404  alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC;
  2405  alias POUTLINETEXTMETRICA POUTLINETEXTMETRIC;
  2406  alias NPOUTLINETEXTMETRICA NPOUTLINETEXTMETRIC;
  2407  alias LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC;
  2408  // #endif // UNICODE
  2409  
  2410  // #ifdef _MAC
  2411  // #...
  2412  // #endif
  2413  
  2414  // #endif /* NOTEXTMETRIC */
  2415  
  2416  struct tagPOLYTEXTA {
  2417    int x;
  2418    int y;
  2419    UINT n;
  2420    LPCSTR lpstr;
  2421    UINT uiFlags;
  2422    RECT rcl;
  2423    int *pdx;
  2424  }
  2425  alias tagPOLYTEXTA POLYTEXTA;
  2426  alias tagPOLYTEXTA* PPOLYTEXTA;
  2427  alias tagPOLYTEXTA* NPPOLYTEXTA;
  2428  alias tagPOLYTEXTA* LPPOLYTEXTA;
  2429  
  2430  struct tagPOLYTEXTW {
  2431    int x;
  2432    int y;
  2433    UINT n;
  2434    LPCWSTR lpstr;
  2435    UINT uiFlags;
  2436    RECT rcl;
  2437    int *pdx;
  2438  }
  2439  alias tagPOLYTEXTW POLYTEXTW;
  2440  alias tagPOLYTEXTW* PPOLYTEXTW;
  2441  alias tagPOLYTEXTW* NPPOLYTEXTW;
  2442  alias tagPOLYTEXTW* LPPOLYTEXTW;
  2443  
  2444  // #ifdef UNICODE
  2445  // ...
  2446  // #else
  2447  alias POLYTEXTA POLYTEXT;
  2448  alias PPOLYTEXTA PPOLYTEXT;
  2449  alias NPPOLYTEXTA NPPOLYTEXT;
  2450  alias LPPOLYTEXTA LPPOLYTEXT;
  2451  // #endif // UNICODE
  2452  
  2453  struct _FIXED {
  2454  // #ifndef _MAC
  2455    WORD fract;
  2456    short value;
  2457  // #else
  2458  // ...
  2459  // #endif
  2460  }
  2461  alias _FIXED FIXED;
  2462  
  2463  struct _MAT2 {
  2464    FIXED eM11;
  2465    FIXED eM12;
  2466    FIXED eM21;
  2467    FIXED eM22;
  2468  }
  2469  alias _MAT2 MAT2;
  2470  alias _MAT2* LPMAT2;
  2471  
  2472  struct _GLYPHMETRICS {
  2473    UINT gmBlackBoxX;
  2474    UINT gmBlackBoxY;
  2475    POINT gmptGlyphOrigin;
  2476    short gmCellIncX;
  2477    short gmCellIncY;
  2478  }
  2479  alias _GLYPHMETRICS GLYPHMETRICS;
  2480  alias _GLYPHMETRICS* LPGLYPHMETRICS;
  2481  
  2482  enum : uint { GGO_METRICS = 0 }
  2483  enum : uint { GGO_BITMAP = 1 }
  2484  enum : uint { GGO_NATIVE = 2 }
  2485  enum : uint { GGO_BEZIER = 3 }
  2486  
  2487  // #if(WINVER >= 0x0400)
  2488  enum : uint { GGO_GRAY2_BITMAP = 4 }
  2489  enum : uint { GGO_GRAY4_BITMAP = 5 }
  2490  enum : uint { GGO_GRAY8_BITMAP = 6 }
  2491  enum : uint { GGO_GLYPH_INDEX = 0x0080 }
  2492  // #endif /* WINVER >= 0x0400 */
  2493  
  2494  // #if (_WIN32_WINNT >= 0x0500)
  2495  enum : uint { GGO_UNHINTED = 0x0100 }
  2496  // #endif // (_WIN32_WINNT >= 0x0500)
  2497  
  2498  enum : uint { TT_POLYGON_TYPE = 24 }
  2499  
  2500  enum : uint { TT_PRIM_LINE = 1 }
  2501  enum : uint { TT_PRIM_QSPLINE = 2 }
  2502  enum : uint { TT_PRIM_CSPLINE = 3 }
  2503  
  2504  struct tagPOINTFX {
  2505    FIXED x;
  2506    FIXED y;
  2507  }
  2508  alias tagPOINTFX POINTFX;
  2509  alias tagPOINTFX* LPPOINTFX;
  2510  
  2511  struct tagTTPOLYCURVE {
  2512    WORD wType;
  2513    WORD cpfx;
  2514    POINTFX apfx[1];
  2515  }
  2516  alias tagTTPOLYCURVE TTPOLYCURVE;
  2517  alias tagTTPOLYCURVE* LPTTPOLYCURVE;
  2518  
  2519  struct tagTTPOLYGONHEADER {
  2520    DWORD cb;
  2521    DWORD dwType;
  2522    POINTFX pfxStart;
  2523  }
  2524  alias tagTTPOLYGONHEADER TTPOLYGONHEADER;
  2525  alias tagTTPOLYGONHEADER* LPTTPOLYGONHEADER;
  2526  
  2527  // #if(WINVER >= 0x0400)
  2528  enum : uint { GCP_DBCS = 0x0001 }
  2529  enum : uint { GCP_REORDER = 0x0002 }
  2530  enum : uint { GCP_USEKERNING = 0x0008 }
  2531  enum : uint { GCP_GLYPHSHAPE = 0x0010 }
  2532  enum : uint { GCP_LIGATE = 0x0020 }
  2533  
  2534  enum : uint { GCP_DIACRITIC = 0x0100 }
  2535  enum : uint { GCP_KASHIDA = 0x0400 }
  2536  enum : uint { GCP_ERROR = 0x8000 }
  2537  enum : uint { FLI_MASK = 0x103B }
  2538  
  2539  enum : uint { GCP_JUSTIFY = 0x00010000 }
  2540  
  2541  enum : uint { FLI_GLYPHS = 0x00040000 }
  2542  enum : uint { GCP_CLASSIN = 0x00080000 }
  2543  enum : uint { GCP_MAXEXTENT = 0x00100000 }
  2544  enum : uint { GCP_JUSTIFYIN = 0x00200000 }
  2545  enum : uint { GCP_DISPLAYZWG = 0x00400000 }
  2546  enum : uint { GCP_SYMSWAPOFF = 0x00800000 }
  2547  enum : uint { GCP_NUMERICOVERRIDE = 0x01000000 }
  2548  enum : uint { GCP_NEUTRALOVERRIDE = 0x02000000 }
  2549  enum : uint { GCP_NUMERICSLATIN = 0x04000000 }
  2550  enum : uint { GCP_NUMERICSLOCAL = 0x08000000 }
  2551  
  2552  enum : uint { GCPCLASS_LATIN = 1 }
  2553  enum : uint { GCPCLASS_HEBREW = 2 }
  2554  enum : uint { GCPCLASS_ARABIC = 2 }
  2555  enum : uint { GCPCLASS_NEUTRAL = 3 }
  2556  enum : uint { GCPCLASS_LOCALNUMBER = 4 }
  2557  enum : uint { GCPCLASS_LATINNUMBER = 5 }
  2558  enum : uint { GCPCLASS_LATINNUMERICTERMINATOR = 6 }
  2559  enum : uint { GCPCLASS_LATINNUMERICSEPARATOR = 7 }
  2560  enum : uint { GCPCLASS_NUMERICSEPARATOR = 8 }
  2561  enum : uint { GCPCLASS_PREBOUNDLTR = 0x80 }
  2562  enum : uint { GCPCLASS_PREBOUNDRTL = 0x40 }
  2563  enum : uint { GCPCLASS_POSTBOUNDLTR = 0x20 }
  2564  enum : uint { GCPCLASS_POSTBOUNDRTL = 0x10 }
  2565  
  2566  enum : uint { GCPGLYPH_LINKBEFORE = 0x8000 }
  2567  enum : uint { GCPGLYPH_LINKAFTER = 0x4000 }
  2568  
  2569  struct tagGCP_RESULTSA {
  2570    DWORD lStructSize;
  2571    LPSTR lpOutString;
  2572    UINT *lpOrder;
  2573    int *lpDx;
  2574    int *lpCaretPos;
  2575    LPSTR lpClass;
  2576    LPWSTR lpGlyphs;
  2577    UINT nGlyphs;
  2578    int nMaxFit;
  2579  }
  2580  alias tagGCP_RESULTSA GCP_RESULTSA;
  2581  alias tagGCP_RESULTSA* LPGCP_RESULTSA;
  2582  
  2583  struct tagGCP_RESULTSW {
  2584    DWORD lStructSize;
  2585    LPWSTR lpOutString;
  2586    UINT *lpOrder;
  2587    int *lpDx;
  2588    int *lpCaretPos;
  2589    LPSTR lpClass;
  2590    LPWSTR lpGlyphs;
  2591    UINT nGlyphs;
  2592    int nMaxFit;
  2593  }
  2594  alias tagGCP_RESULTSW GCP_RESULTSW;
  2595  alias tagGCP_RESULTSW* LPGCP_RESULTSW;
  2596  
  2597  // #ifdef UNICODE
  2598  // ...
  2599  // #else
  2600  alias GCP_RESULTSA GCP_RESULTS;
  2601  alias LPGCP_RESULTSA LPGCP_RESULTS;
  2602  // #endif // UNICODE
  2603  // #endif /* WINVER >= 0x0400 */
  2604  
  2605  struct _RASTERIZER_STATUS {
  2606    short nSize;
  2607    short wFlags;
  2608    short nLanguageID;
  2609  }
  2610  alias _RASTERIZER_STATUS RASTERIZER_STATUS;
  2611  alias _RASTERIZER_STATUS* LPRASTERIZER_STATUS;
  2612  
  2613  enum : uint { TT_AVAILABLE = 0x0001 }
  2614  enum : uint { TT_ENABLED = 0x0002 }
  2615  
  2616  struct tagPIXELFORMATDESCRIPTOR {
  2617    WORD nSize;
  2618    WORD nVersion;
  2619    DWORD dwFlags;
  2620    BYTE iPixelType;
  2621    BYTE cColorBits;
  2622    BYTE cRedBits;
  2623    BYTE cRedShift;
  2624    BYTE cGreenBits;
  2625    BYTE cGreenShift;
  2626    BYTE cBlueBits;
  2627    BYTE cBlueShift;
  2628    BYTE cAlphaBits;
  2629    BYTE cAlphaShift;
  2630    BYTE cAccumBits;
  2631    BYTE cAccumRedBits;
  2632    BYTE cAccumGreenBits;
  2633    BYTE cAccumBlueBits;
  2634    BYTE cAccumAlphaBits;
  2635    BYTE cDepthBits;
  2636    BYTE cStencilBits;
  2637    BYTE cAuxBuffers;
  2638    BYTE iLayerType;
  2639    BYTE bReserved;
  2640    DWORD dwLayerMask;
  2641    DWORD dwVisibleMask;
  2642    DWORD dwDamageMask;
  2643  }
  2644  alias tagPIXELFORMATDESCRIPTOR PIXELFORMATDESCRIPTOR;
  2645  alias tagPIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR;
  2646  alias tagPIXELFORMATDESCRIPTOR* LPPIXELFORMATDESCRIPTOR;
  2647  
  2648  enum : uint { PFD_TYPE_RGBA = 0 }
  2649  enum : uint { PFD_TYPE_COLORINDEX = 1 }
  2650  
  2651  enum : uint { PFD_MAIN_PLANE = 0 }
  2652  enum : uint { PFD_OVERLAY_PLANE = 1 }
  2653  enum { PFD_UNDERLAY_PLANE = -1 }
  2654  
  2655  enum : uint { PFD_DOUBLEBUFFER = 0x00000001 }
  2656  enum : uint { PFD_STEREO = 0x00000002 }
  2657  enum : uint { PFD_DRAW_TO_WINDOW = 0x00000004 }
  2658  enum : uint { PFD_DRAW_TO_BITMAP = 0x00000008 }
  2659  enum : uint { PFD_SUPPORT_GDI = 0x00000010 }
  2660  enum : uint { PFD_SUPPORT_OPENGL = 0x00000020 }
  2661  enum : uint { PFD_GENERIC_FORMAT = 0x00000040 }
  2662  enum : uint { PFD_NEED_PALETTE = 0x00000080 }
  2663  enum : uint { PFD_NEED_SYSTEM_PALETTE = 0x00000100 }
  2664  enum : uint { PFD_SWAP_EXCHANGE = 0x00000200 }
  2665  enum : uint { PFD_SWAP_COPY = 0x00000400 }
  2666  enum : uint { PFD_SWAP_LAYER_BUFFERS = 0x00000800 }
  2667  enum : uint { PFD_GENERIC_ACCELERATED = 0x00001000 }
  2668  enum : uint { PFD_SUPPORT_DIRECTDRAW = 0x00002000 }
  2669  
  2670  enum : uint { PFD_DEPTH_DONTCARE = 0x20000000 }
  2671  enum : uint { PFD_DOUBLEBUFFER_DONTCARE = 0x40000000 }
  2672  enum : uint { PFD_STEREO_DONTCARE = 0x80000000 }
  2673  
  2674  // #ifdef STRICT
  2675  // #if !defined(NOTEXTMETRIC)
  2676  extern(Windows) alias int function( LOGFONTA *,  TEXTMETRICA *, DWORD, LPARAM) OLDFONTENUMPROCA;
  2677  extern(Windows) alias int function( LOGFONTW *,  TEXTMETRICW *, DWORD, LPARAM) OLDFONTENUMPROCW;
  2678  // #ifdef UNICODE
  2679  // #...
  2680  // #else
  2681  alias OLDFONTENUMPROCA OLDFONTENUMPROC;
  2682  // #endif // !UNICODE
  2683  // #else
  2684  // ...
  2685  // #ifdef UNICODE
  2686  // #...
  2687  // #else
  2688  // #...
  2689  // #endif // !UNICODE
  2690  // #endif
  2691  
  2692  alias OLDFONTENUMPROCA FONTENUMPROCA;
  2693  alias OLDFONTENUMPROCW FONTENUMPROCW;
  2694  // #ifdef UNICODE
  2695  // ...
  2696  // #else
  2697  alias FONTENUMPROCA FONTENUMPROC;
  2698  // #endif // UNICODE
  2699  
  2700  extern(Windows) alias int function(LPVOID, LPARAM) GOBJENUMPROC;
  2701  extern(Windows) alias VOID function(int, int, LPARAM) LINEDDAPROC;
  2702  // #else
  2703  // ...
  2704  // #ifdef UNICODE
  2705  // ...
  2706  // #else
  2707  // ...
  2708  // #endif // UNICODE
  2709  // ...
  2710  // #endif
  2711  
  2712  extern(Windows) export int AddFontResourceA(LPCSTR);
  2713  extern(Windows) export int AddFontResourceW(LPCWSTR);
  2714  // #ifdef UNICODE
  2715  // #...
  2716  // #else
  2717  alias AddFontResourceA AddFontResource;
  2718  // #endif // !UNICODE
  2719  
  2720  extern(Windows) export BOOL AnimatePalette(HPALETTE, UINT, UINT, PALETTEENTRY *);
  2721  extern(Windows) export BOOL Arc(HDC, int, int, int, int, int, int, int, int);
  2722  extern(Windows) export BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
  2723  extern(Windows) export BOOL CancelDC(HDC);
  2724  extern(Windows) export BOOL Chord(HDC, int, int, int, int, int, int, int, int);
  2725  extern(Windows) export int ChoosePixelFormat(HDC, PIXELFORMATDESCRIPTOR *);
  2726  extern(Windows) export HMETAFILE CloseMetaFile(HDC);
  2727  extern(Windows) export int CombineRgn(HRGN, HRGN, HRGN, int);
  2728  extern(Windows) export HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR);
  2729  extern(Windows) export HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR);
  2730  // #ifdef UNICODE
  2731  // #...
  2732  // #else
  2733  alias CopyMetaFileA CopyMetaFile;
  2734  // #endif // !UNICODE
  2735  extern(Windows) export HBITMAP CreateBitmap(int, int, UINT, UINT, VOID *);
  2736  extern(Windows) export HBITMAP CreateBitmapIndirect(BITMAP *);
  2737  extern(Windows) export HBRUSH CreateBrushIndirect(LOGBRUSH *);
  2738  extern(Windows) export HBITMAP CreateCompatibleBitmap(HDC, int, int);
  2739  extern(Windows) export HBITMAP CreateDiscardableBitmap(HDC, int, int);
  2740  extern(Windows) export HDC CreateCompatibleDC(HDC);
  2741  extern(Windows) export HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, DEVMODEA *);
  2742  extern(Windows) export HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, DEVMODEW *);
  2743  // #ifdef UNICODE
  2744  // #...
  2745  // #else
  2746  alias CreateDCA CreateDC;
  2747  // #endif // !UNICODE
  2748  extern(Windows) export HBITMAP CreateDIBitmap(HDC, BITMAPINFOHEADER *, DWORD, VOID *, BITMAPINFO *, UINT);
  2749  extern(Windows) export HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT);
  2750  extern(Windows) export HBRUSH CreateDIBPatternBrushPt(VOID *, UINT);
  2751  extern(Windows) export HRGN CreateEllipticRgn(int, int, int, int);
  2752  extern(Windows) export HRGN CreateEllipticRgnIndirect(RECT *);
  2753  extern(Windows) export HFONT CreateFontIndirectA(LOGFONTA *);
  2754  extern(Windows) export HFONT CreateFontIndirectW(LOGFONTW *);
  2755  // #ifdef UNICODE
  2756  // #...
  2757  // #else
  2758  alias CreateFontIndirectA CreateFontIndirect;
  2759  // #endif // !UNICODE
  2760  extern(Windows) export HFONT CreateFontA(int, int, int, int, int, DWORD,
  2761    DWORD, DWORD, DWORD, DWORD, DWORD,
  2762    DWORD, DWORD, LPCSTR);
  2763  extern(Windows) export HFONT CreateFontW(int, int, int, int, int, DWORD,
  2764    DWORD, DWORD, DWORD, DWORD, DWORD,
  2765    DWORD, DWORD, LPCWSTR);
  2766  // #ifdef UNICODE
  2767  // #...
  2768  // #else
  2769  alias CreateFontA CreateFont;
  2770  // #endif // !UNICODE
  2771  
  2772  extern(Windows) export HBRUSH CreateHatchBrush(int, COLORREF);
  2773  extern(Windows) export HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, DEVMODEA *);
  2774  extern(Windows) export HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, DEVMODEW *);
  2775  // #ifdef UNICODE
  2776  // #...
  2777  // #else
  2778  alias CreateICA CreateIC;
  2779  // #endif // !UNICODE
  2780  extern(Windows) export HDC CreateMetaFileA(LPCSTR);
  2781  extern(Windows) export HDC CreateMetaFileW(LPCWSTR);
  2782  // #ifdef UNICODE
  2783  // #...
  2784  // #else
  2785  alias CreateMetaFileA CreateMetaFile;
  2786  // #endif // !UNICODE
  2787  extern(Windows) export HPALETTE CreatePalette(LOGPALETTE *);
  2788  extern(Windows) export HPEN CreatePen(int, int, COLORREF);
  2789  extern(Windows) export HPEN CreatePenIndirect(LOGPEN *);
  2790  extern(Windows) export HRGN CreatePolyPolygonRgn(POINT *, INT *, int, int);
  2791  extern(Windows) export HBRUSH CreatePatternBrush(HBITMAP);
  2792  extern(Windows) export HRGN CreateRectRgn(int, int, int, int);
  2793  extern(Windows) export HRGN CreateRectRgnIndirect(RECT *);
  2794  extern(Windows) export HRGN CreateRoundRectRgn(int, int, int, int, int, int);
  2795  extern(Windows) export BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR);
  2796  extern(Windows) export BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR);
  2797  // #ifdef UNICODE
  2798  // #...
  2799  // #else
  2800  alias CreateScalableFontResourceA CreateScalableFontResource;
  2801  // #endif // !UNICODE
  2802  extern(Windows) export HBRUSH CreateSolidBrush(COLORREF);
  2803  
  2804  extern(Windows) export BOOL DeleteDC(HDC);
  2805  extern(Windows) export BOOL DeleteMetaFile(HMETAFILE);
  2806  extern(Windows) export BOOL DeleteObject(HGDIOBJ);
  2807  extern(Windows) export int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
  2808  
  2809  extern(Windows) alias UINT function(HWND, HMODULE, LPDEVMODE, LPSTR, LPSTR, LPDEVMODE, LPSTR, UINT) LPFNDEVMODE;
  2810  
  2811  extern(Windows) alias DWORD function(LPSTR, LPSTR, UINT, LPSTR, LPDEVMODE) LPFNDEVCAPS;
  2812  
  2813  enum : uint { DM_UPDATE = 1 }
  2814  enum : uint { DM_COPY = 2 }
  2815  enum : uint { DM_PROMPT = 4 }
  2816  enum : uint { DM_MODIFY = 8 }
  2817  
  2818  alias DM_MODIFY DM_IN_BUFFER;
  2819  alias DM_PROMPT DM_IN_PROMPT;
  2820  alias DM_COPY DM_OUT_BUFFER;
  2821  alias DM_UPDATE DM_OUT_DEFAULT;
  2822  
  2823  enum : uint { DC_FIELDS = 1 }
  2824  enum : uint { DC_PAPERS = 2 }
  2825  enum : uint { DC_PAPERSIZE = 3 }
  2826  enum : uint { DC_MINEXTENT = 4 }
  2827  enum : uint { DC_MAXEXTENT = 5 }
  2828  enum : uint { DC_BINS = 6 }
  2829  enum : uint { DC_DUPLEX = 7 }
  2830  enum : uint { DC_SIZE = 8 }
  2831  enum : uint { DC_EXTRA = 9 }
  2832  enum : uint { DC_VERSION = 10 }
  2833  enum : uint { DC_DRIVER = 11 }
  2834  enum : uint { DC_BINNAMES = 12 }
  2835  enum : uint { DC_ENUMRESOLUTIONS = 13 }
  2836  enum : uint { DC_FILEDEPENDENCIES = 14 }
  2837  enum : uint { DC_TRUETYPE = 15 }
  2838  enum : uint { DC_PAPERNAMES = 16 }
  2839  enum : uint { DC_ORIENTATION = 17 }
  2840  enum : uint { DC_COPIES = 18 }
  2841  // #if(WINVER >= 0x0400)
  2842  enum : uint { DC_BINADJUST = 19 }
  2843  enum : uint { DC_EMF_COMPLIANT = 20 }
  2844  enum : uint { DC_DATATYPE_PRODUCED = 21 }
  2845  enum : uint { DC_COLLATE = 22 }
  2846  enum : uint { DC_MANUFACTURER = 23 }
  2847  enum : uint { DC_MODEL = 24 }
  2848  // #endif /* WINVER >= 0x0400 */
  2849  
  2850  // #if(WINVER >= 0x0500)
  2851  enum : uint { DC_PERSONALITY = 25 }
  2852  enum : uint { DC_PRINTRATE = 26 }
  2853  enum : uint { DC_PRINTRATEUNIT = 27 }
  2854  enum : uint { PRINTRATEUNIT_PPM = 1 }
  2855  enum : uint { PRINTRATEUNIT_CPS = 2 }
  2856  enum : uint { PRINTRATEUNIT_LPM = 3 }
  2857  enum : uint { PRINTRATEUNIT_IPM = 4 }
  2858  enum : uint { DC_PRINTERMEM = 28 }
  2859  enum : uint { DC_MEDIAREADY = 29 }
  2860  enum : uint { DC_STAPLE = 30 }
  2861  enum : uint { DC_PRINTRATEPPM = 31 }
  2862  enum : uint { DC_COLORDEVICE = 32 }
  2863  enum : uint { DC_NUP = 33 }
  2864  enum : uint { DC_MEDIATYPENAMES = 34 }
  2865  enum : uint { DC_MEDIATYPES = 35 }
  2866  // #endif /* WINVER >= 0x0500 */
  2867  
  2868  enum : uint { DCTT_BITMAP = 0x0000001 }
  2869  enum : uint { DCTT_DOWNLOAD = 0x0000002 }
  2870  enum : uint { DCTT_SUBDEV = 0x0000004 }
  2871  // #if(WINVER >= 0x0400)
  2872  enum : uint { DCTT_DOWNLOAD_OUTLINE = 0x0000008 }
  2873  
  2874  enum : uint { DCBA_FACEUPNONE = 0x0000 }
  2875  enum : uint { DCBA_FACEUPCENTER = 0x0001 }
  2876  enum : uint { DCBA_FACEUPLEFT = 0x0002 }
  2877  enum : uint { DCBA_FACEUPRIGHT = 0x0003 }
  2878  enum : uint { DCBA_FACEDOWNNONE = 0x0100 }
  2879  enum : uint { DCBA_FACEDOWNCENTER = 0x0101 }
  2880  enum : uint { DCBA_FACEDOWNLEFT = 0x0102 }
  2881  enum : uint { DCBA_FACEDOWNRIGHT = 0x0103 }
  2882  // #endif /* WINVER >= 0x0400 */
  2883  
  2884  extern(Windows) export int DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD,
  2885    LPSTR, DEVMODEA *);
  2886  extern(Windows) export int DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD,
  2887    LPWSTR, DEVMODEW *);
  2888  // #ifdef UNICODE
  2889  // #...
  2890  // #else
  2891  alias DeviceCapabilitiesA DeviceCapabilities;
  2892  // #endif // !UNICODE
  2893  
  2894  extern(Windows) export int DrawEscape(HDC, int, int, LPCSTR);
  2895  extern(Windows) export BOOL Ellipse(HDC, int, int, int, int);
  2896  
  2897  // #if(WINVER >= 0x0400)
  2898  extern(Windows) export int EnumFontFamiliesExA(HDC, LPLOGFONTA, FONTENUMPROCA, LPARAM, DWORD);
  2899  extern(Windows) export int EnumFontFamiliesExW(HDC, LPLOGFONTW, FONTENUMPROCW, LPARAM, DWORD);
  2900  // #ifdef UNICODE
  2901  // #...
  2902  // #else
  2903  alias EnumFontFamiliesExA EnumFontFamiliesEx;
  2904  // #endif // !UNICODE
  2905  // #endif /* WINVER >= 0x0400 */
  2906  
  2907  extern(Windows) export int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM);
  2908  extern(Windows) export int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM);
  2909  // #ifdef UNICODE
  2910  // #...
  2911  // #else
  2912  alias EnumFontFamiliesA EnumFontFamilies;
  2913  // #endif // !UNICODE
  2914  extern(Windows) export int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM);
  2915  extern(Windows) export int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM);
  2916  // #ifdef UNICODE
  2917  // #...
  2918  // #else
  2919  alias EnumFontsA EnumFonts;
  2920  // #endif // !UNICODE
  2921  
  2922  // #ifdef STRICT
  2923  extern(Windows) export int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM);
  2924  // #else
  2925  // ...
  2926  // #endif
  2927  
  2928  extern(Windows) export BOOL EqualRgn(HRGN, HRGN);
  2929  extern(Windows) export int Escape(HDC, int, int, LPCSTR, LPVOID);
  2930  extern(Windows) export int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR);
  2931  extern(Windows) export int ExcludeClipRect(HDC, int, int, int, int);
  2932  extern(Windows) export HRGN ExtCreateRegion(XFORM *, DWORD, RGNDATA *);
  2933  extern(Windows) export BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT);
  2934  extern(Windows) export BOOL FillRgn(HDC, HRGN, HBRUSH);
  2935  extern(Windows) export BOOL FloodFill(HDC, int, int, COLORREF);
  2936  extern(Windows) export BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int);
  2937  extern(Windows) export int GetROP2(HDC);
  2938  extern(Windows) export BOOL GetAspectRatioFilterEx(HDC, LPSIZE);
  2939  extern(Windows) export COLORREF GetBkColor(HDC);
  2940  
  2941  // #if (_WIN32_WINNT >= 0x0500)
  2942  extern(Windows) export COLORREF GetDCBrushColor(HDC);
  2943  extern(Windows) export COLORREF GetDCPenColor(HDC);
  2944  // #endif
  2945  
  2946  extern(Windows) export int GetBkMode(HDC);
  2947  extern(Windows) export LONG GetBitmapBits(HBITMAP, LONG, LPVOID);
  2948  extern(Windows) export BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE);
  2949  extern(Windows) export UINT GetBoundsRect(HDC, LPRECT, UINT);
  2950  
  2951  extern(Windows) export BOOL GetBrushOrgEx(HDC, LPPOINT);
  2952  
  2953  extern(Windows) export BOOL GetCharWidthA(HDC, UINT, UINT, LPINT);
  2954  extern(Windows) export BOOL GetCharWidthW(HDC, UINT, UINT, LPINT);
  2955  // #ifdef UNICODE
  2956  // #...
  2957  // #else
  2958  alias GetCharWidthA GetCharWidth;
  2959  // #endif // !UNICODE
  2960  extern(Windows) export BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT);
  2961  extern(Windows) export BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT);
  2962  // #ifdef UNICODE
  2963  // #...
  2964  // #else
  2965  alias GetCharWidth32A GetCharWidth32;
  2966  // #endif // !UNICODE
  2967  extern(Windows) export BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT);
  2968  extern(Windows) export BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT);
  2969  // #ifdef UNICODE
  2970  // #...
  2971  // #else
  2972  alias GetCharWidthFloatA GetCharWidthFloat;
  2973  // #endif // !UNICODE
  2974  extern(Windows) export BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC);
  2975  extern(Windows) export BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC);
  2976  // #ifdef UNICODE
  2977  // #...
  2978  // #else
  2979  alias GetCharABCWidthsA GetCharABCWidths;
  2980  // #endif // !UNICODE
  2981  extern(Windows) export BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT);
  2982  extern(Windows) export BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT);
  2983  // #ifdef UNICODE
  2984  // #...
  2985  // #else
  2986  alias GetCharABCWidthsFloatA GetCharABCWidthsFloat;
  2987  // #endif // !UNICODE
  2988  extern(Windows) export int GetClipBox(HDC, LPRECT);
  2989  extern(Windows) export int GetClipRgn(HDC, HRGN);
  2990  extern(Windows) export int GetMetaRgn(HDC, HRGN);
  2991  extern(Windows) export HGDIOBJ GetCurrentObject(HDC, UINT);
  2992  extern(Windows) export BOOL GetCurrentPositionEx(HDC, LPPOINT);
  2993  extern(Windows) export int GetDeviceCaps(HDC, int);
  2994  extern(Windows) export int GetDIBits(HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT);
  2995  extern(Windows) export DWORD GetFontData(HDC, DWORD, DWORD, LPVOID, DWORD);
  2996  extern(Windows) export DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, MAT2 *);
  2997  extern(Windows) export DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, MAT2 *);
  2998  // #ifdef UNICODE
  2999  // #...
  3000  // #else
  3001  alias GetGlyphOutlineA GetGlyphOutline;
  3002  // #endif // !UNICODE
  3003  extern(Windows) export int GetGraphicsMode(HDC);
  3004  extern(Windows) export int GetMapMode(HDC);
  3005  extern(Windows) export UINT GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID);
  3006  extern(Windows) export HMETAFILE GetMetaFileA(LPCSTR);
  3007  extern(Windows) export HMETAFILE GetMetaFileW(LPCWSTR);
  3008  // #ifdef UNICODE
  3009  // #...
  3010  // #else
  3011  alias GetMetaFileA GetMetaFile;
  3012  // #endif // !UNICODE
  3013  extern(Windows) export COLORREF GetNearestColor(HDC, COLORREF);
  3014  extern(Windows) export UINT GetNearestPaletteIndex(HPALETTE, COLORREF);
  3015  extern(Windows) export DWORD GetObjectType(HGDIOBJ h);
  3016  
  3017  // #ifndef NOTEXTMETRIC
  3018  
  3019  extern(Windows) export UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA);
  3020  extern(Windows) export UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW);
  3021  // #ifdef UNICODE
  3022  // #...
  3023  // #else
  3024  alias GetOutlineTextMetricsA GetOutlineTextMetrics;
  3025  // #endif // !UNICODE
  3026  
  3027  // #endif /* NOTEXTMETRIC */
  3028  
  3029  extern(Windows) export UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY);
  3030  extern(Windows) export COLORREF GetPixel(HDC, int, int);
  3031  extern(Windows) export int GetPixelFormat(HDC);
  3032  extern(Windows) export int GetPolyFillMode(HDC);
  3033  extern(Windows) export BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT);
  3034  extern(Windows) export int GetRandomRgn(HDC, HRGN, INT);
  3035  extern(Windows) export DWORD GetRegionData(HRGN, DWORD, LPRGNDATA);
  3036  extern(Windows) export int GetRgnBox(HRGN, LPRECT);
  3037  extern(Windows) export HGDIOBJ GetStockObject(int);
  3038  extern(Windows) export int GetStretchBltMode(HDC);
  3039  extern(Windows) export UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY);
  3040  extern(Windows) export UINT GetSystemPaletteUse(HDC);
  3041  extern(Windows) export int GetTextCharacterExtra(HDC);
  3042  extern(Windows) export UINT GetTextAlign(HDC);
  3043  extern(Windows) export COLORREF GetTextColor(HDC);
  3044  
  3045  extern(Windows) export BOOL GetTextExtentPointA(
  3046    HDC,
  3047    LPCSTR,
  3048    int,
  3049    LPSIZE);
  3050  extern(Windows) export BOOL GetTextExtentPointW(
  3051    HDC,
  3052    LPCWSTR,
  3053    int,
  3054    LPSIZE);
  3055  // #ifdef UNICODE
  3056  // #...
  3057  // #else
  3058  alias GetTextExtentPointA GetTextExtentPoint;
  3059  // #endif // !UNICODE
  3060  
  3061  extern(Windows) export BOOL GetTextExtentPoint32A(
  3062    HDC,
  3063    LPCSTR,
  3064    int,
  3065    LPSIZE);
  3066  extern(Windows) export BOOL GetTextExtentPoint32W(
  3067    HDC,
  3068    LPCWSTR,
  3069    int,
  3070    LPSIZE);
  3071  // #ifdef UNICODE
  3072  // #...
  3073  // #else
  3074  alias GetTextExtentPoint32A GetTextExtentPoint32;
  3075  // #endif // !UNICODE
  3076  
  3077  extern(Windows) export BOOL GetTextExtentExPointA(
  3078    HDC,
  3079    LPCSTR,
  3080    int,
  3081    int,
  3082    LPINT,
  3083    LPINT,
  3084    LPSIZE);
  3085  extern(Windows) export BOOL GetTextExtentExPointW(
  3086    HDC,
  3087    LPCWSTR,
  3088    int,
  3089    int,
  3090    LPINT,
  3091    LPINT,
  3092    LPSIZE);
  3093  // #ifdef UNICODE
  3094  // #...
  3095  // #else
  3096  alias GetTextExtentExPointA GetTextExtentExPoint;
  3097  // #endif // !UNICODE
  3098  // #if(WINVER >= 0x0400)
  3099  extern(Windows) export int GetTextCharset(HDC hdc);
  3100  extern(Windows) export int GetTextCharsetInfo(HDC hdc, LPFONTSIGNATURE lpSig, DWORD dwFlags);
  3101  extern(Windows) export BOOL TranslateCharsetInfo(DWORD *lpSrc, LPCHARSETINFO lpCs, DWORD dwFlags);
  3102  extern(Windows) export DWORD GetFontLanguageInfo(HDC );
  3103  extern(Windows) export DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD);
  3104  extern(Windows) export DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD);
  3105  // #ifdef UNICODE
  3106  // #...
  3107  // #else
  3108  alias GetCharacterPlacementA GetCharacterPlacement;
  3109  // #endif // !UNICODE
  3110  // #endif /* WINVER >= 0x0400 */
  3111  
  3112  // #if (_WIN32_WINNT >= 0x0500)
  3113  
  3114  struct tagWCRANGE {
  3115    WCHAR wcLow;
  3116    USHORT cGlyphs;
  3117  }
  3118  alias tagWCRANGE WCRANGE;
  3119  alias tagWCRANGE* PWCRANGE;
  3120  alias tagWCRANGE* LPWCRANGE;
  3121  
  3122  struct tagGLYPHSET {
  3123    DWORD cbThis;
  3124    DWORD flAccel;
  3125    DWORD cGlyphsSupported;
  3126    DWORD cRanges;
  3127    WCRANGE ranges[1];
  3128  }
  3129  alias tagGLYPHSET GLYPHSET;
  3130  alias tagGLYPHSET* PGLYPHSET;
  3131  alias tagGLYPHSET* LPGLYPHSET;
  3132  
  3133  enum : uint { GS_8BIT_INDICES = 0x00000001 }
  3134  
  3135  enum : uint { GGI_MARK_NONEXISTING_GLYPHS = 0X0001 }
  3136  
  3137  extern(Windows) export DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET);
  3138  extern(Windows) export DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD);
  3139  extern(Windows) export DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD);
  3140  // #ifdef UNICODE
  3141  // #...
  3142  // #else
  3143  alias GetGlyphIndicesA GetGlyphIndices;
  3144  // #endif // !UNICODE
  3145  extern(Windows) export BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE);
  3146  extern(Windows) export BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE);
  3147  extern(Windows) export BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT);
  3148  extern(Windows) export BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC);
  3149  
  3150  enum : uint { STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8) }
  3151  enum : uint { STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8) }
  3152  enum : uint { MM_MAX_NUMAXES = 16 }
  3153  
  3154  struct tagDESIGNVECTOR {
  3155    DWORD dvReserved;
  3156    DWORD dvNumAxes;
  3157    LONG dvValues[MM_MAX_NUMAXES];
  3158  }
  3159  alias tagDESIGNVECTOR DESIGNVECTOR;
  3160  alias tagDESIGNVECTOR* PDESIGNVECTOR;
  3161  alias tagDESIGNVECTOR* LPDESIGNVECTOR;
  3162  
  3163  extern(Windows) export int AddFontResourceExA(LPCSTR, DWORD, PVOID);
  3164  extern(Windows) export int AddFontResourceExW(LPCWSTR, DWORD, PVOID);
  3165  // #ifdef UNICODE
  3166  // #...
  3167  // #else
  3168  alias AddFontResourceExA AddFontResourceEx;
  3169  // #endif // !UNICODE
  3170  extern(Windows) export BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID);
  3171  extern(Windows) export BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID);
  3172  // #ifdef UNICODE
  3173  // #...
  3174  // #else
  3175  alias RemoveFontResourceExA RemoveFontResourceEx;
  3176  // #endif // !UNICODE
  3177  extern(Windows) export HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID , DWORD*);
  3178  extern(Windows) export BOOL RemoveFontMemResourceEx(HANDLE);
  3179  enum : uint { FR_PRIVATE = 0x10 }
  3180  enum : uint { FR_NOT_ENUM = 0x20 }
  3181  
  3182  enum : uint { MM_MAX_AXES_NAMELEN = 16 }
  3183  
  3184  struct tagAXISINFOA {
  3185    LONG axMinValue;
  3186    LONG axMaxValue;
  3187    BYTE axAxisName[MM_MAX_AXES_NAMELEN];
  3188  }
  3189  alias tagAXISINFOA AXISINFOA;
  3190  alias tagAXISINFOA* PAXISINFOA;
  3191  alias tagAXISINFOA* LPAXISINFOA;
  3192  
  3193  struct tagAXISINFOW {
  3194    LONG axMinValue;
  3195    LONG axMaxValue;
  3196    WCHAR axAxisName[MM_MAX_AXES_NAMELEN];
  3197  }
  3198  alias tagAXISINFOW AXISINFOW;
  3199  alias tagAXISINFOW* PAXISINFOW;
  3200  alias tagAXISINFOW* LPAXISINFOW;
  3201  
  3202  // #ifdef UNICODE
  3203  // ...
  3204  // #else
  3205  alias AXISINFOA AXISINFO;
  3206  alias PAXISINFOA PAXISINFO;
  3207  alias LPAXISINFOA LPAXISINFO;
  3208  // #endif // UNICODE
  3209  
  3210  struct tagAXESLISTA {
  3211    DWORD axlReserved;
  3212    DWORD axlNumAxes;
  3213    AXISINFOA axlAxisInfo[MM_MAX_NUMAXES];
  3214  }
  3215  alias tagAXESLISTA AXESLISTA;
  3216  alias tagAXESLISTA* PAXESLISTA;
  3217  alias tagAXESLISTA* LPAXESLISTA;
  3218  
  3219  struct tagAXESLISTW {
  3220    DWORD axlReserved;
  3221    DWORD axlNumAxes;
  3222    AXISINFOW axlAxisInfo[MM_MAX_NUMAXES];
  3223  }
  3224  alias tagAXESLISTW AXESLISTW;
  3225  alias tagAXESLISTW* PAXESLISTW;
  3226  alias tagAXESLISTW* LPAXESLISTW;
  3227  
  3228  // #ifdef UNICODE
  3229  // ...
  3230  // #else
  3231  alias AXESLISTA AXESLIST;
  3232  alias PAXESLISTA PAXESLIST;
  3233  alias LPAXESLISTA LPAXESLIST;
  3234  // #endif // UNICODE
  3235  
  3236  struct tagENUMLOGFONTEXDVA {
  3237    ENUMLOGFONTEXA elfEnumLogfontEx;
  3238    DESIGNVECTOR elfDesignVector;
  3239  }
  3240  alias tagENUMLOGFONTEXDVA ENUMLOGFONTEXDVA;
  3241  alias tagENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA;
  3242  alias tagENUMLOGFONTEXDVA* LPENUMLOGFONTEXDVA;
  3243  
  3244  struct tagENUMLOGFONTEXDVW {
  3245    ENUMLOGFONTEXW elfEnumLogfontEx;
  3246    DESIGNVECTOR elfDesignVector;
  3247  }
  3248  alias tagENUMLOGFONTEXDVW ENUMLOGFONTEXDVW;
  3249  alias tagENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW;
  3250  alias tagENUMLOGFONTEXDVW* LPENUMLOGFONTEXDVW;
  3251  
  3252  // #ifdef UNICODE
  3253  // ...
  3254  // #else
  3255  alias ENUMLOGFONTEXDVA ENUMLOGFONTEXDV;
  3256  alias PENUMLOGFONTEXDVA PENUMLOGFONTEXDV;
  3257  alias LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV;
  3258  // #endif // UNICODE
  3259  
  3260  extern(Windows) export HFONT CreateFontIndirectExA(ENUMLOGFONTEXDVA *);
  3261  extern(Windows) export HFONT CreateFontIndirectExW(ENUMLOGFONTEXDVW *);
  3262  // #ifdef UNICODE
  3263  // #...
  3264  // #else
  3265  alias CreateFontIndirectExA CreateFontIndirectEx;
  3266  // #endif // !UNICODE
  3267  
  3268  // #ifndef NOTEXTMETRIC
  3269  struct tagENUMTEXTMETRICA {
  3270    NEWTEXTMETRICEXA etmNewTextMetricEx;
  3271    AXESLISTA etmAxesList;
  3272  }
  3273  alias tagENUMTEXTMETRICA ENUMTEXTMETRICA;
  3274  alias tagENUMTEXTMETRICA* PENUMTEXTMETRICA;
  3275  alias tagENUMTEXTMETRICA* LPENUMTEXTMETRICA;
  3276  
  3277  struct tagENUMTEXTMETRICW {
  3278    NEWTEXTMETRICEXW etmNewTextMetricEx;
  3279    AXESLISTW etmAxesList;
  3280  }
  3281  alias tagENUMTEXTMETRICW ENUMTEXTMETRICW;
  3282  alias tagENUMTEXTMETRICW* PENUMTEXTMETRICW;
  3283  alias tagENUMTEXTMETRICW* LPENUMTEXTMETRICW;
  3284  
  3285  // #ifdef UNICODE
  3286  // ...
  3287  // #else
  3288  alias ENUMTEXTMETRICA ENUMTEXTMETRIC;
  3289  alias PENUMTEXTMETRICA PENUMTEXTMETRIC;
  3290  alias LPENUMTEXTMETRICA LPENUMTEXTMETRIC;
  3291  // #endif // UNICODE
  3292  // #endif /* NOTEXTMETRIC */
  3293  
  3294  // #endif // (_WIN32_WINNT >= 0x0500)
  3295  
  3296  extern(Windows) export BOOL GetViewportExtEx(HDC, LPSIZE);
  3297  extern(Windows) export BOOL GetViewportOrgEx(HDC, LPPOINT);
  3298  extern(Windows) export BOOL GetWindowExtEx(HDC, LPSIZE);
  3299  extern(Windows) export BOOL GetWindowOrgEx(HDC, LPPOINT);
  3300  
  3301  extern(Windows) export int IntersectClipRect(HDC, int, int, int, int);
  3302  extern(Windows) export BOOL InvertRgn(HDC, HRGN);
  3303  extern(Windows) export BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM);
  3304  extern(Windows) export BOOL LineTo(HDC, int, int);
  3305  extern(Windows) export BOOL MaskBlt(HDC, int, int, int, int,
  3306    HDC, int, int, HBITMAP, int, int, DWORD);
  3307  extern(Windows) export BOOL PlgBlt(HDC, POINT *, HDC, int, int, int,
  3308    int, HBITMAP, int, int);
  3309  
  3310  extern(Windows) export int OffsetClipRgn(HDC, int, int);
  3311  extern(Windows) export int OffsetRgn(HRGN, int, int);
  3312  extern(Windows) export BOOL PatBlt(HDC, int, int, int, int, DWORD);
  3313  extern(Windows) export BOOL Pie(HDC, int, int, int, int, int, int, int, int);
  3314  extern(Windows) export BOOL PlayMetaFile(HDC, HMETAFILE);
  3315  extern(Windows) export BOOL PaintRgn(HDC, HRGN);
  3316  extern(Windows) export BOOL PolyPolygon(HDC, POINT *, INT *, int);
  3317  extern(Windows) export BOOL PtInRegion(HRGN, int, int);
  3318  extern(Windows) export BOOL PtVisible(HDC, int, int);
  3319  extern(Windows) export BOOL RectInRegion(HRGN, RECT *);
  3320  extern(Windows) export BOOL RectVisible(HDC, RECT *);
  3321  extern(Windows) export BOOL Rectangle(HDC, int, int, int, int);
  3322  extern(Windows) export BOOL RestoreDC(HDC, int);
  3323  extern(Windows) export HDC ResetDCA(HDC, DEVMODEA *);
  3324  extern(Windows) export HDC ResetDCW(HDC, DEVMODEW *);
  3325  // #ifdef UNICODE
  3326  // #...
  3327  // #else
  3328  alias ResetDCA ResetDC;
  3329  // #endif // !UNICODE
  3330  extern(Windows) export UINT RealizePalette(HDC);
  3331  extern(Windows) export BOOL RemoveFontResourceA(LPCSTR);
  3332  extern(Windows) export BOOL RemoveFontResourceW(LPCWSTR);
  3333  // #ifdef UNICODE
  3334  // #...
  3335  // #else
  3336  alias RemoveFontResourceA RemoveFontResource;
  3337  // #endif // !UNICODE
  3338  extern(Windows) export BOOL RoundRect(HDC, int, int, int, int, int, int);
  3339  extern(Windows) export BOOL ResizePalette(HPALETTE, UINT);
  3340  
  3341  extern(Windows) export int SaveDC(HDC);
  3342  extern(Windows) export int SelectClipRgn(HDC, HRGN);
  3343  extern(Windows) export int ExtSelectClipRgn(HDC, HRGN, int);
  3344  extern(Windows) export int SetMetaRgn(HDC);
  3345  extern(Windows) export HGDIOBJ SelectObject(HDC, HGDIOBJ);
  3346  extern(Windows) export HPALETTE SelectPalette(HDC, HPALETTE, BOOL);
  3347  extern(Windows) export COLORREF SetBkColor(HDC, COLORREF);
  3348  
  3349  // #if (_WIN32_WINNT >= 0x0500)
  3350  extern(Windows) export COLORREF SetDCBrushColor(HDC, COLORREF);
  3351  extern(Windows) export COLORREF SetDCPenColor(HDC, COLORREF);
  3352  // #endif
  3353  
  3354  extern(Windows) export int SetBkMode(HDC, int);
  3355  extern(Windows) export LONG SetBitmapBits(HBITMAP, DWORD, VOID *);
  3356  
  3357  extern(Windows) export UINT SetBoundsRect(HDC, RECT *, UINT);
  3358  extern(Windows) export int SetDIBits(HDC, HBITMAP, UINT, UINT, VOID *, BITMAPINFO *, UINT);
  3359  extern(Windows) export int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int,
  3360    int, UINT, UINT, VOID *, BITMAPINFO *, UINT);
  3361  extern(Windows) export DWORD SetMapperFlags(HDC, DWORD);
  3362  extern(Windows) export int SetGraphicsMode(HDC hdc, int iMode);
  3363  extern(Windows) export int SetMapMode(HDC, int);
  3364  
  3365  // #if(WINVER >= 0x0500)
  3366  extern(Windows) export DWORD SetLayout(HDC, DWORD);
  3367  extern(Windows) export DWORD GetLayout(HDC);
  3368  // #endif /* WINVER >= 0x0500 */
  3369  
  3370  extern(Windows) export HMETAFILE SetMetaFileBitsEx(UINT, BYTE *);
  3371  extern(Windows) export UINT SetPaletteEntries(HPALETTE, UINT, UINT, PALETTEENTRY *);
  3372  extern(Windows) export COLORREF SetPixel(HDC, int, int, COLORREF);
  3373  extern(Windows) export BOOL SetPixelV(HDC, int, int, COLORREF);
  3374  extern(Windows) export BOOL SetPixelFormat(HDC, int, PIXELFORMATDESCRIPTOR *);
  3375  extern(Windows) export int SetPolyFillMode(HDC, int);
  3376  extern(Windows) export BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
  3377  extern(Windows) export BOOL SetRectRgn(HRGN, int, int, int, int);
  3378  extern(Windows) export int StretchDIBits(HDC, int, int, int, int, int, int, int, int, 
  3379    VOID *, BITMAPINFO *, UINT, DWORD);
  3380  extern(Windows) export int SetROP2(HDC, int);
  3381  extern(Windows) export int SetStretchBltMode(HDC, int);
  3382  extern(Windows) export UINT SetSystemPaletteUse(HDC, UINT);
  3383  extern(Windows) export int SetTextCharacterExtra(HDC, int);
  3384  extern(Windows) export COLORREF SetTextColor(HDC, COLORREF);
  3385  extern(Windows) export UINT SetTextAlign(HDC, UINT);
  3386  extern(Windows) export BOOL SetTextJustification(HDC, int, int);
  3387  extern(Windows) export BOOL UpdateColors(HDC);
  3388  
  3389  // #if (WINVER >= 0x0400)
  3390  
  3391  alias USHORT COLOR16;
  3392  
  3393  struct _TRIVERTEX {
  3394    LONG x;
  3395    LONG y;
  3396    COLOR16 Red;
  3397    COLOR16 Green;
  3398    COLOR16 Blue;
  3399    COLOR16 Alpha;
  3400  }
  3401  alias _TRIVERTEX TRIVERTEX;
  3402  alias _TRIVERTEX* PTRIVERTEX;
  3403  alias _TRIVERTEX* LPTRIVERTEX;
  3404  
  3405  struct _GRADIENT_TRIANGLE {
  3406    ULONG Vertex1;
  3407    ULONG Vertex2;
  3408    ULONG Vertex3;
  3409  }
  3410  alias _GRADIENT_TRIANGLE GRADIENT_TRIANGLE;
  3411  alias _GRADIENT_TRIANGLE* PGRADIENT_TRIANGLE;
  3412  alias _GRADIENT_TRIANGLE* LPGRADIENT_TRIANGLE;
  3413  
  3414  struct _GRADIENT_RECT {
  3415    ULONG UpperLeft;
  3416    ULONG LowerRight;
  3417  }
  3418  alias _GRADIENT_RECT GRADIENT_RECT;
  3419  alias _GRADIENT_RECT* PGRADIENT_RECT;
  3420  alias _GRADIENT_RECT* LPGRADIENT_RECT;
  3421  
  3422  struct _BLENDFUNCTION {
  3423    BYTE BlendOp;
  3424    BYTE BlendFlags;
  3425    BYTE SourceConstantAlpha;
  3426    BYTE AlphaFormat;
  3427  }
  3428  alias _BLENDFUNCTION BLENDFUNCTION;
  3429  alias _BLENDFUNCTION* PBLENDFUNCTION;
  3430  
  3431  enum : uint { AC_SRC_OVER = 0x00 }
  3432  
  3433  enum : uint { AC_SRC_ALPHA = 0x01 }
  3434  
  3435  extern(Windows) export BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION);
  3436  
  3437  extern(Windows) export BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT);
  3438  
  3439  enum : uint { GRADIENT_FILL_RECT_H = 0x00000000 }
  3440  enum : uint { GRADIENT_FILL_RECT_V = 0x00000001 }
  3441  enum : uint { GRADIENT_FILL_TRIANGLE = 0x00000002 }
  3442  enum : uint { GRADIENT_FILL_OP_FLAG = 0x000000ff }
  3443  
  3444  extern(Windows) export BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG);
  3445  
  3446  // #endif
  3447  
  3448  // #ifndef NOMETAFILE
  3449  
  3450  extern(Windows) export BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT);
  3451  extern(Windows) alias int function(  HDC,  HANDLETABLE *,  METARECORD *,  int,  LPARAM) MFENUMPROC;
  3452  extern(Windows) export BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM);
  3453  
  3454  extern(Windows) alias int function(HDC, HANDLETABLE *,  ENHMETARECORD *, int, LPARAM) ENHMFENUMPROC;
  3455  
  3456  extern(Windows) export HENHMETAFILE CloseEnhMetaFile(HDC);
  3457  extern(Windows) export HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR);
  3458  extern(Windows) export HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR);
  3459  // #ifdef UNICODE
  3460  // #...
  3461  // #else
  3462  alias CopyEnhMetaFileA CopyEnhMetaFile;
  3463  // #endif // !UNICODE
  3464  extern(Windows) export HDC CreateEnhMetaFileA(HDC, LPCSTR, RECT *, LPCSTR);
  3465  extern(Windows) export HDC CreateEnhMetaFileW(HDC, LPCWSTR, RECT *, LPCWSTR);
  3466  // #ifdef UNICODE
  3467  // #...
  3468  // #else
  3469  alias CreateEnhMetaFileA CreateEnhMetaFile;
  3470  // #endif // !UNICODE
  3471  extern(Windows) export BOOL DeleteEnhMetaFile(HENHMETAFILE);
  3472  extern(Windows) export BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC,
  3473    LPVOID, RECT *);
  3474  extern(Windows) export HENHMETAFILE GetEnhMetaFileA(LPCSTR);
  3475  extern(Windows) export HENHMETAFILE GetEnhMetaFileW(LPCWSTR);
  3476  // #ifdef UNICODE
  3477  // #...
  3478  // #else
  3479  alias GetEnhMetaFileA GetEnhMetaFile;
  3480  // #endif // !UNICODE
  3481  extern(Windows) export UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE);
  3482  extern(Windows) export UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR );
  3483  extern(Windows) export UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR );
  3484  // #ifdef UNICODE
  3485  // #...
  3486  // #else
  3487  alias GetEnhMetaFileDescriptionA GetEnhMetaFileDescription;
  3488  // #endif // !UNICODE
  3489  extern(Windows) export UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER );
  3490  extern(Windows) export UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY );
  3491  extern(Windows) export UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, UINT,
  3492    PIXELFORMATDESCRIPTOR *);
  3493  extern(Windows) export UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC);
  3494  extern(Windows) export BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, RECT *);
  3495  extern(Windows) export BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, ENHMETARECORD *, UINT);
  3496  extern(Windows) export HENHMETAFILE SetEnhMetaFileBits(UINT, BYTE *);
  3497  extern(Windows) export HENHMETAFILE SetWinMetaFileBits(UINT, BYTE *, HDC, METAFILEPICT *);
  3498  extern(Windows) export BOOL GdiComment(HDC, UINT, BYTE *);
  3499  
  3500  // #endif  /* NOMETAFILE */
  3501  
  3502  // #ifndef NOTEXTMETRIC
  3503  
  3504  extern(Windows) export BOOL GetTextMetricsA(HDC, LPTEXTMETRICA);
  3505  extern(Windows) export BOOL GetTextMetricsW(HDC, LPTEXTMETRICW);
  3506  // #ifdef UNICODE
  3507  // #...
  3508  // #else
  3509  alias GetTextMetricsA GetTextMetrics;
  3510  // #endif // !UNICODE
  3511  
  3512  // #endif
  3513  
  3514  struct tagDIBSECTION {
  3515    BITMAP dsBm;
  3516    BITMAPINFOHEADER dsBmih;
  3517    DWORD dsBitfields[3];
  3518    HANDLE dshSection;
  3519    DWORD dsOffset;
  3520  }
  3521  alias tagDIBSECTION DIBSECTION;
  3522  alias tagDIBSECTION* LPDIBSECTION;
  3523  alias tagDIBSECTION* PDIBSECTION;
  3524  
  3525  extern(Windows) export BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT);
  3526  extern(Windows) export BOOL PolyPolyline(HDC, POINT *, DWORD *, DWORD);
  3527  extern(Windows) export BOOL GetWorldTransform(HDC, LPXFORM);
  3528  extern(Windows) export BOOL SetWorldTransform(HDC, XFORM *);
  3529  extern(Windows) export BOOL ModifyWorldTransform(HDC, XFORM *, DWORD);
  3530  extern(Windows) export BOOL CombineTransform(LPXFORM, XFORM *, XFORM *);
  3531  extern(Windows) export HBITMAP CreateDIBSection(HDC, BITMAPINFO *, UINT, VOID **, HANDLE, DWORD);
  3532  extern(Windows) export UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD *);
  3533  extern(Windows) export UINT SetDIBColorTable(HDC, UINT, UINT, RGBQUAD *);
  3534  
  3535  enum : uint { CA_NEGATIVE = 0x0001 }
  3536  enum : uint { CA_LOG_FILTER = 0x0002 }
  3537  
  3538  enum : uint { ILLUMINANT_DEVICE_DEFAULT = 0 }
  3539  enum : uint { ILLUMINANT_A = 1 }
  3540  enum : uint { ILLUMINANT_B = 2 }
  3541  enum : uint { ILLUMINANT_C = 3 }
  3542  enum : uint { ILLUMINANT_D50 = 4 }
  3543  enum : uint { ILLUMINANT_D55 = 5 }
  3544  enum : uint { ILLUMINANT_D65 = 6 }
  3545  enum : uint { ILLUMINANT_D75 = 7 }
  3546  enum : uint { ILLUMINANT_F2 = 8 }
  3547  alias ILLUMINANT_F2 ILLUMINANT_MAX_INDEX;
  3548  
  3549  alias ILLUMINANT_A ILLUMINANT_TUNGSTEN;
  3550  alias ILLUMINANT_C ILLUMINANT_DAYLIGHT;
  3551  alias ILLUMINANT_F2 ILLUMINANT_FLUORESCENT;
  3552  alias ILLUMINANT_C ILLUMINANT_NTSC;
  3553  
  3554  enum : WORD { RGB_GAMMA_MIN = 02500 }
  3555  enum : WORD { RGB_GAMMA_MAX = 65000 }
  3556  
  3557  enum : WORD { REFERENCE_WHITE_MIN = 6000 }
  3558  enum : WORD { REFERENCE_WHITE_MAX = 10000 }
  3559  enum : WORD { REFERENCE_BLACK_MIN = 0 }
  3560  enum : WORD { REFERENCE_BLACK_MAX = 4000 }
  3561  
  3562  enum : SHORT { COLOR_ADJ_MIN = -100 }
  3563  enum : SHORT { COLOR_ADJ_MAX = 100 }
  3564  
  3565  struct tagCOLORADJUSTMENT {
  3566    WORD caSize;
  3567    WORD caFlags;
  3568    WORD caIlluminantIndex;
  3569    WORD caRedGamma;
  3570    WORD caGreenGamma;
  3571    WORD caBlueGamma;
  3572    WORD caReferenceBlack;
  3573    WORD caReferenceWhite;
  3574    SHORT caContrast;
  3575    SHORT caBrightness;
  3576    SHORT caColorfulness;
  3577    SHORT caRedGreenTint;
  3578  }
  3579  alias tagCOLORADJUSTMENT COLORADJUSTMENT;
  3580  alias tagCOLORADJUSTMENT* PCOLORADJUSTMENT;
  3581  alias tagCOLORADJUSTMENT* LPCOLORADJUSTMENT;
  3582  
  3583  extern(Windows) export BOOL SetColorAdjustment(HDC, COLORADJUSTMENT *);
  3584  extern(Windows) export BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
  3585  extern(Windows) export HPALETTE CreateHalftonePalette(HDC);
  3586  
  3587  // #ifdef STRICT
  3588  extern(Windows) alias BOOL function(  HDC,  int) ABORTPROC;
  3589  // #else
  3590  // ...
  3591  // #endif
  3592  
  3593  struct _DOCINFOA {
  3594    int cbSize;
  3595    LPCSTR lpszDocName;
  3596    LPCSTR lpszOutput;
  3597  // #if (WINVER >= 0x0400)
  3598    LPCSTR lpszDatatype;
  3599    DWORD fwType;
  3600  // #endif /* WINVER */
  3601  }
  3602  alias _DOCINFOA DOCINFOA;
  3603  alias _DOCINFOA* LPDOCINFOA;
  3604  
  3605  struct _DOCINFOW {
  3606    int cbSize;
  3607    LPCWSTR lpszDocName;
  3608    LPCWSTR lpszOutput;
  3609  // #if (WINVER >= 0x0400)
  3610    LPCWSTR lpszDatatype;
  3611    DWORD fwType;
  3612  // #endif /* WINVER */
  3613  }
  3614  alias _DOCINFOW DOCINFOW;
  3615  alias _DOCINFOW* LPDOCINFOW;
  3616  
  3617  // #ifdef UNICODE
  3618  // ...
  3619  // #else
  3620  alias DOCINFOA DOCINFO;
  3621  alias LPDOCINFOA LPDOCINFO;
  3622  // #endif // UNICODE
  3623  
  3624  // #if(WINVER >= 0x0400)
  3625  enum : uint { DI_APPBANDING = 0x00000001 }
  3626  enum : uint { DI_ROPS_READ_DESTINATION = 0x00000002 }
  3627  // #endif /* WINVER >= 0x0400 */
  3628  
  3629  extern(Windows) export int StartDocA(HDC, DOCINFOA *);
  3630  extern(Windows) export int StartDocW(HDC, DOCINFOW *);
  3631  // #ifdef UNICODE
  3632  // #...
  3633  // #else
  3634  alias StartDocA StartDoc;
  3635  // #endif // !UNICODE
  3636  extern(Windows) export int EndDoc(HDC);
  3637  extern(Windows) export int StartPage(HDC);
  3638  extern(Windows) export int EndPage(HDC);
  3639  extern(Windows) export int AbortDoc(HDC);
  3640  extern(Windows) export int SetAbortProc(HDC, ABORTPROC);
  3641  
  3642  extern(Windows) export BOOL AbortPath(HDC);
  3643  extern(Windows) export BOOL ArcTo(HDC, int, int, int, int, int, int, int, int);
  3644  extern(Windows) export BOOL BeginPath(HDC);
  3645  extern(Windows) export BOOL CloseFigure(HDC);
  3646  extern(Windows) export BOOL EndPath(HDC);
  3647  extern(Windows) export BOOL FillPath(HDC);
  3648  extern(Windows) export BOOL FlattenPath(HDC);
  3649  extern(Windows) export int GetPath(HDC, LPPOINT, LPBYTE, int);
  3650  extern(Windows) export HRGN PathToRegion(HDC);
  3651  extern(Windows) export BOOL PolyDraw(HDC, POINT *, BYTE *, int);
  3652  extern(Windows) export BOOL SelectClipPath(HDC, int);
  3653  extern(Windows) export int SetArcDirection(HDC, int);
  3654  extern(Windows) export BOOL SetMiterLimit(HDC, FLOAT, PFLOAT);
  3655  extern(Windows) export BOOL StrokeAndFillPath(HDC);
  3656  extern(Windows) export BOOL StrokePath(HDC);
  3657  extern(Windows) export BOOL WidenPath(HDC);
  3658  extern(Windows) export HPEN ExtCreatePen(DWORD, DWORD, LOGBRUSH *, DWORD, DWORD *);
  3659  extern(Windows) export BOOL GetMiterLimit(HDC, PFLOAT);
  3660  extern(Windows) export int GetArcDirection(HDC);
  3661  
  3662  extern(Windows) export int GetObjectA(HGDIOBJ, int, LPVOID);
  3663  extern(Windows) export int GetObjectW(HGDIOBJ, int, LPVOID);
  3664  // #ifdef UNICODE
  3665  // #...
  3666  // #else
  3667  alias GetObjectA GetObject;
  3668  // #endif // !UNICODE
  3669  extern(Windows) export BOOL MoveToEx(HDC, int, int, LPPOINT);
  3670  extern(Windows) export BOOL TextOutA(HDC, int, int, LPCSTR, int);
  3671  extern(Windows) export BOOL TextOutW(HDC, int, int, LPCWSTR, int);
  3672  // #ifdef UNICODE
  3673  // #...
  3674  // #else
  3675  alias TextOutA TextOut;
  3676  // #endif // !UNICODE
  3677  extern(Windows) export BOOL ExtTextOutA(HDC, int, int, UINT, RECT *, LPCSTR, UINT, INT *);
  3678  extern(Windows) export BOOL ExtTextOutW(HDC, int, int, UINT, RECT *, LPCWSTR, UINT, INT *);
  3679  // #ifdef UNICODE
  3680  // #...
  3681  // #else
  3682  alias ExtTextOutA ExtTextOut;
  3683  // #endif // !UNICODE
  3684  extern(Windows) export BOOL PolyTextOutA(HDC, POLYTEXTA *, int);
  3685  extern(Windows) export BOOL PolyTextOutW(HDC, POLYTEXTW *, int);
  3686  // #ifdef UNICODE
  3687  // #...
  3688  // #else
  3689  alias PolyTextOutA PolyTextOut;
  3690  // #endif // !UNICODE
  3691  
  3692  extern(Windows) export HRGN CreatePolygonRgn(POINT *, int, int);
  3693  extern(Windows) export BOOL DPtoLP(HDC, LPPOINT, int);
  3694  extern(Windows) export BOOL LPtoDP(HDC, LPPOINT, int);
  3695  extern(Windows) export BOOL Polygon(HDC, POINT *, int);
  3696  extern(Windows) export BOOL Polyline(HDC, POINT *, int);
  3697  
  3698  extern(Windows) export BOOL PolyBezier(HDC, POINT *, DWORD);
  3699  extern(Windows) export BOOL PolyBezierTo(HDC, POINT *, DWORD);
  3700  extern(Windows) export BOOL PolylineTo(HDC, POINT *, DWORD);
  3701  
  3702  extern(Windows) export BOOL SetViewportExtEx(HDC, int, int, LPSIZE);
  3703  extern(Windows) export BOOL SetViewportOrgEx(HDC, int, int, LPPOINT);
  3704  extern(Windows) export BOOL SetWindowExtEx(HDC, int, int, LPSIZE);
  3705  extern(Windows) export BOOL SetWindowOrgEx(HDC, int, int, LPPOINT);
  3706  
  3707  extern(Windows) export BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT);
  3708  extern(Windows) export BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT);
  3709  extern(Windows) export BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE);
  3710  extern(Windows) export BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE);
  3711  extern(Windows) export BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE);
  3712  extern(Windows) export BOOL SetBrushOrgEx(HDC, int, int, LPPOINT);
  3713  
  3714  extern(Windows) export int GetTextFaceA(HDC, int, LPSTR);
  3715  extern(Windows) export int GetTextFaceW(HDC, int, LPWSTR);
  3716  // #ifdef UNICODE
  3717  // #...
  3718  // #else
  3719  alias GetTextFaceA GetTextFace;
  3720  // #endif // !UNICODE
  3721  
  3722  enum : uint { FONTMAPPER_MAX = 10 }
  3723  
  3724  struct tagKERNINGPAIR {
  3725    WORD wFirst;
  3726    WORD wSecond;
  3727    int iKernAmount;
  3728  }
  3729  alias tagKERNINGPAIR KERNINGPAIR;
  3730  alias tagKERNINGPAIR* LPKERNINGPAIR;
  3731  
  3732  extern(Windows) export DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR);
  3733  extern(Windows) export DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR);
  3734  // #ifdef UNICODE
  3735  // #...
  3736  // #else
  3737  alias GetKerningPairsA GetKerningPairs;
  3738  // #endif // !UNICODE
  3739  
  3740  extern(Windows) export BOOL GetDCOrgEx(HDC, LPPOINT);
  3741  extern(Windows) export BOOL FixBrushOrgEx(HDC, int, int, LPPOINT);
  3742  extern(Windows) export BOOL UnrealizeObject(HGDIOBJ);
  3743  
  3744  extern(Windows) export BOOL GdiFlush();
  3745  extern(Windows) export DWORD GdiSetBatchLimit(DWORD);
  3746  extern(Windows) export DWORD GdiGetBatchLimit();
  3747  
  3748  // #if(WINVER >= 0x0400)
  3749  
  3750  enum : uint { ICM_OFF = 1 }
  3751  enum : uint { ICM_ON = 2 }
  3752  enum : uint { ICM_QUERY = 3 }
  3753  enum : uint { ICM_DONE_OUTSIDEDC = 4 }
  3754  
  3755  extern(Windows) alias int function(LPSTR, LPARAM) ICMENUMPROCA;
  3756  extern(Windows) alias int function(LPWSTR, LPARAM) ICMENUMPROCW;
  3757  // #ifdef UNICODE
  3758  // #...
  3759  // #else
  3760  alias ICMENUMPROCA ICMENUMPROC;
  3761  // #endif // !UNICODE
  3762  
  3763  extern(Windows) export int SetICMMode(HDC, int);
  3764  extern(Windows) export BOOL CheckColorsInGamut(HDC, LPVOID, LPVOID, DWORD);
  3765  extern(Windows) export HCOLORSPACE GetColorSpace(HDC);
  3766  extern(Windows) export BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD);
  3767  extern(Windows) export BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD);
  3768  // #ifdef UNICODE
  3769  // #...
  3770  // #else
  3771  alias GetLogColorSpaceA GetLogColorSpace;
  3772  // #endif // !UNICODE
  3773  extern(Windows) export HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA);
  3774  extern(Windows) export HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW);
  3775  // #ifdef UNICODE
  3776  // #...
  3777  // #else
  3778  alias CreateColorSpaceA CreateColorSpace;
  3779  // #endif // !UNICODE
  3780  extern(Windows) export HCOLORSPACE SetColorSpace(HDC, HCOLORSPACE);
  3781  extern(Windows) export BOOL DeleteColorSpace(HCOLORSPACE);
  3782  extern(Windows) export BOOL GetICMProfileA(HDC, LPDWORD, LPSTR);
  3783  extern(Windows) export BOOL GetICMProfileW(HDC, LPDWORD, LPWSTR);
  3784  // #ifdef UNICODE
  3785  // #...
  3786  // #else
  3787  alias GetICMProfileA GetICMProfile;
  3788  // #endif // !UNICODE
  3789  extern(Windows) export BOOL SetICMProfileA(HDC, LPSTR);
  3790  extern(Windows) export BOOL SetICMProfileW(HDC, LPWSTR);
  3791  // #ifdef UNICODE
  3792  // #...
  3793  // #else
  3794  alias SetICMProfileA SetICMProfile;
  3795  // #endif // !UNICODE
  3796  extern(Windows) export BOOL GetDeviceGammaRamp(HDC, LPVOID);
  3797  extern(Windows) export BOOL SetDeviceGammaRamp(HDC, LPVOID);
  3798  extern(Windows) export BOOL ColorMatchToTarget(HDC, HDC, DWORD);
  3799  extern(Windows) export int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM);
  3800  extern(Windows) export int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM);
  3801  // #ifdef UNICODE
  3802  // #...
  3803  // #else
  3804  alias EnumICMProfilesA EnumICMProfiles;
  3805  // #endif // !UNICODE
  3806  extern(Windows) export BOOL UpdateICMRegKeyA(DWORD, LPSTR, LPSTR, UINT);
  3807  extern(Windows) export BOOL UpdateICMRegKeyW(DWORD, LPWSTR, LPWSTR, UINT);
  3808  // #ifdef UNICODE
  3809  // #...
  3810  // #else
  3811  alias UpdateICMRegKeyA UpdateICMRegKey;
  3812  // #endif // !UNICODE
  3813  // #endif /* WINVER >= 0x0400 */
  3814  
  3815  // #if (WINVER >= 0x0500)
  3816  extern(Windows) export BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD);
  3817  // #endif
  3818  
  3819  // #ifndef NOMETAFILE
  3820  
  3821  // #ifndef _MAC
  3822  enum : uint { ENHMETA_SIGNATURE = 0x464D4520 }
  3823  // #else
  3824  // #...
  3825  // #endif
  3826  
  3827  enum : uint { ENHMETA_STOCK_OBJECT = 0x80000000 }
  3828  
  3829  enum : uint { EMR_HEADER = 1 }
  3830  enum : uint { EMR_POLYBEZIER = 2 }
  3831  enum : uint { EMR_POLYGON = 3 }
  3832  enum : uint { EMR_POLYLINE = 4 }
  3833  enum : uint { EMR_POLYBEZIERTO = 5 }
  3834  enum : uint { EMR_POLYLINETO = 6 }
  3835  enum : uint { EMR_POLYPOLYLINE = 7 }
  3836  enum : uint { EMR_POLYPOLYGON = 8 }
  3837  enum : uint { EMR_SETWINDOWEXTEX = 9 }
  3838  enum : uint { EMR_SETWINDOWORGEX = 10 }
  3839  enum : uint { EMR_SETVIEWPORTEXTEX = 11 }
  3840  enum : uint { EMR_SETVIEWPORTORGEX = 12 }
  3841  enum : uint { EMR_SETBRUSHORGEX = 13 }
  3842  enum : uint { EMR_EOF = 14 }
  3843  enum : uint { EMR_SETPIXELV = 15 }
  3844  enum : uint { EMR_SETMAPPERFLAGS = 16 }
  3845  enum : uint { EMR_SETMAPMODE = 17 }
  3846  enum : uint { EMR_SETBKMODE = 18 }
  3847  enum : uint { EMR_SETPOLYFILLMODE = 19 }
  3848  enum : uint { EMR_SETROP2 = 20 }
  3849  enum : uint { EMR_SETSTRETCHBLTMODE = 21 }
  3850  enum : uint { EMR_SETTEXTALIGN = 22 }
  3851  enum : uint { EMR_SETCOLORADJUSTMENT = 23 }
  3852  enum : uint { EMR_SETTEXTCOLOR = 24 }
  3853  enum : uint { EMR_SETBKCOLOR = 25 }
  3854  enum : uint { EMR_OFFSETCLIPRGN = 26 }
  3855  enum : uint { EMR_MOVETOEX = 27 }
  3856  enum : uint { EMR_SETMETARGN = 28 }
  3857  enum : uint { EMR_EXCLUDECLIPRECT = 29 }
  3858  enum : uint { EMR_INTERSECTCLIPRECT = 30 }
  3859  enum : uint { EMR_SCALEVIEWPORTEXTEX = 31 }
  3860  enum : uint { EMR_SCALEWINDOWEXTEX = 32 }
  3861  enum : uint { EMR_SAVEDC = 33 }
  3862  enum : uint { EMR_RESTOREDC = 34 }
  3863  enum : uint { EMR_SETWORLDTRANSFORM = 35 }
  3864  enum : uint { EMR_MODIFYWORLDTRANSFORM = 36 }
  3865  enum : uint { EMR_SELECTOBJECT = 37 }
  3866  enum : uint { EMR_CREATEPEN = 38 }
  3867  enum : uint { EMR_CREATEBRUSHINDIRECT = 39 }
  3868  enum : uint { EMR_DELETEOBJECT = 40 }
  3869  enum : uint { EMR_ANGLEARC = 41 }
  3870  enum : uint { EMR_ELLIPSE = 42 }
  3871  enum : uint { EMR_RECTANGLE = 43 }
  3872  enum : uint { EMR_ROUNDRECT = 44 }
  3873  enum : uint { EMR_ARC = 45 }
  3874  enum : uint { EMR_CHORD = 46 }
  3875  enum : uint { EMR_PIE = 47 }
  3876  enum : uint { EMR_SELECTPALETTE = 48 }
  3877  enum : uint { EMR_CREATEPALETTE = 49 }
  3878  enum : uint { EMR_SETPALETTEENTRIES = 50 }
  3879  enum : uint { EMR_RESIZEPALETTE = 51 }
  3880  enum : uint { EMR_REALIZEPALETTE = 52 }
  3881  enum : uint { EMR_EXTFLOODFILL = 53 }
  3882  enum : uint { EMR_LINETO = 54 }
  3883  enum : uint { EMR_ARCTO = 55 }
  3884  enum : uint { EMR_POLYDRAW = 56 }
  3885  enum : uint { EMR_SETARCDIRECTION = 57 }
  3886  enum : uint { EMR_SETMITERLIMIT = 58 }
  3887  enum : uint { EMR_BEGINPATH = 59 }
  3888  enum : uint { EMR_ENDPATH = 60 }
  3889  enum : uint { EMR_CLOSEFIGURE = 61 }
  3890  enum : uint { EMR_FILLPATH = 62 }
  3891  enum : uint { EMR_STROKEANDFILLPATH = 63 }
  3892  enum : uint { EMR_STROKEPATH = 64 }
  3893  enum : uint { EMR_FLATTENPATH = 65 }
  3894  enum : uint { EMR_WIDENPATH = 66 }
  3895  enum : uint { EMR_SELECTCLIPPATH = 67 }
  3896  enum : uint { EMR_ABORTPATH = 68 }
  3897  
  3898  enum : uint { EMR_GDICOMMENT = 70 }
  3899  enum : uint { EMR_FILLRGN = 71 }
  3900  enum : uint { EMR_FRAMERGN = 72 }
  3901  enum : uint { EMR_INVERTRGN = 73 }
  3902  enum : uint { EMR_PAINTRGN = 74 }
  3903  enum : uint { EMR_EXTSELECTCLIPRGN = 75 }
  3904  enum : uint { EMR_BITBLT = 76 }
  3905  enum : uint { EMR_STRETCHBLT = 77 }
  3906  enum : uint { EMR_MASKBLT = 78 }
  3907  enum : uint { EMR_PLGBLT = 79 }
  3908  enum : uint { EMR_SETDIBITSTODEVICE = 80 }
  3909  enum : uint { EMR_STRETCHDIBITS = 81 }
  3910  enum : uint { EMR_EXTCREATEFONTINDIRECTW = 82 }
  3911  enum : uint { EMR_EXTTEXTOUTA = 83 }
  3912  enum : uint { EMR_EXTTEXTOUTW = 84 }
  3913  enum : uint { EMR_POLYBEZIER16 = 85 }
  3914  enum : uint { EMR_POLYGON16 = 86 }
  3915  enum : uint { EMR_POLYLINE16 = 87 }
  3916  enum : uint { EMR_POLYBEZIERTO16 = 88 }
  3917  enum : uint { EMR_POLYLINETO16 = 89 }
  3918  enum : uint { EMR_POLYPOLYLINE16 = 90 }
  3919  enum : uint { EMR_POLYPOLYGON16 = 91 }
  3920  enum : uint { EMR_POLYDRAW16 = 92 }
  3921  enum : uint { EMR_CREATEMONOBRUSH = 93 }
  3922  enum : uint { EMR_CREATEDIBPATTERNBRUSHPT = 94 }
  3923  enum : uint { EMR_EXTCREATEPEN = 95 }
  3924  enum : uint { EMR_POLYTEXTOUTA = 96 }
  3925  enum : uint { EMR_POLYTEXTOUTW = 97 }
  3926  
  3927  // #if(WINVER >= 0x0400)
  3928  enum : uint { EMR_SETICMMODE = 98 }
  3929  enum : uint { EMR_CREATECOLORSPACE = 99 }
  3930  enum : uint { EMR_SETCOLORSPACE = 100 }
  3931  enum : uint { EMR_DELETECOLORSPACE = 101 }
  3932  enum : uint { EMR_GLSRECORD = 102 }
  3933  enum : uint { EMR_GLSBOUNDEDRECORD = 103 }
  3934  enum : uint { EMR_PIXELFORMAT = 104 }
  3935  // #endif /* WINVER >= 0x0400 */
  3936  
  3937  // #if(WINVER >= 0x0500)
  3938  enum : uint { EMR_RESERVED_105 = 105 }
  3939  enum : uint { EMR_RESERVED_106 = 106 }
  3940  enum : uint { EMR_RESERVED_107 = 107 }
  3941  enum : uint { EMR_RESERVED_108 = 108 }
  3942  enum : uint { EMR_RESERVED_109 = 109 }
  3943  enum : uint { EMR_RESERVED_110 = 110 }
  3944  enum : uint { EMR_COLORCORRECTPALETTE = 111 }
  3945  enum : uint { EMR_SETICMPROFILEA = 112 }
  3946  enum : uint { EMR_SETICMPROFILEW = 113 }
  3947  enum : uint { EMR_ALPHABLEND = 114 }
  3948  enum : uint { EMR_SETLAYOUT = 115 }
  3949  enum : uint { EMR_TRANSPARENTBLT = 116 }
  3950  enum : uint { EMR_RESERVED_117 = 117 }
  3951  enum : uint { EMR_GRADIENTFILL = 118 }
  3952  enum : uint { EMR_RESERVED_119 = 119 }
  3953  enum : uint { EMR_RESERVED_120 = 120 }
  3954  enum : uint { EMR_COLORMATCHTOTARGETW = 121 }
  3955  enum : uint { EMR_CREATECOLORSPACEW = 122 }
  3956  // #endif /* WINVER >= 0x0500 */
  3957  
  3958  enum : uint { EMR_MIN = 1 }
  3959  
  3960  // #if (WINVER >= 0x0500)
  3961  enum : uint { EMR_MAX = 122 }
  3962  // #elif (WINVER >= 0x0400)
  3963  // #...
  3964  // #else
  3965  // #...
  3966  // #endif
  3967  
  3968  struct tagEMR {
  3969    DWORD iType;
  3970    DWORD nSize;
  3971  
  3972  }
  3973  alias tagEMR EMR;
  3974  alias tagEMR* PEMR;
  3975  
  3976  struct tagEMRTEXT {
  3977    POINTL ptlReference;
  3978    DWORD nChars;
  3979    DWORD offString;
  3980    DWORD fOptions;
  3981    RECTL rcl;
  3982    DWORD offDx;
  3983  
  3984  }
  3985  alias tagEMRTEXT EMRTEXT;
  3986  alias tagEMRTEXT* PEMRTEXT;
  3987  
  3988  struct tagABORTPATH {
  3989    EMR emr;
  3990  }
  3991  alias tagABORTPATH EMRABORTPATH;
  3992  alias tagABORTPATH* PEMRABORTPATH;
  3993  alias tagABORTPATH EMRBEGINPATH;
  3994  alias tagABORTPATH* PEMRBEGINPATH;
  3995  alias tagABORTPATH EMRENDPATH;
  3996  alias tagABORTPATH* PEMRENDPATH;
  3997  alias tagABORTPATH EMRCLOSEFIGURE;
  3998  alias tagABORTPATH* PEMRCLOSEFIGURE;
  3999  alias tagABORTPATH EMRFLATTENPATH;
  4000  alias tagABORTPATH* PEMRFLATTENPATH;
  4001  alias tagABORTPATH EMRWIDENPATH;
  4002  alias tagABORTPATH* PEMRWIDENPATH;
  4003  alias tagABORTPATH EMRSETMETARGN;
  4004  alias tagABORTPATH* PEMRSETMETARGN;
  4005  alias tagABORTPATH EMRSAVEDC;
  4006  alias tagABORTPATH* PEMRSAVEDC;
  4007  alias tagABORTPATH EMRREALIZEPALETTE;
  4008  alias tagABORTPATH* PEMRREALIZEPALETTE;
  4009  
  4010  struct tagEMRSELECTCLIPPATH {
  4011    EMR emr;
  4012    DWORD iMode;
  4013  }
  4014  alias tagEMRSELECTCLIPPATH EMRSELECTCLIPPATH;
  4015  alias tagEMRSELECTCLIPPATH* PEMRSELECTCLIPPATH;
  4016  alias tagEMRSELECTCLIPPATH EMRSETBKMODE;
  4017  alias tagEMRSELECTCLIPPATH* PEMRSETBKMODE;
  4018  alias tagEMRSELECTCLIPPATH EMRSETMAPMODE;
  4019  alias tagEMRSELECTCLIPPATH* PEMRSETMAPMODE;
  4020  alias tagEMRSELECTCLIPPATH EMRSETLAYOUT;
  4021  alias tagEMRSELECTCLIPPATH* PEMRSETLAYOUT;
  4022  alias tagEMRSELECTCLIPPATH EMRSETPOLYFILLMODE;
  4023  alias tagEMRSELECTCLIPPATH* PEMRSETPOLYFILLMODE;
  4024  alias tagEMRSELECTCLIPPATH EMRSETROP2;
  4025  alias tagEMRSELECTCLIPPATH* PEMRSETROP2;
  4026  alias tagEMRSELECTCLIPPATH EMRSETSTRETCHBLTMODE;
  4027  alias tagEMRSELECTCLIPPATH* PEMRSETSTRETCHBLTMODE;
  4028  alias tagEMRSELECTCLIPPATH EMRSETICMMODE;
  4029  alias tagEMRSELECTCLIPPATH* PEMRSETICMMODE;
  4030  alias tagEMRSELECTCLIPPATH EMRSETTEXTALIGN;
  4031  alias tagEMRSELECTCLIPPATH* PEMRSETTEXTALIGN;
  4032  
  4033  struct tagEMRSETMITERLIMIT {
  4034    EMR emr;
  4035    FLOAT eMiterLimit;
  4036  }
  4037  alias tagEMRSETMITERLIMIT EMRSETMITERLIMIT;
  4038  alias tagEMRSETMITERLIMIT* PEMRSETMITERLIMIT;
  4039  
  4040  struct tagEMRRESTOREDC {
  4041    EMR emr;
  4042    LONG iRelative;
  4043  }
  4044  alias tagEMRRESTOREDC EMRRESTOREDC;
  4045  alias tagEMRRESTOREDC* PEMRRESTOREDC;
  4046  
  4047  struct tagEMRSETARCDIRECTION {
  4048    EMR emr;
  4049    DWORD iArcDirection;
  4050  
  4051  }
  4052  alias tagEMRSETARCDIRECTION EMRSETARCDIRECTION;
  4053  alias tagEMRSETARCDIRECTION* PEMRSETARCDIRECTION;
  4054  
  4055  struct tagEMRSETMAPPERFLAGS {
  4056    EMR emr;
  4057    DWORD dwFlags;
  4058  }
  4059  alias tagEMRSETMAPPERFLAGS EMRSETMAPPERFLAGS;
  4060  alias tagEMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS;
  4061  
  4062  struct tagEMRSETTEXTCOLOR {
  4063    EMR emr;
  4064    COLORREF crColor;
  4065  }
  4066  alias tagEMRSETTEXTCOLOR EMRSETBKCOLOR;
  4067  alias tagEMRSETTEXTCOLOR* PEMRSETBKCOLOR;
  4068  alias tagEMRSETTEXTCOLOR EMRSETTEXTCOLOR;
  4069  alias tagEMRSETTEXTCOLOR* PEMRSETTEXTCOLOR;
  4070  
  4071  struct tagEMRSELECTOBJECT {
  4072    EMR emr;
  4073    DWORD ihObject;
  4074  }
  4075  alias tagEMRSELECTOBJECT EMRSELECTOBJECT;
  4076  alias tagEMRSELECTOBJECT* PEMRSELECTOBJECT;
  4077  alias tagEMRSELECTOBJECT EMRDELETEOBJECT;
  4078  alias tagEMRSELECTOBJECT* PEMRDELETEOBJECT;
  4079  
  4080  struct tagEMRSELECTPALETTE {
  4081    EMR emr;
  4082    DWORD ihPal;
  4083  }
  4084  alias tagEMRSELECTPALETTE EMRSELECTPALETTE;
  4085  alias tagEMRSELECTPALETTE* PEMRSELECTPALETTE;
  4086  
  4087  struct tagEMRRESIZEPALETTE {
  4088    EMR emr;
  4089    DWORD ihPal;
  4090    DWORD cEntries;
  4091  }
  4092  alias tagEMRRESIZEPALETTE EMRRESIZEPALETTE;
  4093  alias tagEMRRESIZEPALETTE* PEMRRESIZEPALETTE;
  4094  
  4095  struct tagEMRSETPALETTEENTRIES {
  4096    EMR emr;
  4097    DWORD ihPal;
  4098    DWORD iStart;
  4099    DWORD cEntries;
  4100    PALETTEENTRY aPalEntries[1];
  4101  }
  4102  alias tagEMRSETPALETTEENTRIES EMRSETPALETTEENTRIES;
  4103  alias tagEMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES;
  4104  
  4105  struct tagEMRSETCOLORADJUSTMENT {
  4106    EMR emr;
  4107    COLORADJUSTMENT ColorAdjustment;
  4108  }
  4109  alias tagEMRSETCOLORADJUSTMENT EMRSETCOLORADJUSTMENT;
  4110  alias tagEMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT;
  4111  
  4112  struct tagEMRGDICOMMENT {
  4113    EMR emr;
  4114    DWORD cbData;
  4115    BYTE Data[1];
  4116  }
  4117  alias tagEMRGDICOMMENT EMRGDICOMMENT;
  4118  alias tagEMRGDICOMMENT* PEMRGDICOMMENT;
  4119  
  4120  struct tagEMREOF {
  4121    EMR emr;
  4122    DWORD nPalEntries;
  4123    DWORD offPalEntries;
  4124    DWORD nSizeLast;
  4125  
  4126  }
  4127  alias tagEMREOF EMREOF;
  4128  alias tagEMREOF* PEMREOF;
  4129  
  4130  struct tagEMRLINETO {
  4131    EMR emr;
  4132    POINTL ptl;
  4133  }
  4134  alias tagEMRLINETO EMRLINETO;
  4135  alias tagEMRLINETO* PEMRLINETO;
  4136  alias tagEMRLINETO EMRMOVETOEX;
  4137  alias tagEMRLINETO* PEMRMOVETOEX;
  4138  
  4139  struct tagEMROFFSETCLIPRGN {
  4140    EMR emr;
  4141    POINTL ptlOffset;
  4142  }
  4143  alias tagEMROFFSETCLIPRGN EMROFFSETCLIPRGN;
  4144  alias tagEMROFFSETCLIPRGN* PEMROFFSETCLIPRGN;
  4145  
  4146  struct tagEMRFILLPATH {
  4147    EMR emr;
  4148    RECTL rclBounds;
  4149  }
  4150  alias tagEMRFILLPATH EMRFILLPATH;
  4151  alias tagEMRFILLPATH* PEMRFILLPATH;
  4152  alias tagEMRFILLPATH EMRSTROKEANDFILLPATH;
  4153  alias tagEMRFILLPATH* PEMRSTROKEANDFILLPATH;
  4154  alias tagEMRFILLPATH EMRSTROKEPATH;
  4155  alias tagEMRFILLPATH* PEMRSTROKEPATH;
  4156  
  4157  struct tagEMREXCLUDECLIPRECT {
  4158    EMR emr;
  4159    RECTL rclClip;
  4160  }
  4161  alias tagEMREXCLUDECLIPRECT EMREXCLUDECLIPRECT;
  4162  alias tagEMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT;
  4163  alias tagEMREXCLUDECLIPRECT EMRINTERSECTCLIPRECT;
  4164  alias tagEMREXCLUDECLIPRECT* PEMRINTERSECTCLIPRECT;
  4165  
  4166  struct tagEMRSETVIEWPORTORGEX {
  4167    EMR emr;
  4168    POINTL ptlOrigin;
  4169  }
  4170  alias tagEMRSETVIEWPORTORGEX EMRSETVIEWPORTORGEX;
  4171  alias tagEMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX;
  4172  alias tagEMRSETVIEWPORTORGEX EMRSETWINDOWORGEX;
  4173  alias tagEMRSETVIEWPORTORGEX* PEMRSETWINDOWORGEX;
  4174  alias tagEMRSETVIEWPORTORGEX EMRSETBRUSHORGEX;
  4175  alias tagEMRSETVIEWPORTORGEX* PEMRSETBRUSHORGEX;
  4176  
  4177  struct tagEMRSETVIEWPORTEXTEX {
  4178    EMR emr;
  4179    SIZEL szlExtent;
  4180  }
  4181  alias tagEMRSETVIEWPORTEXTEX EMRSETVIEWPORTEXTEX;
  4182  alias tagEMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX;
  4183  alias tagEMRSETVIEWPORTEXTEX EMRSETWINDOWEXTEX;
  4184  alias tagEMRSETVIEWPORTEXTEX* PEMRSETWINDOWEXTEX;
  4185  
  4186  struct tagEMRSCALEVIEWPORTEXTEX {
  4187    EMR emr;
  4188    LONG xNum;
  4189    LONG xDenom;
  4190    LONG yNum;
  4191    LONG yDenom;
  4192  }
  4193  alias tagEMRSCALEVIEWPORTEXTEX EMRSCALEVIEWPORTEXTEX;
  4194  alias tagEMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX;
  4195  alias tagEMRSCALEVIEWPORTEXTEX EMRSCALEWINDOWEXTEX;
  4196  alias tagEMRSCALEVIEWPORTEXTEX* PEMRSCALEWINDOWEXTEX;
  4197  
  4198  struct tagEMRSETWORLDTRANSFORM {
  4199    EMR emr;
  4200    XFORM xform;
  4201  }
  4202  alias tagEMRSETWORLDTRANSFORM EMRSETWORLDTRANSFORM;
  4203  alias tagEMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM;
  4204  
  4205  struct tagEMRMODIFYWORLDTRANSFORM {
  4206    EMR emr;
  4207    XFORM xform;
  4208    DWORD iMode;
  4209  }
  4210  alias tagEMRMODIFYWORLDTRANSFORM EMRMODIFYWORLDTRANSFORM;
  4211  alias tagEMRMODIFYWORLDTRANSFORM* PEMRMODIFYWORLDTRANSFORM;
  4212  
  4213  struct tagEMRSETPIXELV {
  4214    EMR emr;
  4215    POINTL ptlPixel;
  4216    COLORREF crColor;
  4217  }
  4218  alias tagEMRSETPIXELV EMRSETPIXELV;
  4219  alias tagEMRSETPIXELV* PEMRSETPIXELV;
  4220  
  4221  struct tagEMREXTFLOODFILL {
  4222    EMR emr;
  4223    POINTL ptlStart;
  4224    COLORREF crColor;
  4225    DWORD iMode;
  4226  }
  4227  alias tagEMREXTFLOODFILL EMREXTFLOODFILL;
  4228  alias tagEMREXTFLOODFILL* PEMREXTFLOODFILL;
  4229  
  4230  struct tagEMRELLIPSE {
  4231    EMR emr;
  4232    RECTL rclBox;
  4233  }
  4234  alias tagEMRELLIPSE EMRELLIPSE;
  4235  alias tagEMRELLIPSE* PEMRELLIPSE;
  4236  alias tagEMRELLIPSE EMRRECTANGLE;
  4237  alias tagEMRELLIPSE* PEMRRECTANGLE;
  4238  
  4239  struct tagEMRROUNDRECT {
  4240    EMR emr;
  4241    RECTL rclBox;
  4242    SIZEL szlCorner;
  4243  }
  4244  alias tagEMRROUNDRECT EMRROUNDRECT;
  4245  alias tagEMRROUNDRECT* PEMRROUNDRECT;
  4246  
  4247  struct tagEMRARC {
  4248    EMR emr;
  4249    RECTL rclBox;
  4250    POINTL ptlStart;
  4251    POINTL ptlEnd;
  4252  }
  4253  alias tagEMRARC EMRARC;
  4254  alias tagEMRARC* PEMRARC;
  4255  alias tagEMRARC EMRARCTO;
  4256  alias tagEMRARC* PEMRARCTO;
  4257  alias tagEMRARC EMRCHORD;
  4258  alias tagEMRARC* PEMRCHORD;
  4259  alias tagEMRARC EMRPIE;
  4260  alias tagEMRARC* PEMRPIE;
  4261  
  4262  struct tagEMRANGLEARC {
  4263    EMR emr;
  4264    POINTL ptlCenter;
  4265    DWORD nRadius;
  4266    FLOAT eStartAngle;
  4267    FLOAT eSweepAngle;
  4268  }
  4269  alias tagEMRANGLEARC EMRANGLEARC;
  4270  alias tagEMRANGLEARC* PEMRANGLEARC;
  4271  
  4272  struct tagEMRPOLYLINE {
  4273    EMR emr;
  4274    RECTL rclBounds;
  4275    DWORD cptl;
  4276    POINTL aptl[1];
  4277  }
  4278  alias tagEMRPOLYLINE EMRPOLYLINE;
  4279  alias tagEMRPOLYLINE* PEMRPOLYLINE;
  4280  alias tagEMRPOLYLINE EMRPOLYBEZIER;
  4281  alias tagEMRPOLYLINE* PEMRPOLYBEZIER;
  4282  alias tagEMRPOLYLINE EMRPOLYGON;
  4283  alias tagEMRPOLYLINE* PEMRPOLYGON;
  4284  alias tagEMRPOLYLINE EMRPOLYBEZIERTO;
  4285  alias tagEMRPOLYLINE* PEMRPOLYBEZIERTO;
  4286  alias tagEMRPOLYLINE EMRPOLYLINETO;
  4287  alias tagEMRPOLYLINE* PEMRPOLYLINETO;
  4288  
  4289  struct tagEMRPOLYLINE16 {
  4290    EMR emr;
  4291    RECTL rclBounds;
  4292    DWORD cpts;
  4293    POINTS apts[1];
  4294  }
  4295  alias tagEMRPOLYLINE16 EMRPOLYLINE16;
  4296  alias tagEMRPOLYLINE16* PEMRPOLYLINE16;
  4297  alias tagEMRPOLYLINE16 EMRPOLYBEZIER16;
  4298  alias tagEMRPOLYLINE16* PEMRPOLYBEZIER16;
  4299  alias tagEMRPOLYLINE16 EMRPOLYGON16;
  4300  alias tagEMRPOLYLINE16* PEMRPOLYGON16;
  4301  alias tagEMRPOLYLINE16 EMRPOLYBEZIERTO16;
  4302  alias tagEMRPOLYLINE16* PEMRPOLYBEZIERTO16;
  4303  alias tagEMRPOLYLINE16 EMRPOLYLINETO16;
  4304  alias tagEMRPOLYLINE16* PEMRPOLYLINETO16;
  4305  
  4306  struct tagEMRPOLYDRAW {
  4307    EMR emr;
  4308    RECTL rclBounds;
  4309    DWORD cptl;
  4310    POINTL aptl[1];
  4311    BYTE abTypes[1];
  4312  }
  4313  alias tagEMRPOLYDRAW EMRPOLYDRAW;
  4314  alias tagEMRPOLYDRAW* PEMRPOLYDRAW;
  4315  
  4316  struct tagEMRPOLYDRAW16 {
  4317    EMR emr;
  4318    RECTL rclBounds;
  4319    DWORD cpts;
  4320    POINTS apts[1];
  4321    BYTE abTypes[1];
  4322  }
  4323  alias tagEMRPOLYDRAW16 EMRPOLYDRAW16;
  4324  alias tagEMRPOLYDRAW16* PEMRPOLYDRAW16;
  4325  
  4326  struct tagEMRPOLYPOLYLINE {
  4327    EMR emr;
  4328    RECTL rclBounds;
  4329    DWORD nPolys;
  4330    DWORD cptl;
  4331    DWORD aPolyCounts[1];
  4332    POINTL aptl[1];
  4333  }
  4334  alias tagEMRPOLYPOLYLINE EMRPOLYPOLYLINE;
  4335  alias tagEMRPOLYPOLYLINE* PEMRPOLYPOLYLINE;
  4336  alias tagEMRPOLYPOLYLINE EMRPOLYPOLYGON;
  4337  alias tagEMRPOLYPOLYLINE* PEMRPOLYPOLYGON;
  4338  
  4339  struct tagEMRPOLYPOLYLINE16 {
  4340    EMR emr;
  4341    RECTL rclBounds;
  4342    DWORD nPolys;
  4343    DWORD cpts;
  4344    DWORD aPolyCounts[1];
  4345    POINTS apts[1];
  4346  }
  4347  alias tagEMRPOLYPOLYLINE16 EMRPOLYPOLYLINE16;
  4348  alias tagEMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16;
  4349  alias tagEMRPOLYPOLYLINE16 EMRPOLYPOLYGON16;
  4350  alias tagEMRPOLYPOLYLINE16* PEMRPOLYPOLYGON16;
  4351  
  4352  struct tagEMRINVERTRGN {
  4353    EMR emr;
  4354    RECTL rclBounds;
  4355    DWORD cbRgnData;
  4356    BYTE RgnData[1];
  4357  }
  4358  alias tagEMRINVERTRGN EMRINVERTRGN;
  4359  alias tagEMRINVERTRGN* PEMRINVERTRGN;
  4360  alias tagEMRINVERTRGN EMRPAINTRGN;
  4361  alias tagEMRINVERTRGN* PEMRPAINTRGN;
  4362  
  4363  struct tagEMRFILLRGN {
  4364    EMR emr;
  4365    RECTL rclBounds;
  4366    DWORD cbRgnData;
  4367    DWORD ihBrush;
  4368    BYTE RgnData[1];
  4369  }
  4370  alias tagEMRFILLRGN EMRFILLRGN;
  4371  alias tagEMRFILLRGN* PEMRFILLRGN;
  4372  
  4373  struct tagEMRFRAMERGN {
  4374    EMR emr;
  4375    RECTL rclBounds;
  4376    DWORD cbRgnData;
  4377    DWORD ihBrush;
  4378    SIZEL szlStroke;
  4379    BYTE RgnData[1];
  4380  }
  4381  alias tagEMRFRAMERGN EMRFRAMERGN;
  4382  alias tagEMRFRAMERGN* PEMRFRAMERGN;
  4383  
  4384  struct tagEMREXTSELECTCLIPRGN {
  4385    EMR emr;
  4386    DWORD cbRgnData;
  4387    DWORD iMode;
  4388    BYTE RgnData[1];
  4389  }
  4390  alias tagEMREXTSELECTCLIPRGN EMREXTSELECTCLIPRGN;
  4391  alias tagEMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN;
  4392  
  4393  struct tagEMREXTTEXTOUTA {
  4394    EMR emr;
  4395    RECTL rclBounds;
  4396    DWORD iGraphicsMode;
  4397    FLOAT exScale;
  4398    FLOAT eyScale;
  4399    EMRTEXT emrtext;
  4400  
  4401  }
  4402  alias tagEMREXTTEXTOUTA EMREXTTEXTOUTA;
  4403  alias tagEMREXTTEXTOUTA* PEMREXTTEXTOUTA;
  4404  alias tagEMREXTTEXTOUTA EMREXTTEXTOUTW;
  4405  alias tagEMREXTTEXTOUTA* PEMREXTTEXTOUTW;
  4406  
  4407  struct tagEMRPOLYTEXTOUTA {
  4408    EMR emr;
  4409    RECTL rclBounds;
  4410    DWORD iGraphicsMode;
  4411    FLOAT exScale;
  4412    FLOAT eyScale;
  4413    LONG cStrings;
  4414    EMRTEXT aemrtext[1];
  4415  
  4416  }
  4417  alias tagEMRPOLYTEXTOUTA EMRPOLYTEXTOUTA;
  4418  alias tagEMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA;
  4419  alias tagEMRPOLYTEXTOUTA EMRPOLYTEXTOUTW;
  4420  alias tagEMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTW;
  4421  
  4422  struct tagEMRBITBLT {
  4423    EMR emr;
  4424    RECTL rclBounds;
  4425    LONG xDest;
  4426    LONG yDest;
  4427    LONG cxDest;
  4428    LONG cyDest;
  4429    DWORD dwRop;
  4430    LONG xSrc;
  4431    LONG ySrc;
  4432    XFORM xformSrc;
  4433    COLORREF crBkColorSrc;
  4434    DWORD iUsageSrc;
  4435  
  4436    DWORD offBmiSrc;
  4437    DWORD cbBmiSrc;
  4438    DWORD offBitsSrc;
  4439    DWORD cbBitsSrc;
  4440  }
  4441  alias tagEMRBITBLT EMRBITBLT;
  4442  alias tagEMRBITBLT* PEMRBITBLT;
  4443  
  4444  struct tagEMRSTRETCHBLT {
  4445    EMR emr;
  4446    RECTL rclBounds;
  4447    LONG xDest;
  4448    LONG yDest;
  4449    LONG cxDest;
  4450    LONG cyDest;
  4451    DWORD dwRop;
  4452    LONG xSrc;
  4453    LONG ySrc;
  4454    XFORM xformSrc;
  4455    COLORREF crBkColorSrc;
  4456    DWORD iUsageSrc;
  4457  
  4458    DWORD offBmiSrc;
  4459    DWORD cbBmiSrc;
  4460    DWORD offBitsSrc;
  4461    DWORD cbBitsSrc;
  4462    LONG cxSrc;
  4463    LONG cySrc;
  4464  }
  4465  alias tagEMRSTRETCHBLT EMRSTRETCHBLT;
  4466  alias tagEMRSTRETCHBLT* PEMRSTRETCHBLT;
  4467  
  4468  struct tagEMRMASKBLT {
  4469    EMR emr;
  4470    RECTL rclBounds;
  4471    LONG xDest;
  4472    LONG yDest;
  4473    LONG cxDest;
  4474    LONG cyDest;
  4475    DWORD dwRop;
  4476    LONG xSrc;
  4477    LONG ySrc;
  4478    XFORM xformSrc;
  4479    COLORREF crBkColorSrc;
  4480    DWORD iUsageSrc;
  4481  
  4482    DWORD offBmiSrc;
  4483    DWORD cbBmiSrc;
  4484    DWORD offBitsSrc;
  4485    DWORD cbBitsSrc;
  4486    LONG xMask;
  4487    LONG yMask;
  4488    DWORD iUsageMask;
  4489    DWORD offBmiMask;
  4490    DWORD cbBmiMask;
  4491    DWORD offBitsMask;
  4492    DWORD cbBitsMask;
  4493  }
  4494  alias tagEMRMASKBLT EMRMASKBLT;
  4495  alias tagEMRMASKBLT* PEMRMASKBLT;
  4496  
  4497  struct tagEMRPLGBLT {
  4498    EMR emr;
  4499    RECTL rclBounds;
  4500    POINTL aptlDest[3];
  4501    LONG xSrc;
  4502    LONG ySrc;
  4503    LONG cxSrc;
  4504    LONG cySrc;
  4505    XFORM xformSrc;
  4506    COLORREF crBkColorSrc;
  4507    DWORD iUsageSrc;
  4508  
  4509    DWORD offBmiSrc;
  4510    DWORD cbBmiSrc;
  4511    DWORD offBitsSrc;
  4512    DWORD cbBitsSrc;
  4513    LONG xMask;
  4514    LONG yMask;
  4515    DWORD iUsageMask;
  4516    DWORD offBmiMask;
  4517    DWORD cbBmiMask;
  4518    DWORD offBitsMask;
  4519    DWORD cbBitsMask;
  4520  }
  4521  alias tagEMRPLGBLT EMRPLGBLT;
  4522  alias tagEMRPLGBLT* PEMRPLGBLT;
  4523  
  4524  struct tagEMRSETDIBITSTODEVICE {
  4525    EMR emr;
  4526    RECTL rclBounds;
  4527    LONG xDest;
  4528    LONG yDest;
  4529    LONG xSrc;
  4530    LONG ySrc;
  4531    LONG cxSrc;
  4532    LONG cySrc;
  4533    DWORD offBmiSrc;
  4534    DWORD cbBmiSrc;
  4535    DWORD offBitsSrc;
  4536    DWORD cbBitsSrc;
  4537    DWORD iUsageSrc;
  4538    DWORD iStartScan;
  4539    DWORD cScans;
  4540  }
  4541  alias tagEMRSETDIBITSTODEVICE EMRSETDIBITSTODEVICE;
  4542  alias tagEMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE;
  4543  
  4544  struct tagEMRSTRETCHDIBITS {
  4545    EMR emr;
  4546    RECTL rclBounds;
  4547    LONG xDest;
  4548    LONG yDest;
  4549    LONG xSrc;
  4550    LONG ySrc;
  4551    LONG cxSrc;
  4552    LONG cySrc;
  4553    DWORD offBmiSrc;
  4554    DWORD cbBmiSrc;
  4555    DWORD offBitsSrc;
  4556    DWORD cbBitsSrc;
  4557    DWORD iUsageSrc;
  4558    DWORD dwRop;
  4559    LONG cxDest;
  4560    LONG cyDest;
  4561  }
  4562  alias tagEMRSTRETCHDIBITS EMRSTRETCHDIBITS;
  4563  alias tagEMRSTRETCHDIBITS* PEMRSTRETCHDIBITS;
  4564  
  4565  struct tagEMREXTCREATEFONTINDIRECTW {
  4566    EMR emr;
  4567    DWORD ihFont;
  4568    EXTLOGFONTW elfw;
  4569  }
  4570  alias tagEMREXTCREATEFONTINDIRECTW EMREXTCREATEFONTINDIRECTW;
  4571  alias tagEMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW;
  4572  
  4573  struct tagEMRCREATEPALETTE {
  4574    EMR emr;
  4575    DWORD ihPal;
  4576    LOGPALETTE lgpl;
  4577  
  4578  }
  4579  alias tagEMRCREATEPALETTE EMRCREATEPALETTE;
  4580  alias tagEMRCREATEPALETTE* PEMRCREATEPALETTE;
  4581  
  4582  struct tagEMRCREATEPEN {
  4583    EMR emr;
  4584    DWORD ihPen;
  4585    LOGPEN lopn;
  4586  }
  4587  alias tagEMRCREATEPEN EMRCREATEPEN;
  4588  alias tagEMRCREATEPEN* PEMRCREATEPEN;
  4589  
  4590  struct tagEMREXTCREATEPEN {
  4591    EMR emr;
  4592    DWORD ihPen;
  4593    DWORD offBmi;
  4594    DWORD cbBmi;
  4595  
  4596    DWORD offBits;
  4597    DWORD cbBits;
  4598    EXTLOGPEN elp;
  4599  }
  4600  alias tagEMREXTCREATEPEN EMREXTCREATEPEN;
  4601  alias tagEMREXTCREATEPEN* PEMREXTCREATEPEN;
  4602  
  4603  struct tagEMRCREATEBRUSHINDIRECT {
  4604    EMR emr;
  4605    DWORD ihBrush;
  4606    LOGBRUSH32 lb;
  4607  
  4608  }
  4609  alias tagEMRCREATEBRUSHINDIRECT EMRCREATEBRUSHINDIRECT;
  4610  alias tagEMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT;
  4611  
  4612  struct tagEMRCREATEMONOBRUSH {
  4613    EMR emr;
  4614    DWORD ihBrush;
  4615    DWORD iUsage;
  4616    DWORD offBmi;
  4617    DWORD cbBmi;
  4618    DWORD offBits;
  4619    DWORD cbBits;
  4620  }
  4621  alias tagEMRCREATEMONOBRUSH EMRCREATEMONOBRUSH;
  4622  alias tagEMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH;
  4623  
  4624  struct tagEMRCREATEDIBPATTERNBRUSHPT {
  4625    EMR emr;
  4626    DWORD ihBrush;
  4627    DWORD iUsage;
  4628    DWORD offBmi;
  4629    DWORD cbBmi;
  4630  
  4631    DWORD offBits;
  4632    DWORD cbBits;
  4633  }
  4634  alias tagEMRCREATEDIBPATTERNBRUSHPT EMRCREATEDIBPATTERNBRUSHPT;
  4635  alias tagEMRCREATEDIBPATTERNBRUSHPT* PEMRCREATEDIBPATTERNBRUSHPT;
  4636  
  4637  struct tagEMRFORMAT {
  4638    DWORD dSignature;
  4639    DWORD nVersion;
  4640    DWORD cbData;
  4641    DWORD offData;
  4642  
  4643  }
  4644  alias tagEMRFORMAT EMRFORMAT;
  4645  alias tagEMRFORMAT* PEMRFORMAT;
  4646  
  4647  // #if(WINVER >= 0x0400)
  4648  
  4649  struct tagEMRGLSRECORD {
  4650    EMR emr;
  4651    DWORD cbData;
  4652    BYTE Data[1];
  4653  }
  4654  alias tagEMRGLSRECORD EMRGLSRECORD;
  4655  alias tagEMRGLSRECORD* PEMRGLSRECORD;
  4656  
  4657  struct tagEMRGLSBOUNDEDRECORD {
  4658    EMR emr;
  4659    RECTL rclBounds;
  4660    DWORD cbData;
  4661    BYTE Data[1];
  4662  }
  4663  alias tagEMRGLSBOUNDEDRECORD EMRGLSBOUNDEDRECORD;
  4664  alias tagEMRGLSBOUNDEDRECORD* PEMRGLSBOUNDEDRECORD;
  4665  
  4666  struct tagEMRPIXELFORMAT {
  4667    EMR emr;
  4668    PIXELFORMATDESCRIPTOR pfd;
  4669  }
  4670  alias tagEMRPIXELFORMAT EMRPIXELFORMAT;
  4671  alias tagEMRPIXELFORMAT* PEMRPIXELFORMAT;
  4672  
  4673  struct tagEMRCREATECOLORSPACE {
  4674    EMR emr;
  4675    DWORD ihCS;
  4676    LOGCOLORSPACEA lcs;
  4677  }
  4678  alias tagEMRCREATECOLORSPACE EMRCREATECOLORSPACE;
  4679  alias tagEMRCREATECOLORSPACE* PEMRCREATECOLORSPACE;
  4680  
  4681  struct tagEMRSETCOLORSPACE {
  4682    EMR emr;
  4683    DWORD ihCS;
  4684  }
  4685  alias tagEMRSETCOLORSPACE EMRSETCOLORSPACE;
  4686  alias tagEMRSETCOLORSPACE* PEMRSETCOLORSPACE;
  4687  alias tagEMRSETCOLORSPACE EMRSELECTCOLORSPACE;
  4688  alias tagEMRSETCOLORSPACE* PEMRSELECTCOLORSPACE;
  4689  alias tagEMRSETCOLORSPACE EMRDELETECOLORSPACE;
  4690  alias tagEMRSETCOLORSPACE* PEMRDELETECOLORSPACE;
  4691  
  4692  // #endif /* WINVER >= 0x0400 */
  4693  
  4694  // #if(WINVER >= 0x0500)
  4695  
  4696  struct tagEMREXTESCAPE {
  4697    EMR emr;
  4698    INT iEscape;
  4699    INT cbEscData;
  4700    BYTE EscData[1];
  4701  }
  4702  alias tagEMREXTESCAPE EMREXTESCAPE;
  4703  alias tagEMREXTESCAPE* PEMREXTESCAPE;
  4704  alias tagEMREXTESCAPE EMRDRAWESCAPE;
  4705  alias tagEMREXTESCAPE* PEMRDRAWESCAPE;
  4706  
  4707  struct tagEMRNAMEDESCAPE {
  4708    EMR emr;
  4709    INT iEscape;
  4710    INT cbDriver;
  4711    INT cbEscData;
  4712    BYTE EscData[1];
  4713  }
  4714  alias tagEMRNAMEDESCAPE EMRNAMEDESCAPE;
  4715  alias tagEMRNAMEDESCAPE* PEMRNAMEDESCAPE;
  4716  
  4717  enum : uint { SETICMPROFILE_EMBEDED = 0x00000001 }
  4718  
  4719  struct tagEMRSETICMPROFILE {
  4720    EMR emr;
  4721    DWORD dwFlags;
  4722    DWORD cbName;
  4723    DWORD cbData;
  4724    BYTE Data[1];
  4725  }
  4726  alias tagEMRSETICMPROFILE EMRSETICMPROFILE;
  4727  alias tagEMRSETICMPROFILE* PEMRSETICMPROFILE;
  4728  alias tagEMRSETICMPROFILE EMRSETICMPROFILEA;
  4729  alias tagEMRSETICMPROFILE* PEMRSETICMPROFILEA;
  4730  alias tagEMRSETICMPROFILE EMRSETICMPROFILEW;
  4731  alias tagEMRSETICMPROFILE* PEMRSETICMPROFILEW;
  4732  
  4733  enum : uint { CREATECOLORSPACE_EMBEDED = 0x00000001 }
  4734  
  4735  struct tagEMRCREATECOLORSPACEW {
  4736    EMR emr;
  4737    DWORD ihCS;
  4738    LOGCOLORSPACEW lcs;
  4739    DWORD dwFlags;
  4740    DWORD cbData;
  4741    BYTE Data[1];
  4742  }
  4743  alias tagEMRCREATECOLORSPACEW EMRCREATECOLORSPACEW;
  4744  alias tagEMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW;
  4745  
  4746  enum : uint { COLORMATCHTOTARGET_EMBEDED = 0x00000001 }
  4747  
  4748  struct tagCOLORMATCHTOTARGET {
  4749    EMR emr;
  4750    DWORD dwAction;
  4751    DWORD dwFlags;
  4752    DWORD cbName;
  4753    DWORD cbData;
  4754    BYTE Data[1];
  4755  }
  4756  alias tagCOLORMATCHTOTARGET EMRCOLORMATCHTOTARGET;
  4757  alias tagCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET;
  4758  
  4759  struct tagCOLORCORRECTPALETTE {
  4760    EMR emr;
  4761    DWORD ihPalette;
  4762    DWORD nFirstEntry;
  4763    DWORD nPalEntries;
  4764    DWORD nReserved;
  4765  }
  4766  alias tagCOLORCORRECTPALETTE EMRCOLORCORRECTPALETTE;
  4767  alias tagCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE;
  4768  
  4769  struct tagEMRALPHABLEND {
  4770    EMR emr;
  4771    RECTL rclBounds;
  4772    LONG xDest;
  4773    LONG yDest;
  4774    LONG cxDest;
  4775    LONG cyDest;
  4776    DWORD dwRop;
  4777    LONG xSrc;
  4778    LONG ySrc;
  4779    XFORM xformSrc;
  4780    COLORREF crBkColorSrc;
  4781    DWORD iUsageSrc;
  4782  
  4783    DWORD offBmiSrc;
  4784    DWORD cbBmiSrc;
  4785    DWORD offBitsSrc;
  4786    DWORD cbBitsSrc;
  4787    LONG cxSrc;
  4788    LONG cySrc;
  4789  }
  4790  alias tagEMRALPHABLEND EMRALPHABLEND;
  4791  alias tagEMRALPHABLEND* PEMRALPHABLEND;
  4792  
  4793  struct tagEMRGRADIENTFILL {
  4794    EMR emr;
  4795    RECTL rclBounds;
  4796    DWORD nVer;
  4797    DWORD nTri;
  4798    ULONG ulMode;
  4799    TRIVERTEX Ver[1];
  4800  }
  4801  alias tagEMRGRADIENTFILL EMRGRADIENTFILL;
  4802  alias tagEMRGRADIENTFILL* PEMRGRADIENTFILL;
  4803  
  4804  struct tagEMRTRANSPARENTBLT {
  4805    EMR emr;
  4806    RECTL rclBounds;
  4807    LONG xDest;
  4808    LONG yDest;
  4809    LONG cxDest;
  4810    LONG cyDest;
  4811    DWORD dwRop;
  4812    LONG xSrc;
  4813    LONG ySrc;
  4814    XFORM xformSrc;
  4815    COLORREF crBkColorSrc;
  4816    DWORD iUsageSrc;
  4817  
  4818    DWORD offBmiSrc;
  4819    DWORD cbBmiSrc;
  4820    DWORD offBitsSrc;
  4821    DWORD cbBitsSrc;
  4822    LONG cxSrc;
  4823    LONG cySrc;
  4824  }
  4825  alias tagEMRTRANSPARENTBLT EMRTRANSPARENTBLT;
  4826  alias tagEMRTRANSPARENTBLT* PEMRTRANSPARENTBLT;
  4827  
  4828  // #endif /* WINVER >= 0x0500 */
  4829  
  4830  enum : uint { GDICOMMENT_IDENTIFIER = 0x43494447 }
  4831  enum : uint { GDICOMMENT_WINDOWS_METAFILE = 0x80000001 }
  4832  enum : uint { GDICOMMENT_BEGINGROUP = 0x00000002 }
  4833  enum : uint { GDICOMMENT_ENDGROUP = 0x00000003 }
  4834  enum : uint { GDICOMMENT_MULTIFORMATS = 0x40000004 }
  4835  enum : uint { EPS_SIGNATURE = 0x46535045 }
  4836  enum : uint { GDICOMMENT_UNICODE_STRING = 0x00000040 }
  4837  enum : uint { GDICOMMENT_UNICODE_END = 0x00000080 }
  4838  
  4839  // #endif  /* NOMETAFILE */
  4840  
  4841  extern(Windows) export BOOL wglCopyContext(HGLRC, HGLRC, UINT);
  4842  extern(Windows) export HGLRC wglCreateContext(HDC);
  4843  extern(Windows) export HGLRC wglCreateLayerContext(HDC, int);
  4844  extern(Windows) export BOOL wglDeleteContext(HGLRC);
  4845  extern(Windows) export HGLRC wglGetCurrentContext();
  4846  extern(Windows) export HDC wglGetCurrentDC();
  4847  extern(Windows) export PROC wglGetProcAddress(LPCSTR);
  4848  extern(Windows) export BOOL wglMakeCurrent(HDC, HGLRC);
  4849  extern(Windows) export BOOL wglShareLists(HGLRC, HGLRC);
  4850  extern(Windows) export BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD);
  4851  extern(Windows) export BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD);
  4852  // #ifdef UNICODE
  4853  // #...
  4854  // #else
  4855  alias wglUseFontBitmapsA wglUseFontBitmaps;
  4856  // #endif // !UNICODE
  4857  extern(Windows) export BOOL SwapBuffers(HDC);
  4858  
  4859  struct _POINTFLOAT {
  4860    FLOAT x;
  4861    FLOAT y;
  4862  }
  4863  alias _POINTFLOAT POINTFLOAT;
  4864  alias _POINTFLOAT* PPOINTFLOAT;
  4865  
  4866  struct _GLYPHMETRICSFLOAT {
  4867    FLOAT gmfBlackBoxX;
  4868    FLOAT gmfBlackBoxY;
  4869    POINTFLOAT gmfptGlyphOrigin;
  4870    FLOAT gmfCellIncX;
  4871    FLOAT gmfCellIncY;
  4872  }
  4873  alias _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT;
  4874  alias _GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT;
  4875  alias _GLYPHMETRICSFLOAT* LPGLYPHMETRICSFLOAT;
  4876  
  4877  enum : uint { WGL_FONT_LINES = 0 }
  4878  enum : uint { WGL_FONT_POLYGONS = 1 }
  4879  extern(Windows) export BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT,
  4880    FLOAT, int, LPGLYPHMETRICSFLOAT);
  4881  extern(Windows) export BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT,
  4882    FLOAT, int, LPGLYPHMETRICSFLOAT);
  4883  // #ifdef UNICODE
  4884  // #...
  4885  // #else
  4886  alias wglUseFontOutlinesA wglUseFontOutlines;
  4887  // #endif // !UNICODE
  4888  
  4889  struct tagLAYERPLANEDESCRIPTOR {
  4890    WORD nSize;
  4891    WORD nVersion;
  4892    DWORD dwFlags;
  4893    BYTE iPixelType;
  4894    BYTE cColorBits;
  4895    BYTE cRedBits;
  4896    BYTE cRedShift;
  4897    BYTE cGreenBits;
  4898    BYTE cGreenShift;
  4899    BYTE cBlueBits;
  4900    BYTE cBlueShift;
  4901    BYTE cAlphaBits;
  4902    BYTE cAlphaShift;
  4903    BYTE cAccumBits;
  4904    BYTE cAccumRedBits;
  4905    BYTE cAccumGreenBits;
  4906    BYTE cAccumBlueBits;
  4907    BYTE cAccumAlphaBits;
  4908    BYTE cDepthBits;
  4909    BYTE cStencilBits;
  4910    BYTE cAuxBuffers;
  4911    BYTE iLayerPlane;
  4912    BYTE bReserved;
  4913    COLORREF crTransparent;
  4914  }
  4915  alias tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR;
  4916  alias tagLAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR;
  4917  alias tagLAYERPLANEDESCRIPTOR* LPLAYERPLANEDESCRIPTOR;
  4918  
  4919  enum : uint { LPD_DOUBLEBUFFER = 0x00000001 }
  4920  enum : uint { LPD_STEREO = 0x00000002 }
  4921  enum : uint { LPD_SUPPORT_GDI = 0x00000010 }
  4922  enum : uint { LPD_SUPPORT_OPENGL = 0x00000020 }
  4923  enum : uint { LPD_SHARE_DEPTH = 0x00000040 }
  4924  enum : uint { LPD_SHARE_STENCIL = 0x00000080 }
  4925  enum : uint { LPD_SHARE_ACCUM = 0x00000100 }
  4926  enum : uint { LPD_SWAP_EXCHANGE = 0x00000200 }
  4927  enum : uint { LPD_SWAP_COPY = 0x00000400 }
  4928  enum : uint { LPD_TRANSPARENT = 0x00001000 }
  4929  
  4930  enum : uint { LPD_TYPE_RGBA = 0 }
  4931  enum : uint { LPD_TYPE_COLORINDEX = 1 }
  4932  
  4933  enum : uint { WGL_SWAP_MAIN_PLANE = 0x00000001 }
  4934  enum : uint { WGL_SWAP_OVERLAY1 = 0x00000002 }
  4935  enum : uint { WGL_SWAP_OVERLAY2 = 0x00000004 }
  4936  enum : uint { WGL_SWAP_OVERLAY3 = 0x00000008 }
  4937  enum : uint { WGL_SWAP_OVERLAY4 = 0x00000010 }
  4938  enum : uint { WGL_SWAP_OVERLAY5 = 0x00000020 }
  4939  enum : uint { WGL_SWAP_OVERLAY6 = 0x00000040 }
  4940  enum : uint { WGL_SWAP_OVERLAY7 = 0x00000080 }
  4941  enum : uint { WGL_SWAP_OVERLAY8 = 0x00000100 }
  4942  enum : uint { WGL_SWAP_OVERLAY9 = 0x00000200 }
  4943  enum : uint { WGL_SWAP_OVERLAY10 = 0x00000400 }
  4944  enum : uint { WGL_SWAP_OVERLAY11 = 0x00000800 }
  4945  enum : uint { WGL_SWAP_OVERLAY12 = 0x00001000 }
  4946  enum : uint { WGL_SWAP_OVERLAY13 = 0x00002000 }
  4947  enum : uint { WGL_SWAP_OVERLAY14 = 0x00004000 }
  4948  enum : uint { WGL_SWAP_OVERLAY15 = 0x00008000 }
  4949  enum : uint { WGL_SWAP_UNDERLAY1 = 0x00010000 }
  4950  enum : uint { WGL_SWAP_UNDERLAY2 = 0x00020000 }
  4951  enum : uint { WGL_SWAP_UNDERLAY3 = 0x00040000 }
  4952  enum : uint { WGL_SWAP_UNDERLAY4 = 0x00080000 }
  4953  enum : uint { WGL_SWAP_UNDERLAY5 = 0x00100000 }
  4954  enum : uint { WGL_SWAP_UNDERLAY6 = 0x00200000 }
  4955  enum : uint { WGL_SWAP_UNDERLAY7 = 0x00400000 }
  4956  enum : uint { WGL_SWAP_UNDERLAY8 = 0x00800000 }
  4957  enum : uint { WGL_SWAP_UNDERLAY9 = 0x01000000 }
  4958  enum : uint { WGL_SWAP_UNDERLAY10 = 0x02000000 }
  4959  enum : uint { WGL_SWAP_UNDERLAY11 = 0x04000000 }
  4960  enum : uint { WGL_SWAP_UNDERLAY12 = 0x08000000 }
  4961  enum : uint { WGL_SWAP_UNDERLAY13 = 0x10000000 }
  4962  enum : uint { WGL_SWAP_UNDERLAY14 = 0x20000000 }
  4963  enum : uint { WGL_SWAP_UNDERLAY15 = 0x40000000 }
  4964  
  4965  extern(Windows) export BOOL wglDescribeLayerPlane(HDC, int, int, UINT,
  4966    LPLAYERPLANEDESCRIPTOR);
  4967  extern(Windows) export int wglSetLayerPaletteEntries(HDC, int, int, int,
  4968    COLORREF *);
  4969  extern(Windows) export int wglGetLayerPaletteEntries(HDC, int, int, int,
  4970    COLORREF *);
  4971  extern(Windows) export BOOL wglRealizeLayerPalette(HDC, int, BOOL);
  4972  extern(Windows) export BOOL wglSwapLayerBuffers(HDC, UINT);
  4973  
  4974  // #if (WINVER >= 0x0500)
  4975  
  4976  struct _WGLSWAP {
  4977    HDC hdc;
  4978    UINT uiFlags;
  4979  }
  4980  alias _WGLSWAP WGLSWAP;
  4981  alias _WGLSWAP* PWGLSWAP;
  4982  alias _WGLSWAP* LPWGLSWAP;
  4983  
  4984  enum : uint { WGL_SWAPMULTIPLE_MAX = 16 }
  4985  
  4986  extern(Windows) export DWORD wglSwapMultipleBuffers(UINT, WGLSWAP *);
  4987  
  4988  // #endif // (WINVER >= 0x0500)
  4989  
  4990  // #endif /* NOGDI */
  4991  
  4992  // #ifdef __cplusplus
  4993  // }
  4994  // #endif
  4995  
  4996  // #endif /* _WINGDI_ */
  4997