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
;
58 D3DCOLOR scenebackground
;
62 IDirect3DRMFrameArray IDirect3DRMFrameArray_iface
;
65 LPDIRECT3DRMFRAME
* frames
;
66 } IDirect3DRMFrameArrayImpl
;
69 IDirect3DRMVisualArray IDirect3DRMVisualArray_iface
;
72 LPDIRECT3DRMVISUAL
* visuals
;
73 } IDirect3DRMVisualArrayImpl
;
76 IDirect3DRMLightArray IDirect3DRMLightArray_iface
;
79 LPDIRECT3DRMLIGHT
* lights
;
80 } IDirect3DRMLightArrayImpl
;
82 static inline IDirect3DRMFrameImpl
*impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2
*iface
)
84 return CONTAINING_RECORD(iface
, IDirect3DRMFrameImpl
, IDirect3DRMFrame2_iface
);
87 static inline IDirect3DRMFrameImpl
*impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3
*iface
)
89 return CONTAINING_RECORD(iface
, IDirect3DRMFrameImpl
, IDirect3DRMFrame3_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 IDirect3DRMFrame3
*frame
;
610 TRACE("(%p/%p)->(%p)\n", iface
, This
, child
);
613 return D3DRMERR_BADOBJECT
;
614 hr
= IDirect3DRMFrame_QueryInterface(child
, &IID_IDirect3DRMFrame3
, (void**)&frame
);
616 return D3DRMERR_BADOBJECT
;
617 IDirect3DRMFrame_Release(child
);
619 return IDirect3DRMFrame3_AddChild(&This
->IDirect3DRMFrame3_iface
, frame
);
622 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddLight(IDirect3DRMFrame2
* iface
,
623 LPDIRECT3DRMLIGHT light
)
625 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
627 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
629 return IDirect3DRMFrame3_AddLight(&This
->IDirect3DRMFrame3_iface
, light
);
632 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddMoveCallback(IDirect3DRMFrame2
* iface
,
633 D3DRMFRAMEMOVECALLBACK cb
, VOID
*arg
)
635 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
637 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
642 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddTransform(IDirect3DRMFrame2
* iface
,
643 D3DRMCOMBINETYPE type
,
644 D3DRMMATRIX4D matrix
)
646 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
648 TRACE("(%p/%p)->(%u,%p)\n", iface
, This
, type
, matrix
);
650 return IDirect3DRMFrame3_AddTransform(&This
->IDirect3DRMFrame3_iface
, type
, matrix
);
653 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddTranslation(IDirect3DRMFrame2
* iface
,
654 D3DRMCOMBINETYPE type
,
655 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
657 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
659 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
);
664 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddScale(IDirect3DRMFrame2
* iface
,
665 D3DRMCOMBINETYPE type
,
666 D3DVALUE sx
, D3DVALUE sy
, D3DVALUE sz
)
668 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
670 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, sx
, sy
, sz
);
675 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddRotation(IDirect3DRMFrame2
* iface
,
676 D3DRMCOMBINETYPE type
,
677 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
680 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
682 FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
, theta
);
687 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddVisual(IDirect3DRMFrame2
* iface
,
688 LPDIRECT3DRMVISUAL vis
)
690 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
692 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
694 return IDirect3DRMFrame3_AddVisual(&This
->IDirect3DRMFrame3_iface
, (LPUNKNOWN
)vis
);
697 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetChildren(IDirect3DRMFrame2
* iface
,
698 LPDIRECT3DRMFRAMEARRAY
*children
)
700 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
702 TRACE("(%p/%p)->(%p)\n", iface
, This
, children
);
704 return IDirect3DRMFrame3_GetChildren(&This
->IDirect3DRMFrame3_iface
, children
);
707 static D3DCOLOR WINAPI
IDirect3DRMFrame2Impl_GetColor(IDirect3DRMFrame2
* iface
)
709 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
711 FIXME("(%p/%p)->(): stub\n", iface
, This
);
716 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetLights(IDirect3DRMFrame2
* iface
,
717 LPDIRECT3DRMLIGHTARRAY
*lights
)
719 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
721 TRACE("(%p/%p)->(%p)\n", iface
, This
, lights
);
723 return IDirect3DRMFrame3_GetLights(&This
->IDirect3DRMFrame3_iface
, lights
);
726 static D3DRMMATERIALMODE WINAPI
IDirect3DRMFrame2Impl_GetMaterialMode(IDirect3DRMFrame2
* iface
)
728 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
730 FIXME("(%p/%p)->(): stub\n", iface
, This
);
732 return D3DRMMATERIAL_FROMPARENT
;
735 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetParent(IDirect3DRMFrame2
* iface
,
736 LPDIRECT3DRMFRAME
* frame
)
738 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
740 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
743 return D3DRMERR_BADVALUE
;
747 *frame
= (LPDIRECT3DRMFRAME
)&This
->parent
->IDirect3DRMFrame2_iface
;
748 IDirect3DRMFrame_AddRef(*frame
);
758 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetPosition(IDirect3DRMFrame2
* iface
,
759 LPDIRECT3DRMFRAME reference
,
760 LPD3DVECTOR return_position
)
762 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
764 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, reference
, return_position
);
769 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetRotation(IDirect3DRMFrame2
* iface
,
770 LPDIRECT3DRMFRAME reference
,
771 LPD3DVECTOR axis
, LPD3DVALUE return_theta
)
773 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
775 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, axis
, return_theta
);
780 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetScene(IDirect3DRMFrame2
* iface
,
781 LPDIRECT3DRMFRAME
* frame
)
783 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
785 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, frame
);
790 static D3DRMSORTMODE WINAPI
IDirect3DRMFrame2Impl_GetSortMode(IDirect3DRMFrame2
* iface
)
792 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
794 FIXME("(%p/%p)->(): stub\n", iface
, This
);
796 return D3DRMSORT_FROMPARENT
;
799 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetTexture(IDirect3DRMFrame2
* iface
,
800 LPDIRECT3DRMTEXTURE
* tex
)
802 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
804 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, tex
);
809 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetTransform(IDirect3DRMFrame2
* iface
,
810 D3DRMMATRIX4D return_matrix
)
812 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
814 TRACE("(%p/%p)->(%p)\n", iface
, This
, return_matrix
);
816 memcpy(&return_matrix
[0][0], &This
->transform
[0][0], sizeof(D3DRMMATRIX4D
));
821 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetVelocity(IDirect3DRMFrame2
* iface
,
822 LPDIRECT3DRMFRAME reference
,
823 LPD3DVECTOR return_velocity
,
826 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
828 FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface
, This
, reference
, return_velocity
, with_rotation
);
833 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetOrientation(IDirect3DRMFrame2
* iface
,
834 LPDIRECT3DRMFRAME reference
,
835 LPD3DVECTOR dir
, LPD3DVECTOR up
)
837 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
839 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, dir
, up
);
844 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetVisuals(IDirect3DRMFrame2
* iface
,
845 LPDIRECT3DRMVISUALARRAY
*visuals
)
847 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
848 IDirect3DRMVisualArrayImpl
* obj
;
851 TRACE("(%p/%p)->(%p)\n", iface
, This
, visuals
);
854 return D3DRMERR_BADVALUE
;
856 hr
= Direct3DRMVisualArray_create(visuals
);
861 obj
= (IDirect3DRMVisualArrayImpl
*)*visuals
;
863 obj
->size
= This
->nb_visuals
;
864 if (This
->nb_visuals
)
867 obj
->visuals
= HeapAlloc(GetProcessHeap(), 0, This
->nb_visuals
* sizeof(LPDIRECT3DRMVISUAL
));
869 return E_OUTOFMEMORY
;
870 for (i
= 0; i
< This
->nb_visuals
; i
++)
872 obj
->visuals
[i
] = This
->visuals
[i
];
873 IDirect3DRMVisual_AddRef(This
->visuals
[i
]);
880 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetTextureTopology(IDirect3DRMFrame2
* iface
,
881 BOOL
*wrap_u
, BOOL
*wrap_v
)
883 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
885 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, wrap_u
, wrap_v
);
890 static HRESULT WINAPI
IDirect3DRMFrame2Impl_InverseTransform(IDirect3DRMFrame2
* iface
,
891 D3DVECTOR
*d
, D3DVECTOR
*s
)
893 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
895 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
900 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Load(IDirect3DRMFrame2
* iface
, LPVOID filename
,
901 LPVOID name
, D3DRMLOADOPTIONS loadflags
,
902 D3DRMLOADTEXTURECALLBACK cb
, LPVOID lpArg
)
904 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
906 FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface
, This
, filename
, name
, loadflags
, cb
, lpArg
);
911 static HRESULT WINAPI
IDirect3DRMFrame2Impl_LookAt(IDirect3DRMFrame2
* iface
,
912 LPDIRECT3DRMFRAME target
,
913 LPDIRECT3DRMFRAME reference
,
914 D3DRMFRAMECONSTRAINT constraint
)
916 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
918 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, target
, reference
, constraint
);
923 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Move(IDirect3DRMFrame2
* iface
, D3DVALUE delta
)
925 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
927 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, delta
);
932 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteChild(IDirect3DRMFrame2
* iface
,
933 LPDIRECT3DRMFRAME frame
)
935 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
936 IDirect3DRMFrame3
*child
;
939 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
942 return D3DRMERR_BADOBJECT
;
943 hr
= IDirect3DRMFrame_QueryInterface(frame
, &IID_IDirect3DRMFrame3
, (void**)&child
);
945 return D3DRMERR_BADOBJECT
;
946 IDirect3DRMFrame_Release(frame
);
948 return IDirect3DRMFrame3_DeleteChild(&This
->IDirect3DRMFrame3_iface
, child
);
951 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteLight(IDirect3DRMFrame2
* iface
,
952 LPDIRECT3DRMLIGHT light
)
954 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
956 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
958 return IDirect3DRMFrame3_DeleteLight(&This
->IDirect3DRMFrame3_iface
, light
);
961 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteMoveCallback(IDirect3DRMFrame2
* iface
,
962 D3DRMFRAMEMOVECALLBACK cb
, VOID
*arg
)
964 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
966 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
971 static HRESULT WINAPI
IDirect3DRMFrame2Impl_DeleteVisual(IDirect3DRMFrame2
* iface
,
972 LPDIRECT3DRMVISUAL vis
)
974 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
976 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
978 return IDirect3DRMFrame3_DeleteVisual(&This
->IDirect3DRMFrame3_iface
, (LPUNKNOWN
)vis
);
981 static D3DCOLOR WINAPI
IDirect3DRMFrame2Impl_GetSceneBackground(IDirect3DRMFrame2
* iface
)
983 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
985 TRACE("(%p/%p)->()\n", iface
, This
);
987 return IDirect3DRMFrame3_GetSceneBackground(&This
->IDirect3DRMFrame3_iface
);
990 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetSceneBackgroundDepth(IDirect3DRMFrame2
* iface
,
991 LPDIRECTDRAWSURFACE
* surface
)
993 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
995 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
1000 static D3DCOLOR WINAPI
IDirect3DRMFrame2Impl_GetSceneFogColor(IDirect3DRMFrame2
* iface
)
1002 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1004 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1009 static BOOL WINAPI
IDirect3DRMFrame2Impl_GetSceneFogEnable(IDirect3DRMFrame2
* iface
)
1011 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1013 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1018 static D3DRMFOGMODE WINAPI
IDirect3DRMFrame2Impl_GetSceneFogMode(IDirect3DRMFrame2
* iface
)
1020 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1022 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1024 return D3DRMFOG_LINEAR
;
1027 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetSceneFogParams(IDirect3DRMFrame2
* iface
,
1028 D3DVALUE
*return_start
,
1029 D3DVALUE
*return_end
,
1030 D3DVALUE
*return_density
)
1032 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1034 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, return_start
, return_end
, return_density
);
1039 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackground(IDirect3DRMFrame2
* iface
,
1042 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1044 TRACE("(%p/%p)->(%u)\n", iface
, This
, color
);
1046 return IDirect3DRMFrame3_SetSceneBackground(&This
->IDirect3DRMFrame3_iface
, color
);
1049 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackgroundRGB(IDirect3DRMFrame2
* iface
,
1050 D3DVALUE red
, D3DVALUE green
,
1053 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1055 TRACE("(%p/%p)->(%f,%f,%f)\n", iface
, This
, red
, green
, blue
);
1057 return IDirect3DRMFrame3_SetSceneBackgroundRGB(&This
->IDirect3DRMFrame3_iface
, red
, green
, blue
);
1060 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackgroundDepth(IDirect3DRMFrame2
* iface
,
1061 LPDIRECTDRAWSURFACE surface
)
1063 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1065 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
1070 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneBackgroundImage(IDirect3DRMFrame2
* iface
,
1071 LPDIRECT3DRMTEXTURE texture
)
1073 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1075 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
1080 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogEnable(IDirect3DRMFrame2
* iface
, BOOL enable
)
1082 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1084 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, enable
);
1089 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogColor(IDirect3DRMFrame2
* iface
,
1092 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1094 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
1099 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogMode(IDirect3DRMFrame2
* iface
,
1102 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1104 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1109 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSceneFogParams(IDirect3DRMFrame2
* iface
,
1110 D3DVALUE start
, D3DVALUE end
,
1113 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1115 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, start
, end
, density
);
1120 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetColor(IDirect3DRMFrame2
* iface
, D3DCOLOR color
)
1122 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1124 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
1129 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetColorRGB(IDirect3DRMFrame2
* iface
, D3DVALUE red
,
1130 D3DVALUE green
, D3DVALUE blue
)
1132 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1134 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, red
, green
, blue
);
1139 static D3DRMZBUFFERMODE WINAPI
IDirect3DRMFrame2Impl_GetZbufferMode(IDirect3DRMFrame2
* iface
)
1141 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1143 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1145 return D3DRMZBUFFER_FROMPARENT
;
1148 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetMaterialMode(IDirect3DRMFrame2
* iface
,
1149 D3DRMMATERIALMODE mode
)
1151 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1153 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1158 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetOrientation(IDirect3DRMFrame2
* iface
,
1159 LPDIRECT3DRMFRAME reference
,
1160 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
1161 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
)
1163 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1165 FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface
, This
, reference
,
1166 dx
, dy
, dz
, ux
, uy
, uz
);
1171 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetPosition(IDirect3DRMFrame2
* iface
,
1172 LPDIRECT3DRMFRAME reference
,
1173 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
1175 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1177 FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
);
1182 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetRotation(IDirect3DRMFrame2
* iface
,
1183 LPDIRECT3DRMFRAME reference
,
1184 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
1187 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1189 FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
, theta
);
1194 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetSortMode(IDirect3DRMFrame2
* iface
,
1197 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1199 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1204 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetTexture(IDirect3DRMFrame2
* iface
,
1205 LPDIRECT3DRMTEXTURE texture
)
1207 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1209 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
1214 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetTextureTopology(IDirect3DRMFrame2
* iface
,
1215 BOOL wrap_u
, BOOL wrap_v
)
1217 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1219 FIXME("(%p/%p)->(%d,%d): stub\n", iface
, This
, wrap_u
, wrap_v
);
1224 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetVelocity(IDirect3DRMFrame2
* iface
,
1225 LPDIRECT3DRMFRAME reference
,
1226 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
1229 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1231 FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface
, This
, reference
, x
, y
, z
, with_rotation
);
1236 static HRESULT WINAPI
IDirect3DRMFrame2Impl_SetZbufferMode(IDirect3DRMFrame2
* iface
,
1237 D3DRMZBUFFERMODE mode
)
1239 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1241 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
1246 static HRESULT WINAPI
IDirect3DRMFrame2Impl_Transform(IDirect3DRMFrame2
* iface
, D3DVECTOR
*d
,
1249 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1251 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
1256 /*** IDirect3DRMFrame2 methods ***/
1257 static HRESULT WINAPI
IDirect3DRMFrame2Impl_AddMoveCallback2(IDirect3DRMFrame2
* iface
,
1258 D3DRMFRAMEMOVECALLBACK cb
, VOID
*arg
,
1261 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1263 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, cb
, arg
, flags
);
1268 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetBox(IDirect3DRMFrame2
* iface
, LPD3DRMBOX box
)
1270 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1272 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
1277 static BOOL WINAPI
IDirect3DRMFrame2Impl_GetBoxEnable(IDirect3DRMFrame2
* iface
)
1279 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1281 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1286 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetAxes(IDirect3DRMFrame2
* iface
,
1287 LPD3DVECTOR dir
, LPD3DVECTOR up
)
1289 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1291 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, dir
, up
);
1296 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetMaterial(IDirect3DRMFrame2
* iface
,
1297 LPDIRECT3DRMMATERIAL
*material
)
1299 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1301 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, material
);
1306 static BOOL WINAPI
IDirect3DRMFrame2Impl_GetInheritAxes(IDirect3DRMFrame2
* iface
)
1308 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1310 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1315 static HRESULT WINAPI
IDirect3DRMFrame2Impl_GetHierarchyBox(IDirect3DRMFrame2
* iface
,
1318 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame2(iface
);
1320 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
1325 static const struct IDirect3DRMFrame2Vtbl Direct3DRMFrame2_Vtbl
=
1327 /*** IUnknown methods ***/
1328 IDirect3DRMFrame2Impl_QueryInterface
,
1329 IDirect3DRMFrame2Impl_AddRef
,
1330 IDirect3DRMFrame2Impl_Release
,
1331 /*** IDirect3DRMObject methods ***/
1332 IDirect3DRMFrame2Impl_Clone
,
1333 IDirect3DRMFrame2Impl_AddDestroyCallback
,
1334 IDirect3DRMFrame2Impl_DeleteDestroyCallback
,
1335 IDirect3DRMFrame2Impl_SetAppData
,
1336 IDirect3DRMFrame2Impl_GetAppData
,
1337 IDirect3DRMFrame2Impl_SetName
,
1338 IDirect3DRMFrame2Impl_GetName
,
1339 IDirect3DRMFrame2Impl_GetClassName
,
1340 /*** IDirect3DRMFrame methods ***/
1341 IDirect3DRMFrame2Impl_AddChild
,
1342 IDirect3DRMFrame2Impl_AddLight
,
1343 IDirect3DRMFrame2Impl_AddMoveCallback
,
1344 IDirect3DRMFrame2Impl_AddTransform
,
1345 IDirect3DRMFrame2Impl_AddTranslation
,
1346 IDirect3DRMFrame2Impl_AddScale
,
1347 IDirect3DRMFrame2Impl_AddRotation
,
1348 IDirect3DRMFrame2Impl_AddVisual
,
1349 IDirect3DRMFrame2Impl_GetChildren
,
1350 IDirect3DRMFrame2Impl_GetColor
,
1351 IDirect3DRMFrame2Impl_GetLights
,
1352 IDirect3DRMFrame2Impl_GetMaterialMode
,
1353 IDirect3DRMFrame2Impl_GetParent
,
1354 IDirect3DRMFrame2Impl_GetPosition
,
1355 IDirect3DRMFrame2Impl_GetRotation
,
1356 IDirect3DRMFrame2Impl_GetScene
,
1357 IDirect3DRMFrame2Impl_GetSortMode
,
1358 IDirect3DRMFrame2Impl_GetTexture
,
1359 IDirect3DRMFrame2Impl_GetTransform
,
1360 IDirect3DRMFrame2Impl_GetVelocity
,
1361 IDirect3DRMFrame2Impl_GetOrientation
,
1362 IDirect3DRMFrame2Impl_GetVisuals
,
1363 IDirect3DRMFrame2Impl_GetTextureTopology
,
1364 IDirect3DRMFrame2Impl_InverseTransform
,
1365 IDirect3DRMFrame2Impl_Load
,
1366 IDirect3DRMFrame2Impl_LookAt
,
1367 IDirect3DRMFrame2Impl_Move
,
1368 IDirect3DRMFrame2Impl_DeleteChild
,
1369 IDirect3DRMFrame2Impl_DeleteLight
,
1370 IDirect3DRMFrame2Impl_DeleteMoveCallback
,
1371 IDirect3DRMFrame2Impl_DeleteVisual
,
1372 IDirect3DRMFrame2Impl_GetSceneBackground
,
1373 IDirect3DRMFrame2Impl_GetSceneBackgroundDepth
,
1374 IDirect3DRMFrame2Impl_GetSceneFogColor
,
1375 IDirect3DRMFrame2Impl_GetSceneFogEnable
,
1376 IDirect3DRMFrame2Impl_GetSceneFogMode
,
1377 IDirect3DRMFrame2Impl_GetSceneFogParams
,
1378 IDirect3DRMFrame2Impl_SetSceneBackground
,
1379 IDirect3DRMFrame2Impl_SetSceneBackgroundRGB
,
1380 IDirect3DRMFrame2Impl_SetSceneBackgroundDepth
,
1381 IDirect3DRMFrame2Impl_SetSceneBackgroundImage
,
1382 IDirect3DRMFrame2Impl_SetSceneFogEnable
,
1383 IDirect3DRMFrame2Impl_SetSceneFogColor
,
1384 IDirect3DRMFrame2Impl_SetSceneFogMode
,
1385 IDirect3DRMFrame2Impl_SetSceneFogParams
,
1386 IDirect3DRMFrame2Impl_SetColor
,
1387 IDirect3DRMFrame2Impl_SetColorRGB
,
1388 IDirect3DRMFrame2Impl_GetZbufferMode
,
1389 IDirect3DRMFrame2Impl_SetMaterialMode
,
1390 IDirect3DRMFrame2Impl_SetOrientation
,
1391 IDirect3DRMFrame2Impl_SetPosition
,
1392 IDirect3DRMFrame2Impl_SetRotation
,
1393 IDirect3DRMFrame2Impl_SetSortMode
,
1394 IDirect3DRMFrame2Impl_SetTexture
,
1395 IDirect3DRMFrame2Impl_SetTextureTopology
,
1396 IDirect3DRMFrame2Impl_SetVelocity
,
1397 IDirect3DRMFrame2Impl_SetZbufferMode
,
1398 IDirect3DRMFrame2Impl_Transform
,
1399 /*** IDirect3DRMFrame2 methods ***/
1400 IDirect3DRMFrame2Impl_AddMoveCallback2
,
1401 IDirect3DRMFrame2Impl_GetBox
,
1402 IDirect3DRMFrame2Impl_GetBoxEnable
,
1403 IDirect3DRMFrame2Impl_GetAxes
,
1404 IDirect3DRMFrame2Impl_GetMaterial
,
1405 IDirect3DRMFrame2Impl_GetInheritAxes
,
1406 IDirect3DRMFrame2Impl_GetHierarchyBox
1409 /*** IUnknown methods ***/
1410 static HRESULT WINAPI
IDirect3DRMFrame3Impl_QueryInterface(IDirect3DRMFrame3
* iface
,
1411 REFIID riid
, void** object
)
1413 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1414 return IDirect3DRMFrame_QueryInterface(&This
->IDirect3DRMFrame2_iface
, riid
, object
);
1417 static ULONG WINAPI
IDirect3DRMFrame3Impl_AddRef(IDirect3DRMFrame3
* iface
)
1419 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1420 return IDirect3DRMFrame2_AddRef(&This
->IDirect3DRMFrame2_iface
);
1423 static ULONG WINAPI
IDirect3DRMFrame3Impl_Release(IDirect3DRMFrame3
* iface
)
1425 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1426 return IDirect3DRMFrame2_Release(&This
->IDirect3DRMFrame2_iface
);
1429 /*** IDirect3DRMObject methods ***/
1430 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Clone(IDirect3DRMFrame3
* iface
,
1431 LPUNKNOWN unkwn
, REFIID riid
,
1434 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1436 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface
, This
, unkwn
, debugstr_guid(riid
), object
);
1441 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddDestroyCallback(IDirect3DRMFrame3
* iface
,
1442 D3DRMOBJECTCALLBACK cb
,
1445 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1447 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
1452 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteDestroyCallback(IDirect3DRMFrame3
* iface
,
1453 D3DRMOBJECTCALLBACK cb
,
1456 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1458 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
1463 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetAppData(IDirect3DRMFrame3
* iface
,
1466 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1468 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, data
);
1473 static DWORD WINAPI
IDirect3DRMFrame3Impl_GetAppData(IDirect3DRMFrame3
* iface
)
1475 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1477 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1482 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetName(IDirect3DRMFrame3
* iface
, LPCSTR name
)
1484 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1486 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, name
);
1491 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetName(IDirect3DRMFrame3
* iface
,
1492 LPDWORD size
, LPSTR name
)
1494 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1496 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
1501 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetClassName(IDirect3DRMFrame3
* iface
,
1502 LPDWORD size
, LPSTR name
)
1504 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1506 TRACE("(%p/%p)->(%p, %p)\n", iface
, This
, size
, name
);
1508 if (!size
|| *size
< strlen("Frame") || !name
)
1509 return E_INVALIDARG
;
1511 strcpy(name
, "Frame");
1512 *size
= sizeof("Frame");
1517 /*** IDirect3DRMFrame methods ***/
1518 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddChild(IDirect3DRMFrame3
* iface
,
1519 LPDIRECT3DRMFRAME3 child
)
1521 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1522 IDirect3DRMFrameImpl
*child_obj
= unsafe_impl_from_IDirect3DRMFrame3(child
);
1524 TRACE("(%p/%p)->(%p)\n", iface
, This
, child
);
1527 return D3DRMERR_BADOBJECT
;
1529 if (child_obj
->parent
)
1531 IDirect3DRMFrame3
* parent
= &child_obj
->parent
->IDirect3DRMFrame3_iface
;
1533 if (parent
== iface
)
1535 /* Passed frame is already a child so return success */
1540 /* Remove parent and continue */
1541 IDirect3DRMFrame3_DeleteChild(parent
, child
);
1545 if ((This
->nb_children
+ 1) > This
->children_capacity
)
1548 IDirect3DRMFrame3
** children
;
1550 if (!This
->children_capacity
)
1553 children
= HeapAlloc(GetProcessHeap(), 0, new_capacity
* sizeof(IDirect3DRMFrame3
*));
1557 new_capacity
= This
->children_capacity
* 2;
1558 children
= HeapReAlloc(GetProcessHeap(), 0, This
->children
, new_capacity
* sizeof(IDirect3DRMFrame3
*));
1562 return E_OUTOFMEMORY
;
1564 This
->children_capacity
= new_capacity
;
1565 This
->children
= children
;
1568 This
->children
[This
->nb_children
++] = child
;
1569 IDirect3DRMFrame3_AddRef(child
);
1570 child_obj
->parent
= This
;
1575 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddLight(IDirect3DRMFrame3
* iface
,
1576 LPDIRECT3DRMLIGHT light
)
1578 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1580 IDirect3DRMLight
** lights
;
1582 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
1585 return D3DRMERR_BADOBJECT
;
1587 /* Check if already existing and return gracefully without increasing ref count */
1588 for (i
= 0; i
< This
->nb_lights
; i
++)
1589 if (This
->lights
[i
] == light
)
1592 if ((This
->nb_lights
+ 1) > This
->lights_capacity
)
1596 if (!This
->lights_capacity
)
1599 lights
= HeapAlloc(GetProcessHeap(), 0, new_capacity
* sizeof(IDirect3DRMLight
*));
1603 new_capacity
= This
->lights_capacity
* 2;
1604 lights
= HeapReAlloc(GetProcessHeap(), 0, This
->lights
, new_capacity
* sizeof(IDirect3DRMLight
*));
1608 return E_OUTOFMEMORY
;
1610 This
->lights_capacity
= new_capacity
;
1611 This
->lights
= lights
;
1614 This
->lights
[This
->nb_lights
++] = light
;
1615 IDirect3DRMLight_AddRef(light
);
1620 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddMoveCallback(IDirect3DRMFrame3
* iface
,
1621 D3DRMFRAME3MOVECALLBACK cb
, VOID
*arg
,
1624 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1626 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, cb
, arg
, flags
);
1631 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddTransform(IDirect3DRMFrame3
* iface
,
1632 D3DRMCOMBINETYPE type
,
1633 D3DRMMATRIX4D matrix
)
1635 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1637 TRACE("(%p/%p)->(%u,%p)\n", iface
, This
, type
, matrix
);
1641 case D3DRMCOMBINE_REPLACE
:
1642 memcpy(&This
->transform
[0][0], &matrix
[0][0], sizeof(D3DRMMATRIX4D
));
1645 case D3DRMCOMBINE_BEFORE
:
1646 FIXME("D3DRMCOMBINE_BEFORE not supported yed\n");
1649 case D3DRMCOMBINE_AFTER
:
1650 FIXME("D3DRMCOMBINE_AFTER not supported yed\n");
1654 WARN("Unknown Combine Type %u\n", type
);
1655 return D3DRMERR_BADVALUE
;
1661 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddTranslation(IDirect3DRMFrame3
* iface
,
1662 D3DRMCOMBINETYPE type
,
1663 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
1665 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1667 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
);
1672 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddScale(IDirect3DRMFrame3
* iface
,
1673 D3DRMCOMBINETYPE type
,
1674 D3DVALUE sx
, D3DVALUE sy
, D3DVALUE sz
)
1676 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1678 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface
, This
, type
, sx
, sy
, sz
);
1683 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddRotation(IDirect3DRMFrame3
* iface
,
1684 D3DRMCOMBINETYPE type
,
1685 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
1688 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1690 FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface
, This
, type
, x
, y
, z
, theta
);
1695 static HRESULT WINAPI
IDirect3DRMFrame3Impl_AddVisual(IDirect3DRMFrame3
* iface
, LPUNKNOWN vis
)
1697 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1699 IDirect3DRMVisual
** visuals
;
1701 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
1704 return D3DRMERR_BADOBJECT
;
1706 /* Check if already existing and return gracefully without increasing ref count */
1707 for (i
= 0; i
< This
->nb_visuals
; i
++)
1708 if (This
->visuals
[i
] == (IDirect3DRMVisual
*)vis
)
1711 if ((This
->nb_visuals
+ 1) > This
->visuals_capacity
)
1715 if (!This
->visuals_capacity
)
1718 visuals
= HeapAlloc(GetProcessHeap(), 0, new_capacity
* sizeof(IDirect3DRMVisual
*));
1722 new_capacity
= This
->visuals_capacity
* 2;
1723 visuals
= HeapReAlloc(GetProcessHeap(), 0, This
->visuals
, new_capacity
* sizeof(IDirect3DRMVisual
*));
1727 return E_OUTOFMEMORY
;
1729 This
->visuals_capacity
= new_capacity
;
1730 This
->visuals
= visuals
;
1733 This
->visuals
[This
->nb_visuals
++] = (IDirect3DRMVisual
*)vis
;
1734 IDirect3DRMVisual_AddRef(vis
);
1739 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetChildren(IDirect3DRMFrame3
* iface
,
1740 LPDIRECT3DRMFRAMEARRAY
*children
)
1742 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1743 IDirect3DRMFrameArrayImpl
* obj
;
1746 TRACE("(%p/%p)->(%p)\n", iface
, This
, children
);
1749 return D3DRMERR_BADVALUE
;
1751 hr
= Direct3DRMFrameArray_create(children
);
1756 obj
= (IDirect3DRMFrameArrayImpl
*)*children
;
1758 obj
->size
= This
->nb_children
;
1759 if (This
->nb_children
)
1762 obj
->frames
= HeapAlloc(GetProcessHeap(), 0, This
->nb_children
* sizeof(LPDIRECT3DRMFRAME
));
1764 return E_OUTOFMEMORY
;
1765 for (i
= 0; i
< This
->nb_children
; i
++)
1766 IDirect3DRMFrame3_QueryInterface(This
->children
[i
], &IID_IDirect3DRMFrame
, (void**)&obj
->frames
[i
]);
1772 static D3DCOLOR WINAPI
IDirect3DRMFrame3Impl_GetColor(IDirect3DRMFrame3
* iface
)
1774 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1776 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1781 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetLights(IDirect3DRMFrame3
* iface
,
1782 LPDIRECT3DRMLIGHTARRAY
*lights
)
1784 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1785 IDirect3DRMLightArrayImpl
* obj
;
1788 TRACE("(%p/%p)->(%p)\n", iface
, This
, lights
);
1791 return D3DRMERR_BADVALUE
;
1793 hr
= Direct3DRMLightArray_create(lights
);
1798 obj
= (IDirect3DRMLightArrayImpl
*)*lights
;
1800 obj
->size
= This
->nb_lights
;
1801 if (This
->nb_lights
)
1804 obj
->lights
= HeapAlloc(GetProcessHeap(), 0, This
->nb_lights
* sizeof(LPDIRECT3DRMLIGHT
));
1806 return E_OUTOFMEMORY
;
1807 for (i
= 0; i
< This
->nb_lights
; i
++)
1808 IDirect3DRMLight_QueryInterface(This
->lights
[i
], &IID_IDirect3DRMLight
, (void**)&obj
->lights
[i
]);
1814 static D3DRMMATERIALMODE WINAPI
IDirect3DRMFrame3Impl_GetMaterialMode(IDirect3DRMFrame3
* iface
)
1816 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1818 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1820 return D3DRMMATERIAL_FROMPARENT
;
1823 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetParent(IDirect3DRMFrame3
* iface
,
1824 LPDIRECT3DRMFRAME3
* frame
)
1826 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1828 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
1831 return D3DRMERR_BADVALUE
;
1835 *frame
= &This
->parent
->IDirect3DRMFrame3_iface
;
1836 IDirect3DRMFrame_AddRef(*frame
);
1846 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetPosition(IDirect3DRMFrame3
* iface
,
1847 LPDIRECT3DRMFRAME3 reference
,
1848 LPD3DVECTOR return_position
)
1850 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1852 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, reference
, return_position
);
1857 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetRotation(IDirect3DRMFrame3
* iface
,
1858 LPDIRECT3DRMFRAME3 reference
,
1859 LPD3DVECTOR axis
, LPD3DVALUE return_theta
)
1861 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1863 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, axis
, return_theta
);
1868 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetScene(IDirect3DRMFrame3
* iface
,
1869 LPDIRECT3DRMFRAME3
* frame
)
1871 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1873 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, frame
);
1878 static D3DRMSORTMODE WINAPI
IDirect3DRMFrame3Impl_GetSortMode(IDirect3DRMFrame3
* iface
)
1880 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1882 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1884 return D3DRMSORT_FROMPARENT
;
1887 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetTexture(IDirect3DRMFrame3
* iface
,
1888 LPDIRECT3DRMTEXTURE3
* tex
)
1890 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1892 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, tex
);
1897 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetTransform(IDirect3DRMFrame3
* iface
,
1898 LPDIRECT3DRMFRAME3 reference
,
1899 D3DRMMATRIX4D return_matrix
)
1901 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1903 TRACE("(%p/%p)->(%p,%p)\n", iface
, This
, reference
, return_matrix
);
1906 FIXME("Specifying a frame as the root of the scene different from the current root frame is not supported yet\n");
1908 memcpy(&return_matrix
[0][0], &This
->transform
[0][0], sizeof(D3DRMMATRIX4D
));
1913 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetVelocity(IDirect3DRMFrame3
* iface
,
1914 LPDIRECT3DRMFRAME3 reference
,
1915 LPD3DVECTOR return_velocity
,
1918 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1920 FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface
, This
, reference
, return_velocity
, with_rotation
);
1925 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetOrientation(IDirect3DRMFrame3
* iface
,
1926 LPDIRECT3DRMFRAME3 reference
,
1927 LPD3DVECTOR dir
, LPD3DVECTOR up
)
1929 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1931 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, reference
, dir
, up
);
1936 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetVisuals(IDirect3DRMFrame3
* iface
, LPDWORD num
,
1939 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1941 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, num
, visuals
);
1946 static HRESULT WINAPI
IDirect3DRMFrame3Impl_InverseTransform(IDirect3DRMFrame3
* iface
,
1947 D3DVECTOR
*d
, D3DVECTOR
*s
)
1949 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1951 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
1956 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Load(IDirect3DRMFrame3
* iface
, LPVOID filename
,
1957 LPVOID name
, D3DRMLOADOPTIONS loadflags
,
1958 D3DRMLOADTEXTURE3CALLBACK cb
, LPVOID lpArg
)
1960 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1962 FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface
, This
, filename
, name
, loadflags
, cb
, lpArg
);
1967 static HRESULT WINAPI
IDirect3DRMFrame3Impl_LookAt(IDirect3DRMFrame3
* iface
,
1968 LPDIRECT3DRMFRAME3 target
,
1969 LPDIRECT3DRMFRAME3 reference
,
1970 D3DRMFRAMECONSTRAINT constraint
)
1972 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1974 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface
, This
, target
, reference
, constraint
);
1979 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Move(IDirect3DRMFrame3
* iface
, D3DVALUE delta
)
1981 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1983 FIXME("(%p/%p)->(%f): stub\n", iface
, This
, delta
);
1988 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteChild(IDirect3DRMFrame3
* iface
,
1989 LPDIRECT3DRMFRAME3 frame
)
1991 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
1992 IDirect3DRMFrameImpl
*frame_obj
= unsafe_impl_from_IDirect3DRMFrame3(frame
);
1995 TRACE("(%p/%p)->(%p)\n", iface
, This
, frame
);
1998 return D3DRMERR_BADOBJECT
;
2000 /* Check if child exists */
2001 for (i
= 0; i
< This
->nb_children
; i
++)
2002 if (This
->children
[i
] == frame
)
2005 if (i
== This
->nb_children
)
2006 return D3DRMERR_BADVALUE
;
2008 memmove(This
->children
+ i
, This
->children
+ i
+ 1, sizeof(IDirect3DRMFrame3
*) * (This
->nb_children
- 1 - i
));
2009 IDirect3DRMFrame3_Release(frame
);
2010 frame_obj
->parent
= NULL
;
2011 This
->nb_children
--;
2016 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteLight(IDirect3DRMFrame3
* iface
,
2017 LPDIRECT3DRMLIGHT light
)
2019 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2022 TRACE("(%p/%p)->(%p)\n", iface
, This
, light
);
2025 return D3DRMERR_BADOBJECT
;
2027 /* Check if visual exists */
2028 for (i
= 0; i
< This
->nb_lights
; i
++)
2029 if (This
->lights
[i
] == light
)
2032 if (i
== This
->nb_lights
)
2033 return D3DRMERR_BADVALUE
;
2035 memmove(This
->lights
+ i
, This
->lights
+ i
+ 1, sizeof(IDirect3DRMLight
*) * (This
->nb_lights
- 1 - i
));
2036 IDirect3DRMLight_Release(light
);
2042 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteMoveCallback(IDirect3DRMFrame3
* iface
,
2043 D3DRMFRAME3MOVECALLBACK cb
,
2046 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2048 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, cb
, arg
);
2053 static HRESULT WINAPI
IDirect3DRMFrame3Impl_DeleteVisual(IDirect3DRMFrame3
* iface
, LPUNKNOWN vis
)
2055 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2058 TRACE("(%p/%p)->(%p)\n", iface
, This
, vis
);
2061 return D3DRMERR_BADOBJECT
;
2063 /* Check if visual exists */
2064 for (i
= 0; i
< This
->nb_visuals
; i
++)
2065 if (This
->visuals
[i
] == (IDirect3DRMVisual
*)vis
)
2068 if (i
== This
->nb_visuals
)
2069 return D3DRMERR_BADVALUE
;
2071 memmove(This
->visuals
+ i
, This
->visuals
+ i
+ 1, sizeof(IDirect3DRMVisual
*) * (This
->nb_visuals
- 1 - i
));
2072 IDirect3DRMVisual_Release(vis
);
2078 static D3DCOLOR WINAPI
IDirect3DRMFrame3Impl_GetSceneBackground(IDirect3DRMFrame3
* iface
)
2080 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2082 TRACE("(%p/%p)->()\n", iface
, This
);
2084 return This
->scenebackground
;
2087 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetSceneBackgroundDepth(IDirect3DRMFrame3
* iface
,
2088 LPDIRECTDRAWSURFACE
* surface
)
2090 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2092 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
2097 static D3DCOLOR WINAPI
IDirect3DRMFrame3Impl_GetSceneFogColor(IDirect3DRMFrame3
* iface
)
2099 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2101 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2106 static BOOL WINAPI
IDirect3DRMFrame3Impl_GetSceneFogEnable(IDirect3DRMFrame3
* iface
)
2108 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2110 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2115 static D3DRMFOGMODE WINAPI
IDirect3DRMFrame3Impl_GetSceneFogMode(IDirect3DRMFrame3
* iface
)
2117 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2119 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2121 return D3DRMFOG_LINEAR
;
2124 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetSceneFogParams(IDirect3DRMFrame3
* iface
,
2125 D3DVALUE
*return_start
,
2126 D3DVALUE
*return_end
,
2127 D3DVALUE
*return_density
)
2129 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2131 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface
, This
, return_start
, return_end
, return_density
);
2136 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackground(IDirect3DRMFrame3
* iface
,
2139 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2141 TRACE("(%p/%p)->(%u)\n", iface
, This
, color
);
2143 This
->scenebackground
= color
;
2148 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackgroundRGB(IDirect3DRMFrame3
* iface
,
2149 D3DVALUE red
, D3DVALUE green
,
2152 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2154 TRACE("(%p/%p)->(%f,%f,%f)\n", iface
, This
, red
, green
, blue
);
2156 This
->scenebackground
= D3DCOLOR_ARGB(0xff, (BYTE
)(red
* 255.0f
),
2157 (BYTE
)(green
* 255.0f
),
2158 (BYTE
)(blue
* 255.0f
));
2163 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackgroundDepth(IDirect3DRMFrame3
* iface
,
2164 LPDIRECTDRAWSURFACE surface
)
2166 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2168 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, surface
);
2173 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneBackgroundImage(IDirect3DRMFrame3
* iface
,
2174 LPDIRECT3DRMTEXTURE3 texture
)
2176 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2178 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
2183 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogEnable(IDirect3DRMFrame3
* iface
, BOOL enable
)
2185 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2187 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, enable
);
2192 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogColor(IDirect3DRMFrame3
* iface
,
2195 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2197 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
2202 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogMode(IDirect3DRMFrame3
* iface
,
2205 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2207 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
2212 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogParams(IDirect3DRMFrame3
* iface
,
2213 D3DVALUE start
, D3DVALUE end
,
2216 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2218 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, start
, end
, density
);
2223 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetColor(IDirect3DRMFrame3
* iface
, D3DCOLOR color
)
2225 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2227 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, color
);
2232 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetColorRGB(IDirect3DRMFrame3
* iface
, D3DVALUE red
,
2233 D3DVALUE green
, D3DVALUE blue
)
2235 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2237 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface
, This
, red
, green
, blue
);
2242 static D3DRMZBUFFERMODE WINAPI
IDirect3DRMFrame3Impl_GetZbufferMode(IDirect3DRMFrame3
* iface
)
2244 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2246 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2248 return D3DRMZBUFFER_FROMPARENT
;
2251 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetMaterialMode(IDirect3DRMFrame3
* iface
,
2252 D3DRMMATERIALMODE mode
)
2254 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2256 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
2261 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetOrientation(IDirect3DRMFrame3
* iface
,
2262 LPDIRECT3DRMFRAME3 reference
,
2263 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
2264 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
)
2266 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2268 FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface
, This
, reference
,
2269 dx
, dy
, dz
, ux
, uy
, uz
);
2274 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetPosition(IDirect3DRMFrame3
* iface
,
2275 LPDIRECT3DRMFRAME3 reference
,
2276 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
)
2278 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2280 FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
);
2285 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetRotation(IDirect3DRMFrame3
* iface
,
2286 LPDIRECT3DRMFRAME3 reference
,
2287 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
2290 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2292 FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface
, This
, reference
, x
, y
, z
, theta
);
2297 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSortMode(IDirect3DRMFrame3
* iface
,
2300 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2302 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
2307 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetTexture(IDirect3DRMFrame3
* iface
,
2308 LPDIRECT3DRMTEXTURE3 texture
)
2310 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2312 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, texture
);
2317 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetVelocity(IDirect3DRMFrame3
* iface
,
2318 LPDIRECT3DRMFRAME3 reference
,
2319 D3DVALUE x
, D3DVALUE y
, D3DVALUE z
,
2322 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2324 FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface
, This
, reference
, x
, y
, z
, with_rotation
);
2329 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetZbufferMode(IDirect3DRMFrame3
* iface
,
2330 D3DRMZBUFFERMODE mode
)
2332 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2334 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, mode
);
2339 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Transform(IDirect3DRMFrame3
* iface
, D3DVECTOR
*d
,
2342 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2344 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, d
, s
);
2349 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetBox(IDirect3DRMFrame3
* iface
, LPD3DRMBOX box
)
2351 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2353 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
2358 static BOOL WINAPI
IDirect3DRMFrame3Impl_GetBoxEnable(IDirect3DRMFrame3
* iface
)
2360 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2362 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2367 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetAxes(IDirect3DRMFrame3
* iface
,
2368 LPD3DVECTOR dir
, LPD3DVECTOR up
)
2370 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2372 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, dir
, up
);
2377 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetMaterial(IDirect3DRMFrame3
* iface
,
2378 LPDIRECT3DRMMATERIAL2
*material
)
2380 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2382 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, material
);
2387 static BOOL WINAPI
IDirect3DRMFrame3Impl_GetInheritAxes(IDirect3DRMFrame3
* iface
)
2389 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2391 FIXME("(%p/%p)->(): stub\n", iface
, This
);
2396 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetHierarchyBox(IDirect3DRMFrame3
* iface
,
2399 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2401 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
2406 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetBox(IDirect3DRMFrame3
* iface
, LPD3DRMBOX box
)
2408 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2410 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, box
);
2415 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetBoxEnable(IDirect3DRMFrame3
* iface
, BOOL enable
)
2417 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2419 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, enable
);
2424 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetAxes(IDirect3DRMFrame3
* iface
,
2425 D3DVALUE dx
, D3DVALUE dy
, D3DVALUE dz
,
2426 D3DVALUE ux
, D3DVALUE uy
, D3DVALUE uz
)
2428 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2430 FIXME("(%p/%p)->(%f,%f,%f,%f,%f,%f): stub\n", iface
, This
, dx
, dy
, dz
, ux
, uy
, uz
);
2435 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetInheritAxes(IDirect3DRMFrame3
* iface
,
2436 BOOL inherit_from_parent
)
2438 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2440 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, inherit_from_parent
);
2445 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetMaterial(IDirect3DRMFrame3
* iface
,
2446 LPDIRECT3DRMMATERIAL2 material
)
2448 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2450 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, material
);
2455 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetQuaternion(IDirect3DRMFrame3
* iface
,
2456 LPDIRECT3DRMFRAME3 reference
,
2459 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2461 FIXME("(%p/%p)->(%p,%p): stub\n", iface
, This
, reference
, q
);
2466 static HRESULT WINAPI
IDirect3DRMFrame3Impl_RayPick(IDirect3DRMFrame3
* iface
,
2467 LPDIRECT3DRMFRAME3 reference
, LPD3DRMRAY ray
,
2469 LPDIRECT3DRMPICKED2ARRAY
*return_visuals
)
2471 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2473 FIXME("(%p/%p)->(%p,%p,%u,%p): stub\n", iface
, This
, reference
, ray
, flags
, return_visuals
);
2478 static HRESULT WINAPI
IDirect3DRMFrame3Impl_Save(IDirect3DRMFrame3
* iface
, LPCSTR filename
,
2479 D3DRMXOFFORMAT d3dFormat
,
2480 D3DRMSAVEOPTIONS d3dSaveFlags
)
2482 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2484 FIXME("(%p/%p)->(%p,%u,%u): stub\n", iface
, This
, filename
, d3dFormat
, d3dSaveFlags
);
2489 static HRESULT WINAPI
IDirect3DRMFrame3Impl_TransformVectors(IDirect3DRMFrame3
* iface
,
2490 LPDIRECT3DRMFRAME3 reference
,
2491 DWORD num
, LPD3DVECTOR dst
,
2494 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2496 FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface
, This
, reference
, num
, dst
, src
);
2501 static HRESULT WINAPI
IDirect3DRMFrame3Impl_InverseTransformVectors(IDirect3DRMFrame3
* iface
,
2502 LPDIRECT3DRMFRAME3 reference
,
2503 DWORD num
, LPD3DVECTOR dst
,
2506 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2508 FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface
, This
, reference
, num
, dst
, src
);
2513 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetTraversalOptions(IDirect3DRMFrame3
* iface
,
2516 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2518 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, flags
);
2523 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetTraversalOptions(IDirect3DRMFrame3
* iface
,
2526 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2528 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, flags
);
2533 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetSceneFogMethod(IDirect3DRMFrame3
* iface
,
2536 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2538 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, flags
);
2543 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetSceneFogMethod(IDirect3DRMFrame3
* iface
,
2546 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2548 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, flags
);
2553 static HRESULT WINAPI
IDirect3DRMFrame3Impl_SetMaterialOverride(IDirect3DRMFrame3
* iface
,
2554 LPD3DRMMATERIALOVERRIDE override
)
2556 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2558 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, override
);
2563 static HRESULT WINAPI
IDirect3DRMFrame3Impl_GetMaterialOverride(IDirect3DRMFrame3
* iface
,
2564 LPD3DRMMATERIALOVERRIDE override
)
2566 IDirect3DRMFrameImpl
*This
= impl_from_IDirect3DRMFrame3(iface
);
2568 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, override
);
2573 static const struct IDirect3DRMFrame3Vtbl Direct3DRMFrame3_Vtbl
=
2575 /*** IUnknown methods ***/
2576 IDirect3DRMFrame3Impl_QueryInterface
,
2577 IDirect3DRMFrame3Impl_AddRef
,
2578 IDirect3DRMFrame3Impl_Release
,
2579 /*** IDirect3DRMObject methods ***/
2580 IDirect3DRMFrame3Impl_Clone
,
2581 IDirect3DRMFrame3Impl_AddDestroyCallback
,
2582 IDirect3DRMFrame3Impl_DeleteDestroyCallback
,
2583 IDirect3DRMFrame3Impl_SetAppData
,
2584 IDirect3DRMFrame3Impl_GetAppData
,
2585 IDirect3DRMFrame3Impl_SetName
,
2586 IDirect3DRMFrame3Impl_GetName
,
2587 IDirect3DRMFrame3Impl_GetClassName
,
2588 /*** IDirect3DRMFrame3 methods ***/
2589 IDirect3DRMFrame3Impl_AddChild
,
2590 IDirect3DRMFrame3Impl_AddLight
,
2591 IDirect3DRMFrame3Impl_AddMoveCallback
,
2592 IDirect3DRMFrame3Impl_AddTransform
,
2593 IDirect3DRMFrame3Impl_AddTranslation
,
2594 IDirect3DRMFrame3Impl_AddScale
,
2595 IDirect3DRMFrame3Impl_AddRotation
,
2596 IDirect3DRMFrame3Impl_AddVisual
,
2597 IDirect3DRMFrame3Impl_GetChildren
,
2598 IDirect3DRMFrame3Impl_GetColor
,
2599 IDirect3DRMFrame3Impl_GetLights
,
2600 IDirect3DRMFrame3Impl_GetMaterialMode
,
2601 IDirect3DRMFrame3Impl_GetParent
,
2602 IDirect3DRMFrame3Impl_GetPosition
,
2603 IDirect3DRMFrame3Impl_GetRotation
,
2604 IDirect3DRMFrame3Impl_GetScene
,
2605 IDirect3DRMFrame3Impl_GetSortMode
,
2606 IDirect3DRMFrame3Impl_GetTexture
,
2607 IDirect3DRMFrame3Impl_GetTransform
,
2608 IDirect3DRMFrame3Impl_GetVelocity
,
2609 IDirect3DRMFrame3Impl_GetOrientation
,
2610 IDirect3DRMFrame3Impl_GetVisuals
,
2611 IDirect3DRMFrame3Impl_InverseTransform
,
2612 IDirect3DRMFrame3Impl_Load
,
2613 IDirect3DRMFrame3Impl_LookAt
,
2614 IDirect3DRMFrame3Impl_Move
,
2615 IDirect3DRMFrame3Impl_DeleteChild
,
2616 IDirect3DRMFrame3Impl_DeleteLight
,
2617 IDirect3DRMFrame3Impl_DeleteMoveCallback
,
2618 IDirect3DRMFrame3Impl_DeleteVisual
,
2619 IDirect3DRMFrame3Impl_GetSceneBackground
,
2620 IDirect3DRMFrame3Impl_GetSceneBackgroundDepth
,
2621 IDirect3DRMFrame3Impl_GetSceneFogColor
,
2622 IDirect3DRMFrame3Impl_GetSceneFogEnable
,
2623 IDirect3DRMFrame3Impl_GetSceneFogMode
,
2624 IDirect3DRMFrame3Impl_GetSceneFogParams
,
2625 IDirect3DRMFrame3Impl_SetSceneBackground
,
2626 IDirect3DRMFrame3Impl_SetSceneBackgroundRGB
,
2627 IDirect3DRMFrame3Impl_SetSceneBackgroundDepth
,
2628 IDirect3DRMFrame3Impl_SetSceneBackgroundImage
,
2629 IDirect3DRMFrame3Impl_SetSceneFogEnable
,
2630 IDirect3DRMFrame3Impl_SetSceneFogColor
,
2631 IDirect3DRMFrame3Impl_SetSceneFogMode
,
2632 IDirect3DRMFrame3Impl_SetSceneFogParams
,
2633 IDirect3DRMFrame3Impl_SetColor
,
2634 IDirect3DRMFrame3Impl_SetColorRGB
,
2635 IDirect3DRMFrame3Impl_GetZbufferMode
,
2636 IDirect3DRMFrame3Impl_SetMaterialMode
,
2637 IDirect3DRMFrame3Impl_SetOrientation
,
2638 IDirect3DRMFrame3Impl_SetPosition
,
2639 IDirect3DRMFrame3Impl_SetRotation
,
2640 IDirect3DRMFrame3Impl_SetSortMode
,
2641 IDirect3DRMFrame3Impl_SetTexture
,
2642 IDirect3DRMFrame3Impl_SetVelocity
,
2643 IDirect3DRMFrame3Impl_SetZbufferMode
,
2644 IDirect3DRMFrame3Impl_Transform
,
2645 IDirect3DRMFrame3Impl_GetBox
,
2646 IDirect3DRMFrame3Impl_GetBoxEnable
,
2647 IDirect3DRMFrame3Impl_GetAxes
,
2648 IDirect3DRMFrame3Impl_GetMaterial
,
2649 IDirect3DRMFrame3Impl_GetInheritAxes
,
2650 IDirect3DRMFrame3Impl_GetHierarchyBox
,
2651 IDirect3DRMFrame3Impl_SetBox
,
2652 IDirect3DRMFrame3Impl_SetBoxEnable
,
2653 IDirect3DRMFrame3Impl_SetAxes
,
2654 IDirect3DRMFrame3Impl_SetInheritAxes
,
2655 IDirect3DRMFrame3Impl_SetMaterial
,
2656 IDirect3DRMFrame3Impl_SetQuaternion
,
2657 IDirect3DRMFrame3Impl_RayPick
,
2658 IDirect3DRMFrame3Impl_Save
,
2659 IDirect3DRMFrame3Impl_TransformVectors
,
2660 IDirect3DRMFrame3Impl_InverseTransformVectors
,
2661 IDirect3DRMFrame3Impl_SetTraversalOptions
,
2662 IDirect3DRMFrame3Impl_GetTraversalOptions
,
2663 IDirect3DRMFrame3Impl_SetSceneFogMethod
,
2664 IDirect3DRMFrame3Impl_GetSceneFogMethod
,
2665 IDirect3DRMFrame3Impl_SetMaterialOverride
,
2666 IDirect3DRMFrame3Impl_GetMaterialOverride
2669 static inline IDirect3DRMFrameImpl
*unsafe_impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3
*iface
)
2673 assert(iface
->lpVtbl
== &Direct3DRMFrame3_Vtbl
);
2675 return impl_from_IDirect3DRMFrame3(iface
);
2678 HRESULT
Direct3DRMFrame_create(REFIID riid
, IUnknown
* parent
, IUnknown
** ret_iface
)
2680 IDirect3DRMFrameImpl
* object
;
2683 TRACE("(%s, %p, %p)\n", wine_dbgstr_guid(riid
), parent
, ret_iface
);
2685 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirect3DRMFrameImpl
));
2688 ERR("Out of memory\n");
2689 return E_OUTOFMEMORY
;
2692 object
->IDirect3DRMFrame2_iface
.lpVtbl
= &Direct3DRMFrame2_Vtbl
;
2693 object
->IDirect3DRMFrame3_iface
.lpVtbl
= &Direct3DRMFrame3_Vtbl
;
2695 object
->scenebackground
= D3DCOLOR_ARGB(0xff, 0, 0, 0);
2697 memcpy(&object
->transform
[0][0], &identity
[0][0], sizeof(D3DRMMATRIX4D
));
2701 IDirect3DRMFrame3
*p
;
2703 hr
= IDirect3DRMFrame_QueryInterface(parent
, &IID_IDirect3DRMFrame3
, (void**)&p
);
2706 IDirect3DRMFrame_Release(parent
);
2707 IDirect3DRMFrame3_AddChild(p
, &object
->IDirect3DRMFrame3_iface
);
2710 hr
= IDirect3DRMFrame3_QueryInterface(&object
->IDirect3DRMFrame3_iface
, riid
, (void**)ret_iface
);
2711 IDirect3DRMFrame3_Release(&object
->IDirect3DRMFrame3_iface
);