diff options
Diffstat (limited to 'public/oak/inc/ddrawint.h')
-rw-r--r-- | public/oak/inc/ddrawint.h | 741 |
1 files changed, 741 insertions, 0 deletions
diff --git a/public/oak/inc/ddrawint.h b/public/oak/inc/ddrawint.h new file mode 100644 index 000000000..a779d51fa --- /dev/null +++ b/public/oak/inc/ddrawint.h @@ -0,0 +1,741 @@ +/*++ + +Copyright (c) 1995-1996, Microsoft Corporation + +Module Name: + + ddrawint.h + +Abstract: + + Private entry points, defines and types for Windows NT DirectDraw + driver interface. Corresponds to Windows' 'ddrawi.h' file. + +--*/ + +#ifndef __DD_INCLUDED__ +#define __DD_INCLUDED__ + +#define _NO_COM +#include "ddraw.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define MAKE_HRESULT(sev,fac,code) \ + ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) ) + +/* + * offset into video meory + */ +typedef unsigned long FLATPTR; + +/* + * pre-declare pointers to structs containing data for DDHAL driver fns + */ +typedef struct _DD_CREATEPALETTEDATA *PDD_CREATEPALETTEDATA; +typedef struct _DD_CREATESURFACEDATA *PDD_CREATESURFACEDATA; +typedef struct _DD_CANCREATESURFACEDATA *PDD_CANCREATESURFACEDATA; +typedef struct _DD_WAITFORVERTICALBLANKDATA *PDD_WAITFORVERTICALBLANKDATA; +typedef struct _DD_DESTROYDRIVERDATA *PDD_DESTROYDRIVERDATA; +typedef struct _DD_SETMODEDATA *PDD_SETMODEDATA; +typedef struct _DD_DRVSETCOLORKEYDATA *PDD_DRVSETCOLORKEYDATA; +typedef struct _DD_GETSCANLINEDATA *PDD_GETSCANLINEDATA; +typedef struct _DD_MAPMEMORYDATA *PDD_MAPMEMORYDATA; +typedef struct _DD_DESTROYPALETTEDATA *PDD_DESTROYPALETTEDATA; +typedef struct _DD_SETENTRIESDATA *PDD_SETENTRIESDATA; +typedef struct _DD_BLTDATA *PDD_BLTDATA; +typedef struct _DD_LOCKDATA *PDD_LOCKDATA; +typedef struct _DD_UNLOCKDATA *PDD_UNLOCKDATA; +typedef struct _DD_UPDATEOVERLAYDATA *PDD_UPDATEOVERLAYDATA; +typedef struct _DD_SETOVERLAYPOSITIONDATA *PDD_SETOVERLAYPOSITIONDATA; +typedef struct _DD_SETPALETTEDATA *PDD_SETPALETTEDATA; +typedef struct _DD_FLIPDATA *PDD_FLIPDATA; +typedef struct _DD_DESTROYSURFACEDATA *PDD_DESTROYSURFACEDATA; +typedef struct _DD_SETCLIPLISTDATA *PDD_SETCLIPLISTDATA; +typedef struct _DD_ADDATTACHEDSURFACEDATA *PDD_ADDATTACHEDSURFACEDATA; +typedef struct _DD_SETCOLORKEYDATA *PDD_SETCOLORKEYDATA; +typedef struct _DD_GETBLTSTATUSDATA *PDD_GETBLTSTATUSDATA; +typedef struct _DD_GETFLIPSTATUSDATA *PDD_GETFLIPSTATUSDATA; + +/* + * value in the fpVidMem; indicates dwBlockSize is valid (surface object) + */ +#define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l +#define DDHAL_PLEASEALLOC_USERMEM 0x00000004l + +/* + * video memory data structures (passed in DD_HALINFO) + */ +typedef struct _VIDEOMEMORY +{ + DWORD dwFlags; // flags + FLATPTR fpStart; // start of memory chunk + union + { + FLATPTR fpEnd; // end of memory chunk + DWORD dwWidth; // width of chunk (rectanglar memory) + }; + DDSCAPS ddsCaps; // what this memory CANNOT be used for + DDSCAPS ddsCapsAlt; // what this memory CANNOT be used for if it must + DWORD dwHeight; // height of chunk (rectanguler memory) +} VIDEOMEMORY; +typedef VIDEOMEMORY *LPVIDEOMEMORY; + +/* + * flags for vidmem struct + */ +#define VIDMEM_ISLINEAR 0x00000001l +#define VIDMEM_ISRECTANGULAR 0x00000002l +#define VIDMEM_ISHEAP 0x00000004l + +typedef struct _VIDEOMEMORYINFO +{ + FLATPTR fpPrimary; // offset to primary surface + DWORD dwFlags; // flags + DWORD dwDisplayWidth; // current display width + DWORD dwDisplayHeight; // current display height + LONG lDisplayPitch; // current display pitch + DDPIXELFORMAT ddpfDisplay; // pixel format of display + DWORD dwOffscreenAlign; // byte alignment for offscreen surfaces + DWORD dwOverlayAlign; // byte alignment for overlays + DWORD dwTextureAlign; // byte alignment for textures + DWORD dwZBufferAlign; // byte alignment for z buffers + DWORD dwAlphaAlign; // byte alignment for alpha + PVOID pvPrimary; // kernel-mode pointer to primary surface +} VIDEOMEMORYINFO; +typedef VIDEOMEMORYINFO *LPVIDEOMEMORYINFO; + +/* + * These structures contain the entry points in the display driver that + * DDRAW will call. Entries that the display driver does not care about + * should be NULL. Passed to DDRAW in DD_HALINFO. + */ +typedef struct _DD_DIRECTDRAW_GLOBAL *PDD_DIRECTDRAW_GLOBAL; +typedef struct _DD_SURFACE_GLOBAL *PDD_SURFACE_GLOBAL; +typedef struct _DD_PALETTE_GLOBAL *PDD_PALETTE_GLOBAL; +typedef struct _DD_CLIPPER_GLOBAL *PDD_CLIPPER_GLOBAL; +typedef struct _DD_DIRECTDRAW_LOCAL *PDD_DIRECTDRAW_LOCAL; +typedef struct _DD_SURFACE_LOCAL *PDD_SURFACE_LOCAL; +typedef struct _DD_PALETTE_LOCAL *PDD_PALETTE_LOCAL; +typedef struct _DD_CLIPPER_LOCAL *PDD_CLIPPER_LOCAL; + +/* + * DIRECTDRAW object callbacks + */ +typedef DWORD (APIENTRY *PDD_SETCOLORKEY)(PDD_DRVSETCOLORKEYDATA ); +typedef DWORD (APIENTRY *PDD_CANCREATESURFACE)(PDD_CANCREATESURFACEDATA ); +typedef DWORD (APIENTRY *PDD_WAITFORVERTICALBLANK)(PDD_WAITFORVERTICALBLANKDATA ); +typedef DWORD (APIENTRY *PDD_CREATESURFACE)(PDD_CREATESURFACEDATA); +typedef DWORD (APIENTRY *PDD_DESTROYDRIVER)(PDD_DESTROYDRIVERDATA); +typedef DWORD (APIENTRY *PDD_SETMODE)(PDD_SETMODEDATA); +typedef DWORD (APIENTRY *PDD_CREATEPALETTE)(PDD_CREATEPALETTEDATA); +typedef DWORD (APIENTRY *PDD_GETSCANLINE)(PDD_GETSCANLINEDATA); +typedef DWORD (APIENTRY *PDD_MAPMEMORY)(PDD_MAPMEMORYDATA); + +typedef struct DD_CALLBACKS +{ + DWORD dwSize; + DWORD dwFlags; + PDD_DESTROYDRIVER DestroyDriver; + PDD_CREATESURFACE CreateSurface; + PDD_SETCOLORKEY SetColorKey; + PDD_SETMODE SetMode; + PDD_WAITFORVERTICALBLANK WaitForVerticalBlank; + PDD_CANCREATESURFACE CanCreateSurface; + PDD_CREATEPALETTE CreatePalette; + PDD_GETSCANLINE GetScanLine; + PDD_MAPMEMORY MapMemory; +} DD_CALLBACKS; + +typedef DD_CALLBACKS *PDD_CALLBACKS; + +#define DDHAL_CB32_DESTROYDRIVER 0x00000001l +#define DDHAL_CB32_CREATESURFACE 0x00000002l +#define DDHAL_CB32_SETCOLORKEY 0x00000004l +#define DDHAL_CB32_SETMODE 0x00000008l +#define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l +#define DDHAL_CB32_CANCREATESURFACE 0x00000020l +#define DDHAL_CB32_CREATEPALETTE 0x00000040l +#define DDHAL_CB32_GETSCANLINE 0x00000080l +#define DDHAL_CB32_MAPMEMORY 0x80000000l + +/* + * DIRECTDRAWPALETTE object callbacks + */ +typedef DWORD (APIENTRY *PDD_PALCB_DESTROYPALETTE)(PDD_DESTROYPALETTEDATA ); +typedef DWORD (APIENTRY *PDD_PALCB_SETENTRIES)(PDD_SETENTRIESDATA ); + +typedef struct DD_PALETTECALLBACKS +{ + DWORD dwSize; + DWORD dwFlags; + PDD_PALCB_DESTROYPALETTE DestroyPalette; + PDD_PALCB_SETENTRIES SetEntries; +} DD_PALETTECALLBACKS; + +typedef DD_PALETTECALLBACKS *PDD_PALETTECALLBACKS; + +#define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l +#define DDHAL_PALCB32_SETENTRIES 0x00000002l + +/* + * DIRECTDRAWSURFACE object callbacks + */ +typedef DWORD (APIENTRY *PDD_SURFCB_LOCK)(PDD_LOCKDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_UNLOCK)(PDD_UNLOCKDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_BLT)(PDD_BLTDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_UPDATEOVERLAY)(PDD_UPDATEOVERLAYDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_SETOVERLAYPOSITION)(PDD_SETOVERLAYPOSITIONDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_SETPALETTE)(PDD_SETPALETTEDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_FLIP)(PDD_FLIPDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_DESTROYSURFACE)(PDD_DESTROYSURFACEDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_SETCLIPLIST)(PDD_SETCLIPLISTDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_ADDATTACHEDSURFACE)(PDD_ADDATTACHEDSURFACEDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_SETCOLORKEY)(PDD_SETCOLORKEYDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_GETBLTSTATUS)(PDD_GETBLTSTATUSDATA); +typedef DWORD (APIENTRY *PDD_SURFCB_GETFLIPSTATUS)(PDD_GETFLIPSTATUSDATA); + + +typedef struct DD_SURFACECALLBACKS +{ + DWORD dwSize; + DWORD dwFlags; + PDD_SURFCB_DESTROYSURFACE DestroySurface; + PDD_SURFCB_FLIP Flip; + PDD_SURFCB_SETCLIPLIST SetClipList; + PDD_SURFCB_LOCK Lock; + PDD_SURFCB_UNLOCK Unlock; + PDD_SURFCB_BLT Blt; + PDD_SURFCB_SETCOLORKEY SetColorKey; + PDD_SURFCB_ADDATTACHEDSURFACE AddAttachedSurface; + PDD_SURFCB_GETBLTSTATUS GetBltStatus; + PDD_SURFCB_GETFLIPSTATUS GetFlipStatus; + PDD_SURFCB_UPDATEOVERLAY UpdateOverlay; + PDD_SURFCB_SETOVERLAYPOSITION SetOverlayPosition; + LPVOID reserved4; + PDD_SURFCB_SETPALETTE SetPalette; +} DD_SURFACECALLBACKS; +typedef DD_SURFACECALLBACKS *PDD_SURFACECALLBACKS; + +#define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001l +#define DDHAL_SURFCB32_FLIP 0x00000002l +#define DDHAL_SURFCB32_SETCLIPLIST 0x00000004l +#define DDHAL_SURFCB32_LOCK 0x00000008l +#define DDHAL_SURFCB32_UNLOCK 0x00000010l +#define DDHAL_SURFCB32_BLT 0x00000020l +#define DDHAL_SURFCB32_SETCOLORKEY 0x00000040l +#define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080l +#define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100l +#define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200l +#define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400l +#define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800l +#define DDHAL_SURFCB32_RESERVED4 0x00001000l +#define DDHAL_SURFCB32_SETPALETTE 0x00002000l + +/* + * CALLBACK RETURN VALUES + * + * these are values returned by the driver from the above callback routines + */ +/* + * indicates that the display driver didn't do anything with the call + */ +#define DDHAL_DRIVER_NOTHANDLED 0x00000000l + +/* + * indicates that the display driver handled the call; HRESULT value is valid + */ +#define DDHAL_DRIVER_HANDLED 0x00000001l + +/* + * indicates that the display driver couldn't handle the call because it + * ran out of color key hardware resources + */ +#define DDHAL_DRIVER_NOCKEYHW 0x00000002l + +/* + * DDRAW internal version of DIRECTDRAWPALETTE object; it has data after the vtable + */ +typedef struct _DD_PALETTE_GLOBAL +{ + DWORD dwReserved1; // reserved for use by display driver +} DD_PALETTE_GLOBAL; + +typedef struct _DD_PALETTE_LOCAL +{ + DWORD dwReserved0; // reserved for future expansion + DWORD dwReserved1; // reserved for use by display driver +} DD_PALETTE_LOCAL; + +#define DDRAWIPAL_256 0x00000001l // 256 entry palette +#define DDRAWIPAL_16 0x00000002l // 16 entry palette +#define DDRAWIPAL_GDI 0x00000004l // palette allocated through GDI +#define DDRAWIPAL_STORED_8 0x00000008l // palette stored as 8bpp/entry +#define DDRAWIPAL_STORED_16 0x00000010l // palette stored as 16bpp/entry +#define DDRAWIPAL_STORED_24 0x00000020l // palette stored as 24bpp/entry +#define DDRAWIPAL_EXCLUSIVE 0x00000040l // palette being used in exclusive mode +#define DDRAWIPAL_INHEL 0x00000080l // palette is done in the hel +#define DDRAWIPAL_DIRTY 0x00000100l // gdi palette out 'o sync +#define DDRAWIPAL_ALLOW256 0x00000200l // can fully update palette +#define DDRAWIPAL_4 0x00000400l // 4 entry palette +#define DDRAWIPAL_2 0x00000800l // 2 entry palette +#define DDRAWIPAL_STORED_8INDEX 0x00001000l // palatte stored as 8-bit index into dst palette + +/* + * DDRAW internal version of DIRECTDRAWCLIPPER object; it has data after the vtable + */ +typedef struct _DD_CLIPPER_GLOBAL +{ + DWORD dwReserved1; // reserved for use by display driver +} DD_CLIPPER_GLOBAL; + +typedef struct _DD_CLIPPER_LOCAL +{ + DWORD dwReserved1; // reserved for use by display driver +} DD_CLIPPER_LOCAL; + +/* + * DDRAW internal version of DIRECTDRAWSURFACE struct + * + * the GBL structure is global data for all duplicate objects + */ +typedef struct _DD_SURFACE_GLOBAL +{ + DWORD dwBlockSizeY; // block size that display driver requested (return) + union { + DWORD dwBlockSizeX; // block size that display driver requested (return) + DWORD dwUserMemSize; // user-mode memory size that display driver requested (return) + }; + FLATPTR fpVidMem; // pointer to video memory + LONG lPitch; // pitch of surface + LONG yHint; // y-coordinate of surface + LONG xHint; // x-coordinate of surface + DWORD wHeight; // height of surface + DWORD wWidth; // width of surface + DWORD dwReserved1; // reserved for use by display driver + DDPIXELFORMAT ddpfSurface; // pixel format of surface +} DD_SURFACE_GLOBAL; + +/* + * the LCL structure is local data for each individual surface object + */ +struct _DD_SURFACE_LOCAL +{ + PDD_SURFACE_GLOBAL lpGbl; // pointer to surface shared data + DWORD dwFlags; // flags + DDSCAPS ddsCaps; // capabilities of surface + DWORD dwReserved1; // reserved for use by display driver + DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use + DDCOLORKEY ddckCKDestOverlay;// color key for destination overlay use +}; +typedef struct _DD_SURFACE_LOCAL DD_SURFACE_LOCAL; + +#define DDRAWISURFGBL_MEMFREE 0x00000001L // video memory has been freed +#define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002L // surface is in system memory at request of user +#define DDRAWISURFGBL_ISGDISURFACE 0x00000004L // This surface represents what GDI thinks is front buffer +/* + * NOTE: This flag was previously DDRAWISURFGBL_INVALID. This flags has been retired + * and replaced by DDRAWISURF_INVALID in the local object. + */ +#define DDRAWISURFGBL_RESERVED0 0x80000000L // Reserved flag + +#define DDRAWISURF_ATTACHED 0x00000001L // surface is attached to another +#define DDRAWISURF_IMPLICITCREATE 0x00000002L // surface implicitly created +#define DDRAWISURF_ISFREE 0x00000004L // surface already freed (temp flag) +#define DDRAWISURF_ATTACHED_FROM 0x00000008L // surface has others attached to it +#define DDRAWISURF_IMPLICITROOT 0x00000010L // surface root of implicit creation +#define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L // surface is part of primary chain +#define DDRAWISURF_DATAISALIASED 0x00000040L // used for thunking +#define DDRAWISURF_HASDC 0x00000080L // has a DC +#define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L // surface has CKDestOverlay +#define DDRAWISURF_HASCKEYDESTBLT 0x00000200L // surface has CKDestBlt +#define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400L // surface has CKSrcOverlay +#define DDRAWISURF_HASCKEYSRCBLT 0x00000800L // surface has CKSrcBlt +#define DDRAWISURF_xxxxxxxxxxx4 0x00001000L // spare bit +#define DDRAWISURF_HASPIXELFORMAT 0x00002000L // surface structure has pixel format data +#define DDRAWISURF_HASOVERLAYDATA 0x00004000L // surface structure has overlay data +#define DDRAWISURF_xxxxxxxxxxx5 0x00008000L // spare bit +#define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L // surface expects to process colorkey in software +#define DDRAWISURF_SW_CKEYDESTBLT 0x00020000L // surface expects to process colorkey in software +#define DDRAWISURF_SW_CKEYSRCOVERLAY 0x00040000L // surface expects to process colorkey in software +#define DDRAWISURF_SW_CKEYSRCBLT 0x00080000L // surface expects to process colorkey in software +#define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L // surface expects to process colorkey in hardware +#define DDRAWISURF_HW_CKEYDESTBLT 0x00200000L // surface expects to process colorkey in hardware +#define DDRAWISURF_HW_CKEYSRCOVERLAY 0x00400000L // surface expects to process colorkey in hardware +#define DDRAWISURF_HW_CKEYSRCBLT 0x00800000L // surface expects to process colorkey in hardware +#define DDRAWISURF_xxxxxxxxxxx6 0x01000000L // spare bit +#define DDRAWISURF_HELCB 0x02000000L // surfac is the ddhel cb. must call hel for lock/blt. +#define DDRAWISURF_FRONTBUFFER 0x04000000L // surface was originally a front buffer +#define DDRAWISURF_BACKBUFFER 0x08000000L // surface was originally backbuffer +#define DDRAWISURF_INVALID 0x10000000L // surface has been invalidated by mode set +#define DDRAWISURF_CANTLOCK 0x20000000L // surface cannot be locked (primary created by HEL) + +/* + * rop stuff + */ +#define ROP_HAS_SOURCE 0x00000001l +#define ROP_HAS_PATTERN 0x00000002l +#define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN + +/* + * structure for display driver to call DDHAL_Create with + */ +typedef struct _DD_HALINFO +{ + DWORD dwSize; + VIDEOMEMORYINFO vmiData; // video memory info + DDCAPS ddCaps; // hw specific caps + DWORD dwMonitorFrequency; // monitor frequency in current mode + DWORD dwFlags; // create flags +} DD_HALINFO; +typedef DD_HALINFO *PDD_HALINFO; + +/* + * DDRAW version of DirectDraw object; + * + */ +typedef struct _DD_DIRECTDRAW_GLOBAL +{ + VOID* dhpdev; // driver's private PDEV pointer + DWORD dwReserved1; // reserved for use by display driver + DWORD dwReserved2; // reserved for use by display driver +} DD_DIRECTDRAW_GLOBAL; + +typedef struct _DD_DIRECTDRAW_LOCAL +{ + PDD_DIRECTDRAW_GLOBAL lpGbl; // pointer to data + FLATPTR fpProcess; // address of frame buffer in calling process' address space +} DD_DIRECTDRAW_LOCAL; + + +///////////////////////////////////////////////////////////////////////////// +// NT Note: +// +// The following structures must match, field for field, the corresponding +// structures as declared in 'ddrawi.h.' We cannot simply use the same +// structures because the sub-structures such as DD_DIRECTDRAW_GLOBAL are +// different, and have to be properly typed for the drivers. +// +///////////////////////////////////////////////////////////////////////////// + +/**************************************************************************** + * + * DDHAL structures for Surface Object callbacks + * + ***************************************************************************/ + +/* + * structure for passing information to DDHAL Blt fn + */ +typedef struct _DD_BLTDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDDestSurface;// dest surface + RECTL rDest; // dest rect + PDD_SURFACE_LOCAL lpDDSrcSurface; // src surface + RECTL rSrc; // src rect + DWORD dwFlags; // blt flags + DWORD dwROPFlags; // ROP flags (valid for ROPS only) + DDBLTFX bltFX; // blt FX + HRESULT ddRVal; // return value + VOID* Blt; // Unused: Win95 compatibility + BOOL IsClipped; // clipped blt? + RECTL rOrigDest; // unclipped dest rect + // (only valid if IsClipped) + RECTL rOrigSrc; // unclipped src rect + // (only valid if IsClipped) + DWORD dwRectCnt; // count of dest rects + // (only valid if IsClipped) + LPRECT prDestRects; // array of dest rects + // (only valid if IsClipped) +} DD_BLTDATA; + +/* + * structure for passing information to DDHAL Lock fn + */ +typedef struct _DD_LOCKDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDSurface; // surface struct + DWORD bHasRect; // rArea is valid + RECTL rArea; // area being locked + LPVOID lpSurfData; // pointer to screen memory (return value) + HRESULT ddRVal; // return value + VOID* Lock; // Unused: Win95 compatibility + DWORD dwFlags; // DDLOCK flags +} DD_LOCKDATA; + +/* + * structure for passing information to DDHAL Unlock fn + */ +typedef struct _DD_UNLOCKDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDSurface; // surface struct + HRESULT ddRVal; // return value + VOID* Unlock; // Unused: Win95 compatibility +} DD_UNLOCKDATA; + +/* + * structure for passing information to DDHAL UpdateOverlay fn + */ +typedef struct _DD_UPDATEOVERLAYDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDDestSurface;// dest surface + RECTL rDest; // dest rect + PDD_SURFACE_LOCAL lpDDSrcSurface; // src surface + RECTL rSrc; // src rect + DWORD dwFlags; // flags + DDOVERLAYFX overlayFX; // overlay FX + HRESULT ddRVal; // return value + VOID* UpdateOverlay; // Unused: Win95 compatibility +} DD_UPDATEOVERLAYDATA; + +/* + * structure for passing information to DDHAL UpdateOverlay fn + */ +typedef struct _DD_SETOVERLAYPOSITIONDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDSrcSurface; // src surface + PDD_SURFACE_LOCAL lpDDDestSurface;// dest surface + LONG lXPos; // x position + LONG lYPos; // y position + HRESULT ddRVal; // return value + VOID* SetOverlayPosition; // Unused: Win95 compatibility +} DD_SETOVERLAYPOSITIONDATA; +/* + * structure for passing information to DDHAL SetPalette fn + */ +typedef struct _DD_SETPALETTEDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDSurface; // surface struct + PDD_PALETTE_GLOBAL lpDDPalette; // palette to set to surface + HRESULT ddRVal; // return value + VOID* SetPalette; // Unused: Win95 compatibility + BOOL Attach; // attach this palette? +} DD_SETPALETTEDATA; + +/* + * structure for passing information to DDHAL Flip fn + */ +typedef struct _DD_FLIPDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpSurfCurr; // current surface + PDD_SURFACE_LOCAL lpSurfTarg; // target surface (to flip to) + DWORD dwFlags; // flags + HRESULT ddRVal; // return value + VOID* Flip; // Unused: Win95 compatibility +} DD_FLIPDATA; + +/* + * structure for passing information to DDHAL DestroySurface fn + */ +typedef struct _DD_DESTROYSURFACEDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDSurface; // surface struct + HRESULT ddRVal; // return value + VOID* DestroySurface;// Unused: Win95 compatibility +} DD_DESTROYSURFACEDATA; + +/* + * structure for passing information to DDHAL SetClipList fn + */ +typedef struct _DD_SETCLIPLISTDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDSurface; // surface struct + HRESULT ddRVal; // return value + VOID* SetClipList; // Unused: Win95 compatibility +} DD_SETCLIPLISTDATA; + +/* + * structure for passing information to DDHAL AddAttachedSurface fn + */ +typedef struct _DD_ADDATTACHEDSURFACEDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDSurface; // surface struct + PDD_SURFACE_LOCAL lpSurfAttached; // surface to attach + HRESULT ddRVal; // return value + VOID* AddAttachedSurface; // Unused: Win95 compatibility +} DD_ADDATTACHEDSURFACEDATA; + +/* + * structure for passing information to DDHAL SetColorKey fn + */ +typedef struct _DD_SETCOLORKEYDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDSurface; // surface struct + DWORD dwFlags; // flags + DDCOLORKEY ckNew; // new color key + HRESULT ddRVal; // return value + VOID* SetColorKey; // Unused: Win95 compatibility +} DD_SETCOLORKEYDATA; + +/* + * structure for passing information to DDHAL GetBltStatus fn + */ +typedef struct _DD_GETBLTSTATUSDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDSurface; // surface struct + DWORD dwFlags; // flags + HRESULT ddRVal; // return value + VOID* GetBltStatus; // Unused: Win95 compatibility +} DD_GETBLTSTATUSDATA; + +/* + * structure for passing information to DDHAL GetFlipStatus fn + */ +typedef struct _DD_GETFLIPSTATUSDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACE_LOCAL lpDDSurface; // surface struct + DWORD dwFlags; // flags + HRESULT ddRVal; // return value + VOID* GetFlipStatus; // Unused: Win95 compatibility +} DD_GETFLIPSTATUSDATA; + +/**************************************************************************** + * + * DDHAL structures for Palette Object callbacks + * + ***************************************************************************/ + +/* + * structure for passing information to DDHAL DestroyPalette fn + */ +typedef struct _DD_DESTROYPALETTEDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_PALETTE_GLOBAL lpDDPalette; // palette struct + HRESULT ddRVal; // return value + VOID* DestroyPalette; // Unused: Win95 compatibility +} DD_DESTROYPALETTEDATA; + +/* + * structure for passing information to DDHAL SetEntries fn + */ +typedef struct _DD_SETENTRIESDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_PALETTE_GLOBAL lpDDPalette; // palette struct + DWORD dwBase; // base palette index + DWORD dwNumEntries; // number of palette entries + LPPALETTEENTRY lpEntries; // color table + HRESULT ddRVal; // return value + VOID* SetEntries; // Unused: Win95 compatibility +} DD_SETENTRIESDATA; + +/**************************************************************************** + * + * DDHAL structures for Driver Object callbacks + * + ***************************************************************************/ + +typedef DDSURFACEDESC* PDD_SURFACEDESC; + +/* + * structure for passing information to DDHAL CreateSurface fn + */ +typedef struct _DD_CREATESURFACEDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACEDESC lpDDSurfaceDesc;// description of surface being created + PDD_SURFACE_LOCAL *lplpSList; // list of created surface objects + DWORD dwSCnt; // number of surfaces in SList + HRESULT ddRVal; // return value + VOID* CreateSurface; // Unused: Win95 compatibility +} DD_CREATESURFACEDATA; + +/* + * structure for passing information to DDHAL CanCreateSurface fn + */ +typedef struct _DD_CANCREATESURFACEDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_SURFACEDESC lpDDSurfaceDesc; // description of surface being created + DWORD bIsDifferentPixelFormat;// pixel format differs from primary surface + HRESULT ddRVal; // return value + VOID* CanCreateSurface; // Unused: Win95 compatibility +} DD_CANCREATESURFACEDATA; + +/* + * structure for passing information to DDHAL CreatePalette fn + */ +typedef struct _DD_CREATEPALETTEDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + PDD_PALETTE_GLOBAL lpDDPalette; // ddraw palette struct + LPPALETTEENTRY lpColorTable; // colors to go in palette + HRESULT ddRVal; // return value + VOID* CreatePalette; // Unused: Win95 compatibility + BOOL is_excl; // process has exclusive mode +} DD_CREATEPALETTEDATA; + +/* + * Return if the vertical blank is in progress + */ +#define DDWAITVB_I_TESTVB 0x80000006l + +/* + * structure for passing information to DDHAL WaitForVerticalBlank fn + */ +typedef struct _DD_WAITFORVERTICALBLANKDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + DWORD dwFlags; // flags + DWORD bIsInVB; // is in vertical blank + DWORD hEvent; // event + HRESULT ddRVal; // return value + VOID* WaitForVerticalBlank; // Unused: Win95 compatibility +} DD_WAITFORVERTICALBLANKDATA; + +/* + * structure for passing information to DDHAL driver SetColorKey fn + */ +typedef struct _DD_DRVSETCOLORKEYDATA +{ + PDD_SURFACE_LOCAL lpDDSurface; // surface struct + DWORD dwFlags; // flags + DDCOLORKEY ckNew; // new color key + HRESULT ddRVal; // return value + VOID* SetColorKey; // Unused: Win95 compatibility +} DD_DRVSETCOLORKEYDATA; + +/* + * structure for passing information to DDHAL GetScanLine fn + */ +typedef struct _DD_GETSCANLINEDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + DWORD dwScanLine; // returned scan line + HRESULT ddRVal; // return value + VOID* GetScanLine; // Unused: Win95 compatibility +} DD_GETSCANLINEDATA; + +/* + * structure for passing information to DDHAL MapMemory fn + */ +typedef struct _DD_MAPMEMORYDATA +{ + PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct + BOOL bMap; // TRUE if map; FALSe if un-map + HANDLE hProcess; // process handle + FLATPTR fpProcess; // returned address in process' address space + HRESULT ddRVal; // return value +} DD_MAPMEMORYDATA; + +#ifdef __cplusplus +}; +#endif + +#endif |