Naveen Neel / shedskin
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers winddi.h Source File

winddi.h

00001 /*
00002  * winddi.h
00003  *
00004  * GDI device driver interface
00005  *
00006  * This file is part of the w32api package.
00007  *
00008  * Contributors:
00009  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #ifndef __WINDDI_H
00024 #define __WINDDI_H
00025 
00026 #if __GNUC__ >=3
00027 #pragma GCC system_header
00028 #endif
00029 
00030 #ifdef __VIDEO_H
00031 #error video.h cannot be included with winddi.h
00032 #else
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00038 #include "ntddk.h"
00039 #include <wingdi.h>
00040 
00041 #ifndef __DD_INCLUDED__
00042 /* FIXME: Some DirectDraw structures not added yet */
00043 typedef ULONG_PTR FLATPTR;
00044 typedef struct _DD_SURFACECALLBACKS {
00045 } DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS;
00046 typedef struct _DD_PALETTECALLBACKS {
00047 } DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS;
00048 typedef struct _DD_CALLBACKS {
00049 } DD_CALLBACKS, *PDD_CALLBACKS;
00050 typedef struct _DD_HALINFO {
00051 } DD_HALINFO, *PDD_HALINFO;
00052 typedef struct _VIDEOMEMORY {
00053 } VIDEOMEMORY, *LPVIDEOMEMORY;
00054 typedef struct _DD_DIRECTDRAW_GLOBAL {
00055 } DD_DIRECTDRAW_GLOBAL, *LPDD_DIRECTDRAW_GLOBAL;
00056 typedef struct _DD_SURFACE_LOCAL {
00057 } DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL, *LPDD_SURFACE_LOCAL;
00058 #endif
00059 
00060 #ifndef __DDRAWI_INCLUDED__
00061 typedef PVOID LPVIDMEM;
00062 #endif
00063 
00064 #if !defined(__DD_INCLUDED__) && !defined(__DDRAWI_INCLUDED__)
00065 typedef struct _DDSCAPS {
00066 } DDSCAPS, *PDDSCAPS;
00067 typedef struct _DDSCAPSEX {
00068 } DDSCAPSEX, *PDDSCAPSEX;
00069 typedef PVOID LPVMEMHEAP;
00070 #endif
00071 
00072 #if defined(_WIN32K_)
00073 #define WIN32KAPI DECL_EXPORT
00074 #else
00075 #define WIN32KAPI DECL_IMPORT
00076 #endif
00077 
00078 #define DDI_DRIVER_VERSION_NT4            0x00020000
00079 #define DDI_DRIVER_VERSION_SP3            0x00020003
00080 #define DDI_DRIVER_VERSION_NT5            0x00030000
00081 #define DDI_DRIVER_VERSION_NT5_01         0x00030100
00082 
00083 #define GDI_DRIVER_VERSION                0x4000
00084 
00085 #ifdef _X86_
00086 
00087 typedef DWORD FLOATL;
00088 
00089 #else /* !_X86_ */
00090 
00091 typedef FLOAT FLOATL;
00092 
00093 #endif
00094 
00095 typedef SHORT FWORD;
00096 typedef LONG LDECI4;
00097 typedef ULONG IDENT;
00098 
00099 typedef ULONG_PTR HFF;
00100 typedef ULONG_PTR HFC;
00101 
00102 typedef LONG PTRDIFF;
00103 typedef PTRDIFF *PPTRDIFF;
00104 typedef LONG FIX;
00105 typedef FIX *PFIX;
00106 typedef ULONG ROP4;
00107 typedef ULONG MIX;
00108 typedef ULONG HGLYPH;
00109 typedef HGLYPH *PHGLYPH;
00110 
00111 typedef LONG_PTR (DDKAPI *PFN)();
00112 
00113 DECLARE_HANDLE(HBM);
00114 DECLARE_HANDLE(HDEV);
00115 DECLARE_HANDLE(HSURF);
00116 DECLARE_HANDLE(DHSURF);
00117 DECLARE_HANDLE(DHPDEV);
00118 DECLARE_HANDLE(HDRVOBJ);
00119 
00120 
00121 #define GDI_DRIVER_VERSION                0x4000
00122 
00123 typedef struct _ENG_EVENT *PEVENT;
00124 
00125 #define OPENGL_CMD                        4352
00126 #define OPENGL_GETINFO                    4353
00127 #define WNDOBJ_SETUP                      4354
00128 
00129 #define FD_ERROR                          0xFFFFFFFF
00130 #define DDI_ERROR                         0xFFFFFFFF
00131 
00132 #define HFF_INVALID                       ((HFF) 0)
00133 #define HFC_INVALID                       ((HFC) 0)
00134 #define HGLYPH_INVALID                    ((HGLYPH) -1)
00135 
00136 #define FP_ALTERNATEMODE                  1
00137 #define FP_WINDINGMODE                    2
00138 
00139 #define DN_ACCELERATION_LEVEL             1
00140 #define DN_DEVICE_ORIGIN                  2
00141 #define DN_SLEEP_MODE                     3
00142 #define DN_DRAWING_BEGIN                  4
00143 
00144 #define DCR_SOLID                         0
00145 #define DCR_DRIVER                        1
00146 #define DCR_HALFTONE                      2
00147 
00148 #define GX_IDENTITY                       0
00149 #define GX_OFFSET                         1
00150 #define GX_SCALE                          2
00151 #define GX_GENERAL                        3
00152 
00153 typedef struct _POINTE {
00154     FLOATL  x;
00155     FLOATL  y;
00156 } POINTE, *PPOINTE;
00157 
00158 typedef union _FLOAT_LONG {
00159   FLOATL  e;
00160   LONG  l;
00161 } FLOAT_LONG, *PFLOAT_LONG;
00162 
00163 typedef struct _POINTFIX {
00164   FIX  x;
00165   FIX  y;
00166 } POINTFIX, *PPOINTFIX;
00167 
00168 typedef struct _RECTFX {
00169   FIX  xLeft;
00170   FIX  yTop;
00171   FIX  xRight;
00172   FIX  yBottom;
00173 } RECTFX, *PRECTFX;
00174 
00175 typedef struct _POINTQF {
00176   LARGE_INTEGER  x;
00177   LARGE_INTEGER  y;
00178 } POINTQF, *PPOINTQF;
00179 
00180 
00181 typedef struct _BLENDOBJ {
00182   BLENDFUNCTION  BlendFunction;
00183 } BLENDOBJ,*PBLENDOBJ;
00184 
00185 /* BRUSHOBJ.flColorType */
00186 #define BR_DEVICE_ICM    0x01
00187 #define BR_HOST_ICM      0x02
00188 #define BR_CMYKCOLOR     0x04
00189 #define BR_ORIGCOLOR     0x08
00190 
00191 typedef struct _BRUSHOBJ {
00192   ULONG  iSolidColor;
00193   PVOID  pvRbrush;
00194   FLONG  flColorType;
00195 } BRUSHOBJ;
00196 
00197 typedef struct _CIECHROMA {
00198   LDECI4  x;
00199   LDECI4  y;
00200   LDECI4  Y;
00201 } CIECHROMA;
00202 
00203 typedef struct _RUN {
00204   LONG  iStart;
00205   LONG  iStop;
00206 } RUN, *PRUN;
00207 
00208 typedef struct _CLIPLINE {
00209   POINTFIX  ptfxA;
00210   POINTFIX  ptfxB;
00211   LONG  lStyleState;
00212   ULONG  c;
00213   RUN  arun[1];
00214 } CLIPLINE, *PCLIPLINE;
00215 
00216 /* CLIPOBJ.iDComplexity constants */
00217 #define DC_TRIVIAL                        0
00218 #define DC_RECT                           1
00219 #define DC_COMPLEX                        3
00220 
00221 /* CLIPOBJ.iFComplexity constants */
00222 #define FC_RECT                           1
00223 #define FC_RECT4                          2
00224 #define FC_COMPLEX                        3
00225 
00226 /* CLIPOBJ.iMode constants */
00227 #define TC_RECTANGLES                     0
00228 #define TC_PATHOBJ                        2
00229 
00230 /* CLIPOBJ.fjOptions constants */
00231 #define OC_BANK_CLIP                      1
00232 
00233 typedef struct _CLIPOBJ {
00234   ULONG  iUniq;
00235   RECTL  rclBounds;
00236   BYTE  iDComplexity;
00237   BYTE  iFComplexity;
00238   BYTE  iMode;
00239   BYTE  fjOptions;
00240 } CLIPOBJ;
00241 
00242 typedef struct _COLORINFO {
00243   CIECHROMA  Red;
00244   CIECHROMA  Green;
00245   CIECHROMA  Blue;
00246   CIECHROMA  Cyan;
00247   CIECHROMA  Magenta;
00248   CIECHROMA  Yellow;
00249   CIECHROMA  AlignmentWhite;
00250   LDECI4  RedGamma;
00251   LDECI4  GreenGamma;
00252   LDECI4  BlueGamma;
00253   LDECI4  MagentaInCyanDye;
00254   LDECI4  YellowInCyanDye;
00255   LDECI4  CyanInMagentaDye;
00256   LDECI4  YellowInMagentaDye;
00257   LDECI4  CyanInYellowDye;
00258   LDECI4  MagentaInYellowDye;
00259 } COLORINFO, *PCOLORINFO;
00260 
00261 /* DEVHTADJDATA.DeviceFlags constants */
00262 #define DEVHTADJF_COLOR_DEVICE            0x00000001
00263 #define DEVHTADJF_ADDITIVE_DEVICE         0x00000002
00264 
00265 typedef struct _DEVHTINFO {
00266   DWORD  HTFlags;
00267   DWORD  HTPatternSize;
00268   DWORD  DevPelsDPI;
00269   COLORINFO  ColorInfo;
00270 } DEVHTINFO, *PDEVHTINFO;
00271 
00272 typedef struct _DEVHTADJDATA {
00273   DWORD   DeviceFlags;
00274   DWORD   DeviceXDPI;
00275   DWORD   DeviceYDPI;
00276   PDEVHTINFO  pDefHTInfo;
00277   PDEVHTINFO  pAdjHTInfo;
00278 } DEVHTADJDATA, *PDEVHTADJDATA;
00279 
00280 /* DEVINFO.flGraphicsCaps flags */
00281 #define GCAPS_BEZIERS           0x00000001
00282 #define GCAPS_GEOMETRICWIDE     0x00000002
00283 #define GCAPS_ALTERNATEFILL     0x00000004
00284 #define GCAPS_WINDINGFILL       0x00000008
00285 #define GCAPS_HALFTONE          0x00000010
00286 #define GCAPS_COLOR_DITHER      0x00000020
00287 #define GCAPS_HORIZSTRIKE       0x00000040
00288 #define GCAPS_VERTSTRIKE        0x00000080
00289 #define GCAPS_OPAQUERECT        0x00000100
00290 #define GCAPS_VECTORFONT        0x00000200
00291 #define GCAPS_MONO_DITHER       0x00000400
00292 #define GCAPS_ASYNCCHANGE       0x00000800
00293 #define GCAPS_ASYNCMOVE         0x00001000
00294 #define GCAPS_DONTJOURNAL       0x00002000
00295 #define GCAPS_DIRECTDRAW        0x00004000
00296 #define GCAPS_ARBRUSHOPAQUE     0x00008000
00297 #define GCAPS_PANNING           0x00010000
00298 #define GCAPS_HIGHRESTEXT       0x00040000
00299 #define GCAPS_PALMANAGED        0x00080000
00300 #define GCAPS_DITHERONREALIZE   0x00200000
00301 #define GCAPS_NO64BITMEMACCESS  0x00400000
00302 #define GCAPS_FORCEDITHER       0x00800000
00303 #define GCAPS_GRAY16            0x01000000
00304 #define GCAPS_ICM               0x02000000
00305 #define GCAPS_CMYKCOLOR         0x04000000
00306 #define GCAPS_LAYERED           0x08000000
00307 #define GCAPS_ARBRUSHTEXT       0x10000000
00308 #define GCAPS_SCREENPRECISION   0x20000000
00309 #define GCAPS_FONT_RASTERIZER   0x40000000
00310 #define GCAPS_NUP               0x80000000
00311 
00312 /* DEVINFO.iDitherFormat constants */
00313 #define BMF_1BPP       1L
00314 #define BMF_4BPP       2L
00315 #define BMF_8BPP       3L
00316 #define BMF_16BPP      4L
00317 #define BMF_24BPP      5L
00318 #define BMF_32BPP      6L
00319 #define BMF_4RLE       7L
00320 #define BMF_8RLE       8L
00321 #define BMF_JPEG       9L
00322 #define BMF_PNG       10L
00323 
00324 /* DEVINFO.flGraphicsCaps2 flags */
00325 #define GCAPS2_JPEGSRC          0x00000001
00326 #define GCAPS2_xxxx             0x00000002
00327 #define GCAPS2_PNGSRC           0x00000008
00328 #define GCAPS2_CHANGEGAMMARAMP  0x00000010
00329 #define GCAPS2_ALPHACURSOR      0x00000020
00330 #define GCAPS2_SYNCFLUSH        0x00000040
00331 #define GCAPS2_SYNCTIMER        0x00000080
00332 #define GCAPS2_ICD_MULTIMON     0x00000100
00333 #define GCAPS2_MOUSETRAILS      0x00000200
00334 #define GCAPS2_RESERVED1        0x00000400
00335 
00336 typedef struct _DEVINFO {
00337   FLONG  flGraphicsCaps;
00338   LOGFONTW  lfDefaultFont;
00339   LOGFONTW  lfAnsiVarFont;
00340   LOGFONTW  lfAnsiFixFont;
00341   ULONG  cFonts;
00342   ULONG  iDitherFormat;
00343   USHORT  cxDither;
00344   USHORT  cyDither;
00345   HPALETTE  hpalDefault;
00346   FLONG  flGraphicsCaps2;
00347 } DEVINFO, *PDEVINFO;
00348 
00349 typedef struct _DRIVEROBJ *PDRIVEROBJ;
00350 
00351 typedef BOOL DDKAPI CALLBACK
00352 (*FREEOBJPROC)(
00353   /*IN*/ PDRIVEROBJ  pDriverObj);
00354 
00355 typedef struct _DRIVEROBJ {
00356   PVOID  pvObj;
00357   FREEOBJPROC  pFreeProc;
00358   HDEV  hdev;
00359   DHPDEV  dhpdev;
00360 } DRIVEROBJ;
00361 
00362 /* DRVFN.iFunc constants */
00363 #define INDEX_DrvEnablePDEV               0L
00364 #define INDEX_DrvCompletePDEV             1L
00365 #define INDEX_DrvDisablePDEV              2L
00366 #define INDEX_DrvEnableSurface            3L
00367 #define INDEX_DrvDisableSurface           4L
00368 #define INDEX_DrvAssertMode               5L
00369 #define INDEX_DrvOffset                   6L
00370 #define INDEX_DrvResetPDEV                7L
00371 #define INDEX_DrvDisableDriver            8L
00372 #define INDEX_DrvCreateDeviceBitmap       10L
00373 #define INDEX_DrvDeleteDeviceBitmap       11L
00374 #define INDEX_DrvRealizeBrush             12L
00375 #define INDEX_DrvDitherColor              13L
00376 #define INDEX_DrvStrokePath               14L
00377 #define INDEX_DrvFillPath                 15L
00378 #define INDEX_DrvStrokeAndFillPath        16L
00379 #define INDEX_DrvPaint                    17L
00380 #define INDEX_DrvBitBlt                   18L
00381 #define INDEX_DrvCopyBits                 19L
00382 #define INDEX_DrvStretchBlt               20L
00383 #define INDEX_DrvSetPalette               22L
00384 #define INDEX_DrvTextOut                  23L
00385 #define INDEX_DrvEscape                   24L
00386 #define INDEX_DrvDrawEscape               25L
00387 #define INDEX_DrvQueryFont                26L
00388 #define INDEX_DrvQueryFontTree            27L
00389 #define INDEX_DrvQueryFontData            28L
00390 #define INDEX_DrvSetPointerShape          29L
00391 #define INDEX_DrvMovePointer              30L
00392 #define INDEX_DrvLineTo                   31L
00393 #define INDEX_DrvSendPage                 32L
00394 #define INDEX_DrvStartPage                33L
00395 #define INDEX_DrvEndDoc                   34L
00396 #define INDEX_DrvStartDoc                 35L
00397 #define INDEX_DrvGetGlyphMode             37L
00398 #define INDEX_DrvSynchronize              38L
00399 #define INDEX_DrvSaveScreenBits           40L
00400 #define INDEX_DrvGetModes                 41L
00401 #define INDEX_DrvFree                     42L
00402 #define INDEX_DrvDestroyFont              43L
00403 #define INDEX_DrvQueryFontCaps            44L
00404 #define INDEX_DrvLoadFontFile             45L
00405 #define INDEX_DrvUnloadFontFile           46L
00406 #define INDEX_DrvFontManagement           47L
00407 #define INDEX_DrvQueryTrueTypeTable       48L
00408 #define INDEX_DrvQueryTrueTypeOutline     49L
00409 #define INDEX_DrvGetTrueTypeFile          50L
00410 #define INDEX_DrvQueryFontFile            51L
00411 #define INDEX_DrvMovePanning              52L
00412 #define INDEX_DrvQueryAdvanceWidths       53L
00413 #define INDEX_DrvSetPixelFormat           54L
00414 #define INDEX_DrvDescribePixelFormat      55L
00415 #define INDEX_DrvSwapBuffers              56L
00416 #define INDEX_DrvStartBanding             57L
00417 #define INDEX_DrvNextBand                 58L
00418 #define INDEX_DrvGetDirectDrawInfo        59L
00419 #define INDEX_DrvEnableDirectDraw         60L
00420 #define INDEX_DrvDisableDirectDraw        61L
00421 #define INDEX_DrvQuerySpoolType           62L
00422 #define INDEX_DrvIcmCreateColorTransform  64L
00423 #define INDEX_DrvIcmDeleteColorTransform  65L
00424 #define INDEX_DrvIcmCheckBitmapBits       66L
00425 #define INDEX_DrvIcmSetDeviceGammaRamp    67L
00426 #define INDEX_DrvGradientFill             68L
00427 #define INDEX_DrvStretchBltROP            69L
00428 #define INDEX_DrvPlgBlt                   70L
00429 #define INDEX_DrvAlphaBlend               71L
00430 #define INDEX_DrvSynthesizeFont           72L
00431 #define INDEX_DrvGetSynthesizedFontFiles  73L
00432 #define INDEX_DrvTransparentBlt           74L
00433 #define INDEX_DrvQueryPerBandInfo         75L
00434 #define INDEX_DrvQueryDeviceSupport       76L
00435 #define INDEX_DrvReserved1                77L
00436 #define INDEX_DrvReserved2                78L
00437 #define INDEX_DrvReserved3                79L
00438 #define INDEX_DrvReserved4                80L
00439 #define INDEX_DrvReserved5                81L
00440 #define INDEX_DrvReserved6                82L
00441 #define INDEX_DrvReserved7                83L
00442 #define INDEX_DrvReserved8                84L
00443 #define INDEX_DrvDeriveSurface            85L
00444 #define INDEX_DrvQueryGlyphAttrs          86L
00445 #define INDEX_DrvNotify                   87L
00446 #define INDEX_DrvSynchronizeSurface       88L
00447 #define INDEX_DrvResetDevice              89L
00448 #define INDEX_DrvReserved9                90L
00449 #define INDEX_DrvReserved10               91L
00450 #define INDEX_DrvReserved11               92L
00451 #define INDEX_LAST                        93L
00452 
00453 typedef struct _DRVFN {
00454   ULONG  iFunc;
00455   PFN  pfn;
00456 } DRVFN, *PDRVFN;
00457 
00458 /* DRVENABLEDATA.iDriverVersion constants */
00459 #define DDI_DRIVER_VERSION_NT4            0x00020000
00460 #define DDI_DRIVER_VERSION_SP3            0x00020003
00461 #define DDI_DRIVER_VERSION_NT5            0x00030000
00462 #define DDI_DRIVER_VERSION_NT5_01         0x00030100
00463 
00464 typedef struct _DRVENABLEDATA {
00465   ULONG  iDriverVersion;
00466   ULONG  c;
00467   DRVFN  *pdrvfn;
00468 } DRVENABLEDATA, *PDRVENABLEDATA;
00469 
00470 DECLARE_HANDLE(HSEMAPHORE);
00471 
00472 typedef struct {
00473   DWORD  nSize;
00474   HDC  hdc;
00475   PBYTE  pvEMF;
00476   PBYTE  pvCurrentRecord;
00477 } EMFINFO, *PEMFINFO;
00478 
00479 typedef struct _ENGSAFESEMAPHORE {
00480   HSEMAPHORE  hsem;
00481   LONG  lCount;
00482 } ENGSAFESEMAPHORE;
00483 
00484 typedef struct _ENG_TIME_FIELDS {
00485   USHORT  usYear;
00486   USHORT  usMonth;
00487   USHORT  usDay;
00488   USHORT  usHour;
00489   USHORT  usMinute;
00490   USHORT  usSecond;
00491   USHORT  usMilliseconds;
00492   USHORT  usWeekday;
00493 } ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
00494 
00495 typedef struct _ENUMRECTS {
00496   ULONG  c;
00497   RECTL  arcl[1];
00498 } ENUMRECTS;
00499 
00500 typedef struct _FD_XFORM {
00501   FLOATL  eXX;
00502   FLOATL  eXY;
00503   FLOATL  eYX;
00504   FLOATL  eYY;
00505 } FD_XFORM, *PFD_XFORM;
00506 
00507 /* FD_DEVICEMETRICS.flRealizedType constants */
00508 #define FDM_TYPE_BM_SIDE_CONST            0x00000001
00509 #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE     0x00000002
00510 #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE   0x00000004
00511 #define FDM_TYPE_ZERO_BEARINGS            0x00000008
00512 #define FDM_TYPE_CONST_BEARINGS           0x00000010
00513 
00514 typedef struct _FD_DEVICEMETRICS {
00515   FLONG  flRealizedType;
00516   POINTE  pteBase;
00517   POINTE  pteSide;
00518   LONG  lD;
00519   FIX  fxMaxAscender;
00520   FIX  fxMaxDescender;
00521   POINTL  ptlUnderline1;
00522   POINTL  ptlStrikeout;
00523   POINTL  ptlULThickness;
00524   POINTL  ptlSOThickness;
00525   ULONG  cxMax;
00526   ULONG  cyMax;
00527   ULONG  cjGlyphMax;
00528   FD_XFORM  fdxQuantized;
00529   LONG  lNonLinearExtLeading;
00530   LONG  lNonLinearIntLeading;
00531   LONG  lNonLinearMaxCharWidth;
00532   LONG  lNonLinearAvgCharWidth;
00533   LONG  lMinA;
00534   LONG  lMinC;
00535   LONG  lMinD;
00536   LONG  alReserved[1];
00537 } FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;
00538 
00539 /* FD_GLYPHATTR.iMode constants */
00540 #define FO_ATTR_MODE_ROTATE               1
00541 
00542 typedef struct _FD_GLYPHATTR {
00543   ULONG  cjThis;
00544   ULONG  cGlyphs;
00545   ULONG  iMode;
00546   BYTE  aGlyphAttr[1];
00547 } FD_GLYPHATTR, *PFD_GLYPHATTR;
00548 
00549 /* FD_GLYPHSET.flAccel */
00550 #define GS_UNICODE_HANDLES                0x00000001
00551 #define GS_8BIT_HANDLES                   0x00000002
00552 #define GS_16BIT_HANDLES                  0x00000004
00553 
00554 typedef struct _WCRUN {
00555   WCHAR  wcLow;
00556   USHORT  cGlyphs;
00557   HGLYPH  *phg;
00558 } WCRUN, *PWCRUN;
00559 
00560 typedef struct _FD_GLYPHSET {
00561   ULONG  cjThis;
00562   FLONG  flAccel;
00563   ULONG  cGlyphsSupported;
00564   ULONG  cRuns;
00565   WCRUN  awcrun[1];
00566 } FD_GLYPHSET, *PFD_GLYPHSET;
00567 
00568 typedef struct _FD_KERNINGPAIR {
00569   WCHAR  wcFirst;
00570   WCHAR  wcSecond;
00571   FWORD  fwdKern;
00572 } FD_KERNINGPAIR;
00573 
00574 typedef struct _FLOATOBJ
00575 {
00576   ULONG  ul1;
00577   ULONG  ul2;
00578 } FLOATOBJ, *PFLOATOBJ;
00579 
00580 typedef struct _FLOATOBJ_XFORM {
00581   FLOATOBJ  eM11;
00582   FLOATOBJ  eM12;
00583   FLOATOBJ  eM21;
00584   FLOATOBJ  eM22;
00585   FLOATOBJ  eDx;
00586   FLOATOBJ  eDy;
00587 } FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
00588 
00589 /* FONTDIFF.fsSelection */
00590 #define FM_SEL_ITALIC                     0x0001
00591 #define FM_SEL_UNDERSCORE                 0x0002
00592 #define FM_SEL_NEGATIVE                   0x0004
00593 #define FM_SEL_OUTLINED                   0x0008
00594 #define FM_SEL_STRIKEOUT                  0x0010
00595 #define FM_SEL_BOLD                       0x0020
00596 #define FM_SEL_REGULAR                    0x0040
00597 
00598 typedef struct _FONTDIFF {
00599   BYTE  jReserved1;
00600   BYTE  jReserved2;
00601   BYTE  jReserved3;
00602   BYTE  bWeight;
00603   USHORT  usWinWeight;
00604   FSHORT  fsSelection;
00605   FWORD  fwdAveCharWidth;
00606   FWORD  fwdMaxCharInc;
00607   POINTL  ptlCaret;
00608 } FONTDIFF;
00609 
00610 typedef struct _FONTSIM {
00611   PTRDIFF  dpBold;
00612   PTRDIFF  dpItalic;
00613   PTRDIFF  dpBoldItalic;
00614 } FONTSIM;
00615 
00616 /* FONTINFO.flCaps constants */
00617 #define FO_DEVICE_FONT                    1L
00618 #define FO_OUTLINE_CAPABLE                2L
00619 
00620 typedef struct _FONTINFO {
00621   ULONG  cjThis;
00622   FLONG  flCaps;
00623   ULONG  cGlyphsSupported;
00624   ULONG  cjMaxGlyph1;
00625   ULONG  cjMaxGlyph4;
00626   ULONG  cjMaxGlyph8;
00627   ULONG  cjMaxGlyph32;
00628 } FONTINFO, *PFONTINFO;
00629 
00630 /* FONTOBJ.flFontType constants */
00631 #define FO_TYPE_RASTER   RASTER_FONTTYPE
00632 #define FO_TYPE_DEVICE   DEVICE_FONTTYPE
00633 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
00634 #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
00635 
00636 #define FO_SIM_BOLD      0x00002000
00637 #define FO_SIM_ITALIC    0x00004000
00638 #define FO_EM_HEIGHT     0x00008000
00639 #define FO_GRAY16        0x00010000
00640 #define FO_NOGRAY16      0x00020000
00641 #define FO_NOHINTS       0x00040000
00642 #define FO_NO_CHOICE     0x00080000
00643 #define FO_CFF            0x00100000
00644 #define FO_POSTSCRIPT     0x00200000
00645 #define FO_MULTIPLEMASTER 0x00400000
00646 #define FO_VERT_FACE      0x00800000
00647 #define FO_DBCS_FONT      0X01000000
00648 #define FO_NOCLEARTYPE    0x02000000
00649 #define FO_CLEARTYPE_X    0x10000000
00650 #define FO_CLEARTYPE_Y    0x20000000
00651 
00652 typedef struct _FONTOBJ {
00653   ULONG  iUniq;
00654   ULONG  iFace;
00655   ULONG  cxMax;
00656   FLONG  flFontType;
00657   ULONG_PTR  iTTUniq;
00658   ULONG_PTR  iFile;
00659   SIZE  sizLogResPpi;
00660   ULONG  ulStyleSize;
00661   PVOID  pvConsumer;
00662   PVOID  pvProducer;
00663 } FONTOBJ;
00664 
00665 typedef struct _GAMMARAMP {
00666   WORD  Red[256];
00667   WORD  Green[256];
00668   WORD  Blue[256];
00669 } GAMMARAMP, *PGAMMARAMP;
00670 
00671 /* GDIINFO.ulPrimaryOrder constants */
00672 #define PRIMARY_ORDER_ABC                 0
00673 #define PRIMARY_ORDER_ACB                 1
00674 #define PRIMARY_ORDER_BAC                 2
00675 #define PRIMARY_ORDER_BCA                 3
00676 #define PRIMARY_ORDER_CBA                 4
00677 #define PRIMARY_ORDER_CAB                 5
00678 
00679 /* GDIINFO.ulHTPatternSize constants */
00680 #define HT_PATSIZE_2x2                    0
00681 #define HT_PATSIZE_2x2_M                  1
00682 #define HT_PATSIZE_4x4                    2
00683 #define HT_PATSIZE_4x4_M                  3
00684 #define HT_PATSIZE_6x6                    4
00685 #define HT_PATSIZE_6x6_M                  5
00686 #define HT_PATSIZE_8x8                    6
00687 #define HT_PATSIZE_8x8_M                  7
00688 #define HT_PATSIZE_10x10                  8
00689 #define HT_PATSIZE_10x10_M                9
00690 #define HT_PATSIZE_12x12                  10
00691 #define HT_PATSIZE_12x12_M                11
00692 #define HT_PATSIZE_14x14                  12
00693 #define HT_PATSIZE_14x14_M                13
00694 #define HT_PATSIZE_16x16                  14
00695 #define HT_PATSIZE_16x16_M                15
00696 #define HT_PATSIZE_SUPERCELL              16
00697 #define HT_PATSIZE_SUPERCELL_M            17
00698 #define HT_PATSIZE_USER                   18
00699 #define HT_PATSIZE_MAX_INDEX              HT_PATSIZE_USER
00700 #define HT_PATSIZE_DEFAULT                HT_PATSIZE_SUPERCELL_M
00701 #define HT_USERPAT_CX_MIN                 4
00702 #define HT_USERPAT_CX_MAX                 256
00703 #define HT_USERPAT_CY_MIN                 4
00704 #define HT_USERPAT_CY_MAX                 256
00705 
00706 /* GDIINFO.ulHTOutputFormat constants */
00707 #define HT_FORMAT_1BPP                    0
00708 #define HT_FORMAT_4BPP                    2
00709 #define HT_FORMAT_4BPP_IRGB               3
00710 #define HT_FORMAT_8BPP                    4
00711 #define HT_FORMAT_16BPP                   5
00712 #define HT_FORMAT_24BPP                   6
00713 #define HT_FORMAT_32BPP                   7
00714 
00715 /* GDIINFO.flHTFlags */
00716 #define HT_FLAG_SQUARE_DEVICE_PEL         0x00000001
00717 #define HT_FLAG_HAS_BLACK_DYE             0x00000002
00718 #define HT_FLAG_ADDITIVE_PRIMS            0x00000004
00719 #define HT_FLAG_USE_8BPP_BITMASK          0x00000008
00720 #define HT_FLAG_INK_HIGH_ABSORPTION       0x00000010
00721 #define HT_FLAG_INK_ABSORPTION_INDICES    0x00000060
00722 #define HT_FLAG_DO_DEVCLR_XFORM           0x00000080
00723 #define HT_FLAG_OUTPUT_CMY                0x00000100
00724 #define HT_FLAG_PRINT_DRAFT_MODE          0x00000200
00725 #define HT_FLAG_INVERT_8BPP_BITMASK_IDX   0x00000400
00726 #define HT_FLAG_8BPP_CMY332_MASK          0xFF000000
00727 
00728 #define MAKE_CMYMASK_BYTE(c,m,y)          ((BYTE)(((BYTE)(c) & 0x07) << 5) \
00729                                           |(BYTE)(((BYTE)(m) & 0x07) << 2) \
00730                                           |(BYTE)((BYTE)(y) & 0x03))
00731 
00732 #define MAKE_CMY332_MASK(c,m,y)           ((DWORD)(((DWORD)(c) & 0x07) << 29)\
00733                                           |(DWORD)(((DWORD)(m) & 0x07) << 26)\
00734                                           |(DWORD)(((DWORD)(y) & 0x03) << 24))
00735 
00736 /* GDIINFO.flHTFlags constants */
00737 #define HT_FLAG_INK_ABSORPTION_IDX0       0x00000000
00738 #define HT_FLAG_INK_ABSORPTION_IDX1       0x00000020
00739 #define HT_FLAG_INK_ABSORPTION_IDX2       0x00000040
00740 #define HT_FLAG_INK_ABSORPTION_IDX3       0x00000060
00741 
00742 #define HT_FLAG_HIGHEST_INK_ABSORPTION    (HT_FLAG_INK_HIGH_ABSORPTION \
00743                                           |HT_FLAG_INK_ABSORPTION_IDX3)
00744 #define HT_FLAG_HIGHER_INK_ABSORPTION     (HT_FLAG_INK_HIGH_ABSORPTION \
00745                                           |HT_FLAG_INK_ABSORPTION_IDX2)
00746 #define HT_FLAG_HIGH_INK_ABSORPTION       (HT_FLAG_INK_HIGH_ABSORPTION \
00747                                           |HT_FLAG_INK_ABSORPTION_IDX1)
00748 #define HT_FLAG_NORMAL_INK_ABSORPTION     HT_FLAG_INK_ABSORPTION_IDX0
00749 #define HT_FLAG_LOW_INK_ABSORPTION        HT_FLAG_INK_ABSORPTION_IDX1
00750 #define HT_FLAG_LOWER_INK_ABSORPTION      HT_FLAG_INK_ABSORPTION_IDX2
00751 #define HT_FLAG_LOWEST_INK_ABSORPTION     HT_FLAG_INK_ABSORPTION_IDX3
00752 
00753 #define HT_BITMASKPALRGB                  (DWORD)'0BGR'
00754 #define HT_SET_BITMASKPAL2RGB(pPal)       (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
00755 #define HT_IS_BITMASKPALRGB(pPal)         (*((LPDWORD)(pPal)) == (DWORD)0)
00756 
00757 /* GDIINFO.ulPhysicalPixelCharacteristics constants */
00758 #define PPC_DEFAULT                       0x0
00759 #define PPC_UNDEFINED                     0x1
00760 #define PPC_RGB_ORDER_VERTICAL_STRIPES    0x2
00761 #define PPC_BGR_ORDER_VERTICAL_STRIPES    0x3
00762 #define PPC_RGB_ORDER_HORIZONTAL_STRIPES  0x4
00763 #define PPC_BGR_ORDER_HORIZONTAL_STRIPES  0x5
00764 
00765 #define PPG_DEFAULT                       0
00766 #define PPG_SRGB                          1
00767 
00768 typedef struct _GDIINFO {
00769   ULONG  ulVersion;
00770   ULONG  ulTechnology;
00771   ULONG  ulHorzSize;
00772   ULONG  ulVertSize;
00773   ULONG  ulHorzRes;
00774   ULONG  ulVertRes;
00775   ULONG  cBitsPixel;
00776   ULONG  cPlanes;
00777   ULONG  ulNumColors;
00778   ULONG  flRaster;
00779   ULONG  ulLogPixelsX;
00780   ULONG  ulLogPixelsY;
00781   ULONG  flTextCaps;
00782   ULONG  ulDACRed;
00783   ULONG  ulDACGreen;
00784   ULONG  ulDACBlue;
00785   ULONG  ulAspectX;
00786   ULONG  ulAspectY;
00787   ULONG  ulAspectXY;
00788   LONG  xStyleStep;
00789   LONG  yStyleStep;
00790   LONG  denStyleStep;
00791   POINTL  ptlPhysOffset;
00792   SIZEL  szlPhysSize;
00793   ULONG  ulNumPalReg;
00794   COLORINFO  ciDevice;
00795   ULONG  ulDevicePelsDPI;
00796   ULONG  ulPrimaryOrder;
00797   ULONG  ulHTPatternSize;
00798   ULONG  ulHTOutputFormat;
00799   ULONG  flHTFlags;
00800   ULONG  ulVRefresh;
00801   ULONG  ulBltAlignment;
00802   ULONG  ulPanningHorzRes;
00803   ULONG  ulPanningVertRes;
00804   ULONG  xPanningAlignment;
00805   ULONG  yPanningAlignment;
00806   ULONG  cxHTPat;
00807   ULONG  cyHTPat;
00808   LPBYTE  pHTPatA;
00809   LPBYTE  pHTPatB;
00810   LPBYTE  pHTPatC;
00811   ULONG  flShadeBlend;
00812   ULONG  ulPhysicalPixelCharacteristics;
00813   ULONG  ulPhysicalPixelGamma;
00814 } GDIINFO, *PGDIINFO;
00815 
00816 /* PATHDATA.flags constants */
00817 #define PD_BEGINSUBPATH                   0x00000001
00818 #define PD_ENDSUBPATH                     0x00000002
00819 #define PD_RESETSTYLE                     0x00000004
00820 #define PD_CLOSEFIGURE                    0x00000008
00821 #define PD_BEZIERS                        0x00000010
00822 #define PD_ALL                            (PD_BEGINSUBPATH \
00823                                           |PD_ENDSUBPATH \
00824                                           |PD_RESETSTYLE \
00825                                           |PD_CLOSEFIGURE \
00826                                           PD_BEZIERS)
00827 
00828 typedef struct _PATHDATA {
00829   FLONG  flags;
00830   ULONG  count;
00831   POINTFIX  *glypptfx;
00832 } PATHDATA, *PPATHDATA;
00833 
00834 /* PATHOBJ.fl constants */
00835 #define PO_BEZIERS                        0x00000001
00836 #define PO_ELLIPSE                        0x00000002
00837 #define PO_ALL_INTEGERS                   0x00000004
00838 #define PO_ENUM_AS_INTEGERS               0x00000008
00839 
00840 typedef struct _PATHOBJ {
00841   FLONG  fl;
00842   ULONG  cCurves;
00843 } PATHOBJ;
00844 
00845 typedef struct _GLYPHBITS {
00846   POINTL  ptlOrigin;
00847   SIZEL  sizlBitmap;
00848   BYTE  aj[1];
00849 } GLYPHBITS;
00850 
00851 typedef union _GLYPHDEF {
00852   GLYPHBITS  *pgb;
00853   PATHOBJ  *ppo;
00854 } GLYPHDEF;
00855 
00856 typedef struct _GLYPHPOS {
00857   HGLYPH  hg;
00858   GLYPHDEF  *pgdf;
00859   POINTL  ptl;
00860 } GLYPHPOS, *PGLYPHPOS;
00861 
00862 typedef struct _GLYPHDATA {
00863   GLYPHDEF  gdf;
00864   HGLYPH  hg;
00865   FIX  fxD;
00866   FIX  fxA;
00867   FIX  fxAB;
00868   FIX  fxInkTop;
00869   FIX  fxInkBottom;
00870   RECTL  rclInk;
00871   POINTQF  ptqD;
00872 } GLYPHDATA;
00873 
00874 typedef struct _IFIEXTRA {
00875   ULONG  ulIdentifier;
00876   PTRDIFF  dpFontSig;
00877   ULONG  cig;
00878   PTRDIFF  dpDesignVector;
00879   PTRDIFF  dpAxesInfoW;
00880   ULONG  aulReserved[1];
00881 } IFIEXTRA, *PIFIEXTRA;
00882 
00883 /* IFIMETRICS constants */
00884 
00885 #define FM_VERSION_NUMBER                 0x0
00886 
00887 /* IFIMETRICS.fsType constants */
00888 #define FM_TYPE_LICENSED                  0x2
00889 #define FM_READONLY_EMBED                 0x4
00890 #define FM_EDITABLE_EMBED                 0x8
00891 #define FM_NO_EMBEDDING                   FM_TYPE_LICENSED
00892 
00893 /* IFIMETRICS.flInfo constants */
00894 #define FM_INFO_TECH_TRUETYPE             0x00000001
00895 #define FM_INFO_TECH_BITMAP               0x00000002
00896 #define FM_INFO_TECH_STROKE               0x00000004
00897 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
00898 #define FM_INFO_ARB_XFORMS                0x00000010
00899 #define FM_INFO_1BPP                      0x00000020
00900 #define FM_INFO_4BPP                      0x00000040
00901 #define FM_INFO_8BPP                      0x00000080
00902 #define FM_INFO_16BPP                     0x00000100
00903 #define FM_INFO_24BPP                     0x00000200
00904 #define FM_INFO_32BPP                     0x00000400
00905 #define FM_INFO_INTEGER_WIDTH             0x00000800
00906 #define FM_INFO_CONSTANT_WIDTH            0x00001000
00907 #define FM_INFO_NOT_CONTIGUOUS            0x00002000
00908 #define FM_INFO_TECH_MM                   0x00004000
00909 #define FM_INFO_RETURNS_OUTLINES          0x00008000
00910 #define FM_INFO_RETURNS_STROKES           0x00010000
00911 #define FM_INFO_RETURNS_BITMAPS           0x00020000
00912 #define FM_INFO_DSIG                      0x00040000
00913 #define FM_INFO_RIGHT_HANDED              0x00080000
00914 #define FM_INFO_INTEGRAL_SCALING          0x00100000
00915 #define FM_INFO_90DEGREE_ROTATIONS        0x00200000
00916 #define FM_INFO_OPTICALLY_FIXED_PITCH     0x00400000
00917 #define FM_INFO_DO_NOT_ENUMERATE          0x00800000
00918 #define FM_INFO_ISOTROPIC_SCALING_ONLY    0x01000000
00919 #define FM_INFO_ANISOTROPIC_SCALING_ONLY  0x02000000
00920 #define FM_INFO_TECH_CFF                  0x04000000
00921 #define FM_INFO_FAMILY_EQUIV              0x08000000
00922 #define FM_INFO_DBCS_FIXED_PITCH          0x10000000
00923 #define FM_INFO_NONNEGATIVE_AC            0x20000000
00924 #define FM_INFO_IGNORE_TC_RA_ABLE         0x40000000
00925 #define FM_INFO_TECH_TYPE1                0x80000000
00926 
00927 #define MAXCHARSETS                       16
00928 
00929 /* IFIMETRICS.ulPanoseCulture constants */
00930 #define  FM_PANOSE_CULTURE_LATIN          0x0
00931 
00932 typedef struct _IFIMETRICS {
00933   ULONG  cjThis;
00934   ULONG  cjIfiExtra;
00935   PTRDIFF  dpwszFamilyName;
00936   PTRDIFF  dpwszStyleName;
00937   PTRDIFF  dpwszFaceName;
00938   PTRDIFF  dpwszUniqueName;
00939   PTRDIFF  dpFontSim;
00940   LONG  lEmbedId;
00941   LONG  lItalicAngle;
00942   LONG  lCharBias;
00943   PTRDIFF  dpCharSets;
00944   BYTE  jWinCharSet;
00945   BYTE  jWinPitchAndFamily;
00946   USHORT  usWinWeight;
00947   ULONG  flInfo;
00948   USHORT  fsSelection;
00949   USHORT  fsType;
00950   FWORD  fwdUnitsPerEm;
00951   FWORD  fwdLowestPPEm;
00952   FWORD  fwdWinAscender;
00953   FWORD  fwdWinDescender;
00954   FWORD  fwdMacAscender;
00955   FWORD  fwdMacDescender;
00956   FWORD  fwdMacLineGap;
00957   FWORD  fwdTypoAscender;
00958   FWORD  fwdTypoDescender;
00959   FWORD  fwdTypoLineGap;
00960   FWORD  fwdAveCharWidth;
00961   FWORD  fwdMaxCharInc;
00962   FWORD  fwdCapHeight;
00963   FWORD  fwdXHeight;
00964   FWORD  fwdSubscriptXSize;
00965   FWORD  fwdSubscriptYSize;
00966   FWORD  fwdSubscriptXOffset;
00967   FWORD  fwdSubscriptYOffset;
00968   FWORD  fwdSuperscriptXSize;
00969   FWORD  fwdSuperscriptYSize;
00970   FWORD  fwdSuperscriptXOffset;
00971   FWORD  fwdSuperscriptYOffset;
00972   FWORD  fwdUnderscoreSize;
00973   FWORD  fwdUnderscorePosition;
00974   FWORD  fwdStrikeoutSize;
00975   FWORD  fwdStrikeoutPosition;
00976   BYTE  chFirstChar;
00977   BYTE  chLastChar;
00978   BYTE  chDefaultChar;
00979   BYTE  chBreakChar;
00980   WCHAR  wcFirstChar;
00981   WCHAR  wcLastChar;
00982   WCHAR  wcDefaultChar;
00983   WCHAR  wcBreakChar;
00984   POINTL  ptlBaseline;
00985   POINTL  ptlAspect;
00986   POINTL  ptlCaret;
00987   RECTL  rclFontBox;
00988   BYTE  achVendId[4];
00989   ULONG  cKerningPairs;
00990   ULONG  ulPanoseCulture;
00991   PANOSE  panose;
00992 #if defined(_WIN64)
00993   PVOID  Align;
00994 #endif
00995 } IFIMETRICS, *PIFIMETRICS;
00996 
00997 /* LINEATTRS.fl */
00998 #define LA_GEOMETRIC                      0x00000001
00999 #define LA_ALTERNATE                      0x00000002
01000 #define LA_STARTGAP                       0x00000004
01001 #define LA_STYLED                         0x00000008
01002 
01003 /* LINEATTRS.iJoin */
01004 #define JOIN_ROUND                        0L
01005 #define JOIN_BEVEL                        1L
01006 #define JOIN_MITER                        2L
01007 
01008 /* LINEATTRS.iEndCap */
01009 #define ENDCAP_ROUND                      0L
01010 #define ENDCAP_SQUARE                     1L
01011 #define ENDCAP_BUTT                       2L
01012 
01013 typedef struct _LINEATTRS {
01014   FLONG  fl;
01015   ULONG  iJoin;
01016   ULONG  iEndCap;
01017   FLOAT_LONG  elWidth;
01018   FLOATL  eMiterLimit;
01019   ULONG  cstyle;
01020   PFLOAT_LONG  pstyle;
01021   FLOAT_LONG  elStyleState;
01022 } LINEATTRS, *PLINEATTRS;
01023 
01024 typedef struct _PALOBJ {
01025   ULONG  ulReserved;
01026 } PALOBJ;
01027 
01028 typedef struct _PERBANDINFO {
01029   BOOL  bRepeatThisBand;
01030   SIZEL  szlBand;
01031   ULONG  ulHorzRes;
01032   ULONG  ulVertRes;
01033 } PERBANDINFO, *PPERBANDINFO;
01034 
01035 /* STROBJ.flAccel constants */
01036 #define SO_FLAG_DEFAULT_PLACEMENT        0x00000001
01037 #define SO_HORIZONTAL                    0x00000002
01038 #define SO_VERTICAL                      0x00000004
01039 #define SO_REVERSED                      0x00000008
01040 #define SO_ZERO_BEARINGS                 0x00000010
01041 #define SO_CHAR_INC_EQUAL_BM_BASE        0x00000020
01042 #define SO_MAXEXT_EQUAL_BM_SIDE          0x00000040
01043 #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
01044 #define SO_GLYPHINDEX_TEXTOUT            0x00000100
01045 #define SO_ESC_NOT_ORIENT                0x00000200
01046 #define SO_DXDY                          0x00000400
01047 #define SO_CHARACTER_EXTRA               0x00000800
01048 #define SO_BREAK_EXTRA                   0x00001000
01049 
01050 typedef struct _STROBJ {
01051   ULONG  cGlyphs;
01052   FLONG  flAccel;
01053   ULONG  ulCharInc;
01054   RECTL  rclBkGround;
01055   GLYPHPOS  *pgp;
01056   LPWSTR  pwszOrg;
01057 } STROBJ;
01058 
01059 typedef struct _SURFACEALIGNMENT {
01060   union {
01061         struct {
01062             DWORD  dwStartAlignment;
01063             DWORD  dwPitchAlignment;
01064             DWORD  dwReserved1;
01065             DWORD  dwReserved2;
01066         } Linear;
01067         struct {
01068             DWORD  dwXAlignment;
01069             DWORD  dwYAlignment;
01070             DWORD  dwReserved1;
01071             DWORD  dwReserved2;
01072         } Rectangular;
01073   };
01074 } SURFACEALIGNMENT, *LPSURFACEALIGNMENT;
01075 
01076 /* SURFOBJ.iType constants */
01077 #define STYPE_BITMAP                      0L
01078 #define STYPE_DEVICE                      1L
01079 #define STYPE_DEVBITMAP                   3L
01080 
01081 /* SURFOBJ.fjBitmap constants */
01082 #define BMF_TOPDOWN                       0x0001
01083 #define BMF_NOZEROINIT                    0x0002
01084 #define BMF_DONTCACHE                     0x0004
01085 #define BMF_USERMEM                       0x0008
01086 #define BMF_KMSECTION                     0x0010
01087 #define BMF_NOTSYSMEM                     0x0020
01088 #define BMF_WINDOW_BLT                    0x0040
01089 #define BMF_UMPDMEM                       0x0080
01090 #define BMF_RESERVED                      0xFF00
01091 
01092 typedef struct _SURFOBJ {
01093   DHSURF  dhsurf;
01094   HSURF  hsurf;
01095   DHPDEV  dhpdev;
01096   HDEV  hdev;
01097   SIZEL  sizlBitmap;
01098   ULONG  cjBits;
01099   PVOID  pvBits;
01100   PVOID  pvScan0;
01101   LONG  lDelta;
01102   ULONG  iUniq;
01103   ULONG  iBitmapFormat;
01104   USHORT  iType;
01105   USHORT  fjBitmap;
01106 } SURFOBJ;
01107 
01108 typedef struct _TYPE1_FONT {
01109   HANDLE  hPFM;
01110   HANDLE  hPFB;
01111   ULONG  ulIdentifier;
01112 } TYPE1_FONT;
01113 
01114 typedef struct _WNDOBJ {
01115   CLIPOBJ  coClient;
01116   PVOID  pvConsumer;
01117   RECTL  rclClient;
01118   SURFOBJ  *psoOwner;
01119 } WNDOBJ, *PWNDOBJ;
01120 
01121 typedef struct _XFORML {
01122   FLOATL  eM11;
01123   FLOATL  eM12;
01124   FLOATL  eM21;
01125   FLOATL  eM22;
01126   FLOATL  eDx;
01127   FLOATL  eDy;
01128 } XFORML, *PXFORML;
01129 
01130 typedef struct _XFORMOBJ {
01131   ULONG  ulReserved;
01132 } XFORMOBJ;
01133 
01134 /* XLATEOBJ.flXlate constants */
01135 #define XO_TRIVIAL                        0x00000001
01136 #define XO_TABLE                          0x00000002
01137 #define XO_TO_MONO                        0x00000004
01138 #define XO_FROM_CMYK                      0x00000008
01139 #define XO_DEVICE_ICM                     0x00000010
01140 #define XO_HOST_ICM                       0x00000020
01141 
01142 typedef struct _XLATEOBJ {
01143   ULONG  iUniq;
01144   FLONG  flXlate;
01145   USHORT  iSrcType;
01146   USHORT  iDstType;
01147   ULONG  cEntries;
01148   ULONG  *pulXlate;
01149 } XLATEOBJ;
01150 
01151 typedef VOID DDKAPI (CALLBACK *WNDOBJCHANGEPROC)(
01152   /*IN*/ WNDOBJ  *pwo,
01153   /*IN*/ FLONG  fl);
01154 
01155 
01156 WIN32KAPI
01157 HANDLE
01158 DDKAPI
01159 BRUSHOBJ_hGetColorTransform(
01160   /*IN*/ BRUSHOBJ  *pbo);
01161 
01162 WIN32KAPI
01163 PVOID
01164 DDKAPI
01165 BRUSHOBJ_pvAllocRbrush(
01166   /*IN*/ BRUSHOBJ  *pbo,
01167   /*IN*/ ULONG  cj);
01168 
01169 WIN32KAPI
01170 PVOID
01171 DDKAPI
01172 BRUSHOBJ_pvGetRbrush(
01173   /*IN*/ BRUSHOBJ  *pbo);
01174 
01175 WIN32KAPI
01176 ULONG
01177 DDKAPI
01178 BRUSHOBJ_ulGetBrushColor(
01179   /*IN*/ BRUSHOBJ  *pbo);
01180 
01181 WIN32KAPI
01182 BOOL
01183 DDKAPI
01184 CLIPOBJ_bEnum(
01185   /*IN*/ CLIPOBJ  *pco,
01186   /*IN*/ ULONG  cj,
01187 
01188   /*OUT*/ ULONG  *pv);
01189 
01190 /* CLIPOBJ_cEnumStart.iType constants */
01191 #define CT_RECTANGLES                     0L
01192 
01193 /* CLIPOBJ_cEnumStart.iDirection constants */
01194 #define CD_RIGHTDOWN                      0x00000000
01195 #define CD_LEFTDOWN                       0x00000001
01196 #define CD_LEFTWARDS                      0x00000001
01197 #define CD_RIGHTUP                        0x00000002
01198 #define CD_UPWARDS                        0x00000002
01199 #define CD_LEFTUP                         0x00000003
01200 #define CD_ANY                            0x00000004
01201 
01202 WIN32KAPI
01203 ULONG
01204 DDKAPI
01205 CLIPOBJ_cEnumStart(
01206   /*IN*/ CLIPOBJ  *pco,
01207   /*IN*/ BOOL  bAll,
01208   /*IN*/ ULONG  iType,
01209   /*IN*/ ULONG  iDirection,
01210   /*IN*/ ULONG  cLimit);
01211 
01212 WIN32KAPI
01213 PATHOBJ*
01214 DDKAPI
01215 CLIPOBJ_ppoGetPath(
01216   /*IN*/ CLIPOBJ  *pco);
01217 
01218 WIN32KAPI
01219 VOID
01220 DDKAPI
01221 EngAcquireSemaphore(
01222   /*IN*/ HSEMAPHORE  hsem);
01223 
01224 #define FL_ZERO_MEMORY                    0x00000001
01225 #define FL_NONPAGED_MEMORY                0x00000002
01226 
01227 WIN32KAPI
01228 PVOID
01229 DDKAPI
01230 EngAllocMem(
01231   /*IN*/ ULONG  Flags,
01232   /*IN*/ ULONG  MemSize,
01233   /*IN*/ ULONG  Tag);
01234 
01235 WIN32KAPI
01236 PVOID
01237 DDKAPI
01238 EngAllocPrivateUserMem(
01239   /*IN*/ PDD_SURFACE_LOCAL  psl,
01240   /*IN*/ SIZE_T  cj,
01241   /*IN*/ ULONG  tag);
01242 
01243 WIN32KAPI
01244 PVOID
01245 DDKAPI
01246 EngAllocUserMem(
01247   /*IN*/ SIZE_T  cj,
01248   /*IN*/ ULONG  tag);
01249 
01250 WIN32KAPI
01251 BOOL
01252 DDKAPI
01253 EngAlphaBlend(
01254   /*IN*/ SURFOBJ  *psoDest,
01255   /*IN*/ SURFOBJ  *psoSrc,
01256   /*IN*/ CLIPOBJ  *pco,
01257   /*IN*/ XLATEOBJ  *pxlo,
01258   /*IN*/ RECTL  *prclDest,
01259   /*IN*/ RECTL  *prclSrc,
01260   /*IN*/ BLENDOBJ  *pBlendObj);
01261 
01262 /* EngAssociateSurface.flHooks constants */
01263 #define HOOK_BITBLT                       0x00000001
01264 #define HOOK_STRETCHBLT                   0x00000002
01265 #define HOOK_PLGBLT                       0x00000004
01266 #define HOOK_TEXTOUT                      0x00000008
01267 #define HOOK_PAINT                        0x00000010
01268 #define HOOK_STROKEPATH                   0x00000020
01269 #define HOOK_FILLPATH                     0x00000040
01270 #define HOOK_STROKEANDFILLPATH            0x00000080
01271 #define HOOK_LINETO                       0x00000100
01272 #define HOOK_COPYBITS                     0x00000400
01273 #define HOOK_MOVEPANNING                  0x00000800
01274 #define HOOK_SYNCHRONIZE                  0x00001000
01275 #define HOOK_STRETCHBLTROP                0x00002000
01276 #define HOOK_SYNCHRONIZEACCESS            0x00004000
01277 #define HOOK_TRANSPARENTBLT               0x00008000
01278 #define HOOK_ALPHABLEND                   0x00010000
01279 #define HOOK_GRADIENTFILL                 0x00020000
01280 #define HOOK_FLAGS                        0x0003b5ff
01281 
01282 WIN32KAPI
01283 BOOL
01284 DDKAPI
01285 EngAssociateSurface(
01286   /*IN*/ HSURF  hsurf,
01287   /*IN*/ HDEV  hdev,
01288   /*IN*/ FLONG  flHooks);
01289 
01290 WIN32KAPI
01291 BOOL
01292 DDKAPI
01293 EngBitBlt(
01294   /*IN*/ SURFOBJ  *psoTrg,
01295   /*IN*/ SURFOBJ  *psoSrc,
01296   /*IN*/ SURFOBJ  *psoMask,
01297   /*IN*/ CLIPOBJ  *pco,
01298   /*IN*/ XLATEOBJ  *pxlo,
01299   /*IN*/ RECTL  *prclTrg,
01300   /*IN*/ POINTL  *pptlSrc,
01301   /*IN*/ POINTL  *pptlMask,
01302   /*IN*/ BRUSHOBJ  *pbo,
01303   /*IN*/ POINTL  *pptlBrush,
01304   /*IN*/ ROP4  rop4);
01305 
01306 WIN32KAPI
01307 BOOL
01308 DDKAPI
01309 EngCheckAbort(
01310   /*IN*/ SURFOBJ  *pso);
01311 
01312 WIN32KAPI
01313 VOID
01314 DDKAPI
01315 EngClearEvent(
01316   /*IN*/ PEVENT  pEvent);
01317 
01318 WIN32KAPI
01319 FD_GLYPHSET*
01320 DDKAPI
01321 EngComputeGlyphSet(
01322   /*IN*/ INT  nCodePage,
01323   /*IN*/ INT  nFirstChar,
01324   /*IN*/ INT  cChars);
01325 
01326 /* EngControlSprites.fl constants */
01327 #define ECS_TEARDOWN                      0x00000001
01328 #define ECS_REDRAW                        0x00000002
01329 
01330 WIN32KAPI
01331 BOOL
01332 DDKAPI
01333 EngControlSprites(
01334   /*IN*/ WNDOBJ  *pwo,
01335   /*IN*/ FLONG  fl);
01336 
01337 WIN32KAPI
01338 BOOL
01339 DDKAPI
01340 EngCopyBits(
01341 
01342   /*OUT*/ SURFOBJ  *psoDest,
01343   /*IN*/ SURFOBJ  *psoSrc,
01344   /*IN*/ CLIPOBJ  *pco,
01345   /*IN*/ XLATEOBJ  *pxlo,
01346   /*IN*/ RECTL  *prclDest,
01347   /*IN*/ POINTL  *pptlSrc);
01348 
01349 WIN32KAPI
01350 HBITMAP
01351 DDKAPI
01352 EngCreateBitmap(
01353   /*IN*/ SIZEL  sizl,
01354   /*IN*/ LONG  lWidth,
01355   /*IN*/ ULONG  iFormat,
01356   /*IN*/ FLONG  fl,
01357   /*IN*/ PVOID  pvBits);
01358 
01359 WIN32KAPI
01360 CLIPOBJ*
01361 DDKAPI
01362 EngCreateClip(
01363   VOID);
01364 
01365 WIN32KAPI
01366 HBITMAP
01367 DDKAPI
01368 EngCreateDeviceBitmap(
01369   /*IN*/ DHSURF  dhsurf,
01370   /*IN*/ SIZEL  sizl,
01371   /*IN*/ ULONG  iFormatCompat);
01372 
01373 WIN32KAPI
01374 HSURF
01375 DDKAPI
01376 EngCreateDeviceSurface(
01377   DHSURF  dhsurf,
01378   SIZEL  sizl,
01379   ULONG  iFormatCompat);
01380 
01381 #if 0
01382 WIN32KAPI
01383 HDRVOBJ
01384 DDKAPI
01385 EngCreateDriverObj(
01386   PVOID  pvObj,
01387   FREEOBJPROC  pFreeObjProc,
01388   HDEV  hdev);
01389 #endif
01390 
01391 WIN32KAPI
01392 BOOL
01393 DDKAPI
01394 EngCreateEvent(
01395 
01396   /*OUT*/ PEVENT  *ppEvent);
01397 
01398 /* EngCreatePalette.iMode constants */
01399 #define PAL_INDEXED                       0x00000001
01400 #define PAL_BITFIELDS                     0x00000002
01401 #define PAL_RGB                           0x00000004
01402 #define PAL_BGR                           0x00000008
01403 #define PAL_CMYK                          0x00000010
01404 
01405 WIN32KAPI
01406 HPALETTE
01407 DDKAPI
01408 EngCreatePalette(
01409   /*IN*/ ULONG  iMode,
01410   /*IN*/ ULONG  cColors,
01411   /*IN*/ ULONG  *pulColors,
01412   /*IN*/ FLONG  flRed,
01413   /*IN*/ FLONG  flGreen,
01414   /*IN*/ FLONG  flBlue);
01415 
01416 WIN32KAPI
01417 PATHOBJ*
01418 DDKAPI
01419 EngCreatePath(
01420   VOID);
01421 
01422 WIN32KAPI
01423 HSEMAPHORE
01424 DDKAPI
01425 EngCreateSemaphore(
01426   VOID);
01427 
01428 /* EngCreateWnd.fl constants */
01429 #define WO_RGN_CLIENT_DELTA               0x00000001
01430 #define WO_RGN_CLIENT                     0x00000002
01431 #define WO_RGN_SURFACE_DELTA              0x00000004
01432 #define WO_RGN_SURFACE                    0x00000008
01433 #define WO_RGN_UPDATE_ALL                 0x00000010
01434 #define WO_RGN_WINDOW                     0x00000020
01435 #define WO_DRAW_NOTIFY                    0x00000040
01436 #define WO_SPRITE_NOTIFY                  0x00000080
01437 #define WO_RGN_DESKTOP_COORD              0x00000100
01438 
01439 WIN32KAPI
01440 WNDOBJ*
01441 DDKAPI
01442 EngCreateWnd(
01443   SURFOBJ  *pso,
01444   HWND  hwnd,
01445   WNDOBJCHANGEPROC  pfn,
01446   FLONG  fl,
01447   int  iPixelFormat);
01448 
01449 WIN32KAPI
01450 VOID
01451 DDKAPI
01452 EngDebugBreak(
01453   VOID);
01454 
01455 WIN32KAPI
01456 VOID
01457 DDKAPI
01458 EngDebugPrint(
01459   /*IN*/ PCHAR StandardPrefix,
01460   /*IN*/ PCHAR DebugMessage,
01461   /*IN*/ va_list ap);
01462 
01463 WIN32KAPI
01464 VOID
01465 DDKAPI
01466 EngDeleteClip(
01467   /*IN*/ CLIPOBJ  *pco);
01468 
01469 WIN32KAPI
01470 BOOL
01471 DDKAPI
01472 EngDeleteDriverObj(
01473   /*IN*/ HDRVOBJ  hdo,
01474   /*IN*/ BOOL  bCallBack,
01475   /*IN*/ BOOL  bLocked);
01476 
01477 WIN32KAPI
01478 BOOL
01479 DDKAPI
01480 EngDeleteEvent(
01481   /*IN*/ PEVENT  pEvent);
01482 
01483 WIN32KAPI
01484 BOOL
01485 DDKAPI
01486 EngDeleteFile(
01487   /*IN*/ LPWSTR  pwszFileName);
01488 
01489 WIN32KAPI
01490 BOOL
01491 DDKAPI
01492 EngDeletePalette(
01493   /*IN*/ HPALETTE  hpal);
01494 
01495 WIN32KAPI
01496 VOID
01497 DDKAPI
01498 EngDeletePath(
01499   /*IN*/ PATHOBJ  *ppo);
01500 
01501 WIN32KAPI
01502 VOID
01503 DDKAPI
01504 EngDeleteSafeSemaphore(
01505   /*IN OUT*/ ENGSAFESEMAPHORE  *pssem);
01506 
01507 WIN32KAPI
01508 VOID
01509 DDKAPI
01510 EngDeleteSemaphore(
01511   /*IN OUT*/ HSEMAPHORE  hsem);
01512 
01513 WIN32KAPI
01514 BOOL
01515 DDKAPI
01516 EngDeleteSurface(
01517   /*IN*/ HSURF  hsurf);
01518 
01519 WIN32KAPI
01520 VOID
01521 DDKAPI
01522 EngDeleteWnd(
01523   /*IN*/ WNDOBJ  *pwo);
01524 
01525 WIN32KAPI
01526 DWORD
01527 DDKAPI
01528 EngDeviceIoControl(
01529   /*IN*/ HANDLE  hDevice,
01530   /*IN*/ DWORD  dwIoControlCode,
01531   /*IN*/ LPVOID  lpInBuffer,
01532   /*IN*/ DWORD  nInBufferSize,
01533   /*IN OUT*/ LPVOID  lpOutBuffer,
01534   /*IN*/ DWORD  nOutBufferSize,
01535 
01536   /*OUT*/ LPDWORD  lpBytesReturned);
01537 
01538 WIN32KAPI
01539 ULONG
01540 DDKAPI
01541 EngDitherColor(
01542   /*IN*/ HDEV  hdev,
01543   /*IN*/ ULONG  iMode,
01544   /*IN*/ ULONG  rgb,
01545 
01546   /*OUT*/ ULONG  *pul);
01547 
01548 WIN32KAPI
01549 BOOL
01550 DDKAPI
01551 EngEnumForms(
01552   /*IN*/ HANDLE  hPrinter,
01553   /*IN*/ DWORD  Level,
01554 
01555   /*OUT*/ LPBYTE  pForm,
01556   /*IN*/ DWORD  cbBuf,
01557 
01558   /*OUT*/ LPDWORD  pcbNeeded,
01559 
01560   /*OUT*/ LPDWORD  pcReturned);
01561 
01562 WIN32KAPI
01563 BOOL
01564 DDKAPI
01565 EngEraseSurface(
01566   /*IN*/ SURFOBJ  *pso,
01567   /*IN*/ RECTL  *prcl,
01568   /*IN*/ ULONG  iColor);
01569 
01570 WIN32KAPI
01571 BOOL
01572 DDKAPI
01573 EngFillPath(
01574   /*IN*/ SURFOBJ  *pso,
01575   /*IN*/ PATHOBJ  *ppo,
01576   /*IN*/ CLIPOBJ  *pco,
01577   /*IN*/ BRUSHOBJ  *pbo,
01578   /*IN*/ POINTL  *pptlBrushOrg,
01579   /*IN*/ MIX  mix,
01580   /*IN*/ FLONG  flOptions);
01581 
01582 WIN32KAPI
01583 PVOID
01584 DDKAPI
01585 EngFindImageProcAddress(
01586   /*IN*/ HANDLE  hModule,
01587   /*IN*/ LPSTR  lpProcName);
01588 
01589 WIN32KAPI
01590 PVOID
01591 DDKAPI
01592 EngFindResource(
01593   /*IN*/ HANDLE  h,
01594   /*IN*/ int  iName,
01595   /*IN*/ int  iType,
01596 
01597   /*OUT*/ PULONG  pulSize);
01598 
01599 WIN32KAPI
01600 PVOID
01601 DDKAPI
01602 EngFntCacheAlloc(
01603   /*IN*/ ULONG  FastCheckSum,
01604   /*IN*/ ULONG  ulSize);
01605 
01606 /* EngFntCacheFault.iFaultMode constants */
01607 #define ENG_FNT_CACHE_READ_FAULT          0x00000001
01608 #define ENG_FNT_CACHE_WRITE_FAULT         0x00000002
01609 
01610 WIN32KAPI
01611 VOID
01612 DDKAPI
01613 EngFntCacheFault(
01614   /*IN*/ ULONG  ulFastCheckSum,
01615   /*IN*/ ULONG  iFaultMode);
01616 
01617 WIN32KAPI
01618 PVOID
01619 DDKAPI
01620 EngFntCacheLookUp(
01621   /*IN*/ ULONG  FastCheckSum,
01622 
01623   /*OUT*/ ULONG  *pulSize);
01624 
01625 WIN32KAPI
01626 VOID
01627 DDKAPI
01628 EngFreeMem(
01629   /*IN*/ PVOID  Mem);
01630 
01631 WIN32KAPI
01632 VOID
01633 DDKAPI
01634 EngFreeModule(
01635   /*IN*/ HANDLE  h);
01636 
01637 WIN32KAPI
01638 VOID
01639 DDKAPI
01640 EngFreePrivateUserMem(
01641   /*IN*/ PDD_SURFACE_LOCAL  psl,
01642   /*IN*/ PVOID  pv);
01643 
01644 WIN32KAPI
01645 VOID
01646 DDKAPI
01647 EngFreeUserMem(
01648   /*IN*/ PVOID  pv);
01649 
01650 WIN32KAPI
01651 VOID
01652 DDKAPI
01653 EngGetCurrentCodePage(
01654 
01655   /*OUT*/ PUSHORT  OemCodePage,
01656 
01657   /*OUT*/ PUSHORT  AnsiCodePage);
01658 
01659 WIN32KAPI
01660 HANDLE
01661 DDKAPI
01662 EngGetCurrentProcessId(
01663   VOID);
01664 
01665 WIN32KAPI
01666 HANDLE
01667 DDKAPI
01668 EngGetCurrentThreadId(
01669   VOID);
01670 
01671 WIN32KAPI
01672 LPWSTR
01673 DDKAPI
01674 EngGetDriverName(
01675   /*IN*/ HDEV  hdev);
01676 
01677 WIN32KAPI
01678 BOOL
01679 DDKAPI
01680 EngGetFileChangeTime(
01681   /*IN*/ HANDLE  h,
01682 
01683   /*OUT*/ LARGE_INTEGER  *pChangeTime);
01684 
01685 WIN32KAPI
01686 BOOL
01687 DDKAPI
01688 EngGetFilePath(
01689   /*IN*/ HANDLE  h,
01690 
01691   /*OUT*/ WCHAR  (*pDest)[MAX_PATH+1]);
01692 
01693 WIN32KAPI
01694 BOOL
01695 DDKAPI
01696 EngGetForm(
01697   /*IN*/ HANDLE  hPrinter,
01698   /*IN*/ LPWSTR  pFormName,
01699   /*IN*/ DWORD  Level,
01700 
01701   /*OUT*/ LPBYTE  pForm,
01702   /*IN*/ DWORD  cbBuf,
01703 
01704   /*OUT*/ LPDWORD  pcbNeeded);
01705 
01706 WIN32KAPI
01707 ULONG
01708 DDKAPI
01709 EngGetLastError(
01710   VOID);
01711 
01712 WIN32KAPI
01713 BOOL
01714 DDKAPI
01715 EngGetPrinter(
01716   /*IN*/ HANDLE  hPrinter,
01717   /*IN*/ DWORD  dwLevel,
01718 
01719   /*OUT*/ LPBYTE  pPrinter,
01720   /*IN*/ DWORD  cbBuf,
01721 
01722   /*OUT*/ LPDWORD  pcbNeeded);
01723 
01724 WIN32KAPI
01725 DWORD
01726 DDKAPI
01727 EngGetPrinterData(
01728   /*IN*/ HANDLE  hPrinter,
01729   /*IN*/ LPWSTR  pValueName,
01730 
01731   /*OUT*/ LPDWORD  pType,
01732 
01733   /*OUT*/ LPBYTE  pData,
01734   /*IN*/ DWORD  nSize,
01735 
01736   /*OUT*/ LPDWORD  pcbNeeded);
01737 
01738 WIN32KAPI
01739 LPWSTR
01740 DDKAPI
01741 EngGetPrinterDataFileName(
01742   /*IN*/ HDEV  hdev);
01743 
01744 WIN32KAPI
01745 BOOL
01746 DDKAPI
01747 EngGetPrinterDriver(
01748   /*IN*/ HANDLE  hPrinter,
01749   /*IN*/ LPWSTR  pEnvironment,
01750   /*IN*/ DWORD  dwLevel,
01751 
01752   /*OUT*/ BYTE  *lpbDrvInfo,
01753   /*IN*/ DWORD  cbBuf,
01754 
01755   /*OUT*/ DWORD  *pcbNeeded);
01756 
01757 WIN32KAPI
01758 HANDLE
01759 DDKAPI
01760 EngGetProcessHandle(
01761   VOID);
01762 
01763 WIN32KAPI
01764 BOOL
01765 DDKAPI
01766 EngGetType1FontList(
01767   /*IN*/ HDEV  hdev,
01768 
01769   /*OUT*/ TYPE1_FONT  *pType1Buffer,
01770   /*IN*/ ULONG  cjType1Buffer,
01771 
01772   /*OUT*/ PULONG  pulLocalFonts,
01773 
01774   /*OUT*/ PULONG  pulRemoteFonts,
01775 
01776   /*OUT*/ LARGE_INTEGER  *pLastModified);
01777 
01778 WIN32KAPI
01779 BOOL
01780 DDKAPI
01781 EngGradientFill(
01782   /*IN*/ SURFOBJ  *psoDest,
01783   /*IN*/ CLIPOBJ  *pco,
01784   /*IN*/ XLATEOBJ  *pxlo,
01785   /*IN*/ TRIVERTEX  *pVertex,
01786   /*IN*/ ULONG  nVertex,
01787   /*IN*/ PVOID  pMesh,
01788   /*IN*/ ULONG  nMesh,
01789   /*IN*/ RECTL  *prclExtents,
01790   /*IN*/ POINTL  *pptlDitherOrg,
01791   /*IN*/ ULONG  ulMode);
01792 
01793 /* EngHangNotification return values */
01794 #define EHN_RESTORED                      0x00000000
01795 #define EHN_ERROR                         0x00000001
01796 
01797 WIN32KAPI
01798 ULONG
01799 DDKAPI
01800 EngHangNotification(
01801   /*IN*/ HDEV  hDev,
01802   /*IN*/ PVOID  Reserved);
01803 
01804 WIN32KAPI
01805 BOOL
01806 DDKAPI
01807 EngInitializeSafeSemaphore(
01808 
01809   /*OUT*/ ENGSAFESEMAPHORE  *pssem);
01810 
01811 WIN32KAPI
01812 BOOL
01813 DDKAPI
01814 EngIsSemaphoreOwned(
01815   /*IN*/ HSEMAPHORE  hsem);
01816 
01817 WIN32KAPI
01818 BOOL
01819 DDKAPI
01820 EngIsSemaphoreOwnedByCurrentThread(
01821   /*IN*/ HSEMAPHORE  hsem);
01822 
01823 WIN32KAPI
01824 BOOL
01825 DDKAPI
01826 EngLineTo(
01827   SURFOBJ  *pso,
01828   CLIPOBJ  *pco,
01829   BRUSHOBJ  *pbo,
01830   LONG  x1,
01831   LONG  y1,
01832   LONG  x2,
01833   LONG  y2,
01834   RECTL  *prclBounds,
01835   MIX  mix);
01836 
01837 WIN32KAPI
01838 HANDLE
01839 DDKAPI
01840 EngLoadImage(
01841   /*IN*/ LPWSTR  pwszDriver);
01842 
01843 WIN32KAPI
01844 HANDLE
01845 DDKAPI
01846 EngLoadModule(
01847   /*IN*/ LPWSTR  pwsz);
01848 
01849 WIN32KAPI
01850 HANDLE
01851 DDKAPI
01852 EngLoadModuleForWrite(
01853   /*IN*/ LPWSTR  pwsz,
01854   /*IN*/ ULONG  cjSizeOfModule);
01855 
01856 WIN32KAPI
01857 PDD_SURFACE_LOCAL
01858 DDKAPI
01859 EngLockDirectDrawSurface(
01860   /*IN*/ HANDLE  hSurface);
01861 
01862 WIN32KAPI
01863 DRIVEROBJ*
01864 DDKAPI
01865 EngLockDriverObj(
01866   /*IN*/ HDRVOBJ  hdo);
01867 
01868 WIN32KAPI
01869 SURFOBJ*
01870 DDKAPI
01871 EngLockSurface(
01872   /*IN*/ HSURF  hsurf);
01873 
01874 WIN32KAPI
01875 BOOL
01876 DDKAPI
01877 EngLpkInstalled(
01878   VOID);
01879 
01880 WIN32KAPI
01881 PEVENT
01882 DDKAPI
01883 EngMapEvent(
01884   /*IN*/ HDEV  hDev,
01885   /*IN*/ HANDLE  hUserObject,
01886   /*IN*/ PVOID  Reserved1,
01887   /*IN*/ PVOID  Reserved2,
01888   /*IN*/ PVOID  Reserved3);
01889 
01890 WIN32KAPI
01891 PVOID
01892 DDKAPI
01893 EngMapFile(
01894   /*IN*/ LPWSTR  pwsz,
01895   /*IN*/ ULONG  cjSize,
01896 
01897   /*OUT*/ ULONG_PTR  *piFile);
01898 
01899 WIN32KAPI
01900 BOOL
01901 DDKAPI
01902 EngMapFontFile(
01903   ULONG_PTR  iFile,
01904   PULONG  *ppjBuf,
01905   ULONG  *pcjBuf);
01906 
01907 WIN32KAPI
01908 BOOL
01909 DDKAPI
01910 EngMapFontFileFD(
01911   /*IN*/ ULONG_PTR  iFile,
01912 
01913   /*OUT*/ PULONG  *ppjBuf,
01914 
01915   /*OUT*/ ULONG  *pcjBuf);
01916 
01917 WIN32KAPI
01918 PVOID
01919 DDKAPI
01920 EngMapModule(
01921   /*IN*/ HANDLE  h,
01922 
01923   /*OUT*/ PULONG  pSize);
01924 
01925 WIN32KAPI
01926 BOOL
01927 DDKAPI
01928 EngMarkBandingSurface(
01929   /*IN*/ HSURF  hsurf);
01930 
01931 /* EngModifySurface.flSurface constants */
01932 #define MS_NOTSYSTEMMEMORY                0x00000001
01933 #define MS_SHAREDACCESS                   0x00000002
01934 
01935 WIN32KAPI
01936 BOOL
01937 DDKAPI
01938 EngModifySurface(
01939   /*IN*/ HSURF  hsurf,
01940   /*IN*/ HDEV  hdev,
01941   /*IN*/ FLONG  flHooks,
01942   /*IN*/ FLONG  flSurface,
01943   /*IN*/ DHSURF  dhsurf,
01944   /*IN*/ VOID  *pvScan0,
01945   /*IN*/ LONG  lDelta,
01946   /*IN*/ VOID  *pvReserved);
01947 
01948 WIN32KAPI
01949 VOID
01950 DDKAPI
01951 EngMovePointer(
01952   /*IN*/ SURFOBJ  *pso,
01953   /*IN*/ LONG  x,
01954   /*IN*/ LONG  y,
01955   /*IN*/ RECTL  *prcl);
01956 
01957 WIN32KAPI
01958 int
01959 DDKAPI
01960 EngMulDiv(
01961   /*IN*/ int  a,
01962   /*IN*/ int  b,
01963   /*IN*/ int  c);
01964 
01965 WIN32KAPI
01966 VOID
01967 DDKAPI
01968 EngMultiByteToUnicodeN(
01969 
01970   /*OUT*/ LPWSTR  UnicodeString,
01971   /*IN*/ ULONG  MaxBytesInUnicodeString,
01972 
01973   /*OUT*/ PULONG  BytesInUnicodeString,
01974   /*IN*/ PCHAR  MultiByteString,
01975   /*IN*/ ULONG  BytesInMultiByteString);
01976 
01977 WIN32KAPI
01978 INT
01979 DDKAPI
01980 EngMultiByteToWideChar(
01981   /*IN*/ UINT  CodePage,
01982 
01983   /*OUT*/ LPWSTR  WideCharString,
01984   /*IN*/ INT  BytesInWideCharString,
01985   /*IN*/ LPSTR  MultiByteString,
01986   /*IN*/ INT  BytesInMultiByteString);
01987 
01988 WIN32KAPI
01989 BOOL
01990 DDKAPI
01991 EngPaint(
01992   /*IN*/ SURFOBJ  *pso,
01993   /*IN*/ CLIPOBJ  *pco,
01994   /*IN*/ BRUSHOBJ  *pbo,
01995   /*IN*/ POINTL  *pptlBrushOrg,
01996   /*IN*/ MIX  mix);
01997 
01998 WIN32KAPI
01999 BOOL
02000 DDKAPI
02001 EngPlgBlt(
02002   /*IN*/ SURFOBJ  *psoTrg,
02003   /*IN*/ SURFOBJ  *psoSrc,
02004   /*IN*/ SURFOBJ  *psoMsk,
02005   /*IN*/ CLIPOBJ  *pco,
02006   /*IN*/ XLATEOBJ  *pxlo,
02007   /*IN*/ COLORADJUSTMENT  *pca,
02008   /*IN*/ POINTL  *pptlBrushOrg,
02009   /*IN*/ POINTFIX  *pptfx,
02010   /*IN*/ RECTL  *prcl,
02011   /*IN*/ POINTL  *pptl,
02012   /*IN*/ ULONG  iMode);
02013 
02014 WIN32KAPI
02015 VOID
02016 DDKAPI
02017 EngProbeForRead(
02018   /*IN*/ PVOID  Address,
02019   /*IN*/ ULONG  Length,
02020   /*IN*/ ULONG  Alignment);
02021 
02022 WIN32KAPI
02023 VOID
02024 DDKAPI
02025 EngProbeForReadAndWrite(
02026   /*IN*/ PVOID  Address,
02027   /*IN*/ ULONG  Length,
02028   /*IN*/ ULONG  Alignment);
02029 
02030 typedef enum _ENG_DEVICE_ATTRIBUTE {
02031   QDA_RESERVED = 0,
02032   QDA_ACCELERATION_LEVEL
02033 } ENG_DEVICE_ATTRIBUTE;
02034 
02035 WIN32KAPI
02036 BOOL
02037 DDKAPI
02038 EngQueryDeviceAttribute(
02039   /*IN*/ HDEV  hdev,
02040   /*IN*/ ENG_DEVICE_ATTRIBUTE  devAttr,
02041   /*IN*/ VOID  *pvIn,
02042   /*IN*/ ULONG  ulInSize,
02043 
02044   /*OUT*/ VOID  *pvOut,
02045 
02046   /*OUT*/ ULONG  ulOutSize);
02047 
02048 WIN32KAPI
02049 LARGE_INTEGER
02050 DDKAPI
02051 EngQueryFileTimeStamp(
02052   /*IN*/ LPWSTR  pwsz);
02053 
02054 WIN32KAPI
02055 VOID
02056 DDKAPI
02057 EngQueryLocalTime(
02058 
02059   /*OUT*/ PENG_TIME_FIELDS  ptf);
02060 
02061 WIN32KAPI
02062 ULONG
02063 DDKAPI
02064 EngQueryPalette(
02065   /*IN*/ HPALETTE  hPal,
02066 
02067   /*OUT*/ ULONG  *piMode,
02068   /*IN*/ ULONG  cColors,
02069 
02070   /*OUT*/ ULONG  *pulColors);
02071 
02072 WIN32KAPI
02073 VOID
02074 DDKAPI
02075 EngQueryPerformanceCounter(
02076 
02077   /*OUT*/ LONGLONG  *pPerformanceCount);
02078 
02079 WIN32KAPI
02080 VOID
02081 DDKAPI
02082 EngQueryPerformanceFrequency(
02083 
02084   /*OUT*/ LONGLONG  *pFrequency);
02085 
02086 typedef enum _ENG_SYSTEM_ATTRIBUTE {
02087   EngProcessorFeature = 1,
02088   EngNumberOfProcessors,
02089   EngOptimumAvailableUserMemory,
02090   EngOptimumAvailableSystemMemory,
02091 } ENG_SYSTEM_ATTRIBUTE;
02092 
02093 #define QSA_MMX                           0x00000100
02094 #define QSA_SSE                           0x00002000
02095 #define QSA_3DNOW                         0x00004000
02096 
02097 WIN32KAPI
02098 BOOL
02099 DDKAPI
02100 EngQuerySystemAttribute(
02101   /*IN*/ ENG_SYSTEM_ATTRIBUTE  CapNum,
02102 
02103   /*OUT*/ PDWORD  pCapability);
02104 
02105 WIN32KAPI
02106 LONG
02107 DDKAPI
02108 EngReadStateEvent(
02109   /*IN*/ PEVENT  pEvent);
02110 
02111 WIN32KAPI
02112 VOID
02113 DDKAPI
02114 EngReleaseSemaphore(
02115   /*IN*/ HSEMAPHORE  hsem);
02116 
02117 WIN32KAPI
02118 BOOL
02119 DDKAPI
02120 EngRestoreFloatingPointState(
02121   /*IN*/ VOID  *pBuffer);
02122 
02123 WIN32KAPI
02124 ULONG
02125 DDKAPI
02126 EngSaveFloatingPointState(
02127 
02128   /*OUT*/ VOID  *pBuffer,
02129   /*IN*/ ULONG  cjBufferSize);
02130 
02131 WIN32KAPI
02132 HANDLE
02133 DDKAPI
02134 EngSecureMem(
02135   /*IN*/ PVOID  Address,
02136   /*IN*/ ULONG  Length);
02137 
02138 WIN32KAPI
02139 LONG
02140 DDKAPI
02141 EngSetEvent(
02142   /*IN*/ PEVENT  pEvent);
02143 
02144 WIN32KAPI
02145 VOID
02146 DDKAPI
02147 EngSetLastError(
02148   /*IN*/ ULONG  iError);
02149 
02150 WIN32KAPI
02151 ULONG
02152 DDKAPI
02153 EngSetPointerShape(
02154   /*IN*/ SURFOBJ  *pso,
02155   /*IN*/ SURFOBJ  *psoMask,
02156   /*IN*/ SURFOBJ  *psoColor,
02157   /*IN*/ XLATEOBJ  *pxlo,
02158   /*IN*/ LONG  xHot,
02159   /*IN*/ LONG  yHot,
02160   /*IN*/ LONG  x,
02161   /*IN*/ LONG  y,
02162   /*IN*/ RECTL  *prcl,
02163   /*IN*/ FLONG  fl);
02164 
02165 WIN32KAPI
02166 BOOL
02167 DDKAPI
02168 EngSetPointerTag(
02169   /*IN*/ HDEV  hdev,
02170   /*IN*/ SURFOBJ  *psoMask,
02171   /*IN*/ SURFOBJ  *psoColor,
02172   /*IN*/ XLATEOBJ  *pxlo,
02173   /*IN*/ FLONG  fl);
02174 
02175 WIN32KAPI
02176 DWORD
02177 DDKAPI
02178 EngSetPrinterData(
02179   /*IN*/ HANDLE  hPrinter,
02180   /*IN*/ LPWSTR  pType,
02181   /*IN*/ DWORD  dwType,
02182   /*IN*/ LPBYTE  lpbPrinterData,
02183   /*IN*/ DWORD  cjPrinterData);
02184 
02185 typedef int DDKCDECLAPI (*SORTCOMP)(const void *pv1, const void *pv2);
02186 
02187 WIN32KAPI
02188 VOID
02189 DDKAPI
02190 EngSort(
02191   /*IN OUT*/ PBYTE  pjBuf,
02192   /*IN*/ ULONG  c,
02193   /*IN*/ ULONG  cjElem,
02194   /*IN*/ SORTCOMP  pfnComp);
02195 
02196 WIN32KAPI
02197 BOOL
02198 DDKAPI
02199 EngStretchBlt(
02200   /*IN*/ SURFOBJ  *psoDest,
02201   /*IN*/ SURFOBJ  *psoSrc,
02202   /*IN*/ SURFOBJ  *psoMask,
02203   /*IN*/ CLIPOBJ  *pco,
02204   /*IN*/ XLATEOBJ  *pxlo,
02205   /*IN*/ COLORADJUSTMENT  *pca,
02206   /*IN*/ POINTL  *pptlHTOrg,
02207   /*IN*/ RECTL  *prclDest,
02208   /*IN*/ RECTL  *prclSrc,
02209   /*IN*/ POINTL  *pptlMask,
02210   /*IN*/ ULONG  iMode);
02211 
02212 WIN32KAPI
02213 BOOL
02214 DDKAPI
02215 EngStretchBltROP(
02216   /*IN*/ SURFOBJ  *psoDest,
02217   /*IN*/ SURFOBJ  *psoSrc,
02218   /*IN*/ SURFOBJ  *psoMask,
02219   /*IN*/ CLIPOBJ  *pco,
02220   /*IN*/ XLATEOBJ  *pxlo,
02221   /*IN*/ COLORADJUSTMENT  *pca,
02222   /*IN*/ POINTL  *pptlHTOrg,
02223   /*IN*/ RECTL  *prclDest,
02224   /*IN*/ RECTL  *prclSrc,
02225   /*IN*/ POINTL  *pptlMask,
02226   /*IN*/ ULONG  iMode,
02227   /*IN*/ BRUSHOBJ  *pbo,
02228   /*IN*/ DWORD  rop4);
02229 
02230 WIN32KAPI
02231 BOOL
02232 DDKAPI
02233 EngStrokeAndFillPath(
02234   /*IN*/ SURFOBJ  *pso,
02235   /*IN*/ PATHOBJ  *ppo,
02236   /*IN*/ CLIPOBJ  *pco,
02237   /*IN*/ XFORMOBJ  *pxo,
02238   /*IN*/ BRUSHOBJ  *pboStroke,
02239   /*IN*/ LINEATTRS  *plineattrs,
02240   /*IN*/ BRUSHOBJ  *pboFill,
02241   /*IN*/ POINTL  *pptlBrushOrg,
02242   /*IN*/ MIX  mixFill,
02243   /*IN*/ FLONG  flOptions);
02244 
02245 WIN32KAPI
02246 BOOL
02247 DDKAPI
02248 EngStrokePath(
02249   /*IN*/ SURFOBJ  *pso,
02250   /*IN*/ PATHOBJ  *ppo,
02251   /*IN*/ CLIPOBJ  *pco,
02252   /*IN*/ XFORMOBJ  *pxo,
02253   /*IN*/ BRUSHOBJ  *pbo,
02254   /*IN*/ POINTL  *pptlBrushOrg,
02255   /*IN*/ LINEATTRS  *plineattrs,
02256   /*IN*/ MIX  mix);
02257 
02258 WIN32KAPI
02259 BOOL
02260 DDKAPI
02261 EngTextOut(
02262   /*IN*/ SURFOBJ  *pso,
02263   /*IN*/ STROBJ  *pstro,
02264   /*IN*/ FONTOBJ  *pfo,
02265   /*IN*/ CLIPOBJ  *pco,
02266   /*IN*/ RECTL  *prclExtra,
02267   /*IN*/ RECTL  *prclOpaque,
02268   /*IN*/ BRUSHOBJ  *pboFore,
02269   /*IN*/ BRUSHOBJ  *pboOpaque,
02270   /*IN*/ POINTL  *pptlOrg,
02271   /*IN*/ MIX  mix);
02272 
02273 WIN32KAPI
02274 BOOL
02275 DDKAPI
02276 EngTransparentBlt(
02277   /*IN*/ SURFOBJ  *psoDst,
02278   /*IN*/ SURFOBJ  *psoSrc,
02279   /*IN*/ CLIPOBJ  *pco,
02280   /*IN*/ XLATEOBJ  *pxlo,
02281   /*IN*/ RECTL  *prclDst,
02282   /*IN*/ RECTL  *prclSrc,
02283   /*IN*/ ULONG  iTransColor,
02284   /*IN*/ ULONG  ulReserved);
02285 
02286 WIN32KAPI
02287 VOID
02288 DDKAPI
02289 EngUnicodeToMultiByteN(
02290 
02291   /*OUT*/ PCHAR  MultiByteString,
02292   /*IN*/ ULONG  MaxBytesInMultiByteString,
02293 
02294   /*OUT*/ PULONG  BytesInMultiByteString,
02295   /*IN*/ PWSTR  UnicodeString,
02296   /*IN*/ ULONG  BytesInUnicodeString);
02297 
02298 WIN32KAPI
02299 VOID
02300 DDKAPI
02301 EngUnloadImage(
02302   /*IN*/ HANDLE  hModule);
02303 
02304 WIN32KAPI
02305 BOOL
02306 DDKAPI
02307 EngUnlockDirectDrawSurface(
02308   /*IN*/ PDD_SURFACE_LOCAL  pSurface);
02309 
02310 WIN32KAPI
02311 BOOL
02312 DDKAPI
02313 EngUnlockDriverObj(
02314   /*IN*/ HDRVOBJ  hdo);
02315 
02316 WIN32KAPI
02317 VOID
02318 DDKAPI
02319 EngUnlockSurface(
02320   /*IN*/ SURFOBJ  *pso);
02321 
02322 WIN32KAPI
02323 BOOL
02324 DDKAPI
02325 EngUnmapEvent(
02326   /*IN*/ PEVENT  pEvent);
02327 
02328 WIN32KAPI
02329 BOOL
02330 DDKAPI
02331 EngUnmapFile(
02332   /*IN*/ ULONG_PTR  iFile);
02333 
02334 WIN32KAPI
02335 VOID
02336 DDKAPI
02337 EngUnmapFontFile(
02338   ULONG_PTR  iFile);
02339 
02340 WIN32KAPI
02341 VOID
02342 DDKAPI
02343 EngUnmapFontFileFD(
02344   /*IN*/ ULONG_PTR  iFile);
02345 
02346 WIN32KAPI
02347 VOID
02348 DDKAPI
02349 EngUnsecureMem(
02350   /*IN*/ HANDLE  hSecure);
02351 
02352 WIN32KAPI
02353 BOOL
02354 DDKAPI
02355 EngWaitForSingleObject(
02356   /*IN*/ PEVENT  pEvent,
02357   /*IN*/ PLARGE_INTEGER  pTimeOut);
02358 
02359 WIN32KAPI
02360 INT
02361 DDKAPI
02362 EngWideCharToMultiByte(
02363   /*IN*/ UINT  CodePage,
02364   /*IN*/ LPWSTR  WideCharString,
02365   /*IN*/ INT  BytesInWideCharString,
02366 
02367   /*OUT*/ LPSTR  MultiByteString,
02368   /*IN*/ INT  BytesInMultiByteString);
02369 
02370 WIN32KAPI
02371 BOOL
02372 DDKAPI
02373 EngWritePrinter(
02374   /*IN*/ HANDLE  hPrinter,
02375   /*IN*/ LPVOID  pBuf,
02376   /*IN*/ DWORD  cbBuf,
02377 
02378   /*OUT*/ LPDWORD  pcWritten);
02379 
02380 WIN32KAPI
02381 VOID
02382 DDKAPI
02383 FLOATOBJ_Add(
02384   /*IN OUT*/ PFLOATOBJ  pf,
02385   /*IN*/ PFLOATOBJ  pf1);
02386 
02387 WIN32KAPI
02388 VOID
02389 DDKAPI
02390 FLOATOBJ_AddFloat(
02391   /*IN OUT*/ PFLOATOBJ  pf,
02392   /*IN*/ FLOATL  f);
02393 
02394 WIN32KAPI
02395 VOID
02396 DDKAPI
02397 FLOATOBJ_AddLong(
02398   /*IN OUT*/ PFLOATOBJ  pf,
02399   /*IN*/ LONG  l);
02400 
02401 WIN32KAPI
02402 VOID
02403 DDKAPI
02404 FLOATOBJ_Div(
02405   /*IN OUT*/ PFLOATOBJ  pf,
02406   /*IN*/ PFLOATOBJ  pf1);
02407 
02408 WIN32KAPI
02409 VOID
02410 DDKAPI
02411 FLOATOBJ_DivFloat(
02412   /*IN OUT*/ PFLOATOBJ  pf,
02413   /*IN*/ FLOATL  f);
02414 
02415 WIN32KAPI
02416 VOID
02417 DDKAPI
02418 FLOATOBJ_DivLong(
02419   /*IN OUT*/ PFLOATOBJ  pf,
02420   /*IN*/ LONG  l);
02421 
02422 WIN32KAPI
02423 BOOL
02424 DDKAPI
02425 FLOATOBJ_Equal(
02426   /*IN*/ PFLOATOBJ  pf,
02427   /*IN*/ PFLOATOBJ  pf1);
02428 
02429 WIN32KAPI
02430 BOOL
02431 DDKAPI
02432 FLOATOBJ_EqualLong(
02433   /*IN*/ PFLOATOBJ  pf,
02434   /*IN*/ LONG  l);
02435 
02436 WIN32KAPI
02437 LONG
02438 DDKAPI
02439 FLOATOBJ_GetFloat(
02440   /*IN*/ PFLOATOBJ  pf);
02441 
02442 WIN32KAPI
02443 LONG
02444 DDKAPI
02445 FLOATOBJ_GetLong(
02446   /*IN*/ PFLOATOBJ  pf);
02447 
02448 WIN32KAPI
02449 BOOL
02450 DDKAPI
02451 FLOATOBJ_GreaterThan(
02452   /*IN*/ PFLOATOBJ  pf,
02453   /*IN*/ PFLOATOBJ  pf1);
02454 
02455 WIN32KAPI
02456 BOOL
02457 DDKAPI
02458 FLOATOBJ_GreaterThanLong(
02459   /*IN*/ PFLOATOBJ  pf,
02460   /*IN*/ LONG  l);
02461 
02462 WIN32KAPI
02463 BOOL
02464 DDKAPI
02465 FLOATOBJ_LessThan(
02466   /*IN*/ PFLOATOBJ  pf,
02467   /*IN*/ PFLOATOBJ  pf1);
02468 
02469 WIN32KAPI
02470 BOOL
02471 DDKAPI
02472 FLOATOBJ_LessThanLong(
02473   /*IN*/ PFLOATOBJ  pf,
02474   /*IN*/ LONG  l);
02475 
02476 WIN32KAPI
02477 VOID
02478 DDKAPI
02479 FLOATOBJ_Mul(
02480   /*IN OUT*/ PFLOATOBJ  pf,
02481   /*IN*/ PFLOATOBJ  pf1);
02482 
02483 WIN32KAPI
02484 VOID
02485 DDKAPI
02486 FLOATOBJ_MulFloat(
02487   /*IN OUT*/ PFLOATOBJ  pf,
02488   /*IN*/ FLOATL  f);
02489 
02490 WIN32KAPI
02491 VOID
02492 DDKAPI
02493 FLOATOBJ_MulLong(
02494   /*IN OUT*/ PFLOATOBJ  pf,
02495   /*IN*/ LONG  l);
02496 
02497 WIN32KAPI
02498 VOID
02499 DDKAPI
02500 FLOATOBJ_Neg(
02501   /*IN OUT*/ PFLOATOBJ  pf);
02502 
02503 WIN32KAPI
02504 VOID
02505 DDKAPI
02506 FLOATOBJ_SetFloat(
02507 
02508   /*OUT*/ PFLOATOBJ  pf,
02509   /*IN*/ FLOATL  f);
02510 
02511 WIN32KAPI
02512 VOID
02513 DDKAPI
02514 FLOATOBJ_SetLong(
02515 
02516   /*OUT*/ PFLOATOBJ  pf,
02517   /*IN*/ LONG  l);
02518 
02519 WIN32KAPI
02520 VOID
02521 DDKAPI
02522 FLOATOBJ_Sub(
02523   /*IN OUT*/ PFLOATOBJ  pf,
02524   /*IN*/ PFLOATOBJ  pf1);
02525 
02526 WIN32KAPI
02527 VOID
02528 DDKAPI
02529 FLOATOBJ_SubFloat(
02530   /*IN OUT*/ PFLOATOBJ  pf,
02531   /*IN*/ FLOATL  f);
02532 
02533 WIN32KAPI
02534 VOID
02535 DDKAPI
02536 FLOATOBJ_SubLong(
02537   /*IN OUT*/ PFLOATOBJ  pf,
02538   /*IN*/ LONG  l);
02539 
02540 WIN32KAPI
02541 ULONG
02542 DDKAPI
02543 FONTOBJ_cGetAllGlyphHandles(
02544   /*IN*/ FONTOBJ  *pfo,
02545 
02546   /*OUT*/ HGLYPH  *phg);
02547 
02548 WIN32KAPI
02549 ULONG
02550 DDKAPI
02551 FONTOBJ_cGetGlyphs(
02552   /*IN*/ FONTOBJ  *pfo,
02553   /*IN*/ ULONG  iMode,
02554   /*IN*/ ULONG  cGlyph,
02555   /*IN*/ HGLYPH  *phg,
02556 
02557   /*OUT*/ PVOID  *ppvGlyph);
02558 
02559 WIN32KAPI
02560 FD_GLYPHSET*
02561 DDKAPI
02562 FONTOBJ_pfdg(
02563   /*IN*/ FONTOBJ  *pfo);
02564 
02565 WIN32KAPI
02566 IFIMETRICS*
02567 DDKAPI
02568 FONTOBJ_pifi(
02569   /*IN*/ FONTOBJ  *pfo);
02570 
02571 WIN32KAPI
02572 PBYTE
02573 DDKAPI
02574 FONTOBJ_pjOpenTypeTablePointer(
02575   /*IN*/ FONTOBJ  *pfo,
02576   /*IN*/ ULONG  ulTag,
02577 
02578   /*OUT*/ ULONG  *pcjTable);
02579 
02580 WIN32KAPI
02581 PFD_GLYPHATTR
02582 DDKAPI 
02583 FONTOBJ_pQueryGlyphAttrs(
02584   /*IN*/ FONTOBJ  *pfo,
02585   /*IN*/ ULONG  iMode);
02586 
02587 WIN32KAPI
02588 PVOID
02589 DDKAPI
02590 FONTOBJ_pvTrueTypeFontFile(
02591   /*IN*/ FONTOBJ  *pfo,
02592 
02593   /*OUT*/ ULONG  *pcjFile);
02594 
02595 WIN32KAPI
02596 LPWSTR
02597 DDKAPI
02598 FONTOBJ_pwszFontFilePaths(
02599   /*IN*/ FONTOBJ  *pfo,
02600 
02601   /*OUT*/ ULONG  *pcwc);
02602 
02603 WIN32KAPI
02604 XFORMOBJ*
02605 DDKAPI
02606 FONTOBJ_pxoGetXform(
02607   /*IN*/ FONTOBJ  *pfo);
02608 
02609 WIN32KAPI
02610 VOID
02611 DDKAPI
02612 FONTOBJ_vGetInfo(
02613   /*IN*/ FONTOBJ  *pfo,
02614   /*IN*/ ULONG  cjSize,
02615 
02616   /*OUT*/ FONTINFO  *pfi);
02617 
02618 WIN32KAPI
02619 FLATPTR
02620 DDKAPI
02621 HeapVidMemAllocAligned(
02622   /*IN*/ LPVIDMEM  lpVidMem,
02623   /*IN*/ DWORD  dwWidth,
02624   /*IN*/ DWORD  dwHeight,
02625   /*IN*/ LPSURFACEALIGNMENT  lpAlignment,
02626 
02627   /*OUT*/ LPLONG  lpNewPitch);
02628 
02629 WIN32KAPI
02630 LONG
02631 DDKAPI
02632 HT_ComputeRGBGammaTable(
02633   /*IN*/ USHORT  GammaTableEntries,
02634   /*IN*/ USHORT  GammaTableType,
02635   /*IN*/ USHORT  RedGamma,
02636   /*IN*/ USHORT  GreenGamma,
02637   /*IN*/ USHORT  BlueGamma,
02638 
02639   /*OUT*/ LPBYTE  pGammaTable);
02640 
02641 WIN32KAPI
02642 LONG
02643 DDKAPI
02644 HT_Get8BPPFormatPalette(
02645 
02646   /*OUT*/ LPPALETTEENTRY  pPaletteEntry,
02647   /*IN*/ USHORT  RedGamma,
02648   /*IN*/ USHORT  GreenGamma,
02649   /*IN*/ USHORT  BlueGamma);
02650 
02651 WIN32KAPI
02652 LONG
02653 DDKAPI
02654 HT_Get8BPPMaskPalette(
02655   /*IN OUT*/ LPPALETTEENTRY  pPaletteEntry,
02656   /*IN*/ BOOL  Use8BPPMaskPal,
02657   /*IN*/ BYTE  CMYMask,
02658   /*IN*/ USHORT  RedGamma,
02659   /*IN*/ USHORT  GreenGamma,
02660   /*IN*/ USHORT  BlueGamma);
02661 
02662 WIN32KAPI
02663 LONG
02664 DDKAPI
02665 HTUI_DeviceColorAdjustment(
02666   /*IN*/ LPSTR  pDeviceName,
02667 
02668   /*OUT*/ PDEVHTADJDATA  pDevHTAdjData);
02669 
02670 WIN32KAPI
02671 ULONG
02672 DDKAPI
02673 PALOBJ_cGetColors(
02674   /*IN*/ PALOBJ  *ppalo,
02675   /*IN*/ ULONG  iStart,
02676   /*IN*/ ULONG  cColors,
02677 
02678   /*OUT*/ ULONG  *pulColors);
02679 
02680 WIN32KAPI
02681 BOOL
02682 DDKAPI
02683 PATHOBJ_bCloseFigure(
02684   /*IN*/ PATHOBJ  *ppo);
02685 
02686 WIN32KAPI
02687 BOOL
02688 DDKAPI
02689 PATHOBJ_bEnum(
02690   /*IN*/ PATHOBJ  *ppo,
02691 
02692   /*OUT*/ PATHDATA  *ppd);
02693 
02694 WIN32KAPI
02695 BOOL
02696 DDKAPI
02697 PATHOBJ_bEnumClipLines(
02698   /*IN*/ PATHOBJ  *ppo,
02699   /*IN*/ ULONG  cb,
02700 
02701   /*OUT*/ CLIPLINE  *pcl);
02702 
02703 WIN32KAPI
02704 BOOL
02705 DDKAPI
02706 PATHOBJ_bMoveTo(
02707   /*IN*/ PATHOBJ  *ppo,
02708   /*IN*/ POINTFIX  ptfx);
02709 
02710 WIN32KAPI
02711 BOOL
02712 DDKAPI
02713 PATHOBJ_bPolyBezierTo(
02714   /*IN*/ PATHOBJ  *ppo,
02715   /*IN*/ POINTFIX  *pptfx,
02716   /*IN*/ ULONG  cptfx);
02717 
02718 WIN32KAPI
02719 BOOL
02720 DDKAPI
02721 PATHOBJ_bPolyLineTo(
02722   /*IN*/ PATHOBJ  *ppo,
02723   /*IN*/ POINTFIX  *pptfx,
02724   /*IN*/ ULONG  cptfx);
02725 
02726 WIN32KAPI
02727 VOID
02728 DDKAPI
02729 PATHOBJ_vEnumStart(
02730   /*IN*/ PATHOBJ  *ppo);
02731 
02732 WIN32KAPI
02733 VOID
02734 DDKAPI
02735 PATHOBJ_vEnumStartClipLines(
02736   /*IN*/ PATHOBJ  *ppo,
02737   /*IN*/ CLIPOBJ  *pco,
02738   /*IN*/ SURFOBJ  *pso,
02739   /*IN*/ LINEATTRS  *pla);
02740 
02741 WIN32KAPI
02742 VOID
02743 DDKAPI
02744 PATHOBJ_vGetBounds(
02745   /*IN*/ PATHOBJ  *ppo,
02746 
02747   /*OUT*/ PRECTFX  prectfx);
02748 
02749 WIN32KAPI
02750 BOOL
02751 DDKAPI
02752 STROBJ_bEnum(
02753   /*IN*/ STROBJ  *pstro,
02754 
02755   /*OUT*/ ULONG  *pc,
02756 
02757   /*OUT*/ PGLYPHPOS  *ppgpos);
02758 
02759 WIN32KAPI
02760 BOOL
02761 DDKAPI
02762 STROBJ_bEnumPositionsOnly(
02763   /*IN*/ STROBJ  *pstro,
02764 
02765   /*OUT*/ ULONG  *pc,
02766 
02767   /*OUT*/ PGLYPHPOS  *ppgpos);
02768 
02769 WIN32KAPI
02770 BOOL
02771 DDKAPI
02772 STROBJ_bGetAdvanceWidths(
02773   /*IN*/ STROBJ  *pso,
02774   /*IN*/ ULONG  iFirst,
02775   /*IN*/ ULONG  c,
02776 
02777   /*OUT*/ POINTQF  *pptqD);
02778 
02779 WIN32KAPI
02780 DWORD
02781 DDKAPI
02782 STROBJ_dwGetCodePage(
02783   /*IN*/ STROBJ  *pstro);
02784 
02785 WIN32KAPI
02786 FIX
02787 DDKAPI
02788 STROBJ_fxBreakExtra(
02789   /*IN*/ STROBJ  *pstro);
02790 
02791 WIN32KAPI
02792 FIX
02793 DDKAPI
02794 STROBJ_fxCharacterExtra(
02795   /*IN*/ STROBJ  *pstro);
02796 
02797 WIN32KAPI
02798 VOID
02799 DDKAPI
02800 STROBJ_vEnumStart(
02801   /*IN*/ STROBJ  *pstro);
02802 
02803 WIN32KAPI
02804 VOID
02805 DDKAPI
02806 VidMemFree(
02807   /*IN*/ LPVMEMHEAP  pvmh,
02808   /*IN*/ FLATPTR  ptr);
02809 
02810 WIN32KAPI
02811 BOOL
02812 DDKAPI
02813 WNDOBJ_bEnum(
02814   /*IN*/ WNDOBJ  *pwo,
02815   /*IN*/ ULONG  cj,
02816 
02817   /*OUT*/ ULONG  *pul);
02818 
02819 WIN32KAPI
02820 ULONG
02821 DDKAPI
02822 WNDOBJ_cEnumStart(
02823   /*IN*/ WNDOBJ  *pwo,
02824   /*IN*/ ULONG  iType,
02825   /*IN*/ ULONG  iDirection,
02826   /*IN*/ ULONG  cLimit);
02827 
02828 WIN32KAPI
02829 VOID
02830 DDKAPI
02831 WNDOBJ_vSetConsumer(
02832   /*IN*/ WNDOBJ  *pwo,
02833   /*IN*/ PVOID  pvConsumer);
02834 
02835 /* XFORMOBJ_bApplyXform.iMode constants */
02836 #define XF_LTOL                           0L
02837 #define XF_INV_LTOL                       1L
02838 #define XF_LTOFX                          2L
02839 #define XF_INV_FXTOL                      3L
02840 
02841 WIN32KAPI
02842 BOOL
02843 DDKAPI
02844 XFORMOBJ_bApplyXform(
02845   /*IN*/ XFORMOBJ  *pxo,
02846   /*IN*/ ULONG  iMode,
02847   /*IN*/ ULONG  cPoints,
02848   /*IN*/ PVOID  pvIn,
02849 
02850   /*OUT*/ PVOID  pvOut);
02851 
02852 WIN32KAPI
02853 ULONG
02854 DDKAPI
02855 XFORMOBJ_iGetFloatObjXform(
02856   /*IN*/ XFORMOBJ  *pxo,
02857 
02858   /*OUT*/ FLOATOBJ_XFORM  *pxfo);
02859 
02860 WIN32KAPI
02861 ULONG
02862 DDKAPI
02863 XFORMOBJ_iGetXform(
02864   /*IN*/ XFORMOBJ  *pxo,
02865 
02866   /*OUT*/ XFORML  *pxform);
02867 
02868 /* XLATEOBJ_cGetPalette.iPal constants */
02869 #define XO_SRCPALETTE                     1
02870 #define XO_DESTPALETTE                    2
02871 #define XO_DESTDCPALETTE                  3
02872 #define XO_SRCBITFIELDS                   4
02873 #define XO_DESTBITFIELDS                  5
02874 
02875 WIN32KAPI
02876 ULONG
02877 DDKAPI
02878 XLATEOBJ_cGetPalette(
02879   /*IN*/ XLATEOBJ  *pxlo,
02880   /*IN*/ ULONG  iPal,
02881   /*IN*/ ULONG  cPal,
02882 
02883   /*OUT*/ ULONG  *pPal);
02884 
02885 WIN32KAPI
02886 HANDLE
02887 DDKAPI
02888 XLATEOBJ_hGetColorTransform(
02889   /*IN*/ XLATEOBJ  *pxlo);
02890 
02891 WIN32KAPI
02892 ULONG
02893 DDKAPI
02894 XLATEOBJ_iXlate(
02895   /*IN*/ XLATEOBJ  *pxlo,
02896   /*IN*/ ULONG  iColor);
02897 
02898 WIN32KAPI
02899 ULONG*
02900 DDKAPI
02901 XLATEOBJ_piVector(
02902   /*IN*/ XLATEOBJ  *pxlo);
02903 
02904 
02905 
02906 /* Graphics Driver Functions */
02907 
02908 BOOL
02909 DDKAPI
02910 DrvAlphaBlend(
02911   /*IN*/ SURFOBJ  *psoDest,
02912   /*IN*/ SURFOBJ  *psoSrc,
02913   /*IN*/ CLIPOBJ  *pco,
02914   /*IN*/ XLATEOBJ  *pxlo,
02915   /*IN*/ RECTL  *prclDest,
02916   /*IN*/ RECTL  *prclSrc,
02917   /*IN*/ BLENDOBJ  *pBlendObj);
02918 
02919 BOOL
02920 DDKAPI
02921 DrvAssertMode(
02922   /*IN*/ DHPDEV  dhpdev,
02923   /*IN*/ BOOL  bEnable);
02924 
02925 BOOL
02926 DDKAPI
02927 DrvBitBlt(
02928   /*IN*/ SURFOBJ  *psoTrg,
02929   /*IN*/ SURFOBJ  *psoSrc,
02930   /*IN*/ SURFOBJ  *psoMask,
02931   /*IN*/ CLIPOBJ  *pco,
02932   /*IN*/ XLATEOBJ  *pxlo,
02933   /*IN*/ RECTL  *prclTrg,
02934   /*IN*/ POINTL  *pptlSrc,
02935   /*IN*/ POINTL  *pptlMask,
02936   /*IN*/ BRUSHOBJ  *pbo,
02937   /*IN*/ POINTL  *pptlBrush,
02938   /*IN*/ ROP4  rop4);
02939 
02940 VOID
02941 DDKAPI
02942 DrvCompletePDEV(
02943   /*IN*/ DHPDEV  dhpdev,
02944   /*IN*/ HDEV  hdev);
02945 
02946 BOOL
02947 DDKAPI
02948 DrvCopyBits(
02949   /*IN*/ SURFOBJ  *psoDest,
02950   /*IN*/ SURFOBJ  *psoSrc,
02951   /*IN*/ CLIPOBJ  *pco,
02952   /*IN*/ XLATEOBJ  *pxlo,
02953   /*IN*/ RECTL  *prclDest,
02954   /*IN*/ POINTL  *pptlSrc);
02955 
02956 HBITMAP
02957 DDKAPI
02958 DrvCreateDeviceBitmap(
02959   /*IN*/ DHPDEV  dhpdev,
02960   /*IN*/ SIZEL  sizl,
02961   /*IN*/ ULONG  iFormat);
02962 
02963 VOID
02964 DDKAPI
02965 DrvDeleteDeviceBitmap(
02966   /*IN*/ DHSURF  dhsurf);
02967 
02968 HBITMAP
02969 DDKAPI
02970 DrvDeriveSurface(
02971   DD_DIRECTDRAW_GLOBAL  *pDirectDraw,
02972   DD_SURFACE_LOCAL  *pSurface);
02973 
02974 LONG
02975 DDKAPI
02976 DrvDescribePixelFormat(
02977   /*IN*/ DHPDEV  dhpdev,
02978   /*IN*/ LONG  iPixelFormat,
02979   /*IN*/ ULONG  cjpfd,
02980 
02981   /*OUT*/ PIXELFORMATDESCRIPTOR  *ppfd);
02982 
02983 VOID
02984 DDKAPI
02985 DrvDestroyFont(
02986   /*IN*/ FONTOBJ  *pfo);
02987 
02988 VOID
02989 DDKAPI
02990 DrvDisableDriver(
02991   VOID);
02992 
02993 VOID
02994 DDKAPI
02995 DrvDisablePDEV(
02996   /*IN*/ DHPDEV  dhpdev);
02997 
02998 VOID
02999 DDKAPI
03000 DrvDisableSurface(
03001   /*IN*/ DHPDEV  dhpdev);
03002 
03003 #define DM_DEFAULT                        0x00000001
03004 #define DM_MONOCHROME                     0x00000002
03005 
03006 ULONG
03007 DDKAPI
03008 DrvDitherColor(
03009   /*IN*/ DHPDEV  dhpdev,
03010   /*IN*/ ULONG  iMode,
03011   /*IN*/ ULONG  rgb,
03012 
03013   /*OUT*/ ULONG  *pul);
03014 
03015 ULONG
03016 DDKAPI
03017 DrvDrawEscape(
03018   /*IN*/ SURFOBJ  *pso,
03019   /*IN*/ ULONG  iEsc,
03020   /*IN*/ CLIPOBJ  *pco,
03021   /*IN*/ RECTL  *prcl,
03022   /*IN*/ ULONG  cjIn,
03023   /*IN*/ PVOID  pvIn);
03024 
03025 BOOL
03026 DDKAPI
03027 DrvEnableDriver(
03028   /*IN*/ ULONG  iEngineVersion,
03029   /*IN*/ ULONG  cj,
03030 
03031   /*OUT*/ DRVENABLEDATA  *pded);
03032 
03033 DHPDEV
03034 DDKAPI
03035 DrvEnablePDEV(
03036   /*IN*/ DEVMODEW  *pdm,
03037   /*IN*/ LPWSTR  pwszLogAddress,
03038   /*IN*/ ULONG  cPat,
03039 
03040   /*OUT*/ HSURF  *phsurfPatterns,
03041   /*IN*/ ULONG  cjCaps,
03042 
03043   /*OUT*/ ULONG  *pdevcaps,
03044   /*IN*/ ULONG  cjDevInfo,
03045 
03046   /*OUT*/ DEVINFO  *pdi,
03047   /*IN*/ HDEV  hdev,
03048   /*IN*/ LPWSTR  pwszDeviceName,
03049   /*IN*/ HANDLE  hDriver);
03050 
03051 HSURF
03052 DDKAPI
03053 DrvEnableSurface(
03054   /*IN*/ DHPDEV  dhpdev);
03055 
03056 /* DrvEndDoc.fl constants */
03057 #define ED_ABORTDOC                       0x00000001
03058 
03059 BOOL
03060 DDKAPI
03061 DrvEndDoc(
03062   /*IN*/ SURFOBJ  *pso,
03063   /*IN*/ FLONG  fl);
03064 
03065 ULONG
03066 DDKAPI
03067 DrvEscape(
03068   /*IN*/ SURFOBJ  *pso,
03069   /*IN*/ ULONG  iEsc,
03070   /*IN*/ ULONG  cjIn,
03071   /*IN*/ PVOID  pvIn,
03072   /*IN*/ ULONG  cjOut,
03073 
03074   /*OUT*/ PVOID  pvOut);
03075 
03076 BOOL
03077 DDKAPI
03078 DrvFillPath(
03079   /*IN*/ SURFOBJ  *pso,
03080   /*IN*/ PATHOBJ  *ppo,
03081   /*IN*/ CLIPOBJ  *pco,
03082   /*IN*/ BRUSHOBJ  *pbo,
03083   /*IN*/ POINTL  *pptlBrushOrg,
03084   /*IN*/ MIX  mix,
03085   /*IN*/ FLONG  flOptions);
03086 
03087 ULONG
03088 DDKAPI
03089 DrvFontManagement(
03090   /*IN*/ SURFOBJ  *pso,
03091   /*IN*/ FONTOBJ  *pfo,
03092   /*IN*/ ULONG  iMode,
03093   /*IN*/ ULONG  cjIn,
03094   /*IN*/ PVOID  pvIn,
03095   /*IN*/ ULONG  cjOut,
03096 
03097   /*OUT*/ PVOID  pvOut);
03098 
03099 VOID
03100 DDKAPI
03101 DrvFree(
03102   /*IN*/ PVOID  pv,
03103   /*IN*/ ULONG_PTR  id);
03104 
03105 /* DrvGetGlyphMode return values */
03106 #define FO_HGLYPHS                        0L
03107 #define FO_GLYPHBITS                      1L
03108 #define FO_PATHOBJ                        2L
03109 
03110 ULONG
03111 DDKAPI
03112 DrvGetGlyphMode(
03113   /*IN*/ DHPDEV  dhpdev,
03114   /*IN*/ FONTOBJ  *pfo);
03115 
03116 ULONG
03117 DDKAPI
03118 DrvGetModes(
03119   /*IN*/ HANDLE  hDriver,
03120   /*IN*/ ULONG  cjSize,
03121 
03122   /*OUT*/ DEVMODEW  *pdm);
03123 
03124 PVOID
03125 DDKAPI
03126 DrvGetTrueTypeFile(
03127   /*IN*/ ULONG_PTR  iFile,
03128   /*IN*/ ULONG  *pcj);
03129 
03130 BOOL
03131 DDKAPI
03132 DrvGradientFill(
03133   /*IN*/ SURFOBJ  *psoDest,
03134   /*IN*/ CLIPOBJ  *pco,
03135   /*IN*/ XLATEOBJ  *pxlo,
03136   /*IN*/ TRIVERTEX  *pVertex,
03137   /*IN*/ ULONG  nVertex,
03138   /*IN*/ PVOID  pMesh,
03139   /*IN*/ ULONG  nMesh,
03140   /*IN*/ RECTL  *prclExtents,
03141   /*IN*/ POINTL  *pptlDitherOrg,
03142   /*IN*/ ULONG  ulMode);
03143 
03144 BOOL
03145 DDKAPI
03146 DrvIcmCheckBitmapBits(
03147   /*IN*/ DHPDEV  dhpdev,
03148   /*IN*/ HANDLE  hColorTransform,
03149   /*IN*/ SURFOBJ  *pso,
03150 
03151   /*OUT*/ PBYTE  paResults);
03152 
03153 HANDLE
03154 DDKAPI
03155 DrvIcmCreateColorTransform(
03156   /*IN*/ DHPDEV  dhpdev,
03157   /*IN*/ LPLOGCOLORSPACEW  pLogColorSpace,
03158   /*IN*/ PVOID  pvSourceProfile,
03159   /*IN*/ ULONG  cjSourceProfile,
03160   /*IN*/ PVOID  pvDestProfile,
03161   /*IN*/ ULONG  cjDestProfile,
03162   /*IN*/ PVOID  pvTargetProfile,
03163   /*IN*/ ULONG  cjTargetProfile,
03164   /*IN*/ DWORD  dwReserved);
03165 
03166 BOOL
03167 DDKAPI
03168 DrvIcmDeleteColorTransform(
03169   /*IN*/ DHPDEV  dhpdev,
03170   /*IN*/ HANDLE  hcmXform);
03171 
03172 /* DrvIcmSetDeviceGammaRamp.iFormat constants */
03173 #define IGRF_RGB_256BYTES                 0x00000000
03174 #define IGRF_RGB_256WORDS                 0x00000001
03175 
03176 BOOL
03177 DDKAPI
03178 DrvIcmSetDeviceGammaRamp(
03179   /*IN*/ DHPDEV  dhpdev,
03180   /*IN*/ ULONG  iFormat,
03181   /*IN*/ LPVOID  lpRamp);
03182 
03183 BOOL
03184 DDKAPI
03185 DrvLineTo(
03186   SURFOBJ  *pso,
03187   CLIPOBJ  *pco,
03188   BRUSHOBJ  *pbo,
03189   LONG  x1,
03190   LONG  y1,
03191   LONG  x2,
03192   LONG  y2,
03193   RECTL  *prclBounds,
03194   MIX  mix);
03195 
03196 ULONG_PTR
03197 DDKAPI
03198 DrvLoadFontFile(
03199   ULONG  cFiles,
03200   ULONG_PTR  *piFile,
03201   PVOID  *ppvView,
03202   ULONG  *pcjView,
03203   DESIGNVECTOR  *pdv,
03204   ULONG  ulLangID,
03205   ULONG  ulFastCheckSum);
03206 
03207 VOID
03208 DDKAPI
03209 DrvMovePointer(
03210   /*IN*/ SURFOBJ  *pso,
03211   /*IN*/ LONG  x,
03212   /*IN*/ LONG  y,
03213   /*IN*/ RECTL  *prcl);
03214 
03215 BOOL
03216 DDKAPI
03217 DrvNextBand(
03218   /*IN*/ SURFOBJ  *pso,
03219   /*IN*/ POINTL  *pptl);
03220 
03221 VOID
03222 DDKAPI
03223 DrvNotify(
03224   /*IN*/ SURFOBJ  *pso,
03225   /*IN*/ ULONG  iType,
03226   /*IN*/ PVOID  pvData);
03227 
03228 BOOL
03229 DDKAPI
03230 DrvOffset(
03231   /*IN*/ SURFOBJ  *pso,
03232   /*IN*/ LONG  x,
03233   /*IN*/ LONG  y,
03234   /*IN*/ FLONG  flReserved);
03235 
03236 BOOL
03237 DDKAPI
03238 DrvPaint(
03239   /*IN*/ SURFOBJ  *pso,
03240   /*IN*/ CLIPOBJ  *pco,
03241   /*IN*/ BRUSHOBJ  *pbo,
03242   /*IN*/ POINTL  *pptlBrushOrg,
03243   /*IN*/ MIX  mix);
03244 
03245 BOOL
03246 DDKAPI
03247 DrvPlgBlt(
03248   /*IN*/ SURFOBJ  *psoTrg,
03249   /*IN*/ SURFOBJ  *psoSrc,
03250   /*IN*/ SURFOBJ  *psoMsk,
03251   /*IN*/ CLIPOBJ  *pco,
03252   /*IN*/ XLATEOBJ  *pxlo,
03253   /*IN*/ COLORADJUSTMENT  *pca,
03254   /*IN*/ POINTL  *pptlBrushOrg,
03255   /*IN*/ POINTFIX  *pptfx,
03256   /*IN*/ RECTL  *prcl,
03257   /*IN*/ POINTL  *pptl,
03258   /*IN*/ ULONG  iMode);
03259 
03260 /* DrvQueryAdvanceWidths.iMode constants */
03261 #define QAW_GETWIDTHS                     0
03262 #define QAW_GETEASYWIDTHS                 1
03263 
03264 BOOL
03265 DDKAPI
03266 DrvQueryAdvanceWidths(
03267   /*IN*/ DHPDEV  dhpdev,
03268   /*IN*/ FONTOBJ  *pfo,
03269   /*IN*/ ULONG  iMode,
03270   /*IN*/ HGLYPH  *phg,
03271 
03272   /*OUT*/ PVOID  pvWidths,
03273   /*IN*/ ULONG  cGlyphs);
03274 
03275 /* DrvQueryDeviceSupport.iType constants */
03276 #define QDS_CHECKJPEGFORMAT               0x00000000
03277 #define QDS_CHECKPNGFORMAT                0x00000001
03278 
03279 BOOL
03280 DDKAPI
03281 DrvQueryDeviceSupport(
03282   SURFOBJ  *pso,
03283   XLATEOBJ  *pxlo,
03284   XFORMOBJ  *pxo,
03285   ULONG  iType,
03286   ULONG  cjIn,
03287   PVOID  pvIn,
03288   ULONG  cjOut,
03289   PVOID  pvOut);
03290 
03291 /* DrvQueryDriverInfo.dwMode constants */
03292 #define DRVQUERY_USERMODE                 0x00000001
03293 
03294 BOOL
03295 DDKAPI
03296 DrvQueryDriverInfo(
03297   DWORD  dwMode,
03298   PVOID  pBuffer,
03299   DWORD  cbBuf,
03300   PDWORD  pcbNeeded);
03301 
03302 PIFIMETRICS
03303 DDKAPI
03304 DrvQueryFont(
03305   /*IN*/ DHPDEV  dhpdev,
03306   /*IN*/ ULONG_PTR  iFile,
03307   /*IN*/ ULONG  iFace,
03308   /*IN*/ ULONG_PTR  *pid);
03309 
03310 /* DrvQueryFontCaps.pulCaps constants */
03311 #define QC_OUTLINES                       0x00000001
03312 #define QC_1BIT                           0x00000002
03313 #define QC_4BIT                           0x00000004
03314 
03315 #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
03316 
03317 LONG
03318 DDKAPI
03319 DrvQueryFontCaps(
03320   /*IN*/ ULONG  culCaps,
03321 
03322   /*OUT*/ ULONG  *pulCaps);
03323 
03324 /* DrvQueryFontData.iMode constants */
03325 #define QFD_GLYPHANDBITMAP                1L
03326 #define QFD_GLYPHANDOUTLINE               2L
03327 #define QFD_MAXEXTENTS                    3L
03328 #define QFD_TT_GLYPHANDBITMAP             4L
03329 #define QFD_TT_GRAY1_BITMAP               5L
03330 #define QFD_TT_GRAY2_BITMAP               6L
03331 #define QFD_TT_GRAY4_BITMAP               8L
03332 #define QFD_TT_GRAY8_BITMAP               9L
03333 
03334 #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
03335 
03336 LONG
03337 DDKAPI
03338 DrvQueryFontData(
03339   /*IN*/ DHPDEV  dhpdev,
03340   /*IN*/ FONTOBJ  *pfo,
03341   /*IN*/ ULONG  iMode,
03342   /*IN*/ HGLYPH  hg,
03343   /*IN OUT*/ GLYPHDATA  *pgd,
03344   /*IN OUT*/ PVOID  pv,
03345   /*IN*/ ULONG  cjSize);
03346 
03347 /* DrvQueryFontFile.ulMode constants */
03348 #define QFF_DESCRIPTION                   0x00000001
03349 #define QFF_NUMFACES                      0x00000002
03350 
03351 LONG
03352 DDKAPI
03353 DrvQueryFontFile(
03354   /*IN*/ ULONG_PTR  iFile,
03355   /*IN*/ ULONG  ulMode,
03356   /*IN*/ ULONG  cjBuf,
03357   /*IN*/ ULONG  *pulBuf);
03358 
03359 /* DrvQueryFontTree.iMode constants */
03360 #define QFT_UNICODE                       0L
03361 #define QFT_LIGATURES                     1L
03362 #define QFT_KERNPAIRS                     2L
03363 #define QFT_GLYPHSET                      3L
03364 
03365 PVOID
03366 DDKAPI
03367 DrvQueryFontTree(
03368   /*IN*/ DHPDEV  dhpdev,
03369   /*IN*/ ULONG_PTR  iFile,
03370   /*IN*/ ULONG  iFace,
03371   /*IN*/ ULONG  iMode,
03372   /*IN*/ ULONG_PTR  *pid);
03373 
03374 PFD_GLYPHATTR
03375 DDKAPI
03376 DrvQueryGlyphAttrs(
03377   /*IN*/ FONTOBJ  *pfo,
03378   /*IN*/ ULONG  iMode);
03379 
03380 ULONG
03381 DDKAPI
03382 DrvQueryPerBandInfo(
03383   /*IN*/ SURFOBJ  *pso,
03384   /*IN OUT*/ PERBANDINFO  *pbi);
03385 
03386 /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
03387 #define TTO_METRICS_ONLY                  0x00000001
03388 #define TTO_QUBICS                        0x00000002
03389 #define TTO_UNHINTED                      0x00000004
03390 
03391 LONG
03392 DDKAPI
03393 DrvQueryTrueTypeOutline(
03394   /*IN*/ DHPDEV  dhpdev,
03395   /*IN*/ FONTOBJ  *pfo,
03396   /*IN*/ HGLYPH  hglyph,
03397   /*IN*/ BOOL  bMetricsOnly,
03398   /*IN*/ GLYPHDATA  *pgldt,
03399   /*IN*/ ULONG  cjBuf,
03400 
03401   /*OUT*/ TTPOLYGONHEADER  *ppoly);
03402 
03403 LONG
03404 DDKAPI
03405 DrvQueryTrueTypeTable(
03406   /*IN*/ ULONG_PTR  iFile,
03407   /*IN*/ ULONG  ulFont,
03408   /*IN*/ ULONG  ulTag,
03409   /*IN*/ PTRDIFF  dpStart,
03410   /*IN*/ ULONG  cjBuf,
03411 
03412   /*OUT*/ BYTE  *pjBuf,
03413 
03414   /*OUT*/ PBYTE  *ppjTable,
03415 
03416   /*OUT*/ ULONG *pcjTable);
03417 
03418 /* DrvRealizeBrush.iHatch constants */
03419 #define RB_DITHERCOLOR                    0x80000000L
03420 
03421 #define HS_DDI_MAX                        6
03422 
03423 BOOL
03424 DDKAPI
03425 DrvRealizeBrush(
03426   /*IN*/ BRUSHOBJ  *pbo,
03427   /*IN*/ SURFOBJ  *psoTarget,
03428   /*IN*/ SURFOBJ  *psoPattern,
03429   /*IN*/ SURFOBJ  *psoMask,
03430   /*IN*/ XLATEOBJ  *pxlo,
03431   /*IN*/ ULONG  iHatch);
03432 
03433 /* DrvResetDevice return values */
03434 #define DRD_SUCCESS                       0
03435 #define DRD_ERROR                         1
03436 
03437 ULONG
03438 DDKAPI
03439 DrvResetDevice(
03440   /*IN*/ DHPDEV dhpdev,
03441   /*IN*/ PVOID Reserved);
03442 
03443 BOOL
03444 DDKAPI
03445 DrvResetPDEV(
03446   DHPDEV  dhpdevOld,
03447   DHPDEV  dhpdevNew);
03448 
03449 /* DrvSaveScreenBits.iMode constants */
03450 #define SS_SAVE                           0x00000000
03451 #define SS_RESTORE                        0x00000001
03452 #define SS_FREE                           0x00000002
03453 
03454 ULONG_PTR
03455 DDKAPI
03456 DrvSaveScreenBits(
03457   /*IN*/ SURFOBJ  *pso,
03458   /*IN*/ ULONG  iMode,
03459   /*IN*/ ULONG_PTR  ident,
03460   /*IN*/ RECTL  *prcl);
03461 
03462 BOOL
03463 DDKAPI
03464 DrvSendPage(
03465   /*IN*/ SURFOBJ  *pso);
03466 
03467 BOOL
03468 DDKAPI
03469 DrvSetPalette(
03470   /*IN*/ DHPDEV  dhpdev,
03471   /*IN*/ PALOBJ  *ppalo,
03472   /*IN*/ FLONG  fl,
03473   /*IN*/ ULONG  iStart,
03474   /*IN*/ ULONG  cColors);
03475 
03476 BOOL
03477 DDKAPI
03478 DrvSetPixelFormat(
03479   /*IN*/ SURFOBJ  *pso,
03480   /*IN*/ LONG  iPixelFormat,
03481   /*IN*/ HWND  hwnd);
03482 
03483 /* DrvSetPointerShape return values */
03484 #define SPS_ERROR                         0x00000000
03485 #define SPS_DECLINE                       0x00000001
03486 #define SPS_ACCEPT_NOEXCLUDE              0x00000002
03487 #define SPS_ACCEPT_EXCLUDE                0x00000003
03488 #define SPS_ACCEPT_SYNCHRONOUS            0x00000004
03489 
03490 /* DrvSetPointerShape.fl constants */
03491 #define SPS_CHANGE                        0x00000001L
03492 #define SPS_ASYNCCHANGE                   0x00000002L
03493 #define SPS_ANIMATESTART                  0x00000004L
03494 #define SPS_ANIMATEUPDATE                 0x00000008L
03495 #define SPS_ALPHA                         0x00000010L
03496 #define SPS_LENGTHMASK                    0x00000F00L
03497 #define SPS_FREQMASK                      0x000FF000L
03498 
03499 ULONG
03500 DDKAPI
03501 DrvSetPointerShape(
03502   /*IN*/ SURFOBJ  *pso,
03503   /*IN*/ SURFOBJ  *psoMask,
03504   /*IN*/ SURFOBJ  *psoColor,
03505   /*IN*/ XLATEOBJ  *pxlo,
03506   /*IN*/ LONG  xHot,
03507   /*IN*/ LONG  yHot,
03508   /*IN*/ LONG  x,
03509   /*IN*/ LONG  y,
03510   /*IN*/ RECTL  *prcl,
03511   /*IN*/ FLONG  fl);
03512 
03513 BOOL
03514 DDKAPI
03515 DrvStartBanding(
03516   /*IN*/ SURFOBJ  *pso,
03517   /*IN*/ POINTL  *pptl);
03518 
03519 BOOL
03520 DDKAPI
03521 DrvStartDoc(
03522   /*IN*/ SURFOBJ  *pso,
03523   /*IN*/ LPWSTR  pwszDocName,
03524   /*IN*/ DWORD  dwJobId);
03525 
03526 BOOL
03527 DDKAPI
03528 DrvStartPage(
03529   /*IN*/ SURFOBJ  *pso);
03530 
03531 BOOL
03532 DDKAPI
03533 DrvStretchBlt(
03534   /*IN*/ SURFOBJ  *psoDest,
03535   /*IN*/ SURFOBJ  *psoSrc,
03536   /*IN*/ SURFOBJ  *psoMask,
03537   /*IN*/ CLIPOBJ  *pco,
03538   /*IN*/ XLATEOBJ  *pxlo,
03539   /*IN*/ COLORADJUSTMENT  *pca,
03540   /*IN*/ POINTL  *pptlHTOrg,
03541   /*IN*/ RECTL  *prclDest,
03542   /*IN*/ RECTL  *prclSrc,
03543   /*IN*/ POINTL  *pptlMask,
03544   /*IN*/ ULONG  iMode);
03545 
03546 BOOL
03547 DDKAPI
03548 DrvStretchBltROP(
03549   /*IN*/ SURFOBJ  *psoDest,
03550   /*IN*/ SURFOBJ  *psoSrc,
03551   /*IN*/ SURFOBJ  *psoMask,
03552   /*IN*/ CLIPOBJ  *pco,
03553   /*IN*/ XLATEOBJ  *pxlo,
03554   /*IN*/ COLORADJUSTMENT  *pca,
03555   /*IN*/ POINTL  *pptlHTOrg,
03556   /*IN*/ RECTL  *prclDest,
03557   /*IN*/ RECTL  *prclSrc,
03558   /*IN*/ POINTL  *pptlMask,
03559   /*IN*/ ULONG  iMode,
03560   /*IN*/ BRUSHOBJ  *pbo,
03561   /*IN*/ DWORD  rop4);
03562 
03563 BOOL
03564 DDKAPI
03565 DrvStrokeAndFillPath(
03566   /*IN*/ SURFOBJ  *pso,
03567   /*IN*/ PATHOBJ  *ppo,
03568   /*IN*/ CLIPOBJ  *pco,
03569   /*IN*/ XFORMOBJ  *pxo,
03570   /*IN*/ BRUSHOBJ  *pboStroke,
03571   /*IN*/ LINEATTRS  *plineattrs,
03572   /*IN*/ BRUSHOBJ  *pboFill,
03573   /*IN*/ POINTL  *pptlBrushOrg,
03574   /*IN*/ MIX  mixFill,
03575   /*IN*/ FLONG  flOptions);
03576 
03577 BOOL
03578 DDKAPI
03579 DrvStrokePath(
03580   /*IN*/ SURFOBJ  *pso,
03581   /*IN*/ PATHOBJ  *ppo,
03582   /*IN*/ CLIPOBJ  *pco,
03583   /*IN*/ XFORMOBJ  *pxo,
03584   /*IN*/ BRUSHOBJ  *pbo,
03585   /*IN*/ POINTL  *pptlBrushOrg,
03586   /*IN*/ LINEATTRS  *plineattrs,
03587   /*IN*/ MIX  mix);
03588 
03589 BOOL
03590 DDKAPI
03591 DrvSwapBuffers(
03592   /*IN*/ SURFOBJ  *pso,
03593   /*IN*/ WNDOBJ  *pwo);
03594 
03595 VOID
03596 DDKAPI
03597 DrvSynchronize(
03598   /*IN*/ DHPDEV  dhpdev,
03599   /*IN*/ RECTL  *prcl);
03600 
03601 /* DrvSynchronizeSurface.fl constants */
03602 #define DSS_TIMER_EVENT                   0x00000001
03603 #define DSS_FLUSH_EVENT                   0x00000002
03604 
03605 VOID
03606 DDKAPI
03607 DrvSynchronizeSurface(
03608   /*IN*/ SURFOBJ  *pso,
03609   /*IN*/ RECTL  *prcl,
03610   /*IN*/ FLONG  fl);
03611 
03612 BOOL
03613 DDKAPI
03614 DrvTextOut(
03615   /*IN*/ SURFOBJ  *pso,
03616   /*IN*/ STROBJ  *pstro,
03617   /*IN*/ FONTOBJ  *pfo,
03618   /*IN*/ CLIPOBJ  *pco,
03619   /*IN*/ RECTL  *prclExtra,
03620   /*IN*/ RECTL  *prclOpaque,
03621   /*IN*/ BRUSHOBJ  *pboFore,
03622   /*IN*/ BRUSHOBJ  *pboOpaque,
03623   /*IN*/ POINTL  *pptlOrg,
03624   /*IN*/ MIX  mix);
03625 
03626 BOOL
03627 DDKAPI
03628 DrvTransparentBlt(
03629   /*IN*/ SURFOBJ  *psoDst,
03630   /*IN*/ SURFOBJ  *psoSrc,
03631   /*IN*/ CLIPOBJ  *pco,
03632   /*IN*/ XLATEOBJ  *pxlo,
03633   /*IN*/ RECTL  *prclDst,
03634   /*IN*/ RECTL  *prclSrc,
03635   /*IN*/ ULONG  iTransColor,
03636   /*IN*/ ULONG  ulReserved);
03637 
03638 BOOL
03639 DDKAPI
03640 DrvUnloadFontFile(
03641   /*IN*/ ULONG_PTR  iFile);
03642 
03643 /* WNDOBJCHANGEPROC.fl constants */
03644 #define WOC_RGN_CLIENT_DELTA              0x00000001
03645 #define WOC_RGN_CLIENT                    0x00000002
03646 #define WOC_RGN_SURFACE_DELTA             0x00000004
03647 #define WOC_RGN_SURFACE                   0x00000008
03648 #define WOC_CHANGED                       0x00000010
03649 #define WOC_DELETE                        0x00000020
03650 #define WOC_DRAWN                         0x00000040
03651 #define WOC_SPRITE_OVERLAP                0x00000080
03652 #define WOC_SPRITE_NO_OVERLAP             0x00000100
03653 
03654 typedef VOID DDKAPI
03655 (CALLBACK * WNDOBJCHANGEPROC)(
03656   WNDOBJ  *pwo,
03657   FLONG  fl);
03658 
03659 
03660 typedef BOOL DDKAPI
03661 (*PFN_DrvAlphaBlend)(
03662   /*IN*/ SURFOBJ  *psoDest,
03663   /*IN*/ SURFOBJ  *psoSrc,
03664   /*IN*/ CLIPOBJ  *pco,
03665   /*IN*/ XLATEOBJ  *pxlo,
03666   /*IN*/ RECTL  *prclDest,
03667   /*IN*/ RECTL  *prclSrc,
03668   /*IN*/ BLENDOBJ  *pBlendObj);
03669 
03670 typedef BOOL DDKAPI
03671 (*PFN_DrvAssertMode)(
03672   /*IN*/ DHPDEV  dhpdev,
03673   /*IN*/ BOOL  bEnable);
03674 
03675 typedef BOOL DDKAPI
03676 (*PFN_DrvBitBlt)(
03677   /*IN*/ SURFOBJ  *psoTrg,
03678   /*IN*/ SURFOBJ  *psoSrc,
03679   /*IN*/ SURFOBJ  *psoMask,
03680   /*IN*/ CLIPOBJ  *pco,
03681   /*IN*/ XLATEOBJ  *pxlo,
03682   /*IN*/ RECTL  *prclTrg,
03683   /*IN*/ POINTL  *pptlSrc,
03684   /*IN*/ POINTL  *pptlMask,
03685   /*IN*/ BRUSHOBJ  *pbo,
03686   /*IN*/ POINTL  *pptlBrush,
03687   /*IN*/ ROP4  rop4);
03688 
03689 typedef VOID DDKAPI
03690 (*PFN_DrvCompletePDEV)(
03691   /*IN*/ DHPDEV  dhpdev,
03692   /*IN*/ HDEV  hdev);
03693 
03694 typedef BOOL DDKAPI
03695 (*PFN_DrvCopyBits)(
03696   /*IN*/ SURFOBJ  *psoDest,
03697   /*IN*/ SURFOBJ  *psoSrc,
03698   /*IN*/ CLIPOBJ  *pco,
03699   /*IN*/ XLATEOBJ  *pxlo,
03700   /*IN*/ RECTL  *prclDest,
03701   /*IN*/ POINTL  *pptlSrc);
03702 
03703 typedef HBITMAP DDKAPI
03704 (*PFN_DrvCreateDeviceBitmap)(
03705   /*IN*/ DHPDEV  dhpdev,
03706   /*IN*/ SIZEL  sizl,
03707   /*IN*/ ULONG  iFormat);
03708 
03709 typedef VOID DDKAPI
03710 (*PFN_DrvDeleteDeviceBitmap)(
03711   /*IN*/ DHSURF  dhsurf);
03712 
03713 typedef HBITMAP DDKAPI
03714 (*PFN_DrvDeriveSurface)(
03715   DD_DIRECTDRAW_GLOBAL  *pDirectDraw,
03716   DD_SURFACE_LOCAL  *pSurface);
03717 
03718 typedef LONG DDKAPI
03719 (*PFN_DrvDescribePixelFormat)(
03720   /*IN*/ DHPDEV  dhpdev,
03721   /*IN*/ LONG  iPixelFormat,
03722   /*IN*/ ULONG  cjpfd,
03723 
03724   /*OUT*/ PIXELFORMATDESCRIPTOR  *ppfd);
03725 
03726 typedef VOID DDKAPI
03727 (*PFN_DrvDestroyFont)(
03728   /*IN*/ FONTOBJ  *pfo);
03729 
03730 typedef VOID DDKAPI
03731 (*PFN_DrvDisableDriver)(
03732   VOID);
03733 
03734 typedef VOID DDKAPI
03735 (*PFN_DrvDisablePDEV)(
03736   /*IN*/ DHPDEV  dhpdev);
03737 
03738 typedef VOID DDKAPI
03739 (*PFN_DrvDisableSurface)(
03740   /*IN*/ DHPDEV  dhpdev);
03741 
03742 typedef ULONG DDKAPI
03743 (*PFN_DrvDitherColor)(
03744   /*IN*/ DHPDEV  dhpdev,
03745   /*IN*/ ULONG  iMode,
03746   /*IN*/ ULONG  rgb,
03747 
03748   /*OUT*/ ULONG  *pul);
03749 
03750 typedef ULONG DDKAPI
03751 (*PFN_DrvDrawEscape)(
03752   /*IN*/ SURFOBJ  *pso,
03753   /*IN*/ ULONG  iEsc,
03754   /*IN*/ CLIPOBJ  *pco,
03755   /*IN*/ RECTL  *prcl,
03756   /*IN*/ ULONG  cjIn,
03757   /*IN*/ PVOID  pvIn);
03758 
03759 typedef BOOL DDKAPI
03760 (*PFN_DrvEnableDriver)(
03761   /*IN*/ ULONG  iEngineVersion,
03762   /*IN*/ ULONG  cj,
03763 
03764   /*OUT*/ DRVENABLEDATA  *pded);
03765 #if 0
03766 typedef DHPDEV DDKAPI
03767 (*PFN_DrvEnablePDEV)(
03768   /*IN*/ DEVMODEW  *pdm,
03769   /*IN*/ LPWSTR  pwszLogAddress,
03770   /*IN*/ ULONG  cPat,
03771 
03772   /*OUT*/ HSURF  *phsurfPatterns,
03773   /*IN*/ ULONG  cjCaps,
03774 
03775   /*OUT*/ ULONG  *pdevcaps,
03776   /*IN*/ ULONG  cjDevInfo,
03777 
03778   /*OUT*/ DEVINFO  *pdi,
03779   /*IN*/ HDEV  hdev,
03780   /*IN*/ LPWSTR  pwszDeviceName,
03781   /*IN*/ HANDLE  hDriver);
03782 #endif
03783 typedef HSURF DDKAPI
03784 (*PFN_DrvEnableSurface)(
03785   /*IN*/ DHPDEV  dhpdev);
03786 
03787 typedef BOOL DDKAPI
03788 (*PFN_DrvEndDoc)(
03789   /*IN*/ SURFOBJ  *pso,
03790   /*IN*/ FLONG  fl);
03791 
03792 typedef ULONG DDKAPI
03793 (*PFN_DrvEscape)(
03794   /*IN*/ SURFOBJ  *pso,
03795   /*IN*/ ULONG  iEsc,
03796   /*IN*/ ULONG  cjIn,
03797   /*IN*/ PVOID  pvIn,
03798   /*IN*/ ULONG  cjOut,
03799 
03800   /*OUT*/ PVOID  pvOut);
03801 
03802 typedef BOOL DDKAPI
03803 (*PFN_DrvFillPath)(
03804   /*IN*/ SURFOBJ  *pso,
03805   /*IN*/ PATHOBJ  *ppo,
03806   /*IN*/ CLIPOBJ  *pco,
03807   /*IN*/ BRUSHOBJ  *pbo,
03808   /*IN*/ POINTL  *pptlBrushOrg,
03809   /*IN*/ MIX  mix,
03810   /*IN*/ FLONG  flOptions);
03811 
03812 typedef ULONG DDKAPI
03813 (*PFN_DrvFontManagement)(
03814   /*IN*/ SURFOBJ  *pso,
03815   /*IN*/ FONTOBJ  *pfo,
03816   /*IN*/ ULONG  iMode,
03817   /*IN*/ ULONG  cjIn,
03818   /*IN*/ PVOID  pvIn,
03819   /*IN*/ ULONG  cjOut,
03820 
03821   /*OUT*/ PVOID  pvOut);
03822 
03823 typedef VOID DDKAPI
03824 (*PFN_DrvFree)(
03825   /*IN*/ PVOID  pv,
03826   /*IN*/ ULONG_PTR  id);
03827 
03828 typedef ULONG DDKAPI
03829 (*PFN_DrvGetGlyphMode)(
03830   /*IN*/ DHPDEV  dhpdev,
03831   /*IN*/ FONTOBJ  *pfo);
03832 
03833 typedef ULONG DDKAPI
03834 (*PFN_DrvGetModes)(
03835   /*IN*/ HANDLE  hDriver,
03836   /*IN*/ ULONG  cjSize,
03837 
03838   /*OUT*/ DEVMODEW  *pdm);
03839 
03840 typedef PVOID DDKAPI
03841 (*PFN_DrvGetTrueTypeFile)(
03842   /*IN*/ ULONG_PTR  iFile,
03843   /*IN*/ ULONG  *pcj);
03844 
03845 typedef BOOL DDKAPI
03846 (*PFN_DrvGradientFill)(
03847   /*IN*/ SURFOBJ  *psoDest,
03848   /*IN*/ CLIPOBJ  *pco,
03849   /*IN*/ XLATEOBJ  *pxlo,
03850   /*IN*/ TRIVERTEX  *pVertex,
03851   /*IN*/ ULONG  nVertex,
03852   /*IN*/ PVOID  pMesh,
03853   /*IN*/ ULONG  nMesh,
03854   /*IN*/ RECTL  *prclExtents,
03855   /*IN*/ POINTL  *pptlDitherOrg,
03856   /*IN*/ ULONG  ulMode);
03857 
03858 typedef BOOL DDKAPI
03859 (*PFN_DrvIcmCheckBitmapBits)(
03860   /*IN*/ DHPDEV  dhpdev,
03861   /*IN*/ HANDLE  hColorTransform,
03862   /*IN*/ SURFOBJ  *pso,
03863 
03864   /*OUT*/ PBYTE  paResults);
03865 
03866 typedef HANDLE DDKAPI
03867 (*PFN_DrvIcmCreateColorTransform)(
03868   /*IN*/ DHPDEV  dhpdev,
03869   /*IN*/ LPLOGCOLORSPACEW  pLogColorSpace,
03870   /*IN*/ PVOID  pvSourceProfile,
03871   /*IN*/ ULONG  cjSourceProfile,
03872   /*IN*/ PVOID  pvDestProfile,
03873   /*IN*/ ULONG  cjDestProfile,
03874   /*IN*/ PVOID  pvTargetProfile,
03875   /*IN*/ ULONG  cjTargetProfile,
03876   /*IN*/ DWORD  dwReserved);
03877 
03878 typedef BOOL DDKAPI
03879 (*PFN_DrvIcmDeleteColorTransform)(
03880   /*IN*/ DHPDEV  dhpdev,
03881   /*IN*/ HANDLE  hcmXform);
03882 
03883 typedef BOOL DDKAPI
03884 (*PFN_DrvIcmSetDeviceGammaRamp)(
03885   /*IN*/ DHPDEV  dhpdev,
03886   /*IN*/ ULONG  iFormat,
03887   /*IN*/ LPVOID  lpRamp);
03888 
03889 typedef BOOL DDKAPI
03890 (*PFN_DrvLineTo)(
03891   SURFOBJ  *pso,
03892   CLIPOBJ  *pco,
03893   BRUSHOBJ  *pbo,
03894   LONG  x1,
03895   LONG  y1,
03896   LONG  x2,
03897   LONG  y2,
03898   RECTL  *prclBounds,
03899   MIX  mix);
03900 
03901 typedef ULONG_PTR DDKAPI
03902 (*PFN_DrvLoadFontFile)(
03903   ULONG  cFiles,
03904   ULONG_PTR  *piFile,
03905   PVOID  *ppvView,
03906   ULONG  *pcjView,
03907   DESIGNVECTOR  *pdv,
03908   ULONG  ulLangID,
03909   ULONG  ulFastCheckSum);
03910 
03911 typedef VOID DDKAPI
03912 (*PFN_DrvMovePointer)(
03913   /*IN*/ SURFOBJ  *pso,
03914   /*IN*/ LONG  x,
03915   /*IN*/ LONG  y,
03916   /*IN*/ RECTL  *prcl);
03917 
03918 typedef BOOL DDKAPI
03919 (*PFN_DrvNextBand)(
03920   /*IN*/ SURFOBJ  *pso,
03921   /*IN*/ POINTL  *pptl);
03922 
03923 typedef VOID DDKAPI
03924 (*PFN_DrvNotify)(
03925   /*IN*/ SURFOBJ  *pso,
03926   /*IN*/ ULONG  iType,
03927   /*IN*/ PVOID  pvData);
03928 
03929 typedef BOOL DDKAPI
03930 (*PFN_DrvOffset)(
03931   /*IN*/ SURFOBJ  *pso,
03932   /*IN*/ LONG  x,
03933   /*IN*/ LONG  y,
03934   /*IN*/ FLONG  flReserved);
03935 
03936 typedef BOOL DDKAPI
03937 (*PFN_DrvPaint)(
03938   /*IN*/ SURFOBJ  *pso,
03939   /*IN*/ CLIPOBJ  *pco,
03940   /*IN*/ BRUSHOBJ  *pbo,
03941   /*IN*/ POINTL  *pptlBrushOrg,
03942   /*IN*/ MIX  mix);
03943 
03944 typedef BOOL DDKAPI
03945 (*PFN_DrvPlgBlt)(
03946   /*IN*/ SURFOBJ  *psoTrg,
03947   /*IN*/ SURFOBJ  *psoSrc,
03948   /*IN*/ SURFOBJ  *psoMsk,
03949   /*IN*/ CLIPOBJ  *pco,
03950   /*IN*/ XLATEOBJ  *pxlo,
03951   /*IN*/ COLORADJUSTMENT  *pca,
03952   /*IN*/ POINTL  *pptlBrushOrg,
03953   /*IN*/ POINTFIX  *pptfx,
03954   /*IN*/ RECTL  *prcl,
03955   /*IN*/ POINTL  *pptl,
03956   /*IN*/ ULONG  iMode);
03957 
03958 typedef BOOL DDKAPI
03959 (*PFN_DrvQueryAdvanceWidths)(
03960   /*IN*/ DHPDEV  dhpdev,
03961   /*IN*/ FONTOBJ  *pfo,
03962   /*IN*/ ULONG  iMode,
03963   /*IN*/ HGLYPH  *phg,
03964 
03965   /*OUT*/ PVOID  pvWidths,
03966   /*IN*/ ULONG  cGlyphs);
03967 
03968 typedef BOOL DDKAPI
03969 (*PFN_DrvQueryDeviceSupport)(
03970   SURFOBJ  *pso,
03971   XLATEOBJ  *pxlo,
03972   XFORMOBJ  *pxo,
03973   ULONG  iType,
03974   ULONG  cjIn,
03975   PVOID  pvIn,
03976   ULONG  cjOut,
03977   PVOID  pvOut);
03978 
03979 typedef BOOL DDKAPI
03980 (*PFN_DrvQueryDriverInfo)(
03981   DWORD  dwMode,
03982   PVOID  pBuffer,
03983   DWORD  cbBuf,
03984   PDWORD  pcbNeeded);
03985 
03986 typedef PIFIMETRICS DDKAPI
03987 (*PFN_DrvQueryFont)(
03988   /*IN*/ DHPDEV  dhpdev,
03989   /*IN*/ ULONG_PTR  iFile,
03990   /*IN*/ ULONG  iFace,
03991   /*IN*/ ULONG_PTR  *pid);
03992 
03993 typedef LONG DDKAPI
03994 (*PFN_DrvQueryFontCaps)(
03995   /*IN*/ ULONG  culCaps,
03996 
03997   /*OUT*/ ULONG  *pulCaps);
03998 
03999 typedef LONG DDKAPI
04000 (*PFN_DrvQueryFontData)(
04001   /*IN*/ DHPDEV  dhpdev,
04002   /*IN*/ FONTOBJ  *pfo,
04003   /*IN*/ ULONG  iMode,
04004   /*IN*/ HGLYPH  hg,
04005   /*IN OUT*/ GLYPHDATA  *pgd,
04006   /*IN OUT*/ PVOID  pv,
04007   /*IN*/ ULONG  cjSize);
04008 
04009 typedef LONG DDKAPI
04010 (*PFN_DrvQueryFontFile)(
04011   /*IN*/ ULONG_PTR  iFile,
04012   /*IN*/ ULONG  ulMode,
04013   /*IN*/ ULONG  cjBuf,
04014   /*IN*/ ULONG  *pulBuf);
04015 
04016 typedef PVOID DDKAPI
04017 (*PFN_DrvQueryFontTree)(
04018   /*IN*/ DHPDEV  dhpdev,
04019   /*IN*/ ULONG_PTR  iFile,
04020   /*IN*/ ULONG  iFace,
04021   /*IN*/ ULONG  iMode,
04022   /*IN*/ ULONG_PTR  *pid);
04023 
04024 typedef PFD_GLYPHATTR DDKAPI
04025 (*PFN_DrvQueryGlyphAttrs)(
04026   /*IN*/ FONTOBJ  *pfo,
04027   /*IN*/ ULONG  iMode);
04028 
04029 typedef ULONG DDKAPI
04030 (*PFN_DrvQueryPerBandInfo)(
04031   /*IN*/ SURFOBJ  *pso,
04032   /*IN OUT*/ PERBANDINFO  *pbi);
04033 
04034 typedef LONG DDKAPI
04035 (*PFN_DrvQueryTrueTypeOutline)(
04036   /*IN*/ DHPDEV  dhpdev,
04037   /*IN*/ FONTOBJ  *pfo,
04038   /*IN*/ HGLYPH  hglyph,
04039   /*IN*/ BOOL  bMetricsOnly,
04040   /*IN*/ GLYPHDATA  *pgldt,
04041   /*IN*/ ULONG  cjBuf,
04042   /*OUT*/ TTPOLYGONHEADER  *ppoly);
04043 
04044 typedef LONG DDKAPI
04045 (*PFN_DrvQueryTrueTypeTable)(
04046   /*IN*/ ULONG_PTR  iFile,
04047   /*IN*/ ULONG  ulFont,
04048   /*IN*/ ULONG  ulTag,
04049   /*IN*/ PTRDIFF  dpStart,
04050   /*IN*/ ULONG  cjBuf,
04051   /*OUT*/ BYTE  *pjBuf,
04052   /*OUT*/ PBYTE  *ppjTable,
04053   /*OUT*/ ULONG *pcjTable);
04054 
04055 typedef BOOL DDKAPI
04056 (*PFN_DrvRealizeBrush)(
04057   /*IN*/ BRUSHOBJ  *pbo,
04058   /*IN*/ SURFOBJ  *psoTarget,
04059   /*IN*/ SURFOBJ  *psoPattern,
04060   /*IN*/ SURFOBJ  *psoMask,
04061   /*IN*/ XLATEOBJ  *pxlo,
04062   /*IN*/ ULONG  iHatch);
04063 
04064 typedef ULONG DDKAPI
04065 (*PFN_DrvResetDevice)(
04066   /*IN*/ DHPDEV dhpdev,
04067   /*IN*/ PVOID Reserved);
04068 
04069 typedef BOOL DDKAPI
04070 (*PFN_DrvResetPDEV)(
04071   DHPDEV  dhpdevOld,
04072   DHPDEV  dhpdevNew);
04073 
04074 typedef ULONG_PTR DDKAPI
04075 (*PFN_DrvSaveScreenBits)(
04076   /*IN*/ SURFOBJ  *pso,
04077   /*IN*/ ULONG  iMode,
04078   /*IN*/ ULONG_PTR  ident,
04079   /*IN*/ RECTL  *prcl);
04080 
04081 typedef BOOL DDKAPI
04082 (*PFN_DrvSendPage)(
04083   /*IN*/ SURFOBJ  *pso);
04084 
04085 typedef BOOL DDKAPI
04086 (*PFN_DrvSetPalette)(
04087   /*IN*/ DHPDEV  dhpdev,
04088   /*IN*/ PALOBJ  *ppalo,
04089   /*IN*/ FLONG  fl,
04090   /*IN*/ ULONG  iStart,
04091   /*IN*/ ULONG  cColors);
04092 
04093 typedef BOOL DDKAPI
04094 (*PFN_DrvSetPixelFormat)(
04095   /*IN*/ SURFOBJ  *pso,
04096   /*IN*/ LONG  iPixelFormat,
04097   /*IN*/ HWND  hwnd);
04098 
04099 typedef ULONG DDKAPI
04100 (*PFN_DrvSetPointerShape)(
04101   /*IN*/ SURFOBJ  *pso,
04102   /*IN*/ SURFOBJ  *psoMask,
04103   /*IN*/ SURFOBJ  *psoColor,
04104   /*IN*/ XLATEOBJ  *pxlo,
04105   /*IN*/ LONG  xHot,
04106   /*IN*/ LONG  yHot,
04107   /*IN*/ LONG  x,
04108   /*IN*/ LONG  y,
04109   /*IN*/ RECTL  *prcl,
04110   /*IN*/ FLONG  fl);
04111 
04112 typedef BOOL DDKAPI
04113 (*PFN_DrvStartBanding)(
04114   /*IN*/ SURFOBJ  *pso,
04115   /*IN*/ POINTL  *pptl);
04116 
04117 typedef BOOL DDKAPI
04118 (*PFN_DrvStartDoc)(
04119   /*IN*/ SURFOBJ  *pso,
04120   /*IN*/ LPWSTR  pwszDocName,
04121   /*IN*/ DWORD  dwJobId);
04122 
04123 typedef BOOL DDKAPI
04124 (*PFN_DrvStartPage)(
04125   /*IN*/ SURFOBJ  *pso);
04126 
04127 typedef BOOL DDKAPI
04128 (*PFN_DrvStretchBlt)(
04129   /*IN*/ SURFOBJ  *psoDest,
04130   /*IN*/ SURFOBJ  *psoSrc,
04131   /*IN*/ SURFOBJ  *psoMask,
04132   /*IN*/ CLIPOBJ  *pco,
04133   /*IN*/ XLATEOBJ  *pxlo,
04134   /*IN*/ COLORADJUSTMENT  *pca,
04135   /*IN*/ POINTL  *pptlHTOrg,
04136   /*IN*/ RECTL  *prclDest,
04137   /*IN*/ RECTL  *prclSrc,
04138   /*IN*/ POINTL  *pptlMask,
04139   /*IN*/ ULONG  iMode);
04140 
04141 typedef BOOL DDKAPI
04142 (*PFN_DrvStretchBltROP)(
04143   /*IN*/ SURFOBJ  *psoDest,
04144   /*IN*/ SURFOBJ  *psoSrc,
04145   /*IN*/ SURFOBJ  *psoMask,
04146   /*IN*/ CLIPOBJ  *pco,
04147   /*IN*/ XLATEOBJ  *pxlo,
04148   /*IN*/ COLORADJUSTMENT  *pca,
04149   /*IN*/ POINTL  *pptlHTOrg,
04150   /*IN*/ RECTL  *prclDest,
04151   /*IN*/ RECTL  *prclSrc,
04152   /*IN*/ POINTL  *pptlMask,
04153   /*IN*/ ULONG  iMode,
04154   /*IN*/ BRUSHOBJ  *pbo,
04155   /*IN*/ DWORD  rop4);
04156 
04157 typedef BOOL DDKAPI
04158 (*PFN_DrvStrokeAndFillPath)(
04159   /*IN*/ SURFOBJ  *pso,
04160   /*IN*/ PATHOBJ  *ppo,
04161   /*IN*/ CLIPOBJ  *pco,
04162   /*IN*/ XFORMOBJ  *pxo,
04163   /*IN*/ BRUSHOBJ  *pboStroke,
04164   /*IN*/ LINEATTRS  *plineattrs,
04165   /*IN*/ BRUSHOBJ  *pboFill,
04166   /*IN*/ POINTL  *pptlBrushOrg,
04167   /*IN*/ MIX  mixFill,
04168   /*IN*/ FLONG  flOptions);
04169 
04170 typedef BOOL DDKAPI
04171 (*PFN_DrvStrokePath)(
04172   /*IN*/ SURFOBJ  *pso,
04173   /*IN*/ PATHOBJ  *ppo,
04174   /*IN*/ CLIPOBJ  *pco,
04175   /*IN*/ XFORMOBJ  *pxo,
04176   /*IN*/ BRUSHOBJ  *pbo,
04177   /*IN*/ POINTL  *pptlBrushOrg,
04178   /*IN*/ LINEATTRS  *plineattrs,
04179   /*IN*/ MIX  mix);
04180 
04181 typedef BOOL DDKAPI
04182 (*PFN_DrvSwapBuffers)(
04183   /*IN*/ SURFOBJ  *pso,
04184   /*IN*/ WNDOBJ  *pwo);
04185 
04186 typedef VOID DDKAPI
04187 (*PFN_DrvSynchronize)(
04188   /*IN*/ DHPDEV  dhpdev,
04189   /*IN*/ RECTL  *prcl);
04190 
04191 typedef VOID DDKAPI
04192 (*PFN_DrvSynchronizeSurface)(
04193   /*IN*/ SURFOBJ  *pso,
04194   /*IN*/ RECTL  *prcl,
04195   /*IN*/ FLONG  fl);
04196 
04197 typedef BOOL DDKAPI
04198 (*PFN_DrvTextOut)(
04199   /*IN*/ SURFOBJ  *pso,
04200   /*IN*/ STROBJ  *pstro,
04201   /*IN*/ FONTOBJ  *pfo,
04202   /*IN*/ CLIPOBJ  *pco,
04203   /*IN*/ RECTL  *prclExtra,
04204   /*IN*/ RECTL  *prclOpaque,
04205   /*IN*/ BRUSHOBJ  *pboFore,
04206   /*IN*/ BRUSHOBJ  *pboOpaque,
04207   /*IN*/ POINTL  *pptlOrg,
04208   /*IN*/ MIX  mix);
04209 
04210 typedef BOOL DDKAPI
04211 (*PFN_DrvTransparentBlt)(
04212   /*IN*/ SURFOBJ  *psoDst,
04213   /*IN*/ SURFOBJ  *psoSrc,
04214   /*IN*/ CLIPOBJ  *pco,
04215   /*IN*/ XLATEOBJ  *pxlo,
04216   /*IN*/ RECTL  *prclDst,
04217   /*IN*/ RECTL  *prclSrc,
04218   /*IN*/ ULONG  iTransColor,
04219   /*IN*/ ULONG  ulReserved);
04220 
04221 typedef BOOL DDKAPI
04222 (*PFN_DrvUnloadFontFile)(
04223   /*IN*/ ULONG_PTR  iFile);
04224 
04225 
04226 WIN32KAPI
04227 VOID
04228 DDKAPI
04229 DrvDisableDirectDraw(
04230   /*IN*/ DHPDEV  dhpdev);
04231 
04232 WIN32KAPI
04233 BOOL
04234 DDKAPI
04235 DrvEnableDirectDraw(
04236   /*IN*/ DHPDEV  dhpdev,
04237   /*OUT*/ DD_CALLBACKS  *pCallBacks,
04238   /*OUT*/ DD_SURFACECALLBACKS  *pSurfaceCallBacks,
04239   /*OUT*/ DD_PALETTECALLBACKS  *pPaletteCallBacks);
04240 
04241 WIN32KAPI
04242 BOOL
04243 DDKAPI
04244 DrvGetDirectDrawInfo(
04245   /*IN*/ DHPDEV  dhpdev,
04246   /*OUT*/ DD_HALINFO  *pHalInfo,
04247   /*OUT*/ DWORD  *pdwNumHeaps,
04248   /*OUT*/ VIDEOMEMORY  *pvmList,
04249   /*OUT*/ DWORD  *pdwNumFourCCCodes,
04250   /*OUT*/ DWORD  *pdwFourCC);
04251 
04252 #ifdef __cplusplus
04253 }
04254 #endif
04255 
04256 #endif /* defined __VIDEO_H */
04257 
04258 #endif /* __WINDDI_H */