2 * Implementation of IDirect3DRMFrame Interface
4 * Copyright 2011, 2012 André Hentschel
5 * Copyright 2012 Christian Costa
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
23 #include "wine/debug.h"
30 #include "d3drm_private.h"
32 WINE_DEFAULT_DEBUG_CHANNEL(d3drm
);
34 static D3DRMMATRIX4D identity
= {
35 { 1.0f
, 0.0f
, 0.0f
, 0.0f
},
36 { 0.0f
, 1.0f
, 0.0f
, 0.0f
},
37 { 0.0f
, 0.0f
, 1.0f
, 0.0f
},
38 { 0.0f
, 0.0f
, 0.0f
, 1.0f
}
41 typedef struct IDirect3DRMFrameImpl IDirect3DRMFrameImpl
;
43 struct IDirect3DRMFrameImpl
{
44 IDirect3DRMFrame2 IDirect3DRMFrame2_iface
;
45 IDirect3DRMFrame3 IDirect3DRMFrame3_iface
;
47 IDirect3DRMFrameImpl
* parent
;
49 ULONG children_capacity
;
50 IDirect3DRMFrame3
** children
;
52 ULONG visuals_capacity
;
53 IDirect3DRMVisual
** visuals
;
55 ULONG lights_capacity
;
56 IDirect3DRMLight
** lights
;
57 D3DRMMATRIX4D transform
;
61 IDirect3DRMFrameArray IDirect3DRMFrameArray_iface
;
64 LPDIRECT3DRMFRAME
* frames
;
65 } IDirect3DRMFrameArrayImpl
;
68 IDirect3DRMVisualArray IDirect3DRMVisualArray_iface
;
71 LPDIRECT3DRMVISUAL
* visuals
;
72 } IDirect3DRMVisualArrayImpl
;
75 IDirect3DRMLightArray IDirect3DRMLightArray_iface
;
78 LPDIRECT3DRMLIGHT
* lights
;
79 } IDirect3DRMLightArrayImpl
;
81 static inline IDirect3DRMFrameImpl
*impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2
*iface
)
83 return CONTAINING_RECORD(iface
, IDirect3DRMFrameImpl
, IDirect3DRMFrame2_iface
);
86 static inline IDirect3DRMFrameImpl
*impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3
*iface
)
88 return CONTAINING_RECORD(iface
, IDirect3DRMFrameImpl
, IDirect3DRMFrame3_iface
);
91 static inline IDirect3DRMFrameImpl
*unsafe_impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2
*iface
);
92 static inline IDirect3DRMFrameImpl
*unsafe_impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3
*iface
);
94 static inline IDirect3DRMLightArrayImpl
*impl_from_IDirect3DRMLightArray(IDirect3DRMLightArray
*iface
)
96 return CONTAINING_RECORD(iface
, IDirect3DRMLightArrayImpl
, IDirect3DRMLightArray_iface
);
99 /*** IUnknown methods ***/
100 static HRESULT WINAPI
IDirect3DRMFrameArrayImpl_QueryInterface(IDirect3DRMFrameArray
* iface
,
101 REFIID riid
, void** object
)
103 IDirect3DRMFrameArrayImpl
*This
= (IDirect3DRMFrameArrayImpl
*)iface
;
105 TRACE("(%p/%p)->(%s, %p)\n", iface
, This
, debugstr_guid(riid
), object
);
109 if (IsEqualGUID(riid
, &IID_IUnknown
) ||
110 IsEqualGUID(riid
, &IID_IDirect3DRMFrameArray
))
112 *object
= &This
->IDirect3DRMFrameArray_iface
;
116 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
117 return E_NOINTERFACE
;
120 IDirect3DRMFrameArray_AddRef(iface
);
124 static ULONG WINAPI
IDirect3DRMFrameArrayImpl_AddRef(IDirect3DRMFrameArray
* iface
)
126 IDirect3DRMFrameArrayImpl
*This
= (IDirect3DRMFrameArrayImpl
*)iface
;
127 ULONG ref
= InterlockedIncrement(&This
->ref
);
129 TRACE("(%p)->(): new ref = %u\n", This
, ref
);
134 static ULONG WINAPI
IDirect3DRMFrameArrayImpl_Release(IDirect3DRMFrameArray
* iface
)
136 IDirect3DRMFrameArrayImpl
*This
= (IDirect3DRMFrameArrayImpl
*)iface
;
137 ULONG ref
= InterlockedDecrement(&This
->ref
);
140 TRACE("(%p)->(): new ref = %u\n", This
, ref
);
144 for (i
= 0; i
< This
->size
; i
++)
145 IDirect3DRMFrame_Release(This
->frames
[i
]);
146 HeapFree(GetProcessHeap(), 0, This
->frames
);
147 HeapFree(GetProcessHeap(), 0, This
);
153 /*** IDirect3DRMArray methods ***/
154 static DWORD WINAPI
IDirect3DRMFrameArrayImpl_GetSize(IDirect3DRMFrameArray
* iface
)
156 IDirect3DRMFrameArrayImpl
*This
= (IDirect3DRMFrameArrayImpl
*)iface
;
158 TRACE("(%p)->() = %d\n", This
, This
->size
);
163 /*** IDirect3DRMFrameArray methods ***/
164 static HRESULT WINAPI
IDirect3DRMFrameArrayImpl_GetElement(IDirect3DRMFrameArray
* iface
, DWORD index
, LPDIRECT3DRMFRAME
* frame
)
166 IDirect3DRMFrameArrayImpl
*This
= (IDirect3DRMFrameArrayImpl
*)iface
;
168 TRACE("(%p)->(%u, %p)\n", This
, index
, frame
);
171 return D3DRMERR_BADVALUE
;
175 if (index
>= This
->size
)
176 return D3DRMERR_BADVALUE
;
178 IDirect3DRMFrame_AddRef(This
->frames
[index
]);
179 *frame
= This
->frames
[index
];
184 static const struct IDirect3DRMFrameArrayVtbl Direct3DRMFrameArray_Vtbl
=
186 /*** IUnknown methods ***/
187 IDirect3DRMFrameArrayImpl_QueryInterface
,
188 IDirect3DRMFrameArrayImpl_AddRef
,
189 IDirect3DRMFrameArrayImpl_Release
,
190 /*** IDirect3DRMArray methods ***/
191 IDirect3DRMFrameArrayImpl_GetSize
,
192 /*** IDirect3DRMFrameArray methods ***/
193 IDirect3DRMFrameArrayImpl_GetElement
196 static HRESULT
Direct3DRMFrameArray_create(IDirect3DRMFrameArray
** obj
)
198 IDirect3DRMFrameArrayImpl
* object
;
200 TRACE("(%p)\n", obj
);
204 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirect3DRMFrameArrayImpl
));
207 ERR("Out of memory\n");
208 return E_OUTOFMEMORY
;
211 object
->IDirect3DRMFrameArray_iface
.lpVtbl
= &Direct3DRMFrameArray_Vtbl
;
214 *obj
= &object
->IDirect3DRMFrameArray_iface
;
219 /*** IUnknown methods ***/
220 static HRESULT WINAPI
IDirect3DRMVisualArrayImpl_QueryInterface(IDirect3DRMVisualArray
* iface
,
221 REFIID riid
, void** ret_iface
)
223 TRACE("(%p)->(%s, %p)\n", iface
, debugstr_guid(riid
), ret_iface
);
225 if (IsEqualGUID(riid
, &IID_IUnknown
) ||
226 IsEqualGUID(riid
, &IID_IDirect3DRMFrameArray
))
229 IDirect3DRMVisualArray_AddRef(iface
);
235 WARN("Interface %s not implemented\n", debugstr_guid(riid
));
237 return E_NOINTERFACE
;
240 static ULONG WINAPI
IDirect3DRMVisualArrayImpl_AddRef(IDirect3DRMVisualArray
* iface
)
242 IDirect3DRMVisualArrayImpl
*This
= (IDirect3DRMVisualArrayImpl
*)iface
;
243 ULONG ref
= InterlockedIncrement(&This
->ref
);
245 TRACE("(%p)->(): new ref = %u\n", iface
, ref
);
250 static ULONG WINAPI
IDirect3DRMVisualArrayImpl_Release(IDirect3DRMVisualArray
* iface
)
252 IDirect3DRMVisualArrayImpl
*This
= (IDirect3DRMVisualArrayImpl
*)iface
;
253 ULONG ref
= InterlockedDecrement(&This
->ref
);
256 TRACE("(%p)->(): new ref = %u\n", iface
, ref
);
260 for (i
= 0; i
< This
->size
; i
++)
261 IDirect3DRMVisual_Release(This
->visuals
[i
]);
262 HeapFree(GetProcessHeap(), 0, This
->visuals
);
263 HeapFree(GetProcessHeap(), 0, This
);
269 /*** IDirect3DRMArray methods ***/
270 static DWORD WINAPI
IDirect3DRMVisualArrayImpl_GetSize(IDirect3DRMVisualArray
* iface
)
272 IDirect3DRMVisualArrayImpl
*This
= (IDirect3DRMVisualArrayImpl
*)iface
;
274 TRACE("(%p)->() = %d\n", iface
, This
->size
);
279 /*** IDirect3DRMVisualArray methods ***/
280 static HRESULT WINAPI
IDirect3DRMVisualArrayImpl_GetElement(IDirect3DRMVisualArray
* iface
, DWORD index
, LPDIRECT3DRMVISUAL
* visual
)
282 IDirect3DRMVisualArrayImpl
*This
= (IDirect3DRMVisualArrayImpl
*)iface
;
284 TRACE("(%p)->(%u, %p)\n", iface
, index
, visual
);
287 return D3DRMERR_BADVALUE
;
291 if (index
>= This
->size
)
292 return D3DRMERR_BADVALUE
;
294 IDirect3DRMVisual_AddRef(This
->visuals
[index
]);
295 *visual
= This
->visuals
[index
];
300 static const struct IDirect3DRMVisualArrayVtbl Direct3DRMVisualArray_Vtbl
=
302 /*** IUnknown methods ***/
303 IDirect3DRMVisualArrayImpl_QueryInterface
,
304 IDirect3DRMVisualArrayImpl_AddRef
,
305 IDirect3DRMVisualArrayImpl_Release
,
306 /*** IDirect3DRMArray methods ***/
307 IDirect3DRMVisualArrayImpl_GetSize
,
308 /*** IDirect3DRMVisualArray methods ***/
309 IDirect3DRMVisualArrayImpl_GetElement
312 static HRESULT
Direct3DRMVisualArray_create(IDirect3DRMVisualArray
** ret_iface
)
314 IDirect3DRMVisualArrayImpl
* object
;
316 TRACE("(%p)\n", ret_iface
);
320 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirect3DRMVisualArrayImpl
));
323 ERR("Out of memory\n");
324 return E_OUTOFMEMORY
;
327 object
->IDirect3DRMVisualArray_iface
.lpVtbl
= &Direct3DRMVisualArray_Vtbl
;
330 *ret_iface
= &object
->IDirect3DRMVisualArray_iface
;
335 /*** IUnknown methods ***/
336 static HRESULT WINAPI
IDirect3DRMLightArrayImpl_QueryInterface(IDirect3DRMLightArray
* iface
,
337 REFIID riid
, void** object
)
339 IDirect3DRMLightArrayImpl
*This
= impl_from_IDirect3DRMLightArray(iface
);
341 TRACE("(%p/%p)->(%s, %p)\n", iface
, This
, debugstr_guid(riid
), object
);
345 if (IsEqualGUID(riid
, &IID_IUnknown
) ||
346 IsEqualGUID(riid
, &IID_IDirect3DRMLightArray
))
348 *object
= &This
->IDirect3DRMLightArray_iface
;
352 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
353 return E_NOINTERFACE
;
356 IDirect3DRMLightArray_AddRef(iface
);
360 static ULONG WINAPI
IDirect3DRMLightArrayImpl_AddRef(IDirect3DRMLightArray
* iface
)
362 IDirect3DRMLightArrayImpl
*This
= impl_from_IDirect3DRMLightArray(iface
);
363 ULONG ref
= InterlockedIncrement(&This
->ref
);
365 TRACE("(%p)->(): new ref = %u\n", This
, ref
);
370 static ULONG WINAPI
IDirect3DRMLightArrayImpl_Release(IDirect3DRMLightArray
* iface
)
372 IDirect3DRMLightArrayImpl
*This
= impl_from_IDirect3DRMLightArray(iface
);
373 ULONG ref
= InterlockedDecrement(&This
->ref
);
376 TRACE("(%p)->(): new ref = %u\n", This
, ref
);
380 for (i
= 0; i
< This
->size
; i
++)
381 IDirect3DRMLight_Release(This
->lights
[i
]);
382 HeapFree(GetProcessHeap(), 0, This
->lights
);
383 HeapFree(GetProcessHeap(), 0, This
);
389 /*** IDirect3DRMArray methods ***/
390 static DWORD WINAPI
IDirect3DRMLightArrayImpl_GetSize(IDirect3DRMLightArray
* iface
)
392 IDirect3DRMLightArrayImpl
*This
= impl_from_IDirect3DRMLightArray(iface
);
394 TRACE("(%p)->() = %d\n", This
, This
->size
);
399 /*** IDirect3DRMLightArray methods ***/
400 static HRESULT WINAPI
IDirect3DRMLightArrayImpl_GetElement(IDirect3DRMLightArray
* iface
, DWORD index
, LPDIRECT3DRMLIGHT
* light
)
402 IDirect3DRMLightArrayImpl
*This
= impl_from_IDirect3DRMLightArray(iface
);
404 TRACE("(%p)->(%u, %p)\n", This
, index
, light
);
407 return D3DRMERR_BADVALUE
;
411 if (index
>= This
->size
)
412 return D3DRMERR_BADVALUE
;
414 IDirect3DRMLight_AddRef(This
->lights
[index
]);
415 *light
= This
->lights
[index
];
420 static const struct IDirect3DRMLightArrayVtbl Direct3DRMLightArray_Vtbl
=
422 /*** IUnknown methods ***/
423 IDirect3DRMLightArrayImpl_QueryInterface
,
424 IDirect3DRMLightArrayImpl_AddRef
,
425 IDirect3DRMLightArrayImpl_Release
,
426 /*** IDirect3DRMArray methods ***/
427 IDirect3DRMLightArrayImpl_GetSize
,
428 /*** IDirect3DRMLightArray methods ***/
429 IDirect3DRMLightArrayImpl_GetElement
432 static HRESULT
Direct3DRMLightArray_create(IDirect3DRMLightArray
** obj
)
434 IDirect3DRMLightArrayImpl
* object
;
436 TRACE("(%p)\n", obj
);
440 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirect3DRMLightArrayImpl
));
443 ERR("Out of memory\n");
444 return E_OUTOFMEMORY
;
447 object
->IDirect3DRMLightArray_iface
.lpVtbl
= &Direct3DRMLightArray_Vtbl
;
450 *obj
= &object
->IDirect3DRMLightArray_iface
;
455 /*** IUnknown methods ***/
456 static HRESULT WINAPI
IDirect3DRMFrame2Impl_QueryInterface(IDirect3DRMFrame2
* iface
,
457 REFIID riid
, void** object
)
459 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
461 TRACE("(%p/%p)->(%s, %p)\n", iface
, This
, debugstr_guid(riid
), object
);
465 if(IsEqualGUID(riid
, &IID_IUnknown
) ||
466 IsEqualGUID(riid
, &IID_IDirect3DRMFrame
) ||
467 IsEqualGUID(riid
, &IID_IDirect3DRMFrame2
))
469 *object
= &This
->IDirect3DRMFrame2_iface
;
471 else if(IsEqualGUID(riid
, &IID_IDirect3DRMFrame3
))
473 *object
= &This
->IDirect3DRMFrame3_iface
;
477 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
478 return E_NOINTERFACE
;
481 IDirect3DRMFrame2_AddRef(iface
);
485 static ULONG WINAPI
IDirect3DRMFrame2Impl_AddRef(IDirect3DRMFrame2
* iface
)
487 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
488 ULONG ref
= InterlockedIncrement(&This
->ref
);
490 TRACE("(%p)->(): new ref = %d\n", This
, ref
);
495 static ULONG WINAPI
IDirect3DRMFrame2Impl_Release(IDirect3DRMFrame2
* iface
)
497 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
498 ULONG ref
= InterlockedDecrement(&This
->ref
);
501 TRACE("(%p)->(): new ref = %d\n", This
, ref
);
505 for (i
= 0; i
< This
->nb_children
; i
++)
506 IDirect3DRMFrame3_Release(This
->children
[i
]);
507 HeapFree(GetProcessHeap(), 0, This
->children
);
508 for (i
= 0; i
< This
->nb_visuals
; i
++)
509 IDirect3DRMVisual_Release(This
->visuals
[i
]);
510 HeapFree(GetProcessHeap(), 0, This
->visuals
);
511 for (i
= 0; i
< This
->nb_lights
; i
++)
512 IDirect3DRMLight_Release(This
->lights
[i
]);
513 HeapFree(GetProcessHeap(), 0, This
->lights
);
514 HeapFree(GetProcessHeap(), 0, This
);
520 /*** IDirect3DRMObject methods ***/
521 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Clone(IDirect3DRMFrame2
* iface
,
522 LPUNKNOWN unkwn
, REFIID riid
,
525 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
527 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface
, This
, unkwn
, debugstr_guid(riid
), object
);
532 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddDestroyCallback(IDirect3DRMFrame2
* iface
,
533 D3DRMOBJECTCALLBACK cb
,
536 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
538 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
543 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteDestroyCallback(IDirect3DRMFrame2
* iface
,
544 D3DRMOBJECTCALLBACK cb
,
547 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
549 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
554 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetAppData(IDirect3DRMFrame2
* iface
,
557 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
559 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, data
);
564 static DWORD WINAPI
IDirect3DRMFrame2Impl_GetAppData(IDirect3DRMFrame2
* iface
)
566 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
568 FIXME("(%p/%p)->(): stub\n", iface
, This
);
573 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetName(IDirect3DRMFrame2
* iface
, LPCSTR name
)
575 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
577 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, name
);
582 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetName(IDirect3DRMFrame2
* iface
,
583 LPDWORD size
, LPSTR name
)
585 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
587 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
592 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetClassName(IDirect3DRMFrame2
* iface
,
593 LPDWORD size
, LPSTR name
)
595 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
597 TRACE("(%p/%p)->(%p, %p)\n", iface
, This
, size
, name
);
599 return IDirect3DRMFrame3_GetClassName(&This
->IDirect3DRMFrame3_iface
, size
, name
);
602 /*** IDirect3DRMFrame methods ***/
603 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddChild(IDirect3DRMFrame2
* iface
,
604 LPDIRECT3DRMFRAME child
)
606 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
607 IDirect3DRMFrameImpl
*frame
= unsafe_impl_from_IDirect3DRMFrame2((LPDIRECT3DRMFRAME2
)child
);
609 TRACE("(%p/%p)->(%p)\n", iface
, This
, child
);
612 return D3DRMERR_BADOBJECT
;
614 return IDirect3DRMFrame3_AddChild(&This
->IDirect3DRMFrame3_iface
, &frame
->IDirect3DRMFrame3_iface
);
617 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddLight(IDirect3DRMFrame2
* iface
,
618 LPDIRECT3DRMLIGHT light
)
620 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
622 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
624 return IDirect3DRMFrame3_AddLight(&This
->IDirect3DRMFrame3_iface
, light
);
627 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddMoveCallback(IDirect3DRMFrame2
* iface
,
628 D3DRMFRAMEMOVECALLBACK cb
, VOID
*arg
)
630 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
632 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
637 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddTransform(IDirect3DRMFrame2
* iface
,
638 D3DRMCOMBINETYPE type
,
639 D3DRMMATRIX4D matrix
)
641 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
643 TRACE("(%p/%p)->(%u,%p)\n", iface
, This
, type
, matrix
);
645 return IDirect3DRMFrame3_AddTransform(&This
->IDirect3DRMFrame3_iface
, type
, matrix
);
648 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddTranslation(IDirect3DRMFrame2
* iface
,
649 D3DRMCOMBINETYPE type
,
650 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
652 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
654 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
);
659 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddScale(IDirect3DRMFrame2
* iface
,
660 D3DRMCOMBINETYPE type
,
661 D3DVALUE sx
, D3DVALUE sy
, D3DVALUE sz
)
663 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
665 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, sx
, sy
, sz
);
670 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddRotation(IDirect3DRMFrame2
* iface
,
671 D3DRMCOMBINETYPE type
,
672 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
675 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
677 FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
, theta
);
682 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddVisual(IDirect3DRMFrame2
* iface
,
683 LPDIRECT3DRMVISUAL vis
)
685 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
687 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
689 return IDirect3DRMFrame3_AddVisual(&This
->IDirect3DRMFrame3_iface
, (LPUNKNOWN
)vis
);
692 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetChildren(IDirect3DRMFrame2
* iface
,
693 LPDIRECT3DRMFRAMEARRAY
*children
)
695 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
697 TRACE("(%p/%p)->(%p)\n", iface
, This
, children
);
699 return IDirect3DRMFrame3_GetChildren(&This
->IDirect3DRMFrame3_iface
, children
);
702 static D3DCOLOR WINAPI
IDirect3DRMFrame2Impl_GetColor(IDirect3DRMFrame2
* iface
)
704 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
706 FIXME("(%p/%p)->(): stub\n", iface
, This
);
711 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetLights(IDirect3DRMFrame2
* iface
,
712 LPDIRECT3DRMLIGHTARRAY
*lights
)
714 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
716 TRACE("(%p/%p)->(%p)\n", iface
, This
, lights
);
718 return IDirect3DRMFrame3_GetLights(&This
->IDirect3DRMFrame3_iface
, lights
);
721 static D3DRMMATERIALMODE WINAPI
IDirect3DRMFrame2Impl_GetMaterialMode(IDirect3DRMFrame2
* iface
)
723 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
725 FIXME("(%p/%p)->(): stub\n", iface
, This
);
727 return D3DRMMATERIAL_FROMPARENT
;
730 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetParent(IDirect3DRMFrame2
* iface
,
731 LPDIRECT3DRMFRAME
* frame
)
733 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
735 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
738 return D3DRMERR_BADVALUE
;
742 *frame
= (LPDIRECT3DRMFRAME
)&This
->parent
->IDirect3DRMFrame2_iface
;
743 IDirect3DRMFrame_AddRef(*frame
);
753 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetPosition(IDirect3DRMFrame2
* iface
,
754 LPDIRECT3DRMFRAME reference
,
755 LPD3DVECTOR return_position
)
757 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
759 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, reference
, return_position
);
764 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetRotation(IDirect3DRMFrame2
* iface
,
765 LPDIRECT3DRMFRAME reference
,
766 LPD3DVECTOR axis
, LPD3DVALUE return_theta
)
768 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
770 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, axis
, return_theta
);
775 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetScene(IDirect3DRMFrame2
* iface
,
776 LPDIRECT3DRMFRAME
* frame
)
778 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
780 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, frame
);
785 static D3DRMSORTMODE WINAPI
IDirect3DRMFrame2Impl_GetSortMode(IDirect3DRMFrame2
* iface
)
787 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
789 FIXME("(%p/%p)->(): stub\n", iface
, This
);
791 return D3DRMSORT_FROMPARENT
;
794 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetTexture(IDirect3DRMFrame2
* iface
,
795 LPDIRECT3DRMTEXTURE
* tex
)
797 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
799 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, tex
);
804 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetTransform(IDirect3DRMFrame2
* iface
,
805 D3DRMMATRIX4D return_matrix
)
807 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
809 TRACE("(%p/%p)->(%p)\n", iface
, This
, return_matrix
);
811 memcpy(&return_matrix
[0][0], &This
->transform
[0][0], sizeof(D3DRMMATRIX4D
));
816 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetVelocity(IDirect3DRMFrame2
* iface
,
817 LPDIRECT3DRMFRAME reference
,
818 LPD3DVECTOR return_velocity
,
821 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
823 FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface
, This
, reference
, return_velocity
, with_rotation
);
828 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetOrientation(IDirect3DRMFrame2
* iface
,
829 LPDIRECT3DRMFRAME reference
,
830 LPD3DVECTOR dir
, LPD3DVECTOR up
)
832 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
834 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, dir
, up
);
839 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetVisuals(IDirect3DRMFrame2
* iface
,
840 LPDIRECT3DRMVISUALARRAY
*visuals
)
842 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
843 IDirect3DRMVisualArrayImpl
* obj
;
846 TRACE("(%p/%p)->(%p)\n", iface
, This
, visuals
);
849 return D3DRMERR_BADVALUE
;
851 hr
= Direct3DRMVisualArray_create(visuals
);
856 obj
= (IDirect3DRMVisualArrayImpl
*)*visuals
;
858 obj
->size
= This
->nb_visuals
;
859 if (This
->nb_visuals
)
862 obj
->visuals
= HeapAlloc(GetProcessHeap(), 0, This
->nb_visuals
* sizeof(LPDIRECT3DRMVISUAL
));
864 return E_OUTOFMEMORY
;
865 for (i
= 0; i
< This
->nb_visuals
; i
++)
867 obj
->visuals
[i
] = This
->visuals
[i
];
868 IDirect3DRMVisual_AddRef(This
->visuals
[i
]);
875 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetTextureTopology(IDirect3DRMFrame2
* iface
,
876 BOOL
*wrap_u
, BOOL
*wrap_v
)
878 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
880 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, wrap_u
, wrap_v
);
885 static HRESULT WINAPI
IDirect3DRMFrame2Impl_InverseTransform(IDirect3DRMFrame2
* iface
,
886 D3DVECTOR
*d
, D3DVECTOR
*s
)
888 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
890 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
895 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Load(IDirect3DRMFrame2
* iface
, LPVOID filename
,
896 LPVOID name
, D3DRMLOADOPTIONS loadflags
,
897 D3DRMLOADTEXTURECALLBACK cb
, LPVOID lpArg
)
899 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
901 FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface
, This
, filename
, name
, loadflags
, cb
, lpArg
);
906 static HRESULT WINAPI
IDirect3DRMFrame2Impl_LookAt(IDirect3DRMFrame2
* iface
,
907 LPDIRECT3DRMFRAME target
,
908 LPDIRECT3DRMFRAME reference
,
909 D3DRMFRAMECONSTRAINT constraint
)
911 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
913 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, target
, reference
, constraint
);
918 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Move(IDirect3DRMFrame2
* iface
, D3DVALUE delta
)
920 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
922 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, delta
);
927 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteChild(IDirect3DRMFrame2
* iface
,
928 LPDIRECT3DRMFRAME frame
)
930 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
931 IDirect3DRMFrameImpl
*child
= unsafe_impl_from_IDirect3DRMFrame2((LPDIRECT3DRMFRAME2
)frame
);
933 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
936 return D3DRMERR_BADOBJECT
;
938 return IDirect3DRMFrame3_DeleteChild(&This
->IDirect3DRMFrame3_iface
, &child
->IDirect3DRMFrame3_iface
);
941 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteLight(IDirect3DRMFrame2
* iface
,
942 LPDIRECT3DRMLIGHT light
)
944 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
946 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
948 return IDirect3DRMFrame3_DeleteLight(&This
->IDirect3DRMFrame3_iface
, light
);
951 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteMoveCallback(IDirect3DRMFrame2
* iface
,
952 D3DRMFRAMEMOVECALLBACK cb
, VOID
*arg
)
954 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
956 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
961 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteVisual(IDirect3DRMFrame2
* iface
,
962 LPDIRECT3DRMVISUAL vis
)
964 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
966 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
968 return IDirect3DRMFrame3_DeleteVisual(&This
->IDirect3DRMFrame3_iface
, (LPUNKNOWN
)vis
);
971 static D3DCOLOR WINAPI
IDirect3DRMFrame2Impl_GetSceneBackground(IDirect3DRMFrame2
* iface
)
973 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
975 FIXME("(%p/%p)->(): stub\n", iface
, This
);
980 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetSceneBackgroundDepth(IDirect3DRMFrame2
* iface
,
981 LPDIRECTDRAWSURFACE
* surface
)
983 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
985 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
990 static D3DCOLOR WINAPI
IDirect3DRMFrame2Impl_GetSceneFogColor(IDirect3DRMFrame2
* iface
)
992 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
994 FIXME("(%p/%p)->(): stub\n", iface
, This
);
999 static BOOL WINAPI
IDirect3DRMFrame2Impl_GetSceneFogEnable(IDirect3DRMFrame2
* iface
)
1001 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1003 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1008 static D3DRMFOGMODE WINAPI
IDirect3DRMFrame2Impl_GetSceneFogMode(IDirect3DRMFrame2
* iface
)
1010 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1012 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1014 return D3DRMFOG_LINEAR
;
1017 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetSceneFogParams(IDirect3DRMFrame2
* iface
,
1018 D3DVALUE
*return_start
,
1019 D3DVALUE
*return_end
,
1020 D3DVALUE
*return_density
)
1022 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1024 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, return_start
, return_end
, return_density
);
1029 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackground(IDirect3DRMFrame2
* iface
,
1032 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1034 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
1039 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackgroundRGB(IDirect3DRMFrame2
* iface
,
1040 D3DVALUE red
, D3DVALUE green
,
1043 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1045 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, red
, green
, blue
);
1050 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackgroundDepth(IDirect3DRMFrame2
* iface
,
1051 LPDIRECTDRAWSURFACE surface
)
1053 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1055 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
1060 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackgroundImage(IDirect3DRMFrame2
* iface
,
1061 LPDIRECT3DRMTEXTURE texture
)
1063 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1065 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
1070 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogEnable(IDirect3DRMFrame2
* iface
, BOOL enable
)
1072 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1074 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, enable
);
1079 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogColor(IDirect3DRMFrame2
* iface
,
1082 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1084 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
1089 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogMode(IDirect3DRMFrame2
* iface
,
1092 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1094 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1099 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogParams(IDirect3DRMFrame2
* iface
,
1100 D3DVALUE start
, D3DVALUE end
,
1103 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1105 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, start
, end
, density
);
1110 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetColor(IDirect3DRMFrame2
* iface
, D3DCOLOR color
)
1112 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1114 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
1119 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetColorRGB(IDirect3DRMFrame2
* iface
, D3DVALUE red
,
1120 D3DVALUE green
, D3DVALUE blue
)
1122 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1124 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, red
, green
, blue
);
1129 static D3DRMZBUFFERMODE WINAPI
IDirect3DRMFrame2Impl_GetZbufferMode(IDirect3DRMFrame2
* iface
)
1131 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1133 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1135 return D3DRMZBUFFER_FROMPARENT
;
1138 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetMaterialMode(IDirect3DRMFrame2
* iface
,
1139 D3DRMMATERIALMODE mode
)
1141 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1143 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1148 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetOrientation(IDirect3DRMFrame2
* iface
,
1149 LPDIRECT3DRMFRAME reference
,
1150 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
1151 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
)
1153 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1155 FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface
, This
, reference
,
1156 dx
, dy
, dz
, ux
, uy
, uz
);
1161 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetPosition(IDirect3DRMFrame2
* iface
,
1162 LPDIRECT3DRMFRAME reference
,
1163 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
1165 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1167 FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
);
1172 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetRotation(IDirect3DRMFrame2
* iface
,
1173 LPDIRECT3DRMFRAME reference
,
1174 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
1177 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1179 FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
, theta
);
1184 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSortMode(IDirect3DRMFrame2
* iface
,
1187 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1189 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1194 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetTexture(IDirect3DRMFrame2
* iface
,
1195 LPDIRECT3DRMTEXTURE texture
)
1197 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1199 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
1204 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetTextureTopology(IDirect3DRMFrame2
* iface
,
1205 BOOL wrap_u
, BOOL wrap_v
)
1207 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1209 FIXME("(%p/%p)->(%d,%d): stub\n", iface
, This
, wrap_u
, wrap_v
);
1214 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetVelocity(IDirect3DRMFrame2
* iface
,
1215 LPDIRECT3DRMFRAME reference
,
1216 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
1219 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1221 FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface
, This
, reference
, x
, y
, z
, with_rotation
);
1226 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetZbufferMode(IDirect3DRMFrame2
* iface
,
1227 D3DRMZBUFFERMODE mode
)
1229 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1231 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1236 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Transform(IDirect3DRMFrame2
* iface
, D3DVECTOR
*d
,
1239 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1241 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
1246 /*** IDirect3DRMFrame2 methods ***/
1247 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddMoveCallback2(IDirect3DRMFrame2
* iface
,
1248 D3DRMFRAMEMOVECALLBACK cb
, VOID
*arg
,
1251 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1253 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, cb
, arg
, flags
);
1258 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetBox(IDirect3DRMFrame2
* iface
, LPD3DRMBOX box
)
1260 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1262 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
1267 static BOOL WINAPI
IDirect3DRMFrame2Impl_GetBoxEnable(IDirect3DRMFrame2
* iface
)
1269 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1271 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1276 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetAxes(IDirect3DRMFrame2
* iface
,
1277 LPD3DVECTOR dir
, LPD3DVECTOR up
)
1279 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1281 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, dir
, up
);
1286 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetMaterial(IDirect3DRMFrame2
* iface
,
1287 LPDIRECT3DRMMATERIAL
*material
)
1289 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1291 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, material
);
1296 static BOOL WINAPI
IDirect3DRMFrame2Impl_GetInheritAxes(IDirect3DRMFrame2
* iface
)
1298 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1300 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1305 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetHierarchyBox(IDirect3DRMFrame2
* iface
,
1308 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1310 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
1315 static const struct IDirect3DRMFrame2Vtbl Direct3DRMFrame2_Vtbl
=
1317 /*** IUnknown methods ***/
1318 IDirect3DRMFrame2Impl_QueryInterface
,
1319 IDirect3DRMFrame2Impl_AddRef
,
1320 IDirect3DRMFrame2Impl_Release
,
1321 /*** IDirect3DRMObject methods ***/
1322 IDirect3DRMFrame2Impl_Clone
,
1323 IDirect3DRMFrame2Impl_AddDestroyCallback
,
1324 IDirect3DRMFrame2Impl_DeleteDestroyCallback
,
1325 IDirect3DRMFrame2Impl_SetAppData
,
1326 IDirect3DRMFrame2Impl_GetAppData
,
1327 IDirect3DRMFrame2Impl_SetName
,
1328 IDirect3DRMFrame2Impl_GetName
,
1329 IDirect3DRMFrame2Impl_GetClassName
,
1330 /*** IDirect3DRMFrame methods ***/
1331 IDirect3DRMFrame2Impl_AddChild
,
1332 IDirect3DRMFrame2Impl_AddLight
,
1333 IDirect3DRMFrame2Impl_AddMoveCallback
,
1334 IDirect3DRMFrame2Impl_AddTransform
,
1335 IDirect3DRMFrame2Impl_AddTranslation
,
1336 IDirect3DRMFrame2Impl_AddScale
,
1337 IDirect3DRMFrame2Impl_AddRotation
,
1338 IDirect3DRMFrame2Impl_AddVisual
,
1339 IDirect3DRMFrame2Impl_GetChildren
,
1340 IDirect3DRMFrame2Impl_GetColor
,
1341 IDirect3DRMFrame2Impl_GetLights
,
1342 IDirect3DRMFrame2Impl_GetMaterialMode
,
1343 IDirect3DRMFrame2Impl_GetParent
,
1344 IDirect3DRMFrame2Impl_GetPosition
,
1345 IDirect3DRMFrame2Impl_GetRotation
,
1346 IDirect3DRMFrame2Impl_GetScene
,
1347 IDirect3DRMFrame2Impl_GetSortMode
,
1348 IDirect3DRMFrame2Impl_GetTexture
,
1349 IDirect3DRMFrame2Impl_GetTransform
,
1350 IDirect3DRMFrame2Impl_GetVelocity
,
1351 IDirect3DRMFrame2Impl_GetOrientation
,
1352 IDirect3DRMFrame2Impl_GetVisuals
,
1353 IDirect3DRMFrame2Impl_GetTextureTopology
,
1354 IDirect3DRMFrame2Impl_InverseTransform
,
1355 IDirect3DRMFrame2Impl_Load
,
1356 IDirect3DRMFrame2Impl_LookAt
,
1357 IDirect3DRMFrame2Impl_Move
,
1358 IDirect3DRMFrame2Impl_DeleteChild
,
1359 IDirect3DRMFrame2Impl_DeleteLight
,
1360 IDirect3DRMFrame2Impl_DeleteMoveCallback
,
1361 IDirect3DRMFrame2Impl_DeleteVisual
,
1362 IDirect3DRMFrame2Impl_GetSceneBackground
,
1363 IDirect3DRMFrame2Impl_GetSceneBackgroundDepth
,
1364 IDirect3DRMFrame2Impl_GetSceneFogColor
,
1365 IDirect3DRMFrame2Impl_GetSceneFogEnable
,
1366 IDirect3DRMFrame2Impl_GetSceneFogMode
,
1367 IDirect3DRMFrame2Impl_GetSceneFogParams
,
1368 IDirect3DRMFrame2Impl_SetSceneBackground
,
1369 IDirect3DRMFrame2Impl_SetSceneBackgroundRGB
,
1370 IDirect3DRMFrame2Impl_SetSceneBackgroundDepth
,
1371 IDirect3DRMFrame2Impl_SetSceneBackgroundImage
,
1372 IDirect3DRMFrame2Impl_SetSceneFogEnable
,
1373 IDirect3DRMFrame2Impl_SetSceneFogColor
,
1374 IDirect3DRMFrame2Impl_SetSceneFogMode
,
1375 IDirect3DRMFrame2Impl_SetSceneFogParams
,
1376 IDirect3DRMFrame2Impl_SetColor
,
1377 IDirect3DRMFrame2Impl_SetColorRGB
,
1378 IDirect3DRMFrame2Impl_GetZbufferMode
,
1379 IDirect3DRMFrame2Impl_SetMaterialMode
,
1380 IDirect3DRMFrame2Impl_SetOrientation
,
1381 IDirect3DRMFrame2Impl_SetPosition
,
1382 IDirect3DRMFrame2Impl_SetRotation
,
1383 IDirect3DRMFrame2Impl_SetSortMode
,
1384 IDirect3DRMFrame2Impl_SetTexture
,
1385 IDirect3DRMFrame2Impl_SetTextureTopology
,
1386 IDirect3DRMFrame2Impl_SetVelocity
,
1387 IDirect3DRMFrame2Impl_SetZbufferMode
,
1388 IDirect3DRMFrame2Impl_Transform
,
1389 /*** IDirect3DRMFrame2 methods ***/
1390 IDirect3DRMFrame2Impl_AddMoveCallback2
,
1391 IDirect3DRMFrame2Impl_GetBox
,
1392 IDirect3DRMFrame2Impl_GetBoxEnable
,
1393 IDirect3DRMFrame2Impl_GetAxes
,
1394 IDirect3DRMFrame2Impl_GetMaterial
,
1395 IDirect3DRMFrame2Impl_GetInheritAxes
,
1396 IDirect3DRMFrame2Impl_GetHierarchyBox
1399 /*** IUnknown methods ***/
1400 static HRESULT WINAPI
IDirect3DRMFrame3Impl_QueryInterface(IDirect3DRMFrame3
* iface
,
1401 REFIID riid
, void** object
)
1403 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1404 return IDirect3DRMFrame_QueryInterface(&This
->IDirect3DRMFrame2_iface
, riid
, object
);
1407 static ULONG WINAPI
IDirect3DRMFrame3Impl_AddRef(IDirect3DRMFrame3
* iface
)
1409 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1410 return IDirect3DRMFrame2_AddRef(&This
->IDirect3DRMFrame2_iface
);
1413 static ULONG WINAPI
IDirect3DRMFrame3Impl_Release(IDirect3DRMFrame3
* iface
)
1415 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1416 return IDirect3DRMFrame2_Release(&This
->IDirect3DRMFrame2_iface
);
1419 /*** IDirect3DRMObject methods ***/
1420 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Clone(IDirect3DRMFrame3
* iface
,
1421 LPUNKNOWN unkwn
, REFIID riid
,
1424 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1426 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface
, This
, unkwn
, debugstr_guid(riid
), object
);
1431 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddDestroyCallback(IDirect3DRMFrame3
* iface
,
1432 D3DRMOBJECTCALLBACK cb
,
1435 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1437 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
1442 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteDestroyCallback(IDirect3DRMFrame3
* iface
,
1443 D3DRMOBJECTCALLBACK cb
,
1446 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1448 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
1453 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetAppData(IDirect3DRMFrame3
* iface
,
1456 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1458 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, data
);
1463 static DWORD WINAPI
IDirect3DRMFrame3Impl_GetAppData(IDirect3DRMFrame3
* iface
)
1465 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1467 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1472 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetName(IDirect3DRMFrame3
* iface
, LPCSTR name
)
1474 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1476 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, name
);
1481 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetName(IDirect3DRMFrame3
* iface
,
1482 LPDWORD size
, LPSTR name
)
1484 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1486 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
1491 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetClassName(IDirect3DRMFrame3
* iface
,
1492 LPDWORD size
, LPSTR name
)
1494 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1496 TRACE("(%p/%p)->(%p, %p)\n", iface
, This
, size
, name
);
1498 if (!size
|| *size
< strlen("Frame") || !name
)
1499 return E_INVALIDARG
;
1501 strcpy(name
, "Frame");
1502 *size
= sizeof("Frame");
1507 /*** IDirect3DRMFrame methods ***/
1508 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddChild(IDirect3DRMFrame3
* iface
,
1509 LPDIRECT3DRMFRAME3 child
)
1511 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1512 IDirect3DRMFrameImpl
*child_obj
= unsafe_impl_from_IDirect3DRMFrame3(child
);
1514 TRACE("(%p/%p)->(%p)\n", iface
, This
, child
);
1517 return D3DRMERR_BADOBJECT
;
1519 if (child_obj
->parent
)
1521 IDirect3DRMFrame3
* parent
= &child_obj
->parent
->IDirect3DRMFrame3_iface
;
1523 if (parent
== iface
)
1525 /* Passed frame is already a child so return success */
1530 /* Remove parent and continue */
1531 IDirect3DRMFrame3_DeleteChild(parent
, child
);
1535 if ((This
->nb_children
+ 1) > This
->children_capacity
)
1538 IDirect3DRMFrame3
** children
;
1540 if (!This
->children_capacity
)
1543 children
= HeapAlloc(GetProcessHeap(), 0, new_capacity
* sizeof(IDirect3DRMFrame3
*));
1547 new_capacity
= This
->children_capacity
* 2;
1548 children
= HeapReAlloc(GetProcessHeap(), 0, This
->children
, new_capacity
* sizeof(IDirect3DRMFrame3
*));
1552 return E_OUTOFMEMORY
;
1554 This
->children_capacity
= new_capacity
;
1555 This
->children
= children
;
1558 This
->children
[This
->nb_children
++] = child
;
1559 IDirect3DRMFrame3_AddRef(child
);
1560 child_obj
->parent
= This
;
1565 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddLight(IDirect3DRMFrame3
* iface
,
1566 LPDIRECT3DRMLIGHT light
)
1568 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1570 IDirect3DRMLight
** lights
;
1572 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
1575 return D3DRMERR_BADOBJECT
;
1577 /* Check if already existing and return gracefully without increasing ref count */
1578 for (i
= 0; i
< This
->nb_lights
; i
++)
1579 if (This
->lights
[i
] == light
)
1582 if ((This
->nb_lights
+ 1) > This
->lights_capacity
)
1586 if (!This
->lights_capacity
)
1589 lights
= HeapAlloc(GetProcessHeap(), 0, new_capacity
* sizeof(IDirect3DRMLight
*));
1593 new_capacity
= This
->lights_capacity
* 2;
1594 lights
= HeapReAlloc(GetProcessHeap(), 0, This
->lights
, new_capacity
* sizeof(IDirect3DRMLight
*));
1598 return E_OUTOFMEMORY
;
1600 This
->lights_capacity
= new_capacity
;
1601 This
->lights
= lights
;
1604 This
->lights
[This
->nb_lights
++] = light
;
1605 IDirect3DRMLight_AddRef(light
);
1610 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddMoveCallback(IDirect3DRMFrame3
* iface
,
1611 D3DRMFRAME3MOVECALLBACK cb
, VOID
*arg
,
1614 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1616 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, cb
, arg
, flags
);
1621 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddTransform(IDirect3DRMFrame3
* iface
,
1622 D3DRMCOMBINETYPE type
,
1623 D3DRMMATRIX4D matrix
)
1625 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1627 TRACE("(%p/%p)->(%u,%p)\n", iface
, This
, type
, matrix
);
1631 case D3DRMCOMBINE_REPLACE
:
1632 memcpy(&This
->transform
[0][0], &matrix
[0][0], sizeof(D3DRMMATRIX4D
));
1635 case D3DRMCOMBINE_BEFORE
:
1636 FIXME("D3DRMCOMBINE_BEFORE not supported yed\n");
1639 case D3DRMCOMBINE_AFTER
:
1640 FIXME("D3DRMCOMBINE_AFTER not supported yed\n");
1644 WARN("Unknown Combine Type %u\n", type
);
1645 return D3DRMERR_BADVALUE
;
1651 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddTranslation(IDirect3DRMFrame3
* iface
,
1652 D3DRMCOMBINETYPE type
,
1653 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
1655 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1657 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
);
1662 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddScale(IDirect3DRMFrame3
* iface
,
1663 D3DRMCOMBINETYPE type
,
1664 D3DVALUE sx
, D3DVALUE sy
, D3DVALUE sz
)
1666 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1668 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, sx
, sy
, sz
);
1673 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddRotation(IDirect3DRMFrame3
* iface
,
1674 D3DRMCOMBINETYPE type
,
1675 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
1678 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1680 FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
, theta
);
1685 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddVisual(IDirect3DRMFrame3
* iface
, LPUNKNOWN vis
)
1687 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1689 IDirect3DRMVisual
** visuals
;
1691 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
1694 return D3DRMERR_BADOBJECT
;
1696 /* Check if already existing and return gracefully without increasing ref count */
1697 for (i
= 0; i
< This
->nb_visuals
; i
++)
1698 if (This
->visuals
[i
] == (IDirect3DRMVisual
*)vis
)
1701 if ((This
->nb_visuals
+ 1) > This
->visuals_capacity
)
1705 if (!This
->visuals_capacity
)
1708 visuals
= HeapAlloc(GetProcessHeap(), 0, new_capacity
* sizeof(IDirect3DRMVisual
*));
1712 new_capacity
= This
->visuals_capacity
* 2;
1713 visuals
= HeapReAlloc(GetProcessHeap(), 0, This
->visuals
, new_capacity
* sizeof(IDirect3DRMVisual
*));
1717 return E_OUTOFMEMORY
;
1719 This
->visuals_capacity
= new_capacity
;
1720 This
->visuals
= visuals
;
1723 This
->visuals
[This
->nb_visuals
++] = (IDirect3DRMVisual
*)vis
;
1724 IDirect3DRMVisual_AddRef(vis
);
1729 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetChildren(IDirect3DRMFrame3
* iface
,
1730 LPDIRECT3DRMFRAMEARRAY
*children
)
1732 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1733 IDirect3DRMFrameArrayImpl
* obj
;
1736 TRACE("(%p/%p)->(%p)\n", iface
, This
, children
);
1739 return D3DRMERR_BADVALUE
;
1741 hr
= Direct3DRMFrameArray_create(children
);
1746 obj
= (IDirect3DRMFrameArrayImpl
*)*children
;
1748 obj
->size
= This
->nb_children
;
1749 if (This
->nb_children
)
1752 obj
->frames
= HeapAlloc(GetProcessHeap(), 0, This
->nb_children
* sizeof(LPDIRECT3DRMFRAME
));
1754 return E_OUTOFMEMORY
;
1755 for (i
= 0; i
< This
->nb_children
; i
++)
1756 IDirect3DRMFrame3_QueryInterface(This
->children
[i
], &IID_IDirect3DRMFrame
, (void**)&obj
->frames
[i
]);
1762 static D3DCOLOR WINAPI
IDirect3DRMFrame3Impl_GetColor(IDirect3DRMFrame3
* iface
)
1764 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1766 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1771 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetLights(IDirect3DRMFrame3
* iface
,
1772 LPDIRECT3DRMLIGHTARRAY
*lights
)
1774 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1775 IDirect3DRMLightArrayImpl
* obj
;
1778 TRACE("(%p/%p)->(%p)\n", iface
, This
, lights
);
1781 return D3DRMERR_BADVALUE
;
1783 hr
= Direct3DRMLightArray_create(lights
);
1788 obj
= (IDirect3DRMLightArrayImpl
*)*lights
;
1790 obj
->size
= This
->nb_lights
;
1791 if (This
->nb_lights
)
1794 obj
->lights
= HeapAlloc(GetProcessHeap(), 0, This
->nb_lights
* sizeof(LPDIRECT3DRMLIGHT
));
1796 return E_OUTOFMEMORY
;
1797 for (i
= 0; i
< This
->nb_lights
; i
++)
1798 IDirect3DRMLight_QueryInterface(This
->lights
[i
], &IID_IDirect3DRMLight
, (void**)&obj
->lights
[i
]);
1804 static D3DRMMATERIALMODE WINAPI
IDirect3DRMFrame3Impl_GetMaterialMode(IDirect3DRMFrame3
* iface
)
1806 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1808 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1810 return D3DRMMATERIAL_FROMPARENT
;
1813 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetParent(IDirect3DRMFrame3
* iface
,
1814 LPDIRECT3DRMFRAME3
* frame
)
1816 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1818 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
1821 return D3DRMERR_BADVALUE
;
1825 *frame
= &This
->parent
->IDirect3DRMFrame3_iface
;
1826 IDirect3DRMFrame_AddRef(*frame
);
1836 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetPosition(IDirect3DRMFrame3
* iface
,
1837 LPDIRECT3DRMFRAME3 reference
,
1838 LPD3DVECTOR return_position
)
1840 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1842 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, reference
, return_position
);
1847 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetRotation(IDirect3DRMFrame3
* iface
,
1848 LPDIRECT3DRMFRAME3 reference
,
1849 LPD3DVECTOR axis
, LPD3DVALUE return_theta
)
1851 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1853 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, axis
, return_theta
);
1858 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetScene(IDirect3DRMFrame3
* iface
,
1859 LPDIRECT3DRMFRAME3
* frame
)
1861 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1863 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, frame
);
1868 static D3DRMSORTMODE WINAPI
IDirect3DRMFrame3Impl_GetSortMode(IDirect3DRMFrame3
* iface
)
1870 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1872 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1874 return D3DRMSORT_FROMPARENT
;
1877 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetTexture(IDirect3DRMFrame3
* iface
,
1878 LPDIRECT3DRMTEXTURE3
* tex
)
1880 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1882 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, tex
);
1887 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetTransform(IDirect3DRMFrame3
* iface
,
1888 LPDIRECT3DRMFRAME3 reference
,
1889 D3DRMMATRIX4D return_matrix
)
1891 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1893 TRACE("(%p/%p)->(%p,%p)\n", iface
, This
, reference
, return_matrix
);
1896 FIXME("Specifying a frame as the root of the scene different from the current root frame is not supported yet\n");
1898 memcpy(&return_matrix
[0][0], &This
->transform
[0][0], sizeof(D3DRMMATRIX4D
));
1903 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetVelocity(IDirect3DRMFrame3
* iface
,
1904 LPDIRECT3DRMFRAME3 reference
,
1905 LPD3DVECTOR return_velocity
,
1908 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1910 FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface
, This
, reference
, return_velocity
, with_rotation
);
1915 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetOrientation(IDirect3DRMFrame3
* iface
,
1916 LPDIRECT3DRMFRAME3 reference
,
1917 LPD3DVECTOR dir
, LPD3DVECTOR up
)
1919 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1921 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, dir
, up
);
1926 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetVisuals(IDirect3DRMFrame3
* iface
, LPDWORD num
,
1929 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1931 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, num
, visuals
);
1936 static HRESULT WINAPI
IDirect3DRMFrame3Impl_InverseTransform(IDirect3DRMFrame3
* iface
,
1937 D3DVECTOR
*d
, D3DVECTOR
*s
)
1939 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1941 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
1946 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Load(IDirect3DRMFrame3
* iface
, LPVOID filename
,
1947 LPVOID name
, D3DRMLOADOPTIONS loadflags
,
1948 D3DRMLOADTEXTURE3CALLBACK cb
, LPVOID lpArg
)
1950 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1952 FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface
, This
, filename
, name
, loadflags
, cb
, lpArg
);
1957 static HRESULT WINAPI
IDirect3DRMFrame3Impl_LookAt(IDirect3DRMFrame3
* iface
,
1958 LPDIRECT3DRMFRAME3 target
,
1959 LPDIRECT3DRMFRAME3 reference
,
1960 D3DRMFRAMECONSTRAINT constraint
)
1962 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1964 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, target
, reference
, constraint
);
1969 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Move(IDirect3DRMFrame3
* iface
, D3DVALUE delta
)
1971 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1973 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, delta
);
1978 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteChild(IDirect3DRMFrame3
* iface
,
1979 LPDIRECT3DRMFRAME3 frame
)
1981 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1982 IDirect3DRMFrameImpl
*frame_obj
= unsafe_impl_from_IDirect3DRMFrame3(frame
);
1985 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
1988 return D3DRMERR_BADOBJECT
;
1990 /* Check if child exists */
1991 for (i
= 0; i
< This
->nb_children
; i
++)
1992 if (This
->children
[i
] == frame
)
1995 if (i
== This
->nb_children
)
1996 return D3DRMERR_BADVALUE
;
1998 memmove(This
->children
+ i
, This
->children
+ i
+ 1, sizeof(IDirect3DRMFrame3
*) * (This
->nb_children
- 1 - i
));
1999 IDirect3DRMFrame3_Release(frame
);
2000 frame_obj
->parent
= NULL
;
2001 This
->nb_children
--;
2006 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteLight(IDirect3DRMFrame3
* iface
,
2007 LPDIRECT3DRMLIGHT light
)
2009 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2012 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
2015 return D3DRMERR_BADOBJECT
;
2017 /* Check if visual exists */
2018 for (i
= 0; i
< This
->nb_lights
; i
++)
2019 if (This
->lights
[i
] == light
)
2022 if (i
== This
->nb_lights
)
2023 return D3DRMERR_BADVALUE
;
2025 memmove(This
->lights
+ i
, This
->lights
+ i
+ 1, sizeof(IDirect3DRMLight
*) * (This
->nb_lights
- 1 - i
));
2026 IDirect3DRMLight_Release(light
);
2032 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteMoveCallback(IDirect3DRMFrame3
* iface
,
2033 D3DRMFRAME3MOVECALLBACK cb
,
2036 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2038 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
2043 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteVisual(IDirect3DRMFrame3
* iface
, LPUNKNOWN vis
)
2045 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2048 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
2051 return D3DRMERR_BADOBJECT
;
2053 /* Check if visual exists */
2054 for (i
= 0; i
< This
->nb_visuals
; i
++)
2055 if (This
->visuals
[i
] == (IDirect3DRMVisual
*)vis
)
2058 if (i
== This
->nb_visuals
)
2059 return D3DRMERR_BADVALUE
;
2061 memmove(This
->visuals
+ i
, This
->visuals
+ i
+ 1, sizeof(IDirect3DRMVisual
*) * (This
->nb_visuals
- 1 - i
));
2062 IDirect3DRMVisual_Release(vis
);
2068 static D3DCOLOR WINAPI
IDirect3DRMFrame3Impl_GetSceneBackground(IDirect3DRMFrame3
* iface
)
2070 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2072 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2077 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetSceneBackgroundDepth(IDirect3DRMFrame3
* iface
,
2078 LPDIRECTDRAWSURFACE
* surface
)
2080 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2082 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
2087 static D3DCOLOR WINAPI
IDirect3DRMFrame3Impl_GetSceneFogColor(IDirect3DRMFrame3
* iface
)
2089 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2091 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2096 static BOOL WINAPI
IDirect3DRMFrame3Impl_GetSceneFogEnable(IDirect3DRMFrame3
* iface
)
2098 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2100 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2105 static D3DRMFOGMODE WINAPI
IDirect3DRMFrame3Impl_GetSceneFogMode(IDirect3DRMFrame3
* iface
)
2107 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2109 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2111 return D3DRMFOG_LINEAR
;
2114 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetSceneFogParams(IDirect3DRMFrame3
* iface
,
2115 D3DVALUE
*return_start
,
2116 D3DVALUE
*return_end
,
2117 D3DVALUE
*return_density
)
2119 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2121 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, return_start
, return_end
, return_density
);
2126 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackground(IDirect3DRMFrame3
* iface
,
2129 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2131 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
2136 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackgroundRGB(IDirect3DRMFrame3
* iface
,
2137 D3DVALUE red
, D3DVALUE green
,
2140 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2142 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, red
, green
, blue
);
2147 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackgroundDepth(IDirect3DRMFrame3
* iface
,
2148 LPDIRECTDRAWSURFACE surface
)
2150 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2152 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
2157 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackgroundImage(IDirect3DRMFrame3
* iface
,
2158 LPDIRECT3DRMTEXTURE3 texture
)
2160 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2162 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
2167 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogEnable(IDirect3DRMFrame3
* iface
, BOOL enable
)
2169 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2171 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, enable
);
2176 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogColor(IDirect3DRMFrame3
* iface
,
2179 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2181 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
2186 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogMode(IDirect3DRMFrame3
* iface
,
2189 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2191 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
2196 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogParams(IDirect3DRMFrame3
* iface
,
2197 D3DVALUE start
, D3DVALUE end
,
2200 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2202 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, start
, end
, density
);
2207 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetColor(IDirect3DRMFrame3
* iface
, D3DCOLOR color
)
2209 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2211 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
2216 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetColorRGB(IDirect3DRMFrame3
* iface
, D3DVALUE red
,
2217 D3DVALUE green
, D3DVALUE blue
)
2219 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2221 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, red
, green
, blue
);
2226 static D3DRMZBUFFERMODE WINAPI
IDirect3DRMFrame3Impl_GetZbufferMode(IDirect3DRMFrame3
* iface
)
2228 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2230 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2232 return D3DRMZBUFFER_FROMPARENT
;
2235 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetMaterialMode(IDirect3DRMFrame3
* iface
,
2236 D3DRMMATERIALMODE mode
)
2238 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2240 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
2245 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetOrientation(IDirect3DRMFrame3
* iface
,
2246 LPDIRECT3DRMFRAME3 reference
,
2247 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
2248 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
)
2250 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2252 FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface
, This
, reference
,
2253 dx
, dy
, dz
, ux
, uy
, uz
);
2258 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetPosition(IDirect3DRMFrame3
* iface
,
2259 LPDIRECT3DRMFRAME3 reference
,
2260 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
2262 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2264 FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
);
2269 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetRotation(IDirect3DRMFrame3
* iface
,
2270 LPDIRECT3DRMFRAME3 reference
,
2271 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
2274 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2276 FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
, theta
);
2281 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSortMode(IDirect3DRMFrame3
* iface
,
2284 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2286 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
2291 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetTexture(IDirect3DRMFrame3
* iface
,
2292 LPDIRECT3DRMTEXTURE3 texture
)
2294 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2296 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
2301 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetVelocity(IDirect3DRMFrame3
* iface
,
2302 LPDIRECT3DRMFRAME3 reference
,
2303 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
2306 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2308 FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface
, This
, reference
, x
, y
, z
, with_rotation
);
2313 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetZbufferMode(IDirect3DRMFrame3
* iface
,
2314 D3DRMZBUFFERMODE mode
)
2316 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2318 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
2323 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Transform(IDirect3DRMFrame3
* iface
, D3DVECTOR
*d
,
2326 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2328 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
2333 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetBox(IDirect3DRMFrame3
* iface
, LPD3DRMBOX box
)
2335 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2337 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
2342 static BOOL WINAPI
IDirect3DRMFrame3Impl_GetBoxEnable(IDirect3DRMFrame3
* iface
)
2344 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2346 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2351 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetAxes(IDirect3DRMFrame3
* iface
,
2352 LPD3DVECTOR dir
, LPD3DVECTOR up
)
2354 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2356 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, dir
, up
);
2361 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetMaterial(IDirect3DRMFrame3
* iface
,
2362 LPDIRECT3DRMMATERIAL2
*material
)
2364 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2366 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, material
);
2371 static BOOL WINAPI
IDirect3DRMFrame3Impl_GetInheritAxes(IDirect3DRMFrame3
* iface
)
2373 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2375 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2380 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetHierarchyBox(IDirect3DRMFrame3
* iface
,
2383 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2385 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
2390 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetBox(IDirect3DRMFrame3
* iface
, LPD3DRMBOX box
)
2392 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2394 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
2399 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetBoxEnable(IDirect3DRMFrame3
* iface
, BOOL enable
)
2401 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2403 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, enable
);
2408 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetAxes(IDirect3DRMFrame3
* iface
,
2409 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
2410 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
)
2412 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2414 FIXME("(%p/%p)->(%f,%f,%f,%f,%f,%f): stub\n", iface
, This
, dx
, dy
, dz
, ux
, uy
, uz
);
2419 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetInheritAxes(IDirect3DRMFrame3
* iface
,
2420 BOOL inherit_from_parent
)
2422 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2424 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, inherit_from_parent
);
2429 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetMaterial(IDirect3DRMFrame3
* iface
,
2430 LPDIRECT3DRMMATERIAL2 material
)
2432 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2434 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, material
);
2439 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetQuaternion(IDirect3DRMFrame3
* iface
,
2440 LPDIRECT3DRMFRAME3 reference
,
2443 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2445 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, reference
, q
);
2450 static HRESULT WINAPI
IDirect3DRMFrame3Impl_RayPick(IDirect3DRMFrame3
* iface
,
2451 LPDIRECT3DRMFRAME3 reference
, LPD3DRMRAY ray
,
2453 LPDIRECT3DRMPICKED2ARRAY
*return_visuals
)
2455 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2457 FIXME("(%p/%p)->(%p,%p,%u,%p): stub\n", iface
, This
, reference
, ray
, flags
, return_visuals
);
2462 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Save(IDirect3DRMFrame3
* iface
, LPCSTR filename
,
2463 D3DRMXOFFORMAT d3dFormat
,
2464 D3DRMSAVEOPTIONS d3dSaveFlags
)
2466 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2468 FIXME("(%p/%p)->(%p,%u,%u): stub\n", iface
, This
, filename
, d3dFormat
, d3dSaveFlags
);
2473 static HRESULT WINAPI
IDirect3DRMFrame3Impl_TransformVectors(IDirect3DRMFrame3
* iface
,
2474 LPDIRECT3DRMFRAME3 reference
,
2475 DWORD num
, LPD3DVECTOR dst
,
2478 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2480 FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface
, This
, reference
, num
, dst
, src
);
2485 static HRESULT WINAPI
IDirect3DRMFrame3Impl_InverseTransformVectors(IDirect3DRMFrame3
* iface
,
2486 LPDIRECT3DRMFRAME3 reference
,
2487 DWORD num
, LPD3DVECTOR dst
,
2490 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2492 FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface
, This
, reference
, num
, dst
, src
);
2497 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetTraversalOptions(IDirect3DRMFrame3
* iface
,
2500 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2502 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, flags
);
2507 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetTraversalOptions(IDirect3DRMFrame3
* iface
,
2510 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2512 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, flags
);
2517 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogMethod(IDirect3DRMFrame3
* iface
,
2520 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2522 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, flags
);
2527 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetSceneFogMethod(IDirect3DRMFrame3
* iface
,
2530 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2532 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, flags
);
2537 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetMaterialOverride(IDirect3DRMFrame3
* iface
,
2538 LPD3DRMMATERIALOVERRIDE override
)
2540 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2542 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, override
);
2547 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetMaterialOverride(IDirect3DRMFrame3
* iface
,
2548 LPD3DRMMATERIALOVERRIDE override
)
2550 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2552 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, override
);
2557 static const struct IDirect3DRMFrame3Vtbl Direct3DRMFrame3_Vtbl
=
2559 /*** IUnknown methods ***/
2560 IDirect3DRMFrame3Impl_QueryInterface
,
2561 IDirect3DRMFrame3Impl_AddRef
,
2562 IDirect3DRMFrame3Impl_Release
,
2563 /*** IDirect3DRMObject methods ***/
2564 IDirect3DRMFrame3Impl_Clone
,
2565 IDirect3DRMFrame3Impl_AddDestroyCallback
,
2566 IDirect3DRMFrame3Impl_DeleteDestroyCallback
,
2567 IDirect3DRMFrame3Impl_SetAppData
,
2568 IDirect3DRMFrame3Impl_GetAppData
,
2569 IDirect3DRMFrame3Impl_SetName
,
2570 IDirect3DRMFrame3Impl_GetName
,
2571 IDirect3DRMFrame3Impl_GetClassName
,
2572 /*** IDirect3DRMFrame3 methods ***/
2573 IDirect3DRMFrame3Impl_AddChild
,
2574 IDirect3DRMFrame3Impl_AddLight
,
2575 IDirect3DRMFrame3Impl_AddMoveCallback
,
2576 IDirect3DRMFrame3Impl_AddTransform
,
2577 IDirect3DRMFrame3Impl_AddTranslation
,
2578 IDirect3DRMFrame3Impl_AddScale
,
2579 IDirect3DRMFrame3Impl_AddRotation
,
2580 IDirect3DRMFrame3Impl_AddVisual
,
2581 IDirect3DRMFrame3Impl_GetChildren
,
2582 IDirect3DRMFrame3Impl_GetColor
,
2583 IDirect3DRMFrame3Impl_GetLights
,
2584 IDirect3DRMFrame3Impl_GetMaterialMode
,
2585 IDirect3DRMFrame3Impl_GetParent
,
2586 IDirect3DRMFrame3Impl_GetPosition
,
2587 IDirect3DRMFrame3Impl_GetRotation
,
2588 IDirect3DRMFrame3Impl_GetScene
,
2589 IDirect3DRMFrame3Impl_GetSortMode
,
2590 IDirect3DRMFrame3Impl_GetTexture
,
2591 IDirect3DRMFrame3Impl_GetTransform
,
2592 IDirect3DRMFrame3Impl_GetVelocity
,
2593 IDirect3DRMFrame3Impl_GetOrientation
,
2594 IDirect3DRMFrame3Impl_GetVisuals
,
2595 IDirect3DRMFrame3Impl_InverseTransform
,
2596 IDirect3DRMFrame3Impl_Load
,
2597 IDirect3DRMFrame3Impl_LookAt
,
2598 IDirect3DRMFrame3Impl_Move
,
2599 IDirect3DRMFrame3Impl_DeleteChild
,
2600 IDirect3DRMFrame3Impl_DeleteLight
,
2601 IDirect3DRMFrame3Impl_DeleteMoveCallback
,
2602 IDirect3DRMFrame3Impl_DeleteVisual
,
2603 IDirect3DRMFrame3Impl_GetSceneBackground
,
2604 IDirect3DRMFrame3Impl_GetSceneBackgroundDepth
,
2605 IDirect3DRMFrame3Impl_GetSceneFogColor
,
2606 IDirect3DRMFrame3Impl_GetSceneFogEnable
,
2607 IDirect3DRMFrame3Impl_GetSceneFogMode
,
2608 IDirect3DRMFrame3Impl_GetSceneFogParams
,
2609 IDirect3DRMFrame3Impl_SetSceneBackground
,
2610 IDirect3DRMFrame3Impl_SetSceneBackgroundRGB
,
2611 IDirect3DRMFrame3Impl_SetSceneBackgroundDepth
,
2612 IDirect3DRMFrame3Impl_SetSceneBackgroundImage
,
2613 IDirect3DRMFrame3Impl_SetSceneFogEnable
,
2614 IDirect3DRMFrame3Impl_SetSceneFogColor
,
2615 IDirect3DRMFrame3Impl_SetSceneFogMode
,
2616 IDirect3DRMFrame3Impl_SetSceneFogParams
,
2617 IDirect3DRMFrame3Impl_SetColor
,
2618 IDirect3DRMFrame3Impl_SetColorRGB
,
2619 IDirect3DRMFrame3Impl_GetZbufferMode
,
2620 IDirect3DRMFrame3Impl_SetMaterialMode
,
2621 IDirect3DRMFrame3Impl_SetOrientation
,
2622 IDirect3DRMFrame3Impl_SetPosition
,
2623 IDirect3DRMFrame3Impl_SetRotation
,
2624 IDirect3DRMFrame3Impl_SetSortMode
,
2625 IDirect3DRMFrame3Impl_SetTexture
,
2626 IDirect3DRMFrame3Impl_SetVelocity
,
2627 IDirect3DRMFrame3Impl_SetZbufferMode
,
2628 IDirect3DRMFrame3Impl_Transform
,
2629 IDirect3DRMFrame3Impl_GetBox
,
2630 IDirect3DRMFrame3Impl_GetBoxEnable
,
2631 IDirect3DRMFrame3Impl_GetAxes
,
2632 IDirect3DRMFrame3Impl_GetMaterial
,
2633 IDirect3DRMFrame3Impl_GetInheritAxes
,
2634 IDirect3DRMFrame3Impl_GetHierarchyBox
,
2635 IDirect3DRMFrame3Impl_SetBox
,
2636 IDirect3DRMFrame3Impl_SetBoxEnable
,
2637 IDirect3DRMFrame3Impl_SetAxes
,
2638 IDirect3DRMFrame3Impl_SetInheritAxes
,
2639 IDirect3DRMFrame3Impl_SetMaterial
,
2640 IDirect3DRMFrame3Impl_SetQuaternion
,
2641 IDirect3DRMFrame3Impl_RayPick
,
2642 IDirect3DRMFrame3Impl_Save
,
2643 IDirect3DRMFrame3Impl_TransformVectors
,
2644 IDirect3DRMFrame3Impl_InverseTransformVectors
,
2645 IDirect3DRMFrame3Impl_SetTraversalOptions
,
2646 IDirect3DRMFrame3Impl_GetTraversalOptions
,
2647 IDirect3DRMFrame3Impl_SetSceneFogMethod
,
2648 IDirect3DRMFrame3Impl_GetSceneFogMethod
,
2649 IDirect3DRMFrame3Impl_SetMaterialOverride
,
2650 IDirect3DRMFrame3Impl_GetMaterialOverride
2653 static inline IDirect3DRMFrameImpl
*unsafe_impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2
*iface
)
2657 assert(iface
->lpVtbl
== &Direct3DRMFrame2_Vtbl
);
2659 return impl_from_IDirect3DRMFrame2(iface
);
2662 static inline IDirect3DRMFrameImpl
*unsafe_impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3
*iface
)
2666 assert(iface
->lpVtbl
== &Direct3DRMFrame3_Vtbl
);
2668 return impl_from_IDirect3DRMFrame3(iface
);
2671 HRESULT
Direct3DRMFrame_create(REFIID riid
, IUnknown
* parent
, IUnknown
** ret_iface
)
2673 IDirect3DRMFrameImpl
* object
;
2675 TRACE("(%s, %p, %p)\n", wine_dbgstr_guid(riid
), parent
, ret_iface
);
2677 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirect3DRMFrameImpl
));
2680 ERR("Out of memory\n");
2681 return E_OUTOFMEMORY
;
2684 object
->IDirect3DRMFrame2_iface
.lpVtbl
= &Direct3DRMFrame2_Vtbl
;
2685 object
->IDirect3DRMFrame3_iface
.lpVtbl
= &Direct3DRMFrame3_Vtbl
;
2688 memcpy(&object
->transform
[0][0], &identity
[0][0], sizeof(D3DRMMATRIX4D
));
2690 if (IsEqualGUID(riid
, &IID_IDirect3DRMFrame3
))
2693 IDirect3DRMFrame3_AddChild((IDirect3DRMFrame3
*)parent
, &object
->IDirect3DRMFrame3_iface
);
2694 *ret_iface
= (IUnknown
*)&object
->IDirect3DRMFrame3_iface
;
2699 IDirect3DRMFrame2_AddChild((IDirect3DRMFrame2
*)parent
, (IDirect3DRMFrame
*)&object
->IDirect3DRMFrame2_iface
);
2700 *ret_iface
= (IUnknown
*)&object
->IDirect3DRMFrame2_iface
;