Move GLES20 source into standard locations
Move Khronos headers into their respective components, to be exported by each.
Remove hostthreadadapter as nothing outside of the vghwapiwrapper, which now contains the code, needs it
/*
* 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 */