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
,
207 D3DCOLOR color
, LPDIRECT3DRMLIGHT
* Light
)
209 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
211 TRACE("(%p/%p)->(%d,%d,%p)\n", iface
, This
, type
, color
, Light
);
213 return IDirect3DRM3_CreateLight(&This
->IDirect3DRM3_iface
, type
, color
, Light
);
216 static HRESULT WINAPI
IDirect3DRMImpl_CreateLightRGB(IDirect3DRM
* iface
, D3DRMLIGHTTYPE type
,
217 D3DVALUE red
, D3DVALUE green
, D3DVALUE blue
,
218 LPDIRECT3DRMLIGHT
* Light
)
220 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
222 TRACE("(%p/%p)->(%d,%f,%f,%f,%p)\n", iface
, This
, type
, red
, green
, blue
, Light
);
224 return IDirect3DRM3_CreateLightRGB(&This
->IDirect3DRM3_iface
, type
, red
, green
, blue
, Light
);
227 static HRESULT WINAPI
IDirect3DRMImpl_Material(IDirect3DRM
* iface
, D3DVALUE m
, LPDIRECT3DRMMATERIAL
* ppMaterial
)
229 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
231 FIXME("(%p/%p)->(%f,%p): stub\n", iface
, This
, m
, ppMaterial
);
236 static HRESULT WINAPI
IDirect3DRMImpl_CreateDevice(IDirect3DRM
* iface
, DWORD width
, DWORD height
, LPDIRECT3DRMDEVICE
* ppDevice
)
238 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
240 FIXME("(%p/%p)->(%u,%u,%p): partial stub\n", iface
, This
, width
, height
, ppDevice
);
242 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice
, (IUnknown
**)ppDevice
);
245 static HRESULT WINAPI
IDirect3DRMImpl_CreateDeviceFromSurface(IDirect3DRM
* iface
, LPGUID pGUID
, LPDIRECTDRAW pDD
, LPDIRECTDRAWSURFACE pDDSBack
, LPDIRECT3DRMDEVICE
* ppDevice
)
247 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
249 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface
, This
, debugstr_guid(pGUID
), pDD
,
252 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice
, (IUnknown
**)ppDevice
);
255 static HRESULT WINAPI
IDirect3DRMImpl_CreateDeviceFromD3D(IDirect3DRM
* iface
, LPDIRECT3D pD3D
, LPDIRECT3DDEVICE pD3DDev
, LPDIRECT3DRMDEVICE
* ppDevice
)
257 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
259 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface
, This
, pD3D
, pD3DDev
, ppDevice
);
261 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice
, (IUnknown
**)ppDevice
);
264 static HRESULT WINAPI
IDirect3DRMImpl_CreateDeviceFromClipper(IDirect3DRM
* iface
, LPDIRECTDRAWCLIPPER pDDClipper
, LPGUID pGUID
, int width
, int height
, LPDIRECT3DRMDEVICE
* ppDevice
)
266 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
268 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface
, This
, pDDClipper
,
269 debugstr_guid(pGUID
), width
, height
, ppDevice
);
271 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice
, (IUnknown
**)ppDevice
);
274 static HRESULT WINAPI
IDirect3DRMImpl_CreateTextureFromSurface(IDirect3DRM
* iface
, LPDIRECTDRAWSURFACE pDDS
, LPDIRECT3DRMTEXTURE
* ppTexture
)
276 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
278 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, pDDS
, ppTexture
);
283 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
)
285 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
287 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 static HRESULT WINAPI
IDirect3DRMImpl_CreateViewport(IDirect3DRM
* iface
, LPDIRECT3DRMDEVICE pDevice
, LPDIRECT3DRMFRAME pFrame
, DWORD xpos
, DWORD ypos
, DWORD width
, DWORD height
, LPDIRECT3DRMVIEWPORT
* ppViewport
)
294 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
296 FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): partial stub\n", iface
, This
, pDevice
, pFrame
,
297 xpos
, ypos
, width
, height
, ppViewport
);
299 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport
, (IUnknown
**)ppViewport
);
302 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
)
304 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
306 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 static HRESULT WINAPI
IDirect3DRMImpl_CreateUserVisual(IDirect3DRM
* iface
, D3DRMUSERVISUALCALLBACK cb
, LPVOID pArg
, LPDIRECT3DRMUSERVISUAL
* ppUserVisual
)
313 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
315 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, cb
, pArg
, ppUserVisual
);
320 static HRESULT WINAPI
IDirect3DRMImpl_LoadTexture(IDirect3DRM
* iface
, const char * filename
, LPDIRECT3DRMTEXTURE
* ppTexture
)
322 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
324 FIXME("(%p/%p)->(%s,%p): stub\n", iface
, This
, filename
, ppTexture
);
329 static HRESULT WINAPI
IDirect3DRMImpl_LoadTextureFromResource(IDirect3DRM
* iface
, HRSRC rs
, LPDIRECT3DRMTEXTURE
* ppTexture
)
331 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
333 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, rs
, ppTexture
);
338 static HRESULT WINAPI
IDirect3DRMImpl_SetSearchPath(IDirect3DRM
* iface
, LPCSTR path
)
340 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
342 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
347 static HRESULT WINAPI
IDirect3DRMImpl_AddSearchPath(IDirect3DRM
* iface
, LPCSTR path
)
349 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
351 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
356 static HRESULT WINAPI
IDirect3DRMImpl_GetSearchPath(IDirect3DRM
* iface
, DWORD
*size_return
, LPSTR path_return
)
358 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
360 FIXME("(%p/%p)->(%p,%s): stub\n", iface
, This
, size_return
, path_return
);
365 static HRESULT WINAPI
IDirect3DRMImpl_SetDefaultTextureColors(IDirect3DRM
* iface
, DWORD nb_colors
)
367 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
369 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_colors
);
374 static HRESULT WINAPI
IDirect3DRMImpl_SetDefaultTextureShades(IDirect3DRM
* iface
, DWORD nb_shades
)
376 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
378 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_shades
);
383 static HRESULT WINAPI
IDirect3DRMImpl_GetDevices(IDirect3DRM
* iface
, LPDIRECT3DRMDEVICEARRAY
* ppDeviceArray
)
385 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
387 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppDeviceArray
);
392 static HRESULT WINAPI
IDirect3DRMImpl_GetNamedObject(IDirect3DRM
* iface
, const char * pName
, LPDIRECT3DRMOBJECT
* ppObject
)
394 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
396 FIXME("(%p/%p)->(%s,%p): stub\n", iface
, This
, pName
, ppObject
);
401 static HRESULT WINAPI
IDirect3DRMImpl_EnumerateObjects(IDirect3DRM
* iface
, D3DRMOBJECTCALLBACK cb
, LPVOID pArg
)
403 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
405 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, pArg
);
410 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
)
412 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
413 LPDIRECT3DRMFRAME3 pParentFrame3
= NULL
;
414 HRESULT hr
= D3DRM_OK
;
416 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
);
419 hr
= IDirect3DRMFrame_QueryInterface(pParentFrame
, &IID_IDirect3DRMFrame3
, (void**)&pParentFrame3
);
421 hr
= IDirect3DRM3_Load(&This
->IDirect3DRM3_iface
, pObjSource
, pObjID
, ppGUIDs
, nb_GUIDs
, LOFlags
, LoadProc
, pArgLP
, LoadTextureProc
, pArgLTP
, pParentFrame3
);
423 IDirect3DRMFrame3_Release(pParentFrame3
);
428 static HRESULT WINAPI
IDirect3DRMImpl_Tick(IDirect3DRM
* iface
, D3DVALUE tick
)
430 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
432 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, tick
);
437 static const struct IDirect3DRMVtbl Direct3DRM_Vtbl
=
439 IDirect3DRMImpl_QueryInterface
,
440 IDirect3DRMImpl_AddRef
,
441 IDirect3DRMImpl_Release
,
442 IDirect3DRMImpl_CreateObject
,
443 IDirect3DRMImpl_CreateFrame
,
444 IDirect3DRMImpl_CreateMesh
,
445 IDirect3DRMImpl_CreateMeshBuilder
,
446 IDirect3DRMImpl_CreateFace
,
447 IDirect3DRMImpl_CreateAnimation
,
448 IDirect3DRMImpl_CreateAnimationSet
,
449 IDirect3DRMImpl_CreateTexture
,
450 IDirect3DRMImpl_CreateLight
,
451 IDirect3DRMImpl_CreateLightRGB
,
452 IDirect3DRMImpl_Material
,
453 IDirect3DRMImpl_CreateDevice
,
454 IDirect3DRMImpl_CreateDeviceFromSurface
,
455 IDirect3DRMImpl_CreateDeviceFromD3D
,
456 IDirect3DRMImpl_CreateDeviceFromClipper
,
457 IDirect3DRMImpl_CreateTextureFromSurface
,
458 IDirect3DRMImpl_CreateShadow
,
459 IDirect3DRMImpl_CreateViewport
,
460 IDirect3DRMImpl_CreateWrap
,
461 IDirect3DRMImpl_CreateUserVisual
,
462 IDirect3DRMImpl_LoadTexture
,
463 IDirect3DRMImpl_LoadTextureFromResource
,
464 IDirect3DRMImpl_SetSearchPath
,
465 IDirect3DRMImpl_AddSearchPath
,
466 IDirect3DRMImpl_GetSearchPath
,
467 IDirect3DRMImpl_SetDefaultTextureColors
,
468 IDirect3DRMImpl_SetDefaultTextureShades
,
469 IDirect3DRMImpl_GetDevices
,
470 IDirect3DRMImpl_GetNamedObject
,
471 IDirect3DRMImpl_EnumerateObjects
,
472 IDirect3DRMImpl_Load
,
477 /*** IUnknown methods ***/
478 static HRESULT WINAPI
IDirect3DRM2Impl_QueryInterface(IDirect3DRM2
* iface
, REFIID riid
,
481 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
482 return IDirect3DRM_QueryInterface(&This
->IDirect3DRM_iface
, riid
, ppvObject
);
485 static ULONG WINAPI
IDirect3DRM2Impl_AddRef(IDirect3DRM2
* iface
)
487 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
488 return IDirect3DRM_AddRef(&This
->IDirect3DRM_iface
);
491 static ULONG WINAPI
IDirect3DRM2Impl_Release(IDirect3DRM2
* iface
)
493 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
494 return IDirect3DRM_Release(&This
->IDirect3DRM_iface
);
497 /*** IDirect3DRM2 methods ***/
498 static HRESULT WINAPI
IDirect3DRM2Impl_CreateObject(IDirect3DRM2
* iface
, REFCLSID rclsid
,
499 LPUNKNOWN pUnkOuter
, REFIID riid
,
502 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
504 FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface
, This
, debugstr_guid(rclsid
), pUnkOuter
,
505 debugstr_guid(riid
), ppvObj
);
510 static HRESULT WINAPI
IDirect3DRM2Impl_CreateFrame(IDirect3DRM2
* iface
,
511 LPDIRECT3DRMFRAME pFrameParent
,
512 LPDIRECT3DRMFRAME2
* ppFrame
)
514 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
516 TRACE("(%p/%p)->(%p,%p)\n", iface
, This
, pFrameParent
, ppFrame
);
519 FIXME("(%p/%p): Parent frame not yet supported\n", iface
, This
);
521 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame2
, (IUnknown
**)ppFrame
);
524 static HRESULT WINAPI
IDirect3DRM2Impl_CreateMesh(IDirect3DRM2
* iface
, LPDIRECT3DRMMESH
* ppMesh
)
526 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
528 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppMesh
);
533 static HRESULT WINAPI
IDirect3DRM2Impl_CreateMeshBuilder(IDirect3DRM2
* iface
,
534 LPDIRECT3DRMMESHBUILDER2
* ppMeshBuilder
)
536 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
538 TRACE("(%p/%p)->(%p)\n", iface
, This
, ppMeshBuilder
);
540 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder2
, (IUnknown
**)ppMeshBuilder
);
543 static HRESULT WINAPI
IDirect3DRM2Impl_CreateFace(IDirect3DRM2
* iface
, LPDIRECT3DRMFACE
* ppFace
)
545 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
547 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppFace
);
552 static HRESULT WINAPI
IDirect3DRM2Impl_CreateAnimation(IDirect3DRM2
* iface
,
553 LPDIRECT3DRMANIMATION
* ppAnimation
)
555 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
557 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppAnimation
);
562 static HRESULT WINAPI
IDirect3DRM2Impl_CreateAnimationSet(IDirect3DRM2
* iface
,
563 LPDIRECT3DRMANIMATIONSET
* ppAnimationSet
)
565 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
567 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppAnimationSet
);
572 static HRESULT WINAPI
IDirect3DRM2Impl_CreateTexture(IDirect3DRM2
* iface
, LPD3DRMIMAGE pImage
,
573 LPDIRECT3DRMTEXTURE2
* ppTexture
)
575 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
577 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, pImage
, ppTexture
);
582 static HRESULT WINAPI
IDirect3DRM2Impl_CreateLight(IDirect3DRM2
* iface
, D3DRMLIGHTTYPE type
,
583 D3DCOLOR color
, LPDIRECT3DRMLIGHT
* Light
)
585 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
587 TRACE("(%p/%p)->(%d,%d,%p)\n", iface
, This
, type
, color
, Light
);
589 return IDirect3DRM3_CreateLight(&This
->IDirect3DRM3_iface
, type
, color
, Light
);
592 static HRESULT WINAPI
IDirect3DRM2Impl_CreateLightRGB(IDirect3DRM2
* iface
, D3DRMLIGHTTYPE type
,
593 D3DVALUE red
, D3DVALUE green
, D3DVALUE blue
,
594 LPDIRECT3DRMLIGHT
* Light
)
596 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
598 TRACE("(%p/%p)->(%d,%f,%f,%f,%p)\n", iface
, This
, type
, red
, green
, blue
, Light
);
600 return IDirect3DRM3_CreateLightRGB(&This
->IDirect3DRM3_iface
, type
, red
, green
, blue
, Light
);
603 static HRESULT WINAPI
IDirect3DRM2Impl_Material(IDirect3DRM2
* iface
, D3DVALUE m
,
604 LPDIRECT3DRMMATERIAL
* ppMaterial
)
606 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
608 FIXME("(%p/%p)->(%f,%p): stub\n", iface
, This
, m
, ppMaterial
);
613 static HRESULT WINAPI
IDirect3DRM2Impl_CreateDevice(IDirect3DRM2
* iface
, DWORD width
, DWORD height
,
614 LPDIRECT3DRMDEVICE2
* ppDevice
)
616 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
618 FIXME("(%p/%p)->(%u,%u,%p): partial stub\n", iface
, This
, width
, height
, ppDevice
);
620 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2
, (IUnknown
**)ppDevice
);
623 static HRESULT WINAPI
IDirect3DRM2Impl_CreateDeviceFromSurface(IDirect3DRM2
* iface
, LPGUID pGUID
,
625 LPDIRECTDRAWSURFACE pDDSBack
,
626 LPDIRECT3DRMDEVICE2
* ppDevice
)
628 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
630 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface
, This
, debugstr_guid(pGUID
),
631 pDD
, pDDSBack
, ppDevice
);
633 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2
, (IUnknown
**)ppDevice
);
636 static HRESULT WINAPI
IDirect3DRM2Impl_CreateDeviceFromD3D(IDirect3DRM2
* iface
, LPDIRECT3D2 pD3D
,
637 LPDIRECT3DDEVICE2 pD3DDev
,
638 LPDIRECT3DRMDEVICE2
* ppDevice
)
640 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
642 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface
, This
, pD3D
, pD3DDev
, ppDevice
);
644 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2
, (IUnknown
**)ppDevice
);
647 static HRESULT WINAPI
IDirect3DRM2Impl_CreateDeviceFromClipper(IDirect3DRM2
* iface
,
648 LPDIRECTDRAWCLIPPER pDDClipper
,
649 LPGUID pGUID
, int width
, int height
,
650 LPDIRECT3DRMDEVICE2
* ppDevice
)
652 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
654 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface
, This
, pDDClipper
,
655 debugstr_guid(pGUID
), width
, height
, ppDevice
);
657 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2
, (IUnknown
**)ppDevice
);
660 static HRESULT WINAPI
IDirect3DRM2Impl_CreateTextureFromSurface(IDirect3DRM2
* iface
,
661 LPDIRECTDRAWSURFACE pDDS
,
662 LPDIRECT3DRMTEXTURE2
* ppTexture
)
664 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
666 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, pDDS
, ppTexture
);
671 static HRESULT WINAPI
IDirect3DRM2Impl_CreateShadow(IDirect3DRM2
* iface
, LPDIRECT3DRMVISUAL pVisual
,
672 LPDIRECT3DRMLIGHT pLight
,
673 D3DVALUE px
, D3DVALUE py
, D3DVALUE pz
,
674 D3DVALUE nx
, D3DVALUE ny
, D3DVALUE nz
,
675 LPDIRECT3DRMVISUAL
* ppVisual
)
677 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
679 FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface
, This
, pVisual
, pLight
, px
, py
, pz
,
680 nx
, ny
, nz
, ppVisual
);
685 static HRESULT WINAPI
IDirect3DRM2Impl_CreateViewport(IDirect3DRM2
* iface
,
686 LPDIRECT3DRMDEVICE pDevice
,
687 LPDIRECT3DRMFRAME pFrame
,
688 DWORD xpos
, DWORD ypos
,
689 DWORD width
, DWORD height
,
690 LPDIRECT3DRMVIEWPORT
* ppViewport
)
692 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
694 FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): partial stub\n", iface
, This
, pDevice
, pFrame
,
695 xpos
, ypos
, width
, height
, ppViewport
);
697 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport
, (IUnknown
**)ppViewport
);
700 static HRESULT WINAPI
IDirect3DRM2Impl_CreateWrap(IDirect3DRM2
* iface
, D3DRMWRAPTYPE type
,
701 LPDIRECT3DRMFRAME pFrame
,
702 D3DVALUE ox
, D3DVALUE oy
, D3DVALUE oz
,
703 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
704 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
,
705 D3DVALUE ou
, D3DVALUE ov
, D3DVALUE su
,
706 D3DVALUE sv
, LPDIRECT3DRMWRAP
* ppWrap
)
708 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
710 FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface
, This
, type
,
711 pFrame
, ox
, oy
, oz
, dx
, dy
, dz
, ux
, uy
, uz
, ou
, ov
, su
, sv
, ppWrap
);
716 static HRESULT WINAPI
IDirect3DRM2Impl_CreateUserVisual(IDirect3DRM2
* iface
,
717 D3DRMUSERVISUALCALLBACK cb
, LPVOID pArg
,
718 LPDIRECT3DRMUSERVISUAL
* ppUserVisual
)
720 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
722 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, cb
, pArg
, ppUserVisual
);
727 static HRESULT WINAPI
IDirect3DRM2Impl_LoadTexture(IDirect3DRM2
* iface
, const char * filename
,
728 LPDIRECT3DRMTEXTURE2
* ppTexture
)
730 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
732 FIXME("(%p/%p)->(%s,%p): stub\n", iface
, This
, filename
, ppTexture
);
737 static HRESULT WINAPI
IDirect3DRM2Impl_LoadTextureFromResource(IDirect3DRM2
* iface
, HMODULE hModule
,
738 LPCSTR strName
, LPCSTR strType
,
739 LPDIRECT3DRMTEXTURE2
* ppTexture
)
741 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
743 FIXME("(%p/%p)->(%p,%p,%p,%p): stub\n", iface
, This
, hModule
, strName
, strType
, ppTexture
);
748 static HRESULT WINAPI
IDirect3DRM2Impl_SetSearchPath(IDirect3DRM2
* iface
, LPCSTR path
)
750 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
752 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
757 static HRESULT WINAPI
IDirect3DRM2Impl_AddSearchPath(IDirect3DRM2
* iface
, LPCSTR path
)
759 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
761 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
766 static HRESULT WINAPI
IDirect3DRM2Impl_GetSearchPath(IDirect3DRM2
* iface
, DWORD
*size_return
,
769 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
771 FIXME("(%p/%p)->(%p,%s): stub\n", iface
, This
, size_return
, path_return
);
776 static HRESULT WINAPI
IDirect3DRM2Impl_SetDefaultTextureColors(IDirect3DRM2
* iface
, DWORD nb_colors
)
778 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
780 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_colors
);
785 static HRESULT WINAPI
IDirect3DRM2Impl_SetDefaultTextureShades(IDirect3DRM2
* iface
, DWORD nb_shades
)
787 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
789 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_shades
);
794 static HRESULT WINAPI
IDirect3DRM2Impl_GetDevices(IDirect3DRM2
* iface
,
795 LPDIRECT3DRMDEVICEARRAY
* ppDeviceArray
)
797 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
799 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppDeviceArray
);
804 static HRESULT WINAPI
IDirect3DRM2Impl_GetNamedObject(IDirect3DRM2
* iface
, const char * pName
,
805 LPDIRECT3DRMOBJECT
* ppObject
)
807 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
809 FIXME("(%p/%p)->(%s,%p): stub\n", iface
, This
, pName
, ppObject
);
814 static HRESULT WINAPI
IDirect3DRM2Impl_EnumerateObjects(IDirect3DRM2
* iface
, D3DRMOBJECTCALLBACK cb
,
817 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
819 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, pArg
);
824 static HRESULT WINAPI
IDirect3DRM2Impl_Load(IDirect3DRM2
* iface
, LPVOID pObjSource
, LPVOID pObjID
,
825 LPIID
* ppGUIDs
, DWORD nb_GUIDs
,
826 D3DRMLOADOPTIONS LOFlags
, D3DRMLOADCALLBACK LoadProc
,
827 LPVOID pArgLP
, D3DRMLOADTEXTURECALLBACK LoadTextureProc
,
828 LPVOID pArgLTP
, LPDIRECT3DRMFRAME pParentFrame
)
830 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
831 LPDIRECT3DRMFRAME3 pParentFrame3
= NULL
;
832 HRESULT hr
= D3DRM_OK
;
834 TRACE("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p)\n", iface
, This
, pObjSource
, pObjID
,
835 ppGUIDs
, nb_GUIDs
, LOFlags
, LoadProc
, pArgLP
, LoadTextureProc
, pArgLTP
, pParentFrame
);
838 hr
= IDirect3DRMFrame_QueryInterface(pParentFrame
, &IID_IDirect3DRMFrame3
, (void**)&pParentFrame3
);
840 hr
= IDirect3DRM3_Load(&This
->IDirect3DRM3_iface
, pObjSource
, pObjID
, ppGUIDs
, nb_GUIDs
, LOFlags
, LoadProc
, pArgLP
, LoadTextureProc
, pArgLTP
, pParentFrame3
);
842 IDirect3DRMFrame3_Release(pParentFrame3
);
847 static HRESULT WINAPI
IDirect3DRM2Impl_Tick(IDirect3DRM2
* iface
, D3DVALUE tick
)
849 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
851 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, tick
);
856 static HRESULT WINAPI
IDirect3DRM2Impl_CreateProgressiveMesh(IDirect3DRM2
* iface
,
857 LPDIRECT3DRMPROGRESSIVEMESH
* ppMesh
)
859 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
861 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppMesh
);
866 static const struct IDirect3DRM2Vtbl Direct3DRM2_Vtbl
=
868 IDirect3DRM2Impl_QueryInterface
,
869 IDirect3DRM2Impl_AddRef
,
870 IDirect3DRM2Impl_Release
,
871 IDirect3DRM2Impl_CreateObject
,
872 IDirect3DRM2Impl_CreateFrame
,
873 IDirect3DRM2Impl_CreateMesh
,
874 IDirect3DRM2Impl_CreateMeshBuilder
,
875 IDirect3DRM2Impl_CreateFace
,
876 IDirect3DRM2Impl_CreateAnimation
,
877 IDirect3DRM2Impl_CreateAnimationSet
,
878 IDirect3DRM2Impl_CreateTexture
,
879 IDirect3DRM2Impl_CreateLight
,
880 IDirect3DRM2Impl_CreateLightRGB
,
881 IDirect3DRM2Impl_Material
,
882 IDirect3DRM2Impl_CreateDevice
,
883 IDirect3DRM2Impl_CreateDeviceFromSurface
,
884 IDirect3DRM2Impl_CreateDeviceFromD3D
,
885 IDirect3DRM2Impl_CreateDeviceFromClipper
,
886 IDirect3DRM2Impl_CreateTextureFromSurface
,
887 IDirect3DRM2Impl_CreateShadow
,
888 IDirect3DRM2Impl_CreateViewport
,
889 IDirect3DRM2Impl_CreateWrap
,
890 IDirect3DRM2Impl_CreateUserVisual
,
891 IDirect3DRM2Impl_LoadTexture
,
892 IDirect3DRM2Impl_LoadTextureFromResource
,
893 IDirect3DRM2Impl_SetSearchPath
,
894 IDirect3DRM2Impl_AddSearchPath
,
895 IDirect3DRM2Impl_GetSearchPath
,
896 IDirect3DRM2Impl_SetDefaultTextureColors
,
897 IDirect3DRM2Impl_SetDefaultTextureShades
,
898 IDirect3DRM2Impl_GetDevices
,
899 IDirect3DRM2Impl_GetNamedObject
,
900 IDirect3DRM2Impl_EnumerateObjects
,
901 IDirect3DRM2Impl_Load
,
902 IDirect3DRM2Impl_Tick
,
903 IDirect3DRM2Impl_CreateProgressiveMesh
907 /*** IUnknown methods ***/
908 static HRESULT WINAPI
IDirect3DRM3Impl_QueryInterface(IDirect3DRM3
* iface
, REFIID riid
,
911 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
912 return IDirect3DRM_QueryInterface(&This
->IDirect3DRM_iface
, riid
, ppvObject
);
915 static ULONG WINAPI
IDirect3DRM3Impl_AddRef(IDirect3DRM3
* iface
)
917 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
918 return IDirect3DRM_AddRef(&This
->IDirect3DRM_iface
);
921 static ULONG WINAPI
IDirect3DRM3Impl_Release(IDirect3DRM3
* iface
)
923 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
924 return IDirect3DRM_Release(&This
->IDirect3DRM_iface
);
927 /*** IDirect3DRM3 methods ***/
928 static HRESULT WINAPI
IDirect3DRM3Impl_CreateObject(IDirect3DRM3
* iface
, REFCLSID rclsid
,
929 LPUNKNOWN unkwn
, REFIID riid
, LPVOID
* object
)
931 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
933 FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface
, This
, debugstr_guid(rclsid
), unkwn
,
934 debugstr_guid(riid
), object
);
939 static HRESULT WINAPI
IDirect3DRM3Impl_CreateFrame(IDirect3DRM3
* iface
,
940 LPDIRECT3DRMFRAME3 FrameParent
,
941 LPDIRECT3DRMFRAME3
* Frame
)
943 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
945 TRACE("(%p/%p)->(%p,%p)\n", iface
, This
, FrameParent
, Frame
);
948 FIXME("(%p/%p): Parent frame not yet supported\n", iface
, This
);
950 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame3
, (IUnknown
**)Frame
);
953 static HRESULT WINAPI
IDirect3DRM3Impl_CreateMesh(IDirect3DRM3
* iface
, LPDIRECT3DRMMESH
* Mesh
)
955 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
957 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, Mesh
);
962 static HRESULT WINAPI
IDirect3DRM3Impl_CreateMeshBuilder(IDirect3DRM3
* iface
,
963 LPDIRECT3DRMMESHBUILDER3
* ppMeshBuilder
)
965 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
967 TRACE("(%p/%p)->(%p)\n", iface
, This
, ppMeshBuilder
);
969 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder3
, (IUnknown
**)ppMeshBuilder
);
972 static HRESULT WINAPI
IDirect3DRM3Impl_CreateFace(IDirect3DRM3
* iface
, LPDIRECT3DRMFACE2
* Face
)
974 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
976 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, Face
);
981 static HRESULT WINAPI
IDirect3DRM3Impl_CreateAnimation(IDirect3DRM3
* iface
,
982 LPDIRECT3DRMANIMATION2
* Animation
)
984 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
986 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, Animation
);
991 static HRESULT WINAPI
IDirect3DRM3Impl_CreateAnimationSet(IDirect3DRM3
* iface
,
992 LPDIRECT3DRMANIMATIONSET2
* AnimationSet
)
994 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
996 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, AnimationSet
);
1001 static HRESULT WINAPI
IDirect3DRM3Impl_CreateTexture(IDirect3DRM3
* iface
, LPD3DRMIMAGE Image
,
1002 LPDIRECT3DRMTEXTURE3
* Texture
)
1004 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1006 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, Image
, Texture
);
1011 static HRESULT WINAPI
IDirect3DRM3Impl_CreateLight(IDirect3DRM3
* iface
, D3DRMLIGHTTYPE type
,
1012 D3DCOLOR color
, LPDIRECT3DRMLIGHT
* Light
)
1014 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1017 FIXME("(%p/%p)->(%d,%d,%p): partial stub\n", iface
, This
, type
, color
, Light
);
1019 ret
= Direct3DRMLight_create((IUnknown
**)Light
);
1023 IDirect3DRMLight_SetType(*Light
, type
);
1024 IDirect3DRMLight_SetColor(*Light
, color
);
1030 static HRESULT WINAPI
IDirect3DRM3Impl_CreateLightRGB(IDirect3DRM3
* iface
, D3DRMLIGHTTYPE type
,
1031 D3DVALUE red
, D3DVALUE green
, D3DVALUE blue
,
1032 LPDIRECT3DRMLIGHT
* Light
)
1034 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1037 FIXME("(%p/%p)->(%d,%f,%f,%f,%p): partial stub\n", iface
, This
, type
, red
, green
, blue
, Light
);
1039 ret
= Direct3DRMLight_create((IUnknown
**)Light
);
1043 IDirect3DRMLight_SetType(*Light
, type
);
1044 IDirect3DRMLight_SetColorRGB(*Light
, red
, green
, blue
);
1050 static HRESULT WINAPI
IDirect3DRM3Impl_Material(IDirect3DRM3
* iface
, D3DVALUE m
,
1051 LPDIRECT3DRMMATERIAL2
* Material
)
1053 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1055 FIXME("(%p/%p)->(%f,%p): stub\n", iface
, This
, m
, Material
);
1060 static HRESULT WINAPI
IDirect3DRM3Impl_CreateDevice(IDirect3DRM3
* iface
, DWORD width
, DWORD height
,
1061 LPDIRECT3DRMDEVICE3
* device
)
1063 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1065 FIXME("(%p/%p)->(%d,%d,%p): partial stub\n", iface
, This
, width
, height
, device
);
1067 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3
, (IUnknown
**)device
);
1070 static HRESULT WINAPI
IDirect3DRM3Impl_CreateDeviceFromSurface(IDirect3DRM3
* iface
, LPGUID pGUID
,
1072 LPDIRECTDRAWSURFACE back
,
1073 LPDIRECT3DRMDEVICE3
* device
)
1075 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1077 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface
, This
, debugstr_guid(pGUID
), dd
, back
, device
);
1079 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3
, (IUnknown
**)device
);
1082 static HRESULT WINAPI
IDirect3DRM3Impl_CreateDeviceFromD3D(IDirect3DRM3
* iface
, LPDIRECT3D2 d3d
,
1083 LPDIRECT3DDEVICE2 d3ddev
,
1084 LPDIRECT3DRMDEVICE3
* device
)
1086 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1088 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface
, This
, d3d
, d3ddev
, device
);
1090 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3
, (IUnknown
**)device
);
1093 static HRESULT WINAPI
IDirect3DRM3Impl_CreateDeviceFromClipper(IDirect3DRM3
* iface
,
1094 LPDIRECTDRAWCLIPPER clipper
,
1095 LPGUID GUID
, int width
, int height
,
1096 LPDIRECT3DRMDEVICE3
* device
)
1098 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1100 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface
, This
, clipper
, debugstr_guid(GUID
),
1101 width
, height
, device
);
1103 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3
, (IUnknown
**)device
);
1106 static HRESULT WINAPI
IDirect3DRM3Impl_CreateShadow(IDirect3DRM3
* iface
, LPUNKNOWN Visual1
,
1107 LPDIRECT3DRMLIGHT Light
, D3DVALUE px
,
1108 D3DVALUE py
, D3DVALUE pz
, D3DVALUE nx
,
1109 D3DVALUE ny
, D3DVALUE nz
,
1110 LPDIRECT3DRMSHADOW2
* Visual2
)
1112 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1114 FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface
, This
, Visual1
, Light
, px
, py
, pz
,
1115 nx
, ny
, nz
, Visual2
);
1120 static HRESULT WINAPI
IDirect3DRM3Impl_CreateTextureFromSurface(IDirect3DRM3
* iface
,
1121 LPDIRECTDRAWSURFACE surface
,
1122 LPDIRECT3DRMTEXTURE3
* texture
)
1124 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1126 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, surface
, texture
);
1131 static HRESULT WINAPI
IDirect3DRM3Impl_CreateViewport(IDirect3DRM3
* iface
,
1132 LPDIRECT3DRMDEVICE3 Device
,
1133 LPDIRECT3DRMFRAME3 frame
, DWORD xpos
,
1134 DWORD ypos
, DWORD width
, DWORD height
,
1135 LPDIRECT3DRMVIEWPORT2
* viewport
)
1137 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1139 FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): stub\n", iface
, This
, Device
, frame
, xpos
, ypos
, width
,
1142 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport2
, (IUnknown
**)viewport
);
1145 static HRESULT WINAPI
IDirect3DRM3Impl_CreateWrap(IDirect3DRM3
* iface
, D3DRMWRAPTYPE type
,
1146 LPDIRECT3DRMFRAME3 frame
,
1147 D3DVALUE ox
, D3DVALUE oy
, D3DVALUE oz
,
1148 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
1149 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
,
1150 D3DVALUE ou
, D3DVALUE ov
, D3DVALUE su
,
1151 D3DVALUE sv
, LPDIRECT3DRMWRAP
* wrap
)
1153 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1155 FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface
, This
, type
,
1156 frame
, ox
, oy
, oz
, dx
, dy
, dz
, ux
, uy
, uz
, ou
, ov
, su
, sv
, wrap
);
1161 static HRESULT WINAPI
IDirect3DRM3Impl_CreateUserVisual(IDirect3DRM3
* iface
,
1162 D3DRMUSERVISUALCALLBACK cb
, LPVOID arg
,
1163 LPDIRECT3DRMUSERVISUAL
* UserVisual
)
1165 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1167 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, cb
, arg
, UserVisual
);
1172 static HRESULT WINAPI
IDirect3DRM3Impl_LoadTexture(IDirect3DRM3
* iface
, const char* filename
,
1173 LPDIRECT3DRMTEXTURE3
* Texture
)
1175 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1177 FIXME("(%p/%p)->(%s,%p): stub\n", iface
, This
, filename
, Texture
);
1182 static HRESULT WINAPI
IDirect3DRM3Impl_LoadTextureFromResource(IDirect3DRM3
* iface
, HMODULE mod
,
1183 LPCSTR strName
, LPCSTR strType
,
1184 LPDIRECT3DRMTEXTURE3
* ppTexture
)
1186 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1188 FIXME("(%p/%p)->(%p,%p,%p,%p): stub\n", iface
, This
, mod
, strName
, strType
, ppTexture
);
1193 static HRESULT WINAPI
IDirect3DRM3Impl_SetSearchPath(IDirect3DRM3
* iface
, LPCSTR path
)
1195 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1197 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
1202 static HRESULT WINAPI
IDirect3DRM3Impl_AddSearchPath(IDirect3DRM3
* iface
, LPCSTR path
)
1204 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1206 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
1211 static HRESULT WINAPI
IDirect3DRM3Impl_GetSearchPath(IDirect3DRM3
* iface
, DWORD
* size_return
,
1214 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1216 FIXME("(%p/%p)->(%p,%s): stub\n", iface
, This
, size_return
, path_return
);
1221 static HRESULT WINAPI
IDirect3DRM3Impl_SetDefaultTextureColors(IDirect3DRM3
* iface
, DWORD nb_colors
)
1223 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1225 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_colors
);
1230 static HRESULT WINAPI
IDirect3DRM3Impl_SetDefaultTextureShades(IDirect3DRM3
* iface
, DWORD nb_shades
)
1232 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1234 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_shades
);
1239 static HRESULT WINAPI
IDirect3DRM3Impl_GetDevices(IDirect3DRM3
* iface
,
1240 LPDIRECT3DRMDEVICEARRAY
* DeviceArray
)
1242 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1244 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, DeviceArray
);
1249 static HRESULT WINAPI
IDirect3DRM3Impl_GetNamedObject(IDirect3DRM3
* iface
, const char* Name
,
1250 LPDIRECT3DRMOBJECT
* Object
)
1252 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1254 FIXME("(%p/%p)->(%s,%p): stub\n", iface
, This
, Name
, Object
);
1259 static HRESULT WINAPI
IDirect3DRM3Impl_EnumerateObjects(IDirect3DRM3
* iface
, D3DRMOBJECTCALLBACK cb
,
1262 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1264 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
1269 HRESULT
load_data(IDirect3DRM3
* iface
, LPDIRECTXFILEDATA data_object
, LPIID
* GUIDs
, DWORD nb_GUIDs
, D3DRMLOADCALLBACK LoadProc
,
1270 LPVOID ArgLP
, D3DRMLOADTEXTURECALLBACK LoadTextureProc
, LPVOID ArgLTP
, LPDIRECT3DRMFRAME3 parent_frame
)
1272 HRESULT ret
= D3DRMERR_BADOBJECT
;
1276 BOOL requested
= FALSE
;
1278 hr
= IDirectXFileData_GetType(data_object
, &guid
);
1279 if (hr
!= DXFILE_OK
)
1282 TRACE("Found object type whose GUID = %s\n", debugstr_guid(guid
));
1284 if (IsEqualGUID(guid
, &TID_D3DRMMesh
))
1286 TRACE("Found TID_D3DRMMesh\n");
1288 for (i
= 0; i
< nb_GUIDs
; i
++)
1289 if (IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMMeshBuilder
) ||
1290 IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMMeshBuilder2
) ||
1291 IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMMeshBuilder3
))
1299 LPDIRECT3DRMMESHBUILDER3 meshbuilder
;
1301 FIXME("Load mesh data and notify application\n");
1303 hr
= IDirect3DRM3_CreateMeshBuilder(iface
, &meshbuilder
);
1306 LPDIRECT3DRMOBJECT object
= NULL
;
1308 hr
= IDirect3DRMMeshBuilder3_QueryInterface(meshbuilder
, GUIDs
[i
], (void**)&object
);
1311 hr
= load_mesh_data(meshbuilder
, data_object
);
1313 LoadProc(object
, GUIDs
[i
], ArgLP
);
1314 IDirect3DRMObject_Release(object
);
1316 IDirect3DRMMeshBuilder3_Release(meshbuilder
);
1320 ERR("Cannot process mesh\n");
1323 else if (IsEqualGUID(guid
, &TID_D3DRMFrame
))
1325 TRACE("Found TID_D3DRMFrame\n");
1327 for (i
= 0; i
< nb_GUIDs
; i
++)
1328 if (IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMFrame
) ||
1329 IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMFrame2
) ||
1330 IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMFrame3
))
1338 LPDIRECT3DRMFRAME3 frame
;
1340 FIXME("Fake frame data and notify application\n");
1342 hr
= IDirect3DRM3_CreateFrame(iface
, NULL
, &frame
);
1345 LPDIRECT3DRMOBJECT object
;
1347 hr
= IDirect3DRMFrame3_QueryInterface(frame
, GUIDs
[i
], (void**)&object
);
1350 LoadProc(object
, GUIDs
[i
], ArgLP
);
1351 IDirect3DRMObject_Release(object
);
1353 IDirect3DRMFrame3_Release(frame
);
1357 ERR("Cannot process frame\n");
1360 else if (IsEqualGUID(guid
, &TID_D3DRMMaterial
))
1362 TRACE("Found TID_D3DRMMaterial\n");
1364 for (i
= 0; i
< nb_GUIDs
; i
++)
1365 if (IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMMaterial
) ||
1366 IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMMaterial2
))
1371 FIXME("Processing material not supported yet\n");
1376 FIXME("Found unknown TID %s\n", debugstr_guid(guid
));
1386 static HRESULT WINAPI
IDirect3DRM3Impl_Load(IDirect3DRM3
* iface
, LPVOID ObjSource
, LPVOID ObjID
,
1387 LPIID
* GUIDs
, DWORD nb_GUIDs
, D3DRMLOADOPTIONS LOFlags
,
1388 D3DRMLOADCALLBACK LoadProc
, LPVOID ArgLP
,
1389 D3DRMLOADTEXTURECALLBACK LoadTextureProc
, LPVOID ArgLTP
,
1390 LPDIRECT3DRMFRAME3 ParentFrame
)
1392 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1393 DXFILELOADOPTIONS load_options
;
1394 LPDIRECTXFILE pDXFile
= NULL
;
1395 LPDIRECTXFILEENUMOBJECT pEnumObject
= NULL
;
1396 LPDIRECTXFILEDATA pData
= NULL
;
1401 HRESULT ret
= D3DRMERR_BADOBJECT
;
1404 FIXME("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p): partial implementation\n", iface
, This
, ObjSource
, ObjID
, GUIDs
,
1405 nb_GUIDs
, LOFlags
, LoadProc
, ArgLP
, LoadTextureProc
, ArgLTP
, ParentFrame
);
1407 TRACE("Looking for GUIDs:\n");
1408 for (i
= 0; i
< nb_GUIDs
; i
++)
1409 TRACE("- %s (%s)\n", debugstr_guid(GUIDs
[i
]), get_IID_string(GUIDs
[i
]));
1411 if (LOFlags
== D3DRMLOAD_FROMMEMORY
)
1413 load_options
= DXFILELOAD_FROMMEMORY
;
1415 else if (LOFlags
== D3DRMLOAD_FROMFILE
)
1417 load_options
= DXFILELOAD_FROMFILE
;
1418 TRACE("Loading from file %s\n", debugstr_a(ObjSource
));
1422 FIXME("Load options %d not supported yet\n", LOFlags
);
1426 hr
= DirectXFileCreate(&pDXFile
);
1427 if (hr
!= DXFILE_OK
)
1430 hr
= IDirectXFile_RegisterTemplates(pDXFile
, templates
, strlen(templates
));
1431 if (hr
!= DXFILE_OK
)
1434 hr
= IDirectXFile_CreateEnumObject(pDXFile
, ObjSource
, load_options
, &pEnumObject
);
1435 if (hr
!= DXFILE_OK
)
1438 hr
= IDirectXFileEnumObject_GetNextDataObject(pEnumObject
, &pData
);
1439 if (hr
!= DXFILE_OK
)
1442 hr
= IDirectXFileData_GetType(pData
, &pGuid
);
1443 if (hr
!= DXFILE_OK
)
1446 TRACE("Found object type whose GUID = %s\n", debugstr_guid(pGuid
));
1448 if (!IsEqualGUID(pGuid
, &TID_DXFILEHeader
))
1450 ret
= D3DRMERR_BADFILE
;
1454 hr
= IDirectXFileData_GetData(pData
, NULL
, &size
, (void**)&pHeader
);
1455 if ((hr
!= DXFILE_OK
) || (size
!= sizeof(Header
)))
1458 TRACE("Version is %d %d %d\n", pHeader
->major
, pHeader
->minor
, pHeader
->flags
);
1460 /* Version must be 1.0.x */
1461 if ((pHeader
->major
!= 1) || (pHeader
->minor
!= 0))
1463 ret
= D3DRMERR_BADFILE
;
1467 IDirectXFileData_Release(pData
);
1472 hr
= IDirectXFileEnumObject_GetNextDataObject(pEnumObject
, &pData
);
1473 if (hr
== DXFILEERR_NOMOREOBJECTS
)
1475 TRACE("No more object\n");
1478 else if (hr
!= DXFILE_OK
)
1480 ret
= D3DRMERR_NOTFOUND
;
1484 ret
= load_data(iface
, pData
, GUIDs
, nb_GUIDs
, LoadProc
, ArgLP
, LoadTextureProc
, ArgLTP
, ParentFrame
);
1485 if (ret
!= D3DRM_OK
)
1488 IDirectXFileData_Release(pData
);
1496 IDirectXFileData_Release(pData
);
1498 IDirectXFileEnumObject_Release(pEnumObject
);
1500 IDirectXFile_Release(pDXFile
);
1505 static HRESULT WINAPI
IDirect3DRM3Impl_Tick(IDirect3DRM3
* iface
, D3DVALUE tick
)
1507 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1509 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, tick
);
1514 static HRESULT WINAPI
IDirect3DRM3Impl_CreateProgressiveMesh(IDirect3DRM3
* iface
,
1515 LPDIRECT3DRMPROGRESSIVEMESH Mesh
)
1517 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1519 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, Mesh
);
1524 static HRESULT WINAPI
IDirect3DRM3Impl_RegisterClient(IDirect3DRM3
* iface
, REFGUID rguid
,
1527 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1529 FIXME("(%p/%p)->(%s, %p): stub\n", iface
, This
, debugstr_guid(rguid
), id
);
1534 static HRESULT WINAPI
IDirect3DRM3Impl_UnregisterClient(IDirect3DRM3
* iface
, REFGUID rguid
)
1536 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1538 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, debugstr_guid(rguid
));
1543 static HRESULT WINAPI
IDirect3DRM3Impl_CreateClippedVisual(IDirect3DRM3
* iface
,
1544 LPDIRECT3DRMVISUAL vis
,
1545 LPDIRECT3DRMCLIPPEDVISUAL
* clippedvis
)
1547 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1549 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, vis
, clippedvis
);
1554 static HRESULT WINAPI
IDirect3DRM3Impl_SetOptions(IDirect3DRM3
* iface
, DWORD opt
)
1556 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1558 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, opt
);
1563 static HRESULT WINAPI
IDirect3DRM3Impl_GetOptions(IDirect3DRM3
* iface
, LPDWORD opt
)
1565 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1567 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, opt
);
1572 static const struct IDirect3DRM3Vtbl Direct3DRM3_Vtbl
=
1574 IDirect3DRM3Impl_QueryInterface
,
1575 IDirect3DRM3Impl_AddRef
,
1576 IDirect3DRM3Impl_Release
,
1577 IDirect3DRM3Impl_CreateObject
,
1578 IDirect3DRM3Impl_CreateFrame
,
1579 IDirect3DRM3Impl_CreateMesh
,
1580 IDirect3DRM3Impl_CreateMeshBuilder
,
1581 IDirect3DRM3Impl_CreateFace
,
1582 IDirect3DRM3Impl_CreateAnimation
,
1583 IDirect3DRM3Impl_CreateAnimationSet
,
1584 IDirect3DRM3Impl_CreateTexture
,
1585 IDirect3DRM3Impl_CreateLight
,
1586 IDirect3DRM3Impl_CreateLightRGB
,
1587 IDirect3DRM3Impl_Material
,
1588 IDirect3DRM3Impl_CreateDevice
,
1589 IDirect3DRM3Impl_CreateDeviceFromSurface
,
1590 IDirect3DRM3Impl_CreateDeviceFromD3D
,
1591 IDirect3DRM3Impl_CreateDeviceFromClipper
,
1592 IDirect3DRM3Impl_CreateTextureFromSurface
,
1593 IDirect3DRM3Impl_CreateShadow
,
1594 IDirect3DRM3Impl_CreateViewport
,
1595 IDirect3DRM3Impl_CreateWrap
,
1596 IDirect3DRM3Impl_CreateUserVisual
,
1597 IDirect3DRM3Impl_LoadTexture
,
1598 IDirect3DRM3Impl_LoadTextureFromResource
,
1599 IDirect3DRM3Impl_SetSearchPath
,
1600 IDirect3DRM3Impl_AddSearchPath
,
1601 IDirect3DRM3Impl_GetSearchPath
,
1602 IDirect3DRM3Impl_SetDefaultTextureColors
,
1603 IDirect3DRM3Impl_SetDefaultTextureShades
,
1604 IDirect3DRM3Impl_GetDevices
,
1605 IDirect3DRM3Impl_GetNamedObject
,
1606 IDirect3DRM3Impl_EnumerateObjects
,
1607 IDirect3DRM3Impl_Load
,
1608 IDirect3DRM3Impl_Tick
,
1609 IDirect3DRM3Impl_CreateProgressiveMesh
,
1610 IDirect3DRM3Impl_RegisterClient
,
1611 IDirect3DRM3Impl_UnregisterClient
,
1612 IDirect3DRM3Impl_CreateClippedVisual
,
1613 IDirect3DRM3Impl_SetOptions
,
1614 IDirect3DRM3Impl_GetOptions
1617 HRESULT
Direct3DRM_create(IUnknown
** ppObj
)
1619 IDirect3DRMImpl
* object
;
1621 TRACE("(%p)\n", ppObj
);
1623 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirect3DRMImpl
));
1626 ERR("Out of memory\n");
1627 return E_OUTOFMEMORY
;
1630 object
->IDirect3DRM_iface
.lpVtbl
= &Direct3DRM_Vtbl
;
1631 object
->IDirect3DRM2_iface
.lpVtbl
= &Direct3DRM2_Vtbl
;
1632 object
->IDirect3DRM3_iface
.lpVtbl
= &Direct3DRM3_Vtbl
;
1635 *ppObj
= (IUnknown
*)&object
->IDirect3DRM_iface
;