d3drm: Add IDirect3DRMViewport2 interface.
[wine.git] / dlls / d3drm / d3drm.c
blob02a7c556d07d3fdc50350ec4365bf1fc67e1efab
1 /*
2 * Implementation of IDirect3DRM Interface
4 * Copyright 2010 Christian Costa
5 * Copyright 2011 André Hentschel
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #include "wine/debug.h"
24 #define COBJMACROS
26 #include "winbase.h"
27 #include "wingdi.h"
29 #include "d3drm_private.h"
31 WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
33 typedef struct {
34 IDirect3DRM IDirect3DRM_iface;
35 IDirect3DRM2 IDirect3DRM2_iface;
36 IDirect3DRM3 IDirect3DRM3_iface;
37 LONG ref;
38 } IDirect3DRMImpl;
40 static const struct IDirect3DRMVtbl Direct3DRM_Vtbl;
41 static const struct IDirect3DRM2Vtbl Direct3DRM2_Vtbl;
42 static const struct IDirect3DRM3Vtbl Direct3DRM3_Vtbl;
44 static inline IDirect3DRMImpl *impl_from_IDirect3DRM(IDirect3DRM *iface)
46 return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM_iface);
49 static inline IDirect3DRMImpl *impl_from_IDirect3DRM2(IDirect3DRM2 *iface)
51 return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM2_iface);
54 static inline IDirect3DRMImpl *impl_from_IDirect3DRM3(IDirect3DRM3 *iface)
56 return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM3_iface);
59 HRESULT Direct3DRM_create(IUnknown** ppObj)
61 IDirect3DRMImpl* object;
63 TRACE("(%p)\n", ppObj);
65 object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMImpl));
66 if (!object)
68 ERR("Out of memory\n");
69 return E_OUTOFMEMORY;
72 object->IDirect3DRM_iface.lpVtbl = &Direct3DRM_Vtbl;
73 object->IDirect3DRM2_iface.lpVtbl = &Direct3DRM2_Vtbl;
74 object->IDirect3DRM3_iface.lpVtbl = &Direct3DRM3_Vtbl;
75 object->ref = 1;
77 *ppObj = (IUnknown*)&object->IDirect3DRM_iface;
79 return S_OK;
82 /*** IUnknown methods ***/
83 static HRESULT WINAPI IDirect3DRMImpl_QueryInterface(IDirect3DRM* iface, REFIID riid, void** ppvObject)
85 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
87 TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
89 *ppvObject = NULL;
91 if(IsEqualGUID(riid, &IID_IUnknown) ||
92 IsEqualGUID(riid, &IID_IDirect3DRM))
94 *ppvObject = &This->IDirect3DRM_iface;
96 else if(IsEqualGUID(riid, &IID_IDirect3DRM2))
98 *ppvObject = &This->IDirect3DRM2_iface;
100 else if(IsEqualGUID(riid, &IID_IDirect3DRM3))
102 *ppvObject = &This->IDirect3DRM3_iface;
104 else
106 FIXME("interface %s not implemented\n", debugstr_guid(riid));
107 return E_NOINTERFACE;
110 IDirect3DRM_AddRef(iface);
111 return S_OK;
114 static ULONG WINAPI IDirect3DRMImpl_AddRef(IDirect3DRM* iface)
116 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
118 TRACE("(%p/%p)\n", iface, This);
120 return InterlockedIncrement(&This->ref);
123 static ULONG WINAPI IDirect3DRMImpl_Release(IDirect3DRM* iface)
125 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
126 ULONG ref = InterlockedDecrement(&This->ref);
128 TRACE("(%p/%p)\n", iface, This);
130 if (!ref)
131 HeapFree(GetProcessHeap(), 0, This);
133 return ref;
136 /*** IDirect3DRM methods ***/
137 static HRESULT WINAPI IDirect3DRMImpl_CreateObject(IDirect3DRM* iface, REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
139 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
141 FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface, This, debugstr_guid(rclsid), pUnkOuter, debugstr_guid(riid), ppvObj);
143 return E_NOTIMPL;
146 static HRESULT WINAPI IDirect3DRMImpl_CreateFrame(IDirect3DRM* iface, LPDIRECT3DRMFRAME pFrameParent, LPDIRECT3DRMFRAME * ppFrame)
148 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
150 TRACE("(%p/%p)->(%p,%p)\n", iface, This, pFrameParent, ppFrame);
152 if (pFrameParent)
153 FIXME("(%p/%p): Parent frame not yet supported\n", iface, This);
155 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame, (IUnknown**)ppFrame);
158 static HRESULT WINAPI IDirect3DRMImpl_CreateMesh(IDirect3DRM* iface, LPDIRECT3DRMMESH * ppMesh)
160 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
162 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppMesh);
164 return E_NOTIMPL;
167 static HRESULT WINAPI IDirect3DRMImpl_CreateMeshBuilder(IDirect3DRM* iface, LPDIRECT3DRMMESHBUILDER * ppMeshBuilder)
169 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
171 TRACE("(%p/%p)->(%p)\n", iface, This, ppMeshBuilder);
173 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder, (IUnknown**)ppMeshBuilder);
176 static HRESULT WINAPI IDirect3DRMImpl_CreateFace(IDirect3DRM* iface, LPDIRECT3DRMFACE * ppFace)
178 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
180 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppFace);
182 return E_NOTIMPL;
185 static HRESULT WINAPI IDirect3DRMImpl_CreateAnimation(IDirect3DRM* iface, LPDIRECT3DRMANIMATION * ppAnimation)
187 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
189 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimation);
191 return E_NOTIMPL;
194 static HRESULT WINAPI IDirect3DRMImpl_CreateAnimationSet(IDirect3DRM* iface, LPDIRECT3DRMANIMATIONSET * ppAnimationSet)
196 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
198 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimationSet);
200 return E_NOTIMPL;
203 static HRESULT WINAPI IDirect3DRMImpl_CreateTexture(IDirect3DRM* iface, LPD3DRMIMAGE pImage, LPDIRECT3DRMTEXTURE * ppTexture)
205 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
207 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pImage, ppTexture);
209 return E_NOTIMPL;
212 static HRESULT WINAPI IDirect3DRMImpl_CreateLight(IDirect3DRM* iface, D3DRMLIGHTTYPE type, D3DCOLOR color, LPDIRECT3DRMLIGHT * ppLight)
214 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
216 FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, type, color, ppLight);
218 return E_NOTIMPL;
221 static HRESULT WINAPI IDirect3DRMImpl_CreateLightRGB(IDirect3DRM* iface, D3DRMLIGHTTYPE type, D3DVALUE red, D3DVALUE green, D3DVALUE blue, LPDIRECT3DRMLIGHT * ppLight)
223 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
225 FIXME("(%p/%p)->(%d,%f,%f,%f,%p): stub\n", iface, This, type, red, green, blue, ppLight);
227 return E_NOTIMPL;
230 static HRESULT WINAPI IDirect3DRMImpl_Material(IDirect3DRM* iface, D3DVALUE m, LPDIRECT3DRMMATERIAL * ppMaterial)
232 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
234 FIXME("(%p/%p)->(%f,%p): stub\n", iface, This, m, ppMaterial);
236 return E_NOTIMPL;
239 static HRESULT WINAPI IDirect3DRMImpl_CreateDevice(IDirect3DRM* iface, DWORD width, DWORD height, LPDIRECT3DRMDEVICE * ppDevice)
241 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
243 FIXME("(%p/%p)->(%u,%u,%p): partial stub\n", iface, This, width, height, ppDevice);
245 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice, (IUnknown**)ppDevice);
248 static HRESULT WINAPI IDirect3DRMImpl_CreateDeviceFromSurface(IDirect3DRM* iface, LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack, LPDIRECT3DRMDEVICE * ppDevice)
250 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
252 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface, This, debugstr_guid(pGUID), pDD,
253 pDDSBack, ppDevice);
255 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice, (IUnknown**)ppDevice);
258 static HRESULT WINAPI IDirect3DRMImpl_CreateDeviceFromD3D(IDirect3DRM* iface, LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev, LPDIRECT3DRMDEVICE * ppDevice)
260 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
262 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface, This, pD3D, pD3DDev, ppDevice);
264 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice, (IUnknown**)ppDevice);
267 static HRESULT WINAPI IDirect3DRMImpl_CreateDeviceFromClipper(IDirect3DRM* iface, LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height, LPDIRECT3DRMDEVICE * ppDevice)
269 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
271 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface, This, pDDClipper,
272 debugstr_guid(pGUID), width, height, ppDevice);
274 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice, (IUnknown**)ppDevice);
277 static HRESULT WINAPI IDirect3DRMImpl_CreateTextureFromSurface(IDirect3DRM* iface, LPDIRECTDRAWSURFACE pDDS, LPDIRECT3DRMTEXTURE * ppTexture)
279 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
281 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pDDS, ppTexture);
283 return E_NOTIMPL;
286 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)
288 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
290 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);
292 return E_NOTIMPL;
295 static HRESULT WINAPI IDirect3DRMImpl_CreateViewport(IDirect3DRM* iface, LPDIRECT3DRMDEVICE pDevice, LPDIRECT3DRMFRAME pFrame, DWORD xpos, DWORD ypos, DWORD width, DWORD height, LPDIRECT3DRMVIEWPORT * ppViewport)
297 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
299 FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): partial stub\n", iface, This, pDevice, pFrame,
300 xpos, ypos, width, height, ppViewport);
302 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport, (IUnknown**)ppViewport);
305 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)
307 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
309 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);
311 return E_NOTIMPL;
314 static HRESULT WINAPI IDirect3DRMImpl_CreateUserVisual(IDirect3DRM* iface, D3DRMUSERVISUALCALLBACK cb, LPVOID pArg, LPDIRECT3DRMUSERVISUAL * ppUserVisual)
316 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
318 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, cb, pArg, ppUserVisual);
320 return E_NOTIMPL;
323 static HRESULT WINAPI IDirect3DRMImpl_LoadTexture(IDirect3DRM* iface, const char * filename, LPDIRECT3DRMTEXTURE * ppTexture)
325 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
327 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, filename, ppTexture);
329 return E_NOTIMPL;
332 static HRESULT WINAPI IDirect3DRMImpl_LoadTextureFromResource(IDirect3DRM* iface, HRSRC rs, LPDIRECT3DRMTEXTURE * ppTexture)
334 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
336 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, rs, ppTexture);
338 return E_NOTIMPL;
341 static HRESULT WINAPI IDirect3DRMImpl_SetSearchPath(IDirect3DRM* iface, LPCSTR path)
343 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
345 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
347 return E_NOTIMPL;
350 static HRESULT WINAPI IDirect3DRMImpl_AddSearchPath(IDirect3DRM* iface, LPCSTR path)
352 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
354 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
356 return E_NOTIMPL;
359 static HRESULT WINAPI IDirect3DRMImpl_GetSearchPath(IDirect3DRM* iface, DWORD *size_return, LPSTR path_return)
361 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
363 FIXME("(%p/%p)->(%p,%s): stub\n", iface, This, size_return, path_return);
365 return E_NOTIMPL;
368 static HRESULT WINAPI IDirect3DRMImpl_SetDefaultTextureColors(IDirect3DRM* iface, DWORD nb_colors)
370 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
372 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_colors);
374 return E_NOTIMPL;
377 static HRESULT WINAPI IDirect3DRMImpl_SetDefaultTextureShades(IDirect3DRM* iface, DWORD nb_shades)
379 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
381 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_shades);
383 return E_NOTIMPL;
386 static HRESULT WINAPI IDirect3DRMImpl_GetDevices(IDirect3DRM* iface, LPDIRECT3DRMDEVICEARRAY * ppDeviceArray)
388 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
390 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppDeviceArray);
392 return E_NOTIMPL;
395 static HRESULT WINAPI IDirect3DRMImpl_GetNamedObject(IDirect3DRM* iface, const char * pName, LPDIRECT3DRMOBJECT * ppObject)
397 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
399 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, pName, ppObject);
401 return E_NOTIMPL;
404 static HRESULT WINAPI IDirect3DRMImpl_EnumerateObjects(IDirect3DRM* iface, D3DRMOBJECTCALLBACK cb, LPVOID pArg)
406 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
408 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, pArg);
410 return E_NOTIMPL;
413 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)
415 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
417 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);
419 return E_NOTIMPL;
422 static HRESULT WINAPI IDirect3DRMImpl_Tick(IDirect3DRM* iface, D3DVALUE tick)
424 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
426 FIXME("(%p/%p)->(%f): stub\n", iface, This, tick);
428 return E_NOTIMPL;
431 static const struct IDirect3DRMVtbl Direct3DRM_Vtbl =
433 IDirect3DRMImpl_QueryInterface,
434 IDirect3DRMImpl_AddRef,
435 IDirect3DRMImpl_Release,
436 IDirect3DRMImpl_CreateObject,
437 IDirect3DRMImpl_CreateFrame,
438 IDirect3DRMImpl_CreateMesh,
439 IDirect3DRMImpl_CreateMeshBuilder,
440 IDirect3DRMImpl_CreateFace,
441 IDirect3DRMImpl_CreateAnimation,
442 IDirect3DRMImpl_CreateAnimationSet,
443 IDirect3DRMImpl_CreateTexture,
444 IDirect3DRMImpl_CreateLight,
445 IDirect3DRMImpl_CreateLightRGB,
446 IDirect3DRMImpl_Material,
447 IDirect3DRMImpl_CreateDevice,
448 IDirect3DRMImpl_CreateDeviceFromSurface,
449 IDirect3DRMImpl_CreateDeviceFromD3D,
450 IDirect3DRMImpl_CreateDeviceFromClipper,
451 IDirect3DRMImpl_CreateTextureFromSurface,
452 IDirect3DRMImpl_CreateShadow,
453 IDirect3DRMImpl_CreateViewport,
454 IDirect3DRMImpl_CreateWrap,
455 IDirect3DRMImpl_CreateUserVisual,
456 IDirect3DRMImpl_LoadTexture,
457 IDirect3DRMImpl_LoadTextureFromResource,
458 IDirect3DRMImpl_SetSearchPath,
459 IDirect3DRMImpl_AddSearchPath,
460 IDirect3DRMImpl_GetSearchPath,
461 IDirect3DRMImpl_SetDefaultTextureColors,
462 IDirect3DRMImpl_SetDefaultTextureShades,
463 IDirect3DRMImpl_GetDevices,
464 IDirect3DRMImpl_GetNamedObject,
465 IDirect3DRMImpl_EnumerateObjects,
466 IDirect3DRMImpl_Load,
467 IDirect3DRMImpl_Tick
471 /*** IUnknown methods ***/
472 static HRESULT WINAPI IDirect3DRM2Impl_QueryInterface(IDirect3DRM2* iface, REFIID riid,
473 void** ppvObject)
475 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
476 return IDirect3DRM_QueryInterface(&This->IDirect3DRM_iface, riid, ppvObject);
479 static ULONG WINAPI IDirect3DRM2Impl_AddRef(IDirect3DRM2* iface)
481 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
483 TRACE("(%p/%p)\n", iface, This);
485 return InterlockedIncrement(&This->ref);
488 static ULONG WINAPI IDirect3DRM2Impl_Release(IDirect3DRM2* iface)
490 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
491 ULONG ref = InterlockedDecrement(&This->ref);
493 TRACE("(%p/%p)\n", iface, This);
495 if (!ref)
496 HeapFree(GetProcessHeap(), 0, This);
498 return ref;
501 /*** IDirect3DRM2 methods ***/
502 static HRESULT WINAPI IDirect3DRM2Impl_CreateObject(IDirect3DRM2* iface, REFCLSID rclsid,
503 LPUNKNOWN pUnkOuter, REFIID riid,
504 LPVOID *ppvObj)
506 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
508 FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface, This, debugstr_guid(rclsid), pUnkOuter,
509 debugstr_guid(riid), ppvObj);
511 return E_NOTIMPL;
514 static HRESULT WINAPI IDirect3DRM2Impl_CreateFrame(IDirect3DRM2* iface,
515 LPDIRECT3DRMFRAME pFrameParent,
516 LPDIRECT3DRMFRAME2 * ppFrame)
518 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
520 TRACE("(%p/%p)->(%p,%p)\n", iface, This, pFrameParent, ppFrame);
522 if (pFrameParent)
523 FIXME("(%p/%p): Parent frame not yet supported\n", iface, This);
525 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame2, (IUnknown**)ppFrame);
528 static HRESULT WINAPI IDirect3DRM2Impl_CreateMesh(IDirect3DRM2* iface, LPDIRECT3DRMMESH * ppMesh)
530 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
532 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppMesh);
534 return E_NOTIMPL;
537 static HRESULT WINAPI IDirect3DRM2Impl_CreateMeshBuilder(IDirect3DRM2* iface,
538 LPDIRECT3DRMMESHBUILDER2 * ppMeshBuilder)
540 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
542 TRACE("(%p/%p)->(%p)\n", iface, This, ppMeshBuilder);
544 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder2, (IUnknown**)ppMeshBuilder);
547 static HRESULT WINAPI IDirect3DRM2Impl_CreateFace(IDirect3DRM2* iface, LPDIRECT3DRMFACE * ppFace)
549 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
551 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppFace);
553 return E_NOTIMPL;
556 static HRESULT WINAPI IDirect3DRM2Impl_CreateAnimation(IDirect3DRM2* iface,
557 LPDIRECT3DRMANIMATION * ppAnimation)
559 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
561 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimation);
563 return E_NOTIMPL;
566 static HRESULT WINAPI IDirect3DRM2Impl_CreateAnimationSet(IDirect3DRM2* iface,
567 LPDIRECT3DRMANIMATIONSET * ppAnimationSet)
569 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
571 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimationSet);
573 return E_NOTIMPL;
576 static HRESULT WINAPI IDirect3DRM2Impl_CreateTexture(IDirect3DRM2* iface, LPD3DRMIMAGE pImage,
577 LPDIRECT3DRMTEXTURE2 * ppTexture)
579 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
581 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pImage, ppTexture);
583 return E_NOTIMPL;
586 static HRESULT WINAPI IDirect3DRM2Impl_CreateLight(IDirect3DRM2* iface, D3DRMLIGHTTYPE type,
587 D3DCOLOR color, LPDIRECT3DRMLIGHT * ppLight)
589 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
591 FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, type, color, ppLight);
593 return E_NOTIMPL;
596 static HRESULT WINAPI IDirect3DRM2Impl_CreateLightRGB(IDirect3DRM2* iface, D3DRMLIGHTTYPE type,
597 D3DVALUE red, D3DVALUE green, D3DVALUE blue,
598 LPDIRECT3DRMLIGHT * ppLight)
600 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
602 FIXME("(%p/%p)->(%d,%f,%f,%f,%p): stub\n", iface, This, type, red, green, blue, ppLight);
604 return E_NOTIMPL;
607 static HRESULT WINAPI IDirect3DRM2Impl_Material(IDirect3DRM2* iface, D3DVALUE m,
608 LPDIRECT3DRMMATERIAL * ppMaterial)
610 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
612 FIXME("(%p/%p)->(%f,%p): stub\n", iface, This, m, ppMaterial);
614 return E_NOTIMPL;
617 static HRESULT WINAPI IDirect3DRM2Impl_CreateDevice(IDirect3DRM2* iface, DWORD width, DWORD height,
618 LPDIRECT3DRMDEVICE2 * ppDevice)
620 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
622 FIXME("(%p/%p)->(%u,%u,%p): partial stub\n", iface, This, width, height, ppDevice);
624 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2, (IUnknown**)ppDevice);
627 static HRESULT WINAPI IDirect3DRM2Impl_CreateDeviceFromSurface(IDirect3DRM2* iface, LPGUID pGUID,
628 LPDIRECTDRAW pDD,
629 LPDIRECTDRAWSURFACE pDDSBack,
630 LPDIRECT3DRMDEVICE2 * ppDevice)
632 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
634 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface, This, debugstr_guid(pGUID),
635 pDD, pDDSBack, ppDevice);
637 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2, (IUnknown**)ppDevice);
640 static HRESULT WINAPI IDirect3DRM2Impl_CreateDeviceFromD3D(IDirect3DRM2* iface, LPDIRECT3D2 pD3D,
641 LPDIRECT3DDEVICE2 pD3DDev,
642 LPDIRECT3DRMDEVICE2 * ppDevice)
644 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
646 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface, This, pD3D, pD3DDev, ppDevice);
648 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2, (IUnknown**)ppDevice);
651 static HRESULT WINAPI IDirect3DRM2Impl_CreateDeviceFromClipper(IDirect3DRM2* iface,
652 LPDIRECTDRAWCLIPPER pDDClipper,
653 LPGUID pGUID, int width, int height,
654 LPDIRECT3DRMDEVICE2 * ppDevice)
656 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
658 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface, This, pDDClipper,
659 debugstr_guid(pGUID), width, height, ppDevice);
661 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2, (IUnknown**)ppDevice);
664 static HRESULT WINAPI IDirect3DRM2Impl_CreateTextureFromSurface(IDirect3DRM2* iface,
665 LPDIRECTDRAWSURFACE pDDS,
666 LPDIRECT3DRMTEXTURE2 * ppTexture)
668 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
670 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pDDS, ppTexture);
672 return E_NOTIMPL;
675 static HRESULT WINAPI IDirect3DRM2Impl_CreateShadow(IDirect3DRM2* iface, LPDIRECT3DRMVISUAL pVisual,
676 LPDIRECT3DRMLIGHT pLight,
677 D3DVALUE px, D3DVALUE py, D3DVALUE pz,
678 D3DVALUE nx, D3DVALUE ny, D3DVALUE nz,
679 LPDIRECT3DRMVISUAL * ppVisual)
681 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
683 FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, pVisual, pLight, px, py, pz,
684 nx, ny, nz, ppVisual);
686 return E_NOTIMPL;
689 static HRESULT WINAPI IDirect3DRM2Impl_CreateViewport(IDirect3DRM2* iface,
690 LPDIRECT3DRMDEVICE pDevice,
691 LPDIRECT3DRMFRAME pFrame,
692 DWORD xpos, DWORD ypos,
693 DWORD width, DWORD height,
694 LPDIRECT3DRMVIEWPORT * ppViewport)
696 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
698 FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): partial stub\n", iface, This, pDevice, pFrame,
699 xpos, ypos, width, height, ppViewport);
701 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport, (IUnknown**)ppViewport);
704 static HRESULT WINAPI IDirect3DRM2Impl_CreateWrap(IDirect3DRM2* iface, D3DRMWRAPTYPE type,
705 LPDIRECT3DRMFRAME pFrame,
706 D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
707 D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
708 D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
709 D3DVALUE ou, D3DVALUE ov, D3DVALUE su,
710 D3DVALUE sv, LPDIRECT3DRMWRAP * ppWrap)
712 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
714 FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, type,
715 pFrame, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou, ov, su, sv, ppWrap);
717 return E_NOTIMPL;
720 static HRESULT WINAPI IDirect3DRM2Impl_CreateUserVisual(IDirect3DRM2* iface,
721 D3DRMUSERVISUALCALLBACK cb, LPVOID pArg,
722 LPDIRECT3DRMUSERVISUAL * ppUserVisual)
724 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
726 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, cb, pArg, ppUserVisual);
728 return E_NOTIMPL;
731 static HRESULT WINAPI IDirect3DRM2Impl_LoadTexture(IDirect3DRM2* iface, const char * filename,
732 LPDIRECT3DRMTEXTURE2 * ppTexture)
734 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
736 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, filename, ppTexture);
738 return E_NOTIMPL;
741 static HRESULT WINAPI IDirect3DRM2Impl_LoadTextureFromResource(IDirect3DRM2* iface, HMODULE hModule,
742 LPCSTR strName, LPCSTR strType,
743 LPDIRECT3DRMTEXTURE2 * ppTexture)
745 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
747 FIXME("(%p/%p)->(%p,%p,%p,%p): stub\n", iface, This, hModule, strName, strType, ppTexture);
749 return E_NOTIMPL;
752 static HRESULT WINAPI IDirect3DRM2Impl_SetSearchPath(IDirect3DRM2* iface, LPCSTR path)
754 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
756 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
758 return E_NOTIMPL;
761 static HRESULT WINAPI IDirect3DRM2Impl_AddSearchPath(IDirect3DRM2* iface, LPCSTR path)
763 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
765 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
767 return E_NOTIMPL;
770 static HRESULT WINAPI IDirect3DRM2Impl_GetSearchPath(IDirect3DRM2* iface, DWORD *size_return,
771 LPSTR path_return)
773 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
775 FIXME("(%p/%p)->(%p,%s): stub\n", iface, This, size_return, path_return);
777 return E_NOTIMPL;
780 static HRESULT WINAPI IDirect3DRM2Impl_SetDefaultTextureColors(IDirect3DRM2* iface, DWORD nb_colors)
782 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
784 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_colors);
786 return E_NOTIMPL;
789 static HRESULT WINAPI IDirect3DRM2Impl_SetDefaultTextureShades(IDirect3DRM2* iface, DWORD nb_shades)
791 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
793 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_shades);
795 return E_NOTIMPL;
798 static HRESULT WINAPI IDirect3DRM2Impl_GetDevices(IDirect3DRM2* iface,
799 LPDIRECT3DRMDEVICEARRAY * ppDeviceArray)
801 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
803 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppDeviceArray);
805 return E_NOTIMPL;
808 static HRESULT WINAPI IDirect3DRM2Impl_GetNamedObject(IDirect3DRM2* iface, const char * pName,
809 LPDIRECT3DRMOBJECT * ppObject)
811 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
813 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, pName, ppObject);
815 return E_NOTIMPL;
818 static HRESULT WINAPI IDirect3DRM2Impl_EnumerateObjects(IDirect3DRM2* iface, D3DRMOBJECTCALLBACK cb,
819 LPVOID pArg)
821 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
823 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, pArg);
825 return E_NOTIMPL;
828 static HRESULT WINAPI IDirect3DRM2Impl_Load(IDirect3DRM2* iface, LPVOID pObjSource, LPVOID pObjID,
829 LPIID * ppGUIDs, DWORD nb_GUIDs,
830 D3DRMLOADOPTIONS LOFlags, D3DRMLOADCALLBACK LoadProc,
831 LPVOID pArgLP, D3DRMLOADTEXTURECALLBACK LoadTextureProc,
832 LPVOID pArgLTP, LPDIRECT3DRMFRAME pParentFrame)
834 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
836 FIXME("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p): stub\n", iface, This, pObjSource, pObjID,
837 ppGUIDs, nb_GUIDs, LOFlags, LoadProc, pArgLP, LoadTextureProc, pArgLTP, pParentFrame);
839 return E_NOTIMPL;
842 static HRESULT WINAPI IDirect3DRM2Impl_Tick(IDirect3DRM2* iface, D3DVALUE tick)
844 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
846 FIXME("(%p/%p)->(%f): stub\n", iface, This, tick);
848 return E_NOTIMPL;
851 static HRESULT WINAPI IDirect3DRM2Impl_CreateProgressiveMesh(IDirect3DRM2* iface,
852 LPDIRECT3DRMPROGRESSIVEMESH * ppMesh)
854 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
856 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppMesh);
858 return E_NOTIMPL;
861 static const struct IDirect3DRM2Vtbl Direct3DRM2_Vtbl =
863 IDirect3DRM2Impl_QueryInterface,
864 IDirect3DRM2Impl_AddRef,
865 IDirect3DRM2Impl_Release,
866 IDirect3DRM2Impl_CreateObject,
867 IDirect3DRM2Impl_CreateFrame,
868 IDirect3DRM2Impl_CreateMesh,
869 IDirect3DRM2Impl_CreateMeshBuilder,
870 IDirect3DRM2Impl_CreateFace,
871 IDirect3DRM2Impl_CreateAnimation,
872 IDirect3DRM2Impl_CreateAnimationSet,
873 IDirect3DRM2Impl_CreateTexture,
874 IDirect3DRM2Impl_CreateLight,
875 IDirect3DRM2Impl_CreateLightRGB,
876 IDirect3DRM2Impl_Material,
877 IDirect3DRM2Impl_CreateDevice,
878 IDirect3DRM2Impl_CreateDeviceFromSurface,
879 IDirect3DRM2Impl_CreateDeviceFromD3D,
880 IDirect3DRM2Impl_CreateDeviceFromClipper,
881 IDirect3DRM2Impl_CreateTextureFromSurface,
882 IDirect3DRM2Impl_CreateShadow,
883 IDirect3DRM2Impl_CreateViewport,
884 IDirect3DRM2Impl_CreateWrap,
885 IDirect3DRM2Impl_CreateUserVisual,
886 IDirect3DRM2Impl_LoadTexture,
887 IDirect3DRM2Impl_LoadTextureFromResource,
888 IDirect3DRM2Impl_SetSearchPath,
889 IDirect3DRM2Impl_AddSearchPath,
890 IDirect3DRM2Impl_GetSearchPath,
891 IDirect3DRM2Impl_SetDefaultTextureColors,
892 IDirect3DRM2Impl_SetDefaultTextureShades,
893 IDirect3DRM2Impl_GetDevices,
894 IDirect3DRM2Impl_GetNamedObject,
895 IDirect3DRM2Impl_EnumerateObjects,
896 IDirect3DRM2Impl_Load,
897 IDirect3DRM2Impl_Tick,
898 IDirect3DRM2Impl_CreateProgressiveMesh
902 /*** IUnknown methods ***/
903 static HRESULT WINAPI IDirect3DRM3Impl_QueryInterface(IDirect3DRM3* iface, REFIID riid,
904 void** ppvObject)
906 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
907 return IDirect3DRM_QueryInterface(&This->IDirect3DRM_iface, riid, ppvObject);
910 static ULONG WINAPI IDirect3DRM3Impl_AddRef(IDirect3DRM3* iface)
912 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
914 TRACE("(%p/%p)\n", iface, This);
916 return InterlockedIncrement(&This->ref);
919 static ULONG WINAPI IDirect3DRM3Impl_Release(IDirect3DRM3* iface)
921 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
922 ULONG ref = InterlockedDecrement(&This->ref);
924 TRACE("(%p/%p)\n", iface, This);
926 if (!ref)
927 HeapFree(GetProcessHeap(), 0, This);
929 return ref;
932 /*** IDirect3DRM3 methods ***/
933 static HRESULT WINAPI IDirect3DRM3Impl_CreateObject(IDirect3DRM3* iface, REFCLSID rclsid,
934 LPUNKNOWN unkwn, REFIID riid, LPVOID* object)
936 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
938 FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface, This, debugstr_guid(rclsid), unkwn,
939 debugstr_guid(riid), object);
941 return E_NOTIMPL;
944 static HRESULT WINAPI IDirect3DRM3Impl_CreateFrame(IDirect3DRM3* iface,
945 LPDIRECT3DRMFRAME3 FrameParent,
946 LPDIRECT3DRMFRAME3* Frame)
948 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
950 TRACE("(%p/%p)->(%p,%p)\n", iface, This, FrameParent, Frame);
952 if (FrameParent)
953 FIXME("(%p/%p): Parent frame not yet supported\n", iface, This);
955 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame3, (IUnknown**)Frame);
958 static HRESULT WINAPI IDirect3DRM3Impl_CreateMesh(IDirect3DRM3* iface, LPDIRECT3DRMMESH* Mesh)
960 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
962 FIXME("(%p/%p)->(%p): stub\n", iface, This, Mesh);
964 return E_NOTIMPL;
967 static HRESULT WINAPI IDirect3DRM3Impl_CreateMeshBuilder(IDirect3DRM3* iface,
968 LPDIRECT3DRMMESHBUILDER3* ppMeshBuilder)
970 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
972 TRACE("(%p/%p)->(%p)\n", iface, This, ppMeshBuilder);
974 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder3, (IUnknown**)ppMeshBuilder);
977 static HRESULT WINAPI IDirect3DRM3Impl_CreateFace(IDirect3DRM3* iface, LPDIRECT3DRMFACE2* Face)
979 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
981 FIXME("(%p/%p)->(%p): stub\n", iface, This, Face);
983 return E_NOTIMPL;
986 static HRESULT WINAPI IDirect3DRM3Impl_CreateAnimation(IDirect3DRM3* iface,
987 LPDIRECT3DRMANIMATION2* Animation)
989 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
991 FIXME("(%p/%p)->(%p): stub\n", iface, This, Animation);
993 return E_NOTIMPL;
996 static HRESULT WINAPI IDirect3DRM3Impl_CreateAnimationSet(IDirect3DRM3* iface,
997 LPDIRECT3DRMANIMATIONSET2* AnimationSet)
999 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1001 FIXME("(%p/%p)->(%p): stub\n", iface, This, AnimationSet);
1003 return E_NOTIMPL;
1006 static HRESULT WINAPI IDirect3DRM3Impl_CreateTexture(IDirect3DRM3* iface, LPD3DRMIMAGE Image,
1007 LPDIRECT3DRMTEXTURE3* Texture)
1009 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1011 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, Image, Texture);
1013 return E_NOTIMPL;
1016 static HRESULT WINAPI IDirect3DRM3Impl_CreateLight(IDirect3DRM3* iface, D3DRMLIGHTTYPE type,
1017 D3DCOLOR color, LPDIRECT3DRMLIGHT* Light)
1019 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1021 FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, type, color, Light);
1023 return E_NOTIMPL;
1026 static HRESULT WINAPI IDirect3DRM3Impl_CreateLightRGB(IDirect3DRM3* iface, D3DRMLIGHTTYPE type,
1027 D3DVALUE red, D3DVALUE green, D3DVALUE blue,
1028 LPDIRECT3DRMLIGHT* Light)
1030 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1032 FIXME("(%p/%p)->(%d,%f,%f,%f,%p): stub\n", iface, This, type, red, green, blue, Light);
1034 return E_NOTIMPL;
1037 static HRESULT WINAPI IDirect3DRM3Impl_Material(IDirect3DRM3* iface, D3DVALUE m,
1038 LPDIRECT3DRMMATERIAL2* Material)
1040 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1042 FIXME("(%p/%p)->(%f,%p): stub\n", iface, This, m, Material);
1044 return E_NOTIMPL;
1047 static HRESULT WINAPI IDirect3DRM3Impl_CreateDevice(IDirect3DRM3* iface, DWORD width, DWORD height,
1048 LPDIRECT3DRMDEVICE3* device)
1050 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1052 FIXME("(%p/%p)->(%d,%d,%p): partial stub\n", iface, This, width, height, device);
1054 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3, (IUnknown**)device);
1057 static HRESULT WINAPI IDirect3DRM3Impl_CreateDeviceFromSurface(IDirect3DRM3* iface, LPGUID pGUID,
1058 LPDIRECTDRAW dd,
1059 LPDIRECTDRAWSURFACE back,
1060 LPDIRECT3DRMDEVICE3* device)
1062 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1064 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface, This, debugstr_guid(pGUID), dd, back, device);
1066 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3, (IUnknown**)device);
1069 static HRESULT WINAPI IDirect3DRM3Impl_CreateDeviceFromD3D(IDirect3DRM3* iface, LPDIRECT3D2 d3d,
1070 LPDIRECT3DDEVICE2 d3ddev,
1071 LPDIRECT3DRMDEVICE3* device)
1073 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1075 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface, This, d3d, d3ddev, device);
1077 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3, (IUnknown**)device);
1080 static HRESULT WINAPI IDirect3DRM3Impl_CreateDeviceFromClipper(IDirect3DRM3* iface,
1081 LPDIRECTDRAWCLIPPER clipper,
1082 LPGUID GUID, int width, int height,
1083 LPDIRECT3DRMDEVICE3* device)
1085 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1087 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface, This, clipper, debugstr_guid(GUID),
1088 width, height, device);
1090 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3, (IUnknown**)device);
1093 static HRESULT WINAPI IDirect3DRM3Impl_CreateShadow(IDirect3DRM3* iface, LPUNKNOWN Visual1,
1094 LPDIRECT3DRMLIGHT Light, D3DVALUE px,
1095 D3DVALUE py, D3DVALUE pz, D3DVALUE nx,
1096 D3DVALUE ny, D3DVALUE nz,
1097 LPDIRECT3DRMSHADOW2* Visual2)
1099 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1101 FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, Visual1, Light, px, py, pz,
1102 nx, ny, nz, Visual2);
1104 return E_NOTIMPL;
1107 static HRESULT WINAPI IDirect3DRM3Impl_CreateTextureFromSurface(IDirect3DRM3* iface,
1108 LPDIRECTDRAWSURFACE surface,
1109 LPDIRECT3DRMTEXTURE3* texture)
1111 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1113 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, surface, texture);
1115 return E_NOTIMPL;
1118 static HRESULT WINAPI IDirect3DRM3Impl_CreateViewport(IDirect3DRM3* iface,
1119 LPDIRECT3DRMDEVICE3 Device,
1120 LPDIRECT3DRMFRAME3 frame, DWORD xpos,
1121 DWORD ypos, DWORD width, DWORD height,
1122 LPDIRECT3DRMVIEWPORT2* viewport)
1124 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1126 FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): stub\n", iface, This, Device, frame, xpos, ypos, width,
1127 height, viewport);
1129 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport2, (IUnknown**)viewport);
1132 static HRESULT WINAPI IDirect3DRM3Impl_CreateWrap(IDirect3DRM3* iface, D3DRMWRAPTYPE type,
1133 LPDIRECT3DRMFRAME3 frame,
1134 D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
1135 D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1136 D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
1137 D3DVALUE ou, D3DVALUE ov, D3DVALUE su,
1138 D3DVALUE sv, LPDIRECT3DRMWRAP* wrap)
1140 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1142 FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, type,
1143 frame, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou, ov, su, sv, wrap);
1145 return E_NOTIMPL;
1148 static HRESULT WINAPI IDirect3DRM3Impl_CreateUserVisual(IDirect3DRM3* iface,
1149 D3DRMUSERVISUALCALLBACK cb, LPVOID arg,
1150 LPDIRECT3DRMUSERVISUAL* UserVisual)
1152 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1154 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, cb, arg, UserVisual);
1156 return E_NOTIMPL;
1159 static HRESULT WINAPI IDirect3DRM3Impl_LoadTexture(IDirect3DRM3* iface, const char* filename,
1160 LPDIRECT3DRMTEXTURE3* Texture)
1162 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1164 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, filename, Texture);
1166 return E_NOTIMPL;
1169 static HRESULT WINAPI IDirect3DRM3Impl_LoadTextureFromResource(IDirect3DRM3* iface, HMODULE mod,
1170 LPCSTR strName, LPCSTR strType,
1171 LPDIRECT3DRMTEXTURE3 * ppTexture)
1173 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1175 FIXME("(%p/%p)->(%p,%p,%p,%p): stub\n", iface, This, mod, strName, strType, ppTexture);
1177 return E_NOTIMPL;
1180 static HRESULT WINAPI IDirect3DRM3Impl_SetSearchPath(IDirect3DRM3* iface, LPCSTR path)
1182 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1184 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
1186 return E_NOTIMPL;
1189 static HRESULT WINAPI IDirect3DRM3Impl_AddSearchPath(IDirect3DRM3* iface, LPCSTR path)
1191 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1193 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
1195 return E_NOTIMPL;
1198 static HRESULT WINAPI IDirect3DRM3Impl_GetSearchPath(IDirect3DRM3* iface, DWORD* size_return,
1199 LPSTR path_return)
1201 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1203 FIXME("(%p/%p)->(%p,%s): stub\n", iface, This, size_return, path_return);
1205 return E_NOTIMPL;
1208 static HRESULT WINAPI IDirect3DRM3Impl_SetDefaultTextureColors(IDirect3DRM3* iface, DWORD nb_colors)
1210 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1212 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_colors);
1214 return E_NOTIMPL;
1217 static HRESULT WINAPI IDirect3DRM3Impl_SetDefaultTextureShades(IDirect3DRM3* iface, DWORD nb_shades)
1219 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1221 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_shades);
1223 return E_NOTIMPL;
1226 static HRESULT WINAPI IDirect3DRM3Impl_GetDevices(IDirect3DRM3* iface,
1227 LPDIRECT3DRMDEVICEARRAY* DeviceArray)
1229 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1231 FIXME("(%p/%p)->(%p): stub\n", iface, This, DeviceArray);
1233 return E_NOTIMPL;
1236 static HRESULT WINAPI IDirect3DRM3Impl_GetNamedObject(IDirect3DRM3* iface, const char* Name,
1237 LPDIRECT3DRMOBJECT* Object)
1239 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1241 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, Name, Object);
1243 return E_NOTIMPL;
1246 static HRESULT WINAPI IDirect3DRM3Impl_EnumerateObjects(IDirect3DRM3* iface, D3DRMOBJECTCALLBACK cb,
1247 LPVOID arg)
1249 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1251 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, arg);
1253 return E_NOTIMPL;
1256 static HRESULT WINAPI IDirect3DRM3Impl_Load(IDirect3DRM3* iface, LPVOID ObjSource, LPVOID ObjID,
1257 LPIID* GUIDs, DWORD nb_GUIDs, D3DRMLOADOPTIONS LOFlags,
1258 D3DRMLOADCALLBACK LoadProc, LPVOID ArgLP,
1259 D3DRMLOADTEXTURECALLBACK LoadTextureProc, LPVOID ArgLTP,
1260 LPDIRECT3DRMFRAME3 ParentFrame)
1262 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1264 FIXME("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p): stub\n", iface, This, ObjSource, ObjID, GUIDs,
1265 nb_GUIDs, LOFlags, LoadProc, ArgLP, LoadTextureProc, ArgLTP, ParentFrame);
1267 return E_NOTIMPL;
1270 static HRESULT WINAPI IDirect3DRM3Impl_Tick(IDirect3DRM3* iface, D3DVALUE tick)
1272 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1274 FIXME("(%p/%p)->(%f): stub\n", iface, This, tick);
1276 return E_NOTIMPL;
1279 static HRESULT WINAPI IDirect3DRM3Impl_CreateProgressiveMesh(IDirect3DRM3* iface,
1280 LPDIRECT3DRMPROGRESSIVEMESH Mesh)
1282 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1284 FIXME("(%p/%p)->(%p): stub\n", iface, This, Mesh);
1286 return E_NOTIMPL;
1289 static HRESULT WINAPI IDirect3DRM3Impl_RegisterClient(IDirect3DRM3* iface, REFGUID rguid,
1290 LPDWORD id)
1292 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1294 FIXME("(%p/%p)->(%s, %p): stub\n", iface, This, debugstr_guid(rguid), id);
1296 return E_NOTIMPL;
1299 static HRESULT WINAPI IDirect3DRM3Impl_UnregisterClient(IDirect3DRM3* iface, REFGUID rguid)
1301 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1303 FIXME("(%p/%p)->(%s): stub\n", iface, This, debugstr_guid(rguid));
1305 return E_NOTIMPL;
1308 static HRESULT WINAPI IDirect3DRM3Impl_CreateClippedVisual(IDirect3DRM3* iface,
1309 LPDIRECT3DRMVISUAL vis,
1310 LPDIRECT3DRMCLIPPEDVISUAL* clippedvis)
1312 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1314 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, vis, clippedvis);
1316 return E_NOTIMPL;
1319 static HRESULT WINAPI IDirect3DRM3Impl_SetOptions(IDirect3DRM3* iface, DWORD opt)
1321 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1323 FIXME("(%p/%p)->(%d): stub\n", iface, This, opt);
1325 return E_NOTIMPL;
1328 static HRESULT WINAPI IDirect3DRM3Impl_GetOptions(IDirect3DRM3* iface, LPDWORD opt)
1330 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1332 FIXME("(%p/%p)->(%p): stub\n", iface, This, opt);
1334 return E_NOTIMPL;
1337 static const struct IDirect3DRM3Vtbl Direct3DRM3_Vtbl =
1339 IDirect3DRM3Impl_QueryInterface,
1340 IDirect3DRM3Impl_AddRef,
1341 IDirect3DRM3Impl_Release,
1342 IDirect3DRM3Impl_CreateObject,
1343 IDirect3DRM3Impl_CreateFrame,
1344 IDirect3DRM3Impl_CreateMesh,
1345 IDirect3DRM3Impl_CreateMeshBuilder,
1346 IDirect3DRM3Impl_CreateFace,
1347 IDirect3DRM3Impl_CreateAnimation,
1348 IDirect3DRM3Impl_CreateAnimationSet,
1349 IDirect3DRM3Impl_CreateTexture,
1350 IDirect3DRM3Impl_CreateLight,
1351 IDirect3DRM3Impl_CreateLightRGB,
1352 IDirect3DRM3Impl_Material,
1353 IDirect3DRM3Impl_CreateDevice,
1354 IDirect3DRM3Impl_CreateDeviceFromSurface,
1355 IDirect3DRM3Impl_CreateDeviceFromD3D,
1356 IDirect3DRM3Impl_CreateDeviceFromClipper,
1357 IDirect3DRM3Impl_CreateTextureFromSurface,
1358 IDirect3DRM3Impl_CreateShadow,
1359 IDirect3DRM3Impl_CreateViewport,
1360 IDirect3DRM3Impl_CreateWrap,
1361 IDirect3DRM3Impl_CreateUserVisual,
1362 IDirect3DRM3Impl_LoadTexture,
1363 IDirect3DRM3Impl_LoadTextureFromResource,
1364 IDirect3DRM3Impl_SetSearchPath,
1365 IDirect3DRM3Impl_AddSearchPath,
1366 IDirect3DRM3Impl_GetSearchPath,
1367 IDirect3DRM3Impl_SetDefaultTextureColors,
1368 IDirect3DRM3Impl_SetDefaultTextureShades,
1369 IDirect3DRM3Impl_GetDevices,
1370 IDirect3DRM3Impl_GetNamedObject,
1371 IDirect3DRM3Impl_EnumerateObjects,
1372 IDirect3DRM3Impl_Load,
1373 IDirect3DRM3Impl_Tick,
1374 IDirect3DRM3Impl_CreateProgressiveMesh,
1375 IDirect3DRM3Impl_RegisterClient,
1376 IDirect3DRM3Impl_UnregisterClient,
1377 IDirect3DRM3Impl_CreateClippedVisual,
1378 IDirect3DRM3Impl_SetOptions,
1379 IDirect3DRM3Impl_GetOptions