diff --git a/reactos/include/ddk/winddi.h b/reactos/include/ddk/winddi.h new file mode 100644 index 00000000000..d8f1d006dca --- /dev/null +++ b/reactos/include/ddk/winddi.h @@ -0,0 +1,166 @@ +/* + * WinDDI.h - definition of the GDI - DDI interface + */ + +typedef HANDLE HBITMAP; +typedef HANDLE HDEV; +typedef HANDLE HPALETTE; +typedef HANDLE HSURF; + +typedef HANDLE DHPDEV; + +typedef ULONG (*PFN)(); + +typedef struct _DRVFN +{ + ULONG iFunc; + PFN pfn; +} DRVFN, *PDRVFN; + +/* + * DRVENABLEDATA - this structure is passed to the DDI from the GDI + * in the function DrvEnableDriver to determine driver parameters. + */ + +typedef struct _DRVENABLEDATA +{ + ULONG iDriverVersion; + ULONG c; + DRVFN *pdrvfn; +} DRVENABLEDATA, *PDRVENABLEDATA; + +typedef struct _DEVINFO +{ + ULONG flGraphicsCaps; + LOGFONTW lfDefaultFont; + LOGFONTW lfAnsiVarFont; + LOGFONTW lfAnsiFixFont; + ULONG cFonts; + ULONG iDitherFormat; + USHORT cxDither; + USHORT cyDither; + HPALETTE hpalDefault; +} DEVINFO, *PDEVINFO; + +#define DMMAXDEVICENAME 32 +#define DMMAXFORMNAME 32 + +typedef struct _DEVMODEW +{ + WCHAR dmDeviceName[DMMAXDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR dmFormName[DMMAXFORMNAME]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + DWORD dmDisplayFlags; + DWORD dmDisplayFrequency; +} DEVMODEW; + +/* EngAssocateSurface hook flags */ +#define HOOK_BITBLT 0x00000001 +#define HOOK_STRETCHBLT 0x00000002 +#define HOOK_TEXTOUT 0x00000004 +#define HOOK_PAINT 0x00000008 +#define HOOK_STROKEPATH 0x00000010 +#define HOOK_FILLPATH 0x00000020 +#define HOOK_STROKEANDFILLPATH 0x00000040 +#define HOOK_LINETO 0x00000080 +#define HOOK_COPYBITS 0x00000100 +#define HOOK_SYNCHRONIZE 0x00000200 +#define HOOK_SYNCHRONIZEACCESS 0x00000400 + +/* EngCreateBitmap format types */ +enum _BMF_TYPES +{ + BMF_1BPP = 1, + BMF_4BPP, + BMF_8BPP, + BMF_16BPP, + BMF_24BPP, + BMF_32BPP, + BMF_4RLE, + BMF_8RLE +}; + +#define BMF_TOPDOWN 0x00000001 +#define BMF_NOZEROINIT 0x00000002 +#define BMF_USERMEM 0x00000004 + +/* EngCreatePalette mode types */ +enum _PAL_TYPES +{ + PAL_INDEXED = 1, + PAL_BITFIELDS, + PAL_RGB, + PAL_BGR +}; + +/* + * 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 + * not allowed to make calls to any other kernel or user modules. + */ + +/* GDI --> DDI calls */ +VOID DrvCompletePDEV(IN DHPDEV PDev, + IN HDEV Dev); +VOID DrvDisablePDEV(IN DHPDEV PDev); +VOID DrvDisableSurface(IN DHPDEV PDev); +BOOL DrvEnableDriver(IN ULONG Version, + IN ULONG DEDSize, + OUT PDRVENABLEDATA DED); +DHPDEV DrvEnablePDEV(IN DEVMODEW *DM, + IN LPWSTR LogAddress, + IN ULONG PatternCount, + OUT HSURF *SurfPatterns, + IN ULONG CapsSize, + OUT ULONG *DevCaps, + IN ULONG DevInfoSize, + OUT DEVINFO *DI, + IN LPWSTR DevDataFile, + IN LPWSTR DeviceName, + IN HANDLE Driver); +HSURF DrvEnableSurface(IN DHPDEV PDev); +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); +HBITMAP EngCreateBitmap(IN SIZEL Size, + IN LONG Width, + IN ULONG Format, + IN ULONG Flags, + IN PVOID Bits); +HSURF EngCreateDeviceSurface(IN DHSURF Surface, + IN SIZEL Size, + IN ULONG FormatVersion); +HPALETTE EngCreatePalette(IN ULONG Mode, + IN ULONG Colors, + IN PULONG *Colors, + IN ULONG Red, + IN ULONG Green, + IN ULONG Blue); + +