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"
31 #include "d3drm_private.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
35 static const char* get_IID_string(const GUID* guid)
37 if (IsEqualGUID(guid, &IID_IDirect3DRMFrame))
38 return "IID_IDirect3DRMFrame";
39 else if (IsEqualGUID(guid, &IID_IDirect3DRMFrame2))
40 return "IID_IDirect3DRMFrame2";
41 else if (IsEqualGUID(guid, &IID_IDirect3DRMFrame3))
42 return "IID_IDirect3DRMFrame3";
43 else if (IsEqualGUID(guid, &IID_IDirect3DRMMeshBuilder))
44 return "IID_IDirect3DRMMeshBuilder";
45 else if (IsEqualGUID(guid, &IID_IDirect3DRMMeshBuilder2))
46 return "IID_IDirect3DRMMeshBuilder2";
47 else if (IsEqualGUID(guid, &IID_IDirect3DRMMeshBuilder3))
48 return "IID_IDirect3DRMMeshBuilder3";
54 IDirect3DRM IDirect3DRM_iface;
55 IDirect3DRM2 IDirect3DRM2_iface;
56 IDirect3DRM3 IDirect3DRM3_iface;
60 static inline IDirect3DRMImpl *impl_from_IDirect3DRM(IDirect3DRM *iface)
62 return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM_iface);
65 static inline IDirect3DRMImpl *impl_from_IDirect3DRM2(IDirect3DRM2 *iface)
67 return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM2_iface);
70 static inline IDirect3DRMImpl *impl_from_IDirect3DRM3(IDirect3DRM3 *iface)
72 return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM3_iface);
75 /*** IUnknown methods ***/
76 static HRESULT WINAPI IDirect3DRMImpl_QueryInterface(IDirect3DRM* iface, REFIID riid, void** ppvObject)
78 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
80 TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject);
84 if(IsEqualGUID(riid, &IID_IUnknown) ||
85 IsEqualGUID(riid, &IID_IDirect3DRM))
87 *ppvObject = &This->IDirect3DRM_iface;
89 else if(IsEqualGUID(riid, &IID_IDirect3DRM2))
91 *ppvObject = &This->IDirect3DRM2_iface;
93 else if(IsEqualGUID(riid, &IID_IDirect3DRM3))
95 *ppvObject = &This->IDirect3DRM3_iface;
99 FIXME("interface %s not implemented\n", debugstr_guid(riid));
100 return E_NOINTERFACE;
103 IDirect3DRM_AddRef(iface);
107 static ULONG WINAPI IDirect3DRMImpl_AddRef(IDirect3DRM* iface)
109 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
110 ULONG ref = InterlockedIncrement(&This->ref);
112 TRACE("(%p/%p)->(): new ref = %d\n", iface, This, ref);
117 static ULONG WINAPI IDirect3DRMImpl_Release(IDirect3DRM* iface)
119 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
120 ULONG ref = InterlockedDecrement(&This->ref);
122 TRACE("(%p/%p)->(): new ref = %d\n", iface, This, ref);
125 HeapFree(GetProcessHeap(), 0, This);
130 /*** IDirect3DRM methods ***/
131 static HRESULT WINAPI IDirect3DRMImpl_CreateObject(IDirect3DRM* iface, REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
133 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
135 FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface, This, debugstr_guid(rclsid), pUnkOuter, debugstr_guid(riid), ppvObj);
140 static HRESULT WINAPI IDirect3DRMImpl_CreateFrame(IDirect3DRM* iface, LPDIRECT3DRMFRAME pFrameParent, LPDIRECT3DRMFRAME * ppFrame)
142 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
144 TRACE("(%p/%p)->(%p,%p)\n", iface, This, pFrameParent, ppFrame);
147 FIXME("(%p/%p): Parent frame not yet supported\n", iface, This);
149 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame, (IUnknown**)ppFrame);
152 static HRESULT WINAPI IDirect3DRMImpl_CreateMesh(IDirect3DRM* iface, LPDIRECT3DRMMESH * ppMesh)
154 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
156 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppMesh);
161 static HRESULT WINAPI IDirect3DRMImpl_CreateMeshBuilder(IDirect3DRM* iface, LPDIRECT3DRMMESHBUILDER * ppMeshBuilder)
163 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
165 TRACE("(%p/%p)->(%p)\n", iface, This, ppMeshBuilder);
167 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder, (IUnknown**)ppMeshBuilder);
170 static HRESULT WINAPI IDirect3DRMImpl_CreateFace(IDirect3DRM* iface, LPDIRECT3DRMFACE * ppFace)
172 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
174 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppFace);
179 static HRESULT WINAPI IDirect3DRMImpl_CreateAnimation(IDirect3DRM* iface, LPDIRECT3DRMANIMATION * ppAnimation)
181 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
183 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimation);
188 static HRESULT WINAPI IDirect3DRMImpl_CreateAnimationSet(IDirect3DRM* iface, LPDIRECT3DRMANIMATIONSET * ppAnimationSet)
190 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
192 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimationSet);
197 static HRESULT WINAPI IDirect3DRMImpl_CreateTexture(IDirect3DRM* iface, LPD3DRMIMAGE pImage, LPDIRECT3DRMTEXTURE * ppTexture)
199 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
201 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pImage, ppTexture);
206 static HRESULT WINAPI IDirect3DRMImpl_CreateLight(IDirect3DRM* iface, D3DRMLIGHTTYPE type, D3DCOLOR color, LPDIRECT3DRMLIGHT * ppLight)
208 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
210 FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, type, color, ppLight);
215 static HRESULT WINAPI IDirect3DRMImpl_CreateLightRGB(IDirect3DRM* iface, D3DRMLIGHTTYPE type, D3DVALUE red, D3DVALUE green, D3DVALUE blue, LPDIRECT3DRMLIGHT * ppLight)
217 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
219 FIXME("(%p/%p)->(%d,%f,%f,%f,%p): stub\n", iface, This, type, red, green, blue, ppLight);
224 static HRESULT WINAPI IDirect3DRMImpl_Material(IDirect3DRM* iface, D3DVALUE m, LPDIRECT3DRMMATERIAL * ppMaterial)
226 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
228 FIXME("(%p/%p)->(%f,%p): stub\n", iface, This, m, ppMaterial);
233 static HRESULT WINAPI IDirect3DRMImpl_CreateDevice(IDirect3DRM* iface, DWORD width, DWORD height, LPDIRECT3DRMDEVICE * ppDevice)
235 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
237 FIXME("(%p/%p)->(%u,%u,%p): partial stub\n", iface, This, width, height, ppDevice);
239 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice, (IUnknown**)ppDevice);
242 static HRESULT WINAPI IDirect3DRMImpl_CreateDeviceFromSurface(IDirect3DRM* iface, LPGUID pGUID, LPDIRECTDRAW pDD, LPDIRECTDRAWSURFACE pDDSBack, LPDIRECT3DRMDEVICE * ppDevice)
244 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
246 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface, This, debugstr_guid(pGUID), pDD,
249 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice, (IUnknown**)ppDevice);
252 static HRESULT WINAPI IDirect3DRMImpl_CreateDeviceFromD3D(IDirect3DRM* iface, LPDIRECT3D pD3D, LPDIRECT3DDEVICE pD3DDev, LPDIRECT3DRMDEVICE * ppDevice)
254 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
256 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface, This, pD3D, pD3DDev, ppDevice);
258 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice, (IUnknown**)ppDevice);
261 static HRESULT WINAPI IDirect3DRMImpl_CreateDeviceFromClipper(IDirect3DRM* iface, LPDIRECTDRAWCLIPPER pDDClipper, LPGUID pGUID, int width, int height, LPDIRECT3DRMDEVICE * ppDevice)
263 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
265 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface, This, pDDClipper,
266 debugstr_guid(pGUID), width, height, ppDevice);
268 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice, (IUnknown**)ppDevice);
271 static HRESULT WINAPI IDirect3DRMImpl_CreateTextureFromSurface(IDirect3DRM* iface, LPDIRECTDRAWSURFACE pDDS, LPDIRECT3DRMTEXTURE * ppTexture)
273 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
275 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pDDS, ppTexture);
280 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)
282 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
284 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);
289 static HRESULT WINAPI IDirect3DRMImpl_CreateViewport(IDirect3DRM* iface, LPDIRECT3DRMDEVICE pDevice, LPDIRECT3DRMFRAME pFrame, DWORD xpos, DWORD ypos, DWORD width, DWORD height, LPDIRECT3DRMVIEWPORT * ppViewport)
291 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
293 FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): partial stub\n", iface, This, pDevice, pFrame,
294 xpos, ypos, width, height, ppViewport);
296 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport, (IUnknown**)ppViewport);
299 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)
301 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
303 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);
308 static HRESULT WINAPI IDirect3DRMImpl_CreateUserVisual(IDirect3DRM* iface, D3DRMUSERVISUALCALLBACK cb, LPVOID pArg, LPDIRECT3DRMUSERVISUAL * ppUserVisual)
310 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
312 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, cb, pArg, ppUserVisual);
317 static HRESULT WINAPI IDirect3DRMImpl_LoadTexture(IDirect3DRM* iface, const char * filename, LPDIRECT3DRMTEXTURE * ppTexture)
319 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
321 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, filename, ppTexture);
326 static HRESULT WINAPI IDirect3DRMImpl_LoadTextureFromResource(IDirect3DRM* iface, HRSRC rs, LPDIRECT3DRMTEXTURE * ppTexture)
328 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
330 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, rs, ppTexture);
335 static HRESULT WINAPI IDirect3DRMImpl_SetSearchPath(IDirect3DRM* iface, LPCSTR path)
337 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
339 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
344 static HRESULT WINAPI IDirect3DRMImpl_AddSearchPath(IDirect3DRM* iface, LPCSTR path)
346 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
348 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
353 static HRESULT WINAPI IDirect3DRMImpl_GetSearchPath(IDirect3DRM* iface, DWORD *size_return, LPSTR path_return)
355 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
357 FIXME("(%p/%p)->(%p,%s): stub\n", iface, This, size_return, path_return);
362 static HRESULT WINAPI IDirect3DRMImpl_SetDefaultTextureColors(IDirect3DRM* iface, DWORD nb_colors)
364 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
366 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_colors);
371 static HRESULT WINAPI IDirect3DRMImpl_SetDefaultTextureShades(IDirect3DRM* iface, DWORD nb_shades)
373 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
375 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_shades);
380 static HRESULT WINAPI IDirect3DRMImpl_GetDevices(IDirect3DRM* iface, LPDIRECT3DRMDEVICEARRAY * ppDeviceArray)
382 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
384 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppDeviceArray);
389 static HRESULT WINAPI IDirect3DRMImpl_GetNamedObject(IDirect3DRM* iface, const char * pName, LPDIRECT3DRMOBJECT * ppObject)
391 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
393 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, pName, ppObject);
398 static HRESULT WINAPI IDirect3DRMImpl_EnumerateObjects(IDirect3DRM* iface, D3DRMOBJECTCALLBACK cb, LPVOID pArg)
400 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
402 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, pArg);
407 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)
409 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
410 LPDIRECT3DRMFRAME3 pParentFrame3 = NULL;
411 HRESULT hr = D3DRM_OK;
413 TRACE("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p)\n", iface, This, pObjSource, pObjID, ppGUIDs, nb_GUIDs, LOFlags, LoadProc, pArgLP, LoadTextureProc, pArgLTP, pParentFrame);
416 hr = IDirect3DRMFrame_QueryInterface(pParentFrame, &IID_IDirect3DRMFrame3, (void**)&pParentFrame3);
418 hr = IDirect3DRM3_Load(&This->IDirect3DRM3_iface, pObjSource, pObjID, ppGUIDs, nb_GUIDs, LOFlags, LoadProc, pArgLP, LoadTextureProc, pArgLTP, pParentFrame3);
420 IDirect3DRMFrame3_Release(pParentFrame3);
425 static HRESULT WINAPI IDirect3DRMImpl_Tick(IDirect3DRM* iface, D3DVALUE tick)
427 IDirect3DRMImpl *This = impl_from_IDirect3DRM(iface);
429 FIXME("(%p/%p)->(%f): stub\n", iface, This, tick);
434 static const struct IDirect3DRMVtbl Direct3DRM_Vtbl =
436 IDirect3DRMImpl_QueryInterface,
437 IDirect3DRMImpl_AddRef,
438 IDirect3DRMImpl_Release,
439 IDirect3DRMImpl_CreateObject,
440 IDirect3DRMImpl_CreateFrame,
441 IDirect3DRMImpl_CreateMesh,
442 IDirect3DRMImpl_CreateMeshBuilder,
443 IDirect3DRMImpl_CreateFace,
444 IDirect3DRMImpl_CreateAnimation,
445 IDirect3DRMImpl_CreateAnimationSet,
446 IDirect3DRMImpl_CreateTexture,
447 IDirect3DRMImpl_CreateLight,
448 IDirect3DRMImpl_CreateLightRGB,
449 IDirect3DRMImpl_Material,
450 IDirect3DRMImpl_CreateDevice,
451 IDirect3DRMImpl_CreateDeviceFromSurface,
452 IDirect3DRMImpl_CreateDeviceFromD3D,
453 IDirect3DRMImpl_CreateDeviceFromClipper,
454 IDirect3DRMImpl_CreateTextureFromSurface,
455 IDirect3DRMImpl_CreateShadow,
456 IDirect3DRMImpl_CreateViewport,
457 IDirect3DRMImpl_CreateWrap,
458 IDirect3DRMImpl_CreateUserVisual,
459 IDirect3DRMImpl_LoadTexture,
460 IDirect3DRMImpl_LoadTextureFromResource,
461 IDirect3DRMImpl_SetSearchPath,
462 IDirect3DRMImpl_AddSearchPath,
463 IDirect3DRMImpl_GetSearchPath,
464 IDirect3DRMImpl_SetDefaultTextureColors,
465 IDirect3DRMImpl_SetDefaultTextureShades,
466 IDirect3DRMImpl_GetDevices,
467 IDirect3DRMImpl_GetNamedObject,
468 IDirect3DRMImpl_EnumerateObjects,
469 IDirect3DRMImpl_Load,
474 /*** IUnknown methods ***/
475 static HRESULT WINAPI IDirect3DRM2Impl_QueryInterface(IDirect3DRM2* iface, REFIID riid,
478 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
479 return IDirect3DRM_QueryInterface(&This->IDirect3DRM_iface, riid, ppvObject);
482 static ULONG WINAPI IDirect3DRM2Impl_AddRef(IDirect3DRM2* iface)
484 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
485 return IDirect3DRM_AddRef(&This->IDirect3DRM_iface);
488 static ULONG WINAPI IDirect3DRM2Impl_Release(IDirect3DRM2* iface)
490 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
491 return IDirect3DRM_Release(&This->IDirect3DRM_iface);
494 /*** IDirect3DRM2 methods ***/
495 static HRESULT WINAPI IDirect3DRM2Impl_CreateObject(IDirect3DRM2* iface, REFCLSID rclsid,
496 LPUNKNOWN pUnkOuter, REFIID riid,
499 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
501 FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface, This, debugstr_guid(rclsid), pUnkOuter,
502 debugstr_guid(riid), ppvObj);
507 static HRESULT WINAPI IDirect3DRM2Impl_CreateFrame(IDirect3DRM2* iface,
508 LPDIRECT3DRMFRAME pFrameParent,
509 LPDIRECT3DRMFRAME2 * ppFrame)
511 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
513 TRACE("(%p/%p)->(%p,%p)\n", iface, This, pFrameParent, ppFrame);
516 FIXME("(%p/%p): Parent frame not yet supported\n", iface, This);
518 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame2, (IUnknown**)ppFrame);
521 static HRESULT WINAPI IDirect3DRM2Impl_CreateMesh(IDirect3DRM2* iface, LPDIRECT3DRMMESH * ppMesh)
523 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
525 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppMesh);
530 static HRESULT WINAPI IDirect3DRM2Impl_CreateMeshBuilder(IDirect3DRM2* iface,
531 LPDIRECT3DRMMESHBUILDER2 * ppMeshBuilder)
533 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
535 TRACE("(%p/%p)->(%p)\n", iface, This, ppMeshBuilder);
537 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder2, (IUnknown**)ppMeshBuilder);
540 static HRESULT WINAPI IDirect3DRM2Impl_CreateFace(IDirect3DRM2* iface, LPDIRECT3DRMFACE * ppFace)
542 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
544 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppFace);
549 static HRESULT WINAPI IDirect3DRM2Impl_CreateAnimation(IDirect3DRM2* iface,
550 LPDIRECT3DRMANIMATION * ppAnimation)
552 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
554 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimation);
559 static HRESULT WINAPI IDirect3DRM2Impl_CreateAnimationSet(IDirect3DRM2* iface,
560 LPDIRECT3DRMANIMATIONSET * ppAnimationSet)
562 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
564 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppAnimationSet);
569 static HRESULT WINAPI IDirect3DRM2Impl_CreateTexture(IDirect3DRM2* iface, LPD3DRMIMAGE pImage,
570 LPDIRECT3DRMTEXTURE2 * ppTexture)
572 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
574 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pImage, ppTexture);
579 static HRESULT WINAPI IDirect3DRM2Impl_CreateLight(IDirect3DRM2* iface, D3DRMLIGHTTYPE type,
580 D3DCOLOR color, LPDIRECT3DRMLIGHT * ppLight)
582 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
584 FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, type, color, ppLight);
589 static HRESULT WINAPI IDirect3DRM2Impl_CreateLightRGB(IDirect3DRM2* iface, D3DRMLIGHTTYPE type,
590 D3DVALUE red, D3DVALUE green, D3DVALUE blue,
591 LPDIRECT3DRMLIGHT * ppLight)
593 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
595 FIXME("(%p/%p)->(%d,%f,%f,%f,%p): stub\n", iface, This, type, red, green, blue, ppLight);
600 static HRESULT WINAPI IDirect3DRM2Impl_Material(IDirect3DRM2* iface, D3DVALUE m,
601 LPDIRECT3DRMMATERIAL * ppMaterial)
603 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
605 FIXME("(%p/%p)->(%f,%p): stub\n", iface, This, m, ppMaterial);
610 static HRESULT WINAPI IDirect3DRM2Impl_CreateDevice(IDirect3DRM2* iface, DWORD width, DWORD height,
611 LPDIRECT3DRMDEVICE2 * ppDevice)
613 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
615 FIXME("(%p/%p)->(%u,%u,%p): partial stub\n", iface, This, width, height, ppDevice);
617 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2, (IUnknown**)ppDevice);
620 static HRESULT WINAPI IDirect3DRM2Impl_CreateDeviceFromSurface(IDirect3DRM2* iface, LPGUID pGUID,
622 LPDIRECTDRAWSURFACE pDDSBack,
623 LPDIRECT3DRMDEVICE2 * ppDevice)
625 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
627 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface, This, debugstr_guid(pGUID),
628 pDD, pDDSBack, ppDevice);
630 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2, (IUnknown**)ppDevice);
633 static HRESULT WINAPI IDirect3DRM2Impl_CreateDeviceFromD3D(IDirect3DRM2* iface, LPDIRECT3D2 pD3D,
634 LPDIRECT3DDEVICE2 pD3DDev,
635 LPDIRECT3DRMDEVICE2 * ppDevice)
637 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
639 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface, This, pD3D, pD3DDev, ppDevice);
641 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2, (IUnknown**)ppDevice);
644 static HRESULT WINAPI IDirect3DRM2Impl_CreateDeviceFromClipper(IDirect3DRM2* iface,
645 LPDIRECTDRAWCLIPPER pDDClipper,
646 LPGUID pGUID, int width, int height,
647 LPDIRECT3DRMDEVICE2 * ppDevice)
649 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
651 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface, This, pDDClipper,
652 debugstr_guid(pGUID), width, height, ppDevice);
654 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2, (IUnknown**)ppDevice);
657 static HRESULT WINAPI IDirect3DRM2Impl_CreateTextureFromSurface(IDirect3DRM2* iface,
658 LPDIRECTDRAWSURFACE pDDS,
659 LPDIRECT3DRMTEXTURE2 * ppTexture)
661 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
663 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, pDDS, ppTexture);
668 static HRESULT WINAPI IDirect3DRM2Impl_CreateShadow(IDirect3DRM2* iface, LPDIRECT3DRMVISUAL pVisual,
669 LPDIRECT3DRMLIGHT pLight,
670 D3DVALUE px, D3DVALUE py, D3DVALUE pz,
671 D3DVALUE nx, D3DVALUE ny, D3DVALUE nz,
672 LPDIRECT3DRMVISUAL * ppVisual)
674 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
676 FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, pVisual, pLight, px, py, pz,
677 nx, ny, nz, ppVisual);
682 static HRESULT WINAPI IDirect3DRM2Impl_CreateViewport(IDirect3DRM2* iface,
683 LPDIRECT3DRMDEVICE pDevice,
684 LPDIRECT3DRMFRAME pFrame,
685 DWORD xpos, DWORD ypos,
686 DWORD width, DWORD height,
687 LPDIRECT3DRMVIEWPORT * ppViewport)
689 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
691 FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): partial stub\n", iface, This, pDevice, pFrame,
692 xpos, ypos, width, height, ppViewport);
694 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport, (IUnknown**)ppViewport);
697 static HRESULT WINAPI IDirect3DRM2Impl_CreateWrap(IDirect3DRM2* iface, D3DRMWRAPTYPE type,
698 LPDIRECT3DRMFRAME pFrame,
699 D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
700 D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
701 D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
702 D3DVALUE ou, D3DVALUE ov, D3DVALUE su,
703 D3DVALUE sv, LPDIRECT3DRMWRAP * ppWrap)
705 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
707 FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, type,
708 pFrame, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou, ov, su, sv, ppWrap);
713 static HRESULT WINAPI IDirect3DRM2Impl_CreateUserVisual(IDirect3DRM2* iface,
714 D3DRMUSERVISUALCALLBACK cb, LPVOID pArg,
715 LPDIRECT3DRMUSERVISUAL * ppUserVisual)
717 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
719 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, cb, pArg, ppUserVisual);
724 static HRESULT WINAPI IDirect3DRM2Impl_LoadTexture(IDirect3DRM2* iface, const char * filename,
725 LPDIRECT3DRMTEXTURE2 * ppTexture)
727 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
729 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, filename, ppTexture);
734 static HRESULT WINAPI IDirect3DRM2Impl_LoadTextureFromResource(IDirect3DRM2* iface, HMODULE hModule,
735 LPCSTR strName, LPCSTR strType,
736 LPDIRECT3DRMTEXTURE2 * ppTexture)
738 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
740 FIXME("(%p/%p)->(%p,%p,%p,%p): stub\n", iface, This, hModule, strName, strType, ppTexture);
745 static HRESULT WINAPI IDirect3DRM2Impl_SetSearchPath(IDirect3DRM2* iface, LPCSTR path)
747 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
749 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
754 static HRESULT WINAPI IDirect3DRM2Impl_AddSearchPath(IDirect3DRM2* iface, LPCSTR path)
756 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
758 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
763 static HRESULT WINAPI IDirect3DRM2Impl_GetSearchPath(IDirect3DRM2* iface, DWORD *size_return,
766 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
768 FIXME("(%p/%p)->(%p,%s): stub\n", iface, This, size_return, path_return);
773 static HRESULT WINAPI IDirect3DRM2Impl_SetDefaultTextureColors(IDirect3DRM2* iface, DWORD nb_colors)
775 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
777 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_colors);
782 static HRESULT WINAPI IDirect3DRM2Impl_SetDefaultTextureShades(IDirect3DRM2* iface, DWORD nb_shades)
784 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
786 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_shades);
791 static HRESULT WINAPI IDirect3DRM2Impl_GetDevices(IDirect3DRM2* iface,
792 LPDIRECT3DRMDEVICEARRAY * ppDeviceArray)
794 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
796 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppDeviceArray);
801 static HRESULT WINAPI IDirect3DRM2Impl_GetNamedObject(IDirect3DRM2* iface, const char * pName,
802 LPDIRECT3DRMOBJECT * ppObject)
804 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
806 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, pName, ppObject);
811 static HRESULT WINAPI IDirect3DRM2Impl_EnumerateObjects(IDirect3DRM2* iface, D3DRMOBJECTCALLBACK cb,
814 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
816 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, pArg);
821 static HRESULT WINAPI IDirect3DRM2Impl_Load(IDirect3DRM2* iface, LPVOID pObjSource, LPVOID pObjID,
822 LPIID * ppGUIDs, DWORD nb_GUIDs,
823 D3DRMLOADOPTIONS LOFlags, D3DRMLOADCALLBACK LoadProc,
824 LPVOID pArgLP, D3DRMLOADTEXTURECALLBACK LoadTextureProc,
825 LPVOID pArgLTP, LPDIRECT3DRMFRAME pParentFrame)
827 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
828 LPDIRECT3DRMFRAME3 pParentFrame3 = NULL;
829 HRESULT hr = D3DRM_OK;
831 TRACE("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p)\n", iface, This, pObjSource, pObjID,
832 ppGUIDs, nb_GUIDs, LOFlags, LoadProc, pArgLP, LoadTextureProc, pArgLTP, pParentFrame);
835 hr = IDirect3DRMFrame_QueryInterface(pParentFrame, &IID_IDirect3DRMFrame3, (void**)&pParentFrame3);
837 hr = IDirect3DRM3_Load(&This->IDirect3DRM3_iface, pObjSource, pObjID, ppGUIDs, nb_GUIDs, LOFlags, LoadProc, pArgLP, LoadTextureProc, pArgLTP, pParentFrame3);
839 IDirect3DRMFrame3_Release(pParentFrame3);
844 static HRESULT WINAPI IDirect3DRM2Impl_Tick(IDirect3DRM2* iface, D3DVALUE tick)
846 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
848 FIXME("(%p/%p)->(%f): stub\n", iface, This, tick);
853 static HRESULT WINAPI IDirect3DRM2Impl_CreateProgressiveMesh(IDirect3DRM2* iface,
854 LPDIRECT3DRMPROGRESSIVEMESH * ppMesh)
856 IDirect3DRMImpl *This = impl_from_IDirect3DRM2(iface);
858 FIXME("(%p/%p)->(%p): stub\n", iface, This, ppMesh);
863 static const struct IDirect3DRM2Vtbl Direct3DRM2_Vtbl =
865 IDirect3DRM2Impl_QueryInterface,
866 IDirect3DRM2Impl_AddRef,
867 IDirect3DRM2Impl_Release,
868 IDirect3DRM2Impl_CreateObject,
869 IDirect3DRM2Impl_CreateFrame,
870 IDirect3DRM2Impl_CreateMesh,
871 IDirect3DRM2Impl_CreateMeshBuilder,
872 IDirect3DRM2Impl_CreateFace,
873 IDirect3DRM2Impl_CreateAnimation,
874 IDirect3DRM2Impl_CreateAnimationSet,
875 IDirect3DRM2Impl_CreateTexture,
876 IDirect3DRM2Impl_CreateLight,
877 IDirect3DRM2Impl_CreateLightRGB,
878 IDirect3DRM2Impl_Material,
879 IDirect3DRM2Impl_CreateDevice,
880 IDirect3DRM2Impl_CreateDeviceFromSurface,
881 IDirect3DRM2Impl_CreateDeviceFromD3D,
882 IDirect3DRM2Impl_CreateDeviceFromClipper,
883 IDirect3DRM2Impl_CreateTextureFromSurface,
884 IDirect3DRM2Impl_CreateShadow,
885 IDirect3DRM2Impl_CreateViewport,
886 IDirect3DRM2Impl_CreateWrap,
887 IDirect3DRM2Impl_CreateUserVisual,
888 IDirect3DRM2Impl_LoadTexture,
889 IDirect3DRM2Impl_LoadTextureFromResource,
890 IDirect3DRM2Impl_SetSearchPath,
891 IDirect3DRM2Impl_AddSearchPath,
892 IDirect3DRM2Impl_GetSearchPath,
893 IDirect3DRM2Impl_SetDefaultTextureColors,
894 IDirect3DRM2Impl_SetDefaultTextureShades,
895 IDirect3DRM2Impl_GetDevices,
896 IDirect3DRM2Impl_GetNamedObject,
897 IDirect3DRM2Impl_EnumerateObjects,
898 IDirect3DRM2Impl_Load,
899 IDirect3DRM2Impl_Tick,
900 IDirect3DRM2Impl_CreateProgressiveMesh
904 /*** IUnknown methods ***/
905 static HRESULT WINAPI IDirect3DRM3Impl_QueryInterface(IDirect3DRM3* iface, REFIID riid,
908 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
909 return IDirect3DRM_QueryInterface(&This->IDirect3DRM_iface, riid, ppvObject);
912 static ULONG WINAPI IDirect3DRM3Impl_AddRef(IDirect3DRM3* iface)
914 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
915 return IDirect3DRM_AddRef(&This->IDirect3DRM_iface);
918 static ULONG WINAPI IDirect3DRM3Impl_Release(IDirect3DRM3* iface)
920 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
921 return IDirect3DRM_Release(&This->IDirect3DRM_iface);
924 /*** IDirect3DRM3 methods ***/
925 static HRESULT WINAPI IDirect3DRM3Impl_CreateObject(IDirect3DRM3* iface, REFCLSID rclsid,
926 LPUNKNOWN unkwn, REFIID riid, LPVOID* object)
928 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
930 FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface, This, debugstr_guid(rclsid), unkwn,
931 debugstr_guid(riid), object);
936 static HRESULT WINAPI IDirect3DRM3Impl_CreateFrame(IDirect3DRM3* iface,
937 LPDIRECT3DRMFRAME3 FrameParent,
938 LPDIRECT3DRMFRAME3* Frame)
940 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
942 TRACE("(%p/%p)->(%p,%p)\n", iface, This, FrameParent, Frame);
945 FIXME("(%p/%p): Parent frame not yet supported\n", iface, This);
947 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame3, (IUnknown**)Frame);
950 static HRESULT WINAPI IDirect3DRM3Impl_CreateMesh(IDirect3DRM3* iface, LPDIRECT3DRMMESH* Mesh)
952 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
954 FIXME("(%p/%p)->(%p): stub\n", iface, This, Mesh);
959 static HRESULT WINAPI IDirect3DRM3Impl_CreateMeshBuilder(IDirect3DRM3* iface,
960 LPDIRECT3DRMMESHBUILDER3* ppMeshBuilder)
962 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
964 TRACE("(%p/%p)->(%p)\n", iface, This, ppMeshBuilder);
966 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder3, (IUnknown**)ppMeshBuilder);
969 static HRESULT WINAPI IDirect3DRM3Impl_CreateFace(IDirect3DRM3* iface, LPDIRECT3DRMFACE2* Face)
971 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
973 FIXME("(%p/%p)->(%p): stub\n", iface, This, Face);
978 static HRESULT WINAPI IDirect3DRM3Impl_CreateAnimation(IDirect3DRM3* iface,
979 LPDIRECT3DRMANIMATION2* Animation)
981 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
983 FIXME("(%p/%p)->(%p): stub\n", iface, This, Animation);
988 static HRESULT WINAPI IDirect3DRM3Impl_CreateAnimationSet(IDirect3DRM3* iface,
989 LPDIRECT3DRMANIMATIONSET2* AnimationSet)
991 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
993 FIXME("(%p/%p)->(%p): stub\n", iface, This, AnimationSet);
998 static HRESULT WINAPI IDirect3DRM3Impl_CreateTexture(IDirect3DRM3* iface, LPD3DRMIMAGE Image,
999 LPDIRECT3DRMTEXTURE3* Texture)
1001 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1003 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, Image, Texture);
1008 static HRESULT WINAPI IDirect3DRM3Impl_CreateLight(IDirect3DRM3* iface, D3DRMLIGHTTYPE type,
1009 D3DCOLOR color, LPDIRECT3DRMLIGHT* Light)
1011 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1013 FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, type, color, Light);
1018 static HRESULT WINAPI IDirect3DRM3Impl_CreateLightRGB(IDirect3DRM3* iface, D3DRMLIGHTTYPE type,
1019 D3DVALUE red, D3DVALUE green, D3DVALUE blue,
1020 LPDIRECT3DRMLIGHT* Light)
1022 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1024 FIXME("(%p/%p)->(%d,%f,%f,%f,%p): stub\n", iface, This, type, red, green, blue, Light);
1029 static HRESULT WINAPI IDirect3DRM3Impl_Material(IDirect3DRM3* iface, D3DVALUE m,
1030 LPDIRECT3DRMMATERIAL2* Material)
1032 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1034 FIXME("(%p/%p)->(%f,%p): stub\n", iface, This, m, Material);
1039 static HRESULT WINAPI IDirect3DRM3Impl_CreateDevice(IDirect3DRM3* iface, DWORD width, DWORD height,
1040 LPDIRECT3DRMDEVICE3* device)
1042 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1044 FIXME("(%p/%p)->(%d,%d,%p): partial stub\n", iface, This, width, height, device);
1046 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3, (IUnknown**)device);
1049 static HRESULT WINAPI IDirect3DRM3Impl_CreateDeviceFromSurface(IDirect3DRM3* iface, LPGUID pGUID,
1051 LPDIRECTDRAWSURFACE back,
1052 LPDIRECT3DRMDEVICE3* device)
1054 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1056 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface, This, debugstr_guid(pGUID), dd, back, device);
1058 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3, (IUnknown**)device);
1061 static HRESULT WINAPI IDirect3DRM3Impl_CreateDeviceFromD3D(IDirect3DRM3* iface, LPDIRECT3D2 d3d,
1062 LPDIRECT3DDEVICE2 d3ddev,
1063 LPDIRECT3DRMDEVICE3* device)
1065 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1067 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface, This, d3d, d3ddev, device);
1069 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3, (IUnknown**)device);
1072 static HRESULT WINAPI IDirect3DRM3Impl_CreateDeviceFromClipper(IDirect3DRM3* iface,
1073 LPDIRECTDRAWCLIPPER clipper,
1074 LPGUID GUID, int width, int height,
1075 LPDIRECT3DRMDEVICE3* device)
1077 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1079 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface, This, clipper, debugstr_guid(GUID),
1080 width, height, device);
1082 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3, (IUnknown**)device);
1085 static HRESULT WINAPI IDirect3DRM3Impl_CreateShadow(IDirect3DRM3* iface, LPUNKNOWN Visual1,
1086 LPDIRECT3DRMLIGHT Light, D3DVALUE px,
1087 D3DVALUE py, D3DVALUE pz, D3DVALUE nx,
1088 D3DVALUE ny, D3DVALUE nz,
1089 LPDIRECT3DRMSHADOW2* Visual2)
1091 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1093 FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, Visual1, Light, px, py, pz,
1094 nx, ny, nz, Visual2);
1099 static HRESULT WINAPI IDirect3DRM3Impl_CreateTextureFromSurface(IDirect3DRM3* iface,
1100 LPDIRECTDRAWSURFACE surface,
1101 LPDIRECT3DRMTEXTURE3* texture)
1103 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1105 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, surface, texture);
1110 static HRESULT WINAPI IDirect3DRM3Impl_CreateViewport(IDirect3DRM3* iface,
1111 LPDIRECT3DRMDEVICE3 Device,
1112 LPDIRECT3DRMFRAME3 frame, DWORD xpos,
1113 DWORD ypos, DWORD width, DWORD height,
1114 LPDIRECT3DRMVIEWPORT2* viewport)
1116 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1118 FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): stub\n", iface, This, Device, frame, xpos, ypos, width,
1121 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport2, (IUnknown**)viewport);
1124 static HRESULT WINAPI IDirect3DRM3Impl_CreateWrap(IDirect3DRM3* iface, D3DRMWRAPTYPE type,
1125 LPDIRECT3DRMFRAME3 frame,
1126 D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
1127 D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1128 D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
1129 D3DVALUE ou, D3DVALUE ov, D3DVALUE su,
1130 D3DVALUE sv, LPDIRECT3DRMWRAP* wrap)
1132 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1134 FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, type,
1135 frame, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou, ov, su, sv, wrap);
1140 static HRESULT WINAPI IDirect3DRM3Impl_CreateUserVisual(IDirect3DRM3* iface,
1141 D3DRMUSERVISUALCALLBACK cb, LPVOID arg,
1142 LPDIRECT3DRMUSERVISUAL* UserVisual)
1144 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1146 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, cb, arg, UserVisual);
1151 static HRESULT WINAPI IDirect3DRM3Impl_LoadTexture(IDirect3DRM3* iface, const char* filename,
1152 LPDIRECT3DRMTEXTURE3* Texture)
1154 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1156 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, filename, Texture);
1161 static HRESULT WINAPI IDirect3DRM3Impl_LoadTextureFromResource(IDirect3DRM3* iface, HMODULE mod,
1162 LPCSTR strName, LPCSTR strType,
1163 LPDIRECT3DRMTEXTURE3 * ppTexture)
1165 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1167 FIXME("(%p/%p)->(%p,%p,%p,%p): stub\n", iface, This, mod, strName, strType, ppTexture);
1172 static HRESULT WINAPI IDirect3DRM3Impl_SetSearchPath(IDirect3DRM3* iface, LPCSTR path)
1174 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1176 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
1181 static HRESULT WINAPI IDirect3DRM3Impl_AddSearchPath(IDirect3DRM3* iface, LPCSTR path)
1183 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1185 FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
1190 static HRESULT WINAPI IDirect3DRM3Impl_GetSearchPath(IDirect3DRM3* iface, DWORD* size_return,
1193 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1195 FIXME("(%p/%p)->(%p,%s): stub\n", iface, This, size_return, path_return);
1200 static HRESULT WINAPI IDirect3DRM3Impl_SetDefaultTextureColors(IDirect3DRM3* iface, DWORD nb_colors)
1202 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1204 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_colors);
1209 static HRESULT WINAPI IDirect3DRM3Impl_SetDefaultTextureShades(IDirect3DRM3* iface, DWORD nb_shades)
1211 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1213 FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_shades);
1218 static HRESULT WINAPI IDirect3DRM3Impl_GetDevices(IDirect3DRM3* iface,
1219 LPDIRECT3DRMDEVICEARRAY* DeviceArray)
1221 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1223 FIXME("(%p/%p)->(%p): stub\n", iface, This, DeviceArray);
1228 static HRESULT WINAPI IDirect3DRM3Impl_GetNamedObject(IDirect3DRM3* iface, const char* Name,
1229 LPDIRECT3DRMOBJECT* Object)
1231 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1233 FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, Name, Object);
1238 static HRESULT WINAPI IDirect3DRM3Impl_EnumerateObjects(IDirect3DRM3* iface, D3DRMOBJECTCALLBACK cb,
1241 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1243 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, arg);
1248 static HRESULT WINAPI IDirect3DRM3Impl_Load(IDirect3DRM3* iface, LPVOID ObjSource, LPVOID ObjID,
1249 LPIID* GUIDs, DWORD nb_GUIDs, D3DRMLOADOPTIONS LOFlags,
1250 D3DRMLOADCALLBACK LoadProc, LPVOID ArgLP,
1251 D3DRMLOADTEXTURECALLBACK LoadTextureProc, LPVOID ArgLTP,
1252 LPDIRECT3DRMFRAME3 ParentFrame)
1254 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1255 DXFILELOADOPTIONS load_options;
1256 LPDIRECTXFILE pDXFile = NULL;
1257 LPDIRECTXFILEENUMOBJECT pEnumObject = NULL;
1258 LPDIRECTXFILEDATA pData = NULL;
1263 HRESULT ret = D3DRMERR_BADOBJECT;
1266 FIXME("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p): partial implementation\n", iface, This, ObjSource, ObjID, GUIDs,
1267 nb_GUIDs, LOFlags, LoadProc, ArgLP, LoadTextureProc, ArgLTP, ParentFrame);
1269 TRACE("Looking for GUIDs:\n");
1270 for (i = 0; i < nb_GUIDs; i++)
1271 TRACE("- %s (%s)\n", debugstr_guid(GUIDs[i]), get_IID_string(GUIDs[i]));
1273 if (LOFlags == D3DRMLOAD_FROMMEMORY)
1275 load_options = DXFILELOAD_FROMMEMORY;
1277 else if (LOFlags == D3DRMLOAD_FROMFILE)
1279 load_options = DXFILELOAD_FROMFILE;
1280 TRACE("Loading from file %s\n", debugstr_a(ObjSource));
1284 FIXME("Load options %d not supported yet\n", LOFlags);
1288 hr = DirectXFileCreate(&pDXFile);
1289 if (hr != DXFILE_OK)
1292 hr = IDirectXFile_RegisterTemplates(pDXFile, templates, strlen(templates));
1293 if (hr != DXFILE_OK)
1296 hr = IDirectXFile_CreateEnumObject(pDXFile, ObjSource, load_options, &pEnumObject);
1297 if (hr != DXFILE_OK)
1300 hr = IDirectXFileEnumObject_GetNextDataObject(pEnumObject, &pData);
1301 if (hr != DXFILE_OK)
1304 hr = IDirectXFileData_GetType(pData, &pGuid);
1305 if (hr != DXFILE_OK)
1308 TRACE("Found object type whose GUID = %s\n", debugstr_guid(pGuid));
1310 if (!IsEqualGUID(pGuid, &TID_DXFILEHeader))
1312 ret = D3DRMERR_BADFILE;
1316 hr = IDirectXFileData_GetData(pData, NULL, &size, (void**)&pHeader);
1317 if ((hr != DXFILE_OK) || (size != sizeof(Header)))
1320 TRACE("Version is %d %d %d\n", pHeader->major, pHeader->minor, pHeader->flags);
1322 /* Version must be 1.0.x */
1323 if ((pHeader->major != 1) || (pHeader->minor != 0))
1325 ret = D3DRMERR_BADFILE;
1329 IDirectXFileData_Release(pData);
1334 hr = IDirectXFileEnumObject_GetNextDataObject(pEnumObject, &pData);
1335 if (hr == DXFILEERR_NOMOREOBJECTS)
1337 TRACE("No more object\n");
1340 else if (hr != DXFILE_OK)
1342 ret = D3DRMERR_NOTFOUND;
1346 hr = IDirectXFileData_GetType(pData, &pGuid);
1347 if (hr != DXFILE_OK)
1350 TRACE("Found object type whose GUID = %s\n", debugstr_guid(pGuid));
1352 if (IsEqualGUID(pGuid, &TID_D3DRMMesh))
1354 BOOL requested = FALSE;
1357 TRACE("Found TID_D3DRMMesh\n");
1359 for (i = 0; i < nb_GUIDs; i++)
1360 if (IsEqualGUID(GUIDs[i], &IID_IDirect3DRMMeshBuilder) ||
1361 IsEqualGUID(GUIDs[i], &IID_IDirect3DRMMeshBuilder2) ||
1362 IsEqualGUID(GUIDs[i], &IID_IDirect3DRMMeshBuilder3))
1370 LPDIRECT3DRMMESHBUILDER3 meshbuilder;
1372 FIXME("Load mesh data and notify application\n");
1374 hr = IDirect3DRM3_CreateMeshBuilder(iface, &meshbuilder);
1377 LPDIRECT3DRMOBJECT object = NULL;
1379 hr = IDirect3DRMMeshBuilder3_QueryInterface(meshbuilder, GUIDs[i], (void**)&object);
1382 hr = load_mesh_data(meshbuilder, pData);
1384 LoadProc(object, GUIDs[i], ArgLP);
1385 IDirect3DRMObject_Release(object);
1387 IDirect3DRMMeshBuilder3_Release(meshbuilder);
1391 ERR("Cannot process mesh\n");
1394 else if (IsEqualGUID(pGuid, &TID_D3DRMFrame))
1396 BOOL requested = FALSE;
1399 TRACE("Found TID_D3DRMFrame\n");
1401 for (i = 0; i < nb_GUIDs; i++)
1402 if (IsEqualGUID(GUIDs[i], &IID_IDirect3DRMFrame) ||
1403 IsEqualGUID(GUIDs[i], &IID_IDirect3DRMFrame2) ||
1404 IsEqualGUID(GUIDs[i], &IID_IDirect3DRMFrame3))
1412 LPDIRECT3DRMFRAME3 frame;
1414 FIXME("Fake frame data and notify application\n");
1416 hr = IDirect3DRM3_CreateFrame(iface, NULL, &frame);
1419 LPDIRECT3DRMOBJECT object;
1421 hr = IDirect3DRMFrame3_QueryInterface(frame, GUIDs[i], (void**)&object);
1424 LoadProc(object, GUIDs[i], ArgLP);
1425 IDirect3DRMObject_Release(object);
1427 IDirect3DRMFrame3_Release(frame);
1431 ERR("Cannot process frame\n");
1435 else if (IsEqualGUID(pGuid, &TID_D3DRMMaterial))
1437 BOOL requested = FALSE;
1439 TRACE("Found TID_D3DRMMaterial\n");
1441 for (i = 0; i < nb_GUIDs; i++)
1442 if (IsEqualGUID(GUIDs[i], &IID_IDirect3DRMMaterial) ||
1443 IsEqualGUID(GUIDs[i], &IID_IDirect3DRMMaterial2))
1448 FIXME("Processing material not supported yet\n");
1453 FIXME("Found unknown TID %s\n", debugstr_guid(pGuid));
1455 IDirectXFileData_Release(pData);
1463 IDirectXFileData_Release(pData);
1465 IDirectXFileEnumObject_Release(pEnumObject);
1467 IDirectXFile_Release(pDXFile);
1472 static HRESULT WINAPI IDirect3DRM3Impl_Tick(IDirect3DRM3* iface, D3DVALUE tick)
1474 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1476 FIXME("(%p/%p)->(%f): stub\n", iface, This, tick);
1481 static HRESULT WINAPI IDirect3DRM3Impl_CreateProgressiveMesh(IDirect3DRM3* iface,
1482 LPDIRECT3DRMPROGRESSIVEMESH Mesh)
1484 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1486 FIXME("(%p/%p)->(%p): stub\n", iface, This, Mesh);
1491 static HRESULT WINAPI IDirect3DRM3Impl_RegisterClient(IDirect3DRM3* iface, REFGUID rguid,
1494 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1496 FIXME("(%p/%p)->(%s, %p): stub\n", iface, This, debugstr_guid(rguid), id);
1501 static HRESULT WINAPI IDirect3DRM3Impl_UnregisterClient(IDirect3DRM3* iface, REFGUID rguid)
1503 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1505 FIXME("(%p/%p)->(%s): stub\n", iface, This, debugstr_guid(rguid));
1510 static HRESULT WINAPI IDirect3DRM3Impl_CreateClippedVisual(IDirect3DRM3* iface,
1511 LPDIRECT3DRMVISUAL vis,
1512 LPDIRECT3DRMCLIPPEDVISUAL* clippedvis)
1514 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1516 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, vis, clippedvis);
1521 static HRESULT WINAPI IDirect3DRM3Impl_SetOptions(IDirect3DRM3* iface, DWORD opt)
1523 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1525 FIXME("(%p/%p)->(%d): stub\n", iface, This, opt);
1530 static HRESULT WINAPI IDirect3DRM3Impl_GetOptions(IDirect3DRM3* iface, LPDWORD opt)
1532 IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
1534 FIXME("(%p/%p)->(%p): stub\n", iface, This, opt);
1539 static const struct IDirect3DRM3Vtbl Direct3DRM3_Vtbl =
1541 IDirect3DRM3Impl_QueryInterface,
1542 IDirect3DRM3Impl_AddRef,
1543 IDirect3DRM3Impl_Release,
1544 IDirect3DRM3Impl_CreateObject,
1545 IDirect3DRM3Impl_CreateFrame,
1546 IDirect3DRM3Impl_CreateMesh,
1547 IDirect3DRM3Impl_CreateMeshBuilder,
1548 IDirect3DRM3Impl_CreateFace,
1549 IDirect3DRM3Impl_CreateAnimation,
1550 IDirect3DRM3Impl_CreateAnimationSet,
1551 IDirect3DRM3Impl_CreateTexture,
1552 IDirect3DRM3Impl_CreateLight,
1553 IDirect3DRM3Impl_CreateLightRGB,
1554 IDirect3DRM3Impl_Material,
1555 IDirect3DRM3Impl_CreateDevice,
1556 IDirect3DRM3Impl_CreateDeviceFromSurface,
1557 IDirect3DRM3Impl_CreateDeviceFromD3D,
1558 IDirect3DRM3Impl_CreateDeviceFromClipper,
1559 IDirect3DRM3Impl_CreateTextureFromSurface,
1560 IDirect3DRM3Impl_CreateShadow,
1561 IDirect3DRM3Impl_CreateViewport,
1562 IDirect3DRM3Impl_CreateWrap,
1563 IDirect3DRM3Impl_CreateUserVisual,
1564 IDirect3DRM3Impl_LoadTexture,
1565 IDirect3DRM3Impl_LoadTextureFromResource,
1566 IDirect3DRM3Impl_SetSearchPath,
1567 IDirect3DRM3Impl_AddSearchPath,
1568 IDirect3DRM3Impl_GetSearchPath,
1569 IDirect3DRM3Impl_SetDefaultTextureColors,
1570 IDirect3DRM3Impl_SetDefaultTextureShades,
1571 IDirect3DRM3Impl_GetDevices,
1572 IDirect3DRM3Impl_GetNamedObject,
1573 IDirect3DRM3Impl_EnumerateObjects,
1574 IDirect3DRM3Impl_Load,
1575 IDirect3DRM3Impl_Tick,
1576 IDirect3DRM3Impl_CreateProgressiveMesh,
1577 IDirect3DRM3Impl_RegisterClient,
1578 IDirect3DRM3Impl_UnregisterClient,
1579 IDirect3DRM3Impl_CreateClippedVisual,
1580 IDirect3DRM3Impl_SetOptions,
1581 IDirect3DRM3Impl_GetOptions
1584 HRESULT Direct3DRM_create(IUnknown** ppObj)
1586 IDirect3DRMImpl* object;
1588 TRACE("(%p)\n", ppObj);
1590 object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMImpl));
1593 ERR("Out of memory\n");
1594 return E_OUTOFMEMORY;
1597 object->IDirect3DRM_iface.lpVtbl = &Direct3DRM_Vtbl;
1598 object->IDirect3DRM2_iface.lpVtbl = &Direct3DRM2_Vtbl;
1599 object->IDirect3DRM3_iface.lpVtbl = &Direct3DRM3_Vtbl;
1602 *ppObj = (IUnknown*)&object->IDirect3DRM_iface;