home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / winddi.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  83KB  |  4,157 lines

  1. /*
  2.  * winddi.h
  3.  *
  4.  * GDI device driver interface
  5.  *
  6.  * This file is part of the w32api package.
  7.  *
  8.  * Contributors:
  9.  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10.  *
  11.  * THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  * This source code is offered for use in the public domain. You may
  14.  * use, modify or distribute it freely.
  15.  *
  16.  * This code is distributed in the hope that it will be useful but
  17.  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  * DISCLAIMED. This includes but is not limited to warranties of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  */
  22.  
  23. #ifndef __WINDDI_H
  24. #define __WINDDI_H
  25.  
  26. #if __GNUC__ >=3
  27. #pragma GCC system_header
  28. #endif
  29.  
  30. #ifdef __VIDEO_H
  31. #error video.h cannot be included with winddi.h
  32. #else
  33.  
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37.  
  38. #include "ntddk.h"
  39. #include <wingdi.h>
  40.  
  41. #ifndef __DD_INCLUDED__
  42. /* FIXME: Some DirectDraw structures not added yet */
  43. typedef ULONG_PTR FLATPTR;
  44. typedef struct _DD_SURFACECALLBACKS {
  45. } DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS;
  46. typedef struct _DD_PALETTECALLBACKS {
  47. } DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS;
  48. typedef struct _DD_CALLBACKS {
  49. } DD_CALLBACKS, *PDD_CALLBACKS;
  50. typedef struct _DD_HALINFO {
  51. } DD_HALINFO, *PDD_HALINFO;
  52. typedef struct _VIDEOMEMORY {
  53. } VIDEOMEMORY, *LPVIDEOMEMORY;
  54. typedef struct _DD_DIRECTDRAW_GLOBAL {
  55. } DD_DIRECTDRAW_GLOBAL, *LPDD_DIRECTDRAW_GLOBAL;
  56. typedef struct _DD_SURFACE_LOCAL {
  57. } DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL, *LPDD_SURFACE_LOCAL;
  58. #endif
  59.  
  60. #ifndef __DDRAWI_INCLUDED__
  61. typedef PVOID LPVIDMEM;
  62. #endif
  63.  
  64. #if !defined(__DD_INCLUDED__) && !defined(__DDRAWI_INCLUDED__)
  65. typedef struct _DDSCAPS {
  66. } DDSCAPS, *PDDSCAPS;
  67. typedef struct _DDSCAPSEX {
  68. } DDSCAPSEX, *PDDSCAPSEX;
  69. typedef PVOID LPVMEMHEAP;
  70. #endif
  71.  
  72. #if defined(_WIN32K_)
  73. #define WIN32KAPI DECL_EXPORT
  74. #else
  75. #define WIN32KAPI DECL_IMPORT
  76. #endif
  77.  
  78. #define DDI_DRIVER_VERSION_NT4            0x00020000
  79. #define DDI_DRIVER_VERSION_SP3            0x00020003
  80. #define DDI_DRIVER_VERSION_NT5            0x00030000
  81. #define DDI_DRIVER_VERSION_NT5_01         0x00030100
  82.  
  83. #define GDI_DRIVER_VERSION                0x4000
  84.  
  85. #ifdef _X86_
  86.  
  87. typedef DWORD FLOATL;
  88.  
  89. #else /* !_X86_ */
  90.  
  91. typedef FLOAT FLOATL;
  92.  
  93. #endif
  94.  
  95. typedef SHORT FWORD;
  96. typedef LONG LDECI4;
  97. typedef ULONG IDENT;
  98.  
  99. typedef ULONG_PTR HFF;
  100. typedef ULONG_PTR HFC;
  101.  
  102. typedef LONG PTRDIFF;
  103. typedef PTRDIFF *PPTRDIFF;
  104. typedef LONG FIX;
  105. typedef FIX *PFIX;
  106. typedef ULONG ROP4;
  107. typedef ULONG MIX;
  108. typedef ULONG HGLYPH;
  109. typedef HGLYPH *PHGLYPH;
  110.  
  111. typedef LONG_PTR (DDKAPI *PFN)();
  112.  
  113. DECLARE_HANDLE(HBM);
  114. DECLARE_HANDLE(HDEV);
  115. DECLARE_HANDLE(HSURF);
  116. DECLARE_HANDLE(DHSURF);
  117. DECLARE_HANDLE(DHPDEV);
  118. DECLARE_HANDLE(HDRVOBJ);
  119.  
  120.  
  121. #define GDI_DRIVER_VERSION                0x4000
  122.  
  123. typedef struct _ENG_EVENT *PEVENT;
  124.  
  125. #define OPENGL_CMD                        4352
  126. #define OPENGL_GETINFO                    4353
  127. #define WNDOBJ_SETUP                      4354
  128.  
  129. #define FD_ERROR                          0xFFFFFFFF
  130. #define DDI_ERROR                         0xFFFFFFFF
  131.  
  132. #define HFF_INVALID                       ((HFF) 0)
  133. #define HFC_INVALID                       ((HFC) 0)
  134. #define HGLYPH_INVALID                    ((HGLYPH) -1)
  135.  
  136. #define FP_ALTERNATEMODE                  1
  137. #define FP_WINDINGMODE                    2
  138.  
  139. #define DN_ACCELERATION_LEVEL             1
  140. #define DN_DEVICE_ORIGIN                  2
  141. #define DN_SLEEP_MODE                     3
  142. #define DN_DRAWING_BEGIN                  4
  143.  
  144. #define DCR_SOLID                         0
  145. #define DCR_DRIVER                        1
  146. #define DCR_HALFTONE                      2
  147.  
  148. #define GX_IDENTITY                       0
  149. #define GX_OFFSET                         1
  150. #define GX_SCALE                          2
  151. #define GX_GENERAL                        3
  152.  
  153. typedef struct _POINTE {
  154.     FLOATL  x;
  155.     FLOATL  y;
  156. } POINTE, *PPOINTE;
  157.  
  158. typedef union _FLOAT_LONG {
  159.   FLOATL  e;
  160.   LONG  l;
  161. } FLOAT_LONG, *PFLOAT_LONG;
  162.  
  163. typedef struct _POINTFIX {
  164.   FIX  x;
  165.   FIX  y;
  166. } POINTFIX, *PPOINTFIX;
  167.  
  168. typedef struct _RECTFX {
  169.   FIX  xLeft;
  170.   FIX  yTop;
  171.   FIX  xRight;
  172.   FIX  yBottom;
  173. } RECTFX, *PRECTFX;
  174.  
  175. typedef struct _POINTQF {
  176.   LARGE_INTEGER  x;
  177.   LARGE_INTEGER  y;
  178. } POINTQF, *PPOINTQF;
  179.  
  180.  
  181. typedef struct _BLENDOBJ {
  182.   BLENDFUNCTION  BlendFunction;
  183. } BLENDOBJ,*PBLENDOBJ;
  184.  
  185. /* BRUSHOBJ.flColorType */
  186. #define BR_DEVICE_ICM    0x01
  187. #define BR_HOST_ICM      0x02
  188. #define BR_CMYKCOLOR     0x04
  189. #define BR_ORIGCOLOR     0x08
  190.  
  191. typedef struct _BRUSHOBJ {
  192.   ULONG  iSolidColor;
  193.   PVOID  pvRbrush;
  194.   FLONG  flColorType;
  195. } BRUSHOBJ;
  196.  
  197. typedef struct _CIECHROMA {
  198.   LDECI4  x;
  199.   LDECI4  y;
  200.   LDECI4  Y;
  201. } CIECHROMA;
  202.  
  203. typedef struct _RUN {
  204.   LONG  iStart;
  205.   LONG  iStop;
  206. } RUN, *PRUN;
  207.  
  208. typedef struct _CLIPLINE {
  209.   POINTFIX  ptfxA;
  210.   POINTFIX  ptfxB;
  211.   LONG  lStyleState;
  212.   ULONG  c;
  213.   RUN  arun[1];
  214. } CLIPLINE, *PCLIPLINE;
  215.  
  216. /* CLIPOBJ.iDComplexity constants */
  217. #define DC_TRIVIAL                        0
  218. #define DC_RECT                           1
  219. #define DC_COMPLEX                        3
  220.  
  221. /* CLIPOBJ.iFComplexity constants */
  222. #define FC_RECT                           1
  223. #define FC_RECT4                          2
  224. #define FC_COMPLEX                        3
  225.  
  226. /* CLIPOBJ.iMode constants */
  227. #define TC_RECTANGLES                     0
  228. #define TC_PATHOBJ                        2
  229.  
  230. /* CLIPOBJ.fjOptions constants */
  231. #define OC_BANK_CLIP                      1
  232.  
  233. typedef struct _CLIPOBJ {
  234.   ULONG  iUniq;
  235.   RECTL  rclBounds;
  236.   BYTE  iDComplexity;
  237.   BYTE  iFComplexity;
  238.   BYTE  iMode;
  239.   BYTE  fjOptions;
  240. } CLIPOBJ;
  241.  
  242. typedef struct _COLORINFO {
  243.   CIECHROMA  Red;
  244.   CIECHROMA  Green;
  245.   CIECHROMA  Blue;
  246.   CIECHROMA  Cyan;
  247.   CIECHROMA  Magenta;
  248.   CIECHROMA  Yellow;
  249.   CIECHROMA  AlignmentWhite;
  250.   LDECI4  RedGamma;
  251.   LDECI4  GreenGamma;
  252.   LDECI4  BlueGamma;
  253.   LDECI4  MagentaInCyanDye;
  254.   LDECI4  YellowInCyanDye;
  255.   LDECI4  CyanInMagentaDye;
  256.   LDECI4  YellowInMagentaDye;
  257.   LDECI4  CyanInYellowDye;
  258.   LDECI4  MagentaInYellowDye;
  259. } COLORINFO, *PCOLORINFO;
  260.  
  261. /* DEVHTADJDATA.DeviceFlags constants */
  262. #define DEVHTADJF_COLOR_DEVICE            0x00000001
  263. #define DEVHTADJF_ADDITIVE_DEVICE         0x00000002
  264.  
  265. typedef struct _DEVHTINFO {
  266.   DWORD  HTFlags;
  267.   DWORD  HTPatternSize;
  268.   DWORD  DevPelsDPI;
  269.   COLORINFO  ColorInfo;
  270. } DEVHTINFO, *PDEVHTINFO;
  271.  
  272. typedef struct _DEVHTADJDATA {
  273.   DWORD   DeviceFlags;
  274.   DWORD   DeviceXDPI;
  275.   DWORD   DeviceYDPI;
  276.   PDEVHTINFO  pDefHTInfo;
  277.   PDEVHTINFO  pAdjHTInfo;
  278. } DEVHTADJDATA, *PDEVHTADJDATA;
  279.  
  280. /* DEVINFO.flGraphicsCaps flags */
  281. #define GCAPS_BEZIERS           0x00000001
  282. #define GCAPS_GEOMETRICWIDE     0x00000002
  283. #define GCAPS_ALTERNATEFILL     0x00000004
  284. #define GCAPS_WINDINGFILL       0x00000008
  285. #define GCAPS_HALFTONE          0x00000010
  286. #define GCAPS_COLOR_DITHER      0x00000020
  287. #define GCAPS_HORIZSTRIKE       0x00000040
  288. #define GCAPS_VERTSTRIKE        0x00000080
  289. #define GCAPS_OPAQUERECT        0x00000100
  290. #define GCAPS_VECTORFONT        0x00000200
  291. #define GCAPS_MONO_DITHER       0x00000400
  292. #define GCAPS_ASYNCCHANGE       0x00000800
  293. #define GCAPS_ASYNCMOVE         0x00001000
  294. #define GCAPS_DONTJOURNAL       0x00002000
  295. #define GCAPS_DIRECTDRAW        0x00004000
  296. #define GCAPS_ARBRUSHOPAQUE     0x00008000
  297. #define GCAPS_PANNING           0x00010000
  298. #define GCAPS_HIGHRESTEXT       0x00040000
  299. #define GCAPS_PALMANAGED        0x00080000
  300. #define GCAPS_DITHERONREALIZE   0x00200000
  301. #define GCAPS_NO64BITMEMACCESS  0x00400000
  302. #define GCAPS_FORCEDITHER       0x00800000
  303. #define GCAPS_GRAY16            0x01000000
  304. #define GCAPS_ICM               0x02000000
  305. #define GCAPS_CMYKCOLOR         0x04000000
  306. #define GCAPS_LAYERED           0x08000000
  307. #define GCAPS_ARBRUSHTEXT       0x10000000
  308. #define GCAPS_SCREENPRECISION   0x20000000
  309. #define GCAPS_FONT_RASTERIZER   0x40000000
  310. #define GCAPS_NUP               0x80000000
  311.  
  312. /* DEVINFO.iDitherFormat constants */
  313. #define BMF_1BPP       1L
  314. #define BMF_4BPP       2L
  315. #define BMF_8BPP       3L
  316. #define BMF_16BPP      4L
  317. #define BMF_24BPP      5L
  318. #define BMF_32BPP      6L
  319. #define BMF_4RLE       7L
  320. #define BMF_8RLE       8L
  321. #define BMF_JPEG       9L
  322. #define BMF_PNG       10L
  323.  
  324. /* DEVINFO.flGraphicsCaps2 flags */
  325. #define GCAPS2_JPEGSRC          0x00000001
  326. #define GCAPS2_xxxx             0x00000002
  327. #define GCAPS2_PNGSRC           0x00000008
  328. #define GCAPS2_CHANGEGAMMARAMP  0x00000010
  329. #define GCAPS2_ALPHACURSOR      0x00000020
  330. #define GCAPS2_SYNCFLUSH        0x00000040
  331. #define GCAPS2_SYNCTIMER        0x00000080
  332. #define GCAPS2_ICD_MULTIMON     0x00000100
  333. #define GCAPS2_MOUSETRAILS      0x00000200
  334. #define GCAPS2_RESERVED1        0x00000400
  335.  
  336. typedef struct _DEVINFO {
  337.   FLONG  flGraphicsCaps;
  338.   LOGFONTW  lfDefaultFont;
  339.   LOGFONTW  lfAnsiVarFont;
  340.   LOGFONTW  lfAnsiFixFont;
  341.   ULONG  cFonts;
  342.   ULONG  iDitherFormat;
  343.   USHORT  cxDither;
  344.   USHORT  cyDither;
  345.   HPALETTE  hpalDefault;
  346.   FLONG  flGraphicsCaps2;
  347. } DEVINFO, *PDEVINFO;
  348.  
  349. typedef struct _DRIVEROBJ *PDRIVEROBJ;
  350.  
  351. typedef BOOL DDKAPI CALLBACK
  352. (*FREEOBJPROC)(
  353.   IN PDRIVEROBJ  pDriverObj);
  354.  
  355. typedef struct _DRIVEROBJ {
  356.   PVOID  pvObj;
  357.   FREEOBJPROC  pFreeProc;
  358.   HDEV  hdev;
  359.   DHPDEV  dhpdev;
  360. } DRIVEROBJ;
  361.  
  362. /* DRVFN.iFunc constants */
  363. #define INDEX_DrvEnablePDEV               0L
  364. #define INDEX_DrvCompletePDEV             1L
  365. #define INDEX_DrvDisablePDEV              2L
  366. #define INDEX_DrvEnableSurface            3L
  367. #define INDEX_DrvDisableSurface           4L
  368. #define INDEX_DrvAssertMode               5L
  369. #define INDEX_DrvOffset                   6L
  370. #define INDEX_DrvResetPDEV                7L
  371. #define INDEX_DrvDisableDriver            8L
  372. #define INDEX_DrvCreateDeviceBitmap       10L
  373. #define INDEX_DrvDeleteDeviceBitmap       11L
  374. #define INDEX_DrvRealizeBrush             12L
  375. #define INDEX_DrvDitherColor              13L
  376. #define INDEX_DrvStrokePath               14L
  377. #define INDEX_DrvFillPath                 15L
  378. #define INDEX_DrvStrokeAndFillPath        16L
  379. #define INDEX_DrvPaint                    17L
  380. #define INDEX_DrvBitBlt                   18L
  381. #define INDEX_DrvCopyBits                 19L
  382. #define INDEX_DrvStretchBlt               20L
  383. #define INDEX_DrvSetPalette               22L
  384. #define INDEX_DrvTextOut                  23L
  385. #define INDEX_DrvEscape                   24L
  386. #define INDEX_DrvDrawEscape               25L
  387. #define INDEX_DrvQueryFont                26L
  388. #define INDEX_DrvQueryFontTree            27L
  389. #define INDEX_DrvQueryFontData            28L
  390. #define INDEX_DrvSetPointerShape          29L
  391. #define INDEX_DrvMovePointer              30L
  392. #define INDEX_DrvLineTo                   31L
  393. #define INDEX_DrvSendPage                 32L
  394. #define INDEX_DrvStartPage                33L
  395. #define INDEX_DrvEndDoc                   34L
  396. #define INDEX_DrvStartDoc                 35L
  397. #define INDEX_DrvGetGlyphMode             37L
  398. #define INDEX_DrvSynchronize              38L
  399. #define INDEX_DrvSaveScreenBits           40L
  400. #define INDEX_DrvGetModes                 41L
  401. #define INDEX_DrvFree                     42L
  402. #define INDEX_DrvDestroyFont              43L
  403. #define INDEX_DrvQueryFontCaps            44L
  404. #define INDEX_DrvLoadFontFile             45L
  405. #define INDEX_DrvUnloadFontFile           46L
  406. #define INDEX_DrvFontManagement           47L
  407. #define INDEX_DrvQueryTrueTypeTable       48L
  408. #define INDEX_DrvQueryTrueTypeOutline     49L
  409. #define INDEX_DrvGetTrueTypeFile          50L
  410. #define INDEX_DrvQueryFontFile            51L
  411. #define INDEX_DrvMovePanning              52L
  412. #define INDEX_DrvQueryAdvanceWidths       53L
  413. #define INDEX_DrvSetPixelFormat           54L
  414. #define INDEX_DrvDescribePixelFormat      55L
  415. #define INDEX_DrvSwapBuffers              56L
  416. #define INDEX_DrvStartBanding             57L
  417. #define INDEX_DrvNextBand                 58L
  418. #define INDEX_DrvGetDirectDrawInfo        59L
  419. #define INDEX_DrvEnableDirectDraw         60L
  420. #define INDEX_DrvDisableDirectDraw        61L
  421. #define INDEX_DrvQuerySpoolType           62L
  422. #define INDEX_DrvIcmCreateColorTransform  64L
  423. #define INDEX_DrvIcmDeleteColorTransform  65L
  424. #define INDEX_DrvIcmCheckBitmapBits       66L
  425. #define INDEX_DrvIcmSetDeviceGammaRamp    67L
  426. #define INDEX_DrvGradientFill             68L
  427. #define INDEX_DrvStretchBltROP            69L
  428. #define INDEX_DrvPlgBlt                   70L
  429. #define INDEX_DrvAlphaBlend               71L
  430. #define INDEX_DrvSynthesizeFont           72L
  431. #define INDEX_DrvGetSynthesizedFontFiles  73L
  432. #define INDEX_DrvTransparentBlt           74L
  433. #define INDEX_DrvQueryPerBandInfo         75L
  434. #define INDEX_DrvQueryDeviceSupport       76L
  435. #define INDEX_DrvReserved1                77L
  436. #define INDEX_DrvReserved2                78L
  437. #define INDEX_DrvReserved3                79L
  438. #define INDEX_DrvReserved4                80L
  439. #define INDEX_DrvReserved5                81L
  440. #define INDEX_DrvReserved6                82L
  441. #define INDEX_DrvReserved7                83L
  442. #define INDEX_DrvReserved8                84L
  443. #define INDEX_DrvDeriveSurface            85L
  444. #define INDEX_DrvQueryGlyphAttrs          86L
  445. #define INDEX_DrvNotify                   87L
  446. #define INDEX_DrvSynchronizeSurface       88L
  447. #define INDEX_DrvResetDevice              89L
  448. #define INDEX_DrvReserved9                90L
  449. #define INDEX_DrvReserved10               91L
  450. #define INDEX_DrvReserved11               92L
  451. #define INDEX_LAST                        93L
  452.  
  453. typedef struct _DRVFN {
  454.   ULONG  iFunc;
  455.   PFN  pfn;
  456. } DRVFN, *PDRVFN;
  457.  
  458. /* DRVENABLEDATA.iDriverVersion constants */
  459. #define DDI_DRIVER_VERSION_NT4            0x00020000
  460. #define DDI_DRIVER_VERSION_SP3            0x00020003
  461. #define DDI_DRIVER_VERSION_NT5            0x00030000
  462. #define DDI_DRIVER_VERSION_NT5_01         0x00030100
  463.  
  464. typedef struct _DRVENABLEDATA {
  465.   ULONG  iDriverVersion;
  466.   ULONG  c;
  467.   DRVFN  *pdrvfn;
  468. } DRVENABLEDATA, *PDRVENABLEDATA;
  469.  
  470. DECLARE_HANDLE(HSEMAPHORE);
  471.  
  472. typedef struct {
  473.   DWORD  nSize;
  474.   HDC  hdc;
  475.   PBYTE  pvEMF;
  476.   PBYTE  pvCurrentRecord;
  477. } EMFINFO, *PEMFINFO;
  478.  
  479. typedef struct _ENGSAFESEMAPHORE {
  480.   HSEMAPHORE  hsem;
  481.   LONG  lCount;
  482. } ENGSAFESEMAPHORE;
  483.  
  484. typedef struct _ENG_TIME_FIELDS {
  485.   USHORT  usYear;
  486.   USHORT  usMonth;
  487.   USHORT  usDay;
  488.   USHORT  usHour;
  489.   USHORT  usMinute;
  490.   USHORT  usSecond;
  491.   USHORT  usMilliseconds;
  492.   USHORT  usWeekday;
  493. } ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
  494.  
  495. typedef struct _ENUMRECTS {
  496.   ULONG  c;
  497.   RECTL  arcl[1];
  498. } ENUMRECTS;
  499.  
  500. typedef struct _FD_XFORM {
  501.   FLOATL  eXX;
  502.   FLOATL  eXY;
  503.   FLOATL  eYX;
  504.   FLOATL  eYY;
  505. } FD_XFORM, *PFD_XFORM;
  506.  
  507. /* FD_DEVICEMETRICS.flRealizedType constants */
  508. #define FDM_TYPE_BM_SIDE_CONST            0x00000001
  509. #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE     0x00000002
  510. #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE   0x00000004
  511. #define FDM_TYPE_ZERO_BEARINGS            0x00000008
  512. #define FDM_TYPE_CONST_BEARINGS           0x00000010
  513.  
  514. typedef struct _FD_DEVICEMETRICS {
  515.   FLONG  flRealizedType;
  516.   POINTE  pteBase;
  517.   POINTE  pteSide;
  518.   LONG  lD;
  519.   FIX  fxMaxAscender;
  520.   FIX  fxMaxDescender;
  521.   POINTL  ptlUnderline1;
  522.   POINTL  ptlStrikeout;
  523.   POINTL  ptlULThickness;
  524.   POINTL  ptlSOThickness;
  525.   ULONG  cxMax;
  526.   ULONG  cyMax;
  527.   ULONG  cjGlyphMax;
  528.   FD_XFORM  fdxQuantized;
  529.   LONG  lNonLinearExtLeading;
  530.   LONG  lNonLinearIntLeading;
  531.   LONG  lNonLinearMaxCharWidth;
  532.   LONG  lNonLinearAvgCharWidth;
  533.   LONG  lMinA;
  534.   LONG  lMinC;
  535.   LONG  lMinD;
  536.   LONG  alReserved[1];
  537. } FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;
  538.  
  539. /* FD_GLYPHATTR.iMode constants */
  540. #define FO_ATTR_MODE_ROTATE               1
  541.  
  542. typedef struct _FD_GLYPHATTR {
  543.   ULONG  cjThis;
  544.   ULONG  cGlyphs;
  545.   ULONG  iMode;
  546.   BYTE  aGlyphAttr[1];
  547. } FD_GLYPHATTR, *PFD_GLYPHATTR;
  548.  
  549. /* FD_GLYPHSET.flAccel */
  550. #define GS_UNICODE_HANDLES                0x00000001
  551. #define GS_8BIT_HANDLES                   0x00000002
  552. #define GS_16BIT_HANDLES                  0x00000004
  553.  
  554. typedef struct _WCRUN {
  555.   WCHAR  wcLow;
  556.   USHORT  cGlyphs;
  557.   HGLYPH  *phg;
  558. } WCRUN, *PWCRUN;
  559.  
  560. typedef struct _FD_GLYPHSET {
  561.   ULONG  cjThis;
  562.   FLONG  flAccel;
  563.   ULONG  cGlyphsSupported;
  564.   ULONG  cRuns;
  565.   WCRUN  awcrun[1];
  566. } FD_GLYPHSET, *PFD_GLYPHSET;
  567.  
  568. typedef struct _FD_KERNINGPAIR {
  569.   WCHAR  wcFirst;
  570.   WCHAR  wcSecond;
  571.   FWORD  fwdKern;
  572. } FD_KERNINGPAIR;
  573.  
  574. typedef struct _FLOATOBJ
  575. {
  576.   ULONG  ul1;
  577.   ULONG  ul2;
  578. } FLOATOBJ, *PFLOATOBJ;
  579.  
  580. typedef struct _FLOATOBJ_XFORM {
  581.   FLOATOBJ  eM11;
  582.   FLOATOBJ  eM12;
  583.   FLOATOBJ  eM21;
  584.   FLOATOBJ  eM22;
  585.   FLOATOBJ  eDx;
  586.   FLOATOBJ  eDy;
  587. } FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
  588.  
  589. /* FONTDIFF.fsSelection */
  590. #define FM_SEL_ITALIC                     0x0001
  591. #define FM_SEL_UNDERSCORE                 0x0002
  592. #define FM_SEL_NEGATIVE                   0x0004
  593. #define FM_SEL_OUTLINED                   0x0008
  594. #define FM_SEL_STRIKEOUT                  0x0010
  595. #define FM_SEL_BOLD                       0x0020
  596. #define FM_SEL_REGULAR                    0x0040
  597.  
  598. typedef struct _FONTDIFF {
  599.   BYTE  jReserved1;
  600.   BYTE  jReserved2;
  601.   BYTE  jReserved3;
  602.   BYTE  bWeight;
  603.   USHORT  usWinWeight;
  604.   FSHORT  fsSelection;
  605.   FWORD  fwdAveCharWidth;
  606.   FWORD  fwdMaxCharInc;
  607.   POINTL  ptlCaret;
  608. } FONTDIFF;
  609.  
  610. typedef struct _FONTSIM {
  611.   PTRDIFF  dpBold;
  612.   PTRDIFF  dpItalic;
  613.   PTRDIFF  dpBoldItalic;
  614. } FONTSIM;
  615.  
  616. /* FONTINFO.flCaps constants */
  617. #define FO_DEVICE_FONT                    1L
  618. #define FO_OUTLINE_CAPABLE                2L
  619.  
  620. typedef struct _FONTINFO {
  621.   ULONG  cjThis;
  622.   FLONG  flCaps;
  623.   ULONG  cGlyphsSupported;
  624.   ULONG  cjMaxGlyph1;
  625.   ULONG  cjMaxGlyph4;
  626.   ULONG  cjMaxGlyph8;
  627.   ULONG  cjMaxGlyph32;
  628. } FONTINFO, *PFONTINFO;
  629.  
  630. /* FONTOBJ.flFontType constants */
  631. #define FO_TYPE_RASTER   RASTER_FONTTYPE
  632. #define FO_TYPE_DEVICE   DEVICE_FONTTYPE
  633. #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
  634. #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
  635.  
  636. #define FO_SIM_BOLD      0x00002000
  637. #define FO_SIM_ITALIC    0x00004000
  638. #define FO_EM_HEIGHT     0x00008000
  639. #define FO_GRAY16        0x00010000
  640. #define FO_NOGRAY16      0x00020000
  641. #define FO_NOHINTS       0x00040000
  642. #define FO_NO_CHOICE     0x00080000
  643. #define FO_CFF            0x00100000
  644. #define FO_POSTSCRIPT     0x00200000
  645. #define FO_MULTIPLEMASTER 0x00400000
  646. #define FO_VERT_FACE      0x00800000
  647. #define FO_DBCS_FONT      0X01000000
  648. #define FO_NOCLEARTYPE    0x02000000
  649. #define FO_CLEARTYPE_X    0x10000000
  650. #define FO_CLEARTYPE_Y    0x20000000
  651.  
  652. typedef struct _FONTOBJ {
  653.   ULONG  iUniq;
  654.   ULONG  iFace;
  655.   ULONG  cxMax;
  656.   FLONG  flFontType;
  657.   ULONG_PTR  iTTUniq;
  658.   ULONG_PTR  iFile;
  659.   SIZE  sizLogResPpi;
  660.   ULONG  ulStyleSize;
  661.   PVOID  pvConsumer;
  662.   PVOID  pvProducer;
  663. } FONTOBJ;
  664.  
  665. typedef struct _GAMMARAMP {
  666.   WORD  Red[256];
  667.   WORD  Green[256];
  668.   WORD  Blue[256];
  669. } GAMMARAMP, *PGAMMARAMP;
  670.  
  671. /* GDIINFO.ulPrimaryOrder constants */
  672. #define PRIMARY_ORDER_ABC                 0
  673. #define PRIMARY_ORDER_ACB                 1
  674. #define PRIMARY_ORDER_BAC                 2
  675. #define PRIMARY_ORDER_BCA                 3
  676. #define PRIMARY_ORDER_CBA                 4
  677. #define PRIMARY_ORDER_CAB                 5
  678.  
  679. /* GDIINFO.ulHTPatternSize constants */
  680. #define HT_PATSIZE_2x2                    0
  681. #define HT_PATSIZE_2x2_M                  1
  682. #define HT_PATSIZE_4x4                    2
  683. #define HT_PATSIZE_4x4_M                  3
  684. #define HT_PATSIZE_6x6                    4
  685. #define HT_PATSIZE_6x6_M                  5
  686. #define HT_PATSIZE_8x8                    6
  687. #define HT_PATSIZE_8x8_M                  7
  688. #define HT_PATSIZE_10x10                  8
  689. #define HT_PATSIZE_10x10_M                9
  690. #define HT_PATSIZE_12x12                  10
  691. #define HT_PATSIZE_12x12_M                11
  692. #define HT_PATSIZE_14x14                  12
  693. #define HT_PATSIZE_14x14_M                13
  694. #define HT_PATSIZE_16x16                  14
  695. #define HT_PATSIZE_16x16_M                15
  696. #define HT_PATSIZE_SUPERCELL              16
  697. #define HT_PATSIZE_SUPERCELL_M            17
  698. #define HT_PATSIZE_USER                   18
  699. #define HT_PATSIZE_MAX_INDEX              HT_PATSIZE_USER
  700. #define HT_PATSIZE_DEFAULT                HT_PATSIZE_SUPERCELL_M
  701. #define HT_USERPAT_CX_MIN                 4
  702. #define HT_USERPAT_CX_MAX                 256
  703. #define HT_USERPAT_CY_MIN                 4
  704. #define HT_USERPAT_CY_MAX                 256
  705.  
  706. /* GDIINFO.ulHTOutputFormat constants */
  707. #define HT_FORMAT_1BPP                    0
  708. #define HT_FORMAT_4BPP                    2
  709. #define HT_FORMAT_4BPP_IRGB               3
  710. #define HT_FORMAT_8BPP                    4
  711. #define HT_FORMAT_16BPP                   5
  712. #define HT_FORMAT_24BPP                   6
  713. #define HT_FORMAT_32BPP                   7
  714.  
  715. /* GDIINFO.flHTFlags */
  716. #define HT_FLAG_SQUARE_DEVICE_PEL         0x00000001
  717. #define HT_FLAG_HAS_BLACK_DYE             0x00000002
  718. #define HT_FLAG_ADDITIVE_PRIMS            0x00000004
  719. #define HT_FLAG_USE_8BPP_BITMASK          0x00000008
  720. #define HT_FLAG_INK_HIGH_ABSORPTION       0x00000010
  721. #define HT_FLAG_INK_ABSORPTION_INDICES    0x00000060
  722. #define HT_FLAG_DO_DEVCLR_XFORM           0x00000080
  723. #define HT_FLAG_OUTPUT_CMY                0x00000100
  724. #define HT_FLAG_PRINT_DRAFT_MODE          0x00000200
  725. #define HT_FLAG_INVERT_8BPP_BITMASK_IDX   0x00000400
  726. #define HT_FLAG_8BPP_CMY332_MASK          0xFF000000
  727.  
  728. #define MAKE_CMYMASK_BYTE(c,m,y)          ((BYTE)(((BYTE)(c) & 0x07) << 5) \
  729.                                           |(BYTE)(((BYTE)(m) & 0x07) << 2) \
  730.                                           |(BYTE)((BYTE)(y) & 0x03))
  731.  
  732. #define MAKE_CMY332_MASK(c,m,y)           ((DWORD)(((DWORD)(c) & 0x07) << 29)\
  733.                                           |(DWORD)(((DWORD)(m) & 0x07) << 26)\
  734.                                           |(DWORD)(((DWORD)(y) & 0x03) << 24))
  735.  
  736. /* GDIINFO.flHTFlags constants */
  737. #define HT_FLAG_INK_ABSORPTION_IDX0       0x00000000
  738. #define HT_FLAG_INK_ABSORPTION_IDX1       0x00000020
  739. #define HT_FLAG_INK_ABSORPTION_IDX2       0x00000040
  740. #define HT_FLAG_INK_ABSORPTION_IDX3       0x00000060
  741.  
  742. #define HT_FLAG_HIGHEST_INK_ABSORPTION    (HT_FLAG_INK_HIGH_ABSORPTION \
  743.                                           |HT_FLAG_INK_ABSORPTION_IDX3)
  744. #define HT_FLAG_HIGHER_INK_ABSORPTION     (HT_FLAG_INK_HIGH_ABSORPTION \
  745.                                           |HT_FLAG_INK_ABSORPTION_IDX2)
  746. #define HT_FLAG_HIGH_INK_ABSORPTION       (HT_FLAG_INK_HIGH_ABSORPTION \
  747.                                           |HT_FLAG_INK_ABSORPTION_IDX1)
  748. #define HT_FLAG_NORMAL_INK_ABSORPTION     HT_FLAG_INK_ABSORPTION_IDX0
  749. #define HT_FLAG_LOW_INK_ABSORPTION        HT_FLAG_INK_ABSORPTION_IDX1
  750. #define HT_FLAG_LOWER_INK_ABSORPTION      HT_FLAG_INK_ABSORPTION_IDX2
  751. #define HT_FLAG_LOWEST_INK_ABSORPTION     HT_FLAG_INK_ABSORPTION_IDX3
  752.  
  753. #define HT_BITMASKPALRGB                  (DWORD)'0BGR'
  754. #define HT_SET_BITMASKPAL2RGB(pPal)       (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
  755. #define HT_IS_BITMASKPALRGB(pPal)         (*((LPDWORD)(pPal)) == (DWORD)0)
  756.  
  757. /* GDIINFO.ulPhysicalPixelCharacteristics constants */
  758. #define PPC_DEFAULT                       0x0
  759. #define PPC_UNDEFINED                     0x1
  760. #define PPC_RGB_ORDER_VERTICAL_STRIPES    0x2
  761. #define PPC_BGR_ORDER_VERTICAL_STRIPES    0x3
  762. #define PPC_RGB_ORDER_HORIZONTAL_STRIPES  0x4
  763. #define PPC_BGR_ORDER_HORIZONTAL_STRIPES  0x5
  764.  
  765. #define PPG_DEFAULT                       0
  766. #define PPG_SRGB                          1
  767.  
  768. typedef struct _GDIINFO {
  769.   ULONG  ulVersion;
  770.   ULONG  ulTechnology;
  771.   ULONG  ulHorzSize;
  772.   ULONG  ulVertSize;
  773.   ULONG  ulHorzRes;
  774.   ULONG  ulVertRes;
  775.   ULONG  cBitsPixel;
  776.   ULONG  cPlanes;
  777.   ULONG  ulNumColors;
  778.   ULONG  flRaster;
  779.   ULONG  ulLogPixelsX;
  780.   ULONG  ulLogPixelsY;
  781.   ULONG  flTextCaps;
  782.   ULONG  ulDACRed;
  783.   ULONG  ulDACGreen;
  784.   ULONG  ulDACBlue;
  785.   ULONG  ulAspectX;
  786.   ULONG  ulAspectY;
  787.   ULONG  ulAspectXY;
  788.   LONG  xStyleStep;
  789.   LONG  yStyleStep;
  790.   LONG  denStyleStep;
  791.   POINTL  ptlPhysOffset;
  792.   SIZEL  szlPhysSize;
  793.   ULONG  ulNumPalReg;
  794.   COLORINFO  ciDevice;
  795.   ULONG  ulDevicePelsDPI;
  796.   ULONG  ulPrimaryOrder;
  797.   ULONG  ulHTPatternSize;
  798.   ULONG  ulHTOutputFormat;
  799.   ULONG  flHTFlags;
  800.   ULONG  ulVRefresh;
  801.   ULONG  ulBltAlignment;
  802.   ULONG  ulPanningHorzRes;
  803.   ULONG  ulPanningVertRes;
  804.   ULONG  xPanningAlignment;
  805.   ULONG  yPanningAlignment;
  806.   ULONG  cxHTPat;
  807.   ULONG  cyHTPat;
  808.   LPBYTE  pHTPatA;
  809.   LPBYTE  pHTPatB;
  810.   LPBYTE  pHTPatC;
  811.   ULONG  flShadeBlend;
  812.   ULONG  ulPhysicalPixelCharacteristics;
  813.   ULONG  ulPhysicalPixelGamma;
  814. } GDIINFO, *PGDIINFO;
  815.  
  816. /* PATHDATA.flags constants */
  817. #define PD_BEGINSUBPATH                   0x00000001
  818. #define PD_ENDSUBPATH                     0x00000002
  819. #define PD_RESETSTYLE                     0x00000004
  820. #define PD_CLOSEFIGURE                    0x00000008
  821. #define PD_BEZIERS                        0x00000010
  822. #define PD_ALL                            (PD_BEGINSUBPATH \
  823.                                           |PD_ENDSUBPATH \
  824.                                           |PD_RESETSTYLE \
  825.                                           |PD_CLOSEFIGURE \
  826.                                           PD_BEZIERS)
  827.  
  828. typedef struct _PATHDATA {
  829.   FLONG  flags;
  830.   ULONG  count;
  831.   POINTFIX  *glypptfx;
  832. } PATHDATA, *PPATHDATA;
  833.  
  834. /* PATHOBJ.fl constants */
  835. #define PO_BEZIERS                        0x00000001
  836. #define PO_ELLIPSE                        0x00000002
  837. #define PO_ALL_INTEGERS                   0x00000004
  838. #define PO_ENUM_AS_INTEGERS               0x00000008
  839.  
  840. typedef struct _PATHOBJ {
  841.   FLONG  fl;
  842.   ULONG  cCurves;
  843. } PATHOBJ;
  844.  
  845. typedef struct _GLYPHBITS {
  846.   POINTL  ptlOrigin;
  847.   SIZEL  sizlBitmap;
  848.   BYTE  aj[1];
  849. } GLYPHBITS;
  850.  
  851. typedef union _GLYPHDEF {
  852.   GLYPHBITS  *pgb;
  853.   PATHOBJ  *ppo;
  854. } GLYPHDEF;
  855.  
  856. typedef struct _GLYPHPOS {
  857.   HGLYPH  hg;
  858.   GLYPHDEF  *pgdf;
  859.   POINTL  ptl;
  860. } GLYPHPOS, *PGLYPHPOS;
  861.  
  862. typedef struct _GLYPHDATA {
  863.   GLYPHDEF  gdf;
  864.   HGLYPH  hg;
  865.   FIX  fxD;
  866.   FIX  fxA;
  867.   FIX  fxAB;
  868.   FIX  fxInkTop;
  869.   FIX  fxInkBottom;
  870.   RECTL  rclInk;
  871.   POINTQF  ptqD;
  872. } GLYPHDATA;
  873.  
  874. typedef struct _IFIEXTRA {
  875.   ULONG  ulIdentifier;
  876.   PTRDIFF  dpFontSig;
  877.   ULONG  cig;
  878.   PTRDIFF  dpDesignVector;
  879.   PTRDIFF  dpAxesInfoW;
  880.   ULONG  aulReserved[1];
  881. } IFIEXTRA, *PIFIEXTRA;
  882.  
  883. /* IFIMETRICS constants */
  884.  
  885. #define FM_VERSION_NUMBER                 0x0
  886.  
  887. /* IFIMETRICS.fsType constants */
  888. #define FM_TYPE_LICENSED                  0x2
  889. #define FM_READONLY_EMBED                 0x4
  890. #define FM_EDITABLE_EMBED                 0x8
  891. #define FM_NO_EMBEDDING                   FM_TYPE_LICENSED
  892.  
  893. /* IFIMETRICS.flInfo constants */
  894. #define FM_INFO_TECH_TRUETYPE             0x00000001
  895. #define FM_INFO_TECH_BITMAP               0x00000002
  896. #define FM_INFO_TECH_STROKE               0x00000004
  897. #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
  898. #define FM_INFO_ARB_XFORMS                0x00000010
  899. #define FM_INFO_1BPP                      0x00000020
  900. #define FM_INFO_4BPP                      0x00000040
  901. #define FM_INFO_8BPP                      0x00000080
  902. #define FM_INFO_16BPP                     0x00000100
  903. #define FM_INFO_24BPP                     0x00000200
  904. #define FM_INFO_32BPP                     0x00000400
  905. #define FM_INFO_INTEGER_WIDTH             0x00000800
  906. #define FM_INFO_CONSTANT_WIDTH            0x00001000
  907. #define FM_INFO_NOT_CONTIGUOUS            0x00002000
  908. #define FM_INFO_TECH_MM                   0x00004000
  909. #define FM_INFO_RETURNS_OUTLINES          0x00008000
  910. #define FM_INFO_RETURNS_STROKES           0x00010000
  911. #define FM_INFO_RETURNS_BITMAPS           0x00020000
  912. #define FM_INFO_DSIG                      0x00040000
  913. #define FM_INFO_RIGHT_HANDED              0x00080000
  914. #define FM_INFO_INTEGRAL_SCALING          0x00100000
  915. #define FM_INFO_90DEGREE_ROTATIONS        0x00200000
  916. #define FM_INFO_OPTICALLY_FIXED_PITCH     0x00400000
  917. #define FM_INFO_DO_NOT_ENUMERATE          0x00800000
  918. #define FM_INFO_ISOTROPIC_SCALING_ONLY    0x01000000
  919. #define FM_INFO_ANISOTROPIC_SCALING_ONLY  0x02000000
  920. #define FM_INFO_TECH_CFF                  0x04000000
  921. #define FM_INFO_FAMILY_EQUIV              0x08000000
  922. #define FM_INFO_DBCS_FIXED_PITCH          0x10000000
  923. #define FM_INFO_NONNEGATIVE_AC            0x20000000
  924. #define FM_INFO_IGNORE_TC_RA_ABLE         0x40000000
  925. #define FM_INFO_TECH_TYPE1                0x80000000
  926.  
  927. #define MAXCHARSETS                       16
  928.  
  929. /* IFIMETRICS.ulPanoseCulture constants */
  930. #define  FM_PANOSE_CULTURE_LATIN          0x0
  931.  
  932. typedef struct _IFIMETRICS {
  933.   ULONG  cjThis;
  934.   ULONG  cjIfiExtra;
  935.   PTRDIFF  dpwszFamilyName;
  936.   PTRDIFF  dpwszStyleName;
  937.   PTRDIFF  dpwszFaceName;
  938.   PTRDIFF  dpwszUniqueName;
  939.   PTRDIFF  dpFontSim;
  940.   LONG  lEmbedId;
  941.   LONG  lItalicAngle;
  942.   LONG  lCharBias;
  943.   PTRDIFF  dpCharSets;
  944.   BYTE  jWinCharSet;
  945.   BYTE  jWinPitchAndFamily;
  946.   USHORT  usWinWeight;
  947.   ULONG  flInfo;
  948.   USHORT  fsSelection;
  949.   USHORT  fsType;
  950.   FWORD  fwdUnitsPerEm;
  951.   FWORD  fwdLowestPPEm;
  952.   FWORD  fwdWinAscender;
  953.   FWORD  fwdWinDescender;
  954.   FWORD  fwdMacAscender;
  955.   FWORD  fwdMacDescender;
  956.   FWORD  fwdMacLineGap;
  957.   FWORD  fwdTypoAscender;
  958.   FWORD  fwdTypoDescender;
  959.   FWORD  fwdTypoLineGap;
  960.   FWORD  fwdAveCharWidth;
  961.   FWORD  fwdMaxCharInc;
  962.   FWORD  fwdCapHeight;
  963.   FWORD  fwdXHeight;
  964.   FWORD  fwdSubscriptXSize;
  965.   FWORD  fwdSubscriptYSize;
  966.   FWORD  fwdSubscriptXOffset;
  967.   FWORD  fwdSubscriptYOffset;
  968.   FWORD  fwdSuperscriptXSize;
  969.   FWORD  fwdSuperscriptYSize;
  970.   FWORD  fwdSuperscriptXOffset;
  971.   FWORD  fwdSuperscriptYOffset;
  972.   FWORD  fwdUnderscoreSize;
  973.   FWORD  fwdUnderscorePosition;
  974.   FWORD  fwdStrikeoutSize;
  975.   FWORD  fwdStrikeoutPosition;
  976.   BYTE  chFirstChar;
  977.   BYTE  chLastChar;
  978.   BYTE  chDefaultChar;
  979.   BYTE  chBreakChar;
  980.   WCHAR  wcFirstChar;
  981.   WCHAR  wcLastChar;
  982.   WCHAR  wcDefaultChar;
  983.   WCHAR  wcBreakChar;
  984.   POINTL  ptlBaseline;
  985.   POINTL  ptlAspect;
  986.   POINTL  ptlCaret;
  987.   RECTL  rclFontBox;
  988.   BYTE  achVendId[4];
  989.   ULONG  cKerningPairs;
  990.   ULONG  ulPanoseCulture;
  991.   PANOSE  panose;
  992. #if defined(_WIN64)
  993.   PVOID  Align;
  994. #endif
  995. } IFIMETRICS, *PIFIMETRICS;
  996.  
  997. /* LINEATTRS.fl */
  998. #define LA_GEOMETRIC                      0x00000001
  999. #define LA_ALTERNATE                      0x00000002
  1000. #define LA_STARTGAP                       0x00000004
  1001. #define LA_STYLED                         0x00000008
  1002.  
  1003. /* LINEATTRS.iJoin */
  1004. #define JOIN_ROUND                        0L
  1005. #define JOIN_BEVEL                        1L
  1006. #define JOIN_MITER                        2L
  1007.  
  1008. /* LINEATTRS.iEndCap */
  1009. #define ENDCAP_ROUND                      0L
  1010. #define ENDCAP_SQUARE                     1L
  1011. #define ENDCAP_BUTT                       2L
  1012.  
  1013. typedef struct _LINEATTRS {
  1014.   FLONG  fl;
  1015.   ULONG  iJoin;
  1016.   ULONG  iEndCap;
  1017.   FLOAT_LONG  elWidth;
  1018.   FLOATL  eMiterLimit;
  1019.   ULONG  cstyle;
  1020.   PFLOAT_LONG  pstyle;
  1021.   FLOAT_LONG  elStyleState;
  1022. } LINEATTRS, *PLINEATTRS;
  1023.  
  1024. typedef struct _PALOBJ {
  1025.   ULONG  ulReserved;
  1026. } PALOBJ;
  1027.  
  1028. typedef struct _PERBANDINFO {
  1029.   BOOL  bRepeatThisBand;
  1030.   SIZEL  szlBand;
  1031.   ULONG  ulHorzRes;
  1032.   ULONG  ulVertRes;
  1033. } PERBANDINFO, *PPERBANDINFO;
  1034.  
  1035. /* STROBJ.flAccel constants */
  1036. #define SO_FLAG_DEFAULT_PLACEMENT        0x00000001
  1037. #define SO_HORIZONTAL                    0x00000002
  1038. #define SO_VERTICAL                      0x00000004
  1039. #define SO_REVERSED                      0x00000008
  1040. #define SO_ZERO_BEARINGS                 0x00000010
  1041. #define SO_CHAR_INC_EQUAL_BM_BASE        0x00000020
  1042. #define SO_MAXEXT_EQUAL_BM_SIDE          0x00000040
  1043. #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
  1044. #define SO_GLYPHINDEX_TEXTOUT            0x00000100
  1045. #define SO_ESC_NOT_ORIENT                0x00000200
  1046. #define SO_DXDY                          0x00000400
  1047. #define SO_CHARACTER_EXTRA               0x00000800
  1048. #define SO_BREAK_EXTRA                   0x00001000
  1049.  
  1050. typedef struct _STROBJ {
  1051.   ULONG  cGlyphs;
  1052.   FLONG  flAccel;
  1053.   ULONG  ulCharInc;
  1054.   RECTL  rclBkGround;
  1055.   GLYPHPOS  *pgp;
  1056.   LPWSTR  pwszOrg;
  1057. } STROBJ;
  1058.  
  1059. typedef struct _SURFACEALIGNMENT {
  1060.   union {
  1061.         struct {
  1062.             DWORD  dwStartAlignment;
  1063.             DWORD  dwPitchAlignment;
  1064.             DWORD  dwReserved1;
  1065.             DWORD  dwReserved2;
  1066.         } Linear;
  1067.         struct {
  1068.             DWORD  dwXAlignment;
  1069.             DWORD  dwYAlignment;
  1070.             DWORD  dwReserved1;
  1071.             DWORD  dwReserved2;
  1072.         } Rectangular;
  1073.   };
  1074. } SURFACEALIGNMENT, *LPSURFACEALIGNMENT;
  1075.  
  1076. /* SURFOBJ.iType constants */
  1077. #define STYPE_BITMAP                      0L
  1078. #define STYPE_DEVICE                      1L
  1079. #define STYPE_DEVBITMAP                   3L
  1080.  
  1081. /* SURFOBJ.fjBitmap constants */
  1082. #define BMF_TOPDOWN                       0x0001
  1083. #define BMF_NOZEROINIT                    0x0002
  1084. #define BMF_DONTCACHE                     0x0004
  1085. #define BMF_USERMEM                       0x0008
  1086. #define BMF_KMSECTION                     0x0010
  1087. #define BMF_NOTSYSMEM                     0x0020
  1088. #define BMF_WINDOW_BLT                    0x0040
  1089. #define BMF_UMPDMEM                       0x0080
  1090. #define BMF_RESERVED                      0xFF00
  1091.  
  1092. typedef struct _SURFOBJ {
  1093.   DHSURF  dhsurf;
  1094.   HSURF  hsurf;
  1095.   DHPDEV  dhpdev;
  1096.   HDEV  hdev;
  1097.   SIZEL  sizlBitmap;
  1098.   ULONG  cjBits;
  1099.   PVOID  pvBits;
  1100.   PVOID  pvScan0;
  1101.   LONG  lDelta;
  1102.   ULONG  iUniq;
  1103.   ULONG  iBitmapFormat;
  1104.   USHORT  iType;
  1105.   USHORT  fjBitmap;
  1106. } SURFOBJ;
  1107.  
  1108. typedef struct _TYPE1_FONT {
  1109.   HANDLE  hPFM;
  1110.   HANDLE  hPFB;
  1111.   ULONG  ulIdentifier;
  1112. } TYPE1_FONT;
  1113.  
  1114. typedef struct _WNDOBJ {
  1115.   CLIPOBJ  coClient;
  1116.   PVOID  pvConsumer;
  1117.   RECTL  rclClient;
  1118.   SURFOBJ  *psoOwner;
  1119. } WNDOBJ, *PWNDOBJ;
  1120.  
  1121. typedef struct _XFORML {
  1122.   FLOATL  eM11;
  1123.   FLOATL  eM12;
  1124.   FLOATL  eM21;
  1125.   FLOATL  eM22;
  1126.   FLOATL  eDx;
  1127.   FLOATL  eDy;
  1128. } XFORML, *PXFORML;
  1129.  
  1130. typedef struct _XFORMOBJ {
  1131.   ULONG  ulReserved;
  1132. } XFORMOBJ;
  1133.  
  1134. /* XLATEOBJ.flXlate constants */
  1135. #define XO_TRIVIAL                        0x00000001
  1136. #define XO_TABLE                          0x00000002
  1137. #define XO_TO_MONO                        0x00000004
  1138. #define XO_FROM_CMYK                      0x00000008
  1139. #define XO_DEVICE_ICM                     0x00000010
  1140. #define XO_HOST_ICM                       0x00000020
  1141.  
  1142. typedef struct _XLATEOBJ {
  1143.   ULONG  iUniq;
  1144.   FLONG  flXlate;
  1145.   USHORT  iSrcType;
  1146.   USHORT  iDstType;
  1147.   ULONG  cEntries;
  1148.   ULONG  *pulXlate;
  1149. } XLATEOBJ;
  1150.  
  1151. typedef VOID DDKAPI (CALLBACK *WNDOBJCHANGEPROC)(
  1152.   IN WNDOBJ  *pwo,
  1153.   IN FLONG  fl);
  1154.  
  1155.  
  1156. WIN32KAPI
  1157. HANDLE
  1158. DDKAPI
  1159. BRUSHOBJ_hGetColorTransform(
  1160.   IN BRUSHOBJ  *pbo);
  1161.  
  1162. WIN32KAPI
  1163. PVOID
  1164. DDKAPI
  1165. BRUSHOBJ_pvAllocRbrush(
  1166.   IN BRUSHOBJ  *pbo,
  1167.   IN ULONG  cj);
  1168.  
  1169. WIN32KAPI
  1170. PVOID
  1171. DDKAPI
  1172. BRUSHOBJ_pvGetRbrush(
  1173.   IN BRUSHOBJ  *pbo);
  1174.  
  1175. WIN32KAPI
  1176. ULONG
  1177. DDKAPI
  1178. BRUSHOBJ_ulGetBrushColor(
  1179.   IN BRUSHOBJ  *pbo);
  1180.  
  1181. WIN32KAPI
  1182. BOOL
  1183. DDKAPI
  1184. CLIPOBJ_bEnum(
  1185.   IN CLIPOBJ  *pco,
  1186.   IN ULONG  cj,
  1187.   OUT ULONG  *pv);
  1188.  
  1189. /* CLIPOBJ_cEnumStart.iType constants */
  1190. #define CT_RECTANGLES                     0L
  1191.  
  1192. /* CLIPOBJ_cEnumStart.iDirection constants */
  1193. #define CD_RIGHTDOWN                      0x00000000
  1194. #define CD_LEFTDOWN                       0x00000001
  1195. #define CD_LEFTWARDS                      0x00000001
  1196. #define CD_RIGHTUP                        0x00000002
  1197. #define CD_UPWARDS                        0x00000002
  1198. #define CD_LEFTUP                         0x00000003
  1199. #define CD_ANY                            0x00000004
  1200.  
  1201. WIN32KAPI
  1202. ULONG
  1203. DDKAPI
  1204. CLIPOBJ_cEnumStart(
  1205.   IN CLIPOBJ  *pco,
  1206.   IN BOOL  bAll,
  1207.   IN ULONG  iType,
  1208.   IN ULONG  iDirection,
  1209.   IN ULONG  cLimit);
  1210.  
  1211. WIN32KAPI
  1212. PATHOBJ*
  1213. DDKAPI
  1214. CLIPOBJ_ppoGetPath(
  1215.   IN CLIPOBJ  *pco);
  1216.  
  1217. WIN32KAPI
  1218. VOID
  1219. DDKAPI
  1220. EngAcquireSemaphore(
  1221.   IN HSEMAPHORE  hsem);
  1222.  
  1223. #define FL_ZERO_MEMORY                    0x00000001
  1224. #define FL_NONPAGED_MEMORY                0x00000002
  1225.  
  1226. WIN32KAPI
  1227. PVOID
  1228. DDKAPI
  1229. EngAllocMem(
  1230.   IN ULONG  Flags,
  1231.   IN ULONG  MemSize,
  1232.   IN ULONG  Tag);
  1233.  
  1234. WIN32KAPI
  1235. PVOID
  1236. DDKAPI
  1237. EngAllocPrivateUserMem(
  1238.   IN PDD_SURFACE_LOCAL  psl,
  1239.   IN SIZE_T  cj,
  1240.   IN ULONG  tag);
  1241.  
  1242. WIN32KAPI
  1243. PVOID
  1244. DDKAPI
  1245. EngAllocUserMem(
  1246.   IN SIZE_T  cj,
  1247.   IN ULONG  tag);
  1248.  
  1249. WIN32KAPI
  1250. BOOL
  1251. DDKAPI
  1252. EngAlphaBlend(
  1253.   IN SURFOBJ  *psoDest,
  1254.   IN SURFOBJ  *psoSrc,
  1255.   IN CLIPOBJ  *pco,
  1256.   IN XLATEOBJ  *pxlo,
  1257.   IN RECTL  *prclDest,
  1258.   IN RECTL  *prclSrc,
  1259.   IN BLENDOBJ  *pBlendObj);
  1260.  
  1261. /* EngAssociateSurface.flHooks constants */
  1262. #define HOOK_BITBLT                       0x00000001
  1263. #define HOOK_STRETCHBLT                   0x00000002
  1264. #define HOOK_PLGBLT                       0x00000004
  1265. #define HOOK_TEXTOUT                      0x00000008
  1266. #define HOOK_PAINT                        0x00000010
  1267. #define HOOK_STROKEPATH                   0x00000020
  1268. #define HOOK_FILLPATH                     0x00000040
  1269. #define HOOK_STROKEANDFILLPATH            0x00000080
  1270. #define HOOK_LINETO                       0x00000100
  1271. #define HOOK_COPYBITS                     0x00000400
  1272. #define HOOK_MOVEPANNING                  0x00000800
  1273. #define HOOK_SYNCHRONIZE                  0x00001000
  1274. #define HOOK_STRETCHBLTROP                0x00002000
  1275. #define HOOK_SYNCHRONIZEACCESS            0x00004000
  1276. #define HOOK_TRANSPARENTBLT               0x00008000
  1277. #define HOOK_ALPHABLEND                   0x00010000
  1278. #define HOOK_GRADIENTFILL                 0x00020000
  1279. #define HOOK_FLAGS                        0x0003b5ff
  1280.  
  1281. WIN32KAPI
  1282. BOOL
  1283. DDKAPI
  1284. EngAssociateSurface(
  1285.   IN HSURF  hsurf,
  1286.   IN HDEV  hdev,
  1287.   IN FLONG  flHooks);
  1288.  
  1289. WIN32KAPI
  1290. BOOL
  1291. DDKAPI
  1292. EngBitBlt(
  1293.   IN SURFOBJ  *psoTrg,
  1294.   IN SURFOBJ  *psoSrc,
  1295.   IN SURFOBJ  *psoMask,
  1296.   IN CLIPOBJ  *pco,
  1297.   IN XLATEOBJ  *pxlo,
  1298.   IN RECTL  *prclTrg,
  1299.   IN POINTL  *pptlSrc,
  1300.   IN POINTL  *pptlMask,
  1301.   IN BRUSHOBJ  *pbo,
  1302.   IN POINTL  *pptlBrush,
  1303.   IN ROP4  rop4);
  1304.  
  1305. WIN32KAPI
  1306. BOOL
  1307. DDKAPI
  1308. EngCheckAbort(
  1309.   IN SURFOBJ  *pso);
  1310.  
  1311. WIN32KAPI
  1312. VOID
  1313. DDKAPI
  1314. EngClearEvent(
  1315.   IN PEVENT  pEvent);
  1316.  
  1317. WIN32KAPI
  1318. FD_GLYPHSET*
  1319. DDKAPI
  1320. EngComputeGlyphSet(
  1321.   IN INT  nCodePage,
  1322.   IN INT  nFirstChar,
  1323.   IN INT  cChars);
  1324.  
  1325. /* EngControlSprites.fl constants */
  1326. #define ECS_TEARDOWN                      0x00000001
  1327. #define ECS_REDRAW                        0x00000002
  1328.  
  1329. WIN32KAPI
  1330. BOOL
  1331. DDKAPI
  1332. EngControlSprites(
  1333.   IN WNDOBJ  *pwo,
  1334.   IN FLONG  fl);
  1335.  
  1336. WIN32KAPI
  1337. BOOL
  1338. DDKAPI
  1339. EngCopyBits(
  1340.   OUT SURFOBJ  *psoDest,
  1341.   IN SURFOBJ  *psoSrc,
  1342.   IN CLIPOBJ  *pco,
  1343.   IN XLATEOBJ  *pxlo,
  1344.   IN RECTL  *prclDest,
  1345.   IN POINTL  *pptlSrc);
  1346.  
  1347. WIN32KAPI
  1348. HBITMAP
  1349. DDKAPI
  1350. EngCreateBitmap(
  1351.   IN SIZEL  sizl,
  1352.   IN LONG  lWidth,
  1353.   IN ULONG  iFormat,
  1354.   IN FLONG  fl,
  1355.   IN PVOID  pvBits);
  1356.  
  1357. WIN32KAPI
  1358. CLIPOBJ*
  1359. DDKAPI
  1360. EngCreateClip(
  1361.   VOID);
  1362.  
  1363. WIN32KAPI
  1364. HBITMAP
  1365. DDKAPI
  1366. EngCreateDeviceBitmap(
  1367.   IN DHSURF  dhsurf,
  1368.   IN SIZEL  sizl,
  1369.   IN ULONG  iFormatCompat);
  1370.  
  1371. WIN32KAPI
  1372. HSURF
  1373. DDKAPI
  1374. EngCreateDeviceSurface(
  1375.   DHSURF  dhsurf,
  1376.   SIZEL  sizl,
  1377.   ULONG  iFormatCompat);
  1378.  
  1379. #if 0
  1380. WIN32KAPI
  1381. HDRVOBJ
  1382. DDKAPI
  1383. EngCreateDriverObj(
  1384.   PVOID  pvObj,
  1385.   FREEOBJPROC  pFreeObjProc,
  1386.   HDEV  hdev);
  1387. #endif
  1388.  
  1389. WIN32KAPI
  1390. BOOL
  1391. DDKAPI
  1392. EngCreateEvent(
  1393.   OUT PEVENT  *ppEvent);
  1394.  
  1395. /* EngCreatePalette.iMode constants */
  1396. #define PAL_INDEXED                       0x00000001
  1397. #define PAL_BITFIELDS                     0x00000002
  1398. #define PAL_RGB                           0x00000004
  1399. #define PAL_BGR                           0x00000008
  1400. #define PAL_CMYK                          0x00000010
  1401.  
  1402. WIN32KAPI
  1403. HPALETTE
  1404. DDKAPI
  1405. EngCreatePalette(
  1406.   IN ULONG  iMode,
  1407.   IN ULONG  cColors,
  1408.   IN ULONG  *pulColors,
  1409.   IN FLONG  flRed,
  1410.   IN FLONG  flGreen,
  1411.   IN FLONG  flBlue);
  1412.  
  1413. WIN32KAPI
  1414. PATHOBJ*
  1415. DDKAPI
  1416. EngCreatePath(
  1417.   VOID);
  1418.  
  1419. WIN32KAPI
  1420. HSEMAPHORE
  1421. DDKAPI
  1422. EngCreateSemaphore(
  1423.   VOID);
  1424.  
  1425. /* EngCreateWnd.fl constants */
  1426. #define WO_RGN_CLIENT_DELTA               0x00000001
  1427. #define WO_RGN_CLIENT                     0x00000002
  1428. #define WO_RGN_SURFACE_DELTA              0x00000004
  1429. #define WO_RGN_SURFACE                    0x00000008
  1430. #define WO_RGN_UPDATE_ALL                 0x00000010
  1431. #define WO_RGN_WINDOW                     0x00000020
  1432. #define WO_DRAW_NOTIFY                    0x00000040
  1433. #define WO_SPRITE_NOTIFY                  0x00000080
  1434. #define WO_RGN_DESKTOP_COORD              0x00000100
  1435.  
  1436. WIN32KAPI
  1437. WNDOBJ*
  1438. DDKAPI
  1439. EngCreateWnd(
  1440.   SURFOBJ  *pso,
  1441.   HWND  hwnd,
  1442.   WNDOBJCHANGEPROC  pfn,
  1443.   FLONG  fl,
  1444.   int  iPixelFormat);
  1445.  
  1446. WIN32KAPI
  1447. VOID
  1448. DDKAPI
  1449. EngDebugBreak(
  1450.   VOID);
  1451.  
  1452. WIN32KAPI
  1453. VOID
  1454. DDKAPI
  1455. EngDebugPrint(
  1456.   IN PCHAR StandardPrefix,
  1457.   IN PCHAR DebugMessage,
  1458.   IN va_list ap);
  1459.  
  1460. WIN32KAPI
  1461. VOID
  1462. DDKAPI
  1463. EngDeleteClip(
  1464.   IN CLIPOBJ  *pco);
  1465.  
  1466. WIN32KAPI
  1467. BOOL
  1468. DDKAPI
  1469. EngDeleteDriverObj(
  1470.   IN HDRVOBJ  hdo,
  1471.   IN BOOL  bCallBack,
  1472.   IN BOOL  bLocked);
  1473.  
  1474. WIN32KAPI
  1475. BOOL
  1476. DDKAPI
  1477. EngDeleteEvent(
  1478.   IN PEVENT  pEvent);
  1479.  
  1480. WIN32KAPI
  1481. BOOL
  1482. DDKAPI
  1483. EngDeleteFile(
  1484.   IN LPWSTR  pwszFileName);
  1485.  
  1486. WIN32KAPI
  1487. BOOL
  1488. DDKAPI
  1489. EngDeletePalette(
  1490.   IN HPALETTE  hpal);
  1491.  
  1492. WIN32KAPI
  1493. VOID
  1494. DDKAPI
  1495. EngDeletePath(
  1496.   IN PATHOBJ  *ppo);
  1497.  
  1498. WIN32KAPI
  1499. VOID
  1500. DDKAPI
  1501. EngDeleteSafeSemaphore(
  1502.   IN OUT ENGSAFESEMAPHORE  *pssem);
  1503.  
  1504. WIN32KAPI
  1505. VOID
  1506. DDKAPI
  1507. EngDeleteSemaphore(
  1508.   IN OUT HSEMAPHORE  hsem);
  1509.  
  1510. WIN32KAPI
  1511. BOOL
  1512. DDKAPI
  1513. EngDeleteSurface(
  1514.   IN HSURF  hsurf);
  1515.  
  1516. WIN32KAPI
  1517. VOID
  1518. DDKAPI
  1519. EngDeleteWnd(
  1520.   IN WNDOBJ  *pwo);
  1521.  
  1522. WIN32KAPI
  1523. DWORD
  1524. DDKAPI
  1525. EngDeviceIoControl(
  1526.   IN HANDLE  hDevice,
  1527.   IN DWORD  dwIoControlCode,
  1528.   IN LPVOID  lpInBuffer,
  1529.   IN DWORD  nInBufferSize,
  1530.   IN OUT LPVOID  lpOutBuffer,
  1531.   IN DWORD  nOutBufferSize,
  1532.   OUT LPDWORD  lpBytesReturned);
  1533.  
  1534. WIN32KAPI
  1535. ULONG
  1536. DDKAPI
  1537. EngDitherColor(
  1538.   IN HDEV  hdev,
  1539.   IN ULONG  iMode,
  1540.   IN ULONG  rgb,
  1541.   OUT ULONG  *pul);
  1542.  
  1543. WIN32KAPI
  1544. BOOL
  1545. DDKAPI
  1546. EngEnumForms(
  1547.   IN HANDLE  hPrinter,
  1548.   IN DWORD  Level,
  1549.   OUT LPBYTE  pForm,
  1550.   IN DWORD  cbBuf,
  1551.   OUT LPDWORD  pcbNeeded,
  1552.   OUT LPDWORD  pcReturned);
  1553.  
  1554. WIN32KAPI
  1555. BOOL
  1556. DDKAPI
  1557. EngEraseSurface(
  1558.   IN SURFOBJ  *pso,
  1559.   IN RECTL  *prcl,
  1560.   IN ULONG  iColor);
  1561.  
  1562. WIN32KAPI
  1563. BOOL
  1564. DDKAPI
  1565. EngFillPath(
  1566.   IN SURFOBJ  *pso,
  1567.   IN PATHOBJ  *ppo,
  1568.   IN CLIPOBJ  *pco,
  1569.   IN BRUSHOBJ  *pbo,
  1570.   IN POINTL  *pptlBrushOrg,
  1571.   IN MIX  mix,
  1572.   IN FLONG  flOptions);
  1573.  
  1574. WIN32KAPI
  1575. PVOID
  1576. DDKAPI
  1577. EngFindImageProcAddress(
  1578.   IN HANDLE  hModule,
  1579.   IN LPSTR  lpProcName);
  1580.  
  1581. WIN32KAPI
  1582. PVOID
  1583. DDKAPI
  1584. EngFindResource(
  1585.   IN HANDLE  h,
  1586.   IN int  iName,
  1587.   IN int  iType,
  1588.   OUT PULONG  pulSize);
  1589.  
  1590. WIN32KAPI
  1591. PVOID
  1592. DDKAPI
  1593. EngFntCacheAlloc(
  1594.   IN ULONG  FastCheckSum,
  1595.   IN ULONG  ulSize);
  1596.  
  1597. /* EngFntCacheFault.iFaultMode constants */
  1598. #define ENG_FNT_CACHE_READ_FAULT          0x00000001
  1599. #define ENG_FNT_CACHE_WRITE_FAULT         0x00000002
  1600.  
  1601. WIN32KAPI
  1602. VOID
  1603. DDKAPI
  1604. EngFntCacheFault(
  1605.   IN ULONG  ulFastCheckSum,
  1606.   IN ULONG  iFaultMode);
  1607.  
  1608. WIN32KAPI
  1609. PVOID
  1610. DDKAPI
  1611. EngFntCacheLookUp(
  1612.   IN ULONG  FastCheckSum,
  1613.   OUT ULONG  *pulSize);
  1614.  
  1615. WIN32KAPI
  1616. VOID
  1617. DDKAPI
  1618. EngFreeMem(
  1619.   IN PVOID  Mem);
  1620.  
  1621. WIN32KAPI
  1622. VOID
  1623. DDKAPI
  1624. EngFreeModule(
  1625.   IN HANDLE  h);
  1626.  
  1627. WIN32KAPI
  1628. VOID
  1629. DDKAPI
  1630. EngFreePrivateUserMem(
  1631.   IN PDD_SURFACE_LOCAL  psl,
  1632.   IN PVOID  pv);
  1633.  
  1634. WIN32KAPI
  1635. VOID
  1636. DDKAPI
  1637. EngFreeUserMem(
  1638.   IN PVOID  pv);
  1639.  
  1640. WIN32KAPI
  1641. VOID
  1642. DDKAPI
  1643. EngGetCurrentCodePage(
  1644.   OUT PUSHORT  OemCodePage,
  1645.   OUT PUSHORT  AnsiCodePage);
  1646.  
  1647. WIN32KAPI
  1648. HANDLE
  1649. DDKAPI
  1650. EngGetCurrentProcessId(
  1651.   VOID);
  1652.  
  1653. WIN32KAPI
  1654. HANDLE
  1655. DDKAPI
  1656. EngGetCurrentThreadId(
  1657.   VOID);
  1658.  
  1659. WIN32KAPI
  1660. LPWSTR
  1661. DDKAPI
  1662. EngGetDriverName(
  1663.   IN HDEV  hdev);
  1664.  
  1665. WIN32KAPI
  1666. BOOL
  1667. DDKAPI
  1668. EngGetFileChangeTime(
  1669.   IN HANDLE  h,
  1670.   OUT LARGE_INTEGER  *pChangeTime);
  1671.  
  1672. WIN32KAPI
  1673. BOOL
  1674. DDKAPI
  1675. EngGetFilePath(
  1676.   IN HANDLE  h,
  1677.   OUT WCHAR  (*pDest)[MAX_PATH+1]);
  1678.  
  1679. WIN32KAPI
  1680. BOOL
  1681. DDKAPI
  1682. EngGetForm(
  1683.   IN HANDLE  hPrinter,
  1684.   IN LPWSTR  pFormName,
  1685.   IN DWORD  Level,
  1686.   OUT LPBYTE  pForm,
  1687.   IN DWORD  cbBuf,
  1688.   OUT LPDWORD  pcbNeeded);
  1689.  
  1690. WIN32KAPI
  1691. ULONG
  1692. DDKAPI
  1693. EngGetLastError(
  1694.   VOID);
  1695.  
  1696. WIN32KAPI
  1697. BOOL
  1698. DDKAPI
  1699. EngGetPrinter(
  1700.   IN HANDLE  hPrinter,
  1701.   IN DWORD  dwLevel,
  1702.   OUT LPBYTE  pPrinter,
  1703.   IN DWORD  cbBuf,
  1704.   OUT LPDWORD  pcbNeeded);
  1705.  
  1706. WIN32KAPI
  1707. DWORD
  1708. DDKAPI
  1709. EngGetPrinterData(
  1710.   IN HANDLE  hPrinter,
  1711.   IN LPWSTR  pValueName,
  1712.   OUT LPDWORD  pType,
  1713.   OUT LPBYTE  pData,
  1714.   IN DWORD  nSize,
  1715.   OUT LPDWORD  pcbNeeded);
  1716.  
  1717. WIN32KAPI
  1718. LPWSTR
  1719. DDKAPI
  1720. EngGetPrinterDataFileName(
  1721.   IN HDEV  hdev);
  1722.  
  1723. WIN32KAPI
  1724. BOOL
  1725. DDKAPI
  1726. EngGetPrinterDriver(
  1727.   IN HANDLE  hPrinter,
  1728.   IN LPWSTR  pEnvironment,
  1729.   IN DWORD  dwLevel,
  1730.   OUT BYTE  *lpbDrvInfo,
  1731.   IN DWORD  cbBuf,
  1732.   OUT DWORD  *pcbNeeded);
  1733.  
  1734. WIN32KAPI
  1735. HANDLE
  1736. DDKAPI
  1737. EngGetProcessHandle(
  1738.   VOID);
  1739.  
  1740. WIN32KAPI
  1741. BOOL
  1742. DDKAPI
  1743. EngGetType1FontList(
  1744.   IN HDEV  hdev,
  1745.   OUT TYPE1_FONT  *pType1Buffer,
  1746.   IN ULONG  cjType1Buffer,
  1747.   OUT PULONG  pulLocalFonts,
  1748.   OUT PULONG  pulRemoteFonts,
  1749.   OUT LARGE_INTEGER  *pLastModified);
  1750.  
  1751. WIN32KAPI
  1752. BOOL
  1753. DDKAPI
  1754. EngGradientFill(
  1755.   IN SURFOBJ  *psoDest,
  1756.   IN CLIPOBJ  *pco,
  1757.   IN XLATEOBJ  *pxlo,
  1758.   IN TRIVERTEX  *pVertex,
  1759.   IN ULONG  nVertex,
  1760.   IN PVOID  pMesh,
  1761.   IN ULONG  nMesh,
  1762.   IN RECTL  *prclExtents,
  1763.   IN POINTL  *pptlDitherOrg,
  1764.   IN ULONG  ulMode);
  1765.  
  1766. /* EngHangNotification return values */
  1767. #define EHN_RESTORED                      0x00000000
  1768. #define EHN_ERROR                         0x00000001
  1769.  
  1770. WIN32KAPI
  1771. ULONG
  1772. DDKAPI
  1773. EngHangNotification(
  1774.   IN HDEV  hDev,
  1775.   IN PVOID  Reserved);
  1776.  
  1777. WIN32KAPI
  1778. BOOL
  1779. DDKAPI
  1780. EngInitializeSafeSemaphore(
  1781.   OUT ENGSAFESEMAPHORE  *pssem);
  1782.  
  1783. WIN32KAPI
  1784. BOOL
  1785. DDKAPI
  1786. EngIsSemaphoreOwned(
  1787.   IN HSEMAPHORE  hsem);
  1788.  
  1789. WIN32KAPI
  1790. BOOL
  1791. DDKAPI
  1792. EngIsSemaphoreOwnedByCurrentThread(
  1793.   IN HSEMAPHORE  hsem);
  1794.  
  1795. WIN32KAPI
  1796. BOOL
  1797. DDKAPI
  1798. EngLineTo(
  1799.   SURFOBJ  *pso,
  1800.   CLIPOBJ  *pco,
  1801.   BRUSHOBJ  *pbo,
  1802.   LONG  x1,
  1803.   LONG  y1,
  1804.   LONG  x2,
  1805.   LONG  y2,
  1806.   RECTL  *prclBounds,
  1807.   MIX  mix);
  1808.  
  1809. WIN32KAPI
  1810. HANDLE
  1811. DDKAPI
  1812. EngLoadImage(
  1813.   IN LPWSTR  pwszDriver);
  1814.  
  1815. WIN32KAPI
  1816. HANDLE
  1817. DDKAPI
  1818. EngLoadModule(
  1819.   IN LPWSTR  pwsz);
  1820.  
  1821. WIN32KAPI
  1822. HANDLE
  1823. DDKAPI
  1824. EngLoadModuleForWrite(
  1825.   IN LPWSTR  pwsz,
  1826.   IN ULONG  cjSizeOfModule);
  1827.  
  1828. WIN32KAPI
  1829. PDD_SURFACE_LOCAL
  1830. DDKAPI
  1831. EngLockDirectDrawSurface(
  1832.   IN HANDLE  hSurface);
  1833.  
  1834. WIN32KAPI
  1835. DRIVEROBJ*
  1836. DDKAPI
  1837. EngLockDriverObj(
  1838.   IN HDRVOBJ  hdo);
  1839.  
  1840. WIN32KAPI
  1841. SURFOBJ*
  1842. DDKAPI
  1843. EngLockSurface(
  1844.   IN HSURF  hsurf);
  1845.  
  1846. WIN32KAPI
  1847. BOOL
  1848. DDKAPI
  1849. EngLpkInstalled(
  1850.   VOID);
  1851.  
  1852. WIN32KAPI
  1853. PEVENT
  1854. DDKAPI
  1855. EngMapEvent(
  1856.   IN HDEV  hDev,
  1857.   IN HANDLE  hUserObject,
  1858.   IN PVOID  Reserved1,
  1859.   IN PVOID  Reserved2,
  1860.   IN PVOID  Reserved3);
  1861.  
  1862. WIN32KAPI
  1863. PVOID
  1864. DDKAPI
  1865. EngMapFile(
  1866.   IN LPWSTR  pwsz,
  1867.   IN ULONG  cjSize,
  1868.   OUT ULONG_PTR  *piFile);
  1869.  
  1870. WIN32KAPI
  1871. BOOL
  1872. DDKAPI
  1873. EngMapFontFile(
  1874.   ULONG_PTR  iFile,
  1875.   PULONG  *ppjBuf,
  1876.   ULONG  *pcjBuf);
  1877.  
  1878. WIN32KAPI
  1879. BOOL
  1880. DDKAPI
  1881. EngMapFontFileFD(
  1882.   IN ULONG_PTR  iFile,
  1883.   OUT PULONG  *ppjBuf,
  1884.   OUT ULONG  *pcjBuf);
  1885.  
  1886. WIN32KAPI
  1887. PVOID
  1888. DDKAPI
  1889. EngMapModule(
  1890.   IN HANDLE  h,
  1891.   OUT PULONG  pSize);
  1892.  
  1893. WIN32KAPI
  1894. BOOL
  1895. DDKAPI
  1896. EngMarkBandingSurface(
  1897.   IN HSURF  hsurf);
  1898.  
  1899. /* EngModifySurface.flSurface constants */
  1900. #define MS_NOTSYSTEMMEMORY                0x00000001
  1901. #define MS_SHAREDACCESS                   0x00000002
  1902.  
  1903. WIN32KAPI
  1904. BOOL
  1905. DDKAPI
  1906. EngModifySurface(
  1907.   IN HSURF  hsurf,
  1908.   IN HDEV  hdev,
  1909.   IN FLONG  flHooks,
  1910.   IN FLONG  flSurface,
  1911.   IN DHSURF  dhsurf,
  1912.   IN VOID  *pvScan0,
  1913.   IN LONG  lDelta,
  1914.   IN VOID  *pvReserved);
  1915.  
  1916. WIN32KAPI
  1917. VOID
  1918. DDKAPI
  1919. EngMovePointer(
  1920.   IN SURFOBJ  *pso,
  1921.   IN LONG  x,
  1922.   IN LONG  y,
  1923.   IN RECTL  *prcl);
  1924.  
  1925. WIN32KAPI
  1926. int
  1927. DDKAPI
  1928. EngMulDiv(
  1929.   IN int  a,
  1930.   IN int  b,
  1931.   IN int  c);
  1932.  
  1933. WIN32KAPI
  1934. VOID
  1935. DDKAPI
  1936. EngMultiByteToUnicodeN(
  1937.   OUT LPWSTR  UnicodeString,
  1938.   IN ULONG  MaxBytesInUnicodeString,
  1939.   OUT PULONG  BytesInUnicodeString,
  1940.   IN PCHAR  MultiByteString,
  1941.   IN ULONG  BytesInMultiByteString);
  1942.  
  1943. WIN32KAPI
  1944. INT
  1945. DDKAPI
  1946. EngMultiByteToWideChar(
  1947.   IN UINT  CodePage,
  1948.   OUT LPWSTR  WideCharString,
  1949.   IN INT  BytesInWideCharString,
  1950.   IN LPSTR  MultiByteString,
  1951.   IN INT  BytesInMultiByteString);
  1952.  
  1953. WIN32KAPI
  1954. BOOL
  1955. DDKAPI
  1956. EngPaint(
  1957.   IN SURFOBJ  *pso,
  1958.   IN CLIPOBJ  *pco,
  1959.   IN BRUSHOBJ  *pbo,
  1960.   IN POINTL  *pptlBrushOrg,
  1961.   IN MIX  mix);
  1962.  
  1963. WIN32KAPI
  1964. BOOL
  1965. DDKAPI
  1966. EngPlgBlt(
  1967.   IN SURFOBJ  *psoTrg,
  1968.   IN SURFOBJ  *psoSrc,
  1969.   IN SURFOBJ  *psoMsk,
  1970.   IN CLIPOBJ  *pco,
  1971.   IN XLATEOBJ  *pxlo,
  1972.   IN COLORADJUSTMENT  *pca,
  1973.   IN POINTL  *pptlBrushOrg,
  1974.   IN POINTFIX  *pptfx,
  1975.   IN RECTL  *prcl,
  1976.   IN POINTL  *pptl,
  1977.   IN ULONG  iMode);
  1978.  
  1979. WIN32KAPI
  1980. VOID
  1981. DDKAPI
  1982. EngProbeForRead(
  1983.   IN PVOID  Address,
  1984.   IN ULONG  Length,
  1985.   IN ULONG  Alignment);
  1986.  
  1987. WIN32KAPI
  1988. VOID
  1989. DDKAPI
  1990. EngProbeForReadAndWrite(
  1991.   IN PVOID  Address,
  1992.   IN ULONG  Length,
  1993.   IN ULONG  Alignment);
  1994.  
  1995. typedef enum _ENG_DEVICE_ATTRIBUTE {
  1996.   QDA_RESERVED = 0,
  1997.   QDA_ACCELERATION_LEVEL
  1998. } ENG_DEVICE_ATTRIBUTE;
  1999.  
  2000. WIN32KAPI
  2001. BOOL
  2002. DDKAPI
  2003. EngQueryDeviceAttribute(
  2004.   IN HDEV  hdev,
  2005.   IN ENG_DEVICE_ATTRIBUTE  devAttr,
  2006.   IN VOID  *pvIn,
  2007.   IN ULONG  ulInSize,
  2008.   OUT VOID  *pvOut,
  2009.   OUT ULONG  ulOutSize);
  2010.  
  2011. WIN32KAPI
  2012. LARGE_INTEGER
  2013. DDKAPI
  2014. EngQueryFileTimeStamp(
  2015.   IN LPWSTR  pwsz);
  2016.  
  2017. WIN32KAPI
  2018. VOID
  2019. DDKAPI
  2020. EngQueryLocalTime(
  2021.   OUT PENG_TIME_FIELDS  ptf);
  2022.  
  2023. WIN32KAPI
  2024. ULONG
  2025. DDKAPI
  2026. EngQueryPalette(
  2027.   IN HPALETTE  hPal,
  2028.   OUT ULONG  *piMode,
  2029.   IN ULONG  cColors,
  2030.   OUT ULONG  *pulColors);
  2031.  
  2032. WIN32KAPI
  2033. VOID
  2034. DDKAPI
  2035. EngQueryPerformanceCounter(
  2036.   OUT LONGLONG  *pPerformanceCount);
  2037.  
  2038. WIN32KAPI
  2039. VOID
  2040. DDKAPI
  2041. EngQueryPerformanceFrequency(
  2042.   OUT LONGLONG  *pFrequency);
  2043.  
  2044. typedef enum _ENG_SYSTEM_ATTRIBUTE {
  2045.   EngProcessorFeature = 1,
  2046.   EngNumberOfProcessors,
  2047.   EngOptimumAvailableUserMemory,
  2048.   EngOptimumAvailableSystemMemory,
  2049. } ENG_SYSTEM_ATTRIBUTE;
  2050.  
  2051. #define QSA_MMX                           0x00000100
  2052. #define QSA_SSE                           0x00002000
  2053. #define QSA_3DNOW                         0x00004000
  2054.  
  2055. WIN32KAPI
  2056. BOOL
  2057. DDKAPI
  2058. EngQuerySystemAttribute(
  2059.   IN ENG_SYSTEM_ATTRIBUTE  CapNum,
  2060.   OUT PDWORD  pCapability);
  2061.  
  2062. WIN32KAPI
  2063. LONG
  2064. DDKAPI
  2065. EngReadStateEvent(
  2066.   IN PEVENT  pEvent);
  2067.  
  2068. WIN32KAPI
  2069. VOID
  2070. DDKAPI
  2071. EngReleaseSemaphore(
  2072.   IN HSEMAPHORE  hsem);
  2073.  
  2074. WIN32KAPI
  2075. BOOL
  2076. DDKAPI
  2077. EngRestoreFloatingPointState(
  2078.   IN VOID  *pBuffer);
  2079.  
  2080. WIN32KAPI
  2081. ULONG
  2082. DDKAPI
  2083. EngSaveFloatingPointState(
  2084.   OUT VOID  *pBuffer,
  2085.   IN ULONG  cjBufferSize);
  2086.  
  2087. WIN32KAPI
  2088. HANDLE
  2089. DDKAPI
  2090. EngSecureMem(
  2091.   IN PVOID  Address,
  2092.   IN ULONG  Length);
  2093.  
  2094. WIN32KAPI
  2095. LONG
  2096. DDKAPI
  2097. EngSetEvent(
  2098.   IN PEVENT  pEvent);
  2099.  
  2100. WIN32KAPI
  2101. VOID
  2102. DDKAPI
  2103. EngSetLastError(
  2104.   IN ULONG  iError);
  2105.  
  2106. WIN32KAPI
  2107. ULONG
  2108. DDKAPI
  2109. EngSetPointerShape(
  2110.   IN SURFOBJ  *pso,
  2111.   IN SURFOBJ  *psoMask,
  2112.   IN SURFOBJ  *psoColor,
  2113.   IN XLATEOBJ  *pxlo,
  2114.   IN LONG  xHot,
  2115.   IN LONG  yHot,
  2116.   IN LONG  x,
  2117.   IN LONG  y,
  2118.   IN RECTL  *prcl,
  2119.   IN FLONG  fl);
  2120.  
  2121. WIN32KAPI
  2122. BOOL
  2123. DDKAPI
  2124. EngSetPointerTag(
  2125.   IN HDEV  hdev,
  2126.   IN SURFOBJ  *psoMask,
  2127.   IN SURFOBJ  *psoColor,
  2128.   IN XLATEOBJ  *pxlo,
  2129.   IN FLONG  fl);
  2130.  
  2131. WIN32KAPI
  2132. DWORD
  2133. DDKAPI
  2134. EngSetPrinterData(
  2135.   IN HANDLE  hPrinter,
  2136.   IN LPWSTR  pType,
  2137.   IN DWORD  dwType,
  2138.   IN LPBYTE  lpbPrinterData,
  2139.   IN DWORD  cjPrinterData);
  2140.  
  2141. typedef int DDKCDECLAPI (*SORTCOMP)(const void *pv1, const void *pv2);
  2142.  
  2143. WIN32KAPI
  2144. VOID
  2145. DDKAPI
  2146. EngSort(
  2147.   IN OUT PBYTE  pjBuf,
  2148.   IN ULONG  c,
  2149.   IN ULONG  cjElem,
  2150.   IN SORTCOMP  pfnComp);
  2151.  
  2152. WIN32KAPI
  2153. BOOL
  2154. DDKAPI
  2155. EngStretchBlt(
  2156.   IN SURFOBJ  *psoDest,
  2157.   IN SURFOBJ  *psoSrc,
  2158.   IN SURFOBJ  *psoMask,
  2159.   IN CLIPOBJ  *pco,
  2160.   IN XLATEOBJ  *pxlo,
  2161.   IN COLORADJUSTMENT  *pca,
  2162.   IN POINTL  *pptlHTOrg,
  2163.   IN RECTL  *prclDest,
  2164.   IN RECTL  *prclSrc,
  2165.   IN POINTL  *pptlMask,
  2166.   IN ULONG  iMode);
  2167.  
  2168. WIN32KAPI
  2169. BOOL
  2170. DDKAPI
  2171. EngStretchBltROP(
  2172.   IN SURFOBJ  *psoDest,
  2173.   IN SURFOBJ  *psoSrc,
  2174.   IN SURFOBJ  *psoMask,
  2175.   IN CLIPOBJ  *pco,
  2176.   IN XLATEOBJ  *pxlo,
  2177.   IN COLORADJUSTMENT  *pca,
  2178.   IN POINTL  *pptlHTOrg,
  2179.   IN RECTL  *prclDest,
  2180.   IN RECTL  *prclSrc,
  2181.   IN POINTL  *pptlMask,
  2182.   IN ULONG  iMode,
  2183.   IN BRUSHOBJ  *pbo,
  2184.   IN DWORD  rop4);
  2185.  
  2186. WIN32KAPI
  2187. BOOL
  2188. DDKAPI
  2189. EngStrokeAndFillPath(
  2190.   IN SURFOBJ  *pso,
  2191.   IN PATHOBJ  *ppo,
  2192.   IN CLIPOBJ  *pco,
  2193.   IN XFORMOBJ  *pxo,
  2194.   IN BRUSHOBJ  *pboStroke,
  2195.   IN LINEATTRS  *plineattrs,
  2196.   IN BRUSHOBJ  *pboFill,
  2197.   IN POINTL  *pptlBrushOrg,
  2198.   IN MIX  mixFill,
  2199.   IN FLONG  flOptions);
  2200.  
  2201. WIN32KAPI
  2202. BOOL
  2203. DDKAPI
  2204. EngStrokePath(
  2205.   IN SURFOBJ  *pso,
  2206.   IN PATHOBJ  *ppo,
  2207.   IN CLIPOBJ  *pco,
  2208.   IN XFORMOBJ  *pxo,
  2209.   IN BRUSHOBJ  *pbo,
  2210.   IN POINTL  *pptlBrushOrg,
  2211.   IN LINEATTRS  *plineattrs,
  2212.   IN MIX  mix);
  2213.  
  2214. WIN32KAPI
  2215. BOOL
  2216. DDKAPI
  2217. EngTextOut(
  2218.   IN SURFOBJ  *pso,
  2219.   IN STROBJ  *pstro,
  2220.   IN FONTOBJ  *pfo,
  2221.   IN CLIPOBJ  *pco,
  2222.   IN RECTL  *prclExtra,
  2223.   IN RECTL  *prclOpaque,
  2224.   IN BRUSHOBJ  *pboFore,
  2225.   IN BRUSHOBJ  *pboOpaque,
  2226.   IN POINTL  *pptlOrg,
  2227.   IN MIX  mix);
  2228.  
  2229. WIN32KAPI
  2230. BOOL
  2231. DDKAPI
  2232. EngTransparentBlt(
  2233.   IN SURFOBJ  *psoDst,
  2234.   IN SURFOBJ  *psoSrc,
  2235.   IN CLIPOBJ  *pco,
  2236.   IN XLATEOBJ  *pxlo,
  2237.   IN RECTL  *prclDst,
  2238.   IN RECTL  *prclSrc,
  2239.   IN ULONG  iTransColor,
  2240.   IN ULONG  ulReserved);
  2241.  
  2242. WIN32KAPI
  2243. VOID
  2244. DDKAPI
  2245. EngUnicodeToMultiByteN(
  2246.   OUT PCHAR  MultiByteString,
  2247.   IN ULONG  MaxBytesInMultiByteString,
  2248.   OUT PULONG  BytesInMultiByteString,
  2249.   IN PWSTR  UnicodeString,
  2250.   IN ULONG  BytesInUnicodeString);
  2251.  
  2252. WIN32KAPI
  2253. VOID
  2254. DDKAPI
  2255. EngUnloadImage(
  2256.   IN HANDLE  hModule);
  2257.  
  2258. WIN32KAPI
  2259. BOOL
  2260. DDKAPI
  2261. EngUnlockDirectDrawSurface(
  2262.   IN PDD_SURFACE_LOCAL  pSurface);
  2263.  
  2264. WIN32KAPI
  2265. BOOL
  2266. DDKAPI
  2267. EngUnlockDriverObj(
  2268.   IN HDRVOBJ  hdo);
  2269.  
  2270. WIN32KAPI
  2271. VOID
  2272. DDKAPI
  2273. EngUnlockSurface(
  2274.   IN SURFOBJ  *pso);
  2275.  
  2276. WIN32KAPI
  2277. BOOL
  2278. DDKAPI
  2279. EngUnmapEvent(
  2280.   IN PEVENT  pEvent);
  2281.  
  2282. WIN32KAPI
  2283. BOOL
  2284. DDKAPI
  2285. EngUnmapFile(
  2286.   IN ULONG_PTR  iFile);
  2287.  
  2288. WIN32KAPI
  2289. VOID
  2290. DDKAPI
  2291. EngUnmapFontFile(
  2292.   ULONG_PTR  iFile);
  2293.  
  2294. WIN32KAPI
  2295. VOID
  2296. DDKAPI
  2297. EngUnmapFontFileFD(
  2298.   IN ULONG_PTR  iFile);
  2299.  
  2300. WIN32KAPI
  2301. VOID
  2302. DDKAPI
  2303. EngUnsecureMem(
  2304.   IN HANDLE  hSecure);
  2305.  
  2306. WIN32KAPI
  2307. BOOL
  2308. DDKAPI
  2309. EngWaitForSingleObject(
  2310.   IN PEVENT  pEvent,
  2311.   IN PLARGE_INTEGER  pTimeOut);
  2312.  
  2313. WIN32KAPI
  2314. INT
  2315. DDKAPI
  2316. EngWideCharToMultiByte(
  2317.   IN UINT  CodePage,
  2318.   IN LPWSTR  WideCharString,
  2319.   IN INT  BytesInWideCharString,
  2320.   OUT LPSTR  MultiByteString,
  2321.   IN INT  BytesInMultiByteString);
  2322.  
  2323. WIN32KAPI
  2324. BOOL
  2325. DDKAPI
  2326. EngWritePrinter(
  2327.   IN HANDLE  hPrinter,
  2328.   IN LPVOID  pBuf,
  2329.   IN DWORD  cbBuf,
  2330.   OUT LPDWORD  pcWritten);
  2331.  
  2332. WIN32KAPI
  2333. VOID
  2334. DDKAPI
  2335. FLOATOBJ_Add(
  2336.   IN OUT PFLOATOBJ  pf,
  2337.   IN PFLOATOBJ  pf1);
  2338.  
  2339. WIN32KAPI
  2340. VOID
  2341. DDKAPI
  2342. FLOATOBJ_AddFloat(
  2343.   IN OUT PFLOATOBJ  pf,
  2344.   IN FLOATL  f);
  2345.  
  2346. WIN32KAPI
  2347. VOID
  2348. DDKAPI
  2349. FLOATOBJ_AddLong(
  2350.   IN OUT PFLOATOBJ  pf,
  2351.   IN LONG  l);
  2352.  
  2353. WIN32KAPI
  2354. VOID
  2355. DDKAPI
  2356. FLOATOBJ_Div(
  2357.   IN OUT PFLOATOBJ  pf,
  2358.   IN PFLOATOBJ  pf1);
  2359.  
  2360. WIN32KAPI
  2361. VOID
  2362. DDKAPI
  2363. FLOATOBJ_DivFloat(
  2364.   IN OUT PFLOATOBJ  pf,
  2365.   IN FLOATL  f);
  2366.  
  2367. WIN32KAPI
  2368. VOID
  2369. DDKAPI
  2370. FLOATOBJ_DivLong(
  2371.   IN OUT PFLOATOBJ  pf,
  2372.   IN LONG  l);
  2373.  
  2374. WIN32KAPI
  2375. BOOL
  2376. DDKAPI
  2377. FLOATOBJ_Equal(
  2378.   IN PFLOATOBJ  pf,
  2379.   IN PFLOATOBJ  pf1);
  2380.  
  2381. WIN32KAPI
  2382. BOOL
  2383. DDKAPI
  2384. FLOATOBJ_EqualLong(
  2385.   IN PFLOATOBJ  pf,
  2386.   IN LONG  l);
  2387.  
  2388. WIN32KAPI
  2389. LONG
  2390. DDKAPI
  2391. FLOATOBJ_GetFloat(
  2392.   IN PFLOATOBJ  pf);
  2393.  
  2394. WIN32KAPI
  2395. LONG
  2396. DDKAPI
  2397. FLOATOBJ_GetLong(
  2398.   IN PFLOATOBJ  pf);
  2399.  
  2400. WIN32KAPI
  2401. BOOL
  2402. DDKAPI
  2403. FLOATOBJ_GreaterThan(
  2404.   IN PFLOATOBJ  pf,
  2405.   IN PFLOATOBJ  pf1);
  2406.  
  2407. WIN32KAPI
  2408. BOOL
  2409. DDKAPI
  2410. FLOATOBJ_GreaterThanLong(
  2411.   IN PFLOATOBJ  pf,
  2412.   IN LONG  l);
  2413.  
  2414. WIN32KAPI
  2415. BOOL
  2416. DDKAPI
  2417. FLOATOBJ_LessThan(
  2418.   IN PFLOATOBJ  pf,
  2419.   IN PFLOATOBJ  pf1);
  2420.  
  2421. WIN32KAPI
  2422. BOOL
  2423. DDKAPI
  2424. FLOATOBJ_LessThanLong(
  2425.   IN PFLOATOBJ  pf,
  2426.   IN LONG  l);
  2427.  
  2428. WIN32KAPI
  2429. VOID
  2430. DDKAPI
  2431. FLOATOBJ_Mul(
  2432.   IN OUT PFLOATOBJ  pf,
  2433.   IN PFLOATOBJ  pf1);
  2434.  
  2435. WIN32KAPI
  2436. VOID
  2437. DDKAPI
  2438. FLOATOBJ_MulFloat(
  2439.   IN OUT PFLOATOBJ  pf,
  2440.   IN FLOATL  f);
  2441.  
  2442. WIN32KAPI
  2443. VOID
  2444. DDKAPI
  2445. FLOATOBJ_MulLong(
  2446.   IN OUT PFLOATOBJ  pf,
  2447.   IN LONG  l);
  2448.  
  2449. WIN32KAPI
  2450. VOID
  2451. DDKAPI
  2452. FLOATOBJ_Neg(
  2453.   IN OUT PFLOATOBJ  pf);
  2454.  
  2455. WIN32KAPI
  2456. VOID
  2457. DDKAPI
  2458. FLOATOBJ_SetFloat(
  2459.   OUT PFLOATOBJ  pf,
  2460.   IN FLOATL  f);
  2461.  
  2462. WIN32KAPI
  2463. VOID
  2464. DDKAPI
  2465. FLOATOBJ_SetLong(
  2466.   OUT PFLOATOBJ  pf,
  2467.   IN LONG  l);
  2468.  
  2469. WIN32KAPI
  2470. VOID
  2471. DDKAPI
  2472. FLOATOBJ_Sub(
  2473.   IN OUT PFLOATOBJ  pf,
  2474.   IN PFLOATOBJ  pf1);
  2475.  
  2476. WIN32KAPI
  2477. VOID
  2478. DDKAPI
  2479. FLOATOBJ_SubFloat(
  2480.   IN OUT PFLOATOBJ  pf,
  2481.   IN FLOATL  f);
  2482.  
  2483. WIN32KAPI
  2484. VOID
  2485. DDKAPI
  2486. FLOATOBJ_SubLong(
  2487.   IN OUT PFLOATOBJ  pf,
  2488.   IN LONG  l);
  2489.  
  2490. WIN32KAPI
  2491. ULONG
  2492. DDKAPI
  2493. FONTOBJ_cGetAllGlyphHandles(
  2494.   IN FONTOBJ  *pfo,
  2495.   OUT HGLYPH  *phg);
  2496.  
  2497. WIN32KAPI
  2498. ULONG
  2499. DDKAPI
  2500. FONTOBJ_cGetGlyphs(
  2501.   IN FONTOBJ  *pfo,
  2502.   IN ULONG  iMode,
  2503.   IN ULONG  cGlyph,
  2504.   IN HGLYPH  *phg,
  2505.   OUT PVOID  *ppvGlyph);
  2506.  
  2507. WIN32KAPI
  2508. FD_GLYPHSET*
  2509. DDKAPI
  2510. FONTOBJ_pfdg(
  2511.   IN FONTOBJ  *pfo);
  2512.  
  2513. WIN32KAPI
  2514. IFIMETRICS*
  2515. DDKAPI
  2516. FONTOBJ_pifi(
  2517.   IN FONTOBJ  *pfo);
  2518.  
  2519. WIN32KAPI
  2520. PBYTE
  2521. DDKAPI
  2522. FONTOBJ_pjOpenTypeTablePointer(
  2523.   IN FONTOBJ  *pfo,
  2524.   IN ULONG  ulTag,
  2525.   OUT ULONG  *pcjTable);
  2526.  
  2527. WIN32KAPI
  2528. PFD_GLYPHATTR
  2529. DDKAPI 
  2530. FONTOBJ_pQueryGlyphAttrs(
  2531.   IN FONTOBJ  *pfo,
  2532.   IN ULONG  iMode);
  2533.  
  2534. WIN32KAPI
  2535. PVOID
  2536. DDKAPI
  2537. FONTOBJ_pvTrueTypeFontFile(
  2538.   IN FONTOBJ  *pfo,
  2539.   OUT ULONG  *pcjFile);
  2540.  
  2541. WIN32KAPI
  2542. LPWSTR
  2543. DDKAPI
  2544. FONTOBJ_pwszFontFilePaths(
  2545.   IN FONTOBJ  *pfo,
  2546.   OUT ULONG  *pcwc);
  2547.  
  2548. WIN32KAPI
  2549. XFORMOBJ*
  2550. DDKAPI
  2551. FONTOBJ_pxoGetXform(
  2552.   IN FONTOBJ  *pfo);
  2553.  
  2554. WIN32KAPI
  2555. VOID
  2556. DDKAPI
  2557. FONTOBJ_vGetInfo(
  2558.   IN FONTOBJ  *pfo,
  2559.   IN ULONG  cjSize,
  2560.   OUT FONTINFO  *pfi);
  2561.  
  2562. WIN32KAPI
  2563. FLATPTR
  2564. DDKAPI
  2565. HeapVidMemAllocAligned(
  2566.   IN LPVIDMEM  lpVidMem,
  2567.   IN DWORD  dwWidth,
  2568.   IN DWORD  dwHeight,
  2569.   IN LPSURFACEALIGNMENT  lpAlignment,
  2570.   OUT LPLONG  lpNewPitch);
  2571.  
  2572. WIN32KAPI
  2573. LONG
  2574. DDKAPI
  2575. HT_ComputeRGBGammaTable(
  2576.   IN USHORT  GammaTableEntries,
  2577.   IN USHORT  GammaTableType,
  2578.   IN USHORT  RedGamma,
  2579.   IN USHORT  GreenGamma,
  2580.   IN USHORT  BlueGamma,
  2581.   OUT LPBYTE  pGammaTable);
  2582.  
  2583. WIN32KAPI
  2584. LONG
  2585. DDKAPI
  2586. HT_Get8BPPFormatPalette(
  2587.   OUT LPPALETTEENTRY  pPaletteEntry,
  2588.   IN USHORT  RedGamma,
  2589.   IN USHORT  GreenGamma,
  2590.   IN USHORT  BlueGamma);
  2591.  
  2592. WIN32KAPI
  2593. LONG
  2594. DDKAPI
  2595. HT_Get8BPPMaskPalette(
  2596.   IN OUT LPPALETTEENTRY  pPaletteEntry,
  2597.   IN BOOL  Use8BPPMaskPal,
  2598.   IN BYTE  CMYMask,
  2599.   IN USHORT  RedGamma,
  2600.   IN USHORT  GreenGamma,
  2601.   IN USHORT  BlueGamma);
  2602.  
  2603. WIN32KAPI
  2604. LONG
  2605. DDKAPI
  2606. HTUI_DeviceColorAdjustment(
  2607.   IN LPSTR  pDeviceName,
  2608.   OUT PDEVHTADJDATA  pDevHTAdjData);
  2609.  
  2610. WIN32KAPI
  2611. ULONG
  2612. DDKAPI
  2613. PALOBJ_cGetColors(
  2614.   IN PALOBJ  *ppalo,
  2615.   IN ULONG  iStart,
  2616.   IN ULONG  cColors,
  2617.   OUT ULONG  *pulColors);
  2618.  
  2619. WIN32KAPI
  2620. BOOL
  2621. DDKAPI
  2622. PATHOBJ_bCloseFigure(
  2623.   IN PATHOBJ  *ppo);
  2624.  
  2625. WIN32KAPI
  2626. BOOL
  2627. DDKAPI
  2628. PATHOBJ_bEnum(
  2629.   IN PATHOBJ  *ppo,
  2630.   OUT PATHDATA  *ppd);
  2631.  
  2632. WIN32KAPI
  2633. BOOL
  2634. DDKAPI
  2635. PATHOBJ_bEnumClipLines(
  2636.   IN PATHOBJ  *ppo,
  2637.   IN ULONG  cb,
  2638.   OUT CLIPLINE  *pcl);
  2639.  
  2640. WIN32KAPI
  2641. BOOL
  2642. DDKAPI
  2643. PATHOBJ_bMoveTo(
  2644.   IN PATHOBJ  *ppo,
  2645.   IN POINTFIX  ptfx);
  2646.  
  2647. WIN32KAPI
  2648. BOOL
  2649. DDKAPI
  2650. PATHOBJ_bPolyBezierTo(
  2651.   IN PATHOBJ  *ppo,
  2652.   IN POINTFIX  *pptfx,
  2653.   IN ULONG  cptfx);
  2654.  
  2655. WIN32KAPI
  2656. BOOL
  2657. DDKAPI
  2658. PATHOBJ_bPolyLineTo(
  2659.   IN PATHOBJ  *ppo,
  2660.   IN POINTFIX  *pptfx,
  2661.   IN ULONG  cptfx);
  2662.  
  2663. WIN32KAPI
  2664. VOID
  2665. DDKAPI
  2666. PATHOBJ_vEnumStart(
  2667.   IN PATHOBJ  *ppo);
  2668.  
  2669. WIN32KAPI
  2670. VOID
  2671. DDKAPI
  2672. PATHOBJ_vEnumStartClipLines(
  2673.   IN PATHOBJ  *ppo,
  2674.   IN CLIPOBJ  *pco,
  2675.   IN SURFOBJ  *pso,
  2676.   IN LINEATTRS  *pla);
  2677.  
  2678. WIN32KAPI
  2679. VOID
  2680. DDKAPI
  2681. PATHOBJ_vGetBounds(
  2682.   IN PATHOBJ  *ppo,
  2683.   OUT PRECTFX  prectfx);
  2684.  
  2685. WIN32KAPI
  2686. BOOL
  2687. DDKAPI
  2688. STROBJ_bEnum(
  2689.   IN STROBJ  *pstro,
  2690.   OUT ULONG  *pc,
  2691.   OUT PGLYPHPOS  *ppgpos);
  2692.  
  2693. WIN32KAPI
  2694. BOOL
  2695. DDKAPI
  2696. STROBJ_bEnumPositionsOnly(
  2697.   IN STROBJ  *pstro,
  2698.   OUT ULONG  *pc,
  2699.   OUT PGLYPHPOS  *ppgpos);
  2700.  
  2701. WIN32KAPI
  2702. BOOL
  2703. DDKAPI
  2704. STROBJ_bGetAdvanceWidths(
  2705.   IN STROBJ  *pso,
  2706.   IN ULONG  iFirst,
  2707.   IN ULONG  c,
  2708.   OUT POINTQF  *pptqD);
  2709.  
  2710. WIN32KAPI
  2711. DWORD
  2712. DDKAPI
  2713. STROBJ_dwGetCodePage(
  2714.   IN STROBJ  *pstro);
  2715.  
  2716. WIN32KAPI
  2717. FIX
  2718. DDKAPI
  2719. STROBJ_fxBreakExtra(
  2720.   IN STROBJ  *pstro);
  2721.  
  2722. WIN32KAPI
  2723. FIX
  2724. DDKAPI
  2725. STROBJ_fxCharacterExtra(
  2726.   IN STROBJ  *pstro);
  2727.  
  2728. WIN32KAPI
  2729. VOID
  2730. DDKAPI
  2731. STROBJ_vEnumStart(
  2732.   IN STROBJ  *pstro);
  2733.  
  2734. WIN32KAPI
  2735. VOID
  2736. DDKAPI
  2737. VidMemFree(
  2738.   IN LPVMEMHEAP  pvmh,
  2739.   IN FLATPTR  ptr);
  2740.  
  2741. WIN32KAPI
  2742. BOOL
  2743. DDKAPI
  2744. WNDOBJ_bEnum(
  2745.   IN WNDOBJ  *pwo,
  2746.   IN ULONG  cj,
  2747.   OUT ULONG  *pul);
  2748.  
  2749. WIN32KAPI
  2750. ULONG
  2751. DDKAPI
  2752. WNDOBJ_cEnumStart(
  2753.   IN WNDOBJ  *pwo,
  2754.   IN ULONG  iType,
  2755.   IN ULONG  iDirection,
  2756.   IN ULONG  cLimit);
  2757.  
  2758. WIN32KAPI
  2759. VOID
  2760. DDKAPI
  2761. WNDOBJ_vSetConsumer(
  2762.   IN WNDOBJ  *pwo,
  2763.   IN PVOID  pvConsumer);
  2764.  
  2765. /* XFORMOBJ_bApplyXform.iMode constants */
  2766. #define XF_LTOL                           0L
  2767. #define XF_INV_LTOL                       1L
  2768. #define XF_LTOFX                          2L
  2769. #define XF_INV_FXTOL                      3L
  2770.  
  2771. WIN32KAPI
  2772. BOOL
  2773. DDKAPI
  2774. XFORMOBJ_bApplyXform(
  2775.   IN XFORMOBJ  *pxo,
  2776.   IN ULONG  iMode,
  2777.   IN ULONG  cPoints,
  2778.   IN PVOID  pvIn,
  2779.   OUT PVOID  pvOut);
  2780.  
  2781. WIN32KAPI
  2782. ULONG
  2783. DDKAPI
  2784. XFORMOBJ_iGetFloatObjXform(
  2785.   IN XFORMOBJ  *pxo,
  2786.   OUT FLOATOBJ_XFORM  *pxfo);
  2787.  
  2788. WIN32KAPI
  2789. ULONG
  2790. DDKAPI
  2791. XFORMOBJ_iGetXform(
  2792.   IN XFORMOBJ  *pxo,
  2793.   OUT XFORML  *pxform);
  2794.  
  2795. /* XLATEOBJ_cGetPalette.iPal constants */
  2796. #define XO_SRCPALETTE                     1
  2797. #define XO_DESTPALETTE                    2
  2798. #define XO_DESTDCPALETTE                  3
  2799. #define XO_SRCBITFIELDS                   4
  2800. #define XO_DESTBITFIELDS                  5
  2801.  
  2802. WIN32KAPI
  2803. ULONG
  2804. DDKAPI
  2805. XLATEOBJ_cGetPalette(
  2806.   IN XLATEOBJ  *pxlo,
  2807.   IN ULONG  iPal,
  2808.   IN ULONG  cPal,
  2809.   OUT ULONG  *pPal);
  2810.  
  2811. WIN32KAPI
  2812. HANDLE
  2813. DDKAPI
  2814. XLATEOBJ_hGetColorTransform(
  2815.   IN XLATEOBJ  *pxlo);
  2816.  
  2817. WIN32KAPI
  2818. ULONG
  2819. DDKAPI
  2820. XLATEOBJ_iXlate(
  2821.   IN XLATEOBJ  *pxlo,
  2822.   IN ULONG  iColor);
  2823.  
  2824. WIN32KAPI
  2825. ULONG*
  2826. DDKAPI
  2827. XLATEOBJ_piVector(
  2828.   IN XLATEOBJ  *pxlo);
  2829.  
  2830.  
  2831.  
  2832. /* Graphics Driver Functions */
  2833.  
  2834. BOOL
  2835. DDKAPI
  2836. DrvAlphaBlend(
  2837.   IN SURFOBJ  *psoDest,
  2838.   IN SURFOBJ  *psoSrc,
  2839.   IN CLIPOBJ  *pco,
  2840.   IN XLATEOBJ  *pxlo,
  2841.   IN RECTL  *prclDest,
  2842.   IN RECTL  *prclSrc,
  2843.   IN BLENDOBJ  *pBlendObj);
  2844.  
  2845. BOOL
  2846. DDKAPI
  2847. DrvAssertMode(
  2848.   IN DHPDEV  dhpdev,
  2849.   IN BOOL  bEnable);
  2850.  
  2851. BOOL
  2852. DDKAPI
  2853. DrvBitBlt(
  2854.   IN SURFOBJ  *psoTrg,
  2855.   IN SURFOBJ  *psoSrc,
  2856.   IN SURFOBJ  *psoMask,
  2857.   IN CLIPOBJ  *pco,
  2858.   IN XLATEOBJ  *pxlo,
  2859.   IN RECTL  *prclTrg,
  2860.   IN POINTL  *pptlSrc,
  2861.   IN POINTL  *pptlMask,
  2862.   IN BRUSHOBJ  *pbo,
  2863.   IN POINTL  *pptlBrush,
  2864.   IN ROP4  rop4);
  2865.  
  2866. VOID
  2867. DDKAPI
  2868. DrvCompletePDEV(
  2869.   IN DHPDEV  dhpdev,
  2870.   IN HDEV  hdev);
  2871.  
  2872. BOOL
  2873. DDKAPI
  2874. DrvCopyBits(
  2875.   IN SURFOBJ  *psoDest,
  2876.   IN SURFOBJ  *psoSrc,
  2877.   IN CLIPOBJ  *pco,
  2878.   IN XLATEOBJ  *pxlo,
  2879.   IN RECTL  *prclDest,
  2880.   IN POINTL  *pptlSrc);
  2881.  
  2882. HBITMAP
  2883. DDKAPI
  2884. DrvCreateDeviceBitmap(
  2885.   IN DHPDEV  dhpdev,
  2886.   IN SIZEL  sizl,
  2887.   IN ULONG  iFormat);
  2888.  
  2889. VOID
  2890. DDKAPI
  2891. DrvDeleteDeviceBitmap(
  2892.   IN DHSURF  dhsurf);
  2893.  
  2894. HBITMAP
  2895. DDKAPI
  2896. DrvDeriveSurface(
  2897.   DD_DIRECTDRAW_GLOBAL  *pDirectDraw,
  2898.   DD_SURFACE_LOCAL  *pSurface);
  2899.  
  2900. LONG
  2901. DDKAPI
  2902. DrvDescribePixelFormat(
  2903.   IN DHPDEV  dhpdev,
  2904.   IN LONG  iPixelFormat,
  2905.   IN ULONG  cjpfd,
  2906.   OUT PIXELFORMATDESCRIPTOR  *ppfd);
  2907.  
  2908. VOID
  2909. DDKAPI
  2910. DrvDestroyFont(
  2911.   IN FONTOBJ  *pfo);
  2912.  
  2913. VOID
  2914. DDKAPI
  2915. DrvDisableDriver(
  2916.   VOID);
  2917.  
  2918. VOID
  2919. DDKAPI
  2920. DrvDisablePDEV(
  2921.   IN DHPDEV  dhpdev);
  2922.  
  2923. VOID
  2924. DDKAPI
  2925. DrvDisableSurface(
  2926.   IN DHPDEV  dhpdev);
  2927.  
  2928. #define DM_DEFAULT                        0x00000001
  2929. #define DM_MONOCHROME                     0x00000002
  2930.  
  2931. ULONG
  2932. DDKAPI
  2933. DrvDitherColor(
  2934.   IN DHPDEV  dhpdev,
  2935.   IN ULONG  iMode,
  2936.   IN ULONG  rgb,
  2937.   OUT ULONG  *pul);
  2938.  
  2939. ULONG
  2940. DDKAPI
  2941. DrvDrawEscape(
  2942.   IN SURFOBJ  *pso,
  2943.   IN ULONG  iEsc,
  2944.   IN CLIPOBJ  *pco,
  2945.   IN RECTL  *prcl,
  2946.   IN ULONG  cjIn,
  2947.   IN PVOID  pvIn);
  2948.  
  2949. BOOL
  2950. DDKAPI
  2951. DrvEnableDriver(
  2952.   IN ULONG  iEngineVersion,
  2953.   IN ULONG  cj,
  2954.   OUT DRVENABLEDATA  *pded);
  2955.  
  2956. DHPDEV
  2957. DDKAPI
  2958. DrvEnablePDEV(
  2959.   IN DEVMODEW  *pdm,
  2960.   IN LPWSTR  pwszLogAddress,
  2961.   IN ULONG  cPat,
  2962.   OUT HSURF  *phsurfPatterns,
  2963.   IN ULONG  cjCaps,
  2964.   OUT ULONG  *pdevcaps,
  2965.   IN ULONG  cjDevInfo,
  2966.   OUT DEVINFO  *pdi,
  2967.   IN HDEV  hdev,
  2968.   IN LPWSTR  pwszDeviceName,
  2969.   IN HANDLE  hDriver);
  2970.  
  2971. HSURF
  2972. DDKAPI
  2973. DrvEnableSurface(
  2974.   IN DHPDEV  dhpdev);
  2975.  
  2976. /* DrvEndDoc.fl constants */
  2977. #define ED_ABORTDOC                       0x00000001
  2978.  
  2979. BOOL
  2980. DDKAPI
  2981. DrvEndDoc(
  2982.   IN SURFOBJ  *pso,
  2983.   IN FLONG  fl);
  2984.  
  2985. ULONG
  2986. DDKAPI
  2987. DrvEscape(
  2988.   IN SURFOBJ  *pso,
  2989.   IN ULONG  iEsc,
  2990.   IN ULONG  cjIn,
  2991.   IN PVOID  pvIn,
  2992.   IN ULONG  cjOut,
  2993.   OUT PVOID  pvOut);
  2994.  
  2995. BOOL
  2996. DDKAPI
  2997. DrvFillPath(
  2998.   IN SURFOBJ  *pso,
  2999.   IN PATHOBJ  *ppo,
  3000.   IN CLIPOBJ  *pco,
  3001.   IN BRUSHOBJ  *pbo,
  3002.   IN POINTL  *pptlBrushOrg,
  3003.   IN MIX  mix,
  3004.   IN FLONG  flOptions);
  3005.  
  3006. ULONG
  3007. DDKAPI
  3008. DrvFontManagement(
  3009.   IN SURFOBJ  *pso,
  3010.   IN FONTOBJ  *pfo,
  3011.   IN ULONG  iMode,
  3012.   IN ULONG  cjIn,
  3013.   IN PVOID  pvIn,
  3014.   IN ULONG  cjOut,
  3015.   OUT PVOID  pvOut);
  3016.  
  3017. VOID
  3018. DDKAPI
  3019. DrvFree(
  3020.   IN PVOID  pv,
  3021.   IN ULONG_PTR  id);
  3022.  
  3023. /* DrvGetGlyphMode return values */
  3024. #define FO_HGLYPHS                        0L
  3025. #define FO_GLYPHBITS                      1L
  3026. #define FO_PATHOBJ                        2L
  3027.  
  3028. ULONG
  3029. DDKAPI
  3030. DrvGetGlyphMode(
  3031.   IN DHPDEV  dhpdev,
  3032.   IN FONTOBJ  *pfo);
  3033.  
  3034. ULONG
  3035. DDKAPI
  3036. DrvGetModes(
  3037.   IN HANDLE  hDriver,
  3038.   IN ULONG  cjSize,
  3039.   OUT DEVMODEW  *pdm);
  3040.  
  3041. PVOID
  3042. DDKAPI
  3043. DrvGetTrueTypeFile(
  3044.   IN ULONG_PTR  iFile,
  3045.   IN ULONG  *pcj);
  3046.  
  3047. BOOL
  3048. DDKAPI
  3049. DrvGradientFill(
  3050.   IN SURFOBJ  *psoDest,
  3051.   IN CLIPOBJ  *pco,
  3052.   IN XLATEOBJ  *pxlo,
  3053.   IN TRIVERTEX  *pVertex,
  3054.   IN ULONG  nVertex,
  3055.   IN PVOID  pMesh,
  3056.   IN ULONG  nMesh,
  3057.   IN RECTL  *prclExtents,
  3058.   IN POINTL  *pptlDitherOrg,
  3059.   IN ULONG  ulMode);
  3060.  
  3061. BOOL
  3062. DDKAPI
  3063. DrvIcmCheckBitmapBits(
  3064.   IN DHPDEV  dhpdev,
  3065.   IN HANDLE  hColorTransform,
  3066.   IN SURFOBJ  *pso,
  3067.   OUT PBYTE  paResults);
  3068.  
  3069. HANDLE
  3070. DDKAPI
  3071. DrvIcmCreateColorTransform(
  3072.   IN DHPDEV  dhpdev,
  3073.   IN LPLOGCOLORSPACEW  pLogColorSpace,
  3074.   IN PVOID  pvSourceProfile,
  3075.   IN ULONG  cjSourceProfile,
  3076.   IN PVOID  pvDestProfile,
  3077.   IN ULONG  cjDestProfile,
  3078.   IN PVOID  pvTargetProfile,
  3079.   IN ULONG  cjTargetProfile,
  3080.   IN DWORD  dwReserved);
  3081.  
  3082. BOOL
  3083. DDKAPI
  3084. DrvIcmDeleteColorTransform(
  3085.   IN DHPDEV  dhpdev,
  3086.   IN HANDLE  hcmXform);
  3087.  
  3088. /* DrvIcmSetDeviceGammaRamp.iFormat constants */
  3089. #define IGRF_RGB_256BYTES                 0x00000000
  3090. #define IGRF_RGB_256WORDS                 0x00000001
  3091.  
  3092. BOOL
  3093. DDKAPI
  3094. DrvIcmSetDeviceGammaRamp(
  3095.   IN DHPDEV  dhpdev,
  3096.   IN ULONG  iFormat,
  3097.   IN LPVOID  lpRamp);
  3098.  
  3099. BOOL
  3100. DDKAPI
  3101. DrvLineTo(
  3102.   SURFOBJ  *pso,
  3103.   CLIPOBJ  *pco,
  3104.   BRUSHOBJ  *pbo,
  3105.   LONG  x1,
  3106.   LONG  y1,
  3107.   LONG  x2,
  3108.   LONG  y2,
  3109.   RECTL  *prclBounds,
  3110.   MIX  mix);
  3111.  
  3112. ULONG_PTR
  3113. DDKAPI
  3114. DrvLoadFontFile(
  3115.   ULONG  cFiles,
  3116.   ULONG_PTR  *piFile,
  3117.   PVOID  *ppvView,
  3118.   ULONG  *pcjView,
  3119.   DESIGNVECTOR  *pdv,
  3120.   ULONG  ulLangID,
  3121.   ULONG  ulFastCheckSum);
  3122.  
  3123. VOID
  3124. DDKAPI
  3125. DrvMovePointer(
  3126.   IN SURFOBJ  *pso,
  3127.   IN LONG  x,
  3128.   IN LONG  y,
  3129.   IN RECTL  *prcl);
  3130.  
  3131. BOOL
  3132. DDKAPI
  3133. DrvNextBand(
  3134.   IN SURFOBJ  *pso,
  3135.   IN POINTL  *pptl);
  3136.  
  3137. VOID
  3138. DDKAPI
  3139. DrvNotify(
  3140.   IN SURFOBJ  *pso,
  3141.   IN ULONG  iType,
  3142.   IN PVOID  pvData);
  3143.  
  3144. BOOL
  3145. DDKAPI
  3146. DrvOffset(
  3147.   IN SURFOBJ  *pso,
  3148.   IN LONG  x,
  3149.   IN LONG  y,
  3150.   IN FLONG  flReserved);
  3151.  
  3152. BOOL
  3153. DDKAPI
  3154. DrvPaint(
  3155.   IN SURFOBJ  *pso,
  3156.   IN CLIPOBJ  *pco,
  3157.   IN BRUSHOBJ  *pbo,
  3158.   IN POINTL  *pptlBrushOrg,
  3159.   IN MIX  mix);
  3160.  
  3161. BOOL
  3162. DDKAPI
  3163. DrvPlgBlt(
  3164.   IN SURFOBJ  *psoTrg,
  3165.   IN SURFOBJ  *psoSrc,
  3166.   IN SURFOBJ  *psoMsk,
  3167.   IN CLIPOBJ  *pco,
  3168.   IN XLATEOBJ  *pxlo,
  3169.   IN COLORADJUSTMENT  *pca,
  3170.   IN POINTL  *pptlBrushOrg,
  3171.   IN POINTFIX  *pptfx,
  3172.   IN RECTL  *prcl,
  3173.   IN POINTL  *pptl,
  3174.   IN ULONG  iMode);
  3175.  
  3176. /* DrvQueryAdvanceWidths.iMode constants */
  3177. #define QAW_GETWIDTHS                     0
  3178. #define QAW_GETEASYWIDTHS                 1
  3179.  
  3180. BOOL
  3181. DDKAPI
  3182. DrvQueryAdvanceWidths(
  3183.   IN DHPDEV  dhpdev,
  3184.   IN FONTOBJ  *pfo,
  3185.   IN ULONG  iMode,
  3186.   IN HGLYPH  *phg,
  3187.   OUT PVOID  pvWidths,
  3188.   IN ULONG  cGlyphs);
  3189.  
  3190. /* DrvQueryDeviceSupport.iType constants */
  3191. #define QDS_CHECKJPEGFORMAT               0x00000000
  3192. #define QDS_CHECKPNGFORMAT                0x00000001
  3193.  
  3194. BOOL
  3195. DDKAPI
  3196. DrvQueryDeviceSupport(
  3197.   SURFOBJ  *pso,
  3198.   XLATEOBJ  *pxlo,
  3199.   XFORMOBJ  *pxo,
  3200.   ULONG  iType,
  3201.   ULONG  cjIn,
  3202.   PVOID  pvIn,
  3203.   ULONG  cjOut,
  3204.   PVOID  pvOut);
  3205.  
  3206. /* DrvQueryDriverInfo.dwMode constants */
  3207. #define DRVQUERY_USERMODE                 0x00000001
  3208.  
  3209. BOOL
  3210. DDKAPI
  3211. DrvQueryDriverInfo(
  3212.   DWORD  dwMode,
  3213.   PVOID  pBuffer,
  3214.   DWORD  cbBuf,
  3215.   PDWORD  pcbNeeded);
  3216.  
  3217. PIFIMETRICS
  3218. DDKAPI
  3219. DrvQueryFont(
  3220.   IN DHPDEV  dhpdev,
  3221.   IN ULONG_PTR  iFile,
  3222.   IN ULONG  iFace,
  3223.   IN ULONG_PTR  *pid);
  3224.  
  3225. /* DrvQueryFontCaps.pulCaps constants */
  3226. #define QC_OUTLINES                       0x00000001
  3227. #define QC_1BIT                           0x00000002
  3228. #define QC_4BIT                           0x00000004
  3229.  
  3230. #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
  3231.  
  3232. LONG
  3233. DDKAPI
  3234. DrvQueryFontCaps(
  3235.   IN ULONG  culCaps,
  3236.   OUT ULONG  *pulCaps);
  3237.  
  3238. /* DrvQueryFontData.iMode constants */
  3239. #define QFD_GLYPHANDBITMAP                1L
  3240. #define QFD_GLYPHANDOUTLINE               2L
  3241. #define QFD_MAXEXTENTS                    3L
  3242. #define QFD_TT_GLYPHANDBITMAP             4L
  3243. #define QFD_TT_GRAY1_BITMAP               5L
  3244. #define QFD_TT_GRAY2_BITMAP               6L
  3245. #define QFD_TT_GRAY4_BITMAP               8L
  3246. #define QFD_TT_GRAY8_BITMAP               9L
  3247.  
  3248. #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
  3249.  
  3250. LONG
  3251. DDKAPI
  3252. DrvQueryFontData(
  3253.   IN DHPDEV  dhpdev,
  3254.   IN FONTOBJ  *pfo,
  3255.   IN ULONG  iMode,
  3256.   IN HGLYPH  hg,
  3257.   IN OUT GLYPHDATA  *pgd,
  3258.   IN OUT PVOID  pv,
  3259.   IN ULONG  cjSize);
  3260.  
  3261. /* DrvQueryFontFile.ulMode constants */
  3262. #define QFF_DESCRIPTION                   0x00000001
  3263. #define QFF_NUMFACES                      0x00000002
  3264.  
  3265. LONG
  3266. DDKAPI
  3267. DrvQueryFontFile(
  3268.   IN ULONG_PTR  iFile,
  3269.   IN ULONG  ulMode,
  3270.   IN ULONG  cjBuf,
  3271.   IN ULONG  *pulBuf);
  3272.  
  3273. /* DrvQueryFontTree.iMode constants */
  3274. #define QFT_UNICODE                       0L
  3275. #define QFT_LIGATURES                     1L
  3276. #define QFT_KERNPAIRS                     2L
  3277. #define QFT_GLYPHSET                      3L
  3278.  
  3279. PVOID
  3280. DDKAPI
  3281. DrvQueryFontTree(
  3282.   IN DHPDEV  dhpdev,
  3283.   IN ULONG_PTR  iFile,
  3284.   IN ULONG  iFace,
  3285.   IN ULONG  iMode,
  3286.   IN ULONG_PTR  *pid);
  3287.  
  3288. PFD_GLYPHATTR
  3289. DDKAPI
  3290. DrvQueryGlyphAttrs(
  3291.   IN FONTOBJ  *pfo,
  3292.   IN ULONG  iMode);
  3293.  
  3294. ULONG
  3295. DDKAPI
  3296. DrvQueryPerBandInfo(
  3297.   IN SURFOBJ  *pso,
  3298.   IN OUT PERBANDINFO  *pbi);
  3299.  
  3300. /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
  3301. #define TTO_METRICS_ONLY                  0x00000001
  3302. #define TTO_QUBICS                        0x00000002
  3303. #define TTO_UNHINTED                      0x00000004
  3304.  
  3305. LONG
  3306. DDKAPI
  3307. DrvQueryTrueTypeOutline(
  3308.   IN DHPDEV  dhpdev,
  3309.   IN FONTOBJ  *pfo,
  3310.   IN HGLYPH  hglyph,
  3311.   IN BOOL  bMetricsOnly,
  3312.   IN GLYPHDATA  *pgldt,
  3313.   IN ULONG  cjBuf,
  3314.   OUT TTPOLYGONHEADER  *ppoly);
  3315.  
  3316. LONG
  3317. DDKAPI
  3318. DrvQueryTrueTypeTable(
  3319.   IN ULONG_PTR  iFile,
  3320.   IN ULONG  ulFont,
  3321.   IN ULONG  ulTag,
  3322.   IN PTRDIFF  dpStart,
  3323.   IN ULONG  cjBuf,
  3324.   OUT BYTE  *pjBuf,
  3325.   OUT PBYTE  *ppjTable,
  3326.   OUT ULONG *pcjTable);
  3327.  
  3328. /* DrvRealizeBrush.iHatch constants */
  3329. #define RB_DITHERCOLOR                    0x80000000L
  3330.  
  3331. #define HS_DDI_MAX                        6
  3332.  
  3333. BOOL
  3334. DDKAPI
  3335. DrvRealizeBrush(
  3336.   IN BRUSHOBJ  *pbo,
  3337.   IN SURFOBJ  *psoTarget,
  3338.   IN SURFOBJ  *psoPattern,
  3339.   IN SURFOBJ  *psoMask,
  3340.   IN XLATEOBJ  *pxlo,
  3341.   IN ULONG  iHatch);
  3342.  
  3343. /* DrvResetDevice return values */
  3344. #define DRD_SUCCESS                       0
  3345. #define DRD_ERROR                         1
  3346.  
  3347. ULONG
  3348. DDKAPI
  3349. DrvResetDevice(
  3350.   IN DHPDEV dhpdev,
  3351.   IN PVOID Reserved);
  3352.  
  3353. BOOL
  3354. DDKAPI
  3355. DrvResetPDEV(
  3356.   DHPDEV  dhpdevOld,
  3357.   DHPDEV  dhpdevNew);
  3358.  
  3359. /* DrvSaveScreenBits.iMode constants */
  3360. #define SS_SAVE                           0x00000000
  3361. #define SS_RESTORE                        0x00000001
  3362. #define SS_FREE                           0x00000002
  3363.  
  3364. ULONG_PTR
  3365. DDKAPI
  3366. DrvSaveScreenBits(
  3367.   IN SURFOBJ  *pso,
  3368.   IN ULONG  iMode,
  3369.   IN ULONG_PTR  ident,
  3370.   IN RECTL  *prcl);
  3371.  
  3372. BOOL
  3373. DDKAPI
  3374. DrvSendPage(
  3375.   IN SURFOBJ  *pso);
  3376.  
  3377. BOOL
  3378. DDKAPI
  3379. DrvSetPalette(
  3380.   IN DHPDEV  dhpdev,
  3381.   IN PALOBJ  *ppalo,
  3382.   IN FLONG  fl,
  3383.   IN ULONG  iStart,
  3384.   IN ULONG  cColors);
  3385.  
  3386. BOOL
  3387. DDKAPI
  3388. DrvSetPixelFormat(
  3389.   IN SURFOBJ  *pso,
  3390.   IN LONG  iPixelFormat,
  3391.   IN HWND  hwnd);
  3392.  
  3393. /* DrvSetPointerShape return values */
  3394. #define SPS_ERROR                         0x00000000
  3395. #define SPS_DECLINE                       0x00000001
  3396. #define SPS_ACCEPT_NOEXCLUDE              0x00000002
  3397. #define SPS_ACCEPT_EXCLUDE                0x00000003
  3398. #define SPS_ACCEPT_SYNCHRONOUS            0x00000004
  3399.  
  3400. /* DrvSetPointerShape.fl constants */
  3401. #define SPS_CHANGE                        0x00000001L
  3402. #define SPS_ASYNCCHANGE                   0x00000002L
  3403. #define SPS_ANIMATESTART                  0x00000004L
  3404. #define SPS_ANIMATEUPDATE                 0x00000008L
  3405. #define SPS_ALPHA                         0x00000010L
  3406. #define SPS_LENGTHMASK                    0x00000F00L
  3407. #define SPS_FREQMASK                      0x000FF000L
  3408.  
  3409. ULONG
  3410. DDKAPI
  3411. DrvSetPointerShape(
  3412.   IN SURFOBJ  *pso,
  3413.   IN SURFOBJ  *psoMask,
  3414.   IN SURFOBJ  *psoColor,
  3415.   IN XLATEOBJ  *pxlo,
  3416.   IN LONG  xHot,
  3417.   IN LONG  yHot,
  3418.   IN LONG  x,
  3419.   IN LONG  y,
  3420.   IN RECTL  *prcl,
  3421.   IN FLONG  fl);
  3422.  
  3423. BOOL
  3424. DDKAPI
  3425. DrvStartBanding(
  3426.   IN SURFOBJ  *pso,
  3427.   IN POINTL  *pptl);
  3428.  
  3429. BOOL
  3430. DDKAPI
  3431. DrvStartDoc(
  3432.   IN SURFOBJ  *pso,
  3433.   IN LPWSTR  pwszDocName,
  3434.   IN DWORD  dwJobId);
  3435.  
  3436. BOOL
  3437. DDKAPI
  3438. DrvStartPage(
  3439.   IN SURFOBJ  *pso);
  3440.  
  3441. BOOL
  3442. DDKAPI
  3443. DrvStretchBlt(
  3444.   IN SURFOBJ  *psoDest,
  3445.   IN SURFOBJ  *psoSrc,
  3446.   IN SURFOBJ  *psoMask,
  3447.   IN CLIPOBJ  *pco,
  3448.   IN XLATEOBJ  *pxlo,
  3449.   IN COLORADJUSTMENT  *pca,
  3450.   IN POINTL  *pptlHTOrg,
  3451.   IN RECTL  *prclDest,
  3452.   IN RECTL  *prclSrc,
  3453.   IN POINTL  *pptlMask,
  3454.   IN ULONG  iMode);
  3455.  
  3456. BOOL
  3457. DDKAPI
  3458. DrvStretchBltROP(
  3459.   IN SURFOBJ  *psoDest,
  3460.   IN SURFOBJ  *psoSrc,
  3461.   IN SURFOBJ  *psoMask,
  3462.   IN CLIPOBJ  *pco,
  3463.   IN XLATEOBJ  *pxlo,
  3464.   IN COLORADJUSTMENT  *pca,
  3465.   IN POINTL  *pptlHTOrg,
  3466.   IN RECTL  *prclDest,
  3467.   IN RECTL  *prclSrc,
  3468.   IN POINTL  *pptlMask,
  3469.   IN ULONG  iMode,
  3470.   IN BRUSHOBJ  *pbo,
  3471.   IN DWORD  rop4);
  3472.  
  3473. BOOL
  3474. DDKAPI
  3475. DrvStrokeAndFillPath(
  3476.   IN SURFOBJ  *pso,
  3477.   IN PATHOBJ  *ppo,
  3478.   IN CLIPOBJ  *pco,
  3479.   IN XFORMOBJ  *pxo,
  3480.   IN BRUSHOBJ  *pboStroke,
  3481.   IN LINEATTRS  *plineattrs,
  3482.   IN BRUSHOBJ  *pboFill,
  3483.   IN POINTL  *pptlBrushOrg,
  3484.   IN MIX  mixFill,
  3485.   IN FLONG  flOptions);
  3486.  
  3487. BOOL
  3488. DDKAPI
  3489. DrvStrokePath(
  3490.   IN SURFOBJ  *pso,
  3491.   IN PATHOBJ  *ppo,
  3492.   IN CLIPOBJ  *pco,
  3493.   IN XFORMOBJ  *pxo,
  3494.   IN BRUSHOBJ  *pbo,
  3495.   IN POINTL  *pptlBrushOrg,
  3496.   IN LINEATTRS  *plineattrs,
  3497.   IN MIX  mix);
  3498.  
  3499. BOOL
  3500. DDKAPI
  3501. DrvSwapBuffers(
  3502.   IN SURFOBJ  *pso,
  3503.   IN WNDOBJ  *pwo);
  3504.  
  3505. VOID
  3506. DDKAPI
  3507. DrvSynchronize(
  3508.   IN DHPDEV  dhpdev,
  3509.   IN RECTL  *prcl);
  3510.  
  3511. /* DrvSynchronizeSurface.fl constants */
  3512. #define DSS_TIMER_EVENT                   0x00000001
  3513. #define DSS_FLUSH_EVENT                   0x00000002
  3514.  
  3515. VOID
  3516. DDKAPI
  3517. DrvSynchronizeSurface(
  3518.   IN SURFOBJ  *pso,
  3519.   IN RECTL  *prcl,
  3520.   IN FLONG  fl);
  3521.  
  3522. BOOL
  3523. DDKAPI
  3524. DrvTextOut(
  3525.   IN SURFOBJ  *pso,
  3526.   IN STROBJ  *pstro,
  3527.   IN FONTOBJ  *pfo,
  3528.   IN CLIPOBJ  *pco,
  3529.   IN RECTL  *prclExtra,
  3530.   IN RECTL  *prclOpaque,
  3531.   IN BRUSHOBJ  *pboFore,
  3532.   IN BRUSHOBJ  *pboOpaque,
  3533.   IN POINTL  *pptlOrg,
  3534.   IN MIX  mix);
  3535.  
  3536. BOOL
  3537. DDKAPI
  3538. DrvTransparentBlt(
  3539.   IN SURFOBJ  *psoDst,
  3540.   IN SURFOBJ  *psoSrc,
  3541.   IN CLIPOBJ  *pco,
  3542.   IN XLATEOBJ  *pxlo,
  3543.   IN RECTL  *prclDst,
  3544.   IN RECTL  *prclSrc,
  3545.   IN ULONG  iTransColor,
  3546.   IN ULONG  ulReserved);
  3547.  
  3548. BOOL
  3549. DDKAPI
  3550. DrvUnloadFontFile(
  3551.   IN ULONG_PTR  iFile);
  3552.  
  3553. /* WNDOBJCHANGEPROC.fl constants */
  3554. #define WOC_RGN_CLIENT_DELTA              0x00000001
  3555. #define WOC_RGN_CLIENT                    0x00000002
  3556. #define WOC_RGN_SURFACE_DELTA             0x00000004
  3557. #define WOC_RGN_SURFACE                   0x00000008
  3558. #define WOC_CHANGED                       0x00000010
  3559. #define WOC_DELETE                        0x00000020
  3560. #define WOC_DRAWN                         0x00000040
  3561. #define WOC_SPRITE_OVERLAP                0x00000080
  3562. #define WOC_SPRITE_NO_OVERLAP             0x00000100
  3563.  
  3564. typedef VOID DDKAPI
  3565. (CALLBACK * WNDOBJCHANGEPROC)(
  3566.   WNDOBJ  *pwo,
  3567.   FLONG  fl);
  3568.  
  3569.  
  3570. typedef BOOL DDKAPI
  3571. (*PFN_DrvAlphaBlend)(
  3572.   IN SURFOBJ  *psoDest,
  3573.   IN SURFOBJ  *psoSrc,
  3574.   IN CLIPOBJ  *pco,
  3575.   IN XLATEOBJ  *pxlo,
  3576.   IN RECTL  *prclDest,
  3577.   IN RECTL  *prclSrc,
  3578.   IN BLENDOBJ  *pBlendObj);
  3579.  
  3580. typedef BOOL DDKAPI
  3581. (*PFN_DrvAssertMode)(
  3582.   IN DHPDEV  dhpdev,
  3583.   IN BOOL  bEnable);
  3584.  
  3585. typedef BOOL DDKAPI
  3586. (*PFN_DrvBitBlt)(
  3587.   IN SURFOBJ  *psoTrg,
  3588.   IN SURFOBJ  *psoSrc,
  3589.   IN SURFOBJ  *psoMask,
  3590.   IN CLIPOBJ  *pco,
  3591.   IN XLATEOBJ  *pxlo,
  3592.   IN RECTL  *prclTrg,
  3593.   IN POINTL  *pptlSrc,
  3594.   IN POINTL  *pptlMask,
  3595.   IN BRUSHOBJ  *pbo,
  3596.   IN POINTL  *pptlBrush,
  3597.   IN ROP4  rop4);
  3598.  
  3599. typedef VOID DDKAPI
  3600. (*PFN_DrvCompletePDEV)(
  3601.   IN DHPDEV  dhpdev,
  3602.   IN HDEV  hdev);
  3603.  
  3604. typedef BOOL DDKAPI
  3605. (*PFN_DrvCopyBits)(
  3606.   IN SURFOBJ  *psoDest,
  3607.   IN SURFOBJ  *psoSrc,
  3608.   IN CLIPOBJ  *pco,
  3609.   IN XLATEOBJ  *pxlo,
  3610.   IN RECTL  *prclDest,
  3611.   IN POINTL  *pptlSrc);
  3612.  
  3613. typedef HBITMAP DDKAPI
  3614. (*PFN_DrvCreateDeviceBitmap)(
  3615.   IN DHPDEV  dhpdev,
  3616.   IN SIZEL  sizl,
  3617.   IN ULONG  iFormat);
  3618.  
  3619. typedef VOID DDKAPI
  3620. (*PFN_DrvDeleteDeviceBitmap)(
  3621.   IN DHSURF  dhsurf);
  3622.  
  3623. typedef HBITMAP DDKAPI
  3624. (*PFN_DrvDeriveSurface)(
  3625.   DD_DIRECTDRAW_GLOBAL  *pDirectDraw,
  3626.   DD_SURFACE_LOCAL  *pSurface);
  3627.  
  3628. typedef LONG DDKAPI
  3629. (*PFN_DrvDescribePixelFormat)(
  3630.   IN DHPDEV  dhpdev,
  3631.   IN LONG  iPixelFormat,
  3632.   IN ULONG  cjpfd,
  3633.   OUT PIXELFORMATDESCRIPTOR  *ppfd);
  3634.  
  3635. typedef VOID DDKAPI
  3636. (*PFN_DrvDestroyFont)(
  3637.   IN FONTOBJ  *pfo);
  3638.  
  3639. typedef VOID DDKAPI
  3640. (*PFN_DrvDisableDriver)(
  3641.   VOID);
  3642.  
  3643. typedef VOID DDKAPI
  3644. (*PFN_DrvDisablePDEV)(
  3645.   IN DHPDEV  dhpdev);
  3646.  
  3647. typedef VOID DDKAPI
  3648. (*PFN_DrvDisableSurface)(
  3649.   IN DHPDEV  dhpdev);
  3650.  
  3651. typedef ULONG DDKAPI
  3652. (*PFN_DrvDitherColor)(
  3653.   IN DHPDEV  dhpdev,
  3654.   IN ULONG  iMode,
  3655.   IN ULONG  rgb,
  3656.   OUT ULONG  *pul);
  3657.  
  3658. typedef ULONG DDKAPI
  3659. (*PFN_DrvDrawEscape)(
  3660.   IN SURFOBJ  *pso,
  3661.   IN ULONG  iEsc,
  3662.   IN CLIPOBJ  *pco,
  3663.   IN RECTL  *prcl,
  3664.   IN ULONG  cjIn,
  3665.   IN PVOID  pvIn);
  3666.  
  3667. typedef BOOL DDKAPI
  3668. (*PFN_DrvEnableDriver)(
  3669.   IN ULONG  iEngineVersion,
  3670.   IN ULONG  cj,
  3671.   OUT DRVENABLEDATA  *pded);
  3672. #if 0
  3673. typedef DHPDEV DDKAPI
  3674. (*PFN_DrvEnablePDEV)(
  3675.   IN DEVMODEW  *pdm,
  3676.   IN LPWSTR  pwszLogAddress,
  3677.   IN ULONG  cPat,
  3678.   OUT HSURF  *phsurfPatterns,
  3679.   IN ULONG  cjCaps,
  3680.   OUT ULONG  *pdevcaps,
  3681.   IN ULONG  cjDevInfo,
  3682.   OUT DEVINFO  *pdi,
  3683.   IN HDEV  hdev,
  3684.   IN LPWSTR  pwszDeviceName,
  3685.   IN HANDLE  hDriver);
  3686. #endif
  3687. typedef HSURF DDKAPI
  3688. (*PFN_DrvEnableSurface)(
  3689.   IN DHPDEV  dhpdev);
  3690.  
  3691. typedef BOOL DDKAPI
  3692. (*PFN_DrvEndDoc)(
  3693.   IN SURFOBJ  *pso,
  3694.   IN FLONG  fl);
  3695.  
  3696. typedef ULONG DDKAPI
  3697. (*PFN_DrvEscape)(
  3698.   IN SURFOBJ  *pso,
  3699.   IN ULONG  iEsc,
  3700.   IN ULONG  cjIn,
  3701.   IN PVOID  pvIn,
  3702.   IN ULONG  cjOut,
  3703.   OUT PVOID  pvOut);
  3704.  
  3705. typedef BOOL DDKAPI
  3706. (*PFN_DrvFillPath)(
  3707.   IN SURFOBJ  *pso,
  3708.   IN PATHOBJ  *ppo,
  3709.   IN CLIPOBJ  *pco,
  3710.   IN BRUSHOBJ  *pbo,
  3711.   IN POINTL  *pptlBrushOrg,
  3712.   IN MIX  mix,
  3713.   IN FLONG  flOptions);
  3714.  
  3715. typedef ULONG DDKAPI
  3716. (*PFN_DrvFontManagement)(
  3717.   IN SURFOBJ  *pso,
  3718.   IN FONTOBJ  *pfo,
  3719.   IN ULONG  iMode,
  3720.   IN ULONG  cjIn,
  3721.   IN PVOID  pvIn,
  3722.   IN ULONG  cjOut,
  3723.   OUT PVOID  pvOut);
  3724.  
  3725. typedef VOID DDKAPI
  3726. (*PFN_DrvFree)(
  3727.   IN PVOID  pv,
  3728.   IN ULONG_PTR  id);
  3729.  
  3730. typedef ULONG DDKAPI
  3731. (*PFN_DrvGetGlyphMode)(
  3732.   IN DHPDEV  dhpdev,
  3733.   IN FONTOBJ  *pfo);
  3734.  
  3735. typedef ULONG DDKAPI
  3736. (*PFN_DrvGetModes)(
  3737.   IN HANDLE  hDriver,
  3738.   IN ULONG  cjSize,
  3739.   OUT DEVMODEW  *pdm);
  3740.  
  3741. typedef PVOID DDKAPI
  3742. (*PFN_DrvGetTrueTypeFile)(
  3743.   IN ULONG_PTR  iFile,
  3744.   IN ULONG  *pcj);
  3745.  
  3746. typedef BOOL DDKAPI
  3747. (*PFN_DrvGradientFill)(
  3748.   IN SURFOBJ  *psoDest,
  3749.   IN CLIPOBJ  *pco,
  3750.   IN XLATEOBJ  *pxlo,
  3751.   IN TRIVERTEX  *pVertex,
  3752.   IN ULONG  nVertex,
  3753.   IN PVOID  pMesh,
  3754.   IN ULONG  nMesh,
  3755.   IN RECTL  *prclExtents,
  3756.   IN POINTL  *pptlDitherOrg,
  3757.   IN ULONG  ulMode);
  3758.  
  3759. typedef BOOL DDKAPI
  3760. (*PFN_DrvIcmCheckBitmapBits)(
  3761.   IN DHPDEV  dhpdev,
  3762.   IN HANDLE  hColorTransform,
  3763.   IN SURFOBJ  *pso,
  3764.   OUT PBYTE  paResults);
  3765.  
  3766. typedef HANDLE DDKAPI
  3767. (*PFN_DrvIcmCreateColorTransform)(
  3768.   IN DHPDEV  dhpdev,
  3769.   IN LPLOGCOLORSPACEW  pLogColorSpace,
  3770.   IN PVOID  pvSourceProfile,
  3771.   IN ULONG  cjSourceProfile,
  3772.   IN PVOID  pvDestProfile,
  3773.   IN ULONG  cjDestProfile,
  3774.   IN PVOID  pvTargetProfile,
  3775.   IN ULONG  cjTargetProfile,
  3776.   IN DWORD  dwReserved);
  3777.  
  3778. typedef BOOL DDKAPI
  3779. (*PFN_DrvIcmDeleteColorTransform)(
  3780.   IN DHPDEV  dhpdev,
  3781.   IN HANDLE  hcmXform);
  3782.  
  3783. typedef BOOL DDKAPI
  3784. (*PFN_DrvIcmSetDeviceGammaRamp)(
  3785.   IN DHPDEV  dhpdev,
  3786.   IN ULONG  iFormat,
  3787.   IN LPVOID  lpRamp);
  3788.  
  3789. typedef BOOL DDKAPI
  3790. (*PFN_DrvLineTo)(
  3791.   SURFOBJ  *pso,
  3792.   CLIPOBJ  *pco,
  3793.   BRUSHOBJ  *pbo,
  3794.   LONG  x1,
  3795.   LONG  y1,
  3796.   LONG  x2,
  3797.   LONG  y2,
  3798.   RECTL  *prclBounds,
  3799.   MIX  mix);
  3800.  
  3801. typedef ULONG_PTR DDKAPI
  3802. (*PFN_DrvLoadFontFile)(
  3803.   ULONG  cFiles,
  3804.   ULONG_PTR  *piFile,
  3805.   PVOID  *ppvView,
  3806.   ULONG  *pcjView,
  3807.   DESIGNVECTOR  *pdv,
  3808.   ULONG  ulLangID,
  3809.   ULONG  ulFastCheckSum);
  3810.  
  3811. typedef VOID DDKAPI
  3812. (*PFN_DrvMovePointer)(
  3813.   IN SURFOBJ  *pso,
  3814.   IN LONG  x,
  3815.   IN LONG  y,
  3816.   IN RECTL  *prcl);
  3817.  
  3818. typedef BOOL DDKAPI
  3819. (*PFN_DrvNextBand)(
  3820.   IN SURFOBJ  *pso,
  3821.   IN POINTL  *pptl);
  3822.  
  3823. typedef VOID DDKAPI
  3824. (*PFN_DrvNotify)(
  3825.   IN SURFOBJ  *pso,
  3826.   IN ULONG  iType,
  3827.   IN PVOID  pvData);
  3828.  
  3829. typedef BOOL DDKAPI
  3830. (*PFN_DrvOffset)(
  3831.   IN SURFOBJ  *pso,
  3832.   IN LONG  x,
  3833.   IN LONG  y,
  3834.   IN FLONG  flReserved);
  3835.  
  3836. typedef BOOL DDKAPI
  3837. (*PFN_DrvPaint)(
  3838.   IN SURFOBJ  *pso,
  3839.   IN CLIPOBJ  *pco,
  3840.   IN BRUSHOBJ  *pbo,
  3841.   IN POINTL  *pptlBrushOrg,
  3842.   IN MIX  mix);
  3843.  
  3844. typedef BOOL DDKAPI
  3845. (*PFN_DrvPlgBlt)(
  3846.   IN SURFOBJ  *psoTrg,
  3847.   IN SURFOBJ  *psoSrc,
  3848.   IN SURFOBJ  *psoMsk,
  3849.   IN CLIPOBJ  *pco,
  3850.   IN XLATEOBJ  *pxlo,
  3851.   IN COLORADJUSTMENT  *pca,
  3852.   IN POINTL  *pptlBrushOrg,
  3853.   IN POINTFIX  *pptfx,
  3854.   IN RECTL  *prcl,
  3855.   IN POINTL  *pptl,
  3856.   IN ULONG  iMode);
  3857.  
  3858. typedef BOOL DDKAPI
  3859. (*PFN_DrvQueryAdvanceWidths)(
  3860.   IN DHPDEV  dhpdev,
  3861.   IN FONTOBJ  *pfo,
  3862.   IN ULONG  iMode,
  3863.   IN HGLYPH  *phg,
  3864.   OUT PVOID  pvWidths,
  3865.   IN ULONG  cGlyphs);
  3866.  
  3867. typedef BOOL DDKAPI
  3868. (*PFN_DrvQueryDeviceSupport)(
  3869.   SURFOBJ  *pso,
  3870.   XLATEOBJ  *pxlo,
  3871.   XFORMOBJ  *pxo,
  3872.   ULONG  iType,
  3873.   ULONG  cjIn,
  3874.   PVOID  pvIn,
  3875.   ULONG  cjOut,
  3876.   PVOID  pvOut);
  3877.  
  3878. typedef BOOL DDKAPI
  3879. (*PFN_DrvQueryDriverInfo)(
  3880.   DWORD  dwMode,
  3881.   PVOID  pBuffer,
  3882.   DWORD  cbBuf,
  3883.   PDWORD  pcbNeeded);
  3884.  
  3885. typedef PIFIMETRICS DDKAPI
  3886. (*PFN_DrvQueryFont)(
  3887.   IN DHPDEV  dhpdev,
  3888.   IN ULONG_PTR  iFile,
  3889.   IN ULONG  iFace,
  3890.   IN ULONG_PTR  *pid);
  3891.  
  3892. typedef LONG DDKAPI
  3893. (*PFN_DrvQueryFontCaps)(
  3894.   IN ULONG  culCaps,
  3895.   OUT ULONG  *pulCaps);
  3896.  
  3897. typedef LONG DDKAPI
  3898. (*PFN_DrvQueryFontData)(
  3899.   IN DHPDEV  dhpdev,
  3900.   IN FONTOBJ  *pfo,
  3901.   IN ULONG  iMode,
  3902.   IN HGLYPH  hg,
  3903.   IN OUT GLYPHDATA  *pgd,
  3904.   IN OUT PVOID  pv,
  3905.   IN ULONG  cjSize);
  3906.  
  3907. typedef LONG DDKAPI
  3908. (*PFN_DrvQueryFontFile)(
  3909.   IN ULONG_PTR  iFile,
  3910.   IN ULONG  ulMode,
  3911.   IN ULONG  cjBuf,
  3912.   IN ULONG  *pulBuf);
  3913.  
  3914. typedef PVOID DDKAPI
  3915. (*PFN_DrvQueryFontTree)(
  3916.   IN DHPDEV  dhpdev,
  3917.   IN ULONG_PTR  iFile,
  3918.   IN ULONG  iFace,
  3919.   IN ULONG  iMode,
  3920.   IN ULONG_PTR  *pid);
  3921.  
  3922. typedef PFD_GLYPHATTR DDKAPI
  3923. (*PFN_DrvQueryGlyphAttrs)(
  3924.   IN FONTOBJ  *pfo,
  3925.   IN ULONG  iMode);
  3926.  
  3927. typedef ULONG DDKAPI
  3928. (*PFN_DrvQueryPerBandInfo)(
  3929.   IN SURFOBJ  *pso,
  3930.   IN OUT PERBANDINFO  *pbi);
  3931.  
  3932. typedef LONG DDKAPI
  3933. (*PFN_DrvQueryTrueTypeOutline)(
  3934.   IN DHPDEV  dhpdev,
  3935.   IN FONTOBJ  *pfo,
  3936.   IN HGLYPH  hglyph,
  3937.   IN BOOL  bMetricsOnly,
  3938.   IN GLYPHDATA  *pgldt,
  3939.   IN ULONG  cjBuf,
  3940.   OUT TTPOLYGONHEADER  *ppoly);
  3941.  
  3942. typedef LONG DDKAPI
  3943. (*PFN_DrvQueryTrueTypeTable)(
  3944.   IN ULONG_PTR  iFile,
  3945.   IN ULONG  ulFont,
  3946.   IN ULONG  ulTag,
  3947.   IN PTRDIFF  dpStart,
  3948.   IN ULONG  cjBuf,
  3949.   OUT BYTE  *pjBuf,
  3950.   OUT PBYTE  *ppjTable,
  3951.   OUT ULONG *pcjTable);
  3952.  
  3953. typedef BOOL DDKAPI
  3954. (*PFN_DrvRealizeBrush)(
  3955.   IN BRUSHOBJ  *pbo,
  3956.   IN SURFOBJ  *psoTarget,
  3957.   IN SURFOBJ  *psoPattern,
  3958.   IN SURFOBJ  *psoMask,
  3959.   IN XLATEOBJ  *pxlo,
  3960.   IN ULONG  iHatch);
  3961.  
  3962. typedef ULONG DDKAPI
  3963. (*PFN_DrvResetDevice)(
  3964.   IN DHPDEV dhpdev,
  3965.   IN PVOID Reserved);
  3966.  
  3967. typedef BOOL DDKAPI
  3968. (*PFN_DrvResetPDEV)(
  3969.   DHPDEV  dhpdevOld,
  3970.   DHPDEV  dhpdevNew);
  3971.  
  3972. typedef ULONG_PTR DDKAPI
  3973. (*PFN_DrvSaveScreenBits)(
  3974.   IN SURFOBJ  *pso,
  3975.   IN ULONG  iMode,
  3976.   IN ULONG_PTR  ident,
  3977.   IN RECTL  *prcl);
  3978.  
  3979. typedef BOOL DDKAPI
  3980. (*PFN_DrvSendPage)(
  3981.   IN SURFOBJ  *pso);
  3982.  
  3983. typedef BOOL DDKAPI
  3984. (*PFN_DrvSetPalette)(
  3985.   IN DHPDEV  dhpdev,
  3986.   IN PALOBJ  *ppalo,
  3987.   IN FLONG  fl,
  3988.   IN ULONG  iStart,
  3989.   IN ULONG  cColors);
  3990.  
  3991. typedef BOOL DDKAPI
  3992. (*PFN_DrvSetPixelFormat)(
  3993.   IN SURFOBJ  *pso,
  3994.   IN LONG  iPixelFormat,
  3995.   IN HWND  hwnd);
  3996.  
  3997. typedef ULONG DDKAPI
  3998. (*PFN_DrvSetPointerShape)(
  3999.   IN SURFOBJ  *pso,
  4000.   IN SURFOBJ  *psoMask,
  4001.   IN SURFOBJ  *psoColor,
  4002.   IN XLATEOBJ  *pxlo,
  4003.   IN LONG  xHot,
  4004.   IN LONG  yHot,
  4005.   IN LONG  x,
  4006.   IN LONG  y,
  4007.   IN RECTL  *prcl,
  4008.   IN FLONG  fl);
  4009.  
  4010. typedef BOOL DDKAPI
  4011. (*PFN_DrvStartBanding)(
  4012.   IN SURFOBJ  *pso,
  4013.   IN POINTL  *pptl);
  4014.  
  4015. typedef BOOL DDKAPI
  4016. (*PFN_DrvStartDoc)(
  4017.   IN SURFOBJ  *pso,
  4018.   IN LPWSTR  pwszDocName,
  4019.   IN DWORD  dwJobId);
  4020.  
  4021. typedef BOOL DDKAPI
  4022. (*PFN_DrvStartPage)(
  4023.   IN SURFOBJ  *pso);
  4024.  
  4025. typedef BOOL DDKAPI
  4026. (*PFN_DrvStretchBlt)(
  4027.   IN SURFOBJ  *psoDest,
  4028.   IN SURFOBJ  *psoSrc,
  4029.   IN SURFOBJ  *psoMask,
  4030.   IN CLIPOBJ  *pco,
  4031.   IN XLATEOBJ  *pxlo,
  4032.   IN COLORADJUSTMENT  *pca,
  4033.   IN POINTL  *pptlHTOrg,
  4034.   IN RECTL  *prclDest,
  4035.   IN RECTL  *prclSrc,
  4036.   IN POINTL  *pptlMask,
  4037.   IN ULONG  iMode);
  4038.  
  4039. typedef BOOL DDKAPI
  4040. (*PFN_DrvStretchBltROP)(
  4041.   IN SURFOBJ  *psoDest,
  4042.   IN SURFOBJ  *psoSrc,
  4043.   IN SURFOBJ  *psoMask,
  4044.   IN CLIPOBJ  *pco,
  4045.   IN XLATEOBJ  *pxlo,
  4046.   IN COLORADJUSTMENT  *pca,
  4047.   IN POINTL  *pptlHTOrg,
  4048.   IN RECTL  *prclDest,
  4049.   IN RECTL  *prclSrc,
  4050.   IN POINTL  *pptlMask,
  4051.   IN ULONG  iMode,
  4052.   IN BRUSHOBJ  *pbo,
  4053.   IN DWORD  rop4);
  4054.  
  4055. typedef BOOL DDKAPI
  4056. (*PFN_DrvStrokeAndFillPath)(
  4057.   IN SURFOBJ  *pso,
  4058.   IN PATHOBJ  *ppo,
  4059.   IN CLIPOBJ  *pco,
  4060.   IN XFORMOBJ  *pxo,
  4061.   IN BRUSHOBJ  *pboStroke,
  4062.   IN LINEATTRS  *plineattrs,
  4063.   IN BRUSHOBJ  *pboFill,
  4064.   IN POINTL  *pptlBrushOrg,
  4065.   IN MIX  mixFill,
  4066.   IN FLONG  flOptions);
  4067.  
  4068. typedef BOOL DDKAPI
  4069. (*PFN_DrvStrokePath)(
  4070.   IN SURFOBJ  *pso,
  4071.   IN PATHOBJ  *ppo,
  4072.   IN CLIPOBJ  *pco,
  4073.   IN XFORMOBJ  *pxo,
  4074.   IN BRUSHOBJ  *pbo,
  4075.   IN POINTL  *pptlBrushOrg,
  4076.   IN LINEATTRS  *plineattrs,
  4077.   IN MIX  mix);
  4078.  
  4079. typedef BOOL DDKAPI
  4080. (*PFN_DrvSwapBuffers)(
  4081.   IN SURFOBJ  *pso,
  4082.   IN WNDOBJ  *pwo);
  4083.  
  4084. typedef VOID DDKAPI
  4085. (*PFN_DrvSynchronize)(
  4086.   IN DHPDEV  dhpdev,
  4087.   IN RECTL  *prcl);
  4088.  
  4089. typedef VOID DDKAPI
  4090. (*PFN_DrvSynchronizeSurface)(
  4091.   IN SURFOBJ  *pso,
  4092.   IN RECTL  *prcl,
  4093.   IN FLONG  fl);
  4094.  
  4095. typedef BOOL DDKAPI
  4096. (*PFN_DrvTextOut)(
  4097.   IN SURFOBJ  *pso,
  4098.   IN STROBJ  *pstro,
  4099.   IN FONTOBJ  *pfo,
  4100.   IN CLIPOBJ  *pco,
  4101.   IN RECTL  *prclExtra,
  4102.   IN RECTL  *prclOpaque,
  4103.   IN BRUSHOBJ  *pboFore,
  4104.   IN BRUSHOBJ  *pboOpaque,
  4105.   IN POINTL  *pptlOrg,
  4106.   IN MIX  mix);
  4107.  
  4108. typedef BOOL DDKAPI
  4109. (*PFN_DrvTransparentBlt)(
  4110.   IN SURFOBJ  *psoDst,
  4111.   IN SURFOBJ  *psoSrc,
  4112.   IN CLIPOBJ  *pco,
  4113.   IN XLATEOBJ  *pxlo,
  4114.   IN RECTL  *prclDst,
  4115.   IN RECTL  *prclSrc,
  4116.   IN ULONG  iTransColor,
  4117.   IN ULONG  ulReserved);
  4118.  
  4119. typedef BOOL DDKAPI
  4120. (*PFN_DrvUnloadFontFile)(
  4121.   IN ULONG_PTR  iFile);
  4122.  
  4123.  
  4124. WIN32KAPI
  4125. VOID
  4126. DDKAPI
  4127. DrvDisableDirectDraw(
  4128.   IN DHPDEV  dhpdev);
  4129.  
  4130. WIN32KAPI
  4131. BOOL
  4132. DDKAPI
  4133. DrvEnableDirectDraw(
  4134.   IN DHPDEV  dhpdev,
  4135.   OUT DD_CALLBACKS  *pCallBacks,
  4136.   OUT DD_SURFACECALLBACKS  *pSurfaceCallBacks,
  4137.   OUT DD_PALETTECALLBACKS  *pPaletteCallBacks);
  4138.  
  4139. WIN32KAPI
  4140. BOOL
  4141. DDKAPI
  4142. DrvGetDirectDrawInfo(
  4143.   IN DHPDEV  dhpdev,
  4144.   OUT DD_HALINFO  *pHalInfo,
  4145.   OUT DWORD  *pdwNumHeaps,
  4146.   OUT VIDEOMEMORY  *pvmList,
  4147.   OUT DWORD  *pdwNumFourCCCodes,
  4148.   OUT DWORD  *pdwFourCC);
  4149.  
  4150. #ifdef __cplusplus
  4151. }
  4152. #endif
  4153.  
  4154. #endif /* defined __VIDEO_H */
  4155.  
  4156. #endif /* __WINDDI_H */
  4157.