Remove Hal_DDrawSurface_Initialize, Hel_DDrawSurface_Initialize and make sure DDrawSu...
[reactos.git] / reactos / dll / directx / ddraw / rosdraw.h
1 #ifndef __DDRAW_PRIVATE
2 #define __DDRAW_PRIVATE
3
4 /********* Includes *********/
5
6 #include <windows.h>
7 #include <stdio.h>
8 #include <ddraw.h>
9 #include <ddrawi.h>
10 #include <d3dhal.h>
11 #include <ddrawgdi.h>
12
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 ********/
17
18 typedef struct
19 {
20 /* Setup the Vtbl COM table */
21 IDirectDraw7Vtbl* lpVtbl;
22 IDirectDraw4Vtbl* lpVtbl_v4;
23 IDirectDraw2Vtbl* lpVtbl_v2;
24 IDirectDrawVtbl* lpVtbl_v1;
25
26 /* The main struct that contain all info from the HAL and HEL */
27 HDC hdc;
28 DDRAWI_DIRECTDRAW_GBL mDDrawGlobal;
29 DDRAWI_DIRECTDRAW_LCL mDDrawLocal;
30 DDHALINFO mHALInfo;
31
32 DDHAL_CALLBACKS mCallbacks;
33 DDHAL_DDEXEBUFCALLBACKS mD3dBufferCallbacks;
34 D3DHAL_CALLBACKS mD3dCallbacks;
35 D3DHAL_GLOBALDRIVERDATA mD3dDriverData;
36
37 UINT mcModeInfos;
38 DDHALMODEINFO *mpModeInfos;
39
40 UINT mcvmList;
41 VIDMEM *mpvmList;
42
43 UINT mcFourCC;
44 DWORD *mpFourCC;
45
46 UINT mcTextures;
47 DDSURFACEDESC *mpTextures;
48
49
50 /* ExclusiveOwner */
51 DDRAWI_DIRECTDRAW_LCL ExclusiveOwner;
52
53 DWORD cooperative_level;
54
55 BOOL InitializeDraw;
56
57 } IDirectDrawImpl;
58
59 /******** Surface Object ********/
60
61 typedef struct
62 {
63 IDirectDrawSurface7Vtbl* lpVtbl;
64 IDirectDrawSurface3Vtbl* lpVtbl_v3;
65
66 IDirectDrawImpl* owner;
67
68 DDRAWI_DDRAWSURFACE_GBL Global;
69 DDRAWI_DDRAWSURFACE_MORE More;
70 DDRAWI_DDRAWSURFACE_LCL Local;
71 DDRAWI_DDRAWSURFACE_LCL *pLocal[2];
72 DDSURFACEDESC ddsd;
73
74 } IDirectDrawSurfaceImpl;
75
76 /******** Clipper Object ********/
77
78 typedef struct
79 {
80 IDirectDrawClipperVtbl* lpVtbl;
81 LONG ref;
82
83 IDirectDrawImpl* owner;
84
85 } IDirectDrawClipperImpl;
86
87 /******** Palette Object ********/
88
89 typedef struct
90 {
91 IDirectDrawPaletteVtbl* lpVtbl;
92 LONG ref;
93
94 IDirectDrawImpl* owner;
95
96 } IDirectDrawPaletteImpl;
97
98 /*********** VTables ************/
99
100 extern IDirectDraw7Vtbl DirectDraw7_Vtable;
101 extern IDirectDrawVtbl DDRAW_IDirectDraw_VTable;
102 extern IDirectDraw2Vtbl DDRAW_IDirectDraw2_VTable;
103 extern IDirectDraw4Vtbl DDRAW_IDirectDraw4_VTable;
104
105 extern IDirectDrawSurface7Vtbl DirectDrawSurface7_Vtable;
106 extern IDirectDrawSurface3Vtbl DDRAW_IDDS3_Thunk_VTable;
107
108 extern IDirectDrawPaletteVtbl DirectDrawPalette_Vtable;
109 extern IDirectDrawClipperVtbl DirectDrawClipper_Vtable;
110 extern IDirectDrawColorControlVtbl DirectDrawColorControl_Vtable;
111 extern IDirectDrawGammaControlVtbl DirectDrawGammaControl_Vtable;
112
113 /********* Prototypes **********/
114
115 HRESULT Hal_DirectDraw_Initialize (LPDIRECTDRAW7 );
116 HRESULT Hal_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 );
117 VOID Hal_DirectDraw_Release (LPDIRECTDRAW7 );
118 HRESULT Hal_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7, LPDDSCAPS2, LPDWORD, LPDWORD );
119 HRESULT Hal_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7, DWORD, HANDLE );
120 HRESULT Hal_DirectDraw_GetScanLine(LPDIRECTDRAW7 , LPDWORD );
121 HRESULT Hal_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 );
122 HRESULT Hal_DirectDraw_SetDisplayMode (LPDIRECTDRAW7, DWORD, DWORD, DWORD, DWORD, DWORD );
123 HRESULT Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
124
125
126
127 HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 );
128 HRESULT Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 );
129 VOID Hel_DirectDraw_Release (LPDIRECTDRAW7 );
130 HRESULT Hel_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 , LPDDSCAPS2 ddsaps, LPDWORD , LPDWORD );
131 HRESULT Hel_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7, DWORD, HANDLE );
132 HRESULT Hel_DirectDraw_GetScanLine(LPDIRECTDRAW7 , LPDWORD );
133 HRESULT Hel_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 );
134 HRESULT Hel_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 , DWORD , DWORD ,DWORD , DWORD , DWORD );
135 HRESULT Hel_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
136
137
138 /*********** Macros ***********/
139
140 #define DX_STUB \
141 static BOOL firstcall = TRUE; \
142 if (firstcall) \
143 { \
144 char buffer[1024]; \
145 sprintf ( buffer, "Function %s is not implemented yet (%s:%d)\n", __FUNCTION__,__FILE__,__LINE__ ); \
146 OutputDebugStringA(buffer); \
147 firstcall = FALSE; \
148 } \
149 return DDERR_UNSUPPORTED;
150
151 #endif /* __DDRAW_PRIVATE */