2 * Implementation of IDirect3DRM Interface
4 * Copyright 2010, 2012 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 parent_frame
, LPDIRECT3DRMFRAME
* frame
)
142 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
144 TRACE("(%p/%p)->(%p,%p)\n", iface
, This
, parent_frame
, frame
);
146 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame
, (IUnknown
*)parent_frame
, (IUnknown
**)frame
);
149 static HRESULT WINAPI
IDirect3DRMImpl_CreateMesh(IDirect3DRM
* iface
, LPDIRECT3DRMMESH
* ppMesh
)
151 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
153 TRACE("(%p/%p)->(%p)\n", iface
, This
, ppMesh
);
155 return IDirect3DRM3_CreateMesh(&This
->IDirect3DRM3_iface
, ppMesh
);
158 static HRESULT WINAPI
IDirect3DRMImpl_CreateMeshBuilder(IDirect3DRM
* iface
, LPDIRECT3DRMMESHBUILDER
* ppMeshBuilder
)
160 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
162 TRACE("(%p/%p)->(%p)\n", iface
, This
, ppMeshBuilder
);
164 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder
, (IUnknown
**)ppMeshBuilder
);
167 static HRESULT WINAPI
IDirect3DRMImpl_CreateFace(IDirect3DRM
* iface
, LPDIRECT3DRMFACE
* ppFace
)
169 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
171 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppFace
);
176 static HRESULT WINAPI
IDirect3DRMImpl_CreateAnimation(IDirect3DRM
* iface
, LPDIRECT3DRMANIMATION
* ppAnimation
)
178 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
180 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppAnimation
);
185 static HRESULT WINAPI
IDirect3DRMImpl_CreateAnimationSet(IDirect3DRM
* iface
, LPDIRECT3DRMANIMATIONSET
* ppAnimationSet
)
187 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
189 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppAnimationSet
);
194 static HRESULT WINAPI
IDirect3DRMImpl_CreateTexture(IDirect3DRM
*iface
,
195 D3DRMIMAGE
*image
, IDirect3DRMTexture
**texture
)
197 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
199 FIXME("(%p/%p)->(%p,%p): partial stub\n", iface
, This
, image
, texture
);
201 return Direct3DRMTexture_create(&IID_IDirect3DRMTexture
, (IUnknown
**)texture
);
204 static HRESULT WINAPI
IDirect3DRMImpl_CreateLight(IDirect3DRM
* iface
, D3DRMLIGHTTYPE type
,
205 D3DCOLOR color
, LPDIRECT3DRMLIGHT
* Light
)
207 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
209 TRACE("(%p/%p)->(%d,%d,%p)\n", iface
, This
, type
, color
, Light
);
211 return IDirect3DRM3_CreateLight(&This
->IDirect3DRM3_iface
, type
, color
, Light
);
214 static HRESULT WINAPI
IDirect3DRMImpl_CreateLightRGB(IDirect3DRM
* iface
, D3DRMLIGHTTYPE type
,
215 D3DVALUE red
, D3DVALUE green
, D3DVALUE blue
,
216 LPDIRECT3DRMLIGHT
* Light
)
218 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
220 TRACE("(%p/%p)->(%d,%f,%f,%f,%p)\n", iface
, This
, type
, red
, green
, blue
, Light
);
222 return IDirect3DRM3_CreateLightRGB(&This
->IDirect3DRM3_iface
, type
, red
, green
, blue
, Light
);
225 static HRESULT WINAPI
IDirect3DRMImpl_CreateMaterial(IDirect3DRM
* iface
, D3DVALUE power
, LPDIRECT3DRMMATERIAL
* material
)
227 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
229 TRACE("(%p/%p)->(%f,%p)\n", iface
, This
, power
, material
);
231 return IDirect3DRM3_CreateMaterial(&This
->IDirect3DRM3_iface
, power
, (LPDIRECT3DRMMATERIAL2
*)material
);
234 static HRESULT WINAPI
IDirect3DRMImpl_CreateDevice(IDirect3DRM
*iface
,
235 DWORD width
, DWORD height
, IDirect3DRMDevice
**device
)
237 FIXME("iface %p, width %u, height %u, device %p partial stub!\n", iface
, width
, height
, device
);
239 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice
, (IUnknown
**)device
);
242 static HRESULT WINAPI
IDirect3DRMImpl_CreateDeviceFromSurface(IDirect3DRM
*iface
, GUID
*pGUID
,
243 IDirectDraw
*pDD
, IDirectDrawSurface
*pDDSBack
, IDirect3DRMDevice
**ppDevice
)
245 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
247 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface
, This
, debugstr_guid(pGUID
), pDD
,
250 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice
, (IUnknown
**)ppDevice
);
253 static HRESULT WINAPI
IDirect3DRMImpl_CreateDeviceFromD3D(IDirect3DRM
*iface
,
254 IDirect3D
*pD3D
, IDirect3DDevice
*pD3DDev
, IDirect3DRMDevice
**ppDevice
)
256 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
258 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface
, This
, pD3D
, pD3DDev
, ppDevice
);
260 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice
, (IUnknown
**)ppDevice
);
263 static HRESULT WINAPI
IDirect3DRMImpl_CreateDeviceFromClipper(IDirect3DRM
*iface
,
264 IDirectDrawClipper
*pDDClipper
, GUID
*pGUID
, int width
, int height
,
265 IDirect3DRMDevice
**ppDevice
)
267 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
269 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface
, This
, pDDClipper
,
270 debugstr_guid(pGUID
), width
, height
, ppDevice
);
272 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice
, (IUnknown
**)ppDevice
);
275 static HRESULT WINAPI
IDirect3DRMImpl_CreateTextureFromSurface(IDirect3DRM
*iface
,
276 IDirectDrawSurface
*pDDS
, IDirect3DRMTexture
**ppTexture
)
278 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
280 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, pDDS
, ppTexture
);
285 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
)
287 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
289 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
);
294 static HRESULT WINAPI
IDirect3DRMImpl_CreateViewport(IDirect3DRM
*iface
, IDirect3DRMDevice
*device
,
295 IDirect3DRMFrame
*camera
, DWORD x
, DWORD y
, DWORD width
, DWORD height
, IDirect3DRMViewport
**viewport
)
297 FIXME("iface %p, device %p, camera %p, x %u, y %u, width %u, height %u, viewport %p partial stub!\n",
298 iface
, device
, camera
, x
, y
, width
, height
, viewport
);
300 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport
, (IUnknown
**)viewport
);
303 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
)
305 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
307 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
);
312 static HRESULT WINAPI
IDirect3DRMImpl_CreateUserVisual(IDirect3DRM
* iface
, D3DRMUSERVISUALCALLBACK cb
, LPVOID pArg
, LPDIRECT3DRMUSERVISUAL
* ppUserVisual
)
314 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
316 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, cb
, pArg
, ppUserVisual
);
321 static HRESULT WINAPI
IDirect3DRMImpl_LoadTexture(IDirect3DRM
* iface
, const char * filename
, LPDIRECT3DRMTEXTURE
* ppTexture
)
323 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
325 FIXME("(%p/%p)->(%s,%p): stub\n", iface
, This
, filename
, ppTexture
);
330 static HRESULT WINAPI
IDirect3DRMImpl_LoadTextureFromResource(IDirect3DRM
* iface
, HRSRC rs
, LPDIRECT3DRMTEXTURE
* ppTexture
)
332 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
334 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, rs
, ppTexture
);
339 static HRESULT WINAPI
IDirect3DRMImpl_SetSearchPath(IDirect3DRM
* iface
, LPCSTR path
)
341 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
343 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
348 static HRESULT WINAPI
IDirect3DRMImpl_AddSearchPath(IDirect3DRM
* iface
, LPCSTR path
)
350 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
352 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
357 static HRESULT WINAPI
IDirect3DRMImpl_GetSearchPath(IDirect3DRM
* iface
, DWORD
*size_return
, LPSTR path_return
)
359 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
361 FIXME("(%p/%p)->(%p,%s): stub\n", iface
, This
, size_return
, path_return
);
366 static HRESULT WINAPI
IDirect3DRMImpl_SetDefaultTextureColors(IDirect3DRM
* iface
, DWORD nb_colors
)
368 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
370 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_colors
);
375 static HRESULT WINAPI
IDirect3DRMImpl_SetDefaultTextureShades(IDirect3DRM
* iface
, DWORD nb_shades
)
377 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
379 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_shades
);
384 static HRESULT WINAPI
IDirect3DRMImpl_GetDevices(IDirect3DRM
* iface
, LPDIRECT3DRMDEVICEARRAY
* ppDeviceArray
)
386 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM(iface
);
388 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppDeviceArray
);
393 static HRESULT WINAPI
IDirect3DRMImpl_GetNamedObject(IDirect3DRM
*iface
,
394 const char *name
, IDirect3DRMObject
**object
)
396 FIXME("iface %p, name %s, object %p stub!\n", iface
, debugstr_a(name
), object
);
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_CreateMaterial
,
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
, LPDIRECT3DRMFRAME parent_frame
,
511 LPDIRECT3DRMFRAME2
* frame
)
513 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
515 TRACE("(%p/%p)->(%p,%p)\n", iface
, This
, parent_frame
, frame
);
517 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame2
, (IUnknown
*)parent_frame
, (IUnknown
**)frame
);
520 static HRESULT WINAPI
IDirect3DRM2Impl_CreateMesh(IDirect3DRM2
* iface
, LPDIRECT3DRMMESH
* ppMesh
)
522 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
524 TRACE("(%p/%p)->(%p)\n", iface
, This
, ppMesh
);
526 return IDirect3DRM3_CreateMesh(&This
->IDirect3DRM3_iface
, ppMesh
);
529 static HRESULT WINAPI
IDirect3DRM2Impl_CreateMeshBuilder(IDirect3DRM2
* iface
,
530 LPDIRECT3DRMMESHBUILDER2
* ppMeshBuilder
)
532 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
534 TRACE("(%p/%p)->(%p)\n", iface
, This
, ppMeshBuilder
);
536 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder2
, (IUnknown
**)ppMeshBuilder
);
539 static HRESULT WINAPI
IDirect3DRM2Impl_CreateFace(IDirect3DRM2
* iface
, LPDIRECT3DRMFACE
* ppFace
)
541 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
543 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppFace
);
548 static HRESULT WINAPI
IDirect3DRM2Impl_CreateAnimation(IDirect3DRM2
* iface
,
549 LPDIRECT3DRMANIMATION
* ppAnimation
)
551 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
553 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppAnimation
);
558 static HRESULT WINAPI
IDirect3DRM2Impl_CreateAnimationSet(IDirect3DRM2
* iface
,
559 LPDIRECT3DRMANIMATIONSET
* ppAnimationSet
)
561 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
563 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppAnimationSet
);
568 static HRESULT WINAPI
IDirect3DRM2Impl_CreateTexture(IDirect3DRM2
*iface
,
569 D3DRMIMAGE
*image
, IDirect3DRMTexture2
**texture
)
571 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
573 FIXME("(%p/%p)->(%p,%p): partial stub\n", iface
, This
, image
, texture
);
575 return Direct3DRMTexture_create(&IID_IDirect3DRMTexture2
, (IUnknown
**)texture
);
578 static HRESULT WINAPI
IDirect3DRM2Impl_CreateLight(IDirect3DRM2
* iface
, D3DRMLIGHTTYPE type
,
579 D3DCOLOR color
, LPDIRECT3DRMLIGHT
* Light
)
581 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
583 TRACE("(%p/%p)->(%d,%d,%p)\n", iface
, This
, type
, color
, Light
);
585 return IDirect3DRM3_CreateLight(&This
->IDirect3DRM3_iface
, type
, color
, Light
);
588 static HRESULT WINAPI
IDirect3DRM2Impl_CreateLightRGB(IDirect3DRM2
* iface
, D3DRMLIGHTTYPE type
,
589 D3DVALUE red
, D3DVALUE green
, D3DVALUE blue
,
590 LPDIRECT3DRMLIGHT
* Light
)
592 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
594 TRACE("(%p/%p)->(%d,%f,%f,%f,%p)\n", iface
, This
, type
, red
, green
, blue
, Light
);
596 return IDirect3DRM3_CreateLightRGB(&This
->IDirect3DRM3_iface
, type
, red
, green
, blue
, Light
);
599 static HRESULT WINAPI
IDirect3DRM2Impl_CreateMaterial(IDirect3DRM2
* iface
, D3DVALUE power
,
600 LPDIRECT3DRMMATERIAL
* material
)
602 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
604 TRACE("(%p/%p)->(%f,%p)\n", iface
, This
, power
, material
);
606 return IDirect3DRM3_CreateMaterial(&This
->IDirect3DRM3_iface
, power
, (LPDIRECT3DRMMATERIAL2
*)material
);
609 static HRESULT WINAPI
IDirect3DRM2Impl_CreateDevice(IDirect3DRM2
*iface
,
610 DWORD width
, DWORD height
, IDirect3DRMDevice2
**device
)
612 FIXME("iface %p, width %u, height %u, device %p.\n", iface
, width
, height
, device
);
614 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2
, (IUnknown
**)device
);
617 static HRESULT WINAPI
IDirect3DRM2Impl_CreateDeviceFromSurface(IDirect3DRM2
*iface
, GUID
*pGUID
,
618 IDirectDraw
*pDD
, IDirectDrawSurface
*pDDSBack
, IDirect3DRMDevice2
**ppDevice
)
620 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
622 FIXME("(%p/%p)->(%s,%p,%p,%p): partial stub\n", iface
, This
, debugstr_guid(pGUID
),
623 pDD
, pDDSBack
, ppDevice
);
625 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2
, (IUnknown
**)ppDevice
);
628 static HRESULT WINAPI
IDirect3DRM2Impl_CreateDeviceFromD3D(IDirect3DRM2
*iface
,
629 IDirect3D2
*pD3D
, IDirect3DDevice2
*pD3DDev
, IDirect3DRMDevice2
**ppDevice
)
631 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
633 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface
, This
, pD3D
, pD3DDev
, ppDevice
);
635 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2
, (IUnknown
**)ppDevice
);
638 static HRESULT WINAPI
IDirect3DRM2Impl_CreateDeviceFromClipper(IDirect3DRM2
*iface
,
639 IDirectDrawClipper
*pDDClipper
, GUID
*pGUID
, int width
, int height
,
640 IDirect3DRMDevice2
**ppDevice
)
642 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
644 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface
, This
, pDDClipper
,
645 debugstr_guid(pGUID
), width
, height
, ppDevice
);
647 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice2
, (IUnknown
**)ppDevice
);
650 static HRESULT WINAPI
IDirect3DRM2Impl_CreateTextureFromSurface(IDirect3DRM2
*iface
,
651 IDirectDrawSurface
*pDDS
, IDirect3DRMTexture2
**ppTexture
)
653 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
655 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, pDDS
, ppTexture
);
660 static HRESULT WINAPI
IDirect3DRM2Impl_CreateShadow(IDirect3DRM2
* iface
, LPDIRECT3DRMVISUAL pVisual
,
661 LPDIRECT3DRMLIGHT pLight
,
662 D3DVALUE px
, D3DVALUE py
, D3DVALUE pz
,
663 D3DVALUE nx
, D3DVALUE ny
, D3DVALUE nz
,
664 LPDIRECT3DRMVISUAL
* ppVisual
)
666 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
668 FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface
, This
, pVisual
, pLight
, px
, py
, pz
,
669 nx
, ny
, nz
, ppVisual
);
674 static HRESULT WINAPI
IDirect3DRM2Impl_CreateViewport(IDirect3DRM2
*iface
, IDirect3DRMDevice
*device
,
675 IDirect3DRMFrame
*camera
, DWORD x
, DWORD y
, DWORD width
, DWORD height
, IDirect3DRMViewport
**viewport
)
677 FIXME("iface %p, device %p, camera %p, x %u, y %u, width %u, height %u, viewport %p partial stub!\n",
678 iface
, device
, camera
, x
, y
, width
, height
, viewport
);
680 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport
, (IUnknown
**)viewport
);
683 static HRESULT WINAPI
IDirect3DRM2Impl_CreateWrap(IDirect3DRM2
* iface
, D3DRMWRAPTYPE type
,
684 LPDIRECT3DRMFRAME pFrame
,
685 D3DVALUE ox
, D3DVALUE oy
, D3DVALUE oz
,
686 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
687 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
,
688 D3DVALUE ou
, D3DVALUE ov
, D3DVALUE su
,
689 D3DVALUE sv
, LPDIRECT3DRMWRAP
* ppWrap
)
691 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
693 FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface
, This
, type
,
694 pFrame
, ox
, oy
, oz
, dx
, dy
, dz
, ux
, uy
, uz
, ou
, ov
, su
, sv
, ppWrap
);
699 static HRESULT WINAPI
IDirect3DRM2Impl_CreateUserVisual(IDirect3DRM2
* iface
,
700 D3DRMUSERVISUALCALLBACK cb
, LPVOID pArg
,
701 LPDIRECT3DRMUSERVISUAL
* ppUserVisual
)
703 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
705 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, cb
, pArg
, ppUserVisual
);
710 static HRESULT WINAPI
IDirect3DRM2Impl_LoadTexture(IDirect3DRM2
* iface
, const char * filename
,
711 LPDIRECT3DRMTEXTURE2
* ppTexture
)
713 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
715 FIXME("(%p/%p)->(%s,%p): stub\n", iface
, This
, filename
, ppTexture
);
720 static HRESULT WINAPI
IDirect3DRM2Impl_LoadTextureFromResource(IDirect3DRM2
* iface
, HMODULE hModule
,
721 LPCSTR strName
, LPCSTR strType
,
722 LPDIRECT3DRMTEXTURE2
* ppTexture
)
724 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
726 FIXME("(%p/%p)->(%p,%p,%p,%p): stub\n", iface
, This
, hModule
, strName
, strType
, ppTexture
);
731 static HRESULT WINAPI
IDirect3DRM2Impl_SetSearchPath(IDirect3DRM2
* iface
, LPCSTR path
)
733 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
735 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
740 static HRESULT WINAPI
IDirect3DRM2Impl_AddSearchPath(IDirect3DRM2
* iface
, LPCSTR path
)
742 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
744 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
749 static HRESULT WINAPI
IDirect3DRM2Impl_GetSearchPath(IDirect3DRM2
* iface
, DWORD
*size_return
,
752 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
754 FIXME("(%p/%p)->(%p,%s): stub\n", iface
, This
, size_return
, path_return
);
759 static HRESULT WINAPI
IDirect3DRM2Impl_SetDefaultTextureColors(IDirect3DRM2
* iface
, DWORD nb_colors
)
761 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
763 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_colors
);
768 static HRESULT WINAPI
IDirect3DRM2Impl_SetDefaultTextureShades(IDirect3DRM2
* iface
, DWORD nb_shades
)
770 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
772 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_shades
);
777 static HRESULT WINAPI
IDirect3DRM2Impl_GetDevices(IDirect3DRM2
* iface
,
778 LPDIRECT3DRMDEVICEARRAY
* ppDeviceArray
)
780 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
782 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppDeviceArray
);
787 static HRESULT WINAPI
IDirect3DRM2Impl_GetNamedObject(IDirect3DRM2
*iface
,
788 const char *name
, IDirect3DRMObject
**object
)
790 FIXME("iface %p, name %s, object %p stub!\n", iface
, debugstr_a(name
), object
);
795 static HRESULT WINAPI
IDirect3DRM2Impl_EnumerateObjects(IDirect3DRM2
* iface
, D3DRMOBJECTCALLBACK cb
,
798 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
800 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, pArg
);
805 static HRESULT WINAPI
IDirect3DRM2Impl_Load(IDirect3DRM2
* iface
, LPVOID pObjSource
, LPVOID pObjID
,
806 LPIID
* ppGUIDs
, DWORD nb_GUIDs
,
807 D3DRMLOADOPTIONS LOFlags
, D3DRMLOADCALLBACK LoadProc
,
808 LPVOID pArgLP
, D3DRMLOADTEXTURECALLBACK LoadTextureProc
,
809 LPVOID pArgLTP
, LPDIRECT3DRMFRAME pParentFrame
)
811 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
812 LPDIRECT3DRMFRAME3 pParentFrame3
= NULL
;
813 HRESULT hr
= D3DRM_OK
;
815 TRACE("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p)\n", iface
, This
, pObjSource
, pObjID
,
816 ppGUIDs
, nb_GUIDs
, LOFlags
, LoadProc
, pArgLP
, LoadTextureProc
, pArgLTP
, pParentFrame
);
819 hr
= IDirect3DRMFrame_QueryInterface(pParentFrame
, &IID_IDirect3DRMFrame3
, (void**)&pParentFrame3
);
821 hr
= IDirect3DRM3_Load(&This
->IDirect3DRM3_iface
, pObjSource
, pObjID
, ppGUIDs
, nb_GUIDs
, LOFlags
, LoadProc
, pArgLP
, LoadTextureProc
, pArgLTP
, pParentFrame3
);
823 IDirect3DRMFrame3_Release(pParentFrame3
);
828 static HRESULT WINAPI
IDirect3DRM2Impl_Tick(IDirect3DRM2
* iface
, D3DVALUE tick
)
830 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
832 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, tick
);
837 static HRESULT WINAPI
IDirect3DRM2Impl_CreateProgressiveMesh(IDirect3DRM2
* iface
,
838 LPDIRECT3DRMPROGRESSIVEMESH
* ppMesh
)
840 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM2(iface
);
842 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, ppMesh
);
847 static const struct IDirect3DRM2Vtbl Direct3DRM2_Vtbl
=
849 IDirect3DRM2Impl_QueryInterface
,
850 IDirect3DRM2Impl_AddRef
,
851 IDirect3DRM2Impl_Release
,
852 IDirect3DRM2Impl_CreateObject
,
853 IDirect3DRM2Impl_CreateFrame
,
854 IDirect3DRM2Impl_CreateMesh
,
855 IDirect3DRM2Impl_CreateMeshBuilder
,
856 IDirect3DRM2Impl_CreateFace
,
857 IDirect3DRM2Impl_CreateAnimation
,
858 IDirect3DRM2Impl_CreateAnimationSet
,
859 IDirect3DRM2Impl_CreateTexture
,
860 IDirect3DRM2Impl_CreateLight
,
861 IDirect3DRM2Impl_CreateLightRGB
,
862 IDirect3DRM2Impl_CreateMaterial
,
863 IDirect3DRM2Impl_CreateDevice
,
864 IDirect3DRM2Impl_CreateDeviceFromSurface
,
865 IDirect3DRM2Impl_CreateDeviceFromD3D
,
866 IDirect3DRM2Impl_CreateDeviceFromClipper
,
867 IDirect3DRM2Impl_CreateTextureFromSurface
,
868 IDirect3DRM2Impl_CreateShadow
,
869 IDirect3DRM2Impl_CreateViewport
,
870 IDirect3DRM2Impl_CreateWrap
,
871 IDirect3DRM2Impl_CreateUserVisual
,
872 IDirect3DRM2Impl_LoadTexture
,
873 IDirect3DRM2Impl_LoadTextureFromResource
,
874 IDirect3DRM2Impl_SetSearchPath
,
875 IDirect3DRM2Impl_AddSearchPath
,
876 IDirect3DRM2Impl_GetSearchPath
,
877 IDirect3DRM2Impl_SetDefaultTextureColors
,
878 IDirect3DRM2Impl_SetDefaultTextureShades
,
879 IDirect3DRM2Impl_GetDevices
,
880 IDirect3DRM2Impl_GetNamedObject
,
881 IDirect3DRM2Impl_EnumerateObjects
,
882 IDirect3DRM2Impl_Load
,
883 IDirect3DRM2Impl_Tick
,
884 IDirect3DRM2Impl_CreateProgressiveMesh
888 /*** IUnknown methods ***/
889 static HRESULT WINAPI
IDirect3DRM3Impl_QueryInterface(IDirect3DRM3
* iface
, REFIID riid
,
892 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
893 return IDirect3DRM_QueryInterface(&This
->IDirect3DRM_iface
, riid
, ppvObject
);
896 static ULONG WINAPI
IDirect3DRM3Impl_AddRef(IDirect3DRM3
* iface
)
898 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
899 return IDirect3DRM_AddRef(&This
->IDirect3DRM_iface
);
902 static ULONG WINAPI
IDirect3DRM3Impl_Release(IDirect3DRM3
* iface
)
904 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
905 return IDirect3DRM_Release(&This
->IDirect3DRM_iface
);
908 /*** IDirect3DRM3 methods ***/
909 static HRESULT WINAPI
IDirect3DRM3Impl_CreateObject(IDirect3DRM3
* iface
, REFCLSID rclsid
,
910 LPUNKNOWN unkwn
, REFIID riid
, LPVOID
* object
)
912 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
914 FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface
, This
, debugstr_guid(rclsid
), unkwn
,
915 debugstr_guid(riid
), object
);
920 static HRESULT WINAPI
IDirect3DRM3Impl_CreateFrame(IDirect3DRM3
* iface
, LPDIRECT3DRMFRAME3 parent_frame
,
921 LPDIRECT3DRMFRAME3
* frame
)
923 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
925 TRACE("(%p/%p)->(%p,%p)\n", iface
, This
, parent_frame
, frame
);
927 return Direct3DRMFrame_create(&IID_IDirect3DRMFrame3
, (IUnknown
*)parent_frame
, (IUnknown
**)frame
);
930 static HRESULT WINAPI
IDirect3DRM3Impl_CreateMesh(IDirect3DRM3
* iface
, LPDIRECT3DRMMESH
* Mesh
)
932 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
934 TRACE("(%p/%p)->(%p)\n", iface
, This
, Mesh
);
936 return Direct3DRMMesh_create(Mesh
);
939 static HRESULT WINAPI
IDirect3DRM3Impl_CreateMeshBuilder(IDirect3DRM3
* iface
,
940 LPDIRECT3DRMMESHBUILDER3
* ppMeshBuilder
)
942 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
944 TRACE("(%p/%p)->(%p)\n", iface
, This
, ppMeshBuilder
);
946 return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder3
, (IUnknown
**)ppMeshBuilder
);
949 static HRESULT WINAPI
IDirect3DRM3Impl_CreateFace(IDirect3DRM3
* iface
, LPDIRECT3DRMFACE2
* Face
)
951 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
953 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, Face
);
958 static HRESULT WINAPI
IDirect3DRM3Impl_CreateAnimation(IDirect3DRM3
* iface
,
959 LPDIRECT3DRMANIMATION2
* Animation
)
961 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
963 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, Animation
);
968 static HRESULT WINAPI
IDirect3DRM3Impl_CreateAnimationSet(IDirect3DRM3
* iface
,
969 LPDIRECT3DRMANIMATIONSET2
* AnimationSet
)
971 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
973 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, AnimationSet
);
978 static HRESULT WINAPI
IDirect3DRM3Impl_CreateTexture(IDirect3DRM3
*iface
,
979 D3DRMIMAGE
*image
, IDirect3DRMTexture3
**texture
)
981 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
983 FIXME("(%p/%p)->(%p,%p): partial stub\n", iface
, This
, image
, texture
);
985 return Direct3DRMTexture_create(&IID_IDirect3DRMTexture3
, (IUnknown
**)texture
);
988 static HRESULT WINAPI
IDirect3DRM3Impl_CreateLight(IDirect3DRM3
* iface
, D3DRMLIGHTTYPE type
,
989 D3DCOLOR color
, LPDIRECT3DRMLIGHT
* Light
)
991 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
994 FIXME("(%p/%p)->(%d,%d,%p): partial stub\n", iface
, This
, type
, color
, Light
);
996 ret
= Direct3DRMLight_create((IUnknown
**)Light
);
1000 IDirect3DRMLight_SetType(*Light
, type
);
1001 IDirect3DRMLight_SetColor(*Light
, color
);
1007 static HRESULT WINAPI
IDirect3DRM3Impl_CreateLightRGB(IDirect3DRM3
* iface
, D3DRMLIGHTTYPE type
,
1008 D3DVALUE red
, D3DVALUE green
, D3DVALUE blue
,
1009 LPDIRECT3DRMLIGHT
* Light
)
1011 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1014 FIXME("(%p/%p)->(%d,%f,%f,%f,%p): partial stub\n", iface
, This
, type
, red
, green
, blue
, Light
);
1016 ret
= Direct3DRMLight_create((IUnknown
**)Light
);
1020 IDirect3DRMLight_SetType(*Light
, type
);
1021 IDirect3DRMLight_SetColorRGB(*Light
, red
, green
, blue
);
1027 static HRESULT WINAPI
IDirect3DRM3Impl_CreateMaterial(IDirect3DRM3
* iface
, D3DVALUE power
,
1028 LPDIRECT3DRMMATERIAL2
* material
)
1030 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1033 TRACE("(%p/%p)->(%f,%p)\n", iface
, This
, power
, material
);
1035 ret
= Direct3DRMMaterial_create(material
);
1038 IDirect3DRMMaterial2_SetPower(*material
, power
);
1043 static HRESULT WINAPI
IDirect3DRM3Impl_CreateDevice(IDirect3DRM3
*iface
,
1044 DWORD width
, DWORD height
, IDirect3DRMDevice3
**device
)
1046 FIXME("iface %p, width %u, height %u, device %p partial stub!\n", iface
, width
, height
, device
);
1048 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3
, (IUnknown
**)device
);
1051 static HRESULT WINAPI
IDirect3DRM3Impl_CreateDeviceFromSurface(IDirect3DRM3
*iface
, GUID
*pGUID
,
1052 IDirectDraw
*dd
, IDirectDrawSurface
*back
, IDirect3DRMDevice3
**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
,
1062 IDirect3D2
*d3d
, IDirect3DDevice2
*d3ddev
, IDirect3DRMDevice3
**device
)
1064 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1066 FIXME("(%p/%p)->(%p,%p,%p): partial stub\n", iface
, This
, d3d
, d3ddev
, device
);
1068 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3
, (IUnknown
**)device
);
1071 static HRESULT WINAPI
IDirect3DRM3Impl_CreateDeviceFromClipper(IDirect3DRM3
*iface
,
1072 IDirectDrawClipper
*clipper
, GUID
*guid
, int width
, int height
,
1073 IDirect3DRMDevice3
**device
)
1075 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1077 FIXME("(%p/%p)->(%p,%s,%d,%d,%p): partial stub\n", iface
, This
, clipper
, debugstr_guid(guid
),
1078 width
, height
, device
);
1080 return Direct3DRMDevice_create(&IID_IDirect3DRMDevice3
, (IUnknown
**)device
);
1083 static HRESULT WINAPI
IDirect3DRM3Impl_CreateShadow(IDirect3DRM3
* iface
, LPUNKNOWN Visual1
,
1084 LPDIRECT3DRMLIGHT Light
, D3DVALUE px
,
1085 D3DVALUE py
, D3DVALUE pz
, D3DVALUE nx
,
1086 D3DVALUE ny
, D3DVALUE nz
,
1087 LPDIRECT3DRMSHADOW2
* Visual2
)
1089 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1091 FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface
, This
, Visual1
, Light
, px
, py
, pz
,
1092 nx
, ny
, nz
, Visual2
);
1097 static HRESULT WINAPI
IDirect3DRM3Impl_CreateTextureFromSurface(IDirect3DRM3
*iface
,
1098 IDirectDrawSurface
*surface
, IDirect3DRMTexture3
**texture
)
1100 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1102 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, surface
, texture
);
1107 static HRESULT WINAPI
IDirect3DRM3Impl_CreateViewport(IDirect3DRM3
*iface
, IDirect3DRMDevice3
*device
,
1108 IDirect3DRMFrame3
*camera
, DWORD x
, DWORD y
, DWORD width
, DWORD height
, IDirect3DRMViewport2
**viewport
)
1110 FIXME("iface %p, device %p, camera %p, x %u, y %u, width %u, height %u, viewport %p partial stub!\n",
1111 iface
, device
, camera
, x
, y
, width
, height
, viewport
);
1113 return Direct3DRMViewport_create(&IID_IDirect3DRMViewport2
, (IUnknown
**)viewport
);
1116 static HRESULT WINAPI
IDirect3DRM3Impl_CreateWrap(IDirect3DRM3
* iface
, D3DRMWRAPTYPE type
,
1117 LPDIRECT3DRMFRAME3 frame
,
1118 D3DVALUE ox
, D3DVALUE oy
, D3DVALUE oz
,
1119 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
1120 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
,
1121 D3DVALUE ou
, D3DVALUE ov
, D3DVALUE su
,
1122 D3DVALUE sv
, LPDIRECT3DRMWRAP
* wrap
)
1124 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1126 FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface
, This
, type
,
1127 frame
, ox
, oy
, oz
, dx
, dy
, dz
, ux
, uy
, uz
, ou
, ov
, su
, sv
, wrap
);
1132 static HRESULT WINAPI
IDirect3DRM3Impl_CreateUserVisual(IDirect3DRM3
* iface
,
1133 D3DRMUSERVISUALCALLBACK cb
, LPVOID arg
,
1134 LPDIRECT3DRMUSERVISUAL
* UserVisual
)
1136 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1138 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, cb
, arg
, UserVisual
);
1143 static HRESULT WINAPI
IDirect3DRM3Impl_LoadTexture(IDirect3DRM3
* iface
, const char* filename
,
1144 LPDIRECT3DRMTEXTURE3
* Texture
)
1146 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1148 FIXME("(%p/%p)->(%s,%p): stub\n", iface
, This
, filename
, Texture
);
1153 static HRESULT WINAPI
IDirect3DRM3Impl_LoadTextureFromResource(IDirect3DRM3
* iface
, HMODULE mod
,
1154 LPCSTR strName
, LPCSTR strType
,
1155 LPDIRECT3DRMTEXTURE3
* ppTexture
)
1157 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1159 FIXME("(%p/%p)->(%p,%p,%p,%p): stub\n", iface
, This
, mod
, strName
, strType
, ppTexture
);
1164 static HRESULT WINAPI
IDirect3DRM3Impl_SetSearchPath(IDirect3DRM3
* iface
, LPCSTR path
)
1166 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1168 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
1173 static HRESULT WINAPI
IDirect3DRM3Impl_AddSearchPath(IDirect3DRM3
* iface
, LPCSTR path
)
1175 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1177 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, path
);
1182 static HRESULT WINAPI
IDirect3DRM3Impl_GetSearchPath(IDirect3DRM3
* iface
, DWORD
* size_return
,
1185 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1187 FIXME("(%p/%p)->(%p,%s): stub\n", iface
, This
, size_return
, path_return
);
1192 static HRESULT WINAPI
IDirect3DRM3Impl_SetDefaultTextureColors(IDirect3DRM3
* iface
, DWORD nb_colors
)
1194 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1196 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_colors
);
1201 static HRESULT WINAPI
IDirect3DRM3Impl_SetDefaultTextureShades(IDirect3DRM3
* iface
, DWORD nb_shades
)
1203 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1205 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, nb_shades
);
1210 static HRESULT WINAPI
IDirect3DRM3Impl_GetDevices(IDirect3DRM3
* iface
,
1211 LPDIRECT3DRMDEVICEARRAY
* DeviceArray
)
1213 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1215 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, DeviceArray
);
1220 static HRESULT WINAPI
IDirect3DRM3Impl_GetNamedObject(IDirect3DRM3
*iface
,
1221 const char *name
, IDirect3DRMObject
**object
)
1223 FIXME("iface %p, name %s, object %p stub!\n", iface
, debugstr_a(name
), object
);
1228 static HRESULT WINAPI
IDirect3DRM3Impl_EnumerateObjects(IDirect3DRM3
* iface
, D3DRMOBJECTCALLBACK cb
,
1231 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1233 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
1238 static HRESULT
load_data(IDirect3DRM3
*iface
, IDirectXFileData
*data_object
, IID
**GUIDs
, DWORD nb_GUIDs
, D3DRMLOADCALLBACK LoadProc
,
1239 void *ArgLP
, D3DRMLOADTEXTURECALLBACK LoadTextureProc
, void *ArgLTP
, IDirect3DRMFrame3
*parent_frame
)
1241 HRESULT ret
= D3DRMERR_BADOBJECT
;
1245 BOOL requested
= FALSE
;
1247 hr
= IDirectXFileData_GetType(data_object
, &guid
);
1248 if (hr
!= DXFILE_OK
)
1251 TRACE("Found object type whose GUID = %s\n", debugstr_guid(guid
));
1253 /* Load object only if it is top level and requested or if it is part of another object */
1255 if (IsEqualGUID(guid
, &TID_D3DRMMesh
))
1257 TRACE("Found TID_D3DRMMesh\n");
1259 for (i
= 0; i
< nb_GUIDs
; i
++)
1260 if (IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMMeshBuilder
) ||
1261 IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMMeshBuilder2
) ||
1262 IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMMeshBuilder3
))
1268 if (requested
|| parent_frame
)
1270 IDirect3DRMMeshBuilder3
*meshbuilder
;
1272 TRACE("Load mesh data\n");
1274 hr
= IDirect3DRM3_CreateMeshBuilder(iface
, &meshbuilder
);
1277 hr
= load_mesh_data(meshbuilder
, data_object
, LoadTextureProc
, ArgLTP
);
1280 /* Only top level objects are notified */
1283 IDirect3DRMObject
*object
;
1285 hr
= IDirect3DRMMeshBuilder3_QueryInterface(meshbuilder
, GUIDs
[i
], (void**)&object
);
1288 LoadProc(object
, GUIDs
[i
], ArgLP
);
1289 IDirect3DRMObject_Release(object
);
1294 IDirect3DRMFrame3_AddVisual(parent_frame
, (IUnknown
*)meshbuilder
);
1297 IDirect3DRMMeshBuilder3_Release(meshbuilder
);
1301 ERR("Cannot process mesh\n");
1304 else if (IsEqualGUID(guid
, &TID_D3DRMFrame
))
1306 TRACE("Found TID_D3DRMFrame\n");
1308 for (i
= 0; i
< nb_GUIDs
; i
++)
1309 if (IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMFrame
) ||
1310 IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMFrame2
) ||
1311 IsEqualGUID(GUIDs
[i
], &IID_IDirect3DRMFrame3
))
1317 if (requested
|| parent_frame
)
1319 IDirect3DRMFrame3
*frame
;
1321 TRACE("Load frame data\n");
1323 hr
= IDirect3DRM3_CreateFrame(iface
, parent_frame
, &frame
);
1326 IDirectXFileObject
*child
;
1328 while (SUCCEEDED(hr
= IDirectXFileData_GetNextObject(data_object
, &child
)))
1330 IDirectXFileData
*data
;
1331 IDirectXFileDataReference
*reference
;
1332 IDirectXFileBinary
*binary
;
1334 hr
= IDirectXFileObject_QueryInterface(child
, &IID_IDirectXFileBinary
, (void **)&binary
);
1337 FIXME("Binary Object not supported yet\n");
1338 IDirectXFileBinary_Release(binary
);
1342 hr
= IDirectXFileObject_QueryInterface(child
, &IID_IDirectXFileData
, (void **)&data
);
1345 TRACE("Found Data Object\n");
1346 hr
= load_data(iface
, data
, GUIDs
, nb_GUIDs
, LoadProc
, ArgLP
, LoadTextureProc
, ArgLTP
, frame
);
1347 IDirectXFileData_Release(data
);
1350 hr
= IDirectXFileObject_QueryInterface(child
, &IID_IDirectXFileDataReference
, (void **)&reference
);
1353 TRACE("Found Data Object Reference\n");
1354 IDirectXFileDataReference_Resolve(reference
, &data
);
1355 hr
= load_data(iface
, data
, GUIDs
, nb_GUIDs
, LoadProc
, ArgLP
, LoadTextureProc
, ArgLTP
, frame
);
1356 IDirectXFileData_Release(data
);
1357 IDirectXFileDataReference_Release(reference
);
1362 if (hr
!= DXFILEERR_NOMOREOBJECTS
)
1364 IDirect3DRMFrame3_Release(frame
);
1369 /* Only top level objects are notified */
1372 IDirect3DRMObject
*object
;
1374 hr
= IDirect3DRMFrame3_QueryInterface(frame
, GUIDs
[i
], (void**)&object
);
1377 LoadProc(object
, GUIDs
[i
], ArgLP
);
1378 IDirect3DRMObject_Release(object
);
1381 IDirect3DRMFrame3_Release(frame
);
1385 ERR("Cannot process frame\n");
1388 else if (IsEqualGUID(guid
, &TID_D3DRMMaterial
))
1390 TRACE("Found TID_D3DRMMaterial\n");
1392 /* Cannot be requested so nothing to do */
1394 else if (IsEqualGUID(guid
, &TID_D3DRMFrameTransformMatrix
))
1396 TRACE("Found TID_D3DRMFrameTransformMatrix\n");
1398 /* Cannot be requested */
1401 D3DRMMATRIX4D matrix
;
1404 TRACE("Load Frame Transform Matrix data\n");
1406 size
= sizeof(matrix
);
1407 hr
= IDirectXFileData_GetData(data_object
, NULL
, &size
, (void**)matrix
);
1408 if ((hr
!= DXFILE_OK
) || (size
!= sizeof(matrix
)))
1411 hr
= IDirect3DRMFrame3_AddTransform(parent_frame
, D3DRMCOMBINE_REPLACE
, matrix
);
1418 FIXME("Found unknown TID %s\n", debugstr_guid(guid
));
1428 static HRESULT WINAPI
IDirect3DRM3Impl_Load(IDirect3DRM3
* iface
, LPVOID ObjSource
, LPVOID ObjID
,
1429 LPIID
* GUIDs
, DWORD nb_GUIDs
, D3DRMLOADOPTIONS LOFlags
,
1430 D3DRMLOADCALLBACK LoadProc
, LPVOID ArgLP
,
1431 D3DRMLOADTEXTURECALLBACK LoadTextureProc
, LPVOID ArgLTP
,
1432 LPDIRECT3DRMFRAME3 ParentFrame
)
1434 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1435 DXFILELOADOPTIONS load_options
;
1436 LPDIRECTXFILE pDXFile
= NULL
;
1437 LPDIRECTXFILEENUMOBJECT pEnumObject
= NULL
;
1438 LPDIRECTXFILEDATA pData
= NULL
;
1443 HRESULT ret
= D3DRMERR_BADOBJECT
;
1446 TRACE("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p)\n", iface
, This
, ObjSource
, ObjID
, GUIDs
,
1447 nb_GUIDs
, LOFlags
, LoadProc
, ArgLP
, LoadTextureProc
, ArgLTP
, ParentFrame
);
1449 TRACE("Looking for GUIDs:\n");
1450 for (i
= 0; i
< nb_GUIDs
; i
++)
1451 TRACE("- %s (%s)\n", debugstr_guid(GUIDs
[i
]), get_IID_string(GUIDs
[i
]));
1453 if (LOFlags
== D3DRMLOAD_FROMMEMORY
)
1455 load_options
= DXFILELOAD_FROMMEMORY
;
1457 else if (LOFlags
== D3DRMLOAD_FROMFILE
)
1459 load_options
= DXFILELOAD_FROMFILE
;
1460 TRACE("Loading from file %s\n", debugstr_a(ObjSource
));
1464 FIXME("Load options %d not supported yet\n", LOFlags
);
1468 hr
= DirectXFileCreate(&pDXFile
);
1469 if (hr
!= DXFILE_OK
)
1472 hr
= IDirectXFile_RegisterTemplates(pDXFile
, templates
, strlen(templates
));
1473 if (hr
!= DXFILE_OK
)
1476 hr
= IDirectXFile_CreateEnumObject(pDXFile
, ObjSource
, load_options
, &pEnumObject
);
1477 if (hr
!= DXFILE_OK
)
1480 hr
= IDirectXFileEnumObject_GetNextDataObject(pEnumObject
, &pData
);
1481 if (hr
!= DXFILE_OK
)
1484 hr
= IDirectXFileData_GetType(pData
, &pGuid
);
1485 if (hr
!= DXFILE_OK
)
1488 TRACE("Found object type whose GUID = %s\n", debugstr_guid(pGuid
));
1490 if (!IsEqualGUID(pGuid
, &TID_DXFILEHeader
))
1492 ret
= D3DRMERR_BADFILE
;
1496 hr
= IDirectXFileData_GetData(pData
, NULL
, &size
, (void**)&pHeader
);
1497 if ((hr
!= DXFILE_OK
) || (size
!= sizeof(Header
)))
1500 TRACE("Version is %d %d %d\n", pHeader
->major
, pHeader
->minor
, pHeader
->flags
);
1502 /* Version must be 1.0.x */
1503 if ((pHeader
->major
!= 1) || (pHeader
->minor
!= 0))
1505 ret
= D3DRMERR_BADFILE
;
1509 IDirectXFileData_Release(pData
);
1514 hr
= IDirectXFileEnumObject_GetNextDataObject(pEnumObject
, &pData
);
1515 if (hr
== DXFILEERR_NOMOREOBJECTS
)
1517 TRACE("No more object\n");
1520 else if (hr
!= DXFILE_OK
)
1522 ret
= D3DRMERR_BADFILE
;
1526 ret
= load_data(iface
, pData
, GUIDs
, nb_GUIDs
, LoadProc
, ArgLP
, LoadTextureProc
, ArgLTP
, ParentFrame
);
1527 if (ret
!= D3DRM_OK
)
1530 IDirectXFileData_Release(pData
);
1538 IDirectXFileData_Release(pData
);
1540 IDirectXFileEnumObject_Release(pEnumObject
);
1542 IDirectXFile_Release(pDXFile
);
1547 static HRESULT WINAPI
IDirect3DRM3Impl_Tick(IDirect3DRM3
* iface
, D3DVALUE tick
)
1549 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1551 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, tick
);
1556 static HRESULT WINAPI
IDirect3DRM3Impl_CreateProgressiveMesh(IDirect3DRM3
* iface
,
1557 LPDIRECT3DRMPROGRESSIVEMESH Mesh
)
1559 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1561 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, Mesh
);
1566 static HRESULT WINAPI
IDirect3DRM3Impl_RegisterClient(IDirect3DRM3
* iface
, REFGUID rguid
,
1569 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1571 FIXME("(%p/%p)->(%s, %p): stub\n", iface
, This
, debugstr_guid(rguid
), id
);
1576 static HRESULT WINAPI
IDirect3DRM3Impl_UnregisterClient(IDirect3DRM3
* iface
, REFGUID rguid
)
1578 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1580 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, debugstr_guid(rguid
));
1585 static HRESULT WINAPI
IDirect3DRM3Impl_CreateClippedVisual(IDirect3DRM3
* iface
,
1586 LPDIRECT3DRMVISUAL vis
,
1587 LPDIRECT3DRMCLIPPEDVISUAL
* clippedvis
)
1589 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1591 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, vis
, clippedvis
);
1596 static HRESULT WINAPI
IDirect3DRM3Impl_SetOptions(IDirect3DRM3
* iface
, DWORD opt
)
1598 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1600 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, opt
);
1605 static HRESULT WINAPI
IDirect3DRM3Impl_GetOptions(IDirect3DRM3
* iface
, LPDWORD opt
)
1607 IDirect3DRMImpl
*This
= impl_from_IDirect3DRM3(iface
);
1609 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, opt
);
1614 static const struct IDirect3DRM3Vtbl Direct3DRM3_Vtbl
=
1616 IDirect3DRM3Impl_QueryInterface
,
1617 IDirect3DRM3Impl_AddRef
,
1618 IDirect3DRM3Impl_Release
,
1619 IDirect3DRM3Impl_CreateObject
,
1620 IDirect3DRM3Impl_CreateFrame
,
1621 IDirect3DRM3Impl_CreateMesh
,
1622 IDirect3DRM3Impl_CreateMeshBuilder
,
1623 IDirect3DRM3Impl_CreateFace
,
1624 IDirect3DRM3Impl_CreateAnimation
,
1625 IDirect3DRM3Impl_CreateAnimationSet
,
1626 IDirect3DRM3Impl_CreateTexture
,
1627 IDirect3DRM3Impl_CreateLight
,
1628 IDirect3DRM3Impl_CreateLightRGB
,
1629 IDirect3DRM3Impl_CreateMaterial
,
1630 IDirect3DRM3Impl_CreateDevice
,
1631 IDirect3DRM3Impl_CreateDeviceFromSurface
,
1632 IDirect3DRM3Impl_CreateDeviceFromD3D
,
1633 IDirect3DRM3Impl_CreateDeviceFromClipper
,
1634 IDirect3DRM3Impl_CreateTextureFromSurface
,
1635 IDirect3DRM3Impl_CreateShadow
,
1636 IDirect3DRM3Impl_CreateViewport
,
1637 IDirect3DRM3Impl_CreateWrap
,
1638 IDirect3DRM3Impl_CreateUserVisual
,
1639 IDirect3DRM3Impl_LoadTexture
,
1640 IDirect3DRM3Impl_LoadTextureFromResource
,
1641 IDirect3DRM3Impl_SetSearchPath
,
1642 IDirect3DRM3Impl_AddSearchPath
,
1643 IDirect3DRM3Impl_GetSearchPath
,
1644 IDirect3DRM3Impl_SetDefaultTextureColors
,
1645 IDirect3DRM3Impl_SetDefaultTextureShades
,
1646 IDirect3DRM3Impl_GetDevices
,
1647 IDirect3DRM3Impl_GetNamedObject
,
1648 IDirect3DRM3Impl_EnumerateObjects
,
1649 IDirect3DRM3Impl_Load
,
1650 IDirect3DRM3Impl_Tick
,
1651 IDirect3DRM3Impl_CreateProgressiveMesh
,
1652 IDirect3DRM3Impl_RegisterClient
,
1653 IDirect3DRM3Impl_UnregisterClient
,
1654 IDirect3DRM3Impl_CreateClippedVisual
,
1655 IDirect3DRM3Impl_SetOptions
,
1656 IDirect3DRM3Impl_GetOptions
1659 HRESULT WINAPI
Direct3DRMCreate(IDirect3DRM
**d3drm
)
1661 IDirect3DRMImpl
*object
;
1663 TRACE("d3drm %p.\n", d3drm
);
1665 if (!(object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(*object
))))
1666 return E_OUTOFMEMORY
;
1668 object
->IDirect3DRM_iface
.lpVtbl
= &Direct3DRM_Vtbl
;
1669 object
->IDirect3DRM2_iface
.lpVtbl
= &Direct3DRM2_Vtbl
;
1670 object
->IDirect3DRM3_iface
.lpVtbl
= &Direct3DRM3_Vtbl
;
1673 *d3drm
= &object
->IDirect3DRM_iface
;