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