Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

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