Mercurial > games > semicongine
diff fuhtark_test/include/ddk/winddi.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/ddk/winddi.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,4164 @@ +/* + * 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_ +#define _WINDDI_ + +#ifdef __VIDEO_H__ +#error video.h cannot be included with winddi.h +#else + +#include <ddrawint.h> +#include <d3dnthal.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef DECLSPEC_IMPORT +#define DECLSPEC_IMPORT __attribute__((dllimport)) +#endif + +#ifndef WIN32KAPI +#define WIN32KAPI DECLSPEC_ADDRSAFE +#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 (APIENTRY *PFN)(); + +DECLARE_HANDLE(HBM); +DECLARE_HANDLE(HDEV); +DECLARE_HANDLE(HSURF); +DECLARE_HANDLE(DHSURF); +DECLARE_HANDLE(DHPDEV); +DECLARE_HANDLE(HDRVOBJ); + +#ifndef __NTDDVDEO_H +typedef struct _ENG_EVENT *PEVENT; +#endif + +#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 + +#define LTOFX(x) ((x) << 4) +#define FXTOL(x) ((x) >> 4) +#define FXTOLFLOOR(x) ((x) >> 4) +#define FXTOLCEILING(x) ((x + 0x0F) >> 4) +#define FXTOLROUND(x) ((((x) >> 3) + 1) >> 1) + +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; + +struct _DRIVEROBJ; + +typedef BOOL +(APIENTRY CALLBACK *FREEOBJPROC)( + IN struct _DRIVEROBJ *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_DrvUnknown1 9L +#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_DrvUnknown2 21L +#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_DrvUnknown3 36L +#define INDEX_DrvGetGlyphMode 37L +#define INDEX_DrvSynchronize 38L +#define INDEX_DrvUnknown4 39L +#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_DrvUnknown5 63L +#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 +#define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101 + +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; + +#if defined(_X86_) && !defined(USERMODE_DRIVER) +typedef struct _FLOATOBJ +{ + ULONG ul1; + ULONG ul2; +} FLOATOBJ, *PFLOATOBJ; +#else +typedef FLOAT FLOATOBJ, *PFLOATOBJ; +#endif + +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 *pptfx; +} 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; + + + +/* 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; + +/* 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 (APIENTRY CALLBACK *WNDOBJCHANGEPROC)( + IN WNDOBJ *pwo, + IN FLONG fl); + + +WIN32KAPI +HANDLE +APIENTRY +BRUSHOBJ_hGetColorTransform( + IN BRUSHOBJ *pbo); + +WIN32KAPI +PVOID +APIENTRY +BRUSHOBJ_pvAllocRbrush( + IN BRUSHOBJ *pbo, + IN ULONG cj); + +WIN32KAPI +PVOID +APIENTRY +BRUSHOBJ_pvGetRbrush( + IN BRUSHOBJ *pbo); + +WIN32KAPI +ULONG +APIENTRY +BRUSHOBJ_ulGetBrushColor( + IN BRUSHOBJ *pbo); + +WIN32KAPI +BOOL +APIENTRY +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 +APIENTRY +CLIPOBJ_cEnumStart( + IN CLIPOBJ *pco, + IN BOOL bAll, + IN ULONG iType, + IN ULONG iDirection, + IN ULONG cLimit); + +WIN32KAPI +PATHOBJ* +APIENTRY +CLIPOBJ_ppoGetPath( + IN CLIPOBJ *pco); + +WIN32KAPI +VOID +APIENTRY +EngAcquireSemaphore( + IN HSEMAPHORE hsem); + +#define FL_ZERO_MEMORY 0x00000001 +#define FL_NONPAGED_MEMORY 0x00000002 + +WIN32KAPI +PVOID +APIENTRY +EngAllocMem( + IN ULONG Flags, + IN ULONG MemSize, + IN ULONG Tag); + +WIN32KAPI +PVOID +APIENTRY +EngAllocPrivateUserMem( + IN PDD_SURFACE_LOCAL psl, + IN SIZE_T cj, + IN ULONG tag); + +WIN32KAPI +PVOID +APIENTRY +EngAllocUserMem( + IN SIZE_T cj, + IN ULONG tag); + +WIN32KAPI +BOOL +APIENTRY +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 +APIENTRY +EngAssociateSurface( + IN HSURF hsurf, + IN HDEV hdev, + IN FLONG flHooks); + +WIN32KAPI +BOOL +APIENTRY +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 +APIENTRY +EngCheckAbort( + IN SURFOBJ *pso); + +WIN32KAPI +VOID +APIENTRY +EngClearEvent( + IN PEVENT pEvent); + +WIN32KAPI +FD_GLYPHSET* +APIENTRY +EngComputeGlyphSet( + IN INT nCodePage, + IN INT nFirstChar, + IN INT cChars); + +/* EngControlSprites.fl constants */ +#define ECS_TEARDOWN 0x00000001 +#define ECS_REDRAW 0x00000002 + +WIN32KAPI +BOOL +APIENTRY +EngControlSprites( + IN WNDOBJ *pwo, + IN FLONG fl); + +WIN32KAPI +BOOL +APIENTRY +EngCopyBits( + OUT SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDest, + IN POINTL *pptlSrc); + +WIN32KAPI +HBITMAP +APIENTRY +EngCreateBitmap( + IN SIZEL sizl, + IN LONG lWidth, + IN ULONG iFormat, + IN FLONG fl, + IN PVOID pvBits); + +WIN32KAPI +CLIPOBJ* +APIENTRY +EngCreateClip( + VOID); + +WIN32KAPI +HBITMAP +APIENTRY +EngCreateDeviceBitmap( + IN DHSURF dhsurf, + IN SIZEL sizl, + IN ULONG iFormatCompat); + +WIN32KAPI +HSURF +APIENTRY +EngCreateDeviceSurface( + DHSURF dhsurf, + SIZEL sizl, + ULONG iFormatCompat); + +#if 0 +WIN32KAPI +HDRVOBJ +APIENTRY +EngCreateDriverObj( + PVOID pvObj, + FREEOBJPROC pFreeObjProc, + HDEV hdev); +#endif + +WIN32KAPI +BOOL +APIENTRY +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 +APIENTRY +EngCreatePalette( + IN ULONG iMode, + IN ULONG cColors, + IN ULONG *pulColors, + IN FLONG flRed, + IN FLONG flGreen, + IN FLONG flBlue); + +WIN32KAPI +PATHOBJ* +APIENTRY +EngCreatePath( + VOID); + +WIN32KAPI +HSEMAPHORE +APIENTRY +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* +APIENTRY +EngCreateWnd( + SURFOBJ *pso, + HWND hwnd, + WNDOBJCHANGEPROC pfn, + FLONG fl, + int iPixelFormat); + +WIN32KAPI +VOID +APIENTRY +EngDebugBreak( + VOID); + +WIN32KAPI +VOID +APIENTRY +EngDebugPrint( + IN PCHAR StandardPrefix, + IN PCHAR DebugMessage, + IN va_list ap); + +WIN32KAPI +VOID +APIENTRY +EngDeleteClip( + IN CLIPOBJ *pco); + +WIN32KAPI +BOOL +APIENTRY +EngDeleteDriverObj( + IN HDRVOBJ hdo, + IN BOOL bCallBack, + IN BOOL bLocked); + +WIN32KAPI +BOOL +APIENTRY +EngDeleteEvent( + IN PEVENT pEvent); + +WIN32KAPI +BOOL +APIENTRY +EngDeleteFile( + IN LPWSTR pwszFileName); + +WIN32KAPI +BOOL +APIENTRY +EngDeletePalette( + IN HPALETTE hpal); + +WIN32KAPI +VOID +APIENTRY +EngDeletePath( + IN PATHOBJ *ppo); + +WIN32KAPI +VOID +APIENTRY +EngDeleteSafeSemaphore( + IN OUT ENGSAFESEMAPHORE *pssem); + +WIN32KAPI +VOID +APIENTRY +EngDeleteSemaphore( + IN OUT HSEMAPHORE hsem); + +WIN32KAPI +BOOL +APIENTRY +EngDeleteSurface( + IN HSURF hsurf); + +WIN32KAPI +VOID +APIENTRY +EngDeleteWnd( + IN WNDOBJ *pwo); + +WIN32KAPI +DWORD +APIENTRY +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 +APIENTRY +EngDitherColor( + IN HDEV hdev, + IN ULONG iMode, + IN ULONG rgb, + OUT ULONG *pul); + +WIN32KAPI +BOOL +APIENTRY +EngEnumForms( + IN HANDLE hPrinter, + IN DWORD Level, + OUT LPBYTE pForm, + IN DWORD cbBuf, + OUT LPDWORD pcbNeeded, + OUT LPDWORD pcReturned); + +WIN32KAPI +BOOL +APIENTRY +EngEraseSurface( + IN SURFOBJ *pso, + IN RECTL *prcl, + IN ULONG iColor); + +WIN32KAPI +BOOL +APIENTRY +EngFillPath( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix, + IN FLONG flOptions); + +WIN32KAPI +PVOID +APIENTRY +EngFindImageProcAddress( + IN HANDLE hModule, + IN LPSTR lpProcName); + +WIN32KAPI +PVOID +APIENTRY +EngFindResource( + IN HANDLE h, + IN int iName, + IN int iType, + OUT PULONG pulSize); + +WIN32KAPI +PVOID +APIENTRY +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 +APIENTRY +EngFntCacheFault( + IN ULONG ulFastCheckSum, + IN ULONG iFaultMode); + +WIN32KAPI +PVOID +APIENTRY +EngFntCacheLookUp( + IN ULONG FastCheckSum, + OUT ULONG *pulSize); + +WIN32KAPI +VOID +APIENTRY +EngFreeMem( + IN PVOID Mem); + +WIN32KAPI +VOID +APIENTRY +EngFreeModule( + IN HANDLE h); + +WIN32KAPI +VOID +APIENTRY +EngFreePrivateUserMem( + IN PDD_SURFACE_LOCAL psl, + IN PVOID pv); + +WIN32KAPI +VOID +APIENTRY +EngFreeUserMem( + IN PVOID pv); + +WIN32KAPI +VOID +APIENTRY +EngGetCurrentCodePage( + OUT PUSHORT OemCodePage, + OUT PUSHORT AnsiCodePage); + +WIN32KAPI +HANDLE +APIENTRY +EngGetCurrentProcessId( + VOID); + +WIN32KAPI +HANDLE +APIENTRY +EngGetCurrentThreadId( + VOID); + +WIN32KAPI +LPWSTR +APIENTRY +EngGetDriverName( + IN HDEV hdev); + +WIN32KAPI +BOOL +APIENTRY +EngGetFileChangeTime( + IN HANDLE h, + OUT LARGE_INTEGER *pChangeTime); + +WIN32KAPI +BOOL +APIENTRY +EngGetFilePath( + IN HANDLE h, + OUT WCHAR (*pDest)[MAX_PATH+1]); + +WIN32KAPI +BOOL +APIENTRY +EngGetForm( + IN HANDLE hPrinter, + IN LPWSTR pFormName, + IN DWORD Level, + OUT LPBYTE pForm, + IN DWORD cbBuf, + OUT LPDWORD pcbNeeded); + +WIN32KAPI +ULONG +APIENTRY +EngGetLastError( + VOID); + +WIN32KAPI +BOOL +APIENTRY +EngGetPrinter( + IN HANDLE hPrinter, + IN DWORD dwLevel, + OUT LPBYTE pPrinter, + IN DWORD cbBuf, + OUT LPDWORD pcbNeeded); + +WIN32KAPI +DWORD +APIENTRY +EngGetPrinterData( + IN HANDLE hPrinter, + IN LPWSTR pValueName, + OUT LPDWORD pType, + OUT LPBYTE pData, + IN DWORD nSize, + OUT LPDWORD pcbNeeded); + +WIN32KAPI +LPWSTR +APIENTRY +EngGetPrinterDataFileName( + IN HDEV hdev); + +WIN32KAPI +BOOL +APIENTRY +EngGetPrinterDriver( + IN HANDLE hPrinter, + IN LPWSTR pEnvironment, + IN DWORD dwLevel, + OUT BYTE *lpbDrvInfo, + IN DWORD cbBuf, + OUT DWORD *pcbNeeded); + +WIN32KAPI +HANDLE +APIENTRY +EngGetProcessHandle( + VOID); + +WIN32KAPI +BOOL +APIENTRY +EngGetType1FontList( + IN HDEV hdev, + OUT TYPE1_FONT *pType1Buffer, + IN ULONG cjType1Buffer, + OUT PULONG pulLocalFonts, + OUT PULONG pulRemoteFonts, + OUT LARGE_INTEGER *pLastModified); + +WIN32KAPI +BOOL +APIENTRY +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 +APIENTRY +EngHangNotification( + IN HDEV hDev, + IN PVOID Reserved); + +WIN32KAPI +BOOL +APIENTRY +EngInitializeSafeSemaphore( + OUT ENGSAFESEMAPHORE *pssem); + +WIN32KAPI +BOOL +APIENTRY +EngIsSemaphoreOwned( + IN HSEMAPHORE hsem); + +WIN32KAPI +BOOL +APIENTRY +EngIsSemaphoreOwnedByCurrentThread( + IN HSEMAPHORE hsem); + +WIN32KAPI +BOOL +APIENTRY +EngLineTo( + SURFOBJ *pso, + CLIPOBJ *pco, + BRUSHOBJ *pbo, + LONG x1, + LONG y1, + LONG x2, + LONG y2, + RECTL *prclBounds, + MIX mix); + +WIN32KAPI +HANDLE +APIENTRY +EngLoadImage( + IN LPWSTR pwszDriver); + +WIN32KAPI +HANDLE +APIENTRY +EngLoadModule( + IN LPWSTR pwsz); + +WIN32KAPI +HANDLE +APIENTRY +EngLoadModuleForWrite( + IN LPWSTR pwsz, + IN ULONG cjSizeOfModule); + +WIN32KAPI +PDD_SURFACE_LOCAL +APIENTRY +EngLockDirectDrawSurface( + IN HANDLE hSurface); + +WIN32KAPI +DRIVEROBJ* +APIENTRY +EngLockDriverObj( + IN HDRVOBJ hdo); + +WIN32KAPI +SURFOBJ* +APIENTRY +EngLockSurface( + IN HSURF hsurf); + +WIN32KAPI +BOOL +APIENTRY +EngLpkInstalled( + VOID); + +WIN32KAPI +PEVENT +APIENTRY +EngMapEvent( + IN HDEV hDev, + IN HANDLE hUserObject, + IN PVOID Reserved1, + IN PVOID Reserved2, + IN PVOID Reserved3); + +WIN32KAPI +PVOID +APIENTRY +EngMapFile( + IN LPWSTR pwsz, + IN ULONG cjSize, + OUT ULONG_PTR *piFile); + +WIN32KAPI +BOOL +APIENTRY +EngMapFontFile( + ULONG_PTR iFile, + PULONG *ppjBuf, + ULONG *pcjBuf); + +WIN32KAPI +BOOL +APIENTRY +EngMapFontFileFD( + IN ULONG_PTR iFile, + OUT PULONG *ppjBuf, + OUT ULONG *pcjBuf); + +WIN32KAPI +PVOID +APIENTRY +EngMapModule( + IN HANDLE h, + OUT PULONG pSize); + +WIN32KAPI +BOOL +APIENTRY +EngMarkBandingSurface( + IN HSURF hsurf); + +/* EngModifySurface.flSurface constants */ +#define MS_NOTSYSTEMMEMORY 0x00000001 +#define MS_SHAREDACCESS 0x00000002 + +WIN32KAPI +BOOL +APIENTRY +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 +APIENTRY +EngMovePointer( + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN RECTL *prcl); + +WIN32KAPI +int +APIENTRY +EngMulDiv( + IN int a, + IN int b, + IN int c); + +WIN32KAPI +VOID +APIENTRY +EngMultiByteToUnicodeN( + OUT LPWSTR UnicodeString, + IN ULONG MaxBytesInUnicodeString, + OUT PULONG BytesInUnicodeString, + IN PCHAR MultiByteString, + IN ULONG BytesInMultiByteString); + +WIN32KAPI +INT +APIENTRY +EngMultiByteToWideChar( + IN UINT CodePage, + OUT LPWSTR WideCharString, + IN INT BytesInWideCharString, + IN LPSTR MultiByteString, + IN INT BytesInMultiByteString); + +WIN32KAPI +BOOL +APIENTRY +EngPaint( + IN SURFOBJ *pso, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix); + +WIN32KAPI +BOOL +APIENTRY +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 +APIENTRY +EngProbeForRead( + IN PVOID Address, + IN ULONG Length, + IN ULONG Alignment); + +WIN32KAPI +VOID +APIENTRY +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 +APIENTRY +EngQueryDeviceAttribute( + IN HDEV hdev, + IN ENG_DEVICE_ATTRIBUTE devAttr, + IN VOID *pvIn, + IN ULONG ulInSize, + OUT VOID *pvOut, + OUT ULONG ulOutSize); + +WIN32KAPI +LARGE_INTEGER +APIENTRY +EngQueryFileTimeStamp( + IN LPWSTR pwsz); + +WIN32KAPI +VOID +APIENTRY +EngQueryLocalTime( + OUT PENG_TIME_FIELDS ptf); + +WIN32KAPI +ULONG +APIENTRY +EngQueryPalette( + IN HPALETTE hPal, + OUT ULONG *piMode, + IN ULONG cColors, + OUT ULONG *pulColors); + +WIN32KAPI +VOID +APIENTRY +EngQueryPerformanceCounter( + OUT LONGLONG *pPerformanceCount); + +WIN32KAPI +VOID +APIENTRY +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 +APIENTRY +EngQuerySystemAttribute( + IN ENG_SYSTEM_ATTRIBUTE CapNum, + OUT PDWORD pCapability); + +WIN32KAPI +LONG +APIENTRY +EngReadStateEvent( + IN PEVENT pEvent); + +WIN32KAPI +VOID +APIENTRY +EngReleaseSemaphore( + IN HSEMAPHORE hsem); + +WIN32KAPI +BOOL +APIENTRY +EngRestoreFloatingPointState( + IN VOID *pBuffer); + +WIN32KAPI +ULONG +APIENTRY +EngSaveFloatingPointState( + OUT VOID *pBuffer, + IN ULONG cjBufferSize); + +WIN32KAPI +HANDLE +APIENTRY +EngSecureMem( + IN PVOID Address, + IN ULONG Length); + +WIN32KAPI +LONG +APIENTRY +EngSetEvent( + IN PEVENT pEvent); + +WIN32KAPI +VOID +APIENTRY +EngSetLastError( + IN ULONG iError); + +WIN32KAPI +ULONG +APIENTRY +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 +APIENTRY +EngSetPointerTag( + IN HDEV hdev, + IN SURFOBJ *psoMask, + IN SURFOBJ *psoColor, + IN XLATEOBJ *pxlo, + IN FLONG fl); + +WIN32KAPI +DWORD +APIENTRY +EngSetPrinterData( + IN HANDLE hPrinter, + IN LPWSTR pType, + IN DWORD dwType, + IN LPBYTE lpbPrinterData, + IN DWORD cjPrinterData); + +typedef int (CDECL *SORTCOMP)(const void *pv1, const void *pv2); + +WIN32KAPI +VOID +APIENTRY +EngSort( + IN OUT PBYTE pjBuf, + IN ULONG c, + IN ULONG cjElem, + IN SORTCOMP pfnComp); + +WIN32KAPI +BOOL +APIENTRY +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 +APIENTRY +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 +APIENTRY +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 +APIENTRY +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 +APIENTRY +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 +APIENTRY +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 +APIENTRY +EngUnicodeToMultiByteN( + OUT PCHAR MultiByteString, + IN ULONG MaxBytesInMultiByteString, + OUT PULONG BytesInMultiByteString, + IN PWSTR UnicodeString, + IN ULONG BytesInUnicodeString); + +WIN32KAPI +VOID +APIENTRY +EngUnloadImage( + IN HANDLE hModule); + +WIN32KAPI +BOOL +APIENTRY +EngUnlockDirectDrawSurface( + IN PDD_SURFACE_LOCAL pSurface); + +WIN32KAPI +BOOL +APIENTRY +EngUnlockDriverObj( + IN HDRVOBJ hdo); + +WIN32KAPI +VOID +APIENTRY +EngUnlockSurface( + IN SURFOBJ *pso); + +WIN32KAPI +BOOL +APIENTRY +EngUnmapEvent( + IN PEVENT pEvent); + +WIN32KAPI +BOOL +APIENTRY +EngUnmapFile( + IN ULONG_PTR iFile); + +WIN32KAPI +VOID +APIENTRY +EngUnmapFontFile( + ULONG_PTR iFile); + +WIN32KAPI +VOID +APIENTRY +EngUnmapFontFileFD( + IN ULONG_PTR iFile); + +WIN32KAPI +VOID +APIENTRY +EngUnsecureMem( + IN HANDLE hSecure); + +WIN32KAPI +BOOL +APIENTRY +EngWaitForSingleObject( + IN PEVENT pEvent, + IN PLARGE_INTEGER pTimeOut); + +WIN32KAPI +INT +APIENTRY +EngWideCharToMultiByte( + IN UINT CodePage, + IN LPWSTR WideCharString, + IN INT BytesInWideCharString, + OUT LPSTR MultiByteString, + IN INT BytesInMultiByteString); + +WIN32KAPI +BOOL +APIENTRY +EngWritePrinter( + IN HANDLE hPrinter, + IN LPVOID pBuf, + IN DWORD cbBuf, + OUT LPDWORD pcWritten); + +#if defined(_X86_) && !defined(USERMODE_DRIVER) +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_Add( + IN OUT PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_AddFloat( + IN OUT PFLOATOBJ pf, + IN FLOATL f); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_AddLong( + IN OUT PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_Div( + IN OUT PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_DivFloat( + IN OUT PFLOATOBJ pf, + IN FLOATL f); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_DivLong( + IN OUT PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +BOOL +APIENTRY +FLOATOBJ_Equal( + IN PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +BOOL +APIENTRY +FLOATOBJ_EqualLong( + IN PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +LONG +APIENTRY +FLOATOBJ_GetFloat( + IN PFLOATOBJ pf); + +WIN32KAPI +LONG +APIENTRY +FLOATOBJ_GetLong( + IN PFLOATOBJ pf); + +WIN32KAPI +BOOL +APIENTRY +FLOATOBJ_GreaterThan( + IN PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +BOOL +APIENTRY +FLOATOBJ_GreaterThanLong( + IN PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +BOOL +APIENTRY +FLOATOBJ_LessThan( + IN PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +BOOL +APIENTRY +FLOATOBJ_LessThanLong( + IN PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_Mul( + IN OUT PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_MulFloat( + IN OUT PFLOATOBJ pf, + IN FLOATL f); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_MulLong( + IN OUT PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_Neg( + IN OUT PFLOATOBJ pf); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_SetFloat( + OUT PFLOATOBJ pf, + IN FLOATL f); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_SetLong( + OUT PFLOATOBJ pf, + IN LONG l); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_Sub( + IN OUT PFLOATOBJ pf, + IN PFLOATOBJ pf1); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_SubFloat( + IN OUT PFLOATOBJ pf, + IN FLOATL f); + +WIN32KAPI +VOID +APIENTRY +FLOATOBJ_SubLong( + IN OUT PFLOATOBJ pf, + IN LONG l); + +#else + +#define FLOATOBJ_SetFloat(pf, f) {*(pf) = (f);} +#define FLOATOBJ_SetLong(pf, l) {*(pf) = (FLOAT)(l);} +#define FLOATOBJ_GetFloat(pf) (*(PULONG)(pf)) +#define FLOATOBJ_GetLong(pf) ((LONG)*(pf)) +#define FLOATOBJ_Add(pf, pf1) {*(pf) += *(pf1);} +#define FLOATOBJ_AddFloat(pf, f) {*(pf) += (f);} +#define FLOATOBJ_AddLong(pf, l) {*(pf) += (l);} +#define FLOATOBJ_Sub(pf, pf1) {*(pf) -= *(pf1);} +#define FLOATOBJ_SubFloat(pf, f) {*(pf) -= (f);} +#define FLOATOBJ_SubLong(pf, l) {*(pf) -= (l);} +#define FLOATOBJ_Mul(pf, pf1) {*(pf) *= *(pf1);} +#define FLOATOBJ_MulFloat(pf, f) {*(pf) *= (f);} +#define FLOATOBJ_MulLong(pf, l) {*(pf) *= (l);} +#define FLOATOBJ_Div(pf, pf1) {*(pf) /= *(pf1);} +#define FLOATOBJ_DivFloat(pf, f) {*(pf) /= (f);} +#define FLOATOBJ_DivLong(pf, l) {*(pf) /= (l);} +#define FLOATOBJ_Neg(pf) {*(pf) = -(*(pf));} +#define FLOATOBJ_Equal(pf, pf1) (*(pf) == *(pf1)) +#define FLOATOBJ_GreaterThan(pf, pf1) (*(pf) > *(pf1)) +#define FLOATOBJ_LessThan(pf, pf1) (*(pf) < *(pf1)) +#define FLOATOBJ_EqualLong(pf, l) (*(pf) == (FLOAT)(l)) +#define FLOATOBJ_GreaterThanLong(pf, l) (*(pf) > (FLOAT)(l)) +#define FLOATOBJ_LessThanLong(pf, l) (*(pf) < (FLOAT)(l)) + +#endif + +WIN32KAPI +ULONG +APIENTRY +FONTOBJ_cGetAllGlyphHandles( + IN FONTOBJ *pfo, + OUT HGLYPH *phg); + +WIN32KAPI +ULONG +APIENTRY +FONTOBJ_cGetGlyphs( + IN FONTOBJ *pfo, + IN ULONG iMode, + IN ULONG cGlyph, + IN HGLYPH *phg, + OUT PVOID *ppvGlyph); + +WIN32KAPI +FD_GLYPHSET* +APIENTRY +FONTOBJ_pfdg( + IN FONTOBJ *pfo); + +WIN32KAPI +IFIMETRICS* +APIENTRY +FONTOBJ_pifi( + IN FONTOBJ *pfo); + +WIN32KAPI +PBYTE +APIENTRY +FONTOBJ_pjOpenTypeTablePointer( + IN FONTOBJ *pfo, + IN ULONG ulTag, + OUT ULONG *pcjTable); + +WIN32KAPI +PFD_GLYPHATTR +APIENTRY +FONTOBJ_pQueryGlyphAttrs( + IN FONTOBJ *pfo, + IN ULONG iMode); + +WIN32KAPI +PVOID +APIENTRY +FONTOBJ_pvTrueTypeFontFile( + IN FONTOBJ *pfo, + OUT ULONG *pcjFile); + +WIN32KAPI +LPWSTR +APIENTRY +FONTOBJ_pwszFontFilePaths( + IN FONTOBJ *pfo, + OUT ULONG *pcwc); + +WIN32KAPI +XFORMOBJ* +APIENTRY +FONTOBJ_pxoGetXform( + IN FONTOBJ *pfo); + +WIN32KAPI +VOID +APIENTRY +FONTOBJ_vGetInfo( + IN FONTOBJ *pfo, + IN ULONG cjSize, + OUT FONTINFO *pfi); + + + +WIN32KAPI +LONG +APIENTRY +HT_ComputeRGBGammaTable( + IN USHORT GammaTableEntries, + IN USHORT GammaTableType, + IN USHORT RedGamma, + IN USHORT GreenGamma, + IN USHORT BlueGamma, + OUT LPBYTE pGammaTable); + +WIN32KAPI +LONG +APIENTRY +HT_Get8BPPFormatPalette( + OUT LPPALETTEENTRY pPaletteEntry, + IN USHORT RedGamma, + IN USHORT GreenGamma, + IN USHORT BlueGamma); + +WIN32KAPI +LONG +APIENTRY +HT_Get8BPPMaskPalette( + IN OUT LPPALETTEENTRY pPaletteEntry, + IN BOOL Use8BPPMaskPal, + IN BYTE CMYMask, + IN USHORT RedGamma, + IN USHORT GreenGamma, + IN USHORT BlueGamma); + +WIN32KAPI +LONG +APIENTRY +HTUI_DeviceColorAdjustment( + IN LPSTR pDeviceName, + OUT PDEVHTADJDATA pDevHTAdjData); + +WIN32KAPI +ULONG +APIENTRY +PALOBJ_cGetColors( + IN PALOBJ *ppalo, + IN ULONG iStart, + IN ULONG cColors, + OUT ULONG *pulColors); + +WIN32KAPI +BOOL +APIENTRY +PATHOBJ_bCloseFigure( + IN PATHOBJ *ppo); + +WIN32KAPI +BOOL +APIENTRY +PATHOBJ_bEnum( + IN PATHOBJ *ppo, + OUT PATHDATA *ppd); + +WIN32KAPI +BOOL +APIENTRY +PATHOBJ_bEnumClipLines( + IN PATHOBJ *ppo, + IN ULONG cb, + OUT CLIPLINE *pcl); + +WIN32KAPI +BOOL +APIENTRY +PATHOBJ_bMoveTo( + IN PATHOBJ *ppo, + IN POINTFIX ptfx); + +WIN32KAPI +BOOL +APIENTRY +PATHOBJ_bPolyBezierTo( + IN PATHOBJ *ppo, + IN POINTFIX *pptfx, + IN ULONG cptfx); + +WIN32KAPI +BOOL +APIENTRY +PATHOBJ_bPolyLineTo( + IN PATHOBJ *ppo, + IN POINTFIX *pptfx, + IN ULONG cptfx); + +WIN32KAPI +VOID +APIENTRY +PATHOBJ_vEnumStart( + IN PATHOBJ *ppo); + +WIN32KAPI +VOID +APIENTRY +PATHOBJ_vEnumStartClipLines( + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN SURFOBJ *pso, + IN LINEATTRS *pla); + +WIN32KAPI +VOID +APIENTRY +PATHOBJ_vGetBounds( + IN PATHOBJ *ppo, + OUT PRECTFX prectfx); + +WIN32KAPI +BOOL +APIENTRY +STROBJ_bEnum( + IN STROBJ *pstro, + OUT ULONG *pc, + OUT PGLYPHPOS *ppgpos); + +WIN32KAPI +BOOL +APIENTRY +STROBJ_bEnumPositionsOnly( + IN STROBJ *pstro, + OUT ULONG *pc, + OUT PGLYPHPOS *ppgpos); + +WIN32KAPI +BOOL +APIENTRY +STROBJ_bGetAdvanceWidths( + IN STROBJ *pso, + IN ULONG iFirst, + IN ULONG c, + OUT POINTQF *pptqD); + +WIN32KAPI +DWORD +APIENTRY +STROBJ_dwGetCodePage( + IN STROBJ *pstro); + +WIN32KAPI +FIX +APIENTRY +STROBJ_fxBreakExtra( + IN STROBJ *pstro); + +WIN32KAPI +FIX +APIENTRY +STROBJ_fxCharacterExtra( + IN STROBJ *pstro); + +WIN32KAPI +VOID +APIENTRY +STROBJ_vEnumStart( + IN STROBJ *pstro); + +WIN32KAPI +BOOL +APIENTRY +WNDOBJ_bEnum( + IN WNDOBJ *pwo, + IN ULONG cj, + OUT ULONG *pul); + +WIN32KAPI +ULONG +APIENTRY +WNDOBJ_cEnumStart( + IN WNDOBJ *pwo, + IN ULONG iType, + IN ULONG iDirection, + IN ULONG cLimit); + +WIN32KAPI +VOID +APIENTRY +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 +APIENTRY +XFORMOBJ_bApplyXform( + IN XFORMOBJ *pxo, + IN ULONG iMode, + IN ULONG cPoints, + IN PVOID pvIn, + OUT PVOID pvOut); + +WIN32KAPI +ULONG +APIENTRY +XFORMOBJ_iGetFloatObjXform( + IN XFORMOBJ *pxo, + OUT FLOATOBJ_XFORM *pxfo); + +WIN32KAPI +ULONG +APIENTRY +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 +APIENTRY +XLATEOBJ_cGetPalette( + IN XLATEOBJ *pxlo, + IN ULONG iPal, + IN ULONG cPal, + OUT ULONG *pPal); + +WIN32KAPI +HANDLE +APIENTRY +XLATEOBJ_hGetColorTransform( + IN XLATEOBJ *pxlo); + +WIN32KAPI +ULONG +APIENTRY +XLATEOBJ_iXlate( + IN XLATEOBJ *pxlo, + IN ULONG iColor); + +WIN32KAPI +ULONG* +APIENTRY +XLATEOBJ_piVector( + IN XLATEOBJ *pxlo); + + + +/* Graphics Driver Functions */ + +BOOL +APIENTRY +DrvAlphaBlend( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDest, + IN RECTL *prclSrc, + IN BLENDOBJ *pBlendObj); + +BOOL +APIENTRY +DrvAssertMode( + IN DHPDEV dhpdev, + IN BOOL bEnable); + +BOOL +APIENTRY +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 +APIENTRY +DrvCompletePDEV( + IN DHPDEV dhpdev, + IN HDEV hdev); + +BOOL +APIENTRY +DrvCopyBits( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDest, + IN POINTL *pptlSrc); + +HBITMAP +APIENTRY +DrvCreateDeviceBitmap( + IN DHPDEV dhpdev, + IN SIZEL sizl, + IN ULONG iFormat); + +VOID +APIENTRY +DrvDeleteDeviceBitmap( + IN DHSURF dhsurf); + +HBITMAP +APIENTRY +DrvDeriveSurface( + DD_DIRECTDRAW_GLOBAL *pDirectDraw, + DD_SURFACE_LOCAL *pSurface); + +LONG +APIENTRY +DrvDescribePixelFormat( + IN DHPDEV dhpdev, + IN LONG iPixelFormat, + IN ULONG cjpfd, + OUT PIXELFORMATDESCRIPTOR *ppfd); + +VOID +APIENTRY +DrvDestroyFont( + IN FONTOBJ *pfo); + +VOID +APIENTRY +DrvDisableDriver( + VOID); + +VOID +APIENTRY +DrvDisablePDEV( + IN DHPDEV dhpdev); + +VOID +APIENTRY +DrvDisableSurface( + IN DHPDEV dhpdev); + +#define DM_DEFAULT 0x00000001 +#define DM_MONOCHROME 0x00000002 + +ULONG +APIENTRY +DrvDitherColor( + IN DHPDEV dhpdev, + IN ULONG iMode, + IN ULONG rgb, + OUT ULONG *pul); + +ULONG +APIENTRY +DrvDrawEscape( + IN SURFOBJ *pso, + IN ULONG iEsc, + IN CLIPOBJ *pco, + IN RECTL *prcl, + IN ULONG cjIn, + IN PVOID pvIn); + +BOOL +APIENTRY +DrvEnableDriver( + IN ULONG iEngineVersion, + IN ULONG cj, + OUT DRVENABLEDATA *pded); + +DHPDEV +APIENTRY +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 +APIENTRY +DrvEnableSurface( + IN DHPDEV dhpdev); + +/* DrvEndDoc.fl constants */ +#define ED_ABORTDOC 0x00000001 + +BOOL +APIENTRY +DrvEndDoc( + IN SURFOBJ *pso, + IN FLONG fl); + +ULONG +APIENTRY +DrvEscape( + IN SURFOBJ *pso, + IN ULONG iEsc, + IN ULONG cjIn, + IN PVOID pvIn, + IN ULONG cjOut, + OUT PVOID pvOut); + +BOOL +APIENTRY +DrvFillPath( + IN SURFOBJ *pso, + IN PATHOBJ *ppo, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix, + IN FLONG flOptions); + +ULONG +APIENTRY +DrvFontManagement( + IN SURFOBJ *pso, + IN FONTOBJ *pfo, + IN ULONG iMode, + IN ULONG cjIn, + IN PVOID pvIn, + IN ULONG cjOut, + OUT PVOID pvOut); + +VOID +APIENTRY +DrvFree( + IN PVOID pv, + IN ULONG_PTR id); + +/* DrvGetGlyphMode return values */ +#define FO_HGLYPHS 0L +#define FO_GLYPHBITS 1L +#define FO_PATHOBJ 2L + +ULONG +APIENTRY +DrvGetGlyphMode( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo); + +ULONG +APIENTRY +DrvGetModes( + IN HANDLE hDriver, + IN ULONG cjSize, + OUT DEVMODEW *pdm); + +PVOID +APIENTRY +DrvGetTrueTypeFile( + IN ULONG_PTR iFile, + IN ULONG *pcj); + +BOOL +APIENTRY +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 +APIENTRY +DrvIcmCheckBitmapBits( + IN DHPDEV dhpdev, + IN HANDLE hColorTransform, + IN SURFOBJ *pso, + OUT PBYTE paResults); + +HANDLE +APIENTRY +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 +APIENTRY +DrvIcmDeleteColorTransform( + IN DHPDEV dhpdev, + IN HANDLE hcmXform); + +/* DrvIcmSetDeviceGammaRamp.iFormat constants */ +#define IGRF_RGB_256BYTES 0x00000000 +#define IGRF_RGB_256WORDS 0x00000001 + +BOOL +APIENTRY +DrvIcmSetDeviceGammaRamp( + IN DHPDEV dhpdev, + IN ULONG iFormat, + IN LPVOID lpRamp); + +BOOL +APIENTRY +DrvLineTo( + SURFOBJ *pso, + CLIPOBJ *pco, + BRUSHOBJ *pbo, + LONG x1, + LONG y1, + LONG x2, + LONG y2, + RECTL *prclBounds, + MIX mix); + +ULONG_PTR +APIENTRY +DrvLoadFontFile( + ULONG cFiles, + ULONG_PTR *piFile, + PVOID *ppvView, + ULONG *pcjView, + DESIGNVECTOR *pdv, + ULONG ulLangID, + ULONG ulFastCheckSum); + +VOID +APIENTRY +DrvMovePointer( + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN RECTL *prcl); + +BOOL +APIENTRY +DrvNextBand( + IN SURFOBJ *pso, + IN POINTL *pptl); + +VOID +APIENTRY +DrvNotify( + IN SURFOBJ *pso, + IN ULONG iType, + IN PVOID pvData); + +BOOL +APIENTRY +DrvOffset( + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN FLONG flReserved); + +BOOL +APIENTRY +DrvPaint( + IN SURFOBJ *pso, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix); + +BOOL +APIENTRY +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 +APIENTRY +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 +APIENTRY +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 +APIENTRY +DrvQueryDriverInfo( + DWORD dwMode, + PVOID pBuffer, + DWORD cbBuf, + PDWORD pcbNeeded); + +PIFIMETRICS +APIENTRY +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 +APIENTRY +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 +APIENTRY +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 +APIENTRY +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 +APIENTRY +DrvQueryFontTree( + IN DHPDEV dhpdev, + IN ULONG_PTR iFile, + IN ULONG iFace, + IN ULONG iMode, + IN ULONG_PTR *pid); + +PFD_GLYPHATTR +APIENTRY +DrvQueryGlyphAttrs( + IN FONTOBJ *pfo, + IN ULONG iMode); + +ULONG +APIENTRY +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 +APIENTRY +DrvQueryTrueTypeOutline( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo, + IN HGLYPH hglyph, + IN BOOL bMetricsOnly, + IN GLYPHDATA *pgldt, + IN ULONG cjBuf, + OUT TTPOLYGONHEADER *ppoly); + +LONG +APIENTRY +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 +APIENTRY +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 +APIENTRY +DrvResetDevice( + IN DHPDEV dhpdev, + IN PVOID Reserved); + +BOOL +APIENTRY +DrvResetPDEV( + DHPDEV dhpdevOld, + DHPDEV dhpdevNew); + +/* DrvSaveScreenBits.iMode constants */ +#define SS_SAVE 0x00000000 +#define SS_RESTORE 0x00000001 +#define SS_FREE 0x00000002 + +ULONG_PTR +APIENTRY +DrvSaveScreenBits( + IN SURFOBJ *pso, + IN ULONG iMode, + IN ULONG_PTR ident, + IN RECTL *prcl); + +BOOL +APIENTRY +DrvSendPage( + IN SURFOBJ *pso); + +BOOL +APIENTRY +DrvSetPalette( + IN DHPDEV dhpdev, + IN PALOBJ *ppalo, + IN FLONG fl, + IN ULONG iStart, + IN ULONG cColors); + +BOOL +APIENTRY +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 +APIENTRY +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 +APIENTRY +DrvStartBanding( + IN SURFOBJ *pso, + IN POINTL *pptl); + +BOOL +APIENTRY +DrvStartDoc( + IN SURFOBJ *pso, + IN LPWSTR pwszDocName, + IN DWORD dwJobId); + +BOOL +APIENTRY +DrvStartPage( + IN SURFOBJ *pso); + +BOOL +APIENTRY +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 +APIENTRY +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 +APIENTRY +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 +APIENTRY +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 +APIENTRY +DrvSwapBuffers( + IN SURFOBJ *pso, + IN WNDOBJ *pwo); + +VOID +APIENTRY +DrvSynchronize( + IN DHPDEV dhpdev, + IN RECTL *prcl); + +/* DrvSynchronizeSurface.fl constants */ +#define DSS_TIMER_EVENT 0x00000001 +#define DSS_FLUSH_EVENT 0x00000002 + +VOID +APIENTRY +DrvSynchronizeSurface( + IN SURFOBJ *pso, + IN RECTL *prcl, + IN FLONG fl); + +BOOL +APIENTRY +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 +APIENTRY +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 +APIENTRY +DrvUnloadFontFile( + IN ULONG_PTR iFile); + +typedef BOOL +(APIENTRY *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 +(APIENTRY *PFN_DrvAssertMode)( + IN DHPDEV dhpdev, + IN BOOL bEnable); + +typedef BOOL +(APIENTRY *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 +(APIENTRY *PFN_DrvCompletePDEV)( + IN DHPDEV dhpdev, + IN HDEV hdev); + +typedef BOOL +(APIENTRY *PFN_DrvCopyBits)( + IN SURFOBJ *psoDest, + IN SURFOBJ *psoSrc, + IN CLIPOBJ *pco, + IN XLATEOBJ *pxlo, + IN RECTL *prclDest, + IN POINTL *pptlSrc); + +typedef HBITMAP +(APIENTRY *PFN_DrvCreateDeviceBitmap)( + IN DHPDEV dhpdev, + IN SIZEL sizl, + IN ULONG iFormat); + +typedef VOID +(APIENTRY *PFN_DrvDeleteDeviceBitmap)( + IN DHSURF dhsurf); + +typedef HBITMAP +(APIENTRY *PFN_DrvDeriveSurface)( + DD_DIRECTDRAW_GLOBAL *pDirectDraw, + DD_SURFACE_LOCAL *pSurface); + +typedef LONG +(APIENTRY *PFN_DrvDescribePixelFormat)( + IN DHPDEV dhpdev, + IN LONG iPixelFormat, + IN ULONG cjpfd, + OUT PIXELFORMATDESCRIPTOR *ppfd); + +typedef VOID +(APIENTRY *PFN_DrvDestroyFont)( + IN FONTOBJ *pfo); + +typedef VOID +(APIENTRY *PFN_DrvDisableDriver)( + VOID); + +typedef VOID +(APIENTRY *PFN_DrvDisablePDEV)( + IN DHPDEV dhpdev); + +typedef VOID +(APIENTRY *PFN_DrvDisableSurface)( + IN DHPDEV dhpdev); + +typedef ULONG +(APIENTRY *PFN_DrvDitherColor)( + IN DHPDEV dhpdev, + IN ULONG iMode, + IN ULONG rgb, + OUT ULONG *pul); + +typedef ULONG +(APIENTRY *PFN_DrvDrawEscape)( + IN SURFOBJ *pso, + IN ULONG iEsc, + IN CLIPOBJ *pco, + IN RECTL *prcl, + IN ULONG cjIn, + IN PVOID pvIn); + +typedef BOOL +(APIENTRY *PFN_DrvEnableDriver)( + IN ULONG iEngineVersion, + IN ULONG cj, + OUT DRVENABLEDATA *pded); + +typedef DHPDEV +(APIENTRY *PFN_DrvEnablePDEV)( + IN DEVMODEW *pdm, + IN LPWSTR pwszLogAddress, + IN ULONG cPat, + OUT HSURF *phsurfPatterns, + IN ULONG cjCaps, + GDIINFO *pdevcaps, + IN ULONG cjDevInfo, + OUT DEVINFO *pdi, + IN HDEV hdev, + IN LPWSTR pwszDeviceName, + IN HANDLE hDriver); + +typedef HSURF +(APIENTRY *PFN_DrvEnableSurface)( + IN DHPDEV dhpdev); + +typedef BOOL +(APIENTRY *PFN_DrvEndDoc)( + IN SURFOBJ *pso, + IN FLONG fl); + +typedef ULONG +(APIENTRY *PFN_DrvEscape)( + IN SURFOBJ *pso, + IN ULONG iEsc, + IN ULONG cjIn, + IN PVOID pvIn, + IN ULONG cjOut, + OUT PVOID pvOut); + +typedef BOOL +(APIENTRY *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 +(APIENTRY *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 +(APIENTRY *PFN_DrvFree)( + IN PVOID pv, + IN ULONG_PTR id); + +typedef ULONG +(APIENTRY *PFN_DrvGetGlyphMode)( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo); + +typedef ULONG +(APIENTRY *PFN_DrvGetModes)( + IN HANDLE hDriver, + IN ULONG cjSize, + OUT DEVMODEW *pdm); + +typedef PVOID +(APIENTRY *PFN_DrvGetTrueTypeFile)( + IN ULONG_PTR iFile, + IN ULONG *pcj); + +typedef BOOL +(APIENTRY *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 +(APIENTRY *PFN_DrvIcmCheckBitmapBits)( + IN DHPDEV dhpdev, + IN HANDLE hColorTransform, + IN SURFOBJ *pso, + OUT PBYTE paResults); + +typedef HANDLE +(APIENTRY *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 +(APIENTRY *PFN_DrvIcmDeleteColorTransform)( + IN DHPDEV dhpdev, + IN HANDLE hcmXform); + +typedef BOOL +(APIENTRY *PFN_DrvIcmSetDeviceGammaRamp)( + IN DHPDEV dhpdev, + IN ULONG iFormat, + IN LPVOID lpRamp); + +typedef BOOL +(APIENTRY *PFN_DrvLineTo)( + SURFOBJ *pso, + CLIPOBJ *pco, + BRUSHOBJ *pbo, + LONG x1, + LONG y1, + LONG x2, + LONG y2, + RECTL *prclBounds, + MIX mix); + +typedef ULONG_PTR +(APIENTRY *PFN_DrvLoadFontFile)( + ULONG cFiles, + ULONG_PTR *piFile, + PVOID *ppvView, + ULONG *pcjView, + DESIGNVECTOR *pdv, + ULONG ulLangID, + ULONG ulFastCheckSum); + +typedef VOID +(APIENTRY *PFN_DrvMovePointer)( + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN RECTL *prcl); + +typedef BOOL +(APIENTRY *PFN_DrvNextBand)( + IN SURFOBJ *pso, + IN POINTL *pptl); + +typedef VOID +(APIENTRY *PFN_DrvNotify)( + IN SURFOBJ *pso, + IN ULONG iType, + IN PVOID pvData); + +typedef BOOL +(APIENTRY *PFN_DrvOffset)( + IN SURFOBJ *pso, + IN LONG x, + IN LONG y, + IN FLONG flReserved); + +typedef BOOL +(APIENTRY *PFN_DrvPaint)( + IN SURFOBJ *pso, + IN CLIPOBJ *pco, + IN BRUSHOBJ *pbo, + IN POINTL *pptlBrushOrg, + IN MIX mix); + +typedef BOOL +(APIENTRY *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 +(APIENTRY *PFN_DrvQueryAdvanceWidths)( + IN DHPDEV dhpdev, + IN FONTOBJ *pfo, + IN ULONG iMode, + IN HGLYPH *phg, + OUT PVOID pvWidths, + IN ULONG cGlyphs); + +typedef BOOL +(APIENTRY *PFN_DrvQueryDeviceSupport)( + SURFOBJ *pso, + XLATEOBJ *pxlo, + XFORMOBJ *pxo, + ULONG iType, + ULONG cjIn, + PVOID pvIn, + ULONG cjOut, + PVOID pvOut); + +typedef BOOL +(APIENTRY *PFN_DrvQueryDriverInfo)( + DWORD dwMode, + PVOID pBuffer, + DWORD cbBuf, + PDWORD pcbNeeded); + +typedef PIFIMETRICS +(APIENTRY *PFN_DrvQueryFont)( + IN DHPDEV dhpdev, + IN ULONG_PTR iFile, + IN ULONG iFace, + IN ULONG_PTR *pid); + +typedef LONG +(APIENTRY *PFN_DrvQueryFontCaps)( + IN ULONG culCaps, + OUT ULONG *pulCaps); + +typedef LONG +(APIENTRY *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 +(APIENTRY *PFN_DrvQueryFontFile)( + IN ULONG_PTR iFile, + IN ULONG ulMode, + IN ULONG cjBuf, + IN ULONG *pulBuf); + +typedef PVOID +(APIENTRY *PFN_DrvQueryFontTree)( + IN DHPDEV dhpdev, + IN ULONG_PTR iFile, + IN ULONG iFace, + IN ULONG iMode, + IN ULONG_PTR *pid); + +typedef PFD_GLYPHATTR +(APIENTRY *PFN_DrvQueryGlyphAttrs)( + IN FONTOBJ *pfo, + IN ULONG iMode); + +typedef ULONG +(APIENTRY *PFN_DrvQueryPerBandInfo)( + IN SURFOBJ *pso, + IN OUT PERBANDINFO *pbi); + +typedef LONG +(APIENTRY *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 +(APIENTRY *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 +(APIENTRY *PFN_DrvRealizeBrush)( + IN BRUSHOBJ *pbo, + IN SURFOBJ *psoTarget, + IN SURFOBJ *psoPattern, + IN SURFOBJ *psoMask, + IN XLATEOBJ *pxlo, + IN ULONG iHatch); + +typedef ULONG +(APIENTRY *PFN_DrvResetDevice)( + IN DHPDEV dhpdev, + IN PVOID Reserved); + +typedef BOOL +(APIENTRY *PFN_DrvResetPDEV)( + DHPDEV dhpdevOld, + DHPDEV dhpdevNew); + +typedef ULONG_PTR +(APIENTRY *PFN_DrvSaveScreenBits)( + IN SURFOBJ *pso, + IN ULONG iMode, + IN ULONG_PTR ident, + IN RECTL *prcl); + +typedef BOOL +(APIENTRY *PFN_DrvSendPage)( + IN SURFOBJ *pso); + +typedef BOOL +(APIENTRY *PFN_DrvSetPalette)( + IN DHPDEV dhpdev, + IN PALOBJ *ppalo, + IN FLONG fl, + IN ULONG iStart, + IN ULONG cColors); + +typedef BOOL +(APIENTRY *PFN_DrvSetPixelFormat)( + IN SURFOBJ *pso, + IN LONG iPixelFormat, + IN HWND hwnd); + +typedef ULONG +(APIENTRY *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 +(APIENTRY *PFN_DrvStartBanding)( + IN SURFOBJ *pso, + IN POINTL *pptl); + +typedef BOOL +(APIENTRY *PFN_DrvStartDoc)( + IN SURFOBJ *pso, + IN LPWSTR pwszDocName, + IN DWORD dwJobId); + +typedef BOOL +(APIENTRY *PFN_DrvStartPage)( + IN SURFOBJ *pso); + +typedef BOOL +(APIENTRY *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 +(APIENTRY *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 +(APIENTRY *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 +(APIENTRY *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 +(APIENTRY *PFN_DrvSwapBuffers)( + IN SURFOBJ *pso, + IN WNDOBJ *pwo); + +typedef VOID +(APIENTRY *PFN_DrvSynchronize)( + IN DHPDEV dhpdev, + IN RECTL *prcl); + +typedef VOID +(APIENTRY *PFN_DrvSynchronizeSurface)( + IN SURFOBJ *pso, + IN RECTL *prcl, + IN FLONG fl); + +typedef BOOL +(APIENTRY *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 +(APIENTRY *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 +(APIENTRY *PFN_DrvUnloadFontFile)( + IN ULONG_PTR iFile); + + +WIN32KAPI +VOID +APIENTRY +DrvDisableDirectDraw( + IN DHPDEV dhpdev); + +typedef VOID +(APIENTRY *PFN_DrvDisableDirectDraw)( + IN DHPDEV dhpdev); + +WIN32KAPI +BOOL +APIENTRY +DrvEnableDirectDraw( + IN DHPDEV dhpdev, + OUT DD_CALLBACKS *pCallBacks, + OUT DD_SURFACECALLBACKS *pSurfaceCallBacks, + OUT DD_PALETTECALLBACKS *pPaletteCallBacks); + +typedef BOOL +(APIENTRY *PFN_DrvEnableDirectDraw)( + IN DHPDEV dhpdev, + OUT DD_CALLBACKS *pCallBacks, + OUT DD_SURFACECALLBACKS *pSurfaceCallBacks, + OUT DD_PALETTECALLBACKS *pPaletteCallBacks); + +WIN32KAPI +BOOL +APIENTRY +DrvGetDirectDrawInfo( + IN DHPDEV dhpdev, + OUT DD_HALINFO *pHalInfo, + OUT DWORD *pdwNumHeaps, + OUT VIDEOMEMORY *pvmList, + OUT DWORD *pdwNumFourCCCodes, + OUT DWORD *pdwFourCC); + +typedef BOOL +(APIENTRY *PFN_DrvGetDirectDrawInfo)( + IN DHPDEV dhpdev, + OUT DD_HALINFO *pHalInfo, + OUT DWORD *pdwNumHeaps, + OUT VIDEOMEMORY *pvmList, + OUT DWORD *pdwNumFourCCCodes, + OUT DWORD *pdwFourCC); + +//DECLSPEC_DEPRECATED_DDK +BOOL +APIENTRY +DrvQuerySpoolType( + IN DHPDEV dhpdev, + IN LPWSTR pwchType); + +typedef BOOL +(APIENTRY *PFN_DrvQuerySpoolType)( + IN DHPDEV dhpdev, + IN LPWSTR pwchType); + + +#ifdef __cplusplus +} +#endif + +#endif /* defined __VIDEO_H__ */ + +#endif /* _WINDDI_ */
