winealsa: Fix AudioRenderClient Get/ReleaseBuffer protocol.
[wine] / dlls / d3drm / frame.c
1 /*
2  * Implementation of IDirect3DRMFrame Interface
3  *
4  * Copyright 2011, 2012 AndrĂ© Hentschel
5  *
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.
10  *
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.
15  *
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
19  */
20
21 #include "wine/debug.h"
22
23 #define COBJMACROS
24
25 #include "winbase.h"
26 #include "wingdi.h"
27
28 #include "d3drm_private.h"
29
30 WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
31
32 typedef struct {
33     IDirect3DRMFrame2 IDirect3DRMFrame2_iface;
34     IDirect3DRMFrame3 IDirect3DRMFrame3_iface;
35     LONG ref;
36 } IDirect3DRMFrameImpl;
37
38 static const struct IDirect3DRMFrame2Vtbl Direct3DRMFrame2_Vtbl;
39 static const struct IDirect3DRMFrame3Vtbl Direct3DRMFrame3_Vtbl;
40
41 static inline IDirect3DRMFrameImpl *impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2 *iface)
42 {
43     return CONTAINING_RECORD(iface, IDirect3DRMFrameImpl, IDirect3DRMFrame2_iface);
44 }
45
46 static inline IDirect3DRMFrameImpl *impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3 *iface)
47 {
48     return CONTAINING_RECORD(iface, IDirect3DRMFrameImpl, IDirect3DRMFrame3_iface);
49 }
50
51 HRESULT Direct3DRMFrame_create(REFIID riid, IUnknown** ppObj)
52 {
53     IDirect3DRMFrameImpl* object;
54
55     TRACE("(%p)\n", ppObj);
56
57     object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMFrameImpl));
58     if (!object)
59     {
60         ERR("Out of memory\n");
61         return E_OUTOFMEMORY;
62     }
63
64     object->IDirect3DRMFrame2_iface.lpVtbl = &Direct3DRMFrame2_Vtbl;
65     object->IDirect3DRMFrame3_iface.lpVtbl = &Direct3DRMFrame3_Vtbl;
66     object->ref = 1;
67
68     if (IsEqualGUID(riid, &IID_IDirect3DRMFrame3))
69         *ppObj = (IUnknown*)&object->IDirect3DRMFrame3_iface;
70     else
71         *ppObj = (IUnknown*)&object->IDirect3DRMFrame2_iface;
72
73     return S_OK;
74 }
75
76 /*** IUnknown methods ***/
77 static HRESULT WINAPI IDirect3DRMFrame2Impl_QueryInterface(IDirect3DRMFrame2* iface,
78                                                            REFIID riid, void** object)
79 {
80     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
81
82     TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), object);
83
84     *object = NULL;
85
86     if(IsEqualGUID(riid, &IID_IUnknown) ||
87        IsEqualGUID(riid, &IID_IDirect3DRMFrame) ||
88        IsEqualGUID(riid, &IID_IDirect3DRMFrame2))
89     {
90         *object = &This->IDirect3DRMFrame2_iface;
91     }
92     else if(IsEqualGUID(riid, &IID_IDirect3DRMFrame3))
93     {
94         *object = &This->IDirect3DRMFrame3_iface;
95     }
96     else
97     {
98         FIXME("interface %s not implemented\n", debugstr_guid(riid));
99         return E_NOINTERFACE;
100     }
101
102     IDirect3DRMFrame2_AddRef(iface);
103     return S_OK;
104 }
105
106 static ULONG WINAPI IDirect3DRMFrame2Impl_AddRef(IDirect3DRMFrame2* iface)
107 {
108     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
109
110     TRACE("(%p)\n", This);
111
112     return InterlockedIncrement(&This->ref);
113 }
114
115 static ULONG WINAPI IDirect3DRMFrame2Impl_Release(IDirect3DRMFrame2* iface)
116 {
117     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
118     ULONG ref = InterlockedDecrement(&This->ref);
119
120     TRACE("(%p)\n", This);
121
122     if (!ref)
123         HeapFree(GetProcessHeap(), 0, This);
124
125     return ref;
126 }
127
128 /*** IDirect3DRMObject methods ***/
129 static HRESULT WINAPI IDirect3DRMFrame2Impl_Clone(IDirect3DRMFrame2* iface,
130                                                   LPUNKNOWN unkwn, REFIID riid,
131                                                   LPVOID* object)
132 {
133     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
134
135     FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
136
137     return E_NOTIMPL;
138 }
139
140 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddDestroyCallback(IDirect3DRMFrame2* iface,
141                                                                D3DRMOBJECTCALLBACK cb,
142                                                                LPVOID argument)
143 {
144     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
145
146     FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
147
148     return E_NOTIMPL;
149 }
150
151 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteDestroyCallback(IDirect3DRMFrame2* iface,
152                                                                   D3DRMOBJECTCALLBACK cb,
153                                                                   LPVOID argument)
154 {
155     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
156
157     FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
158
159     return E_NOTIMPL;
160 }
161
162 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetAppData(IDirect3DRMFrame2* iface,
163                                                        DWORD data)
164 {
165     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
166
167     FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
168
169     return E_NOTIMPL;
170 }
171
172 static DWORD WINAPI IDirect3DRMFrame2Impl_GetAppData(IDirect3DRMFrame2* iface)
173 {
174     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
175
176     FIXME("(%p/%p)->(): stub\n", iface, This);
177
178     return 0;
179 }
180
181 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetName(IDirect3DRMFrame2* iface, LPCSTR name)
182 {
183     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
184
185     FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
186
187     return E_NOTIMPL;
188 }
189
190 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetName(IDirect3DRMFrame2* iface,
191                                                     LPDWORD size, LPSTR name)
192 {
193     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
194
195     FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
196
197     return E_NOTIMPL;
198 }
199
200 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetClassName(IDirect3DRMFrame2* iface,
201                                                          LPDWORD size, LPSTR name)
202 {
203     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
204
205     FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
206
207     return E_NOTIMPL;
208 }
209
210 /*** IDirect3DRMFrame methods ***/
211 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddChild(IDirect3DRMFrame2* iface,
212                                                      LPDIRECT3DRMFRAME child)
213 {
214     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
215
216     FIXME("(%p/%p)->(%p): stub\n", iface, This, child);
217
218     return E_NOTIMPL;
219 }
220
221 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddLight(IDirect3DRMFrame2* iface,
222                                                      LPDIRECT3DRMLIGHT light)
223 {
224     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
225
226     FIXME("(%p/%p)->(%p): stub\n", iface, This, light);
227
228     return E_NOTIMPL;
229 }
230
231 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddMoveCallback(IDirect3DRMFrame2* iface,
232                                                             D3DRMFRAMEMOVECALLBACK cb, VOID *arg)
233 {
234     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
235
236     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, arg);
237
238     return E_NOTIMPL;
239 }
240
241 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddTransform(IDirect3DRMFrame2* iface,
242                                                          D3DRMCOMBINETYPE type,
243                                                          D3DRMMATRIX4D matrix)
244 {
245     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
246
247     FIXME("(%p/%p)->(%u,%p): stub\n", iface, This, type, matrix);
248
249     return E_NOTIMPL;
250 }
251
252 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddTranslation(IDirect3DRMFrame2* iface,
253                                                            D3DRMCOMBINETYPE type,
254                                                            D3DVALUE x, D3DVALUE y, D3DVALUE z)
255 {
256     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
257
258     FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface, This, type, x, y, z);
259
260     return E_NOTIMPL;
261 }
262
263 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddScale(IDirect3DRMFrame2* iface,
264                                                      D3DRMCOMBINETYPE type,
265                                                      D3DVALUE sx, D3DVALUE sy, D3DVALUE sz)
266 {
267     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
268
269     FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface, This, type, sx, sy, sz);
270
271     return E_NOTIMPL;
272 }
273
274 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddRotation(IDirect3DRMFrame2* iface,
275                                                         D3DRMCOMBINETYPE type,
276                                                         D3DVALUE x, D3DVALUE y, D3DVALUE z,
277                                                         D3DVALUE theta)
278 {
279     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
280
281     FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface, This, type, x, y, z, theta);
282
283     return E_NOTIMPL;
284 }
285
286 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddVisual(IDirect3DRMFrame2* iface,
287                                                       LPDIRECT3DRMVISUAL vis)
288 {
289     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
290
291     FIXME("(%p/%p)->(%p): stub\n", iface, This, vis);
292
293     return E_NOTIMPL;
294 }
295
296 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetChildren(IDirect3DRMFrame2* iface,
297                                                         LPDIRECT3DRMFRAMEARRAY *children)
298 {
299     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
300
301     FIXME("(%p/%p)->(%p): stub\n", iface, This, children);
302
303     return E_NOTIMPL;
304 }
305
306 static D3DCOLOR WINAPI IDirect3DRMFrame2Impl_GetColor(IDirect3DRMFrame2* iface)
307 {
308     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
309
310     FIXME("(%p/%p)->(): stub\n", iface, This);
311
312     return 0;
313 }
314
315 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetLights(IDirect3DRMFrame2* iface,
316                                                       LPDIRECT3DRMLIGHTARRAY *lights)
317 {
318     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
319
320     FIXME("(%p/%p)->(%p): stub\n", iface, This, lights);
321
322     return E_NOTIMPL;
323 }
324
325 static D3DRMMATERIALMODE WINAPI IDirect3DRMFrame2Impl_GetMaterialMode(IDirect3DRMFrame2* iface)
326 {
327     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
328
329     FIXME("(%p/%p)->(): stub\n", iface, This);
330
331     return D3DRMMATERIAL_FROMPARENT;
332 }
333
334 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetParent(IDirect3DRMFrame2* iface,
335                                                       LPDIRECT3DRMFRAME * frame)
336 {
337     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
338
339     FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
340
341     return E_NOTIMPL;
342 }
343
344 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetPosition(IDirect3DRMFrame2* iface,
345                                                         LPDIRECT3DRMFRAME reference,
346                                                         LPD3DVECTOR return_position)
347 {
348     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
349
350     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, return_position);
351
352     return E_NOTIMPL;
353 }
354
355 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetRotation(IDirect3DRMFrame2* iface,
356                                                         LPDIRECT3DRMFRAME reference,
357                                                         LPD3DVECTOR axis, LPD3DVALUE return_theta)
358 {
359     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
360
361     FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, reference, axis, return_theta);
362
363     return E_NOTIMPL;
364 }
365
366 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetScene(IDirect3DRMFrame2* iface,
367                                                      LPDIRECT3DRMFRAME * frame)
368 {
369     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
370
371     FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
372
373     return E_NOTIMPL;
374 }
375
376 static D3DRMSORTMODE WINAPI IDirect3DRMFrame2Impl_GetSortMode(IDirect3DRMFrame2* iface)
377 {
378     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
379
380     FIXME("(%p/%p)->(): stub\n", iface, This);
381
382     return D3DRMSORT_FROMPARENT;
383 }
384
385 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetTexture(IDirect3DRMFrame2* iface,
386                                                        LPDIRECT3DRMTEXTURE * tex)
387 {
388     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
389
390     FIXME("(%p/%p)->(%p): stub\n", iface, This, tex);
391
392     return E_NOTIMPL;
393 }
394
395 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetTransform(IDirect3DRMFrame2* iface,
396                                                          D3DRMMATRIX4D return_matrix)
397 {
398     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
399
400     FIXME("(%p/%p)->(%p): stub\n", iface, This, return_matrix);
401
402     return E_NOTIMPL;
403 }
404
405 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetVelocity(IDirect3DRMFrame2* iface,
406                                                         LPDIRECT3DRMFRAME reference,
407                                                         LPD3DVECTOR return_velocity,
408                                                         BOOL with_rotation)
409 {
410     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
411
412     FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface, This, reference, return_velocity, with_rotation);
413
414     return E_NOTIMPL;
415 }
416
417 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetOrientation(IDirect3DRMFrame2* iface,
418                                                            LPDIRECT3DRMFRAME reference,
419                                                            LPD3DVECTOR dir, LPD3DVECTOR up)
420 {
421     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
422
423     FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, reference, dir, up);
424
425     return E_NOTIMPL;
426 }
427
428 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetVisuals(IDirect3DRMFrame2* iface,
429                                                        LPDIRECT3DRMVISUALARRAY *visuals)
430 {
431     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
432
433     FIXME("(%p/%p)->(%p): stub\n", iface, This, visuals);
434
435     return E_NOTIMPL;
436 }
437
438 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetTextureTopology(IDirect3DRMFrame2* iface,
439                                                                BOOL *wrap_u, BOOL *wrap_v)
440 {
441     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
442
443     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, wrap_u, wrap_v);
444
445     return E_NOTIMPL;
446 }
447
448 static HRESULT WINAPI IDirect3DRMFrame2Impl_InverseTransform(IDirect3DRMFrame2* iface,
449                                                              D3DVECTOR *d, D3DVECTOR *s)
450 {
451     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
452
453     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, d, s);
454
455     return E_NOTIMPL;
456 }
457
458 static HRESULT WINAPI IDirect3DRMFrame2Impl_Load(IDirect3DRMFrame2* iface, LPVOID filename,
459                                                  LPVOID name, D3DRMLOADOPTIONS loadflags,
460                                                  D3DRMLOADTEXTURECALLBACK cb, LPVOID lpArg)
461 {
462     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
463
464     FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface, This, filename, name, loadflags, cb, lpArg);
465
466     return E_NOTIMPL;
467 }
468
469 static HRESULT WINAPI IDirect3DRMFrame2Impl_LookAt(IDirect3DRMFrame2* iface,
470                                                    LPDIRECT3DRMFRAME target,
471                                                    LPDIRECT3DRMFRAME reference,
472                                                    D3DRMFRAMECONSTRAINT constraint)
473 {
474     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
475
476     FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface, This, target, reference, constraint);
477
478     return E_NOTIMPL;
479 }
480
481 static HRESULT WINAPI IDirect3DRMFrame2Impl_Move(IDirect3DRMFrame2* iface, D3DVALUE delta)
482 {
483     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
484
485     FIXME("(%p/%p)->(%f): stub\n", iface, This, delta);
486
487     return E_NOTIMPL;
488 }
489
490 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteChild(IDirect3DRMFrame2* iface,
491                                                         LPDIRECT3DRMFRAME frame)
492 {
493     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
494
495     FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
496
497     return E_NOTIMPL;
498 }
499
500 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteLight(IDirect3DRMFrame2* iface,
501                                                         LPDIRECT3DRMLIGHT light)
502 {
503     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
504
505     FIXME("(%p/%p)->(%p): stub\n", iface, This, light);
506
507     return E_NOTIMPL;
508 }
509
510 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteMoveCallback(IDirect3DRMFrame2* iface,
511                                                                D3DRMFRAMEMOVECALLBACK cb, VOID *arg)
512 {
513     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
514
515     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, arg);
516
517     return E_NOTIMPL;
518 }
519
520 static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteVisual(IDirect3DRMFrame2* iface,
521                                                          LPDIRECT3DRMVISUAL vis)
522 {
523     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
524
525     FIXME("(%p/%p)->(%p): stub\n", iface, This, vis);
526
527     return E_NOTIMPL;
528 }
529
530 static D3DCOLOR WINAPI IDirect3DRMFrame2Impl_GetSceneBackground(IDirect3DRMFrame2* iface)
531 {
532     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
533
534     FIXME("(%p/%p)->(): stub\n", iface, This);
535
536     return 0;
537 }
538
539 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetSceneBackgroundDepth(IDirect3DRMFrame2* iface,
540                                                                     LPDIRECTDRAWSURFACE * surface)
541 {
542     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
543
544     FIXME("(%p/%p)->(%p): stub\n", iface, This, surface);
545
546     return E_NOTIMPL;
547 }
548
549 static D3DCOLOR WINAPI IDirect3DRMFrame2Impl_GetSceneFogColor(IDirect3DRMFrame2* iface)
550 {
551     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
552
553     FIXME("(%p/%p)->(): stub\n", iface, This);
554
555     return 0;
556 }
557
558 static BOOL WINAPI IDirect3DRMFrame2Impl_GetSceneFogEnable(IDirect3DRMFrame2* iface)
559 {
560     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
561
562     FIXME("(%p/%p)->(): stub\n", iface, This);
563
564     return FALSE;
565 }
566
567 static D3DRMFOGMODE WINAPI IDirect3DRMFrame2Impl_GetSceneFogMode(IDirect3DRMFrame2* iface)
568 {
569     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
570
571     FIXME("(%p/%p)->(): stub\n", iface, This);
572
573     return D3DRMFOG_LINEAR;
574 }
575
576 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetSceneFogParams(IDirect3DRMFrame2* iface,
577                                                               D3DVALUE *return_start,
578                                                               D3DVALUE *return_end,
579                                                               D3DVALUE *return_density)
580 {
581     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
582
583     FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, return_start, return_end, return_density);
584
585     return E_NOTIMPL;
586 }
587
588 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneBackground(IDirect3DRMFrame2* iface,
589                                                                D3DCOLOR color)
590 {
591     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
592
593     FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
594
595     return E_NOTIMPL;
596 }
597
598 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneBackgroundRGB(IDirect3DRMFrame2* iface,
599                                                                   D3DVALUE red, D3DVALUE green,
600                                                                   D3DVALUE blue)
601 {
602     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
603
604     FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, red, green, blue);
605
606     return E_NOTIMPL;
607 }
608
609 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneBackgroundDepth(IDirect3DRMFrame2* iface,
610                                                                     LPDIRECTDRAWSURFACE surface)
611 {
612     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
613
614     FIXME("(%p/%p)->(%p): stub\n", iface, This, surface);
615
616     return E_NOTIMPL;
617 }
618
619 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneBackgroundImage(IDirect3DRMFrame2* iface,
620                                                                     LPDIRECT3DRMTEXTURE texture)
621 {
622     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
623
624     FIXME("(%p/%p)->(%p): stub\n", iface, This, texture);
625
626     return E_NOTIMPL;
627 }
628
629 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneFogEnable(IDirect3DRMFrame2* iface, BOOL enable)
630 {
631     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
632
633     FIXME("(%p/%p)->(%d): stub\n", iface, This, enable);
634
635     return E_NOTIMPL;
636 }
637
638 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneFogColor(IDirect3DRMFrame2* iface,
639                                                              D3DCOLOR color)
640 {
641     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
642
643     FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
644
645     return E_NOTIMPL;
646 }
647
648 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneFogMode(IDirect3DRMFrame2* iface,
649                                                             D3DRMFOGMODE mode)
650 {
651     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
652
653     FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
654
655     return E_NOTIMPL;
656 }
657
658 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSceneFogParams(IDirect3DRMFrame2* iface,
659                                                               D3DVALUE start, D3DVALUE end,
660                                                               D3DVALUE density)
661 {
662     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
663
664     FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, start, end, density);
665
666     return E_NOTIMPL;
667 }
668
669 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetColor(IDirect3DRMFrame2* iface, D3DCOLOR color)
670 {
671     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
672
673     FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
674
675     return E_NOTIMPL;
676 }
677
678 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetColorRGB(IDirect3DRMFrame2* iface, D3DVALUE red,
679                                                         D3DVALUE green, D3DVALUE blue)
680 {
681     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
682
683     FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, red, green, blue);
684
685     return E_NOTIMPL;
686 }
687
688 static D3DRMZBUFFERMODE WINAPI IDirect3DRMFrame2Impl_GetZbufferMode(IDirect3DRMFrame2* iface)
689 {
690     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
691
692     FIXME("(%p/%p)->(): stub\n", iface, This);
693
694     return D3DRMZBUFFER_FROMPARENT;
695 }
696
697 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetMaterialMode(IDirect3DRMFrame2* iface,
698                                                             D3DRMMATERIALMODE mode)
699 {
700     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
701
702     FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
703
704     return E_NOTIMPL;
705 }
706
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 )
711 {
712     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
713
714     FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface, This, reference,
715           dx, dy, dz, ux, uy, uz);
716
717     return E_NOTIMPL;
718 }
719
720 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetPosition(IDirect3DRMFrame2* iface,
721                                                         LPDIRECT3DRMFRAME reference,
722                                                         D3DVALUE x, D3DVALUE y, D3DVALUE z)
723 {
724     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
725
726     FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface, This, reference, x, y, z);
727
728     return E_NOTIMPL;
729 }
730
731 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetRotation(IDirect3DRMFrame2* iface,
732                                                         LPDIRECT3DRMFRAME reference,
733                                                         D3DVALUE x, D3DVALUE y, D3DVALUE z,
734                                                         D3DVALUE theta)
735 {
736     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
737
738     FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface, This, reference, x, y, z, theta);
739
740     return E_NOTIMPL;
741 }
742
743 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetSortMode(IDirect3DRMFrame2* iface,
744                                                         D3DRMSORTMODE mode)
745 {
746     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
747
748     FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
749
750     return E_NOTIMPL;
751 }
752
753 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetTexture(IDirect3DRMFrame2* iface,
754                                                        LPDIRECT3DRMTEXTURE texture)
755 {
756     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
757
758     FIXME("(%p/%p)->(%p): stub\n", iface, This, texture);
759
760     return E_NOTIMPL;
761 }
762
763 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetTextureTopology(IDirect3DRMFrame2* iface,
764                                                                BOOL wrap_u, BOOL wrap_v)
765 {
766     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
767
768     FIXME("(%p/%p)->(%d,%d): stub\n", iface, This, wrap_u, wrap_v);
769
770     return E_NOTIMPL;
771 }
772
773 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetVelocity(IDirect3DRMFrame2* iface,
774                                                         LPDIRECT3DRMFRAME reference,
775                                                         D3DVALUE x, D3DVALUE y, D3DVALUE z,
776                                                         BOOL with_rotation)
777 {
778     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
779
780     FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface, This, reference, x, y, z, with_rotation);
781
782     return E_NOTIMPL;
783 }
784
785 static HRESULT WINAPI IDirect3DRMFrame2Impl_SetZbufferMode(IDirect3DRMFrame2* iface,
786                                                            D3DRMZBUFFERMODE mode)
787 {
788     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
789
790     FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
791
792     return E_NOTIMPL;
793 }
794
795 static HRESULT WINAPI IDirect3DRMFrame2Impl_Transform(IDirect3DRMFrame2* iface, D3DVECTOR *d,
796                                                       D3DVECTOR *s)
797 {
798     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
799
800     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, d, s);
801
802     return E_NOTIMPL;
803 }
804
805 /*** IDirect3DRMFrame2 methods ***/
806 static HRESULT WINAPI IDirect3DRMFrame2Impl_AddMoveCallback2(IDirect3DRMFrame2* iface,
807                                                              D3DRMFRAMEMOVECALLBACK cb, VOID *arg,
808                                                              DWORD flags)
809 {
810     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
811
812     FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface, This, cb, arg, flags);
813
814     return E_NOTIMPL;
815 }
816
817 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetBox(IDirect3DRMFrame2* iface, LPD3DRMBOX box)
818 {
819     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
820
821     FIXME("(%p/%p)->(%p): stub\n", iface, This, box);
822
823     return E_NOTIMPL;
824 }
825
826 static BOOL WINAPI IDirect3DRMFrame2Impl_GetBoxEnable(IDirect3DRMFrame2* iface)
827 {
828     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
829
830     FIXME("(%p/%p)->(): stub\n", iface, This);
831
832     return E_NOTIMPL;
833 }
834
835 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetAxes(IDirect3DRMFrame2* iface,
836                                                     LPD3DVECTOR dir, LPD3DVECTOR up)
837 {
838     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
839
840     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, dir, up);
841
842     return E_NOTIMPL;
843 }
844
845 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetMaterial(IDirect3DRMFrame2* iface,
846                                                         LPDIRECT3DRMMATERIAL *material)
847 {
848     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
849
850     FIXME("(%p/%p)->(%p): stub\n", iface, This, material);
851
852     return E_NOTIMPL;
853 }
854
855 static BOOL WINAPI IDirect3DRMFrame2Impl_GetInheritAxes(IDirect3DRMFrame2* iface)
856 {
857     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
858
859     FIXME("(%p/%p)->(): stub\n", iface, This);
860
861     return E_NOTIMPL;
862 }
863
864 static HRESULT WINAPI IDirect3DRMFrame2Impl_GetHierarchyBox(IDirect3DRMFrame2* iface,
865                                                             LPD3DRMBOX box)
866 {
867     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
868
869     FIXME("(%p/%p)->(%p): stub\n", iface, This, box);
870
871     return E_NOTIMPL;
872 }
873
874 static const struct IDirect3DRMFrame2Vtbl Direct3DRMFrame2_Vtbl =
875 {
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
956 };
957
958
959 /*** IUnknown methods ***/
960 static HRESULT WINAPI IDirect3DRMFrame3Impl_QueryInterface(IDirect3DRMFrame3* iface,
961                                                            REFIID riid, void** object)
962 {
963     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
964     return IDirect3DRMFrame_QueryInterface(&This->IDirect3DRMFrame2_iface, riid, object);
965 }
966
967 static ULONG WINAPI IDirect3DRMFrame3Impl_AddRef(IDirect3DRMFrame3* iface)
968 {
969     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
970
971     TRACE("(%p)\n", This);
972
973     return InterlockedIncrement(&This->ref);
974 }
975
976 static ULONG WINAPI IDirect3DRMFrame3Impl_Release(IDirect3DRMFrame3* iface)
977 {
978     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
979     ULONG ref = InterlockedDecrement(&This->ref);
980
981     TRACE("(%p)\n", This);
982
983     if (!ref)
984         HeapFree(GetProcessHeap(), 0, This);
985
986     return ref;
987 }
988
989 /*** IDirect3DRMObject methods ***/
990 static HRESULT WINAPI IDirect3DRMFrame3Impl_Clone(IDirect3DRMFrame3* iface,
991                                                   LPUNKNOWN unkwn, REFIID riid,
992                                                   LPVOID* object)
993 {
994     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
995
996     FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
997
998     return E_NOTIMPL;
999 }
1000
1001 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddDestroyCallback(IDirect3DRMFrame3* iface,
1002                                                                D3DRMOBJECTCALLBACK cb,
1003                                                                LPVOID argument)
1004 {
1005     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1006
1007     FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
1008
1009     return E_NOTIMPL;
1010 }
1011
1012 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteDestroyCallback(IDirect3DRMFrame3* iface,
1013                                                                   D3DRMOBJECTCALLBACK cb,
1014                                                                   LPVOID argument)
1015 {
1016     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1017
1018     FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
1019
1020     return E_NOTIMPL;
1021 }
1022
1023 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetAppData(IDirect3DRMFrame3* iface,
1024                                                        DWORD data)
1025 {
1026     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1027
1028     FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
1029
1030     return E_NOTIMPL;
1031 }
1032
1033 static DWORD WINAPI IDirect3DRMFrame3Impl_GetAppData(IDirect3DRMFrame3* iface)
1034 {
1035     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1036
1037     FIXME("(%p/%p)->(): stub\n", iface, This);
1038
1039     return 0;
1040 }
1041
1042 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetName(IDirect3DRMFrame3* iface, LPCSTR name)
1043 {
1044     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1045
1046     FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
1047
1048     return E_NOTIMPL;
1049 }
1050
1051 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetName(IDirect3DRMFrame3* iface,
1052                                                     LPDWORD size, LPSTR name)
1053 {
1054     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1055
1056     FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
1057
1058     return E_NOTIMPL;
1059 }
1060
1061 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetClassName(IDirect3DRMFrame3* iface,
1062                                                          LPDWORD size, LPSTR name)
1063 {
1064     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1065
1066     FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
1067
1068     return E_NOTIMPL;
1069 }
1070
1071 /*** IDirect3DRMFrame methods ***/
1072 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddChild(IDirect3DRMFrame3* iface,
1073                                                      LPDIRECT3DRMFRAME3 child)
1074 {
1075     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1076
1077     FIXME("(%p/%p)->(%p): stub\n", iface, This, child);
1078
1079     return E_NOTIMPL;
1080 }
1081
1082 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddLight(IDirect3DRMFrame3* iface,
1083                                                      LPDIRECT3DRMLIGHT light)
1084 {
1085     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1086
1087     FIXME("(%p/%p)->(%p): stub\n", iface, This, light);
1088
1089     return E_NOTIMPL;
1090 }
1091
1092 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddMoveCallback(IDirect3DRMFrame3* iface,
1093                                                             D3DRMFRAME3MOVECALLBACK cb, VOID *arg,
1094                                                             DWORD flags)
1095 {
1096     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1097
1098     FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface, This, cb, arg, flags);
1099
1100     return E_NOTIMPL;
1101 }
1102
1103 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddTransform(IDirect3DRMFrame3* iface,
1104                                                          D3DRMCOMBINETYPE type,
1105                                                          D3DRMMATRIX4D matrix)
1106 {
1107     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1108
1109     FIXME("(%p/%p)->(%u,%p): stub\n", iface, This, type, matrix);
1110
1111     return E_NOTIMPL;
1112 }
1113
1114 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddTranslation(IDirect3DRMFrame3* iface,
1115                                                            D3DRMCOMBINETYPE type,
1116                                                            D3DVALUE x, D3DVALUE y, D3DVALUE z)
1117 {
1118     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1119
1120     FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface, This, type, x, y, z);
1121
1122     return E_NOTIMPL;
1123 }
1124
1125 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddScale(IDirect3DRMFrame3* iface,
1126                                                      D3DRMCOMBINETYPE type,
1127                                                      D3DVALUE sx, D3DVALUE sy, D3DVALUE sz)
1128 {
1129     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1130
1131     FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface, This, type, sx, sy, sz);
1132
1133     return E_NOTIMPL;
1134 }
1135
1136 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddRotation(IDirect3DRMFrame3* iface,
1137                                                         D3DRMCOMBINETYPE type,
1138                                                         D3DVALUE x, D3DVALUE y, D3DVALUE z,
1139                                                         D3DVALUE theta)
1140 {
1141     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1142
1143     FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface, This, type, x, y, z, theta);
1144
1145     return E_NOTIMPL;
1146 }
1147
1148 static HRESULT WINAPI IDirect3DRMFrame3Impl_AddVisual(IDirect3DRMFrame3* iface, LPUNKNOWN vis)
1149 {
1150     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1151
1152     FIXME("(%p/%p)->(%p): stub\n", iface, This, vis);
1153
1154     return E_NOTIMPL;
1155 }
1156
1157 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetChildren(IDirect3DRMFrame3* iface,
1158                                                         LPDIRECT3DRMFRAMEARRAY *children)
1159 {
1160     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1161
1162     FIXME("(%p/%p)->(%p): stub\n", iface, This, children);
1163
1164     return E_NOTIMPL;
1165 }
1166
1167 static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetColor(IDirect3DRMFrame3* iface)
1168 {
1169     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1170
1171     FIXME("(%p/%p)->(): stub\n", iface, This);
1172
1173     return 0;
1174 }
1175
1176 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetLights(IDirect3DRMFrame3* iface,
1177                                                       LPDIRECT3DRMLIGHTARRAY *lights)
1178 {
1179     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1180
1181     FIXME("(%p/%p)->(%p): stub\n", iface, This, lights);
1182
1183     return E_NOTIMPL;
1184 }
1185
1186 static D3DRMMATERIALMODE WINAPI IDirect3DRMFrame3Impl_GetMaterialMode(IDirect3DRMFrame3* iface)
1187 {
1188     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1189
1190     FIXME("(%p/%p)->(): stub\n", iface, This);
1191
1192     return D3DRMMATERIAL_FROMPARENT;
1193 }
1194
1195 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetParent(IDirect3DRMFrame3* iface,
1196                                                       LPDIRECT3DRMFRAME3 * frame)
1197 {
1198     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1199
1200     FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
1201
1202     return E_NOTIMPL;
1203 }
1204
1205 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetPosition(IDirect3DRMFrame3* iface,
1206                                                         LPDIRECT3DRMFRAME3 reference,
1207                                                         LPD3DVECTOR return_position)
1208 {
1209     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1210
1211     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, return_position);
1212
1213     return E_NOTIMPL;
1214 }
1215
1216 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetRotation(IDirect3DRMFrame3* iface,
1217                                                         LPDIRECT3DRMFRAME3 reference,
1218                                                         LPD3DVECTOR axis, LPD3DVALUE return_theta)
1219 {
1220     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1221
1222     FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, reference, axis, return_theta);
1223
1224     return E_NOTIMPL;
1225 }
1226
1227 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetScene(IDirect3DRMFrame3* iface,
1228                                                      LPDIRECT3DRMFRAME3 * frame)
1229 {
1230     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1231
1232     FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
1233
1234     return E_NOTIMPL;
1235 }
1236
1237 static D3DRMSORTMODE WINAPI IDirect3DRMFrame3Impl_GetSortMode(IDirect3DRMFrame3* iface)
1238 {
1239     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1240
1241     FIXME("(%p/%p)->(): stub\n", iface, This);
1242
1243     return D3DRMSORT_FROMPARENT;
1244 }
1245
1246 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetTexture(IDirect3DRMFrame3* iface,
1247                                                        LPDIRECT3DRMTEXTURE3 * tex)
1248 {
1249     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1250
1251     FIXME("(%p/%p)->(%p): stub\n", iface, This, tex);
1252
1253     return E_NOTIMPL;
1254 }
1255
1256 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetTransform(IDirect3DRMFrame3* iface,
1257                                                          LPDIRECT3DRMFRAME3 reference,
1258                                                          D3DRMMATRIX4D return_matrix)
1259 {
1260     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1261
1262     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, return_matrix);
1263
1264     return E_NOTIMPL;
1265 }
1266
1267 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetVelocity(IDirect3DRMFrame3* iface,
1268                                                         LPDIRECT3DRMFRAME3 reference,
1269                                                         LPD3DVECTOR return_velocity,
1270                                                         BOOL with_rotation)
1271 {
1272     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1273
1274     FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface, This, reference, return_velocity, with_rotation);
1275
1276     return E_NOTIMPL;
1277 }
1278
1279 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetOrientation(IDirect3DRMFrame3* iface,
1280                                                            LPDIRECT3DRMFRAME3 reference,
1281                                                            LPD3DVECTOR dir, LPD3DVECTOR up)
1282 {
1283     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1284
1285     FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, reference, dir, up);
1286
1287     return E_NOTIMPL;
1288 }
1289
1290 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetVisuals(IDirect3DRMFrame3* iface, LPDWORD num,
1291                                                        LPUNKNOWN *visuals)
1292 {
1293     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1294
1295     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, num, visuals);
1296
1297     return E_NOTIMPL;
1298 }
1299
1300 static HRESULT WINAPI IDirect3DRMFrame3Impl_InverseTransform(IDirect3DRMFrame3* iface,
1301                                                              D3DVECTOR *d, D3DVECTOR *s)
1302 {
1303     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1304
1305     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, d, s);
1306
1307     return E_NOTIMPL;
1308 }
1309
1310 static HRESULT WINAPI IDirect3DRMFrame3Impl_Load(IDirect3DRMFrame3* iface, LPVOID filename,
1311                                                  LPVOID name, D3DRMLOADOPTIONS loadflags,
1312                                                  D3DRMLOADTEXTURE3CALLBACK cb, LPVOID lpArg)
1313 {
1314     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1315
1316     FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface, This, filename, name, loadflags, cb, lpArg);
1317
1318     return E_NOTIMPL;
1319 }
1320
1321 static HRESULT WINAPI IDirect3DRMFrame3Impl_LookAt(IDirect3DRMFrame3* iface,
1322                                                    LPDIRECT3DRMFRAME3 target,
1323                                                    LPDIRECT3DRMFRAME3 reference,
1324                                                    D3DRMFRAMECONSTRAINT constraint)
1325 {
1326     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1327
1328     FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface, This, target, reference, constraint);
1329
1330     return E_NOTIMPL;
1331 }
1332
1333 static HRESULT WINAPI IDirect3DRMFrame3Impl_Move(IDirect3DRMFrame3* iface, D3DVALUE delta)
1334 {
1335     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1336
1337     FIXME("(%p/%p)->(%f): stub\n", iface, This, delta);
1338
1339     return E_NOTIMPL;
1340 }
1341
1342 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteChild(IDirect3DRMFrame3* iface,
1343                                                         LPDIRECT3DRMFRAME3 frame)
1344 {
1345     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1346
1347     FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
1348
1349     return E_NOTIMPL;
1350 }
1351
1352 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteLight(IDirect3DRMFrame3* iface,
1353                                                         LPDIRECT3DRMLIGHT light)
1354 {
1355     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1356
1357     FIXME("(%p/%p)->(%p): stub\n", iface, This, light);
1358
1359     return E_NOTIMPL;
1360 }
1361
1362 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteMoveCallback(IDirect3DRMFrame3* iface,
1363                                                                D3DRMFRAME3MOVECALLBACK cb,
1364                                                                VOID *arg)
1365 {
1366     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1367
1368     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, arg);
1369
1370     return E_NOTIMPL;
1371 }
1372
1373 static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteVisual(IDirect3DRMFrame3* iface, LPUNKNOWN vis)
1374 {
1375     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1376
1377     FIXME("(%p/%p)->(%p): stub\n", iface, This, vis);
1378
1379     return E_NOTIMPL;
1380 }
1381
1382 static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetSceneBackground(IDirect3DRMFrame3* iface)
1383 {
1384     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1385
1386     FIXME("(%p/%p)->(): stub\n", iface, This);
1387
1388     return 0;
1389 }
1390
1391 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetSceneBackgroundDepth(IDirect3DRMFrame3* iface,
1392                                                                     LPDIRECTDRAWSURFACE * surface)
1393 {
1394     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1395
1396     FIXME("(%p/%p)->(%p): stub\n", iface, This, surface);
1397
1398     return E_NOTIMPL;
1399 }
1400
1401 static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetSceneFogColor(IDirect3DRMFrame3* iface)
1402 {
1403     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1404
1405     FIXME("(%p/%p)->(): stub\n", iface, This);
1406
1407     return 0;
1408 }
1409
1410 static BOOL WINAPI IDirect3DRMFrame3Impl_GetSceneFogEnable(IDirect3DRMFrame3* iface)
1411 {
1412     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1413
1414     FIXME("(%p/%p)->(): stub\n", iface, This);
1415
1416     return FALSE;
1417 }
1418
1419 static D3DRMFOGMODE WINAPI IDirect3DRMFrame3Impl_GetSceneFogMode(IDirect3DRMFrame3* iface)
1420 {
1421     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1422
1423     FIXME("(%p/%p)->(): stub\n", iface, This);
1424
1425     return D3DRMFOG_LINEAR;
1426 }
1427
1428 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetSceneFogParams(IDirect3DRMFrame3* iface,
1429                                                               D3DVALUE *return_start,
1430                                                               D3DVALUE *return_end,
1431                                                               D3DVALUE *return_density)
1432 {
1433     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1434
1435     FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, return_start, return_end, return_density);
1436
1437     return E_NOTIMPL;
1438 }
1439
1440 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackground(IDirect3DRMFrame3* iface,
1441                                                                D3DCOLOR color)
1442 {
1443     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1444
1445     FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
1446
1447     return E_NOTIMPL;
1448 }
1449
1450 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackgroundRGB(IDirect3DRMFrame3* iface,
1451                                                                   D3DVALUE red, D3DVALUE green,
1452                                                                   D3DVALUE blue)
1453 {
1454     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1455
1456     FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, red, green, blue);
1457
1458     return E_NOTIMPL;
1459 }
1460
1461 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackgroundDepth(IDirect3DRMFrame3* iface,
1462                                                                     LPDIRECTDRAWSURFACE surface)
1463 {
1464     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1465
1466     FIXME("(%p/%p)->(%p): stub\n", iface, This, surface);
1467
1468     return E_NOTIMPL;
1469 }
1470
1471 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackgroundImage(IDirect3DRMFrame3* iface,
1472                                                                     LPDIRECT3DRMTEXTURE3 texture)
1473 {
1474     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1475
1476     FIXME("(%p/%p)->(%p): stub\n", iface, This, texture);
1477
1478     return E_NOTIMPL;
1479 }
1480
1481 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogEnable(IDirect3DRMFrame3* iface, BOOL enable)
1482 {
1483     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1484
1485     FIXME("(%p/%p)->(%d): stub\n", iface, This, enable);
1486
1487     return E_NOTIMPL;
1488 }
1489
1490 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogColor(IDirect3DRMFrame3* iface,
1491                                                              D3DCOLOR color)
1492 {
1493     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1494
1495     FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
1496
1497     return E_NOTIMPL;
1498 }
1499
1500 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogMode(IDirect3DRMFrame3* iface,
1501                                                             D3DRMFOGMODE mode)
1502 {
1503     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1504
1505     FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
1506
1507     return E_NOTIMPL;
1508 }
1509
1510 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogParams(IDirect3DRMFrame3* iface,
1511                                                               D3DVALUE start, D3DVALUE end,
1512                                                               D3DVALUE density)
1513 {
1514     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1515
1516     FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, start, end, density);
1517
1518     return E_NOTIMPL;
1519 }
1520
1521 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetColor(IDirect3DRMFrame3* iface, D3DCOLOR color)
1522 {
1523     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1524
1525     FIXME("(%p/%p)->(%u): stub\n", iface, This, color);
1526
1527     return E_NOTIMPL;
1528 }
1529
1530 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetColorRGB(IDirect3DRMFrame3* iface, D3DVALUE red,
1531                                                         D3DVALUE green, D3DVALUE blue)
1532 {
1533     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1534
1535     FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, red, green, blue);
1536
1537     return E_NOTIMPL;
1538 }
1539
1540 static D3DRMZBUFFERMODE WINAPI IDirect3DRMFrame3Impl_GetZbufferMode(IDirect3DRMFrame3* iface)
1541 {
1542     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1543
1544     FIXME("(%p/%p)->(): stub\n", iface, This);
1545
1546     return D3DRMZBUFFER_FROMPARENT;
1547 }
1548
1549 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetMaterialMode(IDirect3DRMFrame3* iface,
1550                                                             D3DRMMATERIALMODE mode)
1551 {
1552     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1553
1554     FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
1555
1556     return E_NOTIMPL;
1557 }
1558
1559 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetOrientation(IDirect3DRMFrame3* iface,
1560                                                            LPDIRECT3DRMFRAME3 reference,
1561                                                            D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1562                                                            D3DVALUE ux, D3DVALUE uy, D3DVALUE uz )
1563 {
1564     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1565
1566     FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface, This, reference,
1567           dx, dy, dz, ux, uy, uz);
1568
1569     return E_NOTIMPL;
1570 }
1571
1572 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetPosition(IDirect3DRMFrame3* iface,
1573                                                         LPDIRECT3DRMFRAME3 reference,
1574                                                         D3DVALUE x, D3DVALUE y, D3DVALUE z)
1575 {
1576     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1577
1578     FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface, This, reference, x, y, z);
1579
1580     return E_NOTIMPL;
1581 }
1582
1583 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetRotation(IDirect3DRMFrame3* iface,
1584                                                         LPDIRECT3DRMFRAME3 reference,
1585                                                         D3DVALUE x, D3DVALUE y, D3DVALUE z,
1586                                                         D3DVALUE theta)
1587 {
1588     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1589
1590     FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface, This, reference, x, y, z, theta);
1591
1592     return E_NOTIMPL;
1593 }
1594
1595 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSortMode(IDirect3DRMFrame3* iface,
1596                                                         D3DRMSORTMODE mode)
1597 {
1598     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1599
1600     FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
1601
1602     return E_NOTIMPL;
1603 }
1604
1605 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetTexture(IDirect3DRMFrame3* iface,
1606                                                        LPDIRECT3DRMTEXTURE3 texture)
1607 {
1608     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1609
1610     FIXME("(%p/%p)->(%p): stub\n", iface, This, texture);
1611
1612     return E_NOTIMPL;
1613 }
1614
1615 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetVelocity(IDirect3DRMFrame3* iface,
1616                                                         LPDIRECT3DRMFRAME3 reference,
1617                                                         D3DVALUE x, D3DVALUE y, D3DVALUE z,
1618                                                         BOOL with_rotation)
1619 {
1620     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1621
1622     FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface, This, reference, x, y, z, with_rotation);
1623
1624     return E_NOTIMPL;
1625 }
1626
1627 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetZbufferMode(IDirect3DRMFrame3* iface,
1628                                                            D3DRMZBUFFERMODE mode)
1629 {
1630     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1631
1632     FIXME("(%p/%p)->(%u): stub\n", iface, This, mode);
1633
1634     return E_NOTIMPL;
1635 }
1636
1637 static HRESULT WINAPI IDirect3DRMFrame3Impl_Transform(IDirect3DRMFrame3* iface, D3DVECTOR *d,
1638                                                       D3DVECTOR *s)
1639 {
1640     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1641
1642     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, d, s);
1643
1644     return E_NOTIMPL;
1645 }
1646
1647 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetBox(IDirect3DRMFrame3* iface, LPD3DRMBOX box)
1648 {
1649     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1650
1651     FIXME("(%p/%p)->(%p): stub\n", iface, This, box);
1652
1653     return E_NOTIMPL;
1654 }
1655
1656 static BOOL WINAPI IDirect3DRMFrame3Impl_GetBoxEnable(IDirect3DRMFrame3* iface)
1657 {
1658     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1659
1660     FIXME("(%p/%p)->(): stub\n", iface, This);
1661
1662     return E_NOTIMPL;
1663 }
1664
1665 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetAxes(IDirect3DRMFrame3* iface,
1666                                                     LPD3DVECTOR dir, LPD3DVECTOR up)
1667 {
1668     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1669
1670     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, dir, up);
1671
1672     return E_NOTIMPL;
1673 }
1674
1675 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetMaterial(IDirect3DRMFrame3* iface,
1676                                                         LPDIRECT3DRMMATERIAL2 *material)
1677 {
1678     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1679
1680     FIXME("(%p/%p)->(%p): stub\n", iface, This, material);
1681
1682     return E_NOTIMPL;
1683 }
1684
1685 static BOOL WINAPI IDirect3DRMFrame3Impl_GetInheritAxes(IDirect3DRMFrame3* iface)
1686 {
1687     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1688
1689     FIXME("(%p/%p)->(): stub\n", iface, This);
1690
1691     return E_NOTIMPL;
1692 }
1693
1694 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetHierarchyBox(IDirect3DRMFrame3* iface,
1695                                                             LPD3DRMBOX box)
1696 {
1697     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1698
1699     FIXME("(%p/%p)->(%p): stub\n", iface, This, box);
1700
1701     return E_NOTIMPL;
1702 }
1703
1704 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetBox(IDirect3DRMFrame3* iface, LPD3DRMBOX box)
1705 {
1706     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1707
1708     FIXME("(%p/%p)->(%p): stub\n", iface, This, box);
1709
1710     return E_NOTIMPL;
1711 }
1712
1713 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetBoxEnable(IDirect3DRMFrame3* iface, BOOL enable)
1714 {
1715     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1716
1717     FIXME("(%p/%p)->(%u): stub\n", iface, This, enable);
1718
1719     return E_NOTIMPL;
1720 }
1721
1722 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetAxes(IDirect3DRMFrame3* iface,
1723                                                     D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
1724                                                     D3DVALUE ux, D3DVALUE uy, D3DVALUE uz)
1725 {
1726     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1727
1728     FIXME("(%p/%p)->(%f,%f,%f,%f,%f,%f): stub\n", iface, This, dx, dy, dz, ux, uy, uz);
1729
1730     return E_NOTIMPL;
1731 }
1732
1733 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetInheritAxes(IDirect3DRMFrame3* iface,
1734                                                            BOOL inherit_from_parent)
1735 {
1736     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1737
1738     FIXME("(%p/%p)->(%u): stub\n", iface, This, inherit_from_parent);
1739
1740     return E_NOTIMPL;
1741 }
1742
1743 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetMaterial(IDirect3DRMFrame3* iface,
1744                                                         LPDIRECT3DRMMATERIAL2 material)
1745 {
1746     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1747
1748     FIXME("(%p/%p)->(%p): stub\n", iface, This, material);
1749
1750     return E_NOTIMPL;
1751 }
1752
1753 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetQuaternion(IDirect3DRMFrame3* iface,
1754                                                           LPDIRECT3DRMFRAME3 reference,
1755                                                           D3DRMQUATERNION *q)
1756 {
1757     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1758
1759     FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, q);
1760
1761     return E_NOTIMPL;
1762 }
1763
1764 static HRESULT WINAPI IDirect3DRMFrame3Impl_RayPick(IDirect3DRMFrame3* iface,
1765                                                     LPDIRECT3DRMFRAME3 reference, LPD3DRMRAY ray,
1766                                                     DWORD flags,
1767                                                     LPDIRECT3DRMPICKED2ARRAY *return_visuals)
1768 {
1769     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1770
1771     FIXME("(%p/%p)->(%p,%p,%u,%p): stub\n", iface, This, reference, ray, flags, return_visuals);
1772
1773     return E_NOTIMPL;
1774 }
1775
1776 static HRESULT WINAPI IDirect3DRMFrame3Impl_Save(IDirect3DRMFrame3* iface, LPCSTR filename,
1777                                                  D3DRMXOFFORMAT d3dFormat,
1778                                                  D3DRMSAVEOPTIONS d3dSaveFlags)
1779 {
1780     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1781
1782     FIXME("(%p/%p)->(%p,%u,%u): stub\n", iface, This, filename, d3dFormat, d3dSaveFlags);
1783
1784     return E_NOTIMPL;
1785 }
1786
1787 static HRESULT WINAPI IDirect3DRMFrame3Impl_TransformVectors(IDirect3DRMFrame3* iface,
1788                                                              LPDIRECT3DRMFRAME3 reference,
1789                                                              DWORD num, LPD3DVECTOR dst,
1790                                                              LPD3DVECTOR src)
1791 {
1792     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1793
1794     FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface, This, reference, num, dst, src);
1795
1796     return E_NOTIMPL;
1797 }
1798
1799 static HRESULT WINAPI IDirect3DRMFrame3Impl_InverseTransformVectors(IDirect3DRMFrame3* iface,
1800                                                                     LPDIRECT3DRMFRAME3 reference,
1801                                                                     DWORD num, LPD3DVECTOR dst,
1802                                                                     LPD3DVECTOR src)
1803 {
1804     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1805
1806     FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface, This, reference, num, dst, src);
1807
1808     return E_NOTIMPL;
1809 }
1810
1811 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetTraversalOptions(IDirect3DRMFrame3* iface,
1812                                                                 DWORD flags)
1813 {
1814     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1815
1816     FIXME("(%p/%p)->(%u): stub\n", iface, This, flags);
1817
1818     return E_NOTIMPL;
1819 }
1820
1821 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetTraversalOptions(IDirect3DRMFrame3* iface,
1822                                                                 LPDWORD flags)
1823 {
1824     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1825
1826     FIXME("(%p/%p)->(%p): stub\n", iface, This, flags);
1827
1828     return E_NOTIMPL;
1829 }
1830
1831 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogMethod(IDirect3DRMFrame3* iface,
1832                                                               DWORD flags)
1833 {
1834     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1835
1836     FIXME("(%p/%p)->(%u): stub\n", iface, This, flags);
1837
1838     return E_NOTIMPL;
1839 }
1840
1841 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetSceneFogMethod(IDirect3DRMFrame3* iface,
1842                                                               LPDWORD flags)
1843 {
1844     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1845
1846     FIXME("(%p/%p)->(%p): stub\n", iface, This, flags);
1847
1848     return E_NOTIMPL;
1849 }
1850
1851 static HRESULT WINAPI IDirect3DRMFrame3Impl_SetMaterialOverride(IDirect3DRMFrame3* iface,
1852                                                                 LPD3DRMMATERIALOVERRIDE override)
1853 {
1854     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1855
1856     FIXME("(%p/%p)->(%p): stub\n", iface, This, override);
1857
1858     return E_NOTIMPL;
1859 }
1860
1861 static HRESULT WINAPI IDirect3DRMFrame3Impl_GetMaterialOverride(IDirect3DRMFrame3* iface,
1862                                                                 LPD3DRMMATERIALOVERRIDE override)
1863 {
1864     IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
1865
1866     FIXME("(%p/%p)->(%p): stub\n", iface, This, override);
1867
1868     return E_NOTIMPL;
1869 }
1870
1871 static const struct IDirect3DRMFrame3Vtbl Direct3DRMFrame3_Vtbl =
1872 {
1873     /*** IUnknown methods ***/
1874     IDirect3DRMFrame3Impl_QueryInterface,
1875     IDirect3DRMFrame3Impl_AddRef,
1876     IDirect3DRMFrame3Impl_Release,
1877     /*** IDirect3DRMObject methods ***/
1878     IDirect3DRMFrame3Impl_Clone,
1879     IDirect3DRMFrame3Impl_AddDestroyCallback,
1880     IDirect3DRMFrame3Impl_DeleteDestroyCallback,
1881     IDirect3DRMFrame3Impl_SetAppData,
1882     IDirect3DRMFrame3Impl_GetAppData,
1883     IDirect3DRMFrame3Impl_SetName,
1884     IDirect3DRMFrame3Impl_GetName,
1885     IDirect3DRMFrame3Impl_GetClassName,
1886     /*** IDirect3DRMFrame3 methods ***/
1887     IDirect3DRMFrame3Impl_AddChild,
1888     IDirect3DRMFrame3Impl_AddLight,
1889     IDirect3DRMFrame3Impl_AddMoveCallback,
1890     IDirect3DRMFrame3Impl_AddTransform,
1891     IDirect3DRMFrame3Impl_AddTranslation,
1892     IDirect3DRMFrame3Impl_AddScale,
1893     IDirect3DRMFrame3Impl_AddRotation,
1894     IDirect3DRMFrame3Impl_AddVisual,
1895     IDirect3DRMFrame3Impl_GetChildren,
1896     IDirect3DRMFrame3Impl_GetColor,
1897     IDirect3DRMFrame3Impl_GetLights,
1898     IDirect3DRMFrame3Impl_GetMaterialMode,
1899     IDirect3DRMFrame3Impl_GetParent,
1900     IDirect3DRMFrame3Impl_GetPosition,
1901     IDirect3DRMFrame3Impl_GetRotation,
1902     IDirect3DRMFrame3Impl_GetScene,
1903     IDirect3DRMFrame3Impl_GetSortMode,
1904     IDirect3DRMFrame3Impl_GetTexture,
1905     IDirect3DRMFrame3Impl_GetTransform,
1906     IDirect3DRMFrame3Impl_GetVelocity,
1907     IDirect3DRMFrame3Impl_GetOrientation,
1908     IDirect3DRMFrame3Impl_GetVisuals,
1909     IDirect3DRMFrame3Impl_InverseTransform,
1910     IDirect3DRMFrame3Impl_Load,
1911     IDirect3DRMFrame3Impl_LookAt,
1912     IDirect3DRMFrame3Impl_Move,
1913     IDirect3DRMFrame3Impl_DeleteChild,
1914     IDirect3DRMFrame3Impl_DeleteLight,
1915     IDirect3DRMFrame3Impl_DeleteMoveCallback,
1916     IDirect3DRMFrame3Impl_DeleteVisual,
1917     IDirect3DRMFrame3Impl_GetSceneBackground,
1918     IDirect3DRMFrame3Impl_GetSceneBackgroundDepth,
1919     IDirect3DRMFrame3Impl_GetSceneFogColor,
1920     IDirect3DRMFrame3Impl_GetSceneFogEnable,
1921     IDirect3DRMFrame3Impl_GetSceneFogMode,
1922     IDirect3DRMFrame3Impl_GetSceneFogParams,
1923     IDirect3DRMFrame3Impl_SetSceneBackground,
1924     IDirect3DRMFrame3Impl_SetSceneBackgroundRGB,
1925     IDirect3DRMFrame3Impl_SetSceneBackgroundDepth,
1926     IDirect3DRMFrame3Impl_SetSceneBackgroundImage,
1927     IDirect3DRMFrame3Impl_SetSceneFogEnable,
1928     IDirect3DRMFrame3Impl_SetSceneFogColor,
1929     IDirect3DRMFrame3Impl_SetSceneFogMode,
1930     IDirect3DRMFrame3Impl_SetSceneFogParams,
1931     IDirect3DRMFrame3Impl_SetColor,
1932     IDirect3DRMFrame3Impl_SetColorRGB,
1933     IDirect3DRMFrame3Impl_GetZbufferMode,
1934     IDirect3DRMFrame3Impl_SetMaterialMode,
1935     IDirect3DRMFrame3Impl_SetOrientation,
1936     IDirect3DRMFrame3Impl_SetPosition,
1937     IDirect3DRMFrame3Impl_SetRotation,
1938     IDirect3DRMFrame3Impl_SetSortMode,
1939     IDirect3DRMFrame3Impl_SetTexture,
1940     IDirect3DRMFrame3Impl_SetVelocity,
1941     IDirect3DRMFrame3Impl_SetZbufferMode,
1942     IDirect3DRMFrame3Impl_Transform,
1943     IDirect3DRMFrame3Impl_GetBox,
1944     IDirect3DRMFrame3Impl_GetBoxEnable,
1945     IDirect3DRMFrame3Impl_GetAxes,
1946     IDirect3DRMFrame3Impl_GetMaterial,
1947     IDirect3DRMFrame3Impl_GetInheritAxes,
1948     IDirect3DRMFrame3Impl_GetHierarchyBox,
1949     IDirect3DRMFrame3Impl_SetBox,
1950     IDirect3DRMFrame3Impl_SetBoxEnable,
1951     IDirect3DRMFrame3Impl_SetAxes,
1952     IDirect3DRMFrame3Impl_SetInheritAxes,
1953     IDirect3DRMFrame3Impl_SetMaterial,
1954     IDirect3DRMFrame3Impl_SetQuaternion,
1955     IDirect3DRMFrame3Impl_RayPick,
1956     IDirect3DRMFrame3Impl_Save,
1957     IDirect3DRMFrame3Impl_TransformVectors,
1958     IDirect3DRMFrame3Impl_InverseTransformVectors,
1959     IDirect3DRMFrame3Impl_SetTraversalOptions,
1960     IDirect3DRMFrame3Impl_GetTraversalOptions,
1961     IDirect3DRMFrame3Impl_SetSceneFogMethod,
1962     IDirect3DRMFrame3Impl_GetSceneFogMethod,
1963     IDirect3DRMFrame3Impl_SetMaterialOverride,
1964     IDirect3DRMFrame3Impl_GetMaterialOverride
1965 };