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