2 * Implementation of IDirect3DRM Interface
4 * Copyright 2010 Christian Costa
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #include "wine/debug.h"
28 #include "d3drm_private.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
33 IDirect3DRM IDirect3DRM_iface;
37 static const struct IDirect3DRMVtbl Direct3DRM_Vtbl;
39 static inline IDirect3DRMImpl *impl_from_IDirect3DRM(IDirect3DRM *iface)
41 return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM_iface);
44 HRESULT Direct3DRM_create(LPDIRECT3DRM* ppDirect3DRM)
46 IDirect3DRMImpl* object;
48 TRACE("(%p)\n", ppDirect3DRM);
50 object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMImpl));
53 ERR("Out of memory\n");
57 object->IDirect3DRM_iface.lpVtbl = &Direct3DRM_Vtbl;
60 *ppDirect3DRM = (IDirect3DRM*)object;
65 /*** IUnknown methods ***/
66 static HRESULT WINAPI IDirect3DRMImpl_QueryInterface(IDirect3DRM* iface, REFIID riid, void** ppvObject)
68 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
70 TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
72 if (IsEqualGUID(riid, &IID_IUnknown) ||
73 IsEqualGUID(riid, &IID_IDirect3DRM))
75 IUnknown_AddRef(iface);
80 ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject);
84 static ULONG WINAPI IDirect3DRMImpl_AddRef(IDirect3DRM* iface)
86 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
88 TRACE("(%p/%p)\n", iface, This);
90 return InterlockedIncrement(&This->ref);
93 static ULONG WINAPI IDirect3DRMImpl_Release(IDirect3DRM* iface)
95 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
96 ULONG ref = InterlockedDecrement(&This->ref);
98 TRACE("(%p/%p)\n", iface, This);
101 HeapFree(GetProcessHeap(), 0, This);
106 /*** IDirect3DRM methods ***/
107 static HRESULT WINAPI IDirect3DRMImpl_CreateObject(IDirect3DRM* iface, REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
109 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
111 FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface, This, debugstr_guid(rclsid), pUnkOuter, debugstr_guid(riid), ppvObj);
116 static HRESULT WINAPI IDirect3DRMImpl_CreateFrame(IDirect3DRM* iface, LPDIRECT3DRMFRAME pFrameParent, LPDIRECT3DRMFRAME * ppFrame)
118 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
120 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pFrameParent, ppFrame);
125 static HRESULT WINAPI IDirect3DRMImpl_CreateMesh(IDirect3DRM* iface, LPDIRECT3DRMMESH * ppMesh)
127 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
129 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppMesh);
134 static HRESULT WINAPI IDirect3DRMImpl_CreateMeshBuilder(IDirect3DRM* iface, LPDIRECT3DRMMESHBUILDER * ppMeshBuilder)
136 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
138 TRACE("(%p/%p)->(%p)\n", iface, This, ppMeshBuilder);
140 return Direct3DRMMeshBuilder_create(ppMeshBuilder);
143 static HRESULT WINAPI IDirect3DRMImpl_CreateFace(IDirect3DRM* iface, LPDIRECT3DRMFACE * ppFace)
145 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
147 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppFace);
152 static HRESULT WINAPI IDirect3DRMImpl_CreateAnimation(IDirect3DRM* iface, LPDIRECT3DRMANIMATION * ppAnimation)
154 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
156 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimation);
161 static HRESULT WINAPI IDirect3DRMImpl_CreateAnimationSet(IDirect3DRM* iface, LPDIRECT3DRMANIMATIONSET * ppAnimationSet)
163 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
165 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimationSet);
170 static HRESULT WINAPI IDirect3DRMImpl_CreateTexture(IDirect3DRM* iface, LPD3DRMIMAGE pImage, LPDIRECT3DRMTEXTURE * ppTexture)
172 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
174 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pImage, ppTexture);
179 static HRESULT WINAPI IDirect3DRMImpl_CreateLight(IDirect3DRM* iface, D3DRMLIGHTTYPE type, D3DCOLOR color, LPDIRECT3DRMLIGHT * ppLight)
181 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
183 FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, type, color, ppLight);
188 static HRESULT WINAPI IDirect3DRMImpl_CreateLightRGB(IDirect3DRM* iface, D3DRMLIGHTTYPE type, D3DVALUE red, D3DVALUE green, D3DVALUE blue, LPDIRECT3DRMLIGHT * ppLight)
190 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
192 FIXME("(%p/%p)->(%d,%f,%f,%f,%p): stub\n", iface, This, type, red, green, blue, ppLight);
197 static HRESULT WINAPI IDirect3DRMImpl_Material(IDirect3DRM* iface, D3DVALUE m, LPDIRECT3DRMMATERIAL * ppMaterial)
199 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
201 FIXME("(%p/%p)->(%f,%p): stub\n", iface, This, m, ppMaterial);
206 static HRESULT WINAPI IDirect3DRMImpl_CreateDevice(IDirect3DRM* iface, DWORD width, DWORD height, LPDIRECT3DRMDEVICE * ppDevice)
208 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
210 FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, width, height, ppDevice);
215 static HRESULT WINAPI IDirect3DRMImpl_CreateDeviceFromSurface(IDirect3DRM* iface, LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack, LPDIRECT3DRMDEVICE * ppDevice)
217 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
219 FIXME("(%p/%p)->(%s,%p,%p,%p): stub\n", iface, This, debugstr_guid(pGUID), pDD, pDDSBack, ppDevice);
224 static HRESULT WINAPI IDirect3DRMImpl_CreateDeviceFromD3D(IDirect3DRM* iface, LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev, LPDIRECT3DRMDEVICE * ppDevice)
226 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
228 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, pD3D, pD3DDev, ppDevice);
233 static HRESULT WINAPI IDirect3DRMImpl_CreateDeviceFromClipper(IDirect3DRM* iface, LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height, LPDIRECT3DRMDEVICE * ppDevice)
235 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
237 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): stub\n", iface, This, pDDClipper, debugstr_guid(pGUID), width, height, ppDevice);
242 static HRESULT WINAPI IDirect3DRMImpl_CreateShadow(IDirect3DRM* iface, LPDIRECT3DRMVISUAL pVisual, LPDIRECT3DRMLIGHT pLight, D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, LPDIRECT3DRMVISUAL * ppVisual)
244 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
246 FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, pVisual, pLight, px, py, pz, nx, ny, nz, ppVisual);
251 static HRESULT WINAPI IDirect3DRMImpl_CreateTextureFromSurface(IDirect3DRM* iface, LPDIRECTDRAWSURFACE pDDS, LPDIRECT3DRMTEXTURE * ppTexture)
253 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
255 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pDDS, ppTexture);
260 static HRESULT WINAPI IDirect3DRMImpl_CreateViewport(IDirect3DRM* iface, LPDIRECT3DRMDEVICE pDevice, LPDIRECT3DRMFRAME pFrame, DWORD xpos, DWORD ypos, DWORD width, DWORD height, LPDIRECT3DRMVIEWPORT * ppViewport)
262 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
264 FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): stub\n", iface, This, pDevice, pFrame, xpos, ypos, width, height, ppViewport);
269 static HRESULT WINAPI IDirect3DRMImpl_CreateWrap(IDirect3DRM* iface, D3DRMWRAPTYPE type, LPDIRECT3DRMFRAME pFrame, D3DVALUE ox, D3DVALUE oy, D3DVALUE oz, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov, D3DVALUE su, D3DVALUE sv, LPDIRECT3DRMWRAP * ppWrap)
271 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
273 FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, type, pFrame, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou, ov, su, sv, ppWrap);
278 static HRESULT WINAPI IDirect3DRMImpl_CreateUserVisual(IDirect3DRM* iface, D3DRMUSERVISUALCALLBACK cb, LPVOID pArg, LPDIRECT3DRMUSERVISUAL * ppUserVisual)
280 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
282 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, cb, pArg, ppUserVisual);
287 static HRESULT WINAPI IDirect3DRMImpl_LoadTexture(IDirect3DRM* iface, const char * filename, LPDIRECT3DRMTEXTURE * ppTexture)
289 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
291 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, filename, ppTexture);
296 static HRESULT WINAPI IDirect3DRMImpl_LoadTextureFromResource(IDirect3DRM* iface, HRSRC rs, LPDIRECT3DRMTEXTURE * ppTexture)
298 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
300 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, rs, ppTexture);
305 static HRESULT WINAPI IDirect3DRMImpl_SetSearchPath(IDirect3DRM* iface, LPCSTR path)
307 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
309 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
314 static HRESULT WINAPI IDirect3DRMImpl_AddSearchPath(IDirect3DRM* iface, LPCSTR path)
316 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
318 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
323 static HRESULT WINAPI IDirect3DRMImpl_GetSearchPath(IDirect3DRM* iface, DWORD *size_return, LPSTR path_return)
325 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
327 FIXME("(%p/%p)->(%p,%s): stub\n", iface, This, size_return, path_return);
332 static HRESULT WINAPI IDirect3DRMImpl_SetDefaultTextureColors(IDirect3DRM* iface, DWORD nb_colors)
334 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
336 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_colors);
341 static HRESULT WINAPI IDirect3DRMImpl_SetDefaultTextureShades(IDirect3DRM* iface, DWORD nb_shades)
343 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
345 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_shades);
350 static HRESULT WINAPI IDirect3DRMImpl_GetDevices(IDirect3DRM* iface, LPDIRECT3DRMDEVICEARRAY * ppDeviceArray)
352 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
354 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppDeviceArray);
359 static HRESULT WINAPI IDirect3DRMImpl_GetNamedObject(IDirect3DRM* iface, const char * pName, LPDIRECT3DRMOBJECT * ppObject)
361 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
363 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, pName, ppObject);
368 static HRESULT WINAPI IDirect3DRMImpl_EnumerateObjects(IDirect3DRM* iface, D3DRMOBJECTCALLBACK cb, LPVOID pArg)
370 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
372 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, pArg);
377 static HRESULT WINAPI IDirect3DRMImpl_Load(IDirect3DRM* iface, LPVOID pObjSource, LPVOID pObjID, LPIID * ppGUIDs, DWORD nb_GUIDs, D3DRMLOADOPTIONS LOFlags, D3DRMLOADCALLBACK LoadProc, LPVOID pArgLP, D3DRMLOADTEXTURECALLBACK LoadTextureProc, LPVOID pArgLTP, LPDIRECT3DRMFRAME pParentFrame)
379 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
381 FIXME("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p): stub\n", iface, This, pObjSource, pObjID, ppGUIDs, nb_GUIDs, LOFlags, LoadProc, pArgLP, LoadTextureProc, pArgLTP, pParentFrame);
386 static HRESULT WINAPI IDirect3DRMImpl_Tick(IDirect3DRM* iface, D3DVALUE tick)
388 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
390 FIXME("(%p/%p)->(%f): stub\n", iface, This, tick);
395 static const struct IDirect3DRMVtbl Direct3DRM_Vtbl =
397 IDirect3DRMImpl_QueryInterface,
398 IDirect3DRMImpl_AddRef,
399 IDirect3DRMImpl_Release,
400 IDirect3DRMImpl_CreateObject,
401 IDirect3DRMImpl_CreateFrame,
402 IDirect3DRMImpl_CreateMesh,
403 IDirect3DRMImpl_CreateMeshBuilder,
404 IDirect3DRMImpl_CreateFace,
405 IDirect3DRMImpl_CreateAnimation,
406 IDirect3DRMImpl_CreateAnimationSet,
407 IDirect3DRMImpl_CreateTexture,
408 IDirect3DRMImpl_CreateLight,
409 IDirect3DRMImpl_CreateLightRGB,
410 IDirect3DRMImpl_Material,
411 IDirect3DRMImpl_CreateDevice,
412 IDirect3DRMImpl_CreateDeviceFromSurface,
413 IDirect3DRMImpl_CreateDeviceFromD3D,
414 IDirect3DRMImpl_CreateDeviceFromClipper,
415 IDirect3DRMImpl_CreateShadow,
416 IDirect3DRMImpl_CreateTextureFromSurface,
417 IDirect3DRMImpl_CreateViewport,
418 IDirect3DRMImpl_CreateWrap,
419 IDirect3DRMImpl_CreateUserVisual,
420 IDirect3DRMImpl_LoadTexture,
421 IDirect3DRMImpl_LoadTextureFromResource,
422 IDirect3DRMImpl_SetSearchPath,
423 IDirect3DRMImpl_AddSearchPath,
424 IDirect3DRMImpl_GetSearchPath,
425 IDirect3DRMImpl_SetDefaultTextureColors,
426 IDirect3DRMImpl_SetDefaultTextureShades,
427 IDirect3DRMImpl_GetDevices,
428 IDirect3DRMImpl_GetNamedObject,
429 IDirect3DRMImpl_EnumerateObjects,
430 IDirect3DRMImpl_Load,