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