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