d3drm: Implement IDirect3DRMFrameX_DeleteVisual.
[wine/multimedia.git] / dlls / d3drm / frame.c
blob7f2497d78dc07343fa71f21e3548cdc77b1d46d0
1 /*
2 * Implementation of IDirect3DRMFrame Interface
4 * Copyright 2011, 2012 André Hentschel
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #include <assert.h>
22 #include "wine/debug.h"
24 #define COBJMACROS
26 #include "winbase.h"
27 #include "wingdi.h"
29 #include "d3drm_private.h"
31 WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
33 typedef struct {
34 IDirect3DRMFrame2 IDirect3DRMFrame2_iface;
35 IDirect3DRMFrame3 IDirect3DRMFrame3_iface;
36 LONG ref;
37 ULONG nb_children;
38 ULONG children_capacity;
39 IDirect3DRMFrame3** children;
40 ULONG nb_visuals;
41 ULONG visuals_capacity;
42 IDirect3DRMVisual** visuals;
43 } IDirect3DRMFrameImpl;
45 static inline IDirect3DRMFrameImpl *impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2 *iface)
47 return CONTAINING_RECORD(iface, IDirect3DRMFrameImpl, IDirect3DRMFrame2_iface);
50 static inline IDirect3DRMFrameImpl *impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3 *iface)
52 return CONTAINING_RECORD(iface, IDirect3DRMFrameImpl, IDirect3DRMFrame3_iface);
55 static inline IDirect3DRMFrameImpl *unsafe_impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2 *iface);
57 /*** IUnknown methods ***/
58 static HRESULT WINAPI IDirect3DRMFrame2Impl_QueryInterface(IDirect3DRMFrame2* iface,
59 REFIID riid, void** object)
61 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
63 TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), object);
65 *object = NULL;
67 if(IsEqualGUID(riid, &IID_IUnknown) ||
68 IsEqualGUID(riid, &IID_IDirect3DRMFrame) ||
69 IsEqualGUID(riid, &IID_IDirect3DRMFrame2))
71 *object = &This->IDirect3DRMFrame2_iface;
73 else if(IsEqualGUID(riid, &IID_IDirect3DRMFrame3))
75 *object = &This->IDirect3DRMFrame3_iface;
77 else
79 FIXME("interface %s not implemented\n", debugstr_guid(riid));
80 return E_NOINTERFACE;
83 IDirect3DRMFrame2_AddRef(iface);
84 return S_OK;
87 static ULONG WINAPI IDirect3DRMFrame2Impl_AddRef(IDirect3DRMFrame2* iface)
89 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
90 ULONG ref = InterlockedIncrement(&This->ref);
92 TRACE("(%p)->(): new ref = %d\n", This, ref);
94 return ref;
97 static ULONG WINAPI IDirect3DRMFrame2Impl_Release(IDirect3DRMFrame2* iface)
99 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
100 ULONG ref = InterlockedDecrement(&This->ref);
101 ULONG i;
103 TRACE("(%p)->(): new ref = %d\n", This, ref);
105 if (!ref)
107 for (i = 0; i < This->nb_children; i++)
108 IDirect3DRMFrame3_Release(This->children[i]);
109 HeapFree(GetProcessHeap(), 0, This->children);
110 HeapFree(GetProcessHeap(), 0, This);
113 return ref;
116 /*** IDirect3DRMObject methods ***/
117 static HRESULT WINAPI IDirect3DRMFrame2Impl_Clone(IDirect3DRMFrame2* iface,
118 LPUNKNOWN unkwn, REFIID riid,
119 LPVOID* object)
121 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
123 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
125 return E_NOTIMPL;
128 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddDestroyCallback(IDirect3DRMFrame2* iface,
129 D3DRMOBJECTCALLBACK cb,
130 LPVOID argument)
132 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
134 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
136 return E_NOTIMPL;
139 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteDestroyCallback(IDirect3DRMFrame2* iface,
140 D3DRMOBJECTCALLBACK cb,
141 LPVOID argument)
143 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
145 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
147 return E_NOTIMPL;
150 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetAppData(IDirect3DRMFrame2* iface,
151 DWORD data)
153 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
155 FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
157 return E_NOTIMPL;
160 static DWORD WINAPI IDirect3DRMFrame2Impl_GetAppData(IDirect3DRMFrame2* iface)
162 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
164 FIXME("(%p/%p)->(): stub\n", iface, This);
166 return 0;
169 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetName(IDirect3DRMFrame2* iface, LPCSTR name)
171 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
173 FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
175 return E_NOTIMPL;
178 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetName(IDirect3DRMFrame2* iface,
179 LPDWORD size, LPSTR name)
181 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
183 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
185 return E_NOTIMPL;
188 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetClassName(IDirect3DRMFrame2* iface,
189 LPDWORD size, LPSTR name)
191 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
193 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
195 return E_NOTIMPL;
198 /*** IDirect3DRMFrame methods ***/
199 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddChild(IDirect3DRMFrame2* iface,
200 LPDIRECT3DRMFRAME child)
202 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
203 IDirect3DRMFrameImpl *frame;
205 TRACE("(%p/%p)->(%p)\n", iface, This, child);
207 frame = unsafe_impl_from_IDirect3DRMFrame2((LPDIRECT3DRMFRAME2)child);
209 if (!frame)
210 return D3DRMERR_BADOBJECT;
212 return IDirect3DRMFrame3_AddChild(&This->IDirect3DRMFrame3_iface, &frame->IDirect3DRMFrame3_iface);
215 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddLight(IDirect3DRMFrame2* iface,
216 LPDIRECT3DRMLIGHT light)
218 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
220 FIXME("(%p/%p)->(%p): stub\n", iface, This, light);
222 return E_NOTIMPL;
225 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddMoveCallback(IDirect3DRMFrame2* iface,
226 D3DRMFRAMEMOVECALLBACK cb, VOID *arg)
228 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
230 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, arg);
232 return E_NOTIMPL;
235 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddTransform(IDirect3DRMFrame2* iface,
236 D3DRMCOMBINETYPE type,
237 D3DRMMATRIX4D matrix)
239 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
241 FIXME("(%p/%p)->(%u,%p): stub\n", iface, This, type, matrix);
243 return E_NOTIMPL;
246 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddTranslation(IDirect3DRMFrame2* iface,
247 D3DRMCOMBINETYPE type,
248 D3DVALUE x, D3DVALUE y, D3DVALUE z)
250 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
252 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface, This, type, x, y, z);
254 return E_NOTIMPL;
257 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddScale(IDirect3DRMFrame2* iface,
258 D3DRMCOMBINETYPE type,
259 D3DVALUE sx, D3DVALUE sy, D3DVALUE sz)
261 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
263 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface, This, type, sx, sy, sz);
265 return E_NOTIMPL;
268 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddRotation(IDirect3DRMFrame2* iface,
269 D3DRMCOMBINETYPE type,
270 D3DVALUE x, D3DVALUE y, D3DVALUE z,
271 D3DVALUE theta)
273 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
275 FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface, This, type, x, y, z, theta);
277 return E_NOTIMPL;
280 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddVisual(IDirect3DRMFrame2* iface,
281 LPDIRECT3DRMVISUAL vis)
283 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
285 TRACE("(%p/%p)->(%p)\n", iface, This, vis);
287 return IDirect3DRMFrame3_AddVisual(&This->IDirect3DRMFrame3_iface, (LPUNKNOWN)vis);
290 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetChildren(IDirect3DRMFrame2* iface,
291 LPDIRECT3DRMFRAMEARRAY *children)
293 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
295 FIXME("(%p/%p)->(%p): stub\n", iface, This, children);
297 return E_NOTIMPL;
300 static D3DCOLOR WINAPI IDirect3DRMFrame2Impl_GetColor(IDirect3DRMFrame2* iface)
302 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
304 FIXME("(%p/%p)->(): stub\n", iface, This);
306 return 0;
309 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetLights(IDirect3DRMFrame2* iface,
310 LPDIRECT3DRMLIGHTARRAY *lights)
312 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
314 FIXME("(%p/%p)->(%p): stub\n", iface, This, lights);
316 return E_NOTIMPL;
319 static D3DRMMATERIALMODE WINAPI IDirect3DRMFrame2Impl_GetMaterialMode(IDirect3DRMFrame2* iface)
321 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
323 FIXME("(%p/%p)->(): stub\n", iface, This);
325 return D3DRMMATERIAL_FROMPARENT;
328 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetParent(IDirect3DRMFrame2* iface,
329 LPDIRECT3DRMFRAME * frame)
331 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
333 FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
335 return E_NOTIMPL;
338 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetPosition(IDirect3DRMFrame2* iface,
339 LPDIRECT3DRMFRAME reference,
340 LPD3DVECTOR return_position)
342 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
344 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, return_position);
346 return E_NOTIMPL;
349 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetRotation(IDirect3DRMFrame2* iface,
350 LPDIRECT3DRMFRAME reference,
351 LPD3DVECTOR axis, LPD3DVALUE return_theta)
353 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
355 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, reference, axis, return_theta);
357 return E_NOTIMPL;
360 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetScene(IDirect3DRMFrame2* iface,
361 LPDIRECT3DRMFRAME * frame)
363 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
365 FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
367 return E_NOTIMPL;
370 static D3DRMSORTMODE WINAPI IDirect3DRMFrame2Impl_GetSortMode(IDirect3DRMFrame2* iface)
372 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
374 FIXME("(%p/%p)->(): stub\n", iface, This);
376 return D3DRMSORT_FROMPARENT;
379 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetTexture(IDirect3DRMFrame2* iface,
380 LPDIRECT3DRMTEXTURE * tex)
382 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
384 FIXME("(%p/%p)->(%p): stub\n", iface, This, tex);
386 return E_NOTIMPL;
389 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetTransform(IDirect3DRMFrame2* iface,
390 D3DRMMATRIX4D return_matrix)
392 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
394 FIXME("(%p/%p)->(%p): stub\n", iface, This, return_matrix);
396 return E_NOTIMPL;
399 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetVelocity(IDirect3DRMFrame2* iface,
400 LPDIRECT3DRMFRAME reference,
401 LPD3DVECTOR return_velocity,
402 BOOL with_rotation)
404 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
406 FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface, This, reference, return_velocity, with_rotation);
408 return E_NOTIMPL;
411 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetOrientation(IDirect3DRMFrame2* iface,
412 LPDIRECT3DRMFRAME reference,
413 LPD3DVECTOR dir, LPD3DVECTOR up)
415 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
417 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, reference, dir, up);
419 return E_NOTIMPL;
422 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetVisuals(IDirect3DRMFrame2* iface,
423 LPDIRECT3DRMVISUALARRAY *visuals)
425 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
427 FIXME("(%p/%p)->(%p): stub\n", iface, This, visuals);
429 return E_NOTIMPL;
432 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetTextureTopology(IDirect3DRMFrame2* iface,
433 BOOL *wrap_u, BOOL *wrap_v)
435 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
437 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, wrap_u, wrap_v);
439 return E_NOTIMPL;
442 static HRESULT WINAPI IDirect3DRMFrame2Impl_InverseTransform(IDirect3DRMFrame2* iface,
443 D3DVECTOR *d, D3DVECTOR *s)
445 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
447 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, d, s);
449 return E_NOTIMPL;
452 static HRESULT WINAPI IDirect3DRMFrame2Impl_Load(IDirect3DRMFrame2* iface, LPVOID filename,
453 LPVOID name, D3DRMLOADOPTIONS loadflags,
454 D3DRMLOADTEXTURECALLBACK cb, LPVOID lpArg)
456 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
458 FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface, This, filename, name, loadflags, cb, lpArg);
460 return E_NOTIMPL;
463 static HRESULT WINAPI IDirect3DRMFrame2Impl_LookAt(IDirect3DRMFrame2* iface,
464 LPDIRECT3DRMFRAME target,
465 LPDIRECT3DRMFRAME reference,
466 D3DRMFRAMECONSTRAINT constraint)
468 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
470 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface, This, target, reference, constraint);
472 return E_NOTIMPL;
475 static HRESULT WINAPI IDirect3DRMFrame2Impl_Move(IDirect3DRMFrame2* iface, D3DVALUE delta)
477 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
479 FIXME("(%p/%p)->(%f): stub\n", iface, This, delta);
481 return E_NOTIMPL;
484 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteChild(IDirect3DRMFrame2* iface,
485 LPDIRECT3DRMFRAME frame)
487 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
488 IDirect3DRMFrameImpl *child;
490 TRACE("(%p/%p)->(%p)\n", iface, This, frame);
492 child = unsafe_impl_from_IDirect3DRMFrame2((LPDIRECT3DRMFRAME2)frame);
494 if (!child)
495 return D3DRMERR_BADOBJECT;
497 return IDirect3DRMFrame3_DeleteChild(&This->IDirect3DRMFrame3_iface, &child->IDirect3DRMFrame3_iface);
500 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteLight(IDirect3DRMFrame2* iface,
501 LPDIRECT3DRMLIGHT light)
503 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
505 FIXME("(%p/%p)->(%p): stub\n", iface, This, light);
507 return E_NOTIMPL;
510 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteMoveCallback(IDirect3DRMFrame2* iface,
511 D3DRMFRAMEMOVECALLBACK cb, VOID *arg)
513 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
515 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, arg);
517 return E_NOTIMPL;
520 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteVisual(IDirect3DRMFrame2* iface,
521 LPDIRECT3DRMVISUAL vis)
523 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
525 TRACE("(%p/%p)->(%p)\n", iface, This, vis);
527 return IDirect3DRMFrame3_DeleteVisual(&This->IDirect3DRMFrame3_iface, (LPUNKNOWN)vis);
530 static D3DCOLOR WINAPI IDirect3DRMFrame2Impl_GetSceneBackground(IDirect3DRMFrame2* iface)
532 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
534 FIXME("(%p/%p)->(): stub\n", iface, This);
536 return 0;
539 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetSceneBackgroundDepth(IDirect3DRMFrame2* iface,
540 LPDIRECTDRAWSURFACE * surface)
542 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
544 FIXME("(%p/%p)->(%p): stub\n", iface, This, surface);
546 return E_NOTIMPL;
549 static D3DCOLOR WINAPI IDirect3DRMFrame2Impl_GetSceneFogColor(IDirect3DRMFrame2* iface)
551 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
553 FIXME("(%p/%p)->(): stub\n", iface, This);
555 return 0;
558 static BOOL WINAPI IDirect3DRMFrame2Impl_GetSceneFogEnable(IDirect3DRMFrame2* iface)
560 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
562 FIXME("(%p/%p)->(): stub\n", iface, This);
564 return FALSE;
567 static D3DRMFOGMODE WINAPI IDirect3DRMFrame2Impl_GetSceneFogMode(IDirect3DRMFrame2* iface)
569 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
571 FIXME("(%p/%p)->(): stub\n", iface, This);
573 return D3DRMFOG_LINEAR;
576 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetSceneFogParams(IDirect3DRMFrame2* iface,
577 D3DVALUE *return_start,
578 D3DVALUE *return_end,
579 D3DVALUE *return_density)
581 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
583 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, return_start, return_end, return_density);
585 return E_NOTIMPL;
588 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneBackground(IDirect3DRMFrame2* iface,
589 D3DCOLOR color)
591 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
593 FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
595 return E_NOTIMPL;
598 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneBackgroundRGB(IDirect3DRMFrame2* iface,
599 D3DVALUE red, D3DVALUE green,
600 D3DVALUE blue)
602 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
604 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, red, green, blue);
606 return E_NOTIMPL;
609 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneBackgroundDepth(IDirect3DRMFrame2* iface,
610 LPDIRECTDRAWSURFACE surface)
612 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
614 FIXME("(%p/%p)->(%p): stub\n", iface, This, surface);
616 return E_NOTIMPL;
619 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneBackgroundImage(IDirect3DRMFrame2* iface,
620 LPDIRECT3DRMTEXTURE texture)
622 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
624 FIXME("(%p/%p)->(%p): stub\n", iface, This, texture);
626 return E_NOTIMPL;
629 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneFogEnable(IDirect3DRMFrame2* iface, BOOL enable)
631 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
633 FIXME("(%p/%p)->(%d): stub\n", iface, This, enable);
635 return E_NOTIMPL;
638 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneFogColor(IDirect3DRMFrame2* iface,
639 D3DCOLOR color)
641 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
643 FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
645 return E_NOTIMPL;
648 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneFogMode(IDirect3DRMFrame2* iface,
649 D3DRMFOGMODE mode)
651 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
653 FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
655 return E_NOTIMPL;
658 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneFogParams(IDirect3DRMFrame2* iface,
659 D3DVALUE start, D3DVALUE end,
660 D3DVALUE density)
662 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
664 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, start, end, density);
666 return E_NOTIMPL;
669 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetColor(IDirect3DRMFrame2* iface, D3DCOLOR color)
671 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
673 FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
675 return E_NOTIMPL;
678 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetColorRGB(IDirect3DRMFrame2* iface, D3DVALUE red,
679 D3DVALUE green, D3DVALUE blue)
681 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
683 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, red, green, blue);
685 return E_NOTIMPL;
688 static D3DRMZBUFFERMODE WINAPI IDirect3DRMFrame2Impl_GetZbufferMode(IDirect3DRMFrame2* iface)
690 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
692 FIXME("(%p/%p)->(): stub\n", iface, This);
694 return D3DRMZBUFFER_FROMPARENT;
697 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetMaterialMode(IDirect3DRMFrame2* iface,
698 D3DRMMATERIALMODE mode)
700 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
702 FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
704 return E_NOTIMPL;
707 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetOrientation(IDirect3DRMFrame2* iface,
708 LPDIRECT3DRMFRAME reference,
709 D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
710 D3DVALUE ux, D3DVALUE uy, D3DVALUE uz )
712 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
714 FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface, This, reference,
715 dx, dy, dz, ux, uy, uz);
717 return E_NOTIMPL;
720 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetPosition(IDirect3DRMFrame2* iface,
721 LPDIRECT3DRMFRAME reference,
722 D3DVALUE x, D3DVALUE y, D3DVALUE z)
724 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
726 FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface, This, reference, x, y, z);
728 return E_NOTIMPL;
731 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetRotation(IDirect3DRMFrame2* iface,
732 LPDIRECT3DRMFRAME reference,
733 D3DVALUE x, D3DVALUE y, D3DVALUE z,
734 D3DVALUE theta)
736 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
738 FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface, This, reference, x, y, z, theta);
740 return E_NOTIMPL;
743 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSortMode(IDirect3DRMFrame2* iface,
744 D3DRMSORTMODE mode)
746 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
748 FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
750 return E_NOTIMPL;
753 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetTexture(IDirect3DRMFrame2* iface,
754 LPDIRECT3DRMTEXTURE texture)
756 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
758 FIXME("(%p/%p)->(%p): stub\n", iface, This, texture);
760 return E_NOTIMPL;
763 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetTextureTopology(IDirect3DRMFrame2* iface,
764 BOOL wrap_u, BOOL wrap_v)
766 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
768 FIXME("(%p/%p)->(%d,%d): stub\n", iface, This, wrap_u, wrap_v);
770 return E_NOTIMPL;
773 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetVelocity(IDirect3DRMFrame2* iface,
774 LPDIRECT3DRMFRAME reference,
775 D3DVALUE x, D3DVALUE y, D3DVALUE z,
776 BOOL with_rotation)
778 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
780 FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface, This, reference, x, y, z, with_rotation);
782 return E_NOTIMPL;
785 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetZbufferMode(IDirect3DRMFrame2* iface,
786 D3DRMZBUFFERMODE mode)
788 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
790 FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
792 return E_NOTIMPL;
795 static HRESULT WINAPI IDirect3DRMFrame2Impl_Transform(IDirect3DRMFrame2* iface, D3DVECTOR *d,
796 D3DVECTOR *s)
798 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
800 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, d, s);
802 return E_NOTIMPL;
805 /*** IDirect3DRMFrame2 methods ***/
806 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddMoveCallback2(IDirect3DRMFrame2* iface,
807 D3DRMFRAMEMOVECALLBACK cb, VOID *arg,
808 DWORD flags)
810 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
812 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface, This, cb, arg, flags);
814 return E_NOTIMPL;
817 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetBox(IDirect3DRMFrame2* iface, LPD3DRMBOX box)
819 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
821 FIXME("(%p/%p)->(%p): stub\n", iface, This, box);
823 return E_NOTIMPL;
826 static BOOL WINAPI IDirect3DRMFrame2Impl_GetBoxEnable(IDirect3DRMFrame2* iface)
828 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
830 FIXME("(%p/%p)->(): stub\n", iface, This);
832 return E_NOTIMPL;
835 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetAxes(IDirect3DRMFrame2* iface,
836 LPD3DVECTOR dir, LPD3DVECTOR up)
838 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
840 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, dir, up);
842 return E_NOTIMPL;
845 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetMaterial(IDirect3DRMFrame2* iface,
846 LPDIRECT3DRMMATERIAL *material)
848 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
850 FIXME("(%p/%p)->(%p): stub\n", iface, This, material);
852 return E_NOTIMPL;
855 static BOOL WINAPI IDirect3DRMFrame2Impl_GetInheritAxes(IDirect3DRMFrame2* iface)
857 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
859 FIXME("(%p/%p)->(): stub\n", iface, This);
861 return E_NOTIMPL;
864 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetHierarchyBox(IDirect3DRMFrame2* iface,
865 LPD3DRMBOX box)
867 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
869 FIXME("(%p/%p)->(%p): stub\n", iface, This, box);
871 return E_NOTIMPL;
874 static const struct IDirect3DRMFrame2Vtbl Direct3DRMFrame2_Vtbl =
876 /*** IUnknown methods ***/
877 IDirect3DRMFrame2Impl_QueryInterface,
878 IDirect3DRMFrame2Impl_AddRef,
879 IDirect3DRMFrame2Impl_Release,
880 /*** IDirect3DRMObject methods ***/
881 IDirect3DRMFrame2Impl_Clone,
882 IDirect3DRMFrame2Impl_AddDestroyCallback,
883 IDirect3DRMFrame2Impl_DeleteDestroyCallback,
884 IDirect3DRMFrame2Impl_SetAppData,
885 IDirect3DRMFrame2Impl_GetAppData,
886 IDirect3DRMFrame2Impl_SetName,
887 IDirect3DRMFrame2Impl_GetName,
888 IDirect3DRMFrame2Impl_GetClassName,
889 /*** IDirect3DRMFrame methods ***/
890 IDirect3DRMFrame2Impl_AddChild,
891 IDirect3DRMFrame2Impl_AddLight,
892 IDirect3DRMFrame2Impl_AddMoveCallback,
893 IDirect3DRMFrame2Impl_AddTransform,
894 IDirect3DRMFrame2Impl_AddTranslation,
895 IDirect3DRMFrame2Impl_AddScale,
896 IDirect3DRMFrame2Impl_AddRotation,
897 IDirect3DRMFrame2Impl_AddVisual,
898 IDirect3DRMFrame2Impl_GetChildren,
899 IDirect3DRMFrame2Impl_GetColor,
900 IDirect3DRMFrame2Impl_GetLights,
901 IDirect3DRMFrame2Impl_GetMaterialMode,
902 IDirect3DRMFrame2Impl_GetParent,
903 IDirect3DRMFrame2Impl_GetPosition,
904 IDirect3DRMFrame2Impl_GetRotation,
905 IDirect3DRMFrame2Impl_GetScene,
906 IDirect3DRMFrame2Impl_GetSortMode,
907 IDirect3DRMFrame2Impl_GetTexture,
908 IDirect3DRMFrame2Impl_GetTransform,
909 IDirect3DRMFrame2Impl_GetVelocity,
910 IDirect3DRMFrame2Impl_GetOrientation,
911 IDirect3DRMFrame2Impl_GetVisuals,
912 IDirect3DRMFrame2Impl_GetTextureTopology,
913 IDirect3DRMFrame2Impl_InverseTransform,
914 IDirect3DRMFrame2Impl_Load,
915 IDirect3DRMFrame2Impl_LookAt,
916 IDirect3DRMFrame2Impl_Move,
917 IDirect3DRMFrame2Impl_DeleteChild,
918 IDirect3DRMFrame2Impl_DeleteLight,
919 IDirect3DRMFrame2Impl_DeleteMoveCallback,
920 IDirect3DRMFrame2Impl_DeleteVisual,
921 IDirect3DRMFrame2Impl_GetSceneBackground,
922 IDirect3DRMFrame2Impl_GetSceneBackgroundDepth,
923 IDirect3DRMFrame2Impl_GetSceneFogColor,
924 IDirect3DRMFrame2Impl_GetSceneFogEnable,
925 IDirect3DRMFrame2Impl_GetSceneFogMode,
926 IDirect3DRMFrame2Impl_GetSceneFogParams,
927 IDirect3DRMFrame2Impl_SetSceneBackground,
928 IDirect3DRMFrame2Impl_SetSceneBackgroundRGB,
929 IDirect3DRMFrame2Impl_SetSceneBackgroundDepth,
930 IDirect3DRMFrame2Impl_SetSceneBackgroundImage,
931 IDirect3DRMFrame2Impl_SetSceneFogEnable,
932 IDirect3DRMFrame2Impl_SetSceneFogColor,
933 IDirect3DRMFrame2Impl_SetSceneFogMode,
934 IDirect3DRMFrame2Impl_SetSceneFogParams,
935 IDirect3DRMFrame2Impl_SetColor,
936 IDirect3DRMFrame2Impl_SetColorRGB,
937 IDirect3DRMFrame2Impl_GetZbufferMode,
938 IDirect3DRMFrame2Impl_SetMaterialMode,
939 IDirect3DRMFrame2Impl_SetOrientation,
940 IDirect3DRMFrame2Impl_SetPosition,
941 IDirect3DRMFrame2Impl_SetRotation,
942 IDirect3DRMFrame2Impl_SetSortMode,
943 IDirect3DRMFrame2Impl_SetTexture,
944 IDirect3DRMFrame2Impl_SetTextureTopology,
945 IDirect3DRMFrame2Impl_SetVelocity,
946 IDirect3DRMFrame2Impl_SetZbufferMode,
947 IDirect3DRMFrame2Impl_Transform,
948 /*** IDirect3DRMFrame2 methods ***/
949 IDirect3DRMFrame2Impl_AddMoveCallback2,
950 IDirect3DRMFrame2Impl_GetBox,
951 IDirect3DRMFrame2Impl_GetBoxEnable,
952 IDirect3DRMFrame2Impl_GetAxes,
953 IDirect3DRMFrame2Impl_GetMaterial,
954 IDirect3DRMFrame2Impl_GetInheritAxes,
955 IDirect3DRMFrame2Impl_GetHierarchyBox
958 /*** IUnknown methods ***/
959 static HRESULT WINAPI IDirect3DRMFrame3Impl_QueryInterface(IDirect3DRMFrame3* iface,
960 REFIID riid, void** object)
962 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
963 return IDirect3DRMFrame_QueryInterface(&This->IDirect3DRMFrame2_iface, riid, object);
966 static ULONG WINAPI IDirect3DRMFrame3Impl_AddRef(IDirect3DRMFrame3* iface)
968 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
969 return IDirect3DRMFrame2_AddRef(&This->IDirect3DRMFrame2_iface);
972 static ULONG WINAPI IDirect3DRMFrame3Impl_Release(IDirect3DRMFrame3* iface)
974 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
975 return IDirect3DRMFrame2_Release(&This->IDirect3DRMFrame2_iface);
978 /*** IDirect3DRMObject methods ***/
979 static HRESULT WINAPI IDirect3DRMFrame3Impl_Clone(IDirect3DRMFrame3* iface,
980 LPUNKNOWN unkwn, REFIID riid,
981 LPVOID* object)
983 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
985 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
987 return E_NOTIMPL;
990 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddDestroyCallback(IDirect3DRMFrame3* iface,
991 D3DRMOBJECTCALLBACK cb,
992 LPVOID argument)
994 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
996 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
998 return E_NOTIMPL;
1001 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteDestroyCallback(IDirect3DRMFrame3* iface,
1002 D3DRMOBJECTCALLBACK cb,
1003 LPVOID argument)
1005 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1007 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
1009 return E_NOTIMPL;
1012 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetAppData(IDirect3DRMFrame3* iface,
1013 DWORD data)
1015 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1017 FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
1019 return E_NOTIMPL;
1022 static DWORD WINAPI IDirect3DRMFrame3Impl_GetAppData(IDirect3DRMFrame3* iface)
1024 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1026 FIXME("(%p/%p)->(): stub\n", iface, This);
1028 return 0;
1031 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetName(IDirect3DRMFrame3* iface, LPCSTR name)
1033 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1035 FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
1037 return E_NOTIMPL;
1040 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetName(IDirect3DRMFrame3* iface,
1041 LPDWORD size, LPSTR name)
1043 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1045 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
1047 return E_NOTIMPL;
1050 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetClassName(IDirect3DRMFrame3* iface,
1051 LPDWORD size, LPSTR name)
1053 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1055 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
1057 return E_NOTIMPL;
1060 /*** IDirect3DRMFrame methods ***/
1061 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddChild(IDirect3DRMFrame3* iface,
1062 LPDIRECT3DRMFRAME3 child)
1064 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1065 ULONG i;
1066 IDirect3DRMFrame3** children;
1068 TRACE("(%p/%p)->(%p)\n", iface, This, child);
1070 if (!child)
1071 return D3DRMERR_BADOBJECT;
1073 /* Check if already existing and return gracefully without increasing ref count */
1074 for (i = 0; i < This->nb_children; i++)
1075 if (This->children[i] == child)
1076 return D3DRM_OK;
1078 if ((This->nb_children + 1) > This->children_capacity)
1080 ULONG new_capacity;
1082 if (!This->children_capacity)
1084 new_capacity = 16;
1085 children = HeapAlloc(GetProcessHeap(), 0, new_capacity * sizeof(IDirect3DRMFrame3*));
1087 else
1089 new_capacity = This->children_capacity * 2;
1090 children = HeapReAlloc(GetProcessHeap(), 0, This->children, new_capacity * sizeof(IDirect3DRMFrame3*));
1093 if (!children)
1094 return E_OUTOFMEMORY;
1096 This->children_capacity = new_capacity;
1097 This->children = children;
1100 This->children[This->nb_children++] = child;
1101 IDirect3DRMFrame3_AddRef(child);
1103 return D3DRM_OK;
1106 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddLight(IDirect3DRMFrame3* iface,
1107 LPDIRECT3DRMLIGHT light)
1109 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1111 FIXME("(%p/%p)->(%p): stub\n", iface, This, light);
1113 return E_NOTIMPL;
1116 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddMoveCallback(IDirect3DRMFrame3* iface,
1117 D3DRMFRAME3MOVECALLBACK cb, VOID *arg,
1118 DWORD flags)
1120 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1122 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface, This, cb, arg, flags);
1124 return E_NOTIMPL;
1127 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddTransform(IDirect3DRMFrame3* iface,
1128 D3DRMCOMBINETYPE type,
1129 D3DRMMATRIX4D matrix)
1131 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1133 FIXME("(%p/%p)->(%u,%p): stub\n", iface, This, type, matrix);
1135 return E_NOTIMPL;
1138 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddTranslation(IDirect3DRMFrame3* iface,
1139 D3DRMCOMBINETYPE type,
1140 D3DVALUE x, D3DVALUE y, D3DVALUE z)
1142 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1144 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface, This, type, x, y, z);
1146 return E_NOTIMPL;
1149 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddScale(IDirect3DRMFrame3* iface,
1150 D3DRMCOMBINETYPE type,
1151 D3DVALUE sx, D3DVALUE sy, D3DVALUE sz)
1153 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1155 FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface, This, type, sx, sy, sz);
1157 return E_NOTIMPL;
1160 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddRotation(IDirect3DRMFrame3* iface,
1161 D3DRMCOMBINETYPE type,
1162 D3DVALUE x, D3DVALUE y, D3DVALUE z,
1163 D3DVALUE theta)
1165 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1167 FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface, This, type, x, y, z, theta);
1169 return E_NOTIMPL;
1172 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddVisual(IDirect3DRMFrame3* iface, LPUNKNOWN vis)
1174 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1175 ULONG i;
1176 IDirect3DRMVisual** visuals;
1178 TRACE("(%p/%p)->(%p)\n", iface, This, vis);
1180 if (!vis)
1181 return D3DRMERR_BADOBJECT;
1183 /* Check if already existing and return gracefully without increasing ref count */
1184 for (i = 0; i < This->nb_visuals; i++)
1185 if (This->visuals[i] == (IDirect3DRMVisual*)vis)
1186 return D3DRM_OK;
1188 if ((This->nb_visuals + 1) > This->visuals_capacity)
1190 ULONG new_capacity;
1192 if (!This->visuals_capacity)
1194 new_capacity = 16;
1195 visuals = HeapAlloc(GetProcessHeap(), 0, new_capacity * sizeof(IDirect3DRMVisual*));
1197 else
1199 new_capacity = This->visuals_capacity * 2;
1200 visuals = HeapReAlloc(GetProcessHeap(), 0, This->visuals, new_capacity * sizeof(IDirect3DRMVisual*));
1203 if (!visuals)
1204 return E_OUTOFMEMORY;
1206 This->visuals_capacity = new_capacity;
1207 This->visuals = visuals;
1210 This->visuals[This->nb_visuals++] = (IDirect3DRMVisual*)vis;
1211 IDirect3DRMVisual_AddRef(vis);
1213 return D3DRM_OK;
1216 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetChildren(IDirect3DRMFrame3* iface,
1217 LPDIRECT3DRMFRAMEARRAY *children)
1219 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1221 FIXME("(%p/%p)->(%p): stub\n", iface, This, children);
1223 return E_NOTIMPL;
1226 static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetColor(IDirect3DRMFrame3* iface)
1228 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1230 FIXME("(%p/%p)->(): stub\n", iface, This);
1232 return 0;
1235 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetLights(IDirect3DRMFrame3* iface,
1236 LPDIRECT3DRMLIGHTARRAY *lights)
1238 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1240 FIXME("(%p/%p)->(%p): stub\n", iface, This, lights);
1242 return E_NOTIMPL;
1245 static D3DRMMATERIALMODE WINAPI IDirect3DRMFrame3Impl_GetMaterialMode(IDirect3DRMFrame3* iface)
1247 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1249 FIXME("(%p/%p)->(): stub\n", iface, This);
1251 return D3DRMMATERIAL_FROMPARENT;
1254 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetParent(IDirect3DRMFrame3* iface,
1255 LPDIRECT3DRMFRAME3 * frame)
1257 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1259 FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
1261 return E_NOTIMPL;
1264 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetPosition(IDirect3DRMFrame3* iface,
1265 LPDIRECT3DRMFRAME3 reference,
1266 LPD3DVECTOR return_position)
1268 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1270 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, return_position);
1272 return E_NOTIMPL;
1275 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetRotation(IDirect3DRMFrame3* iface,
1276 LPDIRECT3DRMFRAME3 reference,
1277 LPD3DVECTOR axis, LPD3DVALUE return_theta)
1279 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1281 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, reference, axis, return_theta);
1283 return E_NOTIMPL;
1286 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetScene(IDirect3DRMFrame3* iface,
1287 LPDIRECT3DRMFRAME3 * frame)
1289 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1291 FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
1293 return E_NOTIMPL;
1296 static D3DRMSORTMODE WINAPI IDirect3DRMFrame3Impl_GetSortMode(IDirect3DRMFrame3* iface)
1298 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1300 FIXME("(%p/%p)->(): stub\n", iface, This);
1302 return D3DRMSORT_FROMPARENT;
1305 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetTexture(IDirect3DRMFrame3* iface,
1306 LPDIRECT3DRMTEXTURE3 * tex)
1308 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1310 FIXME("(%p/%p)->(%p): stub\n", iface, This, tex);
1312 return E_NOTIMPL;
1315 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetTransform(IDirect3DRMFrame3* iface,
1316 LPDIRECT3DRMFRAME3 reference,
1317 D3DRMMATRIX4D return_matrix)
1319 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1321 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, return_matrix);
1323 return E_NOTIMPL;
1326 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetVelocity(IDirect3DRMFrame3* iface,
1327 LPDIRECT3DRMFRAME3 reference,
1328 LPD3DVECTOR return_velocity,
1329 BOOL with_rotation)
1331 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1333 FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface, This, reference, return_velocity, with_rotation);
1335 return E_NOTIMPL;
1338 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetOrientation(IDirect3DRMFrame3* iface,
1339 LPDIRECT3DRMFRAME3 reference,
1340 LPD3DVECTOR dir, LPD3DVECTOR up)
1342 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1344 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, reference, dir, up);
1346 return E_NOTIMPL;
1349 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetVisuals(IDirect3DRMFrame3* iface, LPDWORD num,
1350 LPUNKNOWN *visuals)
1352 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1354 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, num, visuals);
1356 return E_NOTIMPL;
1359 static HRESULT WINAPI IDirect3DRMFrame3Impl_InverseTransform(IDirect3DRMFrame3* iface,
1360 D3DVECTOR *d, D3DVECTOR *s)
1362 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1364 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, d, s);
1366 return E_NOTIMPL;
1369 static HRESULT WINAPI IDirect3DRMFrame3Impl_Load(IDirect3DRMFrame3* iface, LPVOID filename,
1370 LPVOID name, D3DRMLOADOPTIONS loadflags,
1371 D3DRMLOADTEXTURE3CALLBACK cb, LPVOID lpArg)
1373 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1375 FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface, This, filename, name, loadflags, cb, lpArg);
1377 return E_NOTIMPL;
1380 static HRESULT WINAPI IDirect3DRMFrame3Impl_LookAt(IDirect3DRMFrame3* iface,
1381 LPDIRECT3DRMFRAME3 target,
1382 LPDIRECT3DRMFRAME3 reference,
1383 D3DRMFRAMECONSTRAINT constraint)
1385 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1387 FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface, This, target, reference, constraint);
1389 return E_NOTIMPL;
1392 static HRESULT WINAPI IDirect3DRMFrame3Impl_Move(IDirect3DRMFrame3* iface, D3DVALUE delta)
1394 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1396 FIXME("(%p/%p)->(%f): stub\n", iface, This, delta);
1398 return E_NOTIMPL;
1401 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteChild(IDirect3DRMFrame3* iface,
1402 LPDIRECT3DRMFRAME3 frame)
1404 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1405 ULONG i;
1407 TRACE("(%p/%p)->(%p)\n", iface, This, frame);
1409 if (!frame)
1410 return D3DRMERR_BADOBJECT;
1412 /* Check if child exists */
1413 for (i = 0; i < This->nb_children; i++)
1414 if (This->children[i] == frame)
1415 break;
1417 if (i == This->nb_children)
1418 return D3DRMERR_BADVALUE;
1420 memmove(This->children + i, This->children + i + 1, sizeof(IDirect3DRMFrame3*) * (This->nb_children - 1 - i));
1421 IDirect3DRMFrame3_Release(frame);
1422 This->nb_children--;
1424 return D3DRM_OK;
1427 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteLight(IDirect3DRMFrame3* iface,
1428 LPDIRECT3DRMLIGHT light)
1430 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1432 FIXME("(%p/%p)->(%p): stub\n", iface, This, light);
1434 return E_NOTIMPL;
1437 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteMoveCallback(IDirect3DRMFrame3* iface,
1438 D3DRMFRAME3MOVECALLBACK cb,
1439 VOID *arg)
1441 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1443 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, arg);
1445 return E_NOTIMPL;
1448 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteVisual(IDirect3DRMFrame3* iface, LPUNKNOWN vis)
1450 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1451 ULONG i;
1453 TRACE("(%p/%p)->(%p)\n", iface, This, vis);
1455 if (!vis)
1456 return D3DRMERR_BADOBJECT;
1458 /* Check if visual exists */
1459 for (i = 0; i < This->nb_visuals; i++)
1460 if (This->visuals[i] == (IDirect3DRMVisual*)vis)
1461 break;
1463 if (i == This->nb_visuals)
1464 return D3DRMERR_BADVALUE;
1466 memmove(This->visuals + i, This->visuals + i + 1, sizeof(IDirect3DRMVisual*) * (This->nb_visuals - 1 - i));
1467 IDirect3DRMVisual_Release(vis);
1468 This->nb_visuals--;
1470 return D3DRM_OK;
1473 static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetSceneBackground(IDirect3DRMFrame3* iface)
1475 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1477 FIXME("(%p/%p)->(): stub\n", iface, This);
1479 return 0;
1482 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetSceneBackgroundDepth(IDirect3DRMFrame3* iface,
1483 LPDIRECTDRAWSURFACE * surface)
1485 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1487 FIXME("(%p/%p)->(%p): stub\n", iface, This, surface);
1489 return E_NOTIMPL;
1492 static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetSceneFogColor(IDirect3DRMFrame3* iface)
1494 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1496 FIXME("(%p/%p)->(): stub\n", iface, This);
1498 return 0;
1501 static BOOL WINAPI IDirect3DRMFrame3Impl_GetSceneFogEnable(IDirect3DRMFrame3* iface)
1503 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1505 FIXME("(%p/%p)->(): stub\n", iface, This);
1507 return FALSE;
1510 static D3DRMFOGMODE WINAPI IDirect3DRMFrame3Impl_GetSceneFogMode(IDirect3DRMFrame3* iface)
1512 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1514 FIXME("(%p/%p)->(): stub\n", iface, This);
1516 return D3DRMFOG_LINEAR;
1519 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetSceneFogParams(IDirect3DRMFrame3* iface,
1520 D3DVALUE *return_start,
1521 D3DVALUE *return_end,
1522 D3DVALUE *return_density)
1524 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1526 FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, return_start, return_end, return_density);
1528 return E_NOTIMPL;
1531 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackground(IDirect3DRMFrame3* iface,
1532 D3DCOLOR color)
1534 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1536 FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
1538 return E_NOTIMPL;
1541 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackgroundRGB(IDirect3DRMFrame3* iface,
1542 D3DVALUE red, D3DVALUE green,
1543 D3DVALUE blue)
1545 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1547 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, red, green, blue);
1549 return E_NOTIMPL;
1552 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackgroundDepth(IDirect3DRMFrame3* iface,
1553 LPDIRECTDRAWSURFACE surface)
1555 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1557 FIXME("(%p/%p)->(%p): stub\n", iface, This, surface);
1559 return E_NOTIMPL;
1562 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackgroundImage(IDirect3DRMFrame3* iface,
1563 LPDIRECT3DRMTEXTURE3 texture)
1565 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1567 FIXME("(%p/%p)->(%p): stub\n", iface, This, texture);
1569 return E_NOTIMPL;
1572 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogEnable(IDirect3DRMFrame3* iface, BOOL enable)
1574 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1576 FIXME("(%p/%p)->(%d): stub\n", iface, This, enable);
1578 return E_NOTIMPL;
1581 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogColor(IDirect3DRMFrame3* iface,
1582 D3DCOLOR color)
1584 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1586 FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
1588 return E_NOTIMPL;
1591 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogMode(IDirect3DRMFrame3* iface,
1592 D3DRMFOGMODE mode)
1594 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1596 FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
1598 return E_NOTIMPL;
1601 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogParams(IDirect3DRMFrame3* iface,
1602 D3DVALUE start, D3DVALUE end,
1603 D3DVALUE density)
1605 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1607 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, start, end, density);
1609 return E_NOTIMPL;
1612 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetColor(IDirect3DRMFrame3* iface, D3DCOLOR color)
1614 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1616 FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
1618 return E_NOTIMPL;
1621 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetColorRGB(IDirect3DRMFrame3* iface, D3DVALUE red,
1622 D3DVALUE green, D3DVALUE blue)
1624 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1626 FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, red, green, blue);
1628 return E_NOTIMPL;
1631 static D3DRMZBUFFERMODE WINAPI IDirect3DRMFrame3Impl_GetZbufferMode(IDirect3DRMFrame3* iface)
1633 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1635 FIXME("(%p/%p)->(): stub\n", iface, This);
1637 return D3DRMZBUFFER_FROMPARENT;
1640 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetMaterialMode(IDirect3DRMFrame3* iface,
1641 D3DRMMATERIALMODE mode)
1643 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1645 FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
1647 return E_NOTIMPL;
1650 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetOrientation(IDirect3DRMFrame3* iface,
1651 LPDIRECT3DRMFRAME3 reference,
1652 D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1653 D3DVALUE ux, D3DVALUE uy, D3DVALUE uz )
1655 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1657 FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface, This, reference,
1658 dx, dy, dz, ux, uy, uz);
1660 return E_NOTIMPL;
1663 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetPosition(IDirect3DRMFrame3* iface,
1664 LPDIRECT3DRMFRAME3 reference,
1665 D3DVALUE x, D3DVALUE y, D3DVALUE z)
1667 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1669 FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface, This, reference, x, y, z);
1671 return E_NOTIMPL;
1674 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetRotation(IDirect3DRMFrame3* iface,
1675 LPDIRECT3DRMFRAME3 reference,
1676 D3DVALUE x, D3DVALUE y, D3DVALUE z,
1677 D3DVALUE theta)
1679 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1681 FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface, This, reference, x, y, z, theta);
1683 return E_NOTIMPL;
1686 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSortMode(IDirect3DRMFrame3* iface,
1687 D3DRMSORTMODE mode)
1689 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1691 FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
1693 return E_NOTIMPL;
1696 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetTexture(IDirect3DRMFrame3* iface,
1697 LPDIRECT3DRMTEXTURE3 texture)
1699 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1701 FIXME("(%p/%p)->(%p): stub\n", iface, This, texture);
1703 return E_NOTIMPL;
1706 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetVelocity(IDirect3DRMFrame3* iface,
1707 LPDIRECT3DRMFRAME3 reference,
1708 D3DVALUE x, D3DVALUE y, D3DVALUE z,
1709 BOOL with_rotation)
1711 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1713 FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface, This, reference, x, y, z, with_rotation);
1715 return E_NOTIMPL;
1718 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetZbufferMode(IDirect3DRMFrame3* iface,
1719 D3DRMZBUFFERMODE mode)
1721 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1723 FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
1725 return E_NOTIMPL;
1728 static HRESULT WINAPI IDirect3DRMFrame3Impl_Transform(IDirect3DRMFrame3* iface, D3DVECTOR *d,
1729 D3DVECTOR *s)
1731 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1733 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, d, s);
1735 return E_NOTIMPL;
1738 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetBox(IDirect3DRMFrame3* iface, LPD3DRMBOX box)
1740 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1742 FIXME("(%p/%p)->(%p): stub\n", iface, This, box);
1744 return E_NOTIMPL;
1747 static BOOL WINAPI IDirect3DRMFrame3Impl_GetBoxEnable(IDirect3DRMFrame3* iface)
1749 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1751 FIXME("(%p/%p)->(): stub\n", iface, This);
1753 return E_NOTIMPL;
1756 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetAxes(IDirect3DRMFrame3* iface,
1757 LPD3DVECTOR dir, LPD3DVECTOR up)
1759 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1761 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, dir, up);
1763 return E_NOTIMPL;
1766 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetMaterial(IDirect3DRMFrame3* iface,
1767 LPDIRECT3DRMMATERIAL2 *material)
1769 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1771 FIXME("(%p/%p)->(%p): stub\n", iface, This, material);
1773 return E_NOTIMPL;
1776 static BOOL WINAPI IDirect3DRMFrame3Impl_GetInheritAxes(IDirect3DRMFrame3* iface)
1778 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1780 FIXME("(%p/%p)->(): stub\n", iface, This);
1782 return E_NOTIMPL;
1785 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetHierarchyBox(IDirect3DRMFrame3* iface,
1786 LPD3DRMBOX box)
1788 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1790 FIXME("(%p/%p)->(%p): stub\n", iface, This, box);
1792 return E_NOTIMPL;
1795 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetBox(IDirect3DRMFrame3* iface, LPD3DRMBOX box)
1797 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1799 FIXME("(%p/%p)->(%p): stub\n", iface, This, box);
1801 return E_NOTIMPL;
1804 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetBoxEnable(IDirect3DRMFrame3* iface, BOOL enable)
1806 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1808 FIXME("(%p/%p)->(%u): stub\n", iface, This, enable);
1810 return E_NOTIMPL;
1813 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetAxes(IDirect3DRMFrame3* iface,
1814 D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1815 D3DVALUE ux, D3DVALUE uy, D3DVALUE uz)
1817 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1819 FIXME("(%p/%p)->(%f,%f,%f,%f,%f,%f): stub\n", iface, This, dx, dy, dz, ux, uy, uz);
1821 return E_NOTIMPL;
1824 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetInheritAxes(IDirect3DRMFrame3* iface,
1825 BOOL inherit_from_parent)
1827 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1829 FIXME("(%p/%p)->(%u): stub\n", iface, This, inherit_from_parent);
1831 return E_NOTIMPL;
1834 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetMaterial(IDirect3DRMFrame3* iface,
1835 LPDIRECT3DRMMATERIAL2 material)
1837 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1839 FIXME("(%p/%p)->(%p): stub\n", iface, This, material);
1841 return E_NOTIMPL;
1844 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetQuaternion(IDirect3DRMFrame3* iface,
1845 LPDIRECT3DRMFRAME3 reference,
1846 D3DRMQUATERNION *q)
1848 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1850 FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, q);
1852 return E_NOTIMPL;
1855 static HRESULT WINAPI IDirect3DRMFrame3Impl_RayPick(IDirect3DRMFrame3* iface,
1856 LPDIRECT3DRMFRAME3 reference, LPD3DRMRAY ray,
1857 DWORD flags,
1858 LPDIRECT3DRMPICKED2ARRAY *return_visuals)
1860 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1862 FIXME("(%p/%p)->(%p,%p,%u,%p): stub\n", iface, This, reference, ray, flags, return_visuals);
1864 return E_NOTIMPL;
1867 static HRESULT WINAPI IDirect3DRMFrame3Impl_Save(IDirect3DRMFrame3* iface, LPCSTR filename,
1868 D3DRMXOFFORMAT d3dFormat,
1869 D3DRMSAVEOPTIONS d3dSaveFlags)
1871 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1873 FIXME("(%p/%p)->(%p,%u,%u): stub\n", iface, This, filename, d3dFormat, d3dSaveFlags);
1875 return E_NOTIMPL;
1878 static HRESULT WINAPI IDirect3DRMFrame3Impl_TransformVectors(IDirect3DRMFrame3* iface,
1879 LPDIRECT3DRMFRAME3 reference,
1880 DWORD num, LPD3DVECTOR dst,
1881 LPD3DVECTOR src)
1883 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1885 FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface, This, reference, num, dst, src);
1887 return E_NOTIMPL;
1890 static HRESULT WINAPI IDirect3DRMFrame3Impl_InverseTransformVectors(IDirect3DRMFrame3* iface,
1891 LPDIRECT3DRMFRAME3 reference,
1892 DWORD num, LPD3DVECTOR dst,
1893 LPD3DVECTOR src)
1895 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1897 FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface, This, reference, num, dst, src);
1899 return E_NOTIMPL;
1902 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetTraversalOptions(IDirect3DRMFrame3* iface,
1903 DWORD flags)
1905 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1907 FIXME("(%p/%p)->(%u): stub\n", iface, This, flags);
1909 return E_NOTIMPL;
1912 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetTraversalOptions(IDirect3DRMFrame3* iface,
1913 LPDWORD flags)
1915 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1917 FIXME("(%p/%p)->(%p): stub\n", iface, This, flags);
1919 return E_NOTIMPL;
1922 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogMethod(IDirect3DRMFrame3* iface,
1923 DWORD flags)
1925 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1927 FIXME("(%p/%p)->(%u): stub\n", iface, This, flags);
1929 return E_NOTIMPL;
1932 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetSceneFogMethod(IDirect3DRMFrame3* iface,
1933 LPDWORD flags)
1935 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1937 FIXME("(%p/%p)->(%p): stub\n", iface, This, flags);
1939 return E_NOTIMPL;
1942 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetMaterialOverride(IDirect3DRMFrame3* iface,
1943 LPD3DRMMATERIALOVERRIDE override)
1945 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1947 FIXME("(%p/%p)->(%p): stub\n", iface, This, override);
1949 return E_NOTIMPL;
1952 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetMaterialOverride(IDirect3DRMFrame3* iface,
1953 LPD3DRMMATERIALOVERRIDE override)
1955 IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1957 FIXME("(%p/%p)->(%p): stub\n", iface, This, override);
1959 return E_NOTIMPL;
1962 static const struct IDirect3DRMFrame3Vtbl Direct3DRMFrame3_Vtbl =
1964 /*** IUnknown methods ***/
1965 IDirect3DRMFrame3Impl_QueryInterface,
1966 IDirect3DRMFrame3Impl_AddRef,
1967 IDirect3DRMFrame3Impl_Release,
1968 /*** IDirect3DRMObject methods ***/
1969 IDirect3DRMFrame3Impl_Clone,
1970 IDirect3DRMFrame3Impl_AddDestroyCallback,
1971 IDirect3DRMFrame3Impl_DeleteDestroyCallback,
1972 IDirect3DRMFrame3Impl_SetAppData,
1973 IDirect3DRMFrame3Impl_GetAppData,
1974 IDirect3DRMFrame3Impl_SetName,
1975 IDirect3DRMFrame3Impl_GetName,
1976 IDirect3DRMFrame3Impl_GetClassName,
1977 /*** IDirect3DRMFrame3 methods ***/
1978 IDirect3DRMFrame3Impl_AddChild,
1979 IDirect3DRMFrame3Impl_AddLight,
1980 IDirect3DRMFrame3Impl_AddMoveCallback,
1981 IDirect3DRMFrame3Impl_AddTransform,
1982 IDirect3DRMFrame3Impl_AddTranslation,
1983 IDirect3DRMFrame3Impl_AddScale,
1984 IDirect3DRMFrame3Impl_AddRotation,
1985 IDirect3DRMFrame3Impl_AddVisual,
1986 IDirect3DRMFrame3Impl_GetChildren,
1987 IDirect3DRMFrame3Impl_GetColor,
1988 IDirect3DRMFrame3Impl_GetLights,
1989 IDirect3DRMFrame3Impl_GetMaterialMode,
1990 IDirect3DRMFrame3Impl_GetParent,
1991 IDirect3DRMFrame3Impl_GetPosition,
1992 IDirect3DRMFrame3Impl_GetRotation,
1993 IDirect3DRMFrame3Impl_GetScene,
1994 IDirect3DRMFrame3Impl_GetSortMode,
1995 IDirect3DRMFrame3Impl_GetTexture,
1996 IDirect3DRMFrame3Impl_GetTransform,
1997 IDirect3DRMFrame3Impl_GetVelocity,
1998 IDirect3DRMFrame3Impl_GetOrientation,
1999 IDirect3DRMFrame3Impl_GetVisuals,
2000 IDirect3DRMFrame3Impl_InverseTransform,
2001 IDirect3DRMFrame3Impl_Load,
2002 IDirect3DRMFrame3Impl_LookAt,
2003 IDirect3DRMFrame3Impl_Move,
2004 IDirect3DRMFrame3Impl_DeleteChild,
2005 IDirect3DRMFrame3Impl_DeleteLight,
2006 IDirect3DRMFrame3Impl_DeleteMoveCallback,
2007 IDirect3DRMFrame3Impl_DeleteVisual,
2008 IDirect3DRMFrame3Impl_GetSceneBackground,
2009 IDirect3DRMFrame3Impl_GetSceneBackgroundDepth,
2010 IDirect3DRMFrame3Impl_GetSceneFogColor,
2011 IDirect3DRMFrame3Impl_GetSceneFogEnable,
2012 IDirect3DRMFrame3Impl_GetSceneFogMode,
2013 IDirect3DRMFrame3Impl_GetSceneFogParams,
2014 IDirect3DRMFrame3Impl_SetSceneBackground,
2015 IDirect3DRMFrame3Impl_SetSceneBackgroundRGB,
2016 IDirect3DRMFrame3Impl_SetSceneBackgroundDepth,
2017 IDirect3DRMFrame3Impl_SetSceneBackgroundImage,
2018 IDirect3DRMFrame3Impl_SetSceneFogEnable,
2019 IDirect3DRMFrame3Impl_SetSceneFogColor,
2020 IDirect3DRMFrame3Impl_SetSceneFogMode,
2021 IDirect3DRMFrame3Impl_SetSceneFogParams,
2022 IDirect3DRMFrame3Impl_SetColor,
2023 IDirect3DRMFrame3Impl_SetColorRGB,
2024 IDirect3DRMFrame3Impl_GetZbufferMode,
2025 IDirect3DRMFrame3Impl_SetMaterialMode,
2026 IDirect3DRMFrame3Impl_SetOrientation,
2027 IDirect3DRMFrame3Impl_SetPosition,
2028 IDirect3DRMFrame3Impl_SetRotation,
2029 IDirect3DRMFrame3Impl_SetSortMode,
2030 IDirect3DRMFrame3Impl_SetTexture,
2031 IDirect3DRMFrame3Impl_SetVelocity,
2032 IDirect3DRMFrame3Impl_SetZbufferMode,
2033 IDirect3DRMFrame3Impl_Transform,
2034 IDirect3DRMFrame3Impl_GetBox,
2035 IDirect3DRMFrame3Impl_GetBoxEnable,
2036 IDirect3DRMFrame3Impl_GetAxes,
2037 IDirect3DRMFrame3Impl_GetMaterial,
2038 IDirect3DRMFrame3Impl_GetInheritAxes,
2039 IDirect3DRMFrame3Impl_GetHierarchyBox,
2040 IDirect3DRMFrame3Impl_SetBox,
2041 IDirect3DRMFrame3Impl_SetBoxEnable,
2042 IDirect3DRMFrame3Impl_SetAxes,
2043 IDirect3DRMFrame3Impl_SetInheritAxes,
2044 IDirect3DRMFrame3Impl_SetMaterial,
2045 IDirect3DRMFrame3Impl_SetQuaternion,
2046 IDirect3DRMFrame3Impl_RayPick,
2047 IDirect3DRMFrame3Impl_Save,
2048 IDirect3DRMFrame3Impl_TransformVectors,
2049 IDirect3DRMFrame3Impl_InverseTransformVectors,
2050 IDirect3DRMFrame3Impl_SetTraversalOptions,
2051 IDirect3DRMFrame3Impl_GetTraversalOptions,
2052 IDirect3DRMFrame3Impl_SetSceneFogMethod,
2053 IDirect3DRMFrame3Impl_GetSceneFogMethod,
2054 IDirect3DRMFrame3Impl_SetMaterialOverride,
2055 IDirect3DRMFrame3Impl_GetMaterialOverride
2058 static inline IDirect3DRMFrameImpl *unsafe_impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2 *iface)
2060 if (!iface)
2061 return NULL;
2062 assert(iface->lpVtbl == &Direct3DRMFrame2_Vtbl);
2064 return impl_from_IDirect3DRMFrame2(iface);
2067 HRESULT Direct3DRMFrame_create(REFIID riid, IUnknown** ppObj)
2069 IDirect3DRMFrameImpl* object;
2071 TRACE("(%p)\n", ppObj);
2073 object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMFrameImpl));
2074 if (!object)
2076 ERR("Out of memory\n");
2077 return E_OUTOFMEMORY;
2080 object->IDirect3DRMFrame2_iface.lpVtbl = &Direct3DRMFrame2_Vtbl;
2081 object->IDirect3DRMFrame3_iface.lpVtbl = &Direct3DRMFrame3_Vtbl;
2082 object->ref = 1;
2084 if (IsEqualGUID(riid, &IID_IDirect3DRMFrame3))
2085 *ppObj = (IUnknown*)&object->IDirect3DRMFrame3_iface;
2086 else
2087 *ppObj = (IUnknown*)&object->IDirect3DRMFrame2_iface;
2089 return S_OK;