newlib/winsup/w32api/include/ddk/winddi.h

4259 lines
86 KiB
C

/*
* winddi.h
*
* GDI device driver interface
*
* This file is part of the w32api package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __WINDDI_H
#define __WINDDI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __VIDEO_H
#error video.h cannot be included with winddi.h
#else
#ifdef __cplusplus
extern "C" {
#endif
#include "ntddk.h"
#include <wingdi.h>
#ifndef __DD_INCLUDED__
/* FIXME: Some DirectDraw structures not added yet */
typedef ULONG_PTR FLATPTR;
typedef struct _DD_SURFACECALLBACKS {
} DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS;
typedef struct _DD_PALETTECALLBACKS {
} DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS;
typedef struct _DD_CALLBACKS {
} DD_CALLBACKS, *PDD_CALLBACKS;
typedef struct _DD_HALINFO {
} DD_HALINFO, *PDD_HALINFO;
typedef struct _VIDEOMEMORY {
} VIDEOMEMORY, *LPVIDEOMEMORY;
typedef struct _DD_DIRECTDRAW_GLOBAL {
} DD_DIRECTDRAW_GLOBAL, *LPDD_DIRECTDRAW_GLOBAL;
typedef struct _DD_SURFACE_LOCAL {
} DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL, *LPDD_SURFACE_LOCAL;
#endif
#ifndef __DDRAWI_INCLUDED__
typedef PVOID LPVIDMEM;
#endif
#if !defined(__DD_INCLUDED__) && !defined(__DDRAWI_INCLUDED__)
typedef struct _DDSCAPS {
} DDSCAPS, *PDDSCAPS;
typedef struct _DDSCAPSEX {
} DDSCAPSEX, *PDDSCAPSEX;
typedef PVOID LPVMEMHEAP;
#endif
#if defined(_WIN32K_)
#define WIN32KAPI DECL_EXPORT
#else
#define WIN32KAPI DECL_IMPORT
#endif
#define DDI_DRIVER_VERSION_NT4 0x00020000
#define DDI_DRIVER_VERSION_SP3 0x00020003
#define DDI_DRIVER_VERSION_NT5 0x00030000
#define DDI_DRIVER_VERSION_NT5_01 0x00030100
#define GDI_DRIVER_VERSION 0x4000
#ifdef _X86_
typedef DWORD FLOATL;
#else /* !_X86_ */
typedef FLOAT FLOATL;
#endif
typedef SHORT FWORD;
typedef LONG LDECI4;
typedef ULONG IDENT;
typedef ULONG_PTR HFF;
typedef ULONG_PTR HFC;
typedef LONG PTRDIFF;
typedef PTRDIFF *PPTRDIFF;
typedef LONG FIX;
typedef FIX *PFIX;
typedef ULONG ROP4;
typedef ULONG MIX;
typedef ULONG HGLYPH;
typedef HGLYPH *PHGLYPH;
typedef LONG_PTR (DDKAPI *PFN)();
DECLARE_HANDLE(HBM);
DECLARE_HANDLE(HDEV);
DECLARE_HANDLE(HSURF);
DECLARE_HANDLE(DHSURF);
DECLARE_HANDLE(DHPDEV);
DECLARE_HANDLE(HDRVOBJ);
#define GDI_DRIVER_VERSION 0x4000
typedef struct _ENG_EVENT *PEVENT;
#define OPENGL_CMD 4352
#define OPENGL_GETINFO 4353
#define WNDOBJ_SETUP 4354
#define FD_ERROR 0xFFFFFFFF
#define DDI_ERROR 0xFFFFFFFF
#define HFF_INVALID ((HFF) 0)
#define HFC_INVALID ((HFC) 0)
#define HGLYPH_INVALID ((HGLYPH) -1)
#define FP_ALTERNATEMODE 1
#define FP_WINDINGMODE 2
#define DN_ACCELERATION_LEVEL 1
#define DN_DEVICE_ORIGIN 2
#define DN_SLEEP_MODE 3
#define DN_DRAWING_BEGIN 4
#define DCR_SOLID 0
#define DCR_DRIVER 1
#define DCR_HALFTONE 2
#define GX_IDENTITY 0
#define GX_OFFSET 1
#define GX_SCALE 2
#define GX_GENERAL 3
typedef struct _POINTE {
FLOATL x;
FLOATL y;
} POINTE, *PPOINTE;
typedef union _FLOAT_LONG {
FLOATL e;
LONG l;
} FLOAT_LONG, *PFLOAT_LONG;
typedef struct _POINTFIX {
FIX x;
FIX y;
} POINTFIX, *PPOINTFIX;
typedef struct _RECTFX {
FIX xLeft;
FIX yTop;
FIX xRight;
FIX yBottom;
} RECTFX, *PRECTFX;
typedef struct _POINTQF {
LARGE_INTEGER x;
LARGE_INTEGER y;
} POINTQF, *PPOINTQF;
typedef struct _BLENDOBJ {
BLENDFUNCTION BlendFunction;
} BLENDOBJ,*PBLENDOBJ;
/* BRUSHOBJ.flColorType */
#define BR_DEVICE_ICM 0x01
#define BR_HOST_ICM 0x02
#define BR_CMYKCOLOR 0x04
#define BR_ORIGCOLOR 0x08
typedef struct _BRUSHOBJ {
ULONG iSolidColor;
PVOID pvRbrush;
FLONG flColorType;
} BRUSHOBJ;
typedef struct _CIECHROMA {
LDECI4 x;
LDECI4 y;
LDECI4 Y;
} CIECHROMA;
typedef struct _RUN {
LONG iStart;
LONG iStop;
} RUN, *PRUN;
typedef struct _CLIPLINE {
POINTFIX ptfxA;
POINTFIX ptfxB;
LONG lStyleState;
ULONG c;
RUN arun[1];
} CLIPLINE, *PCLIPLINE;
/* CLIPOBJ.iDComplexity constants */
#define DC_TRIVIAL 0
#define DC_RECT 1
#define DC_COMPLEX 3
/* CLIPOBJ.iFComplexity constants */
#define FC_RECT 1
#define FC_RECT4 2
#define FC_COMPLEX 3
/* CLIPOBJ.iMode constants */
#define TC_RECTANGLES 0
#define TC_PATHOBJ 2
/* CLIPOBJ.fjOptions constants */
#define OC_BANK_CLIP 1
typedef struct _CLIPOBJ {
ULONG iUniq;
RECTL rclBounds;
BYTE iDComplexity;
BYTE iFComplexity;
BYTE iMode;
BYTE fjOptions;
} CLIPOBJ;
typedef struct _COLORINFO {
CIECHROMA Red;
CIECHROMA Green;
CIECHROMA Blue;
CIECHROMA Cyan;
CIECHROMA Magenta;
CIECHROMA Yellow;
CIECHROMA AlignmentWhite;
LDECI4 RedGamma;
LDECI4 GreenGamma;
LDECI4 BlueGamma;
LDECI4 MagentaInCyanDye;
LDECI4 YellowInCyanDye;
LDECI4 CyanInMagentaDye;
LDECI4 YellowInMagentaDye;
LDECI4 CyanInYellowDye;
LDECI4 MagentaInYellowDye;
} COLORINFO, *PCOLORINFO;
/* DEVHTADJDATA.DeviceFlags constants */
#define DEVHTADJF_COLOR_DEVICE 0x00000001
#define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
typedef struct _DEVHTINFO {
DWORD HTFlags;
DWORD HTPatternSize;
DWORD DevPelsDPI;
COLORINFO ColorInfo;
} DEVHTINFO, *PDEVHTINFO;
typedef struct _DEVHTADJDATA {
DWORD DeviceFlags;
DWORD DeviceXDPI;
DWORD DeviceYDPI;
PDEVHTINFO pDefHTInfo;
PDEVHTINFO pAdjHTInfo;
} DEVHTADJDATA, *PDEVHTADJDATA;
/* DEVINFO.flGraphicsCaps flags */
#define GCAPS_BEZIERS 0x00000001
#define GCAPS_GEOMETRICWIDE 0x00000002
#define GCAPS_ALTERNATEFILL 0x00000004
#define GCAPS_WINDINGFILL 0x00000008
#define GCAPS_HALFTONE 0x00000010
#define GCAPS_COLOR_DITHER 0x00000020
#define GCAPS_HORIZSTRIKE 0x00000040
#define GCAPS_VERTSTRIKE 0x00000080
#define GCAPS_OPAQUERECT 0x00000100
#define GCAPS_VECTORFONT 0x00000200
#define GCAPS_MONO_DITHER 0x00000400
#define GCAPS_ASYNCCHANGE 0x00000800
#define GCAPS_ASYNCMOVE 0x00001000
#define GCAPS_DONTJOURNAL 0x00002000
#define GCAPS_DIRECTDRAW 0x00004000
#define GCAPS_ARBRUSHOPAQUE 0x00008000
#define GCAPS_PANNING 0x00010000
#define GCAPS_HIGHRESTEXT 0x00040000
#define GCAPS_PALMANAGED 0x00080000
#define GCAPS_DITHERONREALIZE 0x00200000
#define GCAPS_NO64BITMEMACCESS 0x00400000
#define GCAPS_FORCEDITHER 0x00800000
#define GCAPS_GRAY16 0x01000000
#define GCAPS_ICM 0x02000000
#define GCAPS_CMYKCOLOR 0x04000000
#define GCAPS_LAYERED 0x08000000
#define GCAPS_ARBRUSHTEXT 0x10000000
#define GCAPS_SCREENPRECISION 0x20000000
#define GCAPS_FONT_RASTERIZER 0x40000000
#define GCAPS_NUP 0x80000000
/* DEVINFO.iDitherFormat constants */
#define BMF_1BPP 1L
#define BMF_4BPP 2L
#define BMF_8BPP 3L
#define BMF_16BPP 4L
#define BMF_24BPP 5L
#define BMF_32BPP 6L
#define BMF_4RLE 7L
#define BMF_8RLE 8L
#define BMF_JPEG 9L
#define BMF_PNG 10L
/* DEVINFO.flGraphicsCaps2 flags */
#define GCAPS2_JPEGSRC 0x00000001
#define GCAPS2_xxxx 0x00000002
#define GCAPS2_PNGSRC 0x00000008
#define GCAPS2_CHANGEGAMMARAMP 0x00000010
#define GCAPS2_ALPHACURSOR 0x00000020
#define GCAPS2_SYNCFLUSH 0x00000040
#define GCAPS2_SYNCTIMER 0x00000080
#define GCAPS2_ICD_MULTIMON 0x00000100
#define GCAPS2_MOUSETRAILS 0x00000200
#define GCAPS2_RESERVED1 0x00000400
typedef struct _DEVINFO {
FLONG flGraphicsCaps;
LOGFONTW lfDefaultFont;
LOGFONTW lfAnsiVarFont;
LOGFONTW lfAnsiFixFont;
ULONG cFonts;
ULONG iDitherFormat;
USHORT cxDither;
USHORT cyDither;
HPALETTE hpalDefault;
FLONG flGraphicsCaps2;
} DEVINFO, *PDEVINFO;
typedef struct _DRIVEROBJ *PDRIVEROBJ;
typedef BOOL DDKAPI CALLBACK
(*FREEOBJPROC)(
/*IN*/ PDRIVEROBJ pDriverObj);
typedef struct _DRIVEROBJ {
PVOID pvObj;
FREEOBJPROC pFreeProc;
HDEV hdev;
DHPDEV dhpdev;
} DRIVEROBJ;
/* DRVFN.iFunc constants */
#define INDEX_DrvEnablePDEV 0L
#define INDEX_DrvCompletePDEV 1L
#define INDEX_DrvDisablePDEV 2L
#define INDEX_DrvEnableSurface 3L
#define INDEX_DrvDisableSurface 4L
#define INDEX_DrvAssertMode 5L
#define INDEX_DrvOffset 6L
#define INDEX_DrvResetPDEV 7L
#define INDEX_DrvDisableDriver 8L
#define INDEX_DrvCreateDeviceBitmap 10L
#define INDEX_DrvDeleteDeviceBitmap 11L
#define INDEX_DrvRealizeBrush 12L
#define INDEX_DrvDitherColor 13L
#define INDEX_DrvStrokePath 14L
#define INDEX_DrvFillPath 15L
#define INDEX_DrvStrokeAndFillPath 16L
#define INDEX_DrvPaint 17L
#define INDEX_DrvBitBlt 18L
#define INDEX_DrvCopyBits 19L
#define INDEX_DrvStretchBlt 20L
#define INDEX_DrvSetPalette 22L
#define INDEX_DrvTextOut 23L
#define INDEX_DrvEscape 24L
#define INDEX_DrvDrawEscape 25L
#define INDEX_DrvQueryFont 26L
#define INDEX_DrvQueryFontTree 27L
#define INDEX_DrvQueryFontData 28L
#define INDEX_DrvSetPointerShape 29L
#define INDEX_DrvMovePointer 30L
#define INDEX_DrvLineTo 31L
#define INDEX_DrvSendPage 32L
#define INDEX_DrvStartPage 33L
#define INDEX_DrvEndDoc 34L
#define INDEX_DrvStartDoc 35L
#define INDEX_DrvGetGlyphMode 37L
#define INDEX_DrvSynchronize 38L
#define INDEX_DrvSaveScreenBits 40L
#define INDEX_DrvGetModes 41L
#define INDEX_DrvFree 42L
#define INDEX_DrvDestroyFont 43L
#define INDEX_DrvQueryFontCaps 44L
#define INDEX_DrvLoadFontFile 45L
#define INDEX_DrvUnloadFontFile 46L
#define INDEX_DrvFontManagement 47L
#define INDEX_DrvQueryTrueTypeTable 48L
#define INDEX_DrvQueryTrueTypeOutline 49L
#define INDEX_DrvGetTrueTypeFile 50L
#define INDEX_DrvQueryFontFile 51L
#define INDEX_DrvMovePanning 52L
#define INDEX_DrvQueryAdvanceWidths 53L
#define INDEX_DrvSetPixelFormat 54L
#define INDEX_DrvDescribePixelFormat 55L
#define INDEX_DrvSwapBuffers 56L
#define INDEX_DrvStartBanding 57L
#define INDEX_DrvNextBand 58L
#define INDEX_DrvGetDirectDrawInfo 59L
#define INDEX_DrvEnableDirectDraw 60L
#define INDEX_DrvDisableDirectDraw 61L
#define INDEX_DrvQuerySpoolType 62L
#define INDEX_DrvIcmCreateColorTransform 64L
#define INDEX_DrvIcmDeleteColorTransform 65L
#define INDEX_DrvIcmCheckBitmapBits 66L
#define INDEX_DrvIcmSetDeviceGammaRamp 67L
#define INDEX_DrvGradientFill 68L
#define INDEX_DrvStretchBltROP 69L
#define INDEX_DrvPlgBlt 70L
#define INDEX_DrvAlphaBlend 71L
#define INDEX_DrvSynthesizeFont 72L
#define INDEX_DrvGetSynthesizedFontFiles 73L
#define INDEX_DrvTransparentBlt 74L
#define INDEX_DrvQueryPerBandInfo 75L
#define INDEX_DrvQueryDeviceSupport 76L
#define INDEX_DrvReserved1 77L
#define INDEX_DrvReserved2 78L
#define INDEX_DrvReserved3 79L
#define INDEX_DrvReserved4 80L
#define INDEX_DrvReserved5 81L
#define INDEX_DrvReserved6 82L
#define INDEX_DrvReserved7 83L
#define INDEX_DrvReserved8 84L
#define INDEX_DrvDeriveSurface 85L
#define INDEX_DrvQueryGlyphAttrs 86L
#define INDEX_DrvNotify 87L
#define INDEX_DrvSynchronizeSurface 88L
#define INDEX_DrvResetDevice 89L
#define INDEX_DrvReserved9 90L
#define INDEX_DrvReserved10 91L
#define INDEX_DrvReserved11 92L
#define INDEX_LAST 93L
typedef struct _DRVFN {
ULONG iFunc;
PFN pfn;
} DRVFN, *PDRVFN;
/* DRVENABLEDATA.iDriverVersion constants */
#define DDI_DRIVER_VERSION_NT4 0x00020000
#define DDI_DRIVER_VERSION_SP3 0x00020003
#define DDI_DRIVER_VERSION_NT5 0x00030000
#define DDI_DRIVER_VERSION_NT5_01 0x00030100
typedef struct _DRVENABLEDATA {
ULONG iDriverVersion;
ULONG c;
DRVFN *pdrvfn;
} DRVENABLEDATA, *PDRVENABLEDATA;
DECLARE_HANDLE(HSEMAPHORE);
typedef struct {
DWORD nSize;
HDC hdc;
PBYTE pvEMF;
PBYTE pvCurrentRecord;
} EMFINFO, *PEMFINFO;
typedef struct _ENGSAFESEMAPHORE {
HSEMAPHORE hsem;
LONG lCount;
} ENGSAFESEMAPHORE;
typedef struct _ENG_TIME_FIELDS {
USHORT usYear;
USHORT usMonth;
USHORT usDay;
USHORT usHour;
USHORT usMinute;
USHORT usSecond;
USHORT usMilliseconds;
USHORT usWeekday;
} ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
typedef struct _ENUMRECTS {
ULONG c;
RECTL arcl[1];
} ENUMRECTS;
typedef struct _FD_XFORM {
FLOATL eXX;
FLOATL eXY;
FLOATL eYX;
FLOATL eYY;
} FD_XFORM, *PFD_XFORM;
/* FD_DEVICEMETRICS.flRealizedType constants */
#define FDM_TYPE_BM_SIDE_CONST 0x00000001
#define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
#define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
#define FDM_TYPE_ZERO_BEARINGS 0x00000008
#define FDM_TYPE_CONST_BEARINGS 0x00000010
typedef struct _FD_DEVICEMETRICS {
FLONG flRealizedType;
POINTE pteBase;
POINTE pteSide;
LONG lD;
FIX fxMaxAscender;
FIX fxMaxDescender;
POINTL ptlUnderline1;
POINTL ptlStrikeout;
POINTL ptlULThickness;
POINTL ptlSOThickness;
ULONG cxMax;
ULONG cyMax;
ULONG cjGlyphMax;
FD_XFORM fdxQuantized;
LONG lNonLinearExtLeading;
LONG lNonLinearIntLeading;
LONG lNonLinearMaxCharWidth;
LONG lNonLinearAvgCharWidth;
LONG lMinA;
LONG lMinC;
LONG lMinD;
LONG alReserved[1];
} FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;
/* FD_GLYPHATTR.iMode constants */
#define FO_ATTR_MODE_ROTATE 1
typedef struct _FD_GLYPHATTR {
ULONG cjThis;
ULONG cGlyphs;
ULONG iMode;
BYTE aGlyphAttr[1];
} FD_GLYPHATTR, *PFD_GLYPHATTR;
/* FD_GLYPHSET.flAccel */
#define GS_UNICODE_HANDLES 0x00000001
#define GS_8BIT_HANDLES 0x00000002
#define GS_16BIT_HANDLES 0x00000004
typedef struct _WCRUN {
WCHAR wcLow;
USHORT cGlyphs;
HGLYPH *phg;
} WCRUN, *PWCRUN;
typedef struct _FD_GLYPHSET {
ULONG cjThis;
FLONG flAccel;
ULONG cGlyphsSupported;
ULONG cRuns;
WCRUN awcrun[1];
} FD_GLYPHSET, *PFD_GLYPHSET;
typedef struct _FD_KERNINGPAIR {
WCHAR wcFirst;
WCHAR wcSecond;
FWORD fwdKern;
} FD_KERNINGPAIR;
typedef struct _FLOATOBJ
{
ULONG ul1;
ULONG ul2;
} FLOATOBJ, *PFLOATOBJ;
typedef struct _FLOATOBJ_XFORM {
FLOATOBJ eM11;
FLOATOBJ eM12;
FLOATOBJ eM21;
FLOATOBJ eM22;
FLOATOBJ eDx;
FLOATOBJ eDy;
} FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
/* FONTDIFF.fsSelection */
#define FM_SEL_ITALIC 0x0001
#define FM_SEL_UNDERSCORE 0x0002
#define FM_SEL_NEGATIVE 0x0004
#define FM_SEL_OUTLINED 0x0008
#define FM_SEL_STRIKEOUT 0x0010
#define FM_SEL_BOLD 0x0020
#define FM_SEL_REGULAR 0x0040
typedef struct _FONTDIFF {
BYTE jReserved1;
BYTE jReserved2;
BYTE jReserved3;
BYTE bWeight;
USHORT usWinWeight;
FSHORT fsSelection;
FWORD fwdAveCharWidth;
FWORD fwdMaxCharInc;
POINTL ptlCaret;
} FONTDIFF;
typedef struct _FONTSIM {
PTRDIFF dpBold;
PTRDIFF dpItalic;
PTRDIFF dpBoldItalic;
} FONTSIM;
/* FONTINFO.flCaps constants */
#define FO_DEVICE_FONT 1L
#define FO_OUTLINE_CAPABLE 2L
typedef struct _FONTINFO {
ULONG cjThis;
FLONG flCaps;
ULONG cGlyphsSupported;
ULONG cjMaxGlyph1;
ULONG cjMaxGlyph4;
ULONG cjMaxGlyph8;
ULONG cjMaxGlyph32;
} FONTINFO, *PFONTINFO;
/* FONTOBJ.flFontType constants */
#define FO_TYPE_RASTER RASTER_FONTTYPE
#define FO_TYPE_DEVICE DEVICE_FONTTYPE
#define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
#define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
#define FO_SIM_BOLD 0x00002000
#define FO_SIM_ITALIC 0x00004000
#define FO_EM_HEIGHT 0x00008000
#define FO_GRAY16 0x00010000
#define FO_NOGRAY16 0x00020000
#define FO_NOHINTS 0x00040000
#define FO_NO_CHOICE 0x00080000
#define FO_CFF 0x00100000
#define FO_POSTSCRIPT 0x00200000
#define FO_MULTIPLEMASTER 0x00400000
#define FO_VERT_FACE 0x00800000
#define FO_DBCS_FONT 0X01000000
#define FO_NOCLEARTYPE 0x02000000
#define FO_CLEARTYPE_X 0x10000000
#define FO_CLEARTYPE_Y 0x20000000
typedef struct _FONTOBJ {
ULONG iUniq;
ULONG iFace;
ULONG cxMax;
FLONG flFontType;
ULONG_PTR iTTUniq;
ULONG_PTR iFile;
SIZE sizLogResPpi;
ULONG ulStyleSize;
PVOID pvConsumer;
PVOID pvProducer;
} FONTOBJ;
typedef struct _GAMMARAMP {
WORD Red[256];
WORD Green[256];
WORD Blue[256];
} GAMMARAMP, *PGAMMARAMP;
/* GDIINFO.ulPrimaryOrder constants */
#define PRIMARY_ORDER_ABC 0
#define PRIMARY_ORDER_ACB 1
#define PRIMARY_ORDER_BAC 2
#define PRIMARY_ORDER_BCA 3
#define PRIMARY_ORDER_CBA 4
#define PRIMARY_ORDER_CAB 5
/* GDIINFO.ulHTPatternSize constants */
#define HT_PATSIZE_2x2 0
#define HT_PATSIZE_2x2_M 1
#define HT_PATSIZE_4x4 2
#define HT_PATSIZE_4x4_M 3
#define HT_PATSIZE_6x6 4
#define HT_PATSIZE_6x6_M 5
#define HT_PATSIZE_8x8 6
#define HT_PATSIZE_8x8_M 7
#define HT_PATSIZE_10x10 8
#define HT_PATSIZE_10x10_M 9
#define HT_PATSIZE_12x12 10
#define HT_PATSIZE_12x12_M 11
#define HT_PATSIZE_14x14 12
#define HT_PATSIZE_14x14_M 13
#define HT_PATSIZE_16x16 14
#define HT_PATSIZE_16x16_M 15
#define HT_PATSIZE_SUPERCELL 16
#define HT_PATSIZE_SUPERCELL_M 17
#define HT_PATSIZE_USER 18
#define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER
#define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M
#define HT_USERPAT_CX_MIN 4
#define HT_USERPAT_CX_MAX 256
#define HT_USERPAT_CY_MIN 4
#define HT_USERPAT_CY_MAX 256
/* GDIINFO.ulHTOutputFormat constants */
#define HT_FORMAT_1BPP 0
#define HT_FORMAT_4BPP 2
#define HT_FORMAT_4BPP_IRGB 3
#define HT_FORMAT_8BPP 4
#define HT_FORMAT_16BPP 5
#define HT_FORMAT_24BPP 6
#define HT_FORMAT_32BPP 7
/* GDIINFO.flHTFlags */
#define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
#define HT_FLAG_HAS_BLACK_DYE 0x00000002
#define HT_FLAG_ADDITIVE_PRIMS 0x00000004
#define HT_FLAG_USE_8BPP_BITMASK 0x00000008
#define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010
#define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060
#define HT_FLAG_DO_DEVCLR_XFORM 0x00000080
#define HT_FLAG_OUTPUT_CMY 0x00000100
#define HT_FLAG_PRINT_DRAFT_MODE 0x00000200
#define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400
#define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
#define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
|(BYTE)(((BYTE)(m) & 0x07) << 2) \
|(BYTE)((BYTE)(y) & 0x03))
#define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\
|(DWORD)(((DWORD)(m) & 0x07) << 26)\
|(DWORD)(((DWORD)(y) & 0x03) << 24))
/* GDIINFO.flHTFlags constants */
#define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000
#define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020
#define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040
#define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
#define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
|HT_FLAG_INK_ABSORPTION_IDX3)
#define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
|HT_FLAG_INK_ABSORPTION_IDX2)
#define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
|HT_FLAG_INK_ABSORPTION_IDX1)
#define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0
#define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1
#define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2
#define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
#define HT_BITMASKPALRGB (DWORD)'0BGR'
#define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
#define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
/* GDIINFO.ulPhysicalPixelCharacteristics constants */
#define PPC_DEFAULT 0x0
#define PPC_UNDEFINED 0x1
#define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2
#define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3
#define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4
#define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
#define PPG_DEFAULT 0
#define PPG_SRGB 1
typedef struct _GDIINFO {
ULONG ulVersion;
ULONG ulTechnology;
ULONG ulHorzSize;
ULONG ulVertSize;
ULONG ulHorzRes;
ULONG ulVertRes;
ULONG cBitsPixel;
ULONG cPlanes;
ULONG ulNumColors;
ULONG flRaster;
ULONG ulLogPixelsX;
ULONG ulLogPixelsY;
ULONG flTextCaps;
ULONG ulDACRed;
ULONG ulDACGreen;
ULONG ulDACBlue;
ULONG ulAspectX;
ULONG ulAspectY;
ULONG ulAspectXY;
LONG xStyleStep;
LONG yStyleStep;
LONG denStyleStep;
POINTL ptlPhysOffset;
SIZEL szlPhysSize;
ULONG ulNumPalReg;
COLORINFO ciDevice;
ULONG ulDevicePelsDPI;
ULONG ulPrimaryOrder;
ULONG ulHTPatternSize;
ULONG ulHTOutputFormat;
ULONG flHTFlags;
ULONG ulVRefresh;
ULONG ulBltAlignment;
ULONG ulPanningHorzRes;
ULONG ulPanningVertRes;
ULONG xPanningAlignment;
ULONG yPanningAlignment;
ULONG cxHTPat;
ULONG cyHTPat;
LPBYTE pHTPatA;
LPBYTE pHTPatB;
LPBYTE pHTPatC;
ULONG flShadeBlend;
ULONG ulPhysicalPixelCharacteristics;
ULONG ulPhysicalPixelGamma;
} GDIINFO, *PGDIINFO;
/* PATHDATA.flags constants */
#define PD_BEGINSUBPATH 0x00000001
#define PD_ENDSUBPATH 0x00000002
#define PD_RESETSTYLE 0x00000004
#define PD_CLOSEFIGURE 0x00000008
#define PD_BEZIERS 0x00000010
#define PD_ALL (PD_BEGINSUBPATH \
|PD_ENDSUBPATH \
|PD_RESETSTYLE \
|PD_CLOSEFIGURE \
PD_BEZIERS)
typedef struct _PATHDATA {
FLONG flags;
ULONG count;
POINTFIX *glypptfx;
} PATHDATA, *PPATHDATA;
/* PATHOBJ.fl constants */
#define PO_BEZIERS 0x00000001
#define PO_ELLIPSE 0x00000002
#define PO_ALL_INTEGERS 0x00000004
#define PO_ENUM_AS_INTEGERS 0x00000008
typedef struct _PATHOBJ {
FLONG fl;
ULONG cCurves;
} PATHOBJ;
typedef struct _GLYPHBITS {
POINTL ptlOrigin;
SIZEL sizlBitmap;
BYTE aj[1];
} GLYPHBITS;
typedef union _GLYPHDEF {
GLYPHBITS *pgb;
PATHOBJ *ppo;
} GLYPHDEF;
typedef struct _GLYPHPOS {
HGLYPH hg;
GLYPHDEF *pgdf;
POINTL ptl;
} GLYPHPOS, *PGLYPHPOS;
typedef struct _GLYPHDATA {
GLYPHDEF gdf;
HGLYPH hg;
FIX fxD;
FIX fxA;
FIX fxAB;
FIX fxInkTop;
FIX fxInkBottom;
RECTL rclInk;
POINTQF ptqD;
} GLYPHDATA;
typedef struct _IFIEXTRA {
ULONG ulIdentifier;
PTRDIFF dpFontSig;
ULONG cig;
PTRDIFF dpDesignVector;
PTRDIFF dpAxesInfoW;
ULONG aulReserved[1];
} IFIEXTRA, *PIFIEXTRA;
/* IFIMETRICS constants */
#define FM_VERSION_NUMBER 0x0
/* IFIMETRICS.fsType constants */
#define FM_TYPE_LICENSED 0x2
#define FM_READONLY_EMBED 0x4
#define FM_EDITABLE_EMBED 0x8
#define FM_NO_EMBEDDING FM_TYPE_LICENSED
/* IFIMETRICS.flInfo constants */
#define FM_INFO_TECH_TRUETYPE 0x00000001
#define FM_INFO_TECH_BITMAP 0x00000002
#define FM_INFO_TECH_STROKE 0x00000004
#define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
#define FM_INFO_ARB_XFORMS 0x00000010
#define FM_INFO_1BPP 0x00000020
#define FM_INFO_4BPP 0x00000040
#define FM_INFO_8BPP 0x00000080
#define FM_INFO_16BPP 0x00000100
#define FM_INFO_24BPP 0x00000200
#define FM_INFO_32BPP 0x00000400
#define FM_INFO_INTEGER_WIDTH 0x00000800
#define FM_INFO_CONSTANT_WIDTH 0x00001000
#define FM_INFO_NOT_CONTIGUOUS 0x00002000
#define FM_INFO_TECH_MM 0x00004000
#define FM_INFO_RETURNS_OUTLINES 0x00008000
#define FM_INFO_RETURNS_STROKES 0x00010000
#define FM_INFO_RETURNS_BITMAPS 0x00020000
#define FM_INFO_DSIG 0x00040000
#define FM_INFO_RIGHT_HANDED 0x00080000
#define FM_INFO_INTEGRAL_SCALING 0x00100000
#define FM_INFO_90DEGREE_ROTATIONS 0x00200000
#define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
#define FM_INFO_DO_NOT_ENUMERATE 0x00800000
#define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
#define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
#define FM_INFO_TECH_CFF 0x04000000
#define FM_INFO_FAMILY_EQUIV 0x08000000
#define FM_INFO_DBCS_FIXED_PITCH 0x10000000
#define FM_INFO_NONNEGATIVE_AC 0x20000000
#define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
#define FM_INFO_TECH_TYPE1 0x80000000
#define MAXCHARSETS 16
/* IFIMETRICS.ulPanoseCulture constants */
#define FM_PANOSE_CULTURE_LATIN 0x0
typedef struct _IFIMETRICS {
ULONG cjThis;
ULONG cjIfiExtra;
PTRDIFF dpwszFamilyName;
PTRDIFF dpwszStyleName;
PTRDIFF dpwszFaceName;
PTRDIFF dpwszUniqueName;
PTRDIFF dpFontSim;
LONG lEmbedId;
LONG lItalicAngle;
LONG lCharBias;
PTRDIFF dpCharSets;
BYTE jWinCharSet;
BYTE jWinPitchAndFamily;
USHORT usWinWeight;
ULONG flInfo;
USHORT fsSelection;
USHORT fsType;
FWORD fwdUnitsPerEm;
FWORD fwdLowestPPEm;
FWORD fwdWinAscender;
FWORD fwdWinDescender;
FWORD fwdMacAscender;
FWORD fwdMacDescender;
FWORD fwdMacLineGap;
FWORD fwdTypoAscender;
FWORD fwdTypoDescender;
FWORD fwdTypoLineGap;
FWORD fwdAveCharWidth;
FWORD fwdMaxCharInc;
FWORD fwdCapHeight;
FWORD fwdXHeight;
FWORD fwdSubscriptXSize;
FWORD fwdSubscriptYSize;
FWORD fwdSubscriptXOffset;
FWORD fwdSubscriptYOffset;
FWORD fwdSuperscriptXSize;
FWORD fwdSuperscriptYSize;
FWORD fwdSuperscriptXOffset;
FWORD fwdSuperscriptYOffset;
FWORD fwdUnderscoreSize;
FWORD fwdUnderscorePosition;
FWORD fwdStrikeoutSize;
FWORD fwdStrikeoutPosition;
BYTE chFirstChar;
BYTE chLastChar;
BYTE chDefaultChar;
BYTE chBreakChar;
WCHAR wcFirstChar;
WCHAR wcLastChar;
WCHAR wcDefaultChar;
WCHAR wcBreakChar;
POINTL ptlBaseline;
POINTL ptlAspect;
POINTL ptlCaret;
RECTL rclFontBox;
BYTE achVendId[4];
ULONG cKerningPairs;
ULONG ulPanoseCulture;
PANOSE panose;
#if defined(_WIN64)
PVOID Align;
#endif
} IFIMETRICS, *PIFIMETRICS;
/* LINEATTRS.fl */
#define LA_GEOMETRIC 0x00000001
#define LA_ALTERNATE 0x00000002
#define LA_STARTGAP 0x00000004
#define LA_STYLED 0x00000008
/* LINEATTRS.iJoin */
#define JOIN_ROUND 0L
#define JOIN_BEVEL 1L
#define JOIN_MITER 2L
/* LINEATTRS.iEndCap */
#define ENDCAP_ROUND 0L
#define ENDCAP_SQUARE 1L
#define ENDCAP_BUTT 2L
typedef struct _LINEATTRS {
FLONG fl;
ULONG iJoin;
ULONG iEndCap;
FLOAT_LONG elWidth;
FLOATL eMiterLimit;
ULONG cstyle;
PFLOAT_LONG pstyle;
FLOAT_LONG elStyleState;
} LINEATTRS, *PLINEATTRS;
typedef struct _PALOBJ {
ULONG ulReserved;
} PALOBJ;
typedef struct _PERBANDINFO {
BOOL bRepeatThisBand;
SIZEL szlBand;
ULONG ulHorzRes;
ULONG ulVertRes;
} PERBANDINFO, *PPERBANDINFO;
/* STROBJ.flAccel constants */
#define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
#define SO_HORIZONTAL 0x00000002
#define SO_VERTICAL 0x00000004
#define SO_REVERSED 0x00000008
#define SO_ZERO_BEARINGS 0x00000010
#define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
#define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
#define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
#define SO_GLYPHINDEX_TEXTOUT 0x00000100
#define SO_ESC_NOT_ORIENT 0x00000200
#define SO_DXDY 0x00000400
#define SO_CHARACTER_EXTRA 0x00000800
#define SO_BREAK_EXTRA 0x00001000
typedef struct _STROBJ {
ULONG cGlyphs;
FLONG flAccel;
ULONG ulCharInc;
RECTL rclBkGround;
GLYPHPOS *pgp;
LPWSTR pwszOrg;
} STROBJ;
typedef struct _SURFACEALIGNMENT {
union {
struct {
DWORD dwStartAlignment;
DWORD dwPitchAlignment;
DWORD dwReserved1;
DWORD dwReserved2;
} Linear;
struct {
DWORD dwXAlignment;
DWORD dwYAlignment;
DWORD dwReserved1;
DWORD dwReserved2;
} Rectangular;
};
} SURFACEALIGNMENT, *LPSURFACEALIGNMENT;
/* SURFOBJ.iType constants */
#define STYPE_BITMAP 0L
#define STYPE_DEVICE 1L
#define STYPE_DEVBITMAP 3L
/* SURFOBJ.fjBitmap constants */
#define BMF_TOPDOWN 0x0001
#define BMF_NOZEROINIT 0x0002
#define BMF_DONTCACHE 0x0004
#define BMF_USERMEM 0x0008
#define BMF_KMSECTION 0x0010
#define BMF_NOTSYSMEM 0x0020
#define BMF_WINDOW_BLT 0x0040
#define BMF_UMPDMEM 0x0080
#define BMF_RESERVED 0xFF00
typedef struct _SURFOBJ {
DHSURF dhsurf;
HSURF hsurf;
DHPDEV dhpdev;
HDEV hdev;
SIZEL sizlBitmap;
ULONG cjBits;
PVOID pvBits;
PVOID pvScan0;
LONG lDelta;
ULONG iUniq;
ULONG iBitmapFormat;
USHORT iType;
USHORT fjBitmap;
} SURFOBJ;
typedef struct _TYPE1_FONT {
HANDLE hPFM;
HANDLE hPFB;
ULONG ulIdentifier;
} TYPE1_FONT;
typedef struct _WNDOBJ {
CLIPOBJ coClient;
PVOID pvConsumer;
RECTL rclClient;
SURFOBJ *psoOwner;
} WNDOBJ, *PWNDOBJ;
typedef struct _XFORML {
FLOATL eM11;
FLOATL eM12;
FLOATL eM21;
FLOATL eM22;
FLOATL eDx;
FLOATL eDy;
} XFORML, *PXFORML;
typedef struct _XFORMOBJ {
ULONG ulReserved;
} XFORMOBJ;
/* XLATEOBJ.flXlate constants */
#define XO_TRIVIAL 0x00000001
#define XO_TABLE 0x00000002
#define XO_TO_MONO 0x00000004
#define XO_FROM_CMYK 0x00000008
#define XO_DEVICE_ICM 0x00000010
#define XO_HOST_ICM 0x00000020
typedef struct _XLATEOBJ {
ULONG iUniq;
FLONG flXlate;
USHORT iSrcType;
USHORT iDstType;
ULONG cEntries;
ULONG *pulXlate;
} XLATEOBJ;
typedef VOID DDKAPI (CALLBACK *WNDOBJCHANGEPROC)(
/*IN*/ WNDOBJ *pwo,
/*IN*/ FLONG fl);
WIN32KAPI
HANDLE
DDKAPI
BRUSHOBJ_hGetColorTransform(
/*IN*/ BRUSHOBJ *pbo);
WIN32KAPI
PVOID
DDKAPI
BRUSHOBJ_pvAllocRbrush(
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ ULONG cj);
WIN32KAPI
PVOID
DDKAPI
BRUSHOBJ_pvGetRbrush(
/*IN*/ BRUSHOBJ *pbo);
WIN32KAPI
ULONG
DDKAPI
BRUSHOBJ_ulGetBrushColor(
/*IN*/ BRUSHOBJ *pbo);
WIN32KAPI
BOOL
DDKAPI
CLIPOBJ_bEnum(
/*IN*/ CLIPOBJ *pco,
/*IN*/ ULONG cj,
/*OUT*/ ULONG *pv);
/* CLIPOBJ_cEnumStart.iType constants */
#define CT_RECTANGLES 0L
/* CLIPOBJ_cEnumStart.iDirection constants */
#define CD_RIGHTDOWN 0x00000000
#define CD_LEFTDOWN 0x00000001
#define CD_LEFTWARDS 0x00000001
#define CD_RIGHTUP 0x00000002
#define CD_UPWARDS 0x00000002
#define CD_LEFTUP 0x00000003
#define CD_ANY 0x00000004
WIN32KAPI
ULONG
DDKAPI
CLIPOBJ_cEnumStart(
/*IN*/ CLIPOBJ *pco,
/*IN*/ BOOL bAll,
/*IN*/ ULONG iType,
/*IN*/ ULONG iDirection,
/*IN*/ ULONG cLimit);
WIN32KAPI
PATHOBJ*
DDKAPI
CLIPOBJ_ppoGetPath(
/*IN*/ CLIPOBJ *pco);
WIN32KAPI
VOID
DDKAPI
EngAcquireSemaphore(
/*IN*/ HSEMAPHORE hsem);
#define FL_ZERO_MEMORY 0x00000001
#define FL_NONPAGED_MEMORY 0x00000002
WIN32KAPI
PVOID
DDKAPI
EngAllocMem(
/*IN*/ ULONG Flags,
/*IN*/ ULONG MemSize,
/*IN*/ ULONG Tag);
WIN32KAPI
PVOID
DDKAPI
EngAllocPrivateUserMem(
/*IN*/ PDD_SURFACE_LOCAL psl,
/*IN*/ SIZE_T cj,
/*IN*/ ULONG tag);
WIN32KAPI
PVOID
DDKAPI
EngAllocUserMem(
/*IN*/ SIZE_T cj,
/*IN*/ ULONG tag);
WIN32KAPI
BOOL
DDKAPI
EngAlphaBlend(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclDest,
/*IN*/ RECTL *prclSrc,
/*IN*/ BLENDOBJ *pBlendObj);
/* EngAssociateSurface.flHooks constants */
#define HOOK_BITBLT 0x00000001
#define HOOK_STRETCHBLT 0x00000002
#define HOOK_PLGBLT 0x00000004
#define HOOK_TEXTOUT 0x00000008
#define HOOK_PAINT 0x00000010
#define HOOK_STROKEPATH 0x00000020
#define HOOK_FILLPATH 0x00000040
#define HOOK_STROKEANDFILLPATH 0x00000080
#define HOOK_LINETO 0x00000100
#define HOOK_COPYBITS 0x00000400
#define HOOK_MOVEPANNING 0x00000800
#define HOOK_SYNCHRONIZE 0x00001000
#define HOOK_STRETCHBLTROP 0x00002000
#define HOOK_SYNCHRONIZEACCESS 0x00004000
#define HOOK_TRANSPARENTBLT 0x00008000
#define HOOK_ALPHABLEND 0x00010000
#define HOOK_GRADIENTFILL 0x00020000
#define HOOK_FLAGS 0x0003b5ff
WIN32KAPI
BOOL
DDKAPI
EngAssociateSurface(
/*IN*/ HSURF hsurf,
/*IN*/ HDEV hdev,
/*IN*/ FLONG flHooks);
WIN32KAPI
BOOL
DDKAPI
EngBitBlt(
/*IN*/ SURFOBJ *psoTrg,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclTrg,
/*IN*/ POINTL *pptlSrc,
/*IN*/ POINTL *pptlMask,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrush,
/*IN*/ ROP4 rop4);
WIN32KAPI
BOOL
DDKAPI
EngCheckAbort(
/*IN*/ SURFOBJ *pso);
WIN32KAPI
VOID
DDKAPI
EngClearEvent(
/*IN*/ PEVENT pEvent);
WIN32KAPI
FD_GLYPHSET*
DDKAPI
EngComputeGlyphSet(
/*IN*/ INT nCodePage,
/*IN*/ INT nFirstChar,
/*IN*/ INT cChars);
/* EngControlSprites.fl constants */
#define ECS_TEARDOWN 0x00000001
#define ECS_REDRAW 0x00000002
WIN32KAPI
BOOL
DDKAPI
EngControlSprites(
/*IN*/ WNDOBJ *pwo,
/*IN*/ FLONG fl);
WIN32KAPI
BOOL
DDKAPI
EngCopyBits(
/*OUT*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclDest,
/*IN*/ POINTL *pptlSrc);
WIN32KAPI
HBITMAP
DDKAPI
EngCreateBitmap(
/*IN*/ SIZEL sizl,
/*IN*/ LONG lWidth,
/*IN*/ ULONG iFormat,
/*IN*/ FLONG fl,
/*IN*/ PVOID pvBits);
WIN32KAPI
CLIPOBJ*
DDKAPI
EngCreateClip(
VOID);
WIN32KAPI
HBITMAP
DDKAPI
EngCreateDeviceBitmap(
/*IN*/ DHSURF dhsurf,
/*IN*/ SIZEL sizl,
/*IN*/ ULONG iFormatCompat);
WIN32KAPI
HSURF
DDKAPI
EngCreateDeviceSurface(
DHSURF dhsurf,
SIZEL sizl,
ULONG iFormatCompat);
#if 0
WIN32KAPI
HDRVOBJ
DDKAPI
EngCreateDriverObj(
PVOID pvObj,
FREEOBJPROC pFreeObjProc,
HDEV hdev);
#endif
WIN32KAPI
BOOL
DDKAPI
EngCreateEvent(
/*OUT*/ PEVENT *ppEvent);
/* EngCreatePalette.iMode constants */
#define PAL_INDEXED 0x00000001
#define PAL_BITFIELDS 0x00000002
#define PAL_RGB 0x00000004
#define PAL_BGR 0x00000008
#define PAL_CMYK 0x00000010
WIN32KAPI
HPALETTE
DDKAPI
EngCreatePalette(
/*IN*/ ULONG iMode,
/*IN*/ ULONG cColors,
/*IN*/ ULONG *pulColors,
/*IN*/ FLONG flRed,
/*IN*/ FLONG flGreen,
/*IN*/ FLONG flBlue);
WIN32KAPI
PATHOBJ*
DDKAPI
EngCreatePath(
VOID);
WIN32KAPI
HSEMAPHORE
DDKAPI
EngCreateSemaphore(
VOID);
/* EngCreateWnd.fl constants */
#define WO_RGN_CLIENT_DELTA 0x00000001
#define WO_RGN_CLIENT 0x00000002
#define WO_RGN_SURFACE_DELTA 0x00000004
#define WO_RGN_SURFACE 0x00000008
#define WO_RGN_UPDATE_ALL 0x00000010
#define WO_RGN_WINDOW 0x00000020
#define WO_DRAW_NOTIFY 0x00000040
#define WO_SPRITE_NOTIFY 0x00000080
#define WO_RGN_DESKTOP_COORD 0x00000100
WIN32KAPI
WNDOBJ*
DDKAPI
EngCreateWnd(
SURFOBJ *pso,
HWND hwnd,
WNDOBJCHANGEPROC pfn,
FLONG fl,
int iPixelFormat);
WIN32KAPI
VOID
DDKAPI
EngDebugBreak(
VOID);
WIN32KAPI
VOID
DDKAPI
EngDebugPrint(
/*IN*/ PCHAR StandardPrefix,
/*IN*/ PCHAR DebugMessage,
/*IN*/ va_list ap);
WIN32KAPI
VOID
DDKAPI
EngDeleteClip(
/*IN*/ CLIPOBJ *pco);
WIN32KAPI
BOOL
DDKAPI
EngDeleteDriverObj(
/*IN*/ HDRVOBJ hdo,
/*IN*/ BOOL bCallBack,
/*IN*/ BOOL bLocked);
WIN32KAPI
BOOL
DDKAPI
EngDeleteEvent(
/*IN*/ PEVENT pEvent);
WIN32KAPI
BOOL
DDKAPI
EngDeleteFile(
/*IN*/ LPWSTR pwszFileName);
WIN32KAPI
BOOL
DDKAPI
EngDeletePalette(
/*IN*/ HPALETTE hpal);
WIN32KAPI
VOID
DDKAPI
EngDeletePath(
/*IN*/ PATHOBJ *ppo);
WIN32KAPI
VOID
DDKAPI
EngDeleteSafeSemaphore(
/*IN OUT*/ ENGSAFESEMAPHORE *pssem);
WIN32KAPI
VOID
DDKAPI
EngDeleteSemaphore(
/*IN OUT*/ HSEMAPHORE hsem);
WIN32KAPI
BOOL
DDKAPI
EngDeleteSurface(
/*IN*/ HSURF hsurf);
WIN32KAPI
VOID
DDKAPI
EngDeleteWnd(
/*IN*/ WNDOBJ *pwo);
WIN32KAPI
DWORD
DDKAPI
EngDeviceIoControl(
/*IN*/ HANDLE hDevice,
/*IN*/ DWORD dwIoControlCode,
/*IN*/ LPVOID lpInBuffer,
/*IN*/ DWORD nInBufferSize,
/*IN OUT*/ LPVOID lpOutBuffer,
/*IN*/ DWORD nOutBufferSize,
/*OUT*/ LPDWORD lpBytesReturned);
WIN32KAPI
ULONG
DDKAPI
EngDitherColor(
/*IN*/ HDEV hdev,
/*IN*/ ULONG iMode,
/*IN*/ ULONG rgb,
/*OUT*/ ULONG *pul);
WIN32KAPI
BOOL
DDKAPI
EngEnumForms(
/*IN*/ HANDLE hPrinter,
/*IN*/ DWORD Level,
/*OUT*/ LPBYTE pForm,
/*IN*/ DWORD cbBuf,
/*OUT*/ LPDWORD pcbNeeded,
/*OUT*/ LPDWORD pcReturned);
WIN32KAPI
BOOL
DDKAPI
EngEraseSurface(
/*IN*/ SURFOBJ *pso,
/*IN*/ RECTL *prcl,
/*IN*/ ULONG iColor);
WIN32KAPI
BOOL
DDKAPI
EngFillPath(
/*IN*/ SURFOBJ *pso,
/*IN*/ PATHOBJ *ppo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ MIX mix,
/*IN*/ FLONG flOptions);
WIN32KAPI
PVOID
DDKAPI
EngFindImageProcAddress(
/*IN*/ HANDLE hModule,
/*IN*/ LPSTR lpProcName);
WIN32KAPI
PVOID
DDKAPI
EngFindResource(
/*IN*/ HANDLE h,
/*IN*/ int iName,
/*IN*/ int iType,
/*OUT*/ PULONG pulSize);
WIN32KAPI
PVOID
DDKAPI
EngFntCacheAlloc(
/*IN*/ ULONG FastCheckSum,
/*IN*/ ULONG ulSize);
/* EngFntCacheFault.iFaultMode constants */
#define ENG_FNT_CACHE_READ_FAULT 0x00000001
#define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
WIN32KAPI
VOID
DDKAPI
EngFntCacheFault(
/*IN*/ ULONG ulFastCheckSum,
/*IN*/ ULONG iFaultMode);
WIN32KAPI
PVOID
DDKAPI
EngFntCacheLookUp(
/*IN*/ ULONG FastCheckSum,
/*OUT*/ ULONG *pulSize);
WIN32KAPI
VOID
DDKAPI
EngFreeMem(
/*IN*/ PVOID Mem);
WIN32KAPI
VOID
DDKAPI
EngFreeModule(
/*IN*/ HANDLE h);
WIN32KAPI
VOID
DDKAPI
EngFreePrivateUserMem(
/*IN*/ PDD_SURFACE_LOCAL psl,
/*IN*/ PVOID pv);
WIN32KAPI
VOID
DDKAPI
EngFreeUserMem(
/*IN*/ PVOID pv);
WIN32KAPI
VOID
DDKAPI
EngGetCurrentCodePage(
/*OUT*/ PUSHORT OemCodePage,
/*OUT*/ PUSHORT AnsiCodePage);
WIN32KAPI
HANDLE
DDKAPI
EngGetCurrentProcessId(
VOID);
WIN32KAPI
HANDLE
DDKAPI
EngGetCurrentThreadId(
VOID);
WIN32KAPI
LPWSTR
DDKAPI
EngGetDriverName(
/*IN*/ HDEV hdev);
WIN32KAPI
BOOL
DDKAPI
EngGetFileChangeTime(
/*IN*/ HANDLE h,
/*OUT*/ LARGE_INTEGER *pChangeTime);
WIN32KAPI
BOOL
DDKAPI
EngGetFilePath(
/*IN*/ HANDLE h,
/*OUT*/ WCHAR (*pDest)[MAX_PATH+1]);
WIN32KAPI
BOOL
DDKAPI
EngGetForm(
/*IN*/ HANDLE hPrinter,
/*IN*/ LPWSTR pFormName,
/*IN*/ DWORD Level,
/*OUT*/ LPBYTE pForm,
/*IN*/ DWORD cbBuf,
/*OUT*/ LPDWORD pcbNeeded);
WIN32KAPI
ULONG
DDKAPI
EngGetLastError(
VOID);
WIN32KAPI
BOOL
DDKAPI
EngGetPrinter(
/*IN*/ HANDLE hPrinter,
/*IN*/ DWORD dwLevel,
/*OUT*/ LPBYTE pPrinter,
/*IN*/ DWORD cbBuf,
/*OUT*/ LPDWORD pcbNeeded);
WIN32KAPI
DWORD
DDKAPI
EngGetPrinterData(
/*IN*/ HANDLE hPrinter,
/*IN*/ LPWSTR pValueName,
/*OUT*/ LPDWORD pType,
/*OUT*/ LPBYTE pData,
/*IN*/ DWORD nSize,
/*OUT*/ LPDWORD pcbNeeded);
WIN32KAPI
LPWSTR
DDKAPI
EngGetPrinterDataFileName(
/*IN*/ HDEV hdev);
WIN32KAPI
BOOL
DDKAPI
EngGetPrinterDriver(
/*IN*/ HANDLE hPrinter,
/*IN*/ LPWSTR pEnvironment,
/*IN*/ DWORD dwLevel,
/*OUT*/ BYTE *lpbDrvInfo,
/*IN*/ DWORD cbBuf,
/*OUT*/ DWORD *pcbNeeded);
WIN32KAPI
HANDLE
DDKAPI
EngGetProcessHandle(
VOID);
WIN32KAPI
BOOL
DDKAPI
EngGetType1FontList(
/*IN*/ HDEV hdev,
/*OUT*/ TYPE1_FONT *pType1Buffer,
/*IN*/ ULONG cjType1Buffer,
/*OUT*/ PULONG pulLocalFonts,
/*OUT*/ PULONG pulRemoteFonts,
/*OUT*/ LARGE_INTEGER *pLastModified);
WIN32KAPI
BOOL
DDKAPI
EngGradientFill(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ TRIVERTEX *pVertex,
/*IN*/ ULONG nVertex,
/*IN*/ PVOID pMesh,
/*IN*/ ULONG nMesh,
/*IN*/ RECTL *prclExtents,
/*IN*/ POINTL *pptlDitherOrg,
/*IN*/ ULONG ulMode);
/* EngHangNotification return values */
#define EHN_RESTORED 0x00000000
#define EHN_ERROR 0x00000001
WIN32KAPI
ULONG
DDKAPI
EngHangNotification(
/*IN*/ HDEV hDev,
/*IN*/ PVOID Reserved);
WIN32KAPI
BOOL
DDKAPI
EngInitializeSafeSemaphore(
/*OUT*/ ENGSAFESEMAPHORE *pssem);
WIN32KAPI
BOOL
DDKAPI
EngIsSemaphoreOwned(
/*IN*/ HSEMAPHORE hsem);
WIN32KAPI
BOOL
DDKAPI
EngIsSemaphoreOwnedByCurrentThread(
/*IN*/ HSEMAPHORE hsem);
WIN32KAPI
BOOL
DDKAPI
EngLineTo(
SURFOBJ *pso,
CLIPOBJ *pco,
BRUSHOBJ *pbo,
LONG x1,
LONG y1,
LONG x2,
LONG y2,
RECTL *prclBounds,
MIX mix);
WIN32KAPI
HANDLE
DDKAPI
EngLoadImage(
/*IN*/ LPWSTR pwszDriver);
WIN32KAPI
HANDLE
DDKAPI
EngLoadModule(
/*IN*/ LPWSTR pwsz);
WIN32KAPI
HANDLE
DDKAPI
EngLoadModuleForWrite(
/*IN*/ LPWSTR pwsz,
/*IN*/ ULONG cjSizeOfModule);
WIN32KAPI
PDD_SURFACE_LOCAL
DDKAPI
EngLockDirectDrawSurface(
/*IN*/ HANDLE hSurface);
WIN32KAPI
DRIVEROBJ*
DDKAPI
EngLockDriverObj(
/*IN*/ HDRVOBJ hdo);
WIN32KAPI
SURFOBJ*
DDKAPI
EngLockSurface(
/*IN*/ HSURF hsurf);
WIN32KAPI
BOOL
DDKAPI
EngLpkInstalled(
VOID);
WIN32KAPI
PEVENT
DDKAPI
EngMapEvent(
/*IN*/ HDEV hDev,
/*IN*/ HANDLE hUserObject,
/*IN*/ PVOID Reserved1,
/*IN*/ PVOID Reserved2,
/*IN*/ PVOID Reserved3);
WIN32KAPI
PVOID
DDKAPI
EngMapFile(
/*IN*/ LPWSTR pwsz,
/*IN*/ ULONG cjSize,
/*OUT*/ ULONG_PTR *piFile);
WIN32KAPI
BOOL
DDKAPI
EngMapFontFile(
ULONG_PTR iFile,
PULONG *ppjBuf,
ULONG *pcjBuf);
WIN32KAPI
BOOL
DDKAPI
EngMapFontFileFD(
/*IN*/ ULONG_PTR iFile,
/*OUT*/ PULONG *ppjBuf,
/*OUT*/ ULONG *pcjBuf);
WIN32KAPI
PVOID
DDKAPI
EngMapModule(
/*IN*/ HANDLE h,
/*OUT*/ PULONG pSize);
WIN32KAPI
BOOL
DDKAPI
EngMarkBandingSurface(
/*IN*/ HSURF hsurf);
/* EngModifySurface.flSurface constants */
#define MS_NOTSYSTEMMEMORY 0x00000001
#define MS_SHAREDACCESS 0x00000002
WIN32KAPI
BOOL
DDKAPI
EngModifySurface(
/*IN*/ HSURF hsurf,
/*IN*/ HDEV hdev,
/*IN*/ FLONG flHooks,
/*IN*/ FLONG flSurface,
/*IN*/ DHSURF dhsurf,
/*IN*/ VOID *pvScan0,
/*IN*/ LONG lDelta,
/*IN*/ VOID *pvReserved);
WIN32KAPI
VOID
DDKAPI
EngMovePointer(
/*IN*/ SURFOBJ *pso,
/*IN*/ LONG x,
/*IN*/ LONG y,
/*IN*/ RECTL *prcl);
WIN32KAPI
int
DDKAPI
EngMulDiv(
/*IN*/ int a,
/*IN*/ int b,
/*IN*/ int c);
WIN32KAPI
VOID
DDKAPI
EngMultiByteToUnicodeN(
/*OUT*/ LPWSTR UnicodeString,
/*IN*/ ULONG MaxBytesInUnicodeString,
/*OUT*/ PULONG BytesInUnicodeString,
/*IN*/ PCHAR MultiByteString,
/*IN*/ ULONG BytesInMultiByteString);
WIN32KAPI
INT
DDKAPI
EngMultiByteToWideChar(
/*IN*/ UINT CodePage,
/*OUT*/ LPWSTR WideCharString,
/*IN*/ INT BytesInWideCharString,
/*IN*/ LPSTR MultiByteString,
/*IN*/ INT BytesInMultiByteString);
WIN32KAPI
BOOL
DDKAPI
EngPaint(
/*IN*/ SURFOBJ *pso,
/*IN*/ CLIPOBJ *pco,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ MIX mix);
WIN32KAPI
BOOL
DDKAPI
EngPlgBlt(
/*IN*/ SURFOBJ *psoTrg,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMsk,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ COLORADJUSTMENT *pca,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ POINTFIX *pptfx,
/*IN*/ RECTL *prcl,
/*IN*/ POINTL *pptl,
/*IN*/ ULONG iMode);
WIN32KAPI
VOID
DDKAPI
EngProbeForRead(
/*IN*/ PVOID Address,
/*IN*/ ULONG Length,
/*IN*/ ULONG Alignment);
WIN32KAPI
VOID
DDKAPI
EngProbeForReadAndWrite(
/*IN*/ PVOID Address,
/*IN*/ ULONG Length,
/*IN*/ ULONG Alignment);
typedef enum _ENG_DEVICE_ATTRIBUTE {
QDA_RESERVED = 0,
QDA_ACCELERATION_LEVEL
} ENG_DEVICE_ATTRIBUTE;
WIN32KAPI
BOOL
DDKAPI
EngQueryDeviceAttribute(
/*IN*/ HDEV hdev,
/*IN*/ ENG_DEVICE_ATTRIBUTE devAttr,
/*IN*/ VOID *pvIn,
/*IN*/ ULONG ulInSize,
/*OUT*/ VOID *pvOut,
/*OUT*/ ULONG ulOutSize);
WIN32KAPI
LARGE_INTEGER
DDKAPI
EngQueryFileTimeStamp(
/*IN*/ LPWSTR pwsz);
WIN32KAPI
VOID
DDKAPI
EngQueryLocalTime(
/*OUT*/ PENG_TIME_FIELDS ptf);
WIN32KAPI
ULONG
DDKAPI
EngQueryPalette(
/*IN*/ HPALETTE hPal,
/*OUT*/ ULONG *piMode,
/*IN*/ ULONG cColors,
/*OUT*/ ULONG *pulColors);
WIN32KAPI
VOID
DDKAPI
EngQueryPerformanceCounter(
/*OUT*/ LONGLONG *pPerformanceCount);
WIN32KAPI
VOID
DDKAPI
EngQueryPerformanceFrequency(
/*OUT*/ LONGLONG *pFrequency);
typedef enum _ENG_SYSTEM_ATTRIBUTE {
EngProcessorFeature = 1,
EngNumberOfProcessors,
EngOptimumAvailableUserMemory,
EngOptimumAvailableSystemMemory,
} ENG_SYSTEM_ATTRIBUTE;
#define QSA_MMX 0x00000100
#define QSA_SSE 0x00002000
#define QSA_3DNOW 0x00004000
WIN32KAPI
BOOL
DDKAPI
EngQuerySystemAttribute(
/*IN*/ ENG_SYSTEM_ATTRIBUTE CapNum,
/*OUT*/ PDWORD pCapability);
WIN32KAPI
LONG
DDKAPI
EngReadStateEvent(
/*IN*/ PEVENT pEvent);
WIN32KAPI
VOID
DDKAPI
EngReleaseSemaphore(
/*IN*/ HSEMAPHORE hsem);
WIN32KAPI
BOOL
DDKAPI
EngRestoreFloatingPointState(
/*IN*/ VOID *pBuffer);
WIN32KAPI
ULONG
DDKAPI
EngSaveFloatingPointState(
/*OUT*/ VOID *pBuffer,
/*IN*/ ULONG cjBufferSize);
WIN32KAPI
HANDLE
DDKAPI
EngSecureMem(
/*IN*/ PVOID Address,
/*IN*/ ULONG Length);
WIN32KAPI
LONG
DDKAPI
EngSetEvent(
/*IN*/ PEVENT pEvent);
WIN32KAPI
VOID
DDKAPI
EngSetLastError(
/*IN*/ ULONG iError);
WIN32KAPI
ULONG
DDKAPI
EngSetPointerShape(
/*IN*/ SURFOBJ *pso,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ SURFOBJ *psoColor,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ LONG xHot,
/*IN*/ LONG yHot,
/*IN*/ LONG x,
/*IN*/ LONG y,
/*IN*/ RECTL *prcl,
/*IN*/ FLONG fl);
WIN32KAPI
BOOL
DDKAPI
EngSetPointerTag(
/*IN*/ HDEV hdev,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ SURFOBJ *psoColor,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ FLONG fl);
WIN32KAPI
DWORD
DDKAPI
EngSetPrinterData(
/*IN*/ HANDLE hPrinter,
/*IN*/ LPWSTR pType,
/*IN*/ DWORD dwType,
/*IN*/ LPBYTE lpbPrinterData,
/*IN*/ DWORD cjPrinterData);
typedef int DDKCDECLAPI (*SORTCOMP)(const void *pv1, const void *pv2);
WIN32KAPI
VOID
DDKAPI
EngSort(
/*IN OUT*/ PBYTE pjBuf,
/*IN*/ ULONG c,
/*IN*/ ULONG cjElem,
/*IN*/ SORTCOMP pfnComp);
WIN32KAPI
BOOL
DDKAPI
EngStretchBlt(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ COLORADJUSTMENT *pca,
/*IN*/ POINTL *pptlHTOrg,
/*IN*/ RECTL *prclDest,
/*IN*/ RECTL *prclSrc,
/*IN*/ POINTL *pptlMask,
/*IN*/ ULONG iMode);
WIN32KAPI
BOOL
DDKAPI
EngStretchBltROP(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ COLORADJUSTMENT *pca,
/*IN*/ POINTL *pptlHTOrg,
/*IN*/ RECTL *prclDest,
/*IN*/ RECTL *prclSrc,
/*IN*/ POINTL *pptlMask,
/*IN*/ ULONG iMode,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ DWORD rop4);
WIN32KAPI
BOOL
DDKAPI
EngStrokeAndFillPath(
/*IN*/ SURFOBJ *pso,
/*IN*/ PATHOBJ *ppo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XFORMOBJ *pxo,
/*IN*/ BRUSHOBJ *pboStroke,
/*IN*/ LINEATTRS *plineattrs,
/*IN*/ BRUSHOBJ *pboFill,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ MIX mixFill,
/*IN*/ FLONG flOptions);
WIN32KAPI
BOOL
DDKAPI
EngStrokePath(
/*IN*/ SURFOBJ *pso,
/*IN*/ PATHOBJ *ppo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XFORMOBJ *pxo,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ LINEATTRS *plineattrs,
/*IN*/ MIX mix);
WIN32KAPI
BOOL
DDKAPI
EngTextOut(
/*IN*/ SURFOBJ *pso,
/*IN*/ STROBJ *pstro,
/*IN*/ FONTOBJ *pfo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ RECTL *prclExtra,
/*IN*/ RECTL *prclOpaque,
/*IN*/ BRUSHOBJ *pboFore,
/*IN*/ BRUSHOBJ *pboOpaque,
/*IN*/ POINTL *pptlOrg,
/*IN*/ MIX mix);
WIN32KAPI
BOOL
DDKAPI
EngTransparentBlt(
/*IN*/ SURFOBJ *psoDst,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclDst,
/*IN*/ RECTL *prclSrc,
/*IN*/ ULONG iTransColor,
/*IN*/ ULONG ulReserved);
WIN32KAPI
VOID
DDKAPI
EngUnicodeToMultiByteN(
/*OUT*/ PCHAR MultiByteString,
/*IN*/ ULONG MaxBytesInMultiByteString,
/*OUT*/ PULONG BytesInMultiByteString,
/*IN*/ PWSTR UnicodeString,
/*IN*/ ULONG BytesInUnicodeString);
WIN32KAPI
VOID
DDKAPI
EngUnloadImage(
/*IN*/ HANDLE hModule);
WIN32KAPI
BOOL
DDKAPI
EngUnlockDirectDrawSurface(
/*IN*/ PDD_SURFACE_LOCAL pSurface);
WIN32KAPI
BOOL
DDKAPI
EngUnlockDriverObj(
/*IN*/ HDRVOBJ hdo);
WIN32KAPI
VOID
DDKAPI
EngUnlockSurface(
/*IN*/ SURFOBJ *pso);
WIN32KAPI
BOOL
DDKAPI
EngUnmapEvent(
/*IN*/ PEVENT pEvent);
WIN32KAPI
BOOL
DDKAPI
EngUnmapFile(
/*IN*/ ULONG_PTR iFile);
WIN32KAPI
VOID
DDKAPI
EngUnmapFontFile(
ULONG_PTR iFile);
WIN32KAPI
VOID
DDKAPI
EngUnmapFontFileFD(
/*IN*/ ULONG_PTR iFile);
WIN32KAPI
VOID
DDKAPI
EngUnsecureMem(
/*IN*/ HANDLE hSecure);
WIN32KAPI
BOOL
DDKAPI
EngWaitForSingleObject(
/*IN*/ PEVENT pEvent,
/*IN*/ PLARGE_INTEGER pTimeOut);
WIN32KAPI
INT
DDKAPI
EngWideCharToMultiByte(
/*IN*/ UINT CodePage,
/*IN*/ LPWSTR WideCharString,
/*IN*/ INT BytesInWideCharString,
/*OUT*/ LPSTR MultiByteString,
/*IN*/ INT BytesInMultiByteString);
WIN32KAPI
BOOL
DDKAPI
EngWritePrinter(
/*IN*/ HANDLE hPrinter,
/*IN*/ LPVOID pBuf,
/*IN*/ DWORD cbBuf,
/*OUT*/ LPDWORD pcWritten);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_Add(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ PFLOATOBJ pf1);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_AddFloat(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ FLOATL f);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_AddLong(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ LONG l);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_Div(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ PFLOATOBJ pf1);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_DivFloat(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ FLOATL f);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_DivLong(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ LONG l);
WIN32KAPI
BOOL
DDKAPI
FLOATOBJ_Equal(
/*IN*/ PFLOATOBJ pf,
/*IN*/ PFLOATOBJ pf1);
WIN32KAPI
BOOL
DDKAPI
FLOATOBJ_EqualLong(
/*IN*/ PFLOATOBJ pf,
/*IN*/ LONG l);
WIN32KAPI
LONG
DDKAPI
FLOATOBJ_GetFloat(
/*IN*/ PFLOATOBJ pf);
WIN32KAPI
LONG
DDKAPI
FLOATOBJ_GetLong(
/*IN*/ PFLOATOBJ pf);
WIN32KAPI
BOOL
DDKAPI
FLOATOBJ_GreaterThan(
/*IN*/ PFLOATOBJ pf,
/*IN*/ PFLOATOBJ pf1);
WIN32KAPI
BOOL
DDKAPI
FLOATOBJ_GreaterThanLong(
/*IN*/ PFLOATOBJ pf,
/*IN*/ LONG l);
WIN32KAPI
BOOL
DDKAPI
FLOATOBJ_LessThan(
/*IN*/ PFLOATOBJ pf,
/*IN*/ PFLOATOBJ pf1);
WIN32KAPI
BOOL
DDKAPI
FLOATOBJ_LessThanLong(
/*IN*/ PFLOATOBJ pf,
/*IN*/ LONG l);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_Mul(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ PFLOATOBJ pf1);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_MulFloat(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ FLOATL f);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_MulLong(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ LONG l);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_Neg(
/*IN OUT*/ PFLOATOBJ pf);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_SetFloat(
/*OUT*/ PFLOATOBJ pf,
/*IN*/ FLOATL f);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_SetLong(
/*OUT*/ PFLOATOBJ pf,
/*IN*/ LONG l);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_Sub(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ PFLOATOBJ pf1);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_SubFloat(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ FLOATL f);
WIN32KAPI
VOID
DDKAPI
FLOATOBJ_SubLong(
/*IN OUT*/ PFLOATOBJ pf,
/*IN*/ LONG l);
WIN32KAPI
ULONG
DDKAPI
FONTOBJ_cGetAllGlyphHandles(
/*IN*/ FONTOBJ *pfo,
/*OUT*/ HGLYPH *phg);
WIN32KAPI
ULONG
DDKAPI
FONTOBJ_cGetGlyphs(
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG iMode,
/*IN*/ ULONG cGlyph,
/*IN*/ HGLYPH *phg,
/*OUT*/ PVOID *ppvGlyph);
WIN32KAPI
FD_GLYPHSET*
DDKAPI
FONTOBJ_pfdg(
/*IN*/ FONTOBJ *pfo);
WIN32KAPI
IFIMETRICS*
DDKAPI
FONTOBJ_pifi(
/*IN*/ FONTOBJ *pfo);
WIN32KAPI
PBYTE
DDKAPI
FONTOBJ_pjOpenTypeTablePointer(
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG ulTag,
/*OUT*/ ULONG *pcjTable);
WIN32KAPI
PFD_GLYPHATTR
DDKAPI
FONTOBJ_pQueryGlyphAttrs(
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG iMode);
WIN32KAPI
PVOID
DDKAPI
FONTOBJ_pvTrueTypeFontFile(
/*IN*/ FONTOBJ *pfo,
/*OUT*/ ULONG *pcjFile);
WIN32KAPI
LPWSTR
DDKAPI
FONTOBJ_pwszFontFilePaths(
/*IN*/ FONTOBJ *pfo,
/*OUT*/ ULONG *pcwc);
WIN32KAPI
XFORMOBJ*
DDKAPI
FONTOBJ_pxoGetXform(
/*IN*/ FONTOBJ *pfo);
WIN32KAPI
VOID
DDKAPI
FONTOBJ_vGetInfo(
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG cjSize,
/*OUT*/ FONTINFO *pfi);
WIN32KAPI
FLATPTR
DDKAPI
HeapVidMemAllocAligned(
/*IN*/ LPVIDMEM lpVidMem,
/*IN*/ DWORD dwWidth,
/*IN*/ DWORD dwHeight,
/*IN*/ LPSURFACEALIGNMENT lpAlignment,
/*OUT*/ LPLONG lpNewPitch);
WIN32KAPI
LONG
DDKAPI
HT_ComputeRGBGammaTable(
/*IN*/ USHORT GammaTableEntries,
/*IN*/ USHORT GammaTableType,
/*IN*/ USHORT RedGamma,
/*IN*/ USHORT GreenGamma,
/*IN*/ USHORT BlueGamma,
/*OUT*/ LPBYTE pGammaTable);
WIN32KAPI
LONG
DDKAPI
HT_Get8BPPFormatPalette(
/*OUT*/ LPPALETTEENTRY pPaletteEntry,
/*IN*/ USHORT RedGamma,
/*IN*/ USHORT GreenGamma,
/*IN*/ USHORT BlueGamma);
WIN32KAPI
LONG
DDKAPI
HT_Get8BPPMaskPalette(
/*IN OUT*/ LPPALETTEENTRY pPaletteEntry,
/*IN*/ BOOL Use8BPPMaskPal,
/*IN*/ BYTE CMYMask,
/*IN*/ USHORT RedGamma,
/*IN*/ USHORT GreenGamma,
/*IN*/ USHORT BlueGamma);
WIN32KAPI
LONG
DDKAPI
HTUI_DeviceColorAdjustment(
/*IN*/ LPSTR pDeviceName,
/*OUT*/ PDEVHTADJDATA pDevHTAdjData);
WIN32KAPI
ULONG
DDKAPI
PALOBJ_cGetColors(
/*IN*/ PALOBJ *ppalo,
/*IN*/ ULONG iStart,
/*IN*/ ULONG cColors,
/*OUT*/ ULONG *pulColors);
WIN32KAPI
BOOL
DDKAPI
PATHOBJ_bCloseFigure(
/*IN*/ PATHOBJ *ppo);
WIN32KAPI
BOOL
DDKAPI
PATHOBJ_bEnum(
/*IN*/ PATHOBJ *ppo,
/*OUT*/ PATHDATA *ppd);
WIN32KAPI
BOOL
DDKAPI
PATHOBJ_bEnumClipLines(
/*IN*/ PATHOBJ *ppo,
/*IN*/ ULONG cb,
/*OUT*/ CLIPLINE *pcl);
WIN32KAPI
BOOL
DDKAPI
PATHOBJ_bMoveTo(
/*IN*/ PATHOBJ *ppo,
/*IN*/ POINTFIX ptfx);
WIN32KAPI
BOOL
DDKAPI
PATHOBJ_bPolyBezierTo(
/*IN*/ PATHOBJ *ppo,
/*IN*/ POINTFIX *pptfx,
/*IN*/ ULONG cptfx);
WIN32KAPI
BOOL
DDKAPI
PATHOBJ_bPolyLineTo(
/*IN*/ PATHOBJ *ppo,
/*IN*/ POINTFIX *pptfx,
/*IN*/ ULONG cptfx);
WIN32KAPI
VOID
DDKAPI
PATHOBJ_vEnumStart(
/*IN*/ PATHOBJ *ppo);
WIN32KAPI
VOID
DDKAPI
PATHOBJ_vEnumStartClipLines(
/*IN*/ PATHOBJ *ppo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ SURFOBJ *pso,
/*IN*/ LINEATTRS *pla);
WIN32KAPI
VOID
DDKAPI
PATHOBJ_vGetBounds(
/*IN*/ PATHOBJ *ppo,
/*OUT*/ PRECTFX prectfx);
WIN32KAPI
BOOL
DDKAPI
STROBJ_bEnum(
/*IN*/ STROBJ *pstro,
/*OUT*/ ULONG *pc,
/*OUT*/ PGLYPHPOS *ppgpos);
WIN32KAPI
BOOL
DDKAPI
STROBJ_bEnumPositionsOnly(
/*IN*/ STROBJ *pstro,
/*OUT*/ ULONG *pc,
/*OUT*/ PGLYPHPOS *ppgpos);
WIN32KAPI
BOOL
DDKAPI
STROBJ_bGetAdvanceWidths(
/*IN*/ STROBJ *pso,
/*IN*/ ULONG iFirst,
/*IN*/ ULONG c,
/*OUT*/ POINTQF *pptqD);
WIN32KAPI
DWORD
DDKAPI
STROBJ_dwGetCodePage(
/*IN*/ STROBJ *pstro);
WIN32KAPI
FIX
DDKAPI
STROBJ_fxBreakExtra(
/*IN*/ STROBJ *pstro);
WIN32KAPI
FIX
DDKAPI
STROBJ_fxCharacterExtra(
/*IN*/ STROBJ *pstro);
WIN32KAPI
VOID
DDKAPI
STROBJ_vEnumStart(
/*IN*/ STROBJ *pstro);
WIN32KAPI
VOID
DDKAPI
VidMemFree(
/*IN*/ LPVMEMHEAP pvmh,
/*IN*/ FLATPTR ptr);
WIN32KAPI
BOOL
DDKAPI
WNDOBJ_bEnum(
/*IN*/ WNDOBJ *pwo,
/*IN*/ ULONG cj,
/*OUT*/ ULONG *pul);
WIN32KAPI
ULONG
DDKAPI
WNDOBJ_cEnumStart(
/*IN*/ WNDOBJ *pwo,
/*IN*/ ULONG iType,
/*IN*/ ULONG iDirection,
/*IN*/ ULONG cLimit);
WIN32KAPI
VOID
DDKAPI
WNDOBJ_vSetConsumer(
/*IN*/ WNDOBJ *pwo,
/*IN*/ PVOID pvConsumer);
/* XFORMOBJ_bApplyXform.iMode constants */
#define XF_LTOL 0L
#define XF_INV_LTOL 1L
#define XF_LTOFX 2L
#define XF_INV_FXTOL 3L
WIN32KAPI
BOOL
DDKAPI
XFORMOBJ_bApplyXform(
/*IN*/ XFORMOBJ *pxo,
/*IN*/ ULONG iMode,
/*IN*/ ULONG cPoints,
/*IN*/ PVOID pvIn,
/*OUT*/ PVOID pvOut);
WIN32KAPI
ULONG
DDKAPI
XFORMOBJ_iGetFloatObjXform(
/*IN*/ XFORMOBJ *pxo,
/*OUT*/ FLOATOBJ_XFORM *pxfo);
WIN32KAPI
ULONG
DDKAPI
XFORMOBJ_iGetXform(
/*IN*/ XFORMOBJ *pxo,
/*OUT*/ XFORML *pxform);
/* XLATEOBJ_cGetPalette.iPal constants */
#define XO_SRCPALETTE 1
#define XO_DESTPALETTE 2
#define XO_DESTDCPALETTE 3
#define XO_SRCBITFIELDS 4
#define XO_DESTBITFIELDS 5
WIN32KAPI
ULONG
DDKAPI
XLATEOBJ_cGetPalette(
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ ULONG iPal,
/*IN*/ ULONG cPal,
/*OUT*/ ULONG *pPal);
WIN32KAPI
HANDLE
DDKAPI
XLATEOBJ_hGetColorTransform(
/*IN*/ XLATEOBJ *pxlo);
WIN32KAPI
ULONG
DDKAPI
XLATEOBJ_iXlate(
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ ULONG iColor);
WIN32KAPI
ULONG*
DDKAPI
XLATEOBJ_piVector(
/*IN*/ XLATEOBJ *pxlo);
/* Graphics Driver Functions */
BOOL
DDKAPI
DrvAlphaBlend(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclDest,
/*IN*/ RECTL *prclSrc,
/*IN*/ BLENDOBJ *pBlendObj);
BOOL
DDKAPI
DrvAssertMode(
/*IN*/ DHPDEV dhpdev,
/*IN*/ BOOL bEnable);
BOOL
DDKAPI
DrvBitBlt(
/*IN*/ SURFOBJ *psoTrg,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclTrg,
/*IN*/ POINTL *pptlSrc,
/*IN*/ POINTL *pptlMask,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrush,
/*IN*/ ROP4 rop4);
VOID
DDKAPI
DrvCompletePDEV(
/*IN*/ DHPDEV dhpdev,
/*IN*/ HDEV hdev);
BOOL
DDKAPI
DrvCopyBits(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclDest,
/*IN*/ POINTL *pptlSrc);
HBITMAP
DDKAPI
DrvCreateDeviceBitmap(
/*IN*/ DHPDEV dhpdev,
/*IN*/ SIZEL sizl,
/*IN*/ ULONG iFormat);
VOID
DDKAPI
DrvDeleteDeviceBitmap(
/*IN*/ DHSURF dhsurf);
HBITMAP
DDKAPI
DrvDeriveSurface(
DD_DIRECTDRAW_GLOBAL *pDirectDraw,
DD_SURFACE_LOCAL *pSurface);
LONG
DDKAPI
DrvDescribePixelFormat(
/*IN*/ DHPDEV dhpdev,
/*IN*/ LONG iPixelFormat,
/*IN*/ ULONG cjpfd,
/*OUT*/ PIXELFORMATDESCRIPTOR *ppfd);
VOID
DDKAPI
DrvDestroyFont(
/*IN*/ FONTOBJ *pfo);
VOID
DDKAPI
DrvDisableDriver(
VOID);
VOID
DDKAPI
DrvDisablePDEV(
/*IN*/ DHPDEV dhpdev);
VOID
DDKAPI
DrvDisableSurface(
/*IN*/ DHPDEV dhpdev);
#define DM_DEFAULT 0x00000001
#define DM_MONOCHROME 0x00000002
ULONG
DDKAPI
DrvDitherColor(
/*IN*/ DHPDEV dhpdev,
/*IN*/ ULONG iMode,
/*IN*/ ULONG rgb,
/*OUT*/ ULONG *pul);
ULONG
DDKAPI
DrvDrawEscape(
/*IN*/ SURFOBJ *pso,
/*IN*/ ULONG iEsc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ RECTL *prcl,
/*IN*/ ULONG cjIn,
/*IN*/ PVOID pvIn);
BOOL
DDKAPI
DrvEnableDriver(
/*IN*/ ULONG iEngineVersion,
/*IN*/ ULONG cj,
/*OUT*/ DRVENABLEDATA *pded);
DHPDEV
DDKAPI
DrvEnablePDEV(
/*IN*/ DEVMODEW *pdm,
/*IN*/ LPWSTR pwszLogAddress,
/*IN*/ ULONG cPat,
/*OUT*/ HSURF *phsurfPatterns,
/*IN*/ ULONG cjCaps,
/*OUT*/ ULONG *pdevcaps,
/*IN*/ ULONG cjDevInfo,
/*OUT*/ DEVINFO *pdi,
/*IN*/ HDEV hdev,
/*IN*/ LPWSTR pwszDeviceName,
/*IN*/ HANDLE hDriver);
HSURF
DDKAPI
DrvEnableSurface(
/*IN*/ DHPDEV dhpdev);
/* DrvEndDoc.fl constants */
#define ED_ABORTDOC 0x00000001
BOOL
DDKAPI
DrvEndDoc(
/*IN*/ SURFOBJ *pso,
/*IN*/ FLONG fl);
ULONG
DDKAPI
DrvEscape(
/*IN*/ SURFOBJ *pso,
/*IN*/ ULONG iEsc,
/*IN*/ ULONG cjIn,
/*IN*/ PVOID pvIn,
/*IN*/ ULONG cjOut,
/*OUT*/ PVOID pvOut);
BOOL
DDKAPI
DrvFillPath(
/*IN*/ SURFOBJ *pso,
/*IN*/ PATHOBJ *ppo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ MIX mix,
/*IN*/ FLONG flOptions);
ULONG
DDKAPI
DrvFontManagement(
/*IN*/ SURFOBJ *pso,
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG iMode,
/*IN*/ ULONG cjIn,
/*IN*/ PVOID pvIn,
/*IN*/ ULONG cjOut,
/*OUT*/ PVOID pvOut);
VOID
DDKAPI
DrvFree(
/*IN*/ PVOID pv,
/*IN*/ ULONG_PTR id);
/* DrvGetGlyphMode return values */
#define FO_HGLYPHS 0L
#define FO_GLYPHBITS 1L
#define FO_PATHOBJ 2L
ULONG
DDKAPI
DrvGetGlyphMode(
/*IN*/ DHPDEV dhpdev,
/*IN*/ FONTOBJ *pfo);
ULONG
DDKAPI
DrvGetModes(
/*IN*/ HANDLE hDriver,
/*IN*/ ULONG cjSize,
/*OUT*/ DEVMODEW *pdm);
PVOID
DDKAPI
DrvGetTrueTypeFile(
/*IN*/ ULONG_PTR iFile,
/*IN*/ ULONG *pcj);
BOOL
DDKAPI
DrvGradientFill(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ TRIVERTEX *pVertex,
/*IN*/ ULONG nVertex,
/*IN*/ PVOID pMesh,
/*IN*/ ULONG nMesh,
/*IN*/ RECTL *prclExtents,
/*IN*/ POINTL *pptlDitherOrg,
/*IN*/ ULONG ulMode);
BOOL
DDKAPI
DrvIcmCheckBitmapBits(
/*IN*/ DHPDEV dhpdev,
/*IN*/ HANDLE hColorTransform,
/*IN*/ SURFOBJ *pso,
/*OUT*/ PBYTE paResults);
HANDLE
DDKAPI
DrvIcmCreateColorTransform(
/*IN*/ DHPDEV dhpdev,
/*IN*/ LPLOGCOLORSPACEW pLogColorSpace,
/*IN*/ PVOID pvSourceProfile,
/*IN*/ ULONG cjSourceProfile,
/*IN*/ PVOID pvDestProfile,
/*IN*/ ULONG cjDestProfile,
/*IN*/ PVOID pvTargetProfile,
/*IN*/ ULONG cjTargetProfile,
/*IN*/ DWORD dwReserved);
BOOL
DDKAPI
DrvIcmDeleteColorTransform(
/*IN*/ DHPDEV dhpdev,
/*IN*/ HANDLE hcmXform);
/* DrvIcmSetDeviceGammaRamp.iFormat constants */
#define IGRF_RGB_256BYTES 0x00000000
#define IGRF_RGB_256WORDS 0x00000001
BOOL
DDKAPI
DrvIcmSetDeviceGammaRamp(
/*IN*/ DHPDEV dhpdev,
/*IN*/ ULONG iFormat,
/*IN*/ LPVOID lpRamp);
BOOL
DDKAPI
DrvLineTo(
SURFOBJ *pso,
CLIPOBJ *pco,
BRUSHOBJ *pbo,
LONG x1,
LONG y1,
LONG x2,
LONG y2,
RECTL *prclBounds,
MIX mix);
ULONG_PTR
DDKAPI
DrvLoadFontFile(
ULONG cFiles,
ULONG_PTR *piFile,
PVOID *ppvView,
ULONG *pcjView,
DESIGNVECTOR *pdv,
ULONG ulLangID,
ULONG ulFastCheckSum);
VOID
DDKAPI
DrvMovePointer(
/*IN*/ SURFOBJ *pso,
/*IN*/ LONG x,
/*IN*/ LONG y,
/*IN*/ RECTL *prcl);
BOOL
DDKAPI
DrvNextBand(
/*IN*/ SURFOBJ *pso,
/*IN*/ POINTL *pptl);
VOID
DDKAPI
DrvNotify(
/*IN*/ SURFOBJ *pso,
/*IN*/ ULONG iType,
/*IN*/ PVOID pvData);
BOOL
DDKAPI
DrvOffset(
/*IN*/ SURFOBJ *pso,
/*IN*/ LONG x,
/*IN*/ LONG y,
/*IN*/ FLONG flReserved);
BOOL
DDKAPI
DrvPaint(
/*IN*/ SURFOBJ *pso,
/*IN*/ CLIPOBJ *pco,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ MIX mix);
BOOL
DDKAPI
DrvPlgBlt(
/*IN*/ SURFOBJ *psoTrg,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMsk,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ COLORADJUSTMENT *pca,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ POINTFIX *pptfx,
/*IN*/ RECTL *prcl,
/*IN*/ POINTL *pptl,
/*IN*/ ULONG iMode);
/* DrvQueryAdvanceWidths.iMode constants */
#define QAW_GETWIDTHS 0
#define QAW_GETEASYWIDTHS 1
BOOL
DDKAPI
DrvQueryAdvanceWidths(
/*IN*/ DHPDEV dhpdev,
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG iMode,
/*IN*/ HGLYPH *phg,
/*OUT*/ PVOID pvWidths,
/*IN*/ ULONG cGlyphs);
/* DrvQueryDeviceSupport.iType constants */
#define QDS_CHECKJPEGFORMAT 0x00000000
#define QDS_CHECKPNGFORMAT 0x00000001
BOOL
DDKAPI
DrvQueryDeviceSupport(
SURFOBJ *pso,
XLATEOBJ *pxlo,
XFORMOBJ *pxo,
ULONG iType,
ULONG cjIn,
PVOID pvIn,
ULONG cjOut,
PVOID pvOut);
/* DrvQueryDriverInfo.dwMode constants */
#define DRVQUERY_USERMODE 0x00000001
BOOL
DDKAPI
DrvQueryDriverInfo(
DWORD dwMode,
PVOID pBuffer,
DWORD cbBuf,
PDWORD pcbNeeded);
PIFIMETRICS
DDKAPI
DrvQueryFont(
/*IN*/ DHPDEV dhpdev,
/*IN*/ ULONG_PTR iFile,
/*IN*/ ULONG iFace,
/*IN*/ ULONG_PTR *pid);
/* DrvQueryFontCaps.pulCaps constants */
#define QC_OUTLINES 0x00000001
#define QC_1BIT 0x00000002
#define QC_4BIT 0x00000004
#define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
LONG
DDKAPI
DrvQueryFontCaps(
/*IN*/ ULONG culCaps,
/*OUT*/ ULONG *pulCaps);
/* DrvQueryFontData.iMode constants */
#define QFD_GLYPHANDBITMAP 1L
#define QFD_GLYPHANDOUTLINE 2L
#define QFD_MAXEXTENTS 3L
#define QFD_TT_GLYPHANDBITMAP 4L
#define QFD_TT_GRAY1_BITMAP 5L
#define QFD_TT_GRAY2_BITMAP 6L
#define QFD_TT_GRAY4_BITMAP 8L
#define QFD_TT_GRAY8_BITMAP 9L
#define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
LONG
DDKAPI
DrvQueryFontData(
/*IN*/ DHPDEV dhpdev,
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG iMode,
/*IN*/ HGLYPH hg,
/*IN OUT*/ GLYPHDATA *pgd,
/*IN OUT*/ PVOID pv,
/*IN*/ ULONG cjSize);
/* DrvQueryFontFile.ulMode constants */
#define QFF_DESCRIPTION 0x00000001
#define QFF_NUMFACES 0x00000002
LONG
DDKAPI
DrvQueryFontFile(
/*IN*/ ULONG_PTR iFile,
/*IN*/ ULONG ulMode,
/*IN*/ ULONG cjBuf,
/*IN*/ ULONG *pulBuf);
/* DrvQueryFontTree.iMode constants */
#define QFT_UNICODE 0L
#define QFT_LIGATURES 1L
#define QFT_KERNPAIRS 2L
#define QFT_GLYPHSET 3L
PVOID
DDKAPI
DrvQueryFontTree(
/*IN*/ DHPDEV dhpdev,
/*IN*/ ULONG_PTR iFile,
/*IN*/ ULONG iFace,
/*IN*/ ULONG iMode,
/*IN*/ ULONG_PTR *pid);
PFD_GLYPHATTR
DDKAPI
DrvQueryGlyphAttrs(
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG iMode);
ULONG
DDKAPI
DrvQueryPerBandInfo(
/*IN*/ SURFOBJ *pso,
/*IN OUT*/ PERBANDINFO *pbi);
/* DrvQueryTrueTypeOutline.bMetricsOnly constants */
#define TTO_METRICS_ONLY 0x00000001
#define TTO_QUBICS 0x00000002
#define TTO_UNHINTED 0x00000004
LONG
DDKAPI
DrvQueryTrueTypeOutline(
/*IN*/ DHPDEV dhpdev,
/*IN*/ FONTOBJ *pfo,
/*IN*/ HGLYPH hglyph,
/*IN*/ BOOL bMetricsOnly,
/*IN*/ GLYPHDATA *pgldt,
/*IN*/ ULONG cjBuf,
/*OUT*/ TTPOLYGONHEADER *ppoly);
LONG
DDKAPI
DrvQueryTrueTypeTable(
/*IN*/ ULONG_PTR iFile,
/*IN*/ ULONG ulFont,
/*IN*/ ULONG ulTag,
/*IN*/ PTRDIFF dpStart,
/*IN*/ ULONG cjBuf,
/*OUT*/ BYTE *pjBuf,
/*OUT*/ PBYTE *ppjTable,
/*OUT*/ ULONG *pcjTable);
/* DrvRealizeBrush.iHatch constants */
#define RB_DITHERCOLOR 0x80000000L
#define HS_DDI_MAX 6
BOOL
DDKAPI
DrvRealizeBrush(
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ SURFOBJ *psoTarget,
/*IN*/ SURFOBJ *psoPattern,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ ULONG iHatch);
/* DrvResetDevice return values */
#define DRD_SUCCESS 0
#define DRD_ERROR 1
ULONG
DDKAPI
DrvResetDevice(
/*IN*/ DHPDEV dhpdev,
/*IN*/ PVOID Reserved);
BOOL
DDKAPI
DrvResetPDEV(
DHPDEV dhpdevOld,
DHPDEV dhpdevNew);
/* DrvSaveScreenBits.iMode constants */
#define SS_SAVE 0x00000000
#define SS_RESTORE 0x00000001
#define SS_FREE 0x00000002
ULONG_PTR
DDKAPI
DrvSaveScreenBits(
/*IN*/ SURFOBJ *pso,
/*IN*/ ULONG iMode,
/*IN*/ ULONG_PTR ident,
/*IN*/ RECTL *prcl);
BOOL
DDKAPI
DrvSendPage(
/*IN*/ SURFOBJ *pso);
BOOL
DDKAPI
DrvSetPalette(
/*IN*/ DHPDEV dhpdev,
/*IN*/ PALOBJ *ppalo,
/*IN*/ FLONG fl,
/*IN*/ ULONG iStart,
/*IN*/ ULONG cColors);
BOOL
DDKAPI
DrvSetPixelFormat(
/*IN*/ SURFOBJ *pso,
/*IN*/ LONG iPixelFormat,
/*IN*/ HWND hwnd);
/* DrvSetPointerShape return values */
#define SPS_ERROR 0x00000000
#define SPS_DECLINE 0x00000001
#define SPS_ACCEPT_NOEXCLUDE 0x00000002
#define SPS_ACCEPT_EXCLUDE 0x00000003
#define SPS_ACCEPT_SYNCHRONOUS 0x00000004
/* DrvSetPointerShape.fl constants */
#define SPS_CHANGE 0x00000001L
#define SPS_ASYNCCHANGE 0x00000002L
#define SPS_ANIMATESTART 0x00000004L
#define SPS_ANIMATEUPDATE 0x00000008L
#define SPS_ALPHA 0x00000010L
#define SPS_LENGTHMASK 0x00000F00L
#define SPS_FREQMASK 0x000FF000L
ULONG
DDKAPI
DrvSetPointerShape(
/*IN*/ SURFOBJ *pso,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ SURFOBJ *psoColor,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ LONG xHot,
/*IN*/ LONG yHot,
/*IN*/ LONG x,
/*IN*/ LONG y,
/*IN*/ RECTL *prcl,
/*IN*/ FLONG fl);
BOOL
DDKAPI
DrvStartBanding(
/*IN*/ SURFOBJ *pso,
/*IN*/ POINTL *pptl);
BOOL
DDKAPI
DrvStartDoc(
/*IN*/ SURFOBJ *pso,
/*IN*/ LPWSTR pwszDocName,
/*IN*/ DWORD dwJobId);
BOOL
DDKAPI
DrvStartPage(
/*IN*/ SURFOBJ *pso);
BOOL
DDKAPI
DrvStretchBlt(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ COLORADJUSTMENT *pca,
/*IN*/ POINTL *pptlHTOrg,
/*IN*/ RECTL *prclDest,
/*IN*/ RECTL *prclSrc,
/*IN*/ POINTL *pptlMask,
/*IN*/ ULONG iMode);
BOOL
DDKAPI
DrvStretchBltROP(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ COLORADJUSTMENT *pca,
/*IN*/ POINTL *pptlHTOrg,
/*IN*/ RECTL *prclDest,
/*IN*/ RECTL *prclSrc,
/*IN*/ POINTL *pptlMask,
/*IN*/ ULONG iMode,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ DWORD rop4);
BOOL
DDKAPI
DrvStrokeAndFillPath(
/*IN*/ SURFOBJ *pso,
/*IN*/ PATHOBJ *ppo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XFORMOBJ *pxo,
/*IN*/ BRUSHOBJ *pboStroke,
/*IN*/ LINEATTRS *plineattrs,
/*IN*/ BRUSHOBJ *pboFill,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ MIX mixFill,
/*IN*/ FLONG flOptions);
BOOL
DDKAPI
DrvStrokePath(
/*IN*/ SURFOBJ *pso,
/*IN*/ PATHOBJ *ppo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XFORMOBJ *pxo,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ LINEATTRS *plineattrs,
/*IN*/ MIX mix);
BOOL
DDKAPI
DrvSwapBuffers(
/*IN*/ SURFOBJ *pso,
/*IN*/ WNDOBJ *pwo);
VOID
DDKAPI
DrvSynchronize(
/*IN*/ DHPDEV dhpdev,
/*IN*/ RECTL *prcl);
/* DrvSynchronizeSurface.fl constants */
#define DSS_TIMER_EVENT 0x00000001
#define DSS_FLUSH_EVENT 0x00000002
VOID
DDKAPI
DrvSynchronizeSurface(
/*IN*/ SURFOBJ *pso,
/*IN*/ RECTL *prcl,
/*IN*/ FLONG fl);
BOOL
DDKAPI
DrvTextOut(
/*IN*/ SURFOBJ *pso,
/*IN*/ STROBJ *pstro,
/*IN*/ FONTOBJ *pfo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ RECTL *prclExtra,
/*IN*/ RECTL *prclOpaque,
/*IN*/ BRUSHOBJ *pboFore,
/*IN*/ BRUSHOBJ *pboOpaque,
/*IN*/ POINTL *pptlOrg,
/*IN*/ MIX mix);
BOOL
DDKAPI
DrvTransparentBlt(
/*IN*/ SURFOBJ *psoDst,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclDst,
/*IN*/ RECTL *prclSrc,
/*IN*/ ULONG iTransColor,
/*IN*/ ULONG ulReserved);
BOOL
DDKAPI
DrvUnloadFontFile(
/*IN*/ ULONG_PTR iFile);
/* WNDOBJCHANGEPROC.fl constants */
#define WOC_RGN_CLIENT_DELTA 0x00000001
#define WOC_RGN_CLIENT 0x00000002
#define WOC_RGN_SURFACE_DELTA 0x00000004
#define WOC_RGN_SURFACE 0x00000008
#define WOC_CHANGED 0x00000010
#define WOC_DELETE 0x00000020
#define WOC_DRAWN 0x00000040
#define WOC_SPRITE_OVERLAP 0x00000080
#define WOC_SPRITE_NO_OVERLAP 0x00000100
typedef VOID DDKAPI
(CALLBACK * WNDOBJCHANGEPROC)(
WNDOBJ *pwo,
FLONG fl);
typedef BOOL DDKAPI
(*PFN_DrvAlphaBlend)(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclDest,
/*IN*/ RECTL *prclSrc,
/*IN*/ BLENDOBJ *pBlendObj);
typedef BOOL DDKAPI
(*PFN_DrvAssertMode)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ BOOL bEnable);
typedef BOOL DDKAPI
(*PFN_DrvBitBlt)(
/*IN*/ SURFOBJ *psoTrg,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclTrg,
/*IN*/ POINTL *pptlSrc,
/*IN*/ POINTL *pptlMask,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrush,
/*IN*/ ROP4 rop4);
typedef VOID DDKAPI
(*PFN_DrvCompletePDEV)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ HDEV hdev);
typedef BOOL DDKAPI
(*PFN_DrvCopyBits)(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclDest,
/*IN*/ POINTL *pptlSrc);
typedef HBITMAP DDKAPI
(*PFN_DrvCreateDeviceBitmap)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ SIZEL sizl,
/*IN*/ ULONG iFormat);
typedef VOID DDKAPI
(*PFN_DrvDeleteDeviceBitmap)(
/*IN*/ DHSURF dhsurf);
typedef HBITMAP DDKAPI
(*PFN_DrvDeriveSurface)(
DD_DIRECTDRAW_GLOBAL *pDirectDraw,
DD_SURFACE_LOCAL *pSurface);
typedef LONG DDKAPI
(*PFN_DrvDescribePixelFormat)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ LONG iPixelFormat,
/*IN*/ ULONG cjpfd,
/*OUT*/ PIXELFORMATDESCRIPTOR *ppfd);
typedef VOID DDKAPI
(*PFN_DrvDestroyFont)(
/*IN*/ FONTOBJ *pfo);
typedef VOID DDKAPI
(*PFN_DrvDisableDriver)(
VOID);
typedef VOID DDKAPI
(*PFN_DrvDisablePDEV)(
/*IN*/ DHPDEV dhpdev);
typedef VOID DDKAPI
(*PFN_DrvDisableSurface)(
/*IN*/ DHPDEV dhpdev);
typedef ULONG DDKAPI
(*PFN_DrvDitherColor)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ ULONG iMode,
/*IN*/ ULONG rgb,
/*OUT*/ ULONG *pul);
typedef ULONG DDKAPI
(*PFN_DrvDrawEscape)(
/*IN*/ SURFOBJ *pso,
/*IN*/ ULONG iEsc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ RECTL *prcl,
/*IN*/ ULONG cjIn,
/*IN*/ PVOID pvIn);
typedef BOOL DDKAPI
(*PFN_DrvEnableDriver)(
/*IN*/ ULONG iEngineVersion,
/*IN*/ ULONG cj,
/*OUT*/ DRVENABLEDATA *pded);
#if 0
typedef DHPDEV DDKAPI
(*PFN_DrvEnablePDEV)(
/*IN*/ DEVMODEW *pdm,
/*IN*/ LPWSTR pwszLogAddress,
/*IN*/ ULONG cPat,
/*OUT*/ HSURF *phsurfPatterns,
/*IN*/ ULONG cjCaps,
/*OUT*/ ULONG *pdevcaps,
/*IN*/ ULONG cjDevInfo,
/*OUT*/ DEVINFO *pdi,
/*IN*/ HDEV hdev,
/*IN*/ LPWSTR pwszDeviceName,
/*IN*/ HANDLE hDriver);
#endif
typedef HSURF DDKAPI
(*PFN_DrvEnableSurface)(
/*IN*/ DHPDEV dhpdev);
typedef BOOL DDKAPI
(*PFN_DrvEndDoc)(
/*IN*/ SURFOBJ *pso,
/*IN*/ FLONG fl);
typedef ULONG DDKAPI
(*PFN_DrvEscape)(
/*IN*/ SURFOBJ *pso,
/*IN*/ ULONG iEsc,
/*IN*/ ULONG cjIn,
/*IN*/ PVOID pvIn,
/*IN*/ ULONG cjOut,
/*OUT*/ PVOID pvOut);
typedef BOOL DDKAPI
(*PFN_DrvFillPath)(
/*IN*/ SURFOBJ *pso,
/*IN*/ PATHOBJ *ppo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ MIX mix,
/*IN*/ FLONG flOptions);
typedef ULONG DDKAPI
(*PFN_DrvFontManagement)(
/*IN*/ SURFOBJ *pso,
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG iMode,
/*IN*/ ULONG cjIn,
/*IN*/ PVOID pvIn,
/*IN*/ ULONG cjOut,
/*OUT*/ PVOID pvOut);
typedef VOID DDKAPI
(*PFN_DrvFree)(
/*IN*/ PVOID pv,
/*IN*/ ULONG_PTR id);
typedef ULONG DDKAPI
(*PFN_DrvGetGlyphMode)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ FONTOBJ *pfo);
typedef ULONG DDKAPI
(*PFN_DrvGetModes)(
/*IN*/ HANDLE hDriver,
/*IN*/ ULONG cjSize,
/*OUT*/ DEVMODEW *pdm);
typedef PVOID DDKAPI
(*PFN_DrvGetTrueTypeFile)(
/*IN*/ ULONG_PTR iFile,
/*IN*/ ULONG *pcj);
typedef BOOL DDKAPI
(*PFN_DrvGradientFill)(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ TRIVERTEX *pVertex,
/*IN*/ ULONG nVertex,
/*IN*/ PVOID pMesh,
/*IN*/ ULONG nMesh,
/*IN*/ RECTL *prclExtents,
/*IN*/ POINTL *pptlDitherOrg,
/*IN*/ ULONG ulMode);
typedef BOOL DDKAPI
(*PFN_DrvIcmCheckBitmapBits)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ HANDLE hColorTransform,
/*IN*/ SURFOBJ *pso,
/*OUT*/ PBYTE paResults);
typedef HANDLE DDKAPI
(*PFN_DrvIcmCreateColorTransform)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ LPLOGCOLORSPACEW pLogColorSpace,
/*IN*/ PVOID pvSourceProfile,
/*IN*/ ULONG cjSourceProfile,
/*IN*/ PVOID pvDestProfile,
/*IN*/ ULONG cjDestProfile,
/*IN*/ PVOID pvTargetProfile,
/*IN*/ ULONG cjTargetProfile,
/*IN*/ DWORD dwReserved);
typedef BOOL DDKAPI
(*PFN_DrvIcmDeleteColorTransform)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ HANDLE hcmXform);
typedef BOOL DDKAPI
(*PFN_DrvIcmSetDeviceGammaRamp)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ ULONG iFormat,
/*IN*/ LPVOID lpRamp);
typedef BOOL DDKAPI
(*PFN_DrvLineTo)(
SURFOBJ *pso,
CLIPOBJ *pco,
BRUSHOBJ *pbo,
LONG x1,
LONG y1,
LONG x2,
LONG y2,
RECTL *prclBounds,
MIX mix);
typedef ULONG_PTR DDKAPI
(*PFN_DrvLoadFontFile)(
ULONG cFiles,
ULONG_PTR *piFile,
PVOID *ppvView,
ULONG *pcjView,
DESIGNVECTOR *pdv,
ULONG ulLangID,
ULONG ulFastCheckSum);
typedef VOID DDKAPI
(*PFN_DrvMovePointer)(
/*IN*/ SURFOBJ *pso,
/*IN*/ LONG x,
/*IN*/ LONG y,
/*IN*/ RECTL *prcl);
typedef BOOL DDKAPI
(*PFN_DrvNextBand)(
/*IN*/ SURFOBJ *pso,
/*IN*/ POINTL *pptl);
typedef VOID DDKAPI
(*PFN_DrvNotify)(
/*IN*/ SURFOBJ *pso,
/*IN*/ ULONG iType,
/*IN*/ PVOID pvData);
typedef BOOL DDKAPI
(*PFN_DrvOffset)(
/*IN*/ SURFOBJ *pso,
/*IN*/ LONG x,
/*IN*/ LONG y,
/*IN*/ FLONG flReserved);
typedef BOOL DDKAPI
(*PFN_DrvPaint)(
/*IN*/ SURFOBJ *pso,
/*IN*/ CLIPOBJ *pco,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ MIX mix);
typedef BOOL DDKAPI
(*PFN_DrvPlgBlt)(
/*IN*/ SURFOBJ *psoTrg,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMsk,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ COLORADJUSTMENT *pca,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ POINTFIX *pptfx,
/*IN*/ RECTL *prcl,
/*IN*/ POINTL *pptl,
/*IN*/ ULONG iMode);
typedef BOOL DDKAPI
(*PFN_DrvQueryAdvanceWidths)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG iMode,
/*IN*/ HGLYPH *phg,
/*OUT*/ PVOID pvWidths,
/*IN*/ ULONG cGlyphs);
typedef BOOL DDKAPI
(*PFN_DrvQueryDeviceSupport)(
SURFOBJ *pso,
XLATEOBJ *pxlo,
XFORMOBJ *pxo,
ULONG iType,
ULONG cjIn,
PVOID pvIn,
ULONG cjOut,
PVOID pvOut);
typedef BOOL DDKAPI
(*PFN_DrvQueryDriverInfo)(
DWORD dwMode,
PVOID pBuffer,
DWORD cbBuf,
PDWORD pcbNeeded);
typedef PIFIMETRICS DDKAPI
(*PFN_DrvQueryFont)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ ULONG_PTR iFile,
/*IN*/ ULONG iFace,
/*IN*/ ULONG_PTR *pid);
typedef LONG DDKAPI
(*PFN_DrvQueryFontCaps)(
/*IN*/ ULONG culCaps,
/*OUT*/ ULONG *pulCaps);
typedef LONG DDKAPI
(*PFN_DrvQueryFontData)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG iMode,
/*IN*/ HGLYPH hg,
/*IN OUT*/ GLYPHDATA *pgd,
/*IN OUT*/ PVOID pv,
/*IN*/ ULONG cjSize);
typedef LONG DDKAPI
(*PFN_DrvQueryFontFile)(
/*IN*/ ULONG_PTR iFile,
/*IN*/ ULONG ulMode,
/*IN*/ ULONG cjBuf,
/*IN*/ ULONG *pulBuf);
typedef PVOID DDKAPI
(*PFN_DrvQueryFontTree)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ ULONG_PTR iFile,
/*IN*/ ULONG iFace,
/*IN*/ ULONG iMode,
/*IN*/ ULONG_PTR *pid);
typedef PFD_GLYPHATTR DDKAPI
(*PFN_DrvQueryGlyphAttrs)(
/*IN*/ FONTOBJ *pfo,
/*IN*/ ULONG iMode);
typedef ULONG DDKAPI
(*PFN_DrvQueryPerBandInfo)(
/*IN*/ SURFOBJ *pso,
/*IN OUT*/ PERBANDINFO *pbi);
typedef LONG DDKAPI
(*PFN_DrvQueryTrueTypeOutline)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ FONTOBJ *pfo,
/*IN*/ HGLYPH hglyph,
/*IN*/ BOOL bMetricsOnly,
/*IN*/ GLYPHDATA *pgldt,
/*IN*/ ULONG cjBuf,
/*OUT*/ TTPOLYGONHEADER *ppoly);
typedef LONG DDKAPI
(*PFN_DrvQueryTrueTypeTable)(
/*IN*/ ULONG_PTR iFile,
/*IN*/ ULONG ulFont,
/*IN*/ ULONG ulTag,
/*IN*/ PTRDIFF dpStart,
/*IN*/ ULONG cjBuf,
/*OUT*/ BYTE *pjBuf,
/*OUT*/ PBYTE *ppjTable,
/*OUT*/ ULONG *pcjTable);
typedef BOOL DDKAPI
(*PFN_DrvRealizeBrush)(
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ SURFOBJ *psoTarget,
/*IN*/ SURFOBJ *psoPattern,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ ULONG iHatch);
typedef ULONG DDKAPI
(*PFN_DrvResetDevice)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ PVOID Reserved);
typedef BOOL DDKAPI
(*PFN_DrvResetPDEV)(
DHPDEV dhpdevOld,
DHPDEV dhpdevNew);
typedef ULONG_PTR DDKAPI
(*PFN_DrvSaveScreenBits)(
/*IN*/ SURFOBJ *pso,
/*IN*/ ULONG iMode,
/*IN*/ ULONG_PTR ident,
/*IN*/ RECTL *prcl);
typedef BOOL DDKAPI
(*PFN_DrvSendPage)(
/*IN*/ SURFOBJ *pso);
typedef BOOL DDKAPI
(*PFN_DrvSetPalette)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ PALOBJ *ppalo,
/*IN*/ FLONG fl,
/*IN*/ ULONG iStart,
/*IN*/ ULONG cColors);
typedef BOOL DDKAPI
(*PFN_DrvSetPixelFormat)(
/*IN*/ SURFOBJ *pso,
/*IN*/ LONG iPixelFormat,
/*IN*/ HWND hwnd);
typedef ULONG DDKAPI
(*PFN_DrvSetPointerShape)(
/*IN*/ SURFOBJ *pso,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ SURFOBJ *psoColor,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ LONG xHot,
/*IN*/ LONG yHot,
/*IN*/ LONG x,
/*IN*/ LONG y,
/*IN*/ RECTL *prcl,
/*IN*/ FLONG fl);
typedef BOOL DDKAPI
(*PFN_DrvStartBanding)(
/*IN*/ SURFOBJ *pso,
/*IN*/ POINTL *pptl);
typedef BOOL DDKAPI
(*PFN_DrvStartDoc)(
/*IN*/ SURFOBJ *pso,
/*IN*/ LPWSTR pwszDocName,
/*IN*/ DWORD dwJobId);
typedef BOOL DDKAPI
(*PFN_DrvStartPage)(
/*IN*/ SURFOBJ *pso);
typedef BOOL DDKAPI
(*PFN_DrvStretchBlt)(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ COLORADJUSTMENT *pca,
/*IN*/ POINTL *pptlHTOrg,
/*IN*/ RECTL *prclDest,
/*IN*/ RECTL *prclSrc,
/*IN*/ POINTL *pptlMask,
/*IN*/ ULONG iMode);
typedef BOOL DDKAPI
(*PFN_DrvStretchBltROP)(
/*IN*/ SURFOBJ *psoDest,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ SURFOBJ *psoMask,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ COLORADJUSTMENT *pca,
/*IN*/ POINTL *pptlHTOrg,
/*IN*/ RECTL *prclDest,
/*IN*/ RECTL *prclSrc,
/*IN*/ POINTL *pptlMask,
/*IN*/ ULONG iMode,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ DWORD rop4);
typedef BOOL DDKAPI
(*PFN_DrvStrokeAndFillPath)(
/*IN*/ SURFOBJ *pso,
/*IN*/ PATHOBJ *ppo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XFORMOBJ *pxo,
/*IN*/ BRUSHOBJ *pboStroke,
/*IN*/ LINEATTRS *plineattrs,
/*IN*/ BRUSHOBJ *pboFill,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ MIX mixFill,
/*IN*/ FLONG flOptions);
typedef BOOL DDKAPI
(*PFN_DrvStrokePath)(
/*IN*/ SURFOBJ *pso,
/*IN*/ PATHOBJ *ppo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XFORMOBJ *pxo,
/*IN*/ BRUSHOBJ *pbo,
/*IN*/ POINTL *pptlBrushOrg,
/*IN*/ LINEATTRS *plineattrs,
/*IN*/ MIX mix);
typedef BOOL DDKAPI
(*PFN_DrvSwapBuffers)(
/*IN*/ SURFOBJ *pso,
/*IN*/ WNDOBJ *pwo);
typedef VOID DDKAPI
(*PFN_DrvSynchronize)(
/*IN*/ DHPDEV dhpdev,
/*IN*/ RECTL *prcl);
typedef VOID DDKAPI
(*PFN_DrvSynchronizeSurface)(
/*IN*/ SURFOBJ *pso,
/*IN*/ RECTL *prcl,
/*IN*/ FLONG fl);
typedef BOOL DDKAPI
(*PFN_DrvTextOut)(
/*IN*/ SURFOBJ *pso,
/*IN*/ STROBJ *pstro,
/*IN*/ FONTOBJ *pfo,
/*IN*/ CLIPOBJ *pco,
/*IN*/ RECTL *prclExtra,
/*IN*/ RECTL *prclOpaque,
/*IN*/ BRUSHOBJ *pboFore,
/*IN*/ BRUSHOBJ *pboOpaque,
/*IN*/ POINTL *pptlOrg,
/*IN*/ MIX mix);
typedef BOOL DDKAPI
(*PFN_DrvTransparentBlt)(
/*IN*/ SURFOBJ *psoDst,
/*IN*/ SURFOBJ *psoSrc,
/*IN*/ CLIPOBJ *pco,
/*IN*/ XLATEOBJ *pxlo,
/*IN*/ RECTL *prclDst,
/*IN*/ RECTL *prclSrc,
/*IN*/ ULONG iTransColor,
/*IN*/ ULONG ulReserved);
typedef BOOL DDKAPI
(*PFN_DrvUnloadFontFile)(
/*IN*/ ULONG_PTR iFile);
WIN32KAPI
VOID
DDKAPI
DrvDisableDirectDraw(
/*IN*/ DHPDEV dhpdev);
WIN32KAPI
BOOL
DDKAPI
DrvEnableDirectDraw(
/*IN*/ DHPDEV dhpdev,
/*OUT*/ DD_CALLBACKS *pCallBacks,
/*OUT*/ DD_SURFACECALLBACKS *pSurfaceCallBacks,
/*OUT*/ DD_PALETTECALLBACKS *pPaletteCallBacks);
WIN32KAPI
BOOL
DDKAPI
DrvGetDirectDrawInfo(
/*IN*/ DHPDEV dhpdev,
/*OUT*/ DD_HALINFO *pHalInfo,
/*OUT*/ DWORD *pdwNumHeaps,
/*OUT*/ VIDEOMEMORY *pvmList,
/*OUT*/ DWORD *pdwNumFourCCCodes,
/*OUT*/ DWORD *pdwFourCC);
#ifdef __cplusplus
}
#endif
#endif /* defined __VIDEO_H */
#endif /* __WINDDI_H */