2 * Implementation of IDirect3DRMFrame Interface
4 * Copyright 2011, 2012 André Hentschel
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #include "wine/debug.h"
29 #include "d3drm_private.h"
31 WINE_DEFAULT_DEBUG_CHANNEL(d3drm
);
33 typedef struct IDirect3DRMFrameImpl IDirect3DRMFrameImpl
;
35 struct IDirect3DRMFrameImpl
{
36 IDirect3DRMFrame2 IDirect3DRMFrame2_iface
;
37 IDirect3DRMFrame3 IDirect3DRMFrame3_iface
;
39 IDirect3DRMFrameImpl
* parent
;
41 ULONG children_capacity
;
42 IDirect3DRMFrame3
** children
;
44 ULONG visuals_capacity
;
45 IDirect3DRMVisual
** visuals
;
47 ULONG lights_capacity
;
48 IDirect3DRMLight
** lights
;
52 IDirect3DRMFrameArray IDirect3DRMFrameArray_iface
;
55 LPDIRECT3DRMFRAME
* frames
;
56 } IDirect3DRMFrameArrayImpl
;
58 HRESULT
Direct3DRMFrameArray_create(IDirect3DRMFrameArray
** obj
);
60 static inline IDirect3DRMFrameImpl
*impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2
*iface
)
62 return CONTAINING_RECORD(iface
, IDirect3DRMFrameImpl
, IDirect3DRMFrame2_iface
);
65 static inline IDirect3DRMFrameImpl
*impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3
*iface
)
67 return CONTAINING_RECORD(iface
, IDirect3DRMFrameImpl
, IDirect3DRMFrame3_iface
);
70 static inline IDirect3DRMFrameImpl
*unsafe_impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2
*iface
);
71 static inline IDirect3DRMFrameImpl
*unsafe_impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3
*iface
);
73 /*** IUnknown methods ***/
74 static HRESULT WINAPI
IDirect3DRMFrame2Impl_QueryInterface(IDirect3DRMFrame2
* iface
,
75 REFIID riid
, void** object
)
77 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
79 TRACE("(%p/%p)->(%s, %p)\n", iface
, This
, debugstr_guid(riid
), object
);
83 if(IsEqualGUID(riid
, &IID_IUnknown
) ||
84 IsEqualGUID(riid
, &IID_IDirect3DRMFrame
) ||
85 IsEqualGUID(riid
, &IID_IDirect3DRMFrame2
))
87 *object
= &This
->IDirect3DRMFrame2_iface
;
89 else if(IsEqualGUID(riid
, &IID_IDirect3DRMFrame3
))
91 *object
= &This
->IDirect3DRMFrame3_iface
;
95 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
99 IDirect3DRMFrame2_AddRef(iface
);
103 static ULONG WINAPI
IDirect3DRMFrame2Impl_AddRef(IDirect3DRMFrame2
* iface
)
105 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
106 ULONG ref
= InterlockedIncrement(&This
->ref
);
108 TRACE("(%p)->(): new ref = %d\n", This
, ref
);
113 static ULONG WINAPI
IDirect3DRMFrame2Impl_Release(IDirect3DRMFrame2
* iface
)
115 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
116 ULONG ref
= InterlockedDecrement(&This
->ref
);
119 TRACE("(%p)->(): new ref = %d\n", This
, ref
);
123 for (i
= 0; i
< This
->nb_children
; i
++)
124 IDirect3DRMFrame3_Release(This
->children
[i
]);
125 HeapFree(GetProcessHeap(), 0, This
->children
);
126 HeapFree(GetProcessHeap(), 0, This
);
132 /*** IDirect3DRMObject methods ***/
133 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Clone(IDirect3DRMFrame2
* iface
,
134 LPUNKNOWN unkwn
, REFIID riid
,
137 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
139 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface
, This
, unkwn
, debugstr_guid(riid
), object
);
144 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddDestroyCallback(IDirect3DRMFrame2
* iface
,
145 D3DRMOBJECTCALLBACK cb
,
148 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
150 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
155 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteDestroyCallback(IDirect3DRMFrame2
* iface
,
156 D3DRMOBJECTCALLBACK cb
,
159 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
161 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
166 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetAppData(IDirect3DRMFrame2
* iface
,
169 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
171 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, data
);
176 static DWORD WINAPI
IDirect3DRMFrame2Impl_GetAppData(IDirect3DRMFrame2
* iface
)
178 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
180 FIXME("(%p/%p)->(): stub\n", iface
, This
);
185 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetName(IDirect3DRMFrame2
* iface
, LPCSTR name
)
187 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
189 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, name
);
194 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetName(IDirect3DRMFrame2
* iface
,
195 LPDWORD size
, LPSTR name
)
197 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
199 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
204 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetClassName(IDirect3DRMFrame2
* iface
,
205 LPDWORD size
, LPSTR name
)
207 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
209 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
214 /*** IDirect3DRMFrame methods ***/
215 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddChild(IDirect3DRMFrame2
* iface
,
216 LPDIRECT3DRMFRAME child
)
218 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
219 IDirect3DRMFrameImpl
*frame
;
221 TRACE("(%p/%p)->(%p)\n", iface
, This
, child
);
223 frame
= unsafe_impl_from_IDirect3DRMFrame2((LPDIRECT3DRMFRAME2
)child
);
226 return D3DRMERR_BADOBJECT
;
228 return IDirect3DRMFrame3_AddChild(&This
->IDirect3DRMFrame3_iface
, &frame
->IDirect3DRMFrame3_iface
);
231 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddLight(IDirect3DRMFrame2
* iface
,
232 LPDIRECT3DRMLIGHT light
)
234 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
236 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
238 return IDirect3DRMFrame3_AddLight(&This
->IDirect3DRMFrame3_iface
, light
);
241 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddMoveCallback(IDirect3DRMFrame2
* iface
,
242 D3DRMFRAMEMOVECALLBACK cb
, VOID
*arg
)
244 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
246 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
251 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddTransform(IDirect3DRMFrame2
* iface
,
252 D3DRMCOMBINETYPE type
,
253 D3DRMMATRIX4D matrix
)
255 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
257 FIXME("(%p/%p)->(%u,%p): stub\n", iface
, This
, type
, matrix
);
262 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddTranslation(IDirect3DRMFrame2
* iface
,
263 D3DRMCOMBINETYPE type
,
264 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
266 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
268 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
);
273 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddScale(IDirect3DRMFrame2
* iface
,
274 D3DRMCOMBINETYPE type
,
275 D3DVALUE sx
, D3DVALUE sy
, D3DVALUE sz
)
277 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
279 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, sx
, sy
, sz
);
284 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddRotation(IDirect3DRMFrame2
* iface
,
285 D3DRMCOMBINETYPE type
,
286 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
289 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
291 FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
, theta
);
296 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddVisual(IDirect3DRMFrame2
* iface
,
297 LPDIRECT3DRMVISUAL vis
)
299 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
301 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
303 return IDirect3DRMFrame3_AddVisual(&This
->IDirect3DRMFrame3_iface
, (LPUNKNOWN
)vis
);
306 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetChildren(IDirect3DRMFrame2
* iface
,
307 LPDIRECT3DRMFRAMEARRAY
*children
)
309 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
311 TRACE("(%p/%p)->(%p)\n", iface
, This
, children
);
313 return IDirect3DRMFrame3_GetChildren(&This
->IDirect3DRMFrame3_iface
, children
);
316 static D3DCOLOR WINAPI
IDirect3DRMFrame2Impl_GetColor(IDirect3DRMFrame2
* iface
)
318 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
320 FIXME("(%p/%p)->(): stub\n", iface
, This
);
325 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetLights(IDirect3DRMFrame2
* iface
,
326 LPDIRECT3DRMLIGHTARRAY
*lights
)
328 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
330 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, lights
);
335 static D3DRMMATERIALMODE WINAPI
IDirect3DRMFrame2Impl_GetMaterialMode(IDirect3DRMFrame2
* iface
)
337 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
339 FIXME("(%p/%p)->(): stub\n", iface
, This
);
341 return D3DRMMATERIAL_FROMPARENT
;
344 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetParent(IDirect3DRMFrame2
* iface
,
345 LPDIRECT3DRMFRAME
* frame
)
347 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
349 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
352 return D3DRMERR_BADVALUE
;
356 *frame
= (LPDIRECT3DRMFRAME
)&This
->parent
->IDirect3DRMFrame2_iface
;
357 IDirect3DRMFrame_AddRef(*frame
);
367 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetPosition(IDirect3DRMFrame2
* iface
,
368 LPDIRECT3DRMFRAME reference
,
369 LPD3DVECTOR return_position
)
371 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
373 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, reference
, return_position
);
378 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetRotation(IDirect3DRMFrame2
* iface
,
379 LPDIRECT3DRMFRAME reference
,
380 LPD3DVECTOR axis
, LPD3DVALUE return_theta
)
382 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
384 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, axis
, return_theta
);
389 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetScene(IDirect3DRMFrame2
* iface
,
390 LPDIRECT3DRMFRAME
* frame
)
392 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
394 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, frame
);
399 static D3DRMSORTMODE WINAPI
IDirect3DRMFrame2Impl_GetSortMode(IDirect3DRMFrame2
* iface
)
401 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
403 FIXME("(%p/%p)->(): stub\n", iface
, This
);
405 return D3DRMSORT_FROMPARENT
;
408 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetTexture(IDirect3DRMFrame2
* iface
,
409 LPDIRECT3DRMTEXTURE
* tex
)
411 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
413 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, tex
);
418 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetTransform(IDirect3DRMFrame2
* iface
,
419 D3DRMMATRIX4D return_matrix
)
421 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
423 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, return_matrix
);
428 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetVelocity(IDirect3DRMFrame2
* iface
,
429 LPDIRECT3DRMFRAME reference
,
430 LPD3DVECTOR return_velocity
,
433 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
435 FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface
, This
, reference
, return_velocity
, with_rotation
);
440 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetOrientation(IDirect3DRMFrame2
* iface
,
441 LPDIRECT3DRMFRAME reference
,
442 LPD3DVECTOR dir
, LPD3DVECTOR up
)
444 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
446 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, dir
, up
);
451 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetVisuals(IDirect3DRMFrame2
* iface
,
452 LPDIRECT3DRMVISUALARRAY
*visuals
)
454 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
456 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, visuals
);
461 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetTextureTopology(IDirect3DRMFrame2
* iface
,
462 BOOL
*wrap_u
, BOOL
*wrap_v
)
464 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
466 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, wrap_u
, wrap_v
);
471 static HRESULT WINAPI
IDirect3DRMFrame2Impl_InverseTransform(IDirect3DRMFrame2
* iface
,
472 D3DVECTOR
*d
, D3DVECTOR
*s
)
474 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
476 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
481 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Load(IDirect3DRMFrame2
* iface
, LPVOID filename
,
482 LPVOID name
, D3DRMLOADOPTIONS loadflags
,
483 D3DRMLOADTEXTURECALLBACK cb
, LPVOID lpArg
)
485 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
487 FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface
, This
, filename
, name
, loadflags
, cb
, lpArg
);
492 static HRESULT WINAPI
IDirect3DRMFrame2Impl_LookAt(IDirect3DRMFrame2
* iface
,
493 LPDIRECT3DRMFRAME target
,
494 LPDIRECT3DRMFRAME reference
,
495 D3DRMFRAMECONSTRAINT constraint
)
497 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
499 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, target
, reference
, constraint
);
504 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Move(IDirect3DRMFrame2
* iface
, D3DVALUE delta
)
506 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
508 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, delta
);
513 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteChild(IDirect3DRMFrame2
* iface
,
514 LPDIRECT3DRMFRAME frame
)
516 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
517 IDirect3DRMFrameImpl
*child
;
519 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
521 child
= unsafe_impl_from_IDirect3DRMFrame2((LPDIRECT3DRMFRAME2
)frame
);
524 return D3DRMERR_BADOBJECT
;
526 return IDirect3DRMFrame3_DeleteChild(&This
->IDirect3DRMFrame3_iface
, &child
->IDirect3DRMFrame3_iface
);
529 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteLight(IDirect3DRMFrame2
* iface
,
530 LPDIRECT3DRMLIGHT light
)
532 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
534 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
536 return IDirect3DRMFrame3_DeleteLight(&This
->IDirect3DRMFrame3_iface
, light
);
539 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteMoveCallback(IDirect3DRMFrame2
* iface
,
540 D3DRMFRAMEMOVECALLBACK cb
, VOID
*arg
)
542 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
544 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
549 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteVisual(IDirect3DRMFrame2
* iface
,
550 LPDIRECT3DRMVISUAL vis
)
552 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
554 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
556 return IDirect3DRMFrame3_DeleteVisual(&This
->IDirect3DRMFrame3_iface
, (LPUNKNOWN
)vis
);
559 static D3DCOLOR WINAPI
IDirect3DRMFrame2Impl_GetSceneBackground(IDirect3DRMFrame2
* iface
)
561 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
563 FIXME("(%p/%p)->(): stub\n", iface
, This
);
568 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetSceneBackgroundDepth(IDirect3DRMFrame2
* iface
,
569 LPDIRECTDRAWSURFACE
* surface
)
571 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
573 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
578 static D3DCOLOR WINAPI
IDirect3DRMFrame2Impl_GetSceneFogColor(IDirect3DRMFrame2
* iface
)
580 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
582 FIXME("(%p/%p)->(): stub\n", iface
, This
);
587 static BOOL WINAPI
IDirect3DRMFrame2Impl_GetSceneFogEnable(IDirect3DRMFrame2
* iface
)
589 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
591 FIXME("(%p/%p)->(): stub\n", iface
, This
);
596 static D3DRMFOGMODE WINAPI
IDirect3DRMFrame2Impl_GetSceneFogMode(IDirect3DRMFrame2
* iface
)
598 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
600 FIXME("(%p/%p)->(): stub\n", iface
, This
);
602 return D3DRMFOG_LINEAR
;
605 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetSceneFogParams(IDirect3DRMFrame2
* iface
,
606 D3DVALUE
*return_start
,
607 D3DVALUE
*return_end
,
608 D3DVALUE
*return_density
)
610 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
612 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, return_start
, return_end
, return_density
);
617 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackground(IDirect3DRMFrame2
* iface
,
620 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
622 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
627 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackgroundRGB(IDirect3DRMFrame2
* iface
,
628 D3DVALUE red
, D3DVALUE green
,
631 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
633 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, red
, green
, blue
);
638 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackgroundDepth(IDirect3DRMFrame2
* iface
,
639 LPDIRECTDRAWSURFACE surface
)
641 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
643 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
648 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackgroundImage(IDirect3DRMFrame2
* iface
,
649 LPDIRECT3DRMTEXTURE texture
)
651 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
653 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
658 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogEnable(IDirect3DRMFrame2
* iface
, BOOL enable
)
660 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
662 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, enable
);
667 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogColor(IDirect3DRMFrame2
* iface
,
670 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
672 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
677 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogMode(IDirect3DRMFrame2
* iface
,
680 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
682 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
687 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogParams(IDirect3DRMFrame2
* iface
,
688 D3DVALUE start
, D3DVALUE end
,
691 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
693 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, start
, end
, density
);
698 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetColor(IDirect3DRMFrame2
* iface
, D3DCOLOR color
)
700 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
702 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
707 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetColorRGB(IDirect3DRMFrame2
* iface
, D3DVALUE red
,
708 D3DVALUE green
, D3DVALUE blue
)
710 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
712 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, red
, green
, blue
);
717 static D3DRMZBUFFERMODE WINAPI
IDirect3DRMFrame2Impl_GetZbufferMode(IDirect3DRMFrame2
* iface
)
719 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
721 FIXME("(%p/%p)->(): stub\n", iface
, This
);
723 return D3DRMZBUFFER_FROMPARENT
;
726 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetMaterialMode(IDirect3DRMFrame2
* iface
,
727 D3DRMMATERIALMODE mode
)
729 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
731 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
736 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetOrientation(IDirect3DRMFrame2
* iface
,
737 LPDIRECT3DRMFRAME reference
,
738 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
739 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
)
741 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
743 FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface
, This
, reference
,
744 dx
, dy
, dz
, ux
, uy
, uz
);
749 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetPosition(IDirect3DRMFrame2
* iface
,
750 LPDIRECT3DRMFRAME reference
,
751 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
753 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
755 FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
);
760 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetRotation(IDirect3DRMFrame2
* iface
,
761 LPDIRECT3DRMFRAME reference
,
762 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
765 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
767 FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
, theta
);
772 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSortMode(IDirect3DRMFrame2
* iface
,
775 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
777 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
782 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetTexture(IDirect3DRMFrame2
* iface
,
783 LPDIRECT3DRMTEXTURE texture
)
785 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
787 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
792 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetTextureTopology(IDirect3DRMFrame2
* iface
,
793 BOOL wrap_u
, BOOL wrap_v
)
795 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
797 FIXME("(%p/%p)->(%d,%d): stub\n", iface
, This
, wrap_u
, wrap_v
);
802 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetVelocity(IDirect3DRMFrame2
* iface
,
803 LPDIRECT3DRMFRAME reference
,
804 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
807 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
809 FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface
, This
, reference
, x
, y
, z
, with_rotation
);
814 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetZbufferMode(IDirect3DRMFrame2
* iface
,
815 D3DRMZBUFFERMODE mode
)
817 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
819 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
824 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Transform(IDirect3DRMFrame2
* iface
, D3DVECTOR
*d
,
827 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
829 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
834 /*** IDirect3DRMFrame2 methods ***/
835 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddMoveCallback2(IDirect3DRMFrame2
* iface
,
836 D3DRMFRAMEMOVECALLBACK cb
, VOID
*arg
,
839 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
841 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, cb
, arg
, flags
);
846 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetBox(IDirect3DRMFrame2
* iface
, LPD3DRMBOX box
)
848 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
850 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
855 static BOOL WINAPI
IDirect3DRMFrame2Impl_GetBoxEnable(IDirect3DRMFrame2
* iface
)
857 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
859 FIXME("(%p/%p)->(): stub\n", iface
, This
);
864 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetAxes(IDirect3DRMFrame2
* iface
,
865 LPD3DVECTOR dir
, LPD3DVECTOR up
)
867 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
869 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, dir
, up
);
874 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetMaterial(IDirect3DRMFrame2
* iface
,
875 LPDIRECT3DRMMATERIAL
*material
)
877 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
879 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, material
);
884 static BOOL WINAPI
IDirect3DRMFrame2Impl_GetInheritAxes(IDirect3DRMFrame2
* iface
)
886 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
888 FIXME("(%p/%p)->(): stub\n", iface
, This
);
893 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetHierarchyBox(IDirect3DRMFrame2
* iface
,
896 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
898 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
903 static const struct IDirect3DRMFrame2Vtbl Direct3DRMFrame2_Vtbl
=
905 /*** IUnknown methods ***/
906 IDirect3DRMFrame2Impl_QueryInterface
,
907 IDirect3DRMFrame2Impl_AddRef
,
908 IDirect3DRMFrame2Impl_Release
,
909 /*** IDirect3DRMObject methods ***/
910 IDirect3DRMFrame2Impl_Clone
,
911 IDirect3DRMFrame2Impl_AddDestroyCallback
,
912 IDirect3DRMFrame2Impl_DeleteDestroyCallback
,
913 IDirect3DRMFrame2Impl_SetAppData
,
914 IDirect3DRMFrame2Impl_GetAppData
,
915 IDirect3DRMFrame2Impl_SetName
,
916 IDirect3DRMFrame2Impl_GetName
,
917 IDirect3DRMFrame2Impl_GetClassName
,
918 /*** IDirect3DRMFrame methods ***/
919 IDirect3DRMFrame2Impl_AddChild
,
920 IDirect3DRMFrame2Impl_AddLight
,
921 IDirect3DRMFrame2Impl_AddMoveCallback
,
922 IDirect3DRMFrame2Impl_AddTransform
,
923 IDirect3DRMFrame2Impl_AddTranslation
,
924 IDirect3DRMFrame2Impl_AddScale
,
925 IDirect3DRMFrame2Impl_AddRotation
,
926 IDirect3DRMFrame2Impl_AddVisual
,
927 IDirect3DRMFrame2Impl_GetChildren
,
928 IDirect3DRMFrame2Impl_GetColor
,
929 IDirect3DRMFrame2Impl_GetLights
,
930 IDirect3DRMFrame2Impl_GetMaterialMode
,
931 IDirect3DRMFrame2Impl_GetParent
,
932 IDirect3DRMFrame2Impl_GetPosition
,
933 IDirect3DRMFrame2Impl_GetRotation
,
934 IDirect3DRMFrame2Impl_GetScene
,
935 IDirect3DRMFrame2Impl_GetSortMode
,
936 IDirect3DRMFrame2Impl_GetTexture
,
937 IDirect3DRMFrame2Impl_GetTransform
,
938 IDirect3DRMFrame2Impl_GetVelocity
,
939 IDirect3DRMFrame2Impl_GetOrientation
,
940 IDirect3DRMFrame2Impl_GetVisuals
,
941 IDirect3DRMFrame2Impl_GetTextureTopology
,
942 IDirect3DRMFrame2Impl_InverseTransform
,
943 IDirect3DRMFrame2Impl_Load
,
944 IDirect3DRMFrame2Impl_LookAt
,
945 IDirect3DRMFrame2Impl_Move
,
946 IDirect3DRMFrame2Impl_DeleteChild
,
947 IDirect3DRMFrame2Impl_DeleteLight
,
948 IDirect3DRMFrame2Impl_DeleteMoveCallback
,
949 IDirect3DRMFrame2Impl_DeleteVisual
,
950 IDirect3DRMFrame2Impl_GetSceneBackground
,
951 IDirect3DRMFrame2Impl_GetSceneBackgroundDepth
,
952 IDirect3DRMFrame2Impl_GetSceneFogColor
,
953 IDirect3DRMFrame2Impl_GetSceneFogEnable
,
954 IDirect3DRMFrame2Impl_GetSceneFogMode
,
955 IDirect3DRMFrame2Impl_GetSceneFogParams
,
956 IDirect3DRMFrame2Impl_SetSceneBackground
,
957 IDirect3DRMFrame2Impl_SetSceneBackgroundRGB
,
958 IDirect3DRMFrame2Impl_SetSceneBackgroundDepth
,
959 IDirect3DRMFrame2Impl_SetSceneBackgroundImage
,
960 IDirect3DRMFrame2Impl_SetSceneFogEnable
,
961 IDirect3DRMFrame2Impl_SetSceneFogColor
,
962 IDirect3DRMFrame2Impl_SetSceneFogMode
,
963 IDirect3DRMFrame2Impl_SetSceneFogParams
,
964 IDirect3DRMFrame2Impl_SetColor
,
965 IDirect3DRMFrame2Impl_SetColorRGB
,
966 IDirect3DRMFrame2Impl_GetZbufferMode
,
967 IDirect3DRMFrame2Impl_SetMaterialMode
,
968 IDirect3DRMFrame2Impl_SetOrientation
,
969 IDirect3DRMFrame2Impl_SetPosition
,
970 IDirect3DRMFrame2Impl_SetRotation
,
971 IDirect3DRMFrame2Impl_SetSortMode
,
972 IDirect3DRMFrame2Impl_SetTexture
,
973 IDirect3DRMFrame2Impl_SetTextureTopology
,
974 IDirect3DRMFrame2Impl_SetVelocity
,
975 IDirect3DRMFrame2Impl_SetZbufferMode
,
976 IDirect3DRMFrame2Impl_Transform
,
977 /*** IDirect3DRMFrame2 methods ***/
978 IDirect3DRMFrame2Impl_AddMoveCallback2
,
979 IDirect3DRMFrame2Impl_GetBox
,
980 IDirect3DRMFrame2Impl_GetBoxEnable
,
981 IDirect3DRMFrame2Impl_GetAxes
,
982 IDirect3DRMFrame2Impl_GetMaterial
,
983 IDirect3DRMFrame2Impl_GetInheritAxes
,
984 IDirect3DRMFrame2Impl_GetHierarchyBox
987 /*** IUnknown methods ***/
988 static HRESULT WINAPI
IDirect3DRMFrame3Impl_QueryInterface(IDirect3DRMFrame3
* iface
,
989 REFIID riid
, void** object
)
991 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
992 return IDirect3DRMFrame_QueryInterface(&This
->IDirect3DRMFrame2_iface
, riid
, object
);
995 static ULONG WINAPI
IDirect3DRMFrame3Impl_AddRef(IDirect3DRMFrame3
* iface
)
997 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
998 return IDirect3DRMFrame2_AddRef(&This
->IDirect3DRMFrame2_iface
);
1001 static ULONG WINAPI
IDirect3DRMFrame3Impl_Release(IDirect3DRMFrame3
* iface
)
1003 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1004 return IDirect3DRMFrame2_Release(&This
->IDirect3DRMFrame2_iface
);
1007 /*** IDirect3DRMObject methods ***/
1008 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Clone(IDirect3DRMFrame3
* iface
,
1009 LPUNKNOWN unkwn
, REFIID riid
,
1012 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1014 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface
, This
, unkwn
, debugstr_guid(riid
), object
);
1019 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddDestroyCallback(IDirect3DRMFrame3
* iface
,
1020 D3DRMOBJECTCALLBACK cb
,
1023 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1025 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
1030 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteDestroyCallback(IDirect3DRMFrame3
* iface
,
1031 D3DRMOBJECTCALLBACK cb
,
1034 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1036 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
1041 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetAppData(IDirect3DRMFrame3
* iface
,
1044 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1046 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, data
);
1051 static DWORD WINAPI
IDirect3DRMFrame3Impl_GetAppData(IDirect3DRMFrame3
* iface
)
1053 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1055 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1060 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetName(IDirect3DRMFrame3
* iface
, LPCSTR name
)
1062 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1064 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, name
);
1069 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetName(IDirect3DRMFrame3
* iface
,
1070 LPDWORD size
, LPSTR name
)
1072 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1074 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
1079 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetClassName(IDirect3DRMFrame3
* iface
,
1080 LPDWORD size
, LPSTR name
)
1082 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1084 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
1089 /*** IDirect3DRMFrame methods ***/
1090 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddChild(IDirect3DRMFrame3
* iface
,
1091 LPDIRECT3DRMFRAME3 child
)
1093 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1094 IDirect3DRMFrameImpl
*child_obj
= unsafe_impl_from_IDirect3DRMFrame3(child
);
1096 TRACE("(%p/%p)->(%p)\n", iface
, This
, child
);
1099 return D3DRMERR_BADOBJECT
;
1101 if (child_obj
->parent
)
1103 IDirect3DRMFrame3
* parent
= &child_obj
->parent
->IDirect3DRMFrame3_iface
;
1105 if (parent
== iface
)
1107 /* Passed frame is already a child so return success */
1112 /* Remove parent and continue */
1113 IDirect3DRMFrame3_DeleteChild(parent
, child
);
1117 if ((This
->nb_children
+ 1) > This
->children_capacity
)
1120 IDirect3DRMFrame3
** children
;
1122 if (!This
->children_capacity
)
1125 children
= HeapAlloc(GetProcessHeap(), 0, new_capacity
* sizeof(IDirect3DRMFrame3
*));
1129 new_capacity
= This
->children_capacity
* 2;
1130 children
= HeapReAlloc(GetProcessHeap(), 0, This
->children
, new_capacity
* sizeof(IDirect3DRMFrame3
*));
1134 return E_OUTOFMEMORY
;
1136 This
->children_capacity
= new_capacity
;
1137 This
->children
= children
;
1140 This
->children
[This
->nb_children
++] = child
;
1141 IDirect3DRMFrame3_AddRef(child
);
1142 child_obj
->parent
= This
;
1147 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddLight(IDirect3DRMFrame3
* iface
,
1148 LPDIRECT3DRMLIGHT light
)
1150 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1152 IDirect3DRMLight
** lights
;
1154 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
1157 return D3DRMERR_BADOBJECT
;
1159 /* Check if already existing and return gracefully without increasing ref count */
1160 for (i
= 0; i
< This
->nb_lights
; i
++)
1161 if (This
->lights
[i
] == light
)
1164 if ((This
->nb_lights
+ 1) > This
->lights_capacity
)
1168 if (!This
->lights_capacity
)
1171 lights
= HeapAlloc(GetProcessHeap(), 0, new_capacity
* sizeof(IDirect3DRMLight
*));
1175 new_capacity
= This
->lights_capacity
* 2;
1176 lights
= HeapReAlloc(GetProcessHeap(), 0, This
->lights
, new_capacity
* sizeof(IDirect3DRMLight
*));
1180 return E_OUTOFMEMORY
;
1182 This
->lights_capacity
= new_capacity
;
1183 This
->lights
= lights
;
1186 This
->lights
[This
->nb_lights
++] = light
;
1187 IDirect3DRMLight_AddRef(light
);
1192 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddMoveCallback(IDirect3DRMFrame3
* iface
,
1193 D3DRMFRAME3MOVECALLBACK cb
, VOID
*arg
,
1196 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1198 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, cb
, arg
, flags
);
1203 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddTransform(IDirect3DRMFrame3
* iface
,
1204 D3DRMCOMBINETYPE type
,
1205 D3DRMMATRIX4D matrix
)
1207 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1209 FIXME("(%p/%p)->(%u,%p): stub\n", iface
, This
, type
, matrix
);
1214 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddTranslation(IDirect3DRMFrame3
* iface
,
1215 D3DRMCOMBINETYPE type
,
1216 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
1218 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1220 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
);
1225 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddScale(IDirect3DRMFrame3
* iface
,
1226 D3DRMCOMBINETYPE type
,
1227 D3DVALUE sx
, D3DVALUE sy
, D3DVALUE sz
)
1229 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1231 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, sx
, sy
, sz
);
1236 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddRotation(IDirect3DRMFrame3
* iface
,
1237 D3DRMCOMBINETYPE type
,
1238 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
1241 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1243 FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
, theta
);
1248 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddVisual(IDirect3DRMFrame3
* iface
, LPUNKNOWN vis
)
1250 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1252 IDirect3DRMVisual
** visuals
;
1254 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
1257 return D3DRMERR_BADOBJECT
;
1259 /* Check if already existing and return gracefully without increasing ref count */
1260 for (i
= 0; i
< This
->nb_visuals
; i
++)
1261 if (This
->visuals
[i
] == (IDirect3DRMVisual
*)vis
)
1264 if ((This
->nb_visuals
+ 1) > This
->visuals_capacity
)
1268 if (!This
->visuals_capacity
)
1271 visuals
= HeapAlloc(GetProcessHeap(), 0, new_capacity
* sizeof(IDirect3DRMVisual
*));
1275 new_capacity
= This
->visuals_capacity
* 2;
1276 visuals
= HeapReAlloc(GetProcessHeap(), 0, This
->visuals
, new_capacity
* sizeof(IDirect3DRMVisual
*));
1280 return E_OUTOFMEMORY
;
1282 This
->visuals_capacity
= new_capacity
;
1283 This
->visuals
= visuals
;
1286 This
->visuals
[This
->nb_visuals
++] = (IDirect3DRMVisual
*)vis
;
1287 IDirect3DRMVisual_AddRef(vis
);
1292 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetChildren(IDirect3DRMFrame3
* iface
,
1293 LPDIRECT3DRMFRAMEARRAY
*children
)
1295 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1296 IDirect3DRMFrameArrayImpl
* obj
;
1299 TRACE("(%p/%p)->(%p)\n", iface
, This
, children
);
1302 return D3DRMERR_BADVALUE
;
1304 hr
= Direct3DRMFrameArray_create(children
);
1309 obj
= (IDirect3DRMFrameArrayImpl
*)*children
;
1311 obj
->size
= This
->nb_children
;
1312 if (This
->nb_children
)
1315 obj
->frames
= HeapAlloc(GetProcessHeap(), 0, This
->nb_children
* sizeof(LPDIRECT3DRMFRAME
));
1317 return E_OUTOFMEMORY
;
1318 for (i
= 0; i
< This
->nb_children
; i
++)
1319 IDirect3DRMFrame3_QueryInterface(This
->children
[i
], &IID_IDirect3DRMFrame
, (void**)&obj
->frames
[i
]);
1325 static D3DCOLOR WINAPI
IDirect3DRMFrame3Impl_GetColor(IDirect3DRMFrame3
* iface
)
1327 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1329 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1334 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetLights(IDirect3DRMFrame3
* iface
,
1335 LPDIRECT3DRMLIGHTARRAY
*lights
)
1337 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1339 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, lights
);
1344 static D3DRMMATERIALMODE WINAPI
IDirect3DRMFrame3Impl_GetMaterialMode(IDirect3DRMFrame3
* iface
)
1346 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1348 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1350 return D3DRMMATERIAL_FROMPARENT
;
1353 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetParent(IDirect3DRMFrame3
* iface
,
1354 LPDIRECT3DRMFRAME3
* frame
)
1356 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1358 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
1361 return D3DRMERR_BADVALUE
;
1365 *frame
= &This
->parent
->IDirect3DRMFrame3_iface
;
1366 IDirect3DRMFrame_AddRef(*frame
);
1376 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetPosition(IDirect3DRMFrame3
* iface
,
1377 LPDIRECT3DRMFRAME3 reference
,
1378 LPD3DVECTOR return_position
)
1380 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1382 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, reference
, return_position
);
1387 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetRotation(IDirect3DRMFrame3
* iface
,
1388 LPDIRECT3DRMFRAME3 reference
,
1389 LPD3DVECTOR axis
, LPD3DVALUE return_theta
)
1391 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1393 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, axis
, return_theta
);
1398 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetScene(IDirect3DRMFrame3
* iface
,
1399 LPDIRECT3DRMFRAME3
* frame
)
1401 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1403 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, frame
);
1408 static D3DRMSORTMODE WINAPI
IDirect3DRMFrame3Impl_GetSortMode(IDirect3DRMFrame3
* iface
)
1410 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1412 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1414 return D3DRMSORT_FROMPARENT
;
1417 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetTexture(IDirect3DRMFrame3
* iface
,
1418 LPDIRECT3DRMTEXTURE3
* tex
)
1420 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1422 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, tex
);
1427 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetTransform(IDirect3DRMFrame3
* iface
,
1428 LPDIRECT3DRMFRAME3 reference
,
1429 D3DRMMATRIX4D return_matrix
)
1431 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1433 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, reference
, return_matrix
);
1438 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetVelocity(IDirect3DRMFrame3
* iface
,
1439 LPDIRECT3DRMFRAME3 reference
,
1440 LPD3DVECTOR return_velocity
,
1443 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1445 FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface
, This
, reference
, return_velocity
, with_rotation
);
1450 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetOrientation(IDirect3DRMFrame3
* iface
,
1451 LPDIRECT3DRMFRAME3 reference
,
1452 LPD3DVECTOR dir
, LPD3DVECTOR up
)
1454 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1456 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, dir
, up
);
1461 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetVisuals(IDirect3DRMFrame3
* iface
, LPDWORD num
,
1464 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1466 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, num
, visuals
);
1471 static HRESULT WINAPI
IDirect3DRMFrame3Impl_InverseTransform(IDirect3DRMFrame3
* iface
,
1472 D3DVECTOR
*d
, D3DVECTOR
*s
)
1474 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1476 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
1481 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Load(IDirect3DRMFrame3
* iface
, LPVOID filename
,
1482 LPVOID name
, D3DRMLOADOPTIONS loadflags
,
1483 D3DRMLOADTEXTURE3CALLBACK cb
, LPVOID lpArg
)
1485 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1487 FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface
, This
, filename
, name
, loadflags
, cb
, lpArg
);
1492 static HRESULT WINAPI
IDirect3DRMFrame3Impl_LookAt(IDirect3DRMFrame3
* iface
,
1493 LPDIRECT3DRMFRAME3 target
,
1494 LPDIRECT3DRMFRAME3 reference
,
1495 D3DRMFRAMECONSTRAINT constraint
)
1497 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1499 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, target
, reference
, constraint
);
1504 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Move(IDirect3DRMFrame3
* iface
, D3DVALUE delta
)
1506 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1508 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, delta
);
1513 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteChild(IDirect3DRMFrame3
* iface
,
1514 LPDIRECT3DRMFRAME3 frame
)
1516 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1517 IDirect3DRMFrameImpl
*frame_obj
= unsafe_impl_from_IDirect3DRMFrame3(frame
);
1520 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
1523 return D3DRMERR_BADOBJECT
;
1525 /* Check if child exists */
1526 for (i
= 0; i
< This
->nb_children
; i
++)
1527 if (This
->children
[i
] == frame
)
1530 if (i
== This
->nb_children
)
1531 return D3DRMERR_BADVALUE
;
1533 memmove(This
->children
+ i
, This
->children
+ i
+ 1, sizeof(IDirect3DRMFrame3
*) * (This
->nb_children
- 1 - i
));
1534 IDirect3DRMFrame3_Release(frame
);
1535 frame_obj
->parent
= NULL
;
1536 This
->nb_children
--;
1541 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteLight(IDirect3DRMFrame3
* iface
,
1542 LPDIRECT3DRMLIGHT light
)
1544 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1547 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
1550 return D3DRMERR_BADOBJECT
;
1552 /* Check if visual exists */
1553 for (i
= 0; i
< This
->nb_lights
; i
++)
1554 if (This
->lights
[i
] == light
)
1557 if (i
== This
->nb_lights
)
1558 return D3DRMERR_BADVALUE
;
1560 memmove(This
->lights
+ i
, This
->lights
+ i
+ 1, sizeof(IDirect3DRMLight
*) * (This
->nb_lights
- 1 - i
));
1561 IDirect3DRMLight_Release(light
);
1567 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteMoveCallback(IDirect3DRMFrame3
* iface
,
1568 D3DRMFRAME3MOVECALLBACK cb
,
1571 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1573 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
1578 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteVisual(IDirect3DRMFrame3
* iface
, LPUNKNOWN vis
)
1580 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1583 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
1586 return D3DRMERR_BADOBJECT
;
1588 /* Check if visual exists */
1589 for (i
= 0; i
< This
->nb_visuals
; i
++)
1590 if (This
->visuals
[i
] == (IDirect3DRMVisual
*)vis
)
1593 if (i
== This
->nb_visuals
)
1594 return D3DRMERR_BADVALUE
;
1596 memmove(This
->visuals
+ i
, This
->visuals
+ i
+ 1, sizeof(IDirect3DRMVisual
*) * (This
->nb_visuals
- 1 - i
));
1597 IDirect3DRMVisual_Release(vis
);
1603 static D3DCOLOR WINAPI
IDirect3DRMFrame3Impl_GetSceneBackground(IDirect3DRMFrame3
* iface
)
1605 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1607 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1612 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetSceneBackgroundDepth(IDirect3DRMFrame3
* iface
,
1613 LPDIRECTDRAWSURFACE
* surface
)
1615 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1617 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
1622 static D3DCOLOR WINAPI
IDirect3DRMFrame3Impl_GetSceneFogColor(IDirect3DRMFrame3
* iface
)
1624 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1626 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1631 static BOOL WINAPI
IDirect3DRMFrame3Impl_GetSceneFogEnable(IDirect3DRMFrame3
* iface
)
1633 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1635 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1640 static D3DRMFOGMODE WINAPI
IDirect3DRMFrame3Impl_GetSceneFogMode(IDirect3DRMFrame3
* iface
)
1642 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1644 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1646 return D3DRMFOG_LINEAR
;
1649 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetSceneFogParams(IDirect3DRMFrame3
* iface
,
1650 D3DVALUE
*return_start
,
1651 D3DVALUE
*return_end
,
1652 D3DVALUE
*return_density
)
1654 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1656 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, return_start
, return_end
, return_density
);
1661 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackground(IDirect3DRMFrame3
* iface
,
1664 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1666 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
1671 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackgroundRGB(IDirect3DRMFrame3
* iface
,
1672 D3DVALUE red
, D3DVALUE green
,
1675 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1677 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, red
, green
, blue
);
1682 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackgroundDepth(IDirect3DRMFrame3
* iface
,
1683 LPDIRECTDRAWSURFACE surface
)
1685 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1687 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
1692 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackgroundImage(IDirect3DRMFrame3
* iface
,
1693 LPDIRECT3DRMTEXTURE3 texture
)
1695 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1697 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
1702 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogEnable(IDirect3DRMFrame3
* iface
, BOOL enable
)
1704 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1706 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, enable
);
1711 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogColor(IDirect3DRMFrame3
* iface
,
1714 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1716 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
1721 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogMode(IDirect3DRMFrame3
* iface
,
1724 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1726 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1731 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogParams(IDirect3DRMFrame3
* iface
,
1732 D3DVALUE start
, D3DVALUE end
,
1735 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1737 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, start
, end
, density
);
1742 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetColor(IDirect3DRMFrame3
* iface
, D3DCOLOR color
)
1744 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1746 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
1751 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetColorRGB(IDirect3DRMFrame3
* iface
, D3DVALUE red
,
1752 D3DVALUE green
, D3DVALUE blue
)
1754 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1756 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, red
, green
, blue
);
1761 static D3DRMZBUFFERMODE WINAPI
IDirect3DRMFrame3Impl_GetZbufferMode(IDirect3DRMFrame3
* iface
)
1763 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1765 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1767 return D3DRMZBUFFER_FROMPARENT
;
1770 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetMaterialMode(IDirect3DRMFrame3
* iface
,
1771 D3DRMMATERIALMODE mode
)
1773 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1775 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1780 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetOrientation(IDirect3DRMFrame3
* iface
,
1781 LPDIRECT3DRMFRAME3 reference
,
1782 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
1783 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
)
1785 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1787 FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface
, This
, reference
,
1788 dx
, dy
, dz
, ux
, uy
, uz
);
1793 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetPosition(IDirect3DRMFrame3
* iface
,
1794 LPDIRECT3DRMFRAME3 reference
,
1795 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
1797 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1799 FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
);
1804 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetRotation(IDirect3DRMFrame3
* iface
,
1805 LPDIRECT3DRMFRAME3 reference
,
1806 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
1809 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1811 FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
, theta
);
1816 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSortMode(IDirect3DRMFrame3
* iface
,
1819 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1821 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1826 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetTexture(IDirect3DRMFrame3
* iface
,
1827 LPDIRECT3DRMTEXTURE3 texture
)
1829 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1831 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
1836 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetVelocity(IDirect3DRMFrame3
* iface
,
1837 LPDIRECT3DRMFRAME3 reference
,
1838 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
1841 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1843 FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface
, This
, reference
, x
, y
, z
, with_rotation
);
1848 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetZbufferMode(IDirect3DRMFrame3
* iface
,
1849 D3DRMZBUFFERMODE mode
)
1851 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1853 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1858 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Transform(IDirect3DRMFrame3
* iface
, D3DVECTOR
*d
,
1861 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1863 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
1868 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetBox(IDirect3DRMFrame3
* iface
, LPD3DRMBOX box
)
1870 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1872 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
1877 static BOOL WINAPI
IDirect3DRMFrame3Impl_GetBoxEnable(IDirect3DRMFrame3
* iface
)
1879 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1881 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1886 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetAxes(IDirect3DRMFrame3
* iface
,
1887 LPD3DVECTOR dir
, LPD3DVECTOR up
)
1889 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1891 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, dir
, up
);
1896 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetMaterial(IDirect3DRMFrame3
* iface
,
1897 LPDIRECT3DRMMATERIAL2
*material
)
1899 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1901 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, material
);
1906 static BOOL WINAPI
IDirect3DRMFrame3Impl_GetInheritAxes(IDirect3DRMFrame3
* iface
)
1908 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1910 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1915 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetHierarchyBox(IDirect3DRMFrame3
* iface
,
1918 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1920 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
1925 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetBox(IDirect3DRMFrame3
* iface
, LPD3DRMBOX box
)
1927 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1929 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
1934 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetBoxEnable(IDirect3DRMFrame3
* iface
, BOOL enable
)
1936 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1938 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, enable
);
1943 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetAxes(IDirect3DRMFrame3
* iface
,
1944 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
1945 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
)
1947 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1949 FIXME("(%p/%p)->(%f,%f,%f,%f,%f,%f): stub\n", iface
, This
, dx
, dy
, dz
, ux
, uy
, uz
);
1954 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetInheritAxes(IDirect3DRMFrame3
* iface
,
1955 BOOL inherit_from_parent
)
1957 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1959 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, inherit_from_parent
);
1964 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetMaterial(IDirect3DRMFrame3
* iface
,
1965 LPDIRECT3DRMMATERIAL2 material
)
1967 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1969 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, material
);
1974 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetQuaternion(IDirect3DRMFrame3
* iface
,
1975 LPDIRECT3DRMFRAME3 reference
,
1978 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1980 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, reference
, q
);
1985 static HRESULT WINAPI
IDirect3DRMFrame3Impl_RayPick(IDirect3DRMFrame3
* iface
,
1986 LPDIRECT3DRMFRAME3 reference
, LPD3DRMRAY ray
,
1988 LPDIRECT3DRMPICKED2ARRAY
*return_visuals
)
1990 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1992 FIXME("(%p/%p)->(%p,%p,%u,%p): stub\n", iface
, This
, reference
, ray
, flags
, return_visuals
);
1997 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Save(IDirect3DRMFrame3
* iface
, LPCSTR filename
,
1998 D3DRMXOFFORMAT d3dFormat
,
1999 D3DRMSAVEOPTIONS d3dSaveFlags
)
2001 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2003 FIXME("(%p/%p)->(%p,%u,%u): stub\n", iface
, This
, filename
, d3dFormat
, d3dSaveFlags
);
2008 static HRESULT WINAPI
IDirect3DRMFrame3Impl_TransformVectors(IDirect3DRMFrame3
* iface
,
2009 LPDIRECT3DRMFRAME3 reference
,
2010 DWORD num
, LPD3DVECTOR dst
,
2013 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2015 FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface
, This
, reference
, num
, dst
, src
);
2020 static HRESULT WINAPI
IDirect3DRMFrame3Impl_InverseTransformVectors(IDirect3DRMFrame3
* iface
,
2021 LPDIRECT3DRMFRAME3 reference
,
2022 DWORD num
, LPD3DVECTOR dst
,
2025 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2027 FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface
, This
, reference
, num
, dst
, src
);
2032 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetTraversalOptions(IDirect3DRMFrame3
* iface
,
2035 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2037 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, flags
);
2042 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetTraversalOptions(IDirect3DRMFrame3
* iface
,
2045 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2047 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, flags
);
2052 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogMethod(IDirect3DRMFrame3
* iface
,
2055 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2057 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, flags
);
2062 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetSceneFogMethod(IDirect3DRMFrame3
* iface
,
2065 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2067 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, flags
);
2072 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetMaterialOverride(IDirect3DRMFrame3
* iface
,
2073 LPD3DRMMATERIALOVERRIDE override
)
2075 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2077 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, override
);
2082 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetMaterialOverride(IDirect3DRMFrame3
* iface
,
2083 LPD3DRMMATERIALOVERRIDE override
)
2085 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2087 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, override
);
2092 static const struct IDirect3DRMFrame3Vtbl Direct3DRMFrame3_Vtbl
=
2094 /*** IUnknown methods ***/
2095 IDirect3DRMFrame3Impl_QueryInterface
,
2096 IDirect3DRMFrame3Impl_AddRef
,
2097 IDirect3DRMFrame3Impl_Release
,
2098 /*** IDirect3DRMObject methods ***/
2099 IDirect3DRMFrame3Impl_Clone
,
2100 IDirect3DRMFrame3Impl_AddDestroyCallback
,
2101 IDirect3DRMFrame3Impl_DeleteDestroyCallback
,
2102 IDirect3DRMFrame3Impl_SetAppData
,
2103 IDirect3DRMFrame3Impl_GetAppData
,
2104 IDirect3DRMFrame3Impl_SetName
,
2105 IDirect3DRMFrame3Impl_GetName
,
2106 IDirect3DRMFrame3Impl_GetClassName
,
2107 /*** IDirect3DRMFrame3 methods ***/
2108 IDirect3DRMFrame3Impl_AddChild
,
2109 IDirect3DRMFrame3Impl_AddLight
,
2110 IDirect3DRMFrame3Impl_AddMoveCallback
,
2111 IDirect3DRMFrame3Impl_AddTransform
,
2112 IDirect3DRMFrame3Impl_AddTranslation
,
2113 IDirect3DRMFrame3Impl_AddScale
,
2114 IDirect3DRMFrame3Impl_AddRotation
,
2115 IDirect3DRMFrame3Impl_AddVisual
,
2116 IDirect3DRMFrame3Impl_GetChildren
,
2117 IDirect3DRMFrame3Impl_GetColor
,
2118 IDirect3DRMFrame3Impl_GetLights
,
2119 IDirect3DRMFrame3Impl_GetMaterialMode
,
2120 IDirect3DRMFrame3Impl_GetParent
,
2121 IDirect3DRMFrame3Impl_GetPosition
,
2122 IDirect3DRMFrame3Impl_GetRotation
,
2123 IDirect3DRMFrame3Impl_GetScene
,
2124 IDirect3DRMFrame3Impl_GetSortMode
,
2125 IDirect3DRMFrame3Impl_GetTexture
,
2126 IDirect3DRMFrame3Impl_GetTransform
,
2127 IDirect3DRMFrame3Impl_GetVelocity
,
2128 IDirect3DRMFrame3Impl_GetOrientation
,
2129 IDirect3DRMFrame3Impl_GetVisuals
,
2130 IDirect3DRMFrame3Impl_InverseTransform
,
2131 IDirect3DRMFrame3Impl_Load
,
2132 IDirect3DRMFrame3Impl_LookAt
,
2133 IDirect3DRMFrame3Impl_Move
,
2134 IDirect3DRMFrame3Impl_DeleteChild
,
2135 IDirect3DRMFrame3Impl_DeleteLight
,
2136 IDirect3DRMFrame3Impl_DeleteMoveCallback
,
2137 IDirect3DRMFrame3Impl_DeleteVisual
,
2138 IDirect3DRMFrame3Impl_GetSceneBackground
,
2139 IDirect3DRMFrame3Impl_GetSceneBackgroundDepth
,
2140 IDirect3DRMFrame3Impl_GetSceneFogColor
,
2141 IDirect3DRMFrame3Impl_GetSceneFogEnable
,
2142 IDirect3DRMFrame3Impl_GetSceneFogMode
,
2143 IDirect3DRMFrame3Impl_GetSceneFogParams
,
2144 IDirect3DRMFrame3Impl_SetSceneBackground
,
2145 IDirect3DRMFrame3Impl_SetSceneBackgroundRGB
,
2146 IDirect3DRMFrame3Impl_SetSceneBackgroundDepth
,
2147 IDirect3DRMFrame3Impl_SetSceneBackgroundImage
,
2148 IDirect3DRMFrame3Impl_SetSceneFogEnable
,
2149 IDirect3DRMFrame3Impl_SetSceneFogColor
,
2150 IDirect3DRMFrame3Impl_SetSceneFogMode
,
2151 IDirect3DRMFrame3Impl_SetSceneFogParams
,
2152 IDirect3DRMFrame3Impl_SetColor
,
2153 IDirect3DRMFrame3Impl_SetColorRGB
,
2154 IDirect3DRMFrame3Impl_GetZbufferMode
,
2155 IDirect3DRMFrame3Impl_SetMaterialMode
,
2156 IDirect3DRMFrame3Impl_SetOrientation
,
2157 IDirect3DRMFrame3Impl_SetPosition
,
2158 IDirect3DRMFrame3Impl_SetRotation
,
2159 IDirect3DRMFrame3Impl_SetSortMode
,
2160 IDirect3DRMFrame3Impl_SetTexture
,
2161 IDirect3DRMFrame3Impl_SetVelocity
,
2162 IDirect3DRMFrame3Impl_SetZbufferMode
,
2163 IDirect3DRMFrame3Impl_Transform
,
2164 IDirect3DRMFrame3Impl_GetBox
,
2165 IDirect3DRMFrame3Impl_GetBoxEnable
,
2166 IDirect3DRMFrame3Impl_GetAxes
,
2167 IDirect3DRMFrame3Impl_GetMaterial
,
2168 IDirect3DRMFrame3Impl_GetInheritAxes
,
2169 IDirect3DRMFrame3Impl_GetHierarchyBox
,
2170 IDirect3DRMFrame3Impl_SetBox
,
2171 IDirect3DRMFrame3Impl_SetBoxEnable
,
2172 IDirect3DRMFrame3Impl_SetAxes
,
2173 IDirect3DRMFrame3Impl_SetInheritAxes
,
2174 IDirect3DRMFrame3Impl_SetMaterial
,
2175 IDirect3DRMFrame3Impl_SetQuaternion
,
2176 IDirect3DRMFrame3Impl_RayPick
,
2177 IDirect3DRMFrame3Impl_Save
,
2178 IDirect3DRMFrame3Impl_TransformVectors
,
2179 IDirect3DRMFrame3Impl_InverseTransformVectors
,
2180 IDirect3DRMFrame3Impl_SetTraversalOptions
,
2181 IDirect3DRMFrame3Impl_GetTraversalOptions
,
2182 IDirect3DRMFrame3Impl_SetSceneFogMethod
,
2183 IDirect3DRMFrame3Impl_GetSceneFogMethod
,
2184 IDirect3DRMFrame3Impl_SetMaterialOverride
,
2185 IDirect3DRMFrame3Impl_GetMaterialOverride
2188 static inline IDirect3DRMFrameImpl
*unsafe_impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2
*iface
)
2192 assert(iface
->lpVtbl
== &Direct3DRMFrame2_Vtbl
);
2194 return impl_from_IDirect3DRMFrame2(iface
);
2197 static inline IDirect3DRMFrameImpl
*unsafe_impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3
*iface
)
2201 assert(iface
->lpVtbl
== &Direct3DRMFrame3_Vtbl
);
2203 return impl_from_IDirect3DRMFrame3(iface
);
2206 HRESULT
Direct3DRMFrame_create(REFIID riid
, IUnknown
** ppObj
)
2208 IDirect3DRMFrameImpl
* object
;
2210 TRACE("(%p)\n", ppObj
);
2212 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirect3DRMFrameImpl
));
2215 ERR("Out of memory\n");
2216 return E_OUTOFMEMORY
;
2219 object
->IDirect3DRMFrame2_iface
.lpVtbl
= &Direct3DRMFrame2_Vtbl
;
2220 object
->IDirect3DRMFrame3_iface
.lpVtbl
= &Direct3DRMFrame3_Vtbl
;
2223 if (IsEqualGUID(riid
, &IID_IDirect3DRMFrame3
))
2224 *ppObj
= (IUnknown
*)&object
->IDirect3DRMFrame3_iface
;
2226 *ppObj
= (IUnknown
*)&object
->IDirect3DRMFrame2_iface
;
2231 /*** IUnknown methods ***/
2232 static HRESULT WINAPI
IDirect3DRMFrameArrayImpl_QueryInterface(IDirect3DRMFrameArray
* iface
,
2233 REFIID riid
, void** object
)
2235 IDirect3DRMFrameArrayImpl
*This
= (IDirect3DRMFrameArrayImpl
*)iface
;
2237 TRACE("(%p/%p)->(%s, %p)\n", iface
, This
, debugstr_guid(riid
), object
);
2241 if (IsEqualGUID(riid
, &IID_IUnknown
) ||
2242 IsEqualGUID(riid
, &IID_IDirect3DRMFrameArray
))
2244 *object
= &This
->IDirect3DRMFrameArray_iface
;
2248 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
2249 return E_NOINTERFACE
;
2252 IDirect3DRMFrameArray_AddRef(iface
);
2256 static ULONG WINAPI
IDirect3DRMFrameArrayImpl_AddRef(IDirect3DRMFrameArray
* iface
)
2258 IDirect3DRMFrameArrayImpl
*This
= (IDirect3DRMFrameArrayImpl
*)iface
;
2259 ULONG ref
= InterlockedIncrement(&This
->ref
);
2261 TRACE("(%p)->(): new ref = %u\n", This
, ref
);
2266 static ULONG WINAPI
IDirect3DRMFrameArrayImpl_Release(IDirect3DRMFrameArray
* iface
)
2268 IDirect3DRMFrameArrayImpl
*This
= (IDirect3DRMFrameArrayImpl
*)iface
;
2269 ULONG ref
= InterlockedDecrement(&This
->ref
);
2272 TRACE("(%p)->(): new ref = %u\n", This
, ref
);
2276 for (i
= 0; i
< This
->size
; i
++)
2277 IDirect3DRMFrame_Release(This
->frames
[i
]);
2278 HeapFree(GetProcessHeap(), 0, This
->frames
);
2279 HeapFree(GetProcessHeap(), 0, This
);
2285 /*** IDirect3DRMArray methods ***/
2286 static DWORD WINAPI
IDirect3DRMFrameArrayImpl_GetSize(IDirect3DRMFrameArray
* iface
)
2288 IDirect3DRMFrameArrayImpl
*This
= (IDirect3DRMFrameArrayImpl
*)iface
;
2290 TRACE("(%p)->() = %d\n", This
, This
->size
);
2295 /*** IDirect3DRMFrameArray methods ***/
2296 static HRESULT WINAPI
IDirect3DRMFrameArrayImpl_GetElement(IDirect3DRMFrameArray
* iface
, DWORD index
, LPDIRECT3DRMFRAME
* frame
)
2298 IDirect3DRMFrameArrayImpl
*This
= (IDirect3DRMFrameArrayImpl
*)iface
;
2300 TRACE("(%p)->(%u, %p)\n", This
, index
, frame
);
2303 return D3DRMERR_BADVALUE
;
2307 if (index
>= This
->size
)
2308 return D3DRMERR_BADVALUE
;
2310 IDirect3DRMFrame_AddRef(This
->frames
[index
]);
2311 *frame
= This
->frames
[index
];
2316 static const struct IDirect3DRMFrameArrayVtbl Direct3DRMFrameArray_Vtbl
=
2318 /*** IUnknown methods ***/
2319 IDirect3DRMFrameArrayImpl_QueryInterface
,
2320 IDirect3DRMFrameArrayImpl_AddRef
,
2321 IDirect3DRMFrameArrayImpl_Release
,
2322 /*** IDirect3DRMArray methods ***/
2323 IDirect3DRMFrameArrayImpl_GetSize
,
2324 /*** IDirect3DRMFrameArray methods ***/
2325 IDirect3DRMFrameArrayImpl_GetElement
2328 HRESULT
Direct3DRMFrameArray_create(IDirect3DRMFrameArray
** obj
)
2330 IDirect3DRMFrameArrayImpl
* object
;
2332 TRACE("(%p)\n", obj
);
2336 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirect3DRMFrameArrayImpl
));
2339 ERR("Out of memory\n");
2340 return E_OUTOFMEMORY
;
2343 object
->IDirect3DRMFrameArray_iface
.lpVtbl
= &Direct3DRMFrameArray_Vtbl
;
2346 *obj
= &object
->IDirect3DRMFrameArray_iface
;