From d22c45fab2a49cf5f54ef985a22711151ddbd169 Mon Sep 17 00:00:00 2001 From: Rex Jolliff Date: Fri, 21 May 1999 00:02:39 +0000 Subject: [PATCH] Added to DDI interface definition svn path=/trunk/; revision=495 --- reactos/include/ddk/winddi.h | 215 +++++++++++++++++++++++++++++++++-- 1 file changed, 206 insertions(+), 9 deletions(-) diff --git a/reactos/include/ddk/winddi.h b/reactos/include/ddk/winddi.h index d8f1d006dca..3de96c14bb0 100644 --- a/reactos/include/ddk/winddi.h +++ b/reactos/include/ddk/winddi.h @@ -2,10 +2,9 @@ * WinDDI.h - definition of the GDI - DDI interface */ -typedef HANDLE HBITMAP; +#include + typedef HANDLE HDEV; -typedef HANDLE HPALETTE; -typedef HANDLE HSURF; typedef HANDLE DHPDEV; @@ -75,6 +74,88 @@ typedef struct _DEVMODEW DWORD dmDisplayFrequency; } DEVMODEW; +typedef struct _BRUSHOBJ +{ + ULONG iSolidColor; + PVOID pvRbrush; +} BRUSHOBJ, *PBRUSHOBJ; + +typedef struct _CLIPOBJ +{ + ULONG iUniq; + RECTL rclBounds; + BYTE iDComplexity; + BYTE iFComplexity; + BYTE iMode; + BYTE fjOptions; +} CLIPOBJ, *PCLIPOBJ; + +typedef struct _ENUMRECTS +{ + ULONG c; + RECTL arcl[1]; +} ENUMRECTS, *PENUMRECTS; + +typedef struct _FONTOBJ +{ + ULONG iUniq; + ULONG iFace; + ULONG cxMax; + ULONG flFontType; + ULONG iTTUniq; + ULONG iFile; + SIZE sizLogResPpi; + ULONG ulStyleSize; + PVOID pvConsumer; + PVOID pvProducer; +} FONTOBJ, *PFONTOBJ; + +typedef struct _PATHOBJ +{ + ULONG fl; + ULONG cCurves; +} PATHOBJ, *PPATHOBJ; + +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, *PSURFOBJ; + +typedef struct _XLATEOBJ +{ + ULONG iUniq; + FLONG flXlate; + USHORT iSrcType; + USHORT iDstType; + ULONG cEntries; + ULONG *pulXlate; +} XLATEOBJ, *PXLATEOBJ; + +/* Options for CLIPOBJ_cEnumStart Type field */ +#define CT_RECTANGLE 1 + +/* Options for CLIPOBJ_cEnumStart BuildOrder field */ +enum _CD_ORDERS +{ + CD_RIGHTDOWN = 1, + CD_LEFTDOWN, + CD_RIGHTUP, + CD_LEFTUP, + CD_ANY +}; + /* EngAssocateSurface hook flags */ #define HOOK_BITBLT 0x00000001 #define HOOK_STRETCHBLT 0x00000002 @@ -100,7 +181,24 @@ enum _BMF_TYPES BMF_4RLE, BMF_8RLE }; - + +#define RASTER_FONTTYPE 0x00000001 +#define DEVICE_FONTTYPE 0x00000002 +#define TRUETYPE_FONTTYPE 0x00000004 +#define FO_SIM_ITALIC 0x00000008 +#define FO_SIM_BOLD 0x00000010 +#define FO_EM_HEIGHT 0x00000020 +#define FO_4_LEVEL 0x00000040 +#define FO_16_LEVEL 0x00000080 +#define FO_64_LEVEL 0x00000100 + +enum _SURF_TYPES +{ + STYPE_BITMAP = 1, + STYPE_DEVICE, + STYPE_DEVBITMAP +}; + #define BMF_TOPDOWN 0x00000001 #define BMF_NOZEROINIT 0x00000002 #define BMF_USERMEM 0x00000004 @@ -114,17 +212,90 @@ enum _PAL_TYPES PAL_BGR }; +enum _DITHER_COLOR_MODES +{ + DM_DEFAULT, + DM_MONOCHROME +}; + +enum _ESCAPE_CODES +{ + ESC_PASSTHROUGH, + ESC_QUERYESCSUPPORT +}; + +enum _END_DOC_FLAGS +{ + ED_ABORTDOC +}; + +#define FP_WINDINGMODE 0x00000001 +#define FP_ALTERNATEMODE 0x00000002 + /* * Functions Prefixed with Drv are calls made from GDI to DDI, and - * those prefixed with Eng are calls made from DDI to GDI. DDI is + * everything else are calls made from DDI to GDI. DDI is * not allowed to make calls to any other kernel or user modules. */ +/* DDI --> GDI calls */ +PVOID BRUSHOBJ_pvAllocRbrush(IN PBRUSHOBJ BrushObj, + IN ULONG ObjSize); +PVOID BRUSHOBJ_pvGetRbrush(IN PBRUSHOBJ BrushObj); +BOOL CLIPOBJ_bEnum(IN PCLIPOBJ ClipObj, + IN ULONG ObjSize, + OUT ULONG *EnumRects); +ULONG CLIPOBJ_cEnumStart(IN PCLIPOBJ ClipObj, + IN BOOL ShouldDoAll, + IN ULONG ClipType, + IN ULONG BuildOrder, + IN ULONG MaxRects); +PPATHOBJ CLIPOBJ_ppoGetPath(PCLIPOBJ ClipObj); + /* GDI --> DDI calls */ -VOID DrvCompletePDEV(IN DHPDEV PDev, - IN HDEV Dev); +VOID DrvAssertMode(IN DHPDEV PDev, + IN BOOL ShouldEnable); +BOOL DrvBitBlt(IN PSURFOBJ DestSurface, + IN PSURFOBJ SrcSurface, + IN PSURFOBJ MaskSurface, + IN PCLIPOBJ ClipObj, + IN PXLATEOBJ XLateObj, + IN PRECTL DestRectL, + IN PPOINTL SrcPointL, + IN PPOINTL MaskPointL, + IN PBRUSHOBJ BrushObj, + IN PPOINTL BrushPointL, + IN ROP4 RasterOp); +VOID DrvCompletePDEV(IN DHPDEV PDev, + IN HDEV Dev); +BOOL DrvCopyBits(OUT PSURFOBJ DestSurface, + IN PSURFOBJ SrcSurface, + IN PCLIPOBJ ClipObj, + IN PXLATEOBJ XLateObj, + IN PRECTL DestRectL, + IN PPOINTL SrcPointL); +HBITMAP DrvCreateDeviceBitmap(IN DHPDEV DPev, + IN SIZEL SizeL, + IN ULONG Format); +VOID DrvDeleteDeviceBitmap(IN DHSURF Surface); +LONG DrvDescribePixelFormat(IN DHPDEV DPev, + IN LONG PixelFormat, + IN ULONG DescriptorSize, + OUT PPIXELFORMATDESCRIPTOR PFD); +VOID DrvDestroyFont(IN PFONTOBJ FontObj); +VOID DrvDisableDriver(VOID); VOID DrvDisablePDEV(IN DHPDEV PDev); VOID DrvDisableSurface(IN DHPDEV PDev); +ULONG DrvDitherColor(IN DHPDEV DPev, + IN ULONG Mode, + IN ULONG RGB, + OUT PULONG DitherBits); +ULONG DrvDrawEscape(IN PSURFOBJ SurfObj, + IN ULONG EscCode, + IN PCLIPOBJ ClipObj, + IN PRECTL RectL, + IN ULONG InputSize, + IN PVOID *InputData); BOOL DrvEnableDriver(IN ULONG Version, IN ULONG DEDSize, OUT PDRVENABLEDATA DED); @@ -139,12 +310,38 @@ DHPDEV DrvEnablePDEV(IN DEVMODEW *DM, IN LPWSTR DevDataFile, IN LPWSTR DeviceName, IN HANDLE Driver); -HSURF DrvEnableSurface(IN DHPDEV PDev); +HSURF DrvEnableSurface(IN DHPDEV PDev); +BOOL DrvEndDoc(IN PSURFOBJ SurfObj, + IN ULONG Flags); +ULONG DrvEscape(IN PSURFOBJ SurfObj, + IN ULONG EscCode, + IN ULONG InputSize, + IN PVOID *InputData, + IN ULONG OutputSize, + OUT PVOID *OutputData); +BOOL DrvFillPath(IN PSURFOBJ SurfObj, + IN PPATHOBJ PathObj, + IN PCLIPOBJ ClipObj, + IN PBRUSHOBJ BrushObj, + IN PPOINTL BrushOrg, + IN MIX Mix, + IN ULONG Options); +ULONG DrvFontManagement(IN PSURFOBJ SurfObj, + IN PFONTOBJ FontObj, + IN ULONG Mode, + IN ULONG InputSize, + IN PVOID InputData, + IN ULONG OutputSize, + OUT PVOID OutputData); +VOID DrvFree(IN PVOID Obj, + IN ULONG ID); +ULONG DrvGetGlyphMode(IN DHPDEV DPev, + IN PFONTOBJ FontObj); + ULONG DrvGetModes(IN HANDLE Driver, IN ULONG DataSize, OUT PDEVMODEW DM); -/* DDI --> GDI calls */ BOOL EngAssociateSurface(IN HSURF Surface, IN HDEV Dev, IN ULONG Hooks);