split up CreateSurface to hal and hel interface
[reactos.git] / reactos / lib / ddraw / main / surface_main.c
1 /* $Id$
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS
5 * FILE: lib/ddraw/main/surface.c
6 * PURPOSE: IDirectDrawSurface7 Implementation
7 * PROGRAMMER: Magnus Olsen, Maarten Bosma
8 *
9 */
10
11 #include "rosdraw.h"
12
13
14 HRESULT WINAPI Main_DDrawSurface_Initialize (LPDIRECTDRAWSURFACE7 iface, LPDIRECTDRAW pDD, LPDDSURFACEDESC2 pDDSD2)
15 {
16 IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
17
18 /* Call the Hal CreateSurface */
19 if (This->owner->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_CREATESURFACE)
20 {
21 return Hal_DDrawSurface_Initialize (iface, pDD, pDDSD2);
22 }
23
24 /* Call Hel if Hal of CreateSurface is not supported */
25 return Hel_DDrawSurface_Initialize (iface, pDD, pDDSD2);
26 }
27
28 ULONG WINAPI Main_DDrawSurface_AddRef(LPDIRECTDRAWSURFACE7 iface)
29 {
30 IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
31
32 return InterlockedIncrement((PLONG)&This->owner->DirectDrawGlobal.dsList->dwIntRefCnt);
33 }
34
35 ULONG WINAPI Main_DDrawSurface_Release(LPDIRECTDRAWSURFACE7 iface)
36 {
37 IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
38 ULONG ref = InterlockedDecrement((PLONG)&This->owner->DirectDrawGlobal.dsList->dwIntRefCnt);
39
40 if (ref == 0)
41 HeapFree(GetProcessHeap(), 0, This);
42
43 return ref;
44 }
45
46 /**** Stubs ****/
47
48 HRESULT WINAPI
49 Main_DDrawSurface_QueryInterface(LPDIRECTDRAWSURFACE7 iface, REFIID riid,
50 LPVOID* ppObj)
51 {
52 return E_NOINTERFACE;
53 }
54
55 HRESULT WINAPI Main_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rdst,
56 LPDIRECTDRAWSURFACE7 src, LPRECT rsrc, DWORD dwFlags, LPDDBLTFX lpbltfx)
57 {
58 IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
59
60 DX_STUB;
61
62 if (This->DirectDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_FLIPTOGDISURFACE)
63 {
64 return Hal_DDrawSurface_Blt( iface, rdst, src, rsrc, dwFlags, lpbltfx);
65 }
66
67 return Hel_DDrawSurface_Blt( iface, rdst, src, rsrc, dwFlags, lpbltfx);
68 }
69
70
71 HRESULT WINAPI Main_DDrawSurface_Lock (LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
72 LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event)
73 {
74 DX_STUB;
75 }
76
77 HRESULT WINAPI Main_DDrawSurface_Unlock (LPDIRECTDRAWSURFACE7 iface, LPRECT pRect)
78 {
79 DX_STUB;
80 }
81
82 HRESULT WINAPI
83 Main_DDrawSurface_AddAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
84 LPDIRECTDRAWSURFACE7 pAttach)
85 {
86 DX_STUB;
87 }
88
89 /* MSDN: "not currently implemented." */
90 HRESULT WINAPI
91 Main_DDrawSurface_AddOverlayDirtyRect(LPDIRECTDRAWSURFACE7 iface,
92 LPRECT pRect)
93 {
94 DX_STUB;
95 }
96
97 HRESULT WINAPI
98 Main_DDrawSurface_BltFast(LPDIRECTDRAWSURFACE7 iface, DWORD dstx,
99 DWORD dsty, LPDIRECTDRAWSURFACE7 src,
100 LPRECT rsrc, DWORD trans)
101 {
102 DX_STUB;
103 }
104
105 HRESULT WINAPI
106 Main_DDrawSurface_Restore(LPDIRECTDRAWSURFACE7 iface)
107 {
108 DX_STUB;
109 }
110
111 /* MSDN: "not currently implemented." */
112 HRESULT WINAPI
113 Main_DDrawSurface_BltBatch(LPDIRECTDRAWSURFACE7 iface,
114 LPDDBLTBATCH pBatch, DWORD dwCount,
115 DWORD dwFlags)
116 {
117 DX_STUB;
118 }
119
120 HRESULT WINAPI
121 Main_DDrawSurface_ChangeUniquenessValue(LPDIRECTDRAWSURFACE7 iface)
122 {
123 DX_STUB;
124 }
125
126 HRESULT WINAPI
127 Main_DDrawSurface_DeleteAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
128 DWORD dwFlags,
129 LPDIRECTDRAWSURFACE7 pAttach)
130 {
131 DX_STUB;
132 }
133
134 HRESULT WINAPI
135 Main_DDrawSurface_EnumAttachedSurfaces(LPDIRECTDRAWSURFACE7 iface,
136 LPVOID context,
137 LPDDENUMSURFACESCALLBACK7 cb)
138 {
139 DX_STUB;
140 }
141
142 HRESULT WINAPI
143 Main_DDrawSurface_EnumOverlayZOrders(LPDIRECTDRAWSURFACE7 iface,
144 DWORD dwFlags, LPVOID context,
145 LPDDENUMSURFACESCALLBACK7 cb)
146 {
147 DX_STUB;
148 }
149
150 HRESULT WINAPI
151 Main_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface,
152 LPDIRECTDRAWSURFACE7 override, DWORD dwFlags)
153 {
154 DX_STUB;
155 }
156
157 HRESULT WINAPI
158 Main_DDrawSurface_FreePrivateData(LPDIRECTDRAWSURFACE7 iface, REFGUID tag)
159 {
160 DX_STUB;
161 }
162
163 HRESULT WINAPI
164 Main_DDrawSurface_GetAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
165 LPDDSCAPS2 pCaps,
166 LPDIRECTDRAWSURFACE7* ppSurface)
167 {
168 DX_STUB;
169 }
170
171 HRESULT WINAPI
172 Main_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
173 {
174 DX_STUB;
175 }
176
177 HRESULT WINAPI
178 Main_DDrawSurface_GetCaps(LPDIRECTDRAWSURFACE7 iface, LPDDSCAPS2 pCaps)
179 {
180 DX_STUB;
181 }
182
183 HRESULT WINAPI
184 Main_DDrawSurface_GetClipper(LPDIRECTDRAWSURFACE7 iface,
185 LPDIRECTDRAWCLIPPER* ppClipper)
186 {
187 DX_STUB;
188 }
189
190 HRESULT WINAPI
191 Main_DDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags,
192 LPDDCOLORKEY pCKey)
193 {
194 DX_STUB;
195 }
196
197 HRESULT WINAPI
198 Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC)
199 {
200 DX_STUB;
201 }
202
203 HRESULT WINAPI
204 Main_DDrawSurface_GetDDInterface(LPDIRECTDRAWSURFACE7 iface, LPVOID* pDD)
205 {
206 DX_STUB;
207 }
208 HRESULT WINAPI
209 Main_DDrawSurface_GetFlipStatus(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
210 {
211 DX_STUB;
212 }
213
214 HRESULT WINAPI
215 Main_DDrawSurface_GetLOD(LPDIRECTDRAWSURFACE7 iface, LPDWORD pdwMaxLOD)
216 {
217 DX_STUB;
218 }
219
220 HRESULT WINAPI
221 Main_DDrawSurface_GetOverlayPosition(LPDIRECTDRAWSURFACE7 iface,
222 LPLONG pX, LPLONG pY)
223 {
224 DX_STUB;
225 }
226 HRESULT WINAPI
227 Main_DDrawSurface_GetPalette(LPDIRECTDRAWSURFACE7 iface,
228 LPDIRECTDRAWPALETTE* ppPalette)
229 {
230 DX_STUB;
231 }
232
233 HRESULT WINAPI
234 Main_DDrawSurface_GetPixelFormat(LPDIRECTDRAWSURFACE7 iface,
235 LPDDPIXELFORMAT pDDPixelFormat)
236 {
237 DX_STUB;
238 }
239
240 HRESULT WINAPI
241 Main_DDrawSurface_GetPriority(LPDIRECTDRAWSURFACE7 iface,
242 LPDWORD pdwPriority)
243 {
244 DX_STUB;
245 }
246
247 HRESULT WINAPI
248 Main_DDrawSurface_GetPrivateData(LPDIRECTDRAWSURFACE7 iface,
249 REFGUID tag, LPVOID pBuffer,
250 LPDWORD pcbBufferSize)
251 {
252 DX_STUB;
253 }
254
255 HRESULT WINAPI
256 Main_DDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface,
257 LPDDSURFACEDESC2 pDDSD)
258 {
259 DX_STUB;
260 }
261
262 HRESULT WINAPI
263 Main_DDrawSurface_GetUniquenessValue(LPDIRECTDRAWSURFACE7 iface,
264 LPDWORD pValue)
265 {
266 DX_STUB;
267 }
268
269 HRESULT WINAPI
270 Main_DDrawSurface_IsLost(LPDIRECTDRAWSURFACE7 iface)
271 {
272 DX_STUB;
273 }
274
275 HRESULT WINAPI
276 Main_DDrawSurface_PageLock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
277 {
278 DX_STUB;
279 }
280
281 HRESULT WINAPI
282 Main_DDrawSurface_PageUnlock(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
283 {
284 DX_STUB;
285 }
286
287 HRESULT WINAPI
288 Main_DDrawSurface_ReleaseDC(LPDIRECTDRAWSURFACE7 iface, HDC hDC)
289 {
290 DX_STUB;
291 }
292
293 HRESULT WINAPI
294 Main_DDrawSurface_SetClipper (LPDIRECTDRAWSURFACE7 iface,
295 LPDIRECTDRAWCLIPPER pDDClipper)
296 {
297 DX_STUB;
298 }
299
300 HRESULT WINAPI
301 Main_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7 iface,
302 DWORD dwFlags, LPDDCOLORKEY pCKey)
303 {
304 DX_STUB;
305 }
306
307 HRESULT WINAPI
308 Main_DDrawSurface_SetLOD (LPDIRECTDRAWSURFACE7 iface, DWORD dwMaxLOD)
309 {
310 DX_STUB;
311 }
312
313 HRESULT WINAPI
314 Main_DDrawSurface_SetOverlayPosition (LPDIRECTDRAWSURFACE7 iface,
315 LONG X, LONG Y)
316 {
317 DX_STUB;
318 }
319
320 HRESULT WINAPI
321 Main_DDrawSurface_SetPalette (LPDIRECTDRAWSURFACE7 iface,
322 LPDIRECTDRAWPALETTE pPalette)
323 {
324 DX_STUB;
325 }
326
327 HRESULT WINAPI
328 Main_DDrawSurface_SetPriority (LPDIRECTDRAWSURFACE7 iface,
329 DWORD dwPriority)
330 {
331 DX_STUB;
332 }
333
334 HRESULT WINAPI
335 Main_DDrawSurface_SetPrivateData (LPDIRECTDRAWSURFACE7 iface,
336 REFGUID tag, LPVOID pData,
337 DWORD cbSize, DWORD dwFlags)
338 {
339 DX_STUB;
340 }
341
342 HRESULT WINAPI
343 Main_DDrawSurface_UpdateOverlay (LPDIRECTDRAWSURFACE7 iface,
344 LPRECT pSrcRect,
345 LPDIRECTDRAWSURFACE7 pDstSurface,
346 LPRECT pDstRect, DWORD dwFlags,
347 LPDDOVERLAYFX pFX)
348 {
349 DX_STUB;
350 }
351
352 /* MSDN: "not currently implemented." */
353 HRESULT WINAPI
354 Main_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface,
355 DWORD dwFlags)
356 {
357 DX_STUB;
358 }
359
360 HRESULT WINAPI Main_DDrawSurface_UpdateOverlayZOrder (LPDIRECTDRAWSURFACE7 iface,
361 DWORD dwFlags, LPDIRECTDRAWSURFACE7 pDDSRef)
362 {
363 DX_STUB;
364 }
365
366 IDirectDrawSurface7Vtbl DirectDrawSurface7_Vtable =
367 {
368 Main_DDrawSurface_QueryInterface,
369 Main_DDrawSurface_AddRef,
370 Main_DDrawSurface_Release,
371 Main_DDrawSurface_AddAttachedSurface,
372 Main_DDrawSurface_AddOverlayDirtyRect,
373 Main_DDrawSurface_Blt,
374 Main_DDrawSurface_BltBatch,
375 Main_DDrawSurface_BltFast,
376 Main_DDrawSurface_DeleteAttachedSurface,
377 Main_DDrawSurface_EnumAttachedSurfaces,
378 Main_DDrawSurface_EnumOverlayZOrders,
379 Main_DDrawSurface_Flip,
380 Main_DDrawSurface_GetAttachedSurface,
381 Main_DDrawSurface_GetBltStatus,
382 Main_DDrawSurface_GetCaps,
383 Main_DDrawSurface_GetClipper,
384 Main_DDrawSurface_GetColorKey,
385 Main_DDrawSurface_GetDC,
386 Main_DDrawSurface_GetFlipStatus,
387 Main_DDrawSurface_GetOverlayPosition,
388 Main_DDrawSurface_GetPalette,
389 Main_DDrawSurface_GetPixelFormat,
390 Main_DDrawSurface_GetSurfaceDesc,
391 Main_DDrawSurface_Initialize,
392 Main_DDrawSurface_IsLost,
393 Main_DDrawSurface_Lock,
394 Main_DDrawSurface_ReleaseDC,
395 Main_DDrawSurface_Restore,
396 Main_DDrawSurface_SetClipper,
397 Main_DDrawSurface_SetColorKey,
398 Main_DDrawSurface_SetOverlayPosition,
399 Main_DDrawSurface_SetPalette,
400 Main_DDrawSurface_Unlock,
401 Main_DDrawSurface_UpdateOverlay,
402 Main_DDrawSurface_UpdateOverlayDisplay,
403 Main_DDrawSurface_UpdateOverlayZOrder
404 };