1 #ifndef __DDRAW_PRIVATE
2 #define __DDRAW_PRIVATE
4 /********* Includes *********/
13 /* own macro to alloc memmory */
14 #define DxHeapMemAlloc(m) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, m)
15 #define DxHeapMemFree(p) HeapFree(GetProcessHeap(), 0, p);
16 /******** Main Object ********/
20 /* Setup the Vtbl COM table */
21 IDirectDraw7Vtbl
* lpVtbl
;
22 IDirectDraw4Vtbl
* lpVtbl_v4
;
23 IDirectDraw2Vtbl
* lpVtbl_v2
;
24 IDirectDrawVtbl
* lpVtbl_v1
;
26 /* The main struct that contain all info from the HAL and HEL */
28 DDRAWI_DIRECTDRAW_GBL mDDrawGlobal
;
29 DDRAWI_DIRECTDRAW_LCL mDDrawLocal
;
32 DDHAL_CALLBACKS mCallbacks
;
33 DDHAL_DDEXEBUFCALLBACKS mD3dBufferCallbacks
;
34 D3DHAL_CALLBACKS mD3dCallbacks
;
35 D3DHAL_GLOBALDRIVERDATA mD3dDriverData
;
38 DDHALMODEINFO
*mpModeInfos
;
47 DDSURFACEDESC
*mpTextures
;
54 DWORD cooperative_level
;
60 DWORD HELMemoryAvilable
;
64 /******** Surface Object ********/
67 DDRAWI_DDRAWSURFACE_GBL mPrimaryGlobal
;
68 DDRAWI_DDRAWSURFACE_MORE mPrimaryMore
;
69 DDRAWI_DDRAWSURFACE_LCL mPrimaryLocal
;
70 DDRAWI_DDRAWSURFACE_LCL
*mpPrimaryLocals
[1];
72 DDRAWI_DDRAWCLIPPER_LCL mPrimaryClipperLocal
;
73 DDRAWI_DDRAWCLIPPER_GBL mPrimaryClipperGlobal
;
75 DDSURFACEDESC mddsdPrimary
;
80 IDirectDrawSurface7Vtbl
* lpVtbl
;
81 IDirectDrawSurface3Vtbl
* lpVtbl_v3
;
83 IDirectDrawImpl
* owner
;
85 DDRAWI_DDRAWSURFACE_GBL Global
;
86 DDRAWI_DDRAWSURFACE_MORE More
;
87 DDRAWI_DDRAWSURFACE_LCL Local
;
88 DDRAWI_DDRAWSURFACE_LCL
*pLocal
[2];
93 } IDirectDrawSurfaceImpl
;
99 /******** Clipper Object ********/
103 IDirectDrawClipperVtbl
* lpVtbl
;
106 IDirectDrawImpl
* owner
;
108 } IDirectDrawClipperImpl
;
110 /******** Palette Object ********/
114 IDirectDrawPaletteVtbl
* lpVtbl
;
117 IDirectDrawImpl
* owner
;
119 } IDirectDrawPaletteImpl
;
121 /*********** VTables ************/
123 extern IDirectDraw7Vtbl DirectDraw7_Vtable
;
124 extern IDirectDrawVtbl DDRAW_IDirectDraw_VTable
;
125 extern IDirectDraw2Vtbl DDRAW_IDirectDraw2_VTable
;
126 extern IDirectDraw4Vtbl DDRAW_IDirectDraw4_VTable
;
128 extern IDirectDrawSurface7Vtbl DirectDrawSurface7_Vtable
;
129 extern IDirectDrawSurface3Vtbl DDRAW_IDDS3_Thunk_VTable
;
131 extern IDirectDrawPaletteVtbl DirectDrawPalette_Vtable
;
132 extern IDirectDrawClipperVtbl DirectDrawClipper_Vtable
;
133 extern IDirectDrawColorControlVtbl DirectDrawColorControl_Vtable
;
134 extern IDirectDrawGammaControlVtbl DirectDrawGammaControl_Vtable
;
136 /********* Prototypes **********/
138 HRESULT WINAPI
Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface
, LPDDSCAPS2 ddscaps
, LPDWORD total
, LPDWORD free
);
140 HRESULT
Hal_DirectDraw_Initialize (LPDIRECTDRAW7
);
141 HRESULT
Hal_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7
);
142 VOID
Hal_DirectDraw_Release (LPDIRECTDRAW7
);
143 HRESULT
Hal_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7
, LPDDSCAPS2
, LPDWORD
, LPDWORD
);
144 HRESULT
Hal_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7
, DWORD
, HANDLE
);
145 HRESULT
Hal_DirectDraw_GetScanLine(LPDIRECTDRAW7
, LPDWORD
);
146 HRESULT
Hal_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7
);
147 HRESULT
Hal_DirectDraw_SetDisplayMode (LPDIRECTDRAW7
, DWORD
, DWORD
, DWORD
, DWORD
, DWORD
);
148 HRESULT
Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7
, LPRECT
, LPDIRECTDRAWSURFACE7
, LPRECT
, DWORD
, LPDDBLTFX
);
149 HRESULT
Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface
, LPDDSURFACEDESC2 pDDSD
, IDirectDrawSurfaceImpl
*ppSurf
, IUnknown
*pUnkOuter
);
150 HRESULT
Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface
, LPRECT prect
, LPDDSURFACEDESC2 pDDSD
, DWORD flags
, HANDLE event
);
155 HRESULT
Hel_DirectDraw_Initialize (LPDIRECTDRAW7
);
156 HRESULT
Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7
);
157 VOID
Hel_DirectDraw_Release (LPDIRECTDRAW7
);
158 HRESULT
Hel_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7
, LPDDSCAPS2 ddsaps
, LPDWORD
, LPDWORD
);
159 HRESULT
Hel_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7
, DWORD
, HANDLE
);
160 HRESULT
Hel_DirectDraw_GetScanLine(LPDIRECTDRAW7
, LPDWORD
);
161 HRESULT
Hel_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7
);
162 HRESULT
Hel_DirectDraw_SetDisplayMode (LPDIRECTDRAW7
, DWORD
, DWORD
,DWORD
, DWORD
, DWORD
);
163 HRESULT
Hel_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7
, LPRECT
, LPDIRECTDRAWSURFACE7
, LPRECT
, DWORD
, LPDDBLTFX
);
164 HRESULT
Hel_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface
, LPDDSURFACEDESC2 pDDSD
, LPDIRECTDRAWSURFACE7
*ppSurf
, IUnknown
*pUnkOuter
);
165 HRESULT
Hel_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface
, LPRECT prect
, LPDDSURFACEDESC2 pDDSD
, DWORD flags
, HANDLE event
);
167 /* Setting for HEL should be move to ros special reg key ? */
169 /* setup how much graphic memory should hel be limit, set it now to 64MB */
170 #define HEL_GRAPHIC_MEMORY_MAX 67108864
172 /*********** Macros ***********/
175 static BOOL firstcall = TRUE; \
179 sprintf ( buffer, "Function %s is not implemented yet (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \
180 OutputDebugStringA(buffer); \
183 return DDERR_UNSUPPORTED;
185 #define DX_STUB_str(x) \
186 static BOOL firstcall = TRUE; \
190 sprintf ( buffer, "Function %s %s (%s:%d)\n", __FUNCTION__,x,__FILE__,__LINE__ ); \
191 OutputDebugStringA(buffer); \
195 #endif /* __DDRAW_PRIVATE */