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