2005-08-08 13:29:50 +00:00
|
|
|
#ifndef __DDRAW_PRIVATE
|
|
|
|
#define __DDRAW_PRIVATE
|
|
|
|
|
|
|
|
/********* Includes *********/
|
|
|
|
|
|
|
|
#include <windows.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <ddraw.h>
|
2005-12-01 21:37:19 +00:00
|
|
|
#include <ddrawi.h>
|
|
|
|
#include <d3dhal.h>
|
2005-08-08 13:29:50 +00:00
|
|
|
#include <ddrawgdi.h>
|
2005-10-23 15:24:56 +00:00
|
|
|
|
2005-08-08 13:29:50 +00:00
|
|
|
/******** Main Object ********/
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
2005-11-05 15:05:31 +00:00
|
|
|
/* Setup the Vtbl COM table */
|
2005-08-08 13:29:50 +00:00
|
|
|
IDirectDraw7Vtbl* lpVtbl;
|
2005-10-24 16:29:36 +00:00
|
|
|
IDirectDraw4Vtbl* lpVtbl_v4;
|
|
|
|
IDirectDraw2Vtbl* lpVtbl_v2;
|
|
|
|
IDirectDrawVtbl* lpVtbl_v1;
|
|
|
|
|
2005-11-05 15:05:31 +00:00
|
|
|
/* The main struct that contain all info from the HAL and HEL */
|
2005-08-25 15:31:28 +00:00
|
|
|
DDRAWI_DIRECTDRAW_GBL DirectDrawGlobal;
|
2005-11-05 15:05:31 +00:00
|
|
|
|
|
|
|
/* ExclusiveOwner */
|
|
|
|
DDRAWI_DIRECTDRAW_LCL ExclusiveOwner;
|
|
|
|
|
|
|
|
/* MISC info that will be remove in futuer */
|
2005-10-29 23:28:12 +00:00
|
|
|
DDHAL_DDMISCELLANEOUSCALLBACKS Misc2Callback;
|
2005-08-09 13:57:03 +00:00
|
|
|
DDHALINFO HalInfo;
|
2005-11-05 15:05:31 +00:00
|
|
|
|
|
|
|
DWORD cooperative_level;
|
2005-08-08 13:29:50 +00:00
|
|
|
int Height, Width, Bpp;
|
|
|
|
|
2005-11-04 16:26:13 +00:00
|
|
|
BOOL InitializeDraw;
|
2005-08-08 13:29:50 +00:00
|
|
|
|
2005-11-05 15:05:31 +00:00
|
|
|
|
2005-08-08 13:29:50 +00:00
|
|
|
} IDirectDrawImpl;
|
|
|
|
|
|
|
|
/******** Surface Object ********/
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
IDirectDrawSurface7Vtbl* lpVtbl;
|
2005-10-24 16:29:36 +00:00
|
|
|
IDirectDrawSurface3Vtbl* lpVtbl_v3;
|
2005-10-30 15:45:40 +00:00
|
|
|
|
2005-08-08 13:29:50 +00:00
|
|
|
IDirectDrawImpl* owner;
|
|
|
|
|
2005-10-30 16:14:42 +00:00
|
|
|
DDRAWI_DDRAWSURFACE_GBL Global;
|
|
|
|
DDRAWI_DDRAWSURFACE_MORE More;
|
|
|
|
DDRAWI_DDRAWSURFACE_LCL Local;
|
2005-10-31 20:08:24 +00:00
|
|
|
DDRAWI_DDRAWSURFACE_LCL *pLocal[2];
|
2005-11-01 09:50:29 +00:00
|
|
|
DDSURFACEDESC ddsd;
|
2005-10-30 16:14:42 +00:00
|
|
|
|
2005-08-08 13:29:50 +00:00
|
|
|
} IDirectDrawSurfaceImpl;
|
|
|
|
|
|
|
|
/******** Clipper Object ********/
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
IDirectDrawClipperVtbl* lpVtbl;
|
2005-10-02 13:47:48 +00:00
|
|
|
LONG ref;
|
2005-08-08 13:29:50 +00:00
|
|
|
|
|
|
|
IDirectDrawImpl* owner;
|
|
|
|
|
|
|
|
} IDirectDrawClipperImpl;
|
|
|
|
|
|
|
|
/******** Palette Object ********/
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
IDirectDrawPaletteVtbl* lpVtbl;
|
2005-10-02 13:47:48 +00:00
|
|
|
LONG ref;
|
2005-08-08 13:29:50 +00:00
|
|
|
|
|
|
|
IDirectDrawImpl* owner;
|
|
|
|
|
2005-10-23 17:53:19 +00:00
|
|
|
} IDirectDrawPaletteImpl;
|
2005-08-08 13:29:50 +00:00
|
|
|
|
|
|
|
/*********** VTables ************/
|
|
|
|
|
2005-10-24 16:29:36 +00:00
|
|
|
extern IDirectDraw7Vtbl DirectDraw7_Vtable;
|
|
|
|
extern IDirectDrawVtbl DDRAW_IDirectDraw_VTable;
|
|
|
|
extern IDirectDraw2Vtbl DDRAW_IDirectDraw2_VTable;
|
|
|
|
extern IDirectDraw4Vtbl DDRAW_IDirectDraw4_VTable;
|
|
|
|
|
|
|
|
extern IDirectDrawSurface7Vtbl DirectDrawSurface7_Vtable;
|
|
|
|
extern IDirectDrawSurface3Vtbl DDRAW_IDDS3_Thunk_VTable;
|
|
|
|
|
2005-10-23 21:29:30 +00:00
|
|
|
extern IDirectDrawPaletteVtbl DirectDrawPalette_Vtable;
|
|
|
|
extern IDirectDrawClipperVtbl DirectDrawClipper_Vtable;
|
|
|
|
extern IDirectDrawColorControlVtbl DirectDrawColorControl_Vtable;
|
|
|
|
extern IDirectDrawGammaControlVtbl DirectDrawGammaControl_Vtable;
|
2005-08-08 13:29:50 +00:00
|
|
|
|
|
|
|
/********* Prototypes **********/
|
|
|
|
|
2005-10-30 12:53:32 +00:00
|
|
|
HRESULT Hal_DirectDraw_Initialize (LPDIRECTDRAW7 );
|
|
|
|
HRESULT Hal_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 );
|
|
|
|
VOID Hal_DirectDraw_Release (LPDIRECTDRAW7 );
|
|
|
|
HRESULT Hal_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7, LPDDSCAPS2, LPDWORD, LPDWORD );
|
|
|
|
HRESULT Hal_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7, DWORD, HANDLE );
|
|
|
|
HRESULT Hal_DirectDraw_GetScanLine(LPDIRECTDRAW7 , LPDWORD );
|
|
|
|
HRESULT Hal_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 );
|
|
|
|
HRESULT Hal_DirectDraw_SetDisplayMode (LPDIRECTDRAW7, DWORD, DWORD, DWORD, DWORD, DWORD );
|
|
|
|
HRESULT Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
|
2005-11-01 18:27:09 +00:00
|
|
|
HRESULT Hal_DDrawSurface_Initialize (LPDIRECTDRAWSURFACE7 , LPDIRECTDRAW , LPDDSURFACEDESC2 );
|
2005-10-30 12:53:32 +00:00
|
|
|
|
|
|
|
|
|
|
|
HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 );
|
|
|
|
HRESULT Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 );
|
|
|
|
VOID Hel_DirectDraw_Release (LPDIRECTDRAW7 );
|
|
|
|
HRESULT Hel_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 , LPDDSCAPS2 ddsaps, LPDWORD , LPDWORD );
|
|
|
|
HRESULT Hel_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7, DWORD, HANDLE );
|
|
|
|
HRESULT Hel_DirectDraw_GetScanLine(LPDIRECTDRAW7 , LPDWORD );
|
|
|
|
HRESULT Hel_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 );
|
|
|
|
HRESULT Hel_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 , DWORD , DWORD ,DWORD , DWORD , DWORD );
|
|
|
|
HRESULT Hel_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
|
2005-11-01 18:27:09 +00:00
|
|
|
HRESULT Hel_DDrawSurface_Initialize (LPDIRECTDRAWSURFACE7 , LPDIRECTDRAW , LPDDSURFACEDESC2 );
|
2005-10-30 01:06:56 +00:00
|
|
|
|
2005-10-23 17:53:19 +00:00
|
|
|
/*********** Macros ***********/
|
|
|
|
|
2005-10-29 21:07:04 +00:00
|
|
|
#define DX_STUB \
|
|
|
|
static BOOL firstcall = TRUE; \
|
|
|
|
if (firstcall) \
|
|
|
|
{ \
|
|
|
|
char buffer[1024]; \
|
|
|
|
sprintf ( buffer, "Function %s is not implemented yet (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \
|
|
|
|
OutputDebugStringA(buffer); \
|
|
|
|
firstcall = FALSE; \
|
|
|
|
} \
|
|
|
|
return DDERR_UNSUPPORTED;
|
2005-10-23 17:53:19 +00:00
|
|
|
|
2005-08-08 13:29:50 +00:00
|
|
|
#endif /* __DDRAW_PRIVATE */
|