d3drm: Reorder device creation function to avoid forward declarations.
[wine/multimedia.git] / dlls / d3drm / device.c
bloba203b0c2ea6879d878914acba9d5290941cc587d
1 /*
2 * Implementation of IDirect3DRMDevice Interface
4 * Copyright 2011, 2012 André Hentschel
6 * This file contains the (internal) driver registration functions,
7 * driver enumeration APIs and DirectDraw creation functions.
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24 #include "wine/debug.h"
26 #define COBJMACROS
28 #include "winbase.h"
29 #include "wingdi.h"
31 #include "d3drm_private.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
35 typedef struct {
36 IDirect3DRMDevice2 IDirect3DRMDevice2_iface;
37 IDirect3DRMDevice3 IDirect3DRMDevice3_iface;
38 LONG ref;
39 } IDirect3DRMDeviceImpl;
41 static inline IDirect3DRMDeviceImpl *impl_from_IDirect3DRMDevice2(IDirect3DRMDevice2 *iface)
43 return CONTAINING_RECORD(iface, IDirect3DRMDeviceImpl, IDirect3DRMDevice2_iface);
46 static inline IDirect3DRMDeviceImpl *impl_from_IDirect3DRMDevice3(IDirect3DRMDevice3 *iface)
48 return CONTAINING_RECORD(iface, IDirect3DRMDeviceImpl, IDirect3DRMDevice3_iface);
51 /*** IUnknown methods ***/
52 static HRESULT WINAPI IDirect3DRMDevice2Impl_QueryInterface(IDirect3DRMDevice2* iface,
53 REFIID riid, void** object)
55 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
57 TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), object);
59 *object = NULL;
61 if (IsEqualGUID(riid, &IID_IUnknown) ||
62 IsEqualGUID(riid, &IID_IDirect3DRMDevice) ||
63 IsEqualGUID(riid, &IID_IDirect3DRMDevice2))
65 *object = &This->IDirect3DRMDevice2_iface;
67 else if(IsEqualGUID(riid, &IID_IDirect3DRMDevice3))
69 *object = &This->IDirect3DRMDevice3_iface;
71 else
73 FIXME("interface %s not implemented\n", debugstr_guid(riid));
74 return E_NOINTERFACE;
77 IDirect3DRMDevice2_AddRef(iface);
78 return S_OK;
81 static ULONG WINAPI IDirect3DRMDevice2Impl_AddRef(IDirect3DRMDevice2* iface)
83 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
85 TRACE("(%p)\n", This);
87 return InterlockedIncrement(&This->ref);
90 static ULONG WINAPI IDirect3DRMDevice2Impl_Release(IDirect3DRMDevice2* iface)
92 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
93 ULONG ref = InterlockedDecrement(&This->ref);
95 TRACE("(%p)\n", This);
97 if (!ref)
98 HeapFree(GetProcessHeap(), 0, This);
100 return ref;
103 /*** IDirect3DRMObject methods ***/
104 static HRESULT WINAPI IDirect3DRMDevice2Impl_Clone(IDirect3DRMDevice2* iface,
105 LPUNKNOWN unkwn, REFIID riid,
106 LPVOID* object)
108 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
110 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
112 return E_NOTIMPL;
115 static HRESULT WINAPI IDirect3DRMDevice2Impl_AddDestroyCallback(IDirect3DRMDevice2* iface,
116 D3DRMOBJECTCALLBACK cb,
117 LPVOID argument)
119 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
121 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
123 return E_NOTIMPL;
126 static HRESULT WINAPI IDirect3DRMDevice2Impl_DeleteDestroyCallback(IDirect3DRMDevice2* iface,
127 D3DRMOBJECTCALLBACK cb,
128 LPVOID argument)
130 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
132 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
134 return E_NOTIMPL;
137 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetAppData(IDirect3DRMDevice2* iface,
138 DWORD data)
140 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
142 FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
144 return E_NOTIMPL;
147 static DWORD WINAPI IDirect3DRMDevice2Impl_GetAppData(IDirect3DRMDevice2* iface)
149 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
151 FIXME("(%p/%p)->(): stub\n", iface, This);
153 return 0;
156 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetName(IDirect3DRMDevice2* iface, LPCSTR name)
158 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
160 FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
162 return E_NOTIMPL;
165 static HRESULT WINAPI IDirect3DRMDevice2Impl_GetName(IDirect3DRMDevice2* iface,
166 LPDWORD size, LPSTR name)
168 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
170 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
172 return E_NOTIMPL;
175 static HRESULT WINAPI IDirect3DRMDevice2Impl_GetClassName(IDirect3DRMDevice2* iface,
176 LPDWORD size, LPSTR name)
178 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
180 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
182 return E_NOTIMPL;
185 /*** IDirect3DRMDevice methods ***/
186 static HRESULT WINAPI IDirect3DRMDevice2Impl_Init(IDirect3DRMDevice2* iface, ULONG width,
187 ULONG height)
189 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
191 FIXME("(%p/%p)->(%u, %u): stub\n", iface, This, width, height);
193 return E_NOTIMPL;
196 /*** IDirect3DRMDevice2 methods ***/
197 static HRESULT WINAPI IDirect3DRMDevice2Impl_InitFromD3D(IDirect3DRMDevice2* iface,
198 LPDIRECT3D lpD3D,
199 LPDIRECT3DDEVICE lpD3DDev)
201 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
203 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, lpD3D, lpD3DDev);
205 return E_NOTIMPL;
208 static HRESULT WINAPI IDirect3DRMDevice2Impl_InitFromClipper(IDirect3DRMDevice2* iface,
209 LPDIRECTDRAWCLIPPER lpDDClipper,
210 LPGUID lpGUID, int width, int height)
212 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
214 FIXME("(%p/%p)->(%p, %p, %u, %u): stub\n", iface, This, lpDDClipper, lpGUID, width, height);
216 return E_NOTIMPL;
219 static HRESULT WINAPI IDirect3DRMDevice2Impl_Update(IDirect3DRMDevice2* iface)
221 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
223 FIXME("(%p/%p)->(): stub\n", iface, This);
225 return E_NOTIMPL;
228 static HRESULT WINAPI IDirect3DRMDevice2Impl_AddUpdateCallback(IDirect3DRMDevice2* iface,
229 D3DRMUPDATECALLBACK cb, LPVOID arg)
231 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
233 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, arg);
235 return E_NOTIMPL;
238 static HRESULT WINAPI IDirect3DRMDevice2Impl_DeleteUpdateCallback(IDirect3DRMDevice2* iface,
239 D3DRMUPDATECALLBACK cb,
240 LPVOID arg)
242 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
244 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, arg);
246 return E_NOTIMPL;
249 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetBufferCount(IDirect3DRMDevice2* iface, DWORD count)
251 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
253 FIXME("(%p/%p)->(%u): stub\n", iface, This, count);
255 return E_NOTIMPL;
258 static DWORD WINAPI IDirect3DRMDevice2Impl_GetBufferCount(IDirect3DRMDevice2* iface)
260 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
262 FIXME("(%p/%p)->(): stub\n", iface, This);
264 return E_NOTIMPL;
267 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetDither(IDirect3DRMDevice2* iface, BOOL enable)
269 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
271 FIXME("(%p/%p)->(%d): stub\n", iface, This, enable);
273 return E_NOTIMPL;
276 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetShades(IDirect3DRMDevice2* iface, DWORD count)
278 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
280 FIXME("(%p/%p)->(%u): stub\n", iface, This, count);
282 return E_NOTIMPL;
285 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetQuality(IDirect3DRMDevice2* iface,
286 D3DRMRENDERQUALITY quality)
288 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
290 FIXME("(%p/%p)->(%u): stub\n", iface, This, quality);
292 return E_NOTIMPL;
295 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetTextureQuality(IDirect3DRMDevice2* iface,
296 D3DRMTEXTUREQUALITY quality)
298 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
300 FIXME("(%p/%p)->(%u): stub\n", iface, This, quality);
302 return E_NOTIMPL;
305 static HRESULT WINAPI IDirect3DRMDevice2Impl_GetViewports(IDirect3DRMDevice2* iface,
306 LPDIRECT3DRMVIEWPORTARRAY *return_views)
308 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
310 FIXME("(%p/%p)->(%p): stub\n", iface, This, return_views);
312 return E_NOTIMPL;
315 static BOOL WINAPI IDirect3DRMDevice2Impl_GetDither(IDirect3DRMDevice2* iface)
317 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
319 FIXME("(%p/%p)->(): stub\n", iface, This);
321 return E_NOTIMPL;
324 static DWORD WINAPI IDirect3DRMDevice2Impl_GetShades(IDirect3DRMDevice2* iface)
326 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
328 FIXME("(%p/%p)->(): stub\n", iface, This);
330 return E_NOTIMPL;
333 static DWORD WINAPI IDirect3DRMDevice2Impl_GetHeight(IDirect3DRMDevice2* iface)
335 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
337 FIXME("(%p/%p)->(): stub\n", iface, This);
339 return E_NOTIMPL;
342 static DWORD WINAPI IDirect3DRMDevice2Impl_GetWidth(IDirect3DRMDevice2* iface)
344 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
346 FIXME("(%p/%p)->(): stub\n", iface, This);
348 return E_NOTIMPL;
351 static DWORD WINAPI IDirect3DRMDevice2Impl_GetTrianglesDrawn(IDirect3DRMDevice2* iface)
353 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
355 FIXME("(%p/%p)->(): stub\n", iface, This);
357 return E_NOTIMPL;
360 static DWORD WINAPI IDirect3DRMDevice2Impl_GetWireframeOptions(IDirect3DRMDevice2* iface)
362 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
364 FIXME("(%p/%p)->(): stub\n", iface, This);
366 return E_NOTIMPL;
369 static D3DRMRENDERQUALITY WINAPI IDirect3DRMDevice2Impl_GetQuality(IDirect3DRMDevice2* iface)
371 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
373 FIXME("(%p/%p)->(): stub\n", iface, This);
375 return E_NOTIMPL;
378 static D3DCOLORMODEL WINAPI IDirect3DRMDevice2Impl_GetColorModel(IDirect3DRMDevice2* iface)
380 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
382 FIXME("(%p/%p)->(): stub\n", iface, This);
384 return E_NOTIMPL;
387 static D3DRMTEXTUREQUALITY WINAPI IDirect3DRMDevice2Impl_GetTextureQuality(IDirect3DRMDevice2* iface)
389 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
391 FIXME("(%p/%p)->(): stub\n", iface, This);
393 return E_NOTIMPL;
396 static HRESULT WINAPI IDirect3DRMDevice2Impl_GetDirect3DDevice(IDirect3DRMDevice2* iface,
397 LPDIRECT3DDEVICE * dev)
399 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
401 FIXME("(%p/%p)->(%p): stub\n", iface, This, dev);
403 return E_NOTIMPL;
406 static HRESULT WINAPI IDirect3DRMDevice2Impl_InitFromD3D2(IDirect3DRMDevice2* iface,
407 LPDIRECT3D2 lpD3D,
408 LPDIRECT3DDEVICE2 lpD3DDev)
410 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
412 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, lpD3D, lpD3DDev);
414 return E_NOTIMPL;
417 static HRESULT WINAPI IDirect3DRMDevice2Impl_InitFromSurface(IDirect3DRMDevice2* iface,
418 LPGUID lpGUID, LPDIRECTDRAW lpDD,
419 LPDIRECTDRAWSURFACE lpDDSBack)
421 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
423 FIXME("(%p/%p)->(%p, %p, %p): stub\n", iface, This, lpGUID, lpDD, lpDDSBack);
425 return E_NOTIMPL;
428 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetRenderMode(IDirect3DRMDevice2* iface, DWORD dwFlags)
430 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
432 FIXME("(%p/%p)->(%u): stub\n", iface, This, dwFlags);
434 return E_NOTIMPL;
437 static DWORD WINAPI IDirect3DRMDevice2Impl_GetRenderMode(IDirect3DRMDevice2* iface)
439 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
441 FIXME("(%p/%p)->(): stub\n", iface, This);
443 return E_NOTIMPL;
446 static HRESULT WINAPI IDirect3DRMDevice2Impl_GetDirect3DDevice2(IDirect3DRMDevice2* iface,
447 LPDIRECT3DDEVICE2 * dev)
449 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
451 FIXME("(%p/%p)->(%p): stub\n", iface, This, dev);
453 return E_NOTIMPL;
456 static const struct IDirect3DRMDevice2Vtbl Direct3DRMDevice2_Vtbl =
458 /*** IUnknown methods ***/
459 IDirect3DRMDevice2Impl_QueryInterface,
460 IDirect3DRMDevice2Impl_AddRef,
461 IDirect3DRMDevice2Impl_Release,
462 /*** IDirect3DRMObject methods ***/
463 IDirect3DRMDevice2Impl_Clone,
464 IDirect3DRMDevice2Impl_AddDestroyCallback,
465 IDirect3DRMDevice2Impl_DeleteDestroyCallback,
466 IDirect3DRMDevice2Impl_SetAppData,
467 IDirect3DRMDevice2Impl_GetAppData,
468 IDirect3DRMDevice2Impl_SetName,
469 IDirect3DRMDevice2Impl_GetName,
470 IDirect3DRMDevice2Impl_GetClassName,
471 /*** IDirect3DRMDevice methods ***/
472 IDirect3DRMDevice2Impl_Init,
473 IDirect3DRMDevice2Impl_InitFromD3D,
474 IDirect3DRMDevice2Impl_InitFromClipper,
475 IDirect3DRMDevice2Impl_Update,
476 IDirect3DRMDevice2Impl_AddUpdateCallback,
477 IDirect3DRMDevice2Impl_DeleteUpdateCallback,
478 IDirect3DRMDevice2Impl_SetBufferCount,
479 IDirect3DRMDevice2Impl_GetBufferCount,
480 IDirect3DRMDevice2Impl_SetDither,
481 IDirect3DRMDevice2Impl_SetShades,
482 IDirect3DRMDevice2Impl_SetQuality,
483 IDirect3DRMDevice2Impl_SetTextureQuality,
484 IDirect3DRMDevice2Impl_GetViewports,
485 IDirect3DRMDevice2Impl_GetDither,
486 IDirect3DRMDevice2Impl_GetShades,
487 IDirect3DRMDevice2Impl_GetHeight,
488 IDirect3DRMDevice2Impl_GetWidth,
489 IDirect3DRMDevice2Impl_GetTrianglesDrawn,
490 IDirect3DRMDevice2Impl_GetWireframeOptions,
491 IDirect3DRMDevice2Impl_GetQuality,
492 IDirect3DRMDevice2Impl_GetColorModel,
493 IDirect3DRMDevice2Impl_GetTextureQuality,
494 IDirect3DRMDevice2Impl_GetDirect3DDevice,
495 /*** IDirect3DRMDevice2 methods ***/
496 IDirect3DRMDevice2Impl_InitFromD3D2,
497 IDirect3DRMDevice2Impl_InitFromSurface,
498 IDirect3DRMDevice2Impl_SetRenderMode,
499 IDirect3DRMDevice2Impl_GetRenderMode,
500 IDirect3DRMDevice2Impl_GetDirect3DDevice2
504 /*** IUnknown methods ***/
505 static HRESULT WINAPI IDirect3DRMDevice3Impl_QueryInterface(IDirect3DRMDevice3* iface,
506 REFIID riid, void** object)
508 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
509 return IDirect3DRMDevice2_QueryInterface(&This->IDirect3DRMDevice2_iface, riid, object);
512 static ULONG WINAPI IDirect3DRMDevice3Impl_AddRef(IDirect3DRMDevice3* iface)
514 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
516 TRACE("(%p)\n", This);
518 return InterlockedIncrement(&This->ref);
521 static ULONG WINAPI IDirect3DRMDevice3Impl_Release(IDirect3DRMDevice3* iface)
523 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
524 ULONG ref = InterlockedDecrement(&This->ref);
526 TRACE("(%p)\n", This);
528 if (!ref)
529 HeapFree(GetProcessHeap(), 0, This);
531 return ref;
534 /*** IDirect3DRMObject methods ***/
535 static HRESULT WINAPI IDirect3DRMDevice3Impl_Clone(IDirect3DRMDevice3* iface,
536 LPUNKNOWN unkwn, REFIID riid,
537 LPVOID* object)
539 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
541 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
543 return E_NOTIMPL;
546 static HRESULT WINAPI IDirect3DRMDevice3Impl_AddDestroyCallback(IDirect3DRMDevice3* iface,
547 D3DRMOBJECTCALLBACK cb,
548 LPVOID argument)
550 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
552 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
554 return E_NOTIMPL;
557 static HRESULT WINAPI IDirect3DRMDevice3Impl_DeleteDestroyCallback(IDirect3DRMDevice3* iface,
558 D3DRMOBJECTCALLBACK cb,
559 LPVOID argument)
561 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
563 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
565 return E_NOTIMPL;
568 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetAppData(IDirect3DRMDevice3* iface,
569 DWORD data)
571 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
573 FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
575 return E_NOTIMPL;
578 static DWORD WINAPI IDirect3DRMDevice3Impl_GetAppData(IDirect3DRMDevice3* iface)
580 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
582 FIXME("(%p/%p)->(): stub\n", iface, This);
584 return 0;
587 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetName(IDirect3DRMDevice3* iface, LPCSTR name)
589 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
591 FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
593 return E_NOTIMPL;
596 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetName(IDirect3DRMDevice3* iface,
597 LPDWORD size, LPSTR name)
599 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
601 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
603 return E_NOTIMPL;
606 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetClassName(IDirect3DRMDevice3* iface,
607 LPDWORD size, LPSTR name)
609 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
611 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
613 return E_NOTIMPL;
616 /*** IDirect3DRMDevice methods ***/
617 static HRESULT WINAPI IDirect3DRMDevice3Impl_Init(IDirect3DRMDevice3* iface, ULONG width,
618 ULONG height)
620 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
622 FIXME("(%p/%p)->(%u, %u): stub\n", iface, This, width, height);
624 return E_NOTIMPL;
627 static HRESULT WINAPI IDirect3DRMDevice3Impl_InitFromD3D(IDirect3DRMDevice3* iface,
628 LPDIRECT3D lpD3D,
629 LPDIRECT3DDEVICE lpD3DDev)
631 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
633 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, lpD3D, lpD3DDev);
635 return E_NOTIMPL;
638 static HRESULT WINAPI IDirect3DRMDevice3Impl_InitFromClipper(IDirect3DRMDevice3* iface,
639 LPDIRECTDRAWCLIPPER lpDDClipper,
640 LPGUID lpGUID, int width, int height)
642 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
644 FIXME("(%p/%p)->(%p, %p, %u, %u): stub\n", iface, This, lpDDClipper, lpGUID, width, height);
646 return E_NOTIMPL;
649 static HRESULT WINAPI IDirect3DRMDevice3Impl_Update(IDirect3DRMDevice3* iface)
651 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
653 FIXME("(%p/%p)->(): stub\n", iface, This);
655 return E_NOTIMPL;
658 static HRESULT WINAPI IDirect3DRMDevice3Impl_AddUpdateCallback(IDirect3DRMDevice3* iface,
659 D3DRMUPDATECALLBACK cb, LPVOID arg)
661 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
663 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, arg);
665 return E_NOTIMPL;
668 static HRESULT WINAPI IDirect3DRMDevice3Impl_DeleteUpdateCallback(IDirect3DRMDevice3* iface,
669 D3DRMUPDATECALLBACK cb,
670 LPVOID arg)
672 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
674 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, arg);
676 return E_NOTIMPL;
679 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetBufferCount(IDirect3DRMDevice3* iface, DWORD count)
681 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
683 FIXME("(%p/%p)->(%u): stub\n", iface, This, count);
685 return E_NOTIMPL;
688 static DWORD WINAPI IDirect3DRMDevice3Impl_GetBufferCount(IDirect3DRMDevice3* iface)
690 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
692 FIXME("(%p/%p)->(): stub\n", iface, This);
694 return E_NOTIMPL;
697 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetDither(IDirect3DRMDevice3* iface, BOOL enable)
699 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
701 FIXME("(%p/%p)->(%d): stub\n", iface, This, enable);
703 return E_NOTIMPL;
706 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetShades(IDirect3DRMDevice3* iface, DWORD count)
708 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
710 FIXME("(%p/%p)->(%u): stub\n", iface, This, count);
712 return E_NOTIMPL;
715 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetQuality(IDirect3DRMDevice3* iface,
716 D3DRMRENDERQUALITY quality)
718 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
720 FIXME("(%p/%p)->(%u): stub\n", iface, This, quality);
722 return E_NOTIMPL;
725 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetTextureQuality(IDirect3DRMDevice3* iface,
726 D3DRMTEXTUREQUALITY quality)
728 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
730 FIXME("(%p/%p)->(%u): stub\n", iface, This, quality);
732 return E_NOTIMPL;
735 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetViewports(IDirect3DRMDevice3* iface,
736 LPDIRECT3DRMVIEWPORTARRAY *return_views)
738 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
740 FIXME("(%p/%p)->(%p): stub\n", iface, This, return_views);
742 return E_NOTIMPL;
745 static BOOL WINAPI IDirect3DRMDevice3Impl_GetDither(IDirect3DRMDevice3* iface)
747 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
749 FIXME("(%p/%p)->(): stub\n", iface, This);
751 return E_NOTIMPL;
754 static DWORD WINAPI IDirect3DRMDevice3Impl_GetShades(IDirect3DRMDevice3* iface)
756 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
758 FIXME("(%p/%p)->(): stub\n", iface, This);
760 return E_NOTIMPL;
763 static DWORD WINAPI IDirect3DRMDevice3Impl_GetHeight(IDirect3DRMDevice3* iface)
765 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
767 FIXME("(%p/%p)->(): stub\n", iface, This);
769 return E_NOTIMPL;
772 static DWORD WINAPI IDirect3DRMDevice3Impl_GetWidth(IDirect3DRMDevice3* iface)
774 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
776 FIXME("(%p/%p)->(): stub\n", iface, This);
778 return E_NOTIMPL;
781 static DWORD WINAPI IDirect3DRMDevice3Impl_GetTrianglesDrawn(IDirect3DRMDevice3* iface)
783 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
785 FIXME("(%p/%p)->(): stub\n", iface, This);
787 return E_NOTIMPL;
790 static DWORD WINAPI IDirect3DRMDevice3Impl_GetWireframeOptions(IDirect3DRMDevice3* iface)
792 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
794 FIXME("(%p/%p)->(): stub\n", iface, This);
796 return E_NOTIMPL;
799 static D3DRMRENDERQUALITY WINAPI IDirect3DRMDevice3Impl_GetQuality(IDirect3DRMDevice3* iface)
801 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
803 FIXME("(%p/%p)->(): stub\n", iface, This);
805 return E_NOTIMPL;
808 static D3DCOLORMODEL WINAPI IDirect3DRMDevice3Impl_GetColorModel(IDirect3DRMDevice3* iface)
810 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
812 FIXME("(%p/%p)->(): stub\n", iface, This);
814 return E_NOTIMPL;
817 static D3DRMTEXTUREQUALITY WINAPI IDirect3DRMDevice3Impl_GetTextureQuality(IDirect3DRMDevice3* iface)
819 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
821 FIXME("(%p/%p)->(): stub\n", iface, This);
823 return E_NOTIMPL;
826 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetDirect3DDevice(IDirect3DRMDevice3* iface,
827 LPDIRECT3DDEVICE * dev)
829 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
831 FIXME("(%p/%p)->(%p): stub\n", iface, This, dev);
833 return E_NOTIMPL;
836 /*** IDirect3DRMDevice2 methods ***/
837 static HRESULT WINAPI IDirect3DRMDevice3Impl_InitFromD3D2(IDirect3DRMDevice3* iface,
838 LPDIRECT3D2 lpD3D,
839 LPDIRECT3DDEVICE2 lpD3DDev)
841 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
843 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, lpD3D, lpD3DDev);
845 return E_NOTIMPL;
848 static HRESULT WINAPI IDirect3DRMDevice3Impl_InitFromSurface(IDirect3DRMDevice3* iface,
849 LPGUID lpGUID, LPDIRECTDRAW lpDD,
850 LPDIRECTDRAWSURFACE lpDDSBack)
852 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
854 FIXME("(%p/%p)->(%p, %p, %p): stub\n", iface, This, lpGUID, lpDD, lpDDSBack);
856 return E_NOTIMPL;
859 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetRenderMode(IDirect3DRMDevice3* iface, DWORD dwFlags)
861 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
863 FIXME("(%p/%p)->(%u): stub\n", iface, This, dwFlags);
865 return E_NOTIMPL;
868 static DWORD WINAPI IDirect3DRMDevice3Impl_GetRenderMode(IDirect3DRMDevice3* iface)
870 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
872 FIXME("(%p/%p)->(): stub\n", iface, This);
874 return E_NOTIMPL;
877 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetDirect3DDevice2(IDirect3DRMDevice3* iface,
878 LPDIRECT3DDEVICE2 * dev)
880 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
882 FIXME("(%p/%p)->(%p): stub\n", iface, This, dev);
884 return E_NOTIMPL;
887 /*** IDirect3DRMDevice3 methods ***/
888 static HRESULT WINAPI IDirect3DRMDevice3Impl_FindPreferredTextureFormat(IDirect3DRMDevice3* iface,
889 DWORD bitdepths,
890 DWORD flags,
891 LPDDPIXELFORMAT lpDDPF)
893 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
895 FIXME("(%p/%p)->(%u, %u, %p): stub\n", iface, This, bitdepths, flags, lpDDPF);
897 return E_NOTIMPL;
900 static HRESULT WINAPI IDirect3DRMDevice3Impl_RenderStateChange(IDirect3DRMDevice3* iface,
901 D3DRENDERSTATETYPE type, DWORD val,
902 DWORD flags)
904 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
906 FIXME("(%p/%p)->(%u, %u, %u): stub\n", iface, This, type, val, flags);
908 return E_NOTIMPL;
911 static HRESULT WINAPI IDirect3DRMDevice3Impl_LightStateChange(IDirect3DRMDevice3* iface,
912 D3DLIGHTSTATETYPE type, DWORD val,
913 DWORD flags)
915 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
917 FIXME("(%p/%p)->(%u, %u, %u): stub\n", iface, This, type, val, flags);
919 return E_NOTIMPL;
922 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetStateChangeOptions(IDirect3DRMDevice3* iface,
923 DWORD stateclass, DWORD statenum,
924 LPDWORD flags)
926 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
928 FIXME("(%p/%p)->(%u, %u, %p): stub\n", iface, This, stateclass, statenum, flags);
930 return E_NOTIMPL;
933 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetStateChangeOptions(IDirect3DRMDevice3* iface,
934 DWORD stateclass, DWORD statenum,
935 DWORD flags)
937 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
939 FIXME("(%p/%p)->(%u, %u, %u): stub\n", iface, This, stateclass, statenum, flags);
941 return E_NOTIMPL;
944 static const struct IDirect3DRMDevice3Vtbl Direct3DRMDevice3_Vtbl =
946 /*** IUnknown methods ***/
947 IDirect3DRMDevice3Impl_QueryInterface,
948 IDirect3DRMDevice3Impl_AddRef,
949 IDirect3DRMDevice3Impl_Release,
950 /*** IDirect3DRMObject methods ***/
951 IDirect3DRMDevice3Impl_Clone,
952 IDirect3DRMDevice3Impl_AddDestroyCallback,
953 IDirect3DRMDevice3Impl_DeleteDestroyCallback,
954 IDirect3DRMDevice3Impl_SetAppData,
955 IDirect3DRMDevice3Impl_GetAppData,
956 IDirect3DRMDevice3Impl_SetName,
957 IDirect3DRMDevice3Impl_GetName,
958 IDirect3DRMDevice3Impl_GetClassName,
959 /*** IDirect3DRMDevice methods ***/
960 IDirect3DRMDevice3Impl_Init,
961 IDirect3DRMDevice3Impl_InitFromD3D,
962 IDirect3DRMDevice3Impl_InitFromClipper,
963 IDirect3DRMDevice3Impl_Update,
964 IDirect3DRMDevice3Impl_AddUpdateCallback,
965 IDirect3DRMDevice3Impl_DeleteUpdateCallback,
966 IDirect3DRMDevice3Impl_SetBufferCount,
967 IDirect3DRMDevice3Impl_GetBufferCount,
968 IDirect3DRMDevice3Impl_SetDither,
969 IDirect3DRMDevice3Impl_SetShades,
970 IDirect3DRMDevice3Impl_SetQuality,
971 IDirect3DRMDevice3Impl_SetTextureQuality,
972 IDirect3DRMDevice3Impl_GetViewports,
973 IDirect3DRMDevice3Impl_GetDither,
974 IDirect3DRMDevice3Impl_GetShades,
975 IDirect3DRMDevice3Impl_GetHeight,
976 IDirect3DRMDevice3Impl_GetWidth,
977 IDirect3DRMDevice3Impl_GetTrianglesDrawn,
978 IDirect3DRMDevice3Impl_GetWireframeOptions,
979 IDirect3DRMDevice3Impl_GetQuality,
980 IDirect3DRMDevice3Impl_GetColorModel,
981 IDirect3DRMDevice3Impl_GetTextureQuality,
982 IDirect3DRMDevice3Impl_GetDirect3DDevice,
983 /*** IDirect3DRMDevice2 methods ***/
984 IDirect3DRMDevice3Impl_InitFromD3D2,
985 IDirect3DRMDevice3Impl_InitFromSurface,
986 IDirect3DRMDevice3Impl_SetRenderMode,
987 IDirect3DRMDevice3Impl_GetRenderMode,
988 IDirect3DRMDevice3Impl_GetDirect3DDevice2,
989 /*** IDirect3DRMDevice3 methods ***/
990 IDirect3DRMDevice3Impl_FindPreferredTextureFormat,
991 IDirect3DRMDevice3Impl_RenderStateChange,
992 IDirect3DRMDevice3Impl_LightStateChange,
993 IDirect3DRMDevice3Impl_GetStateChangeOptions,
994 IDirect3DRMDevice3Impl_SetStateChangeOptions
997 HRESULT Direct3DRMDevice_create(REFIID riid, IUnknown** ppObj)
999 IDirect3DRMDeviceImpl* object;
1001 TRACE("(%p)\n", ppObj);
1003 object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMDeviceImpl));
1004 if (!object)
1006 ERR("Out of memory\n");
1007 return E_OUTOFMEMORY;
1010 object->IDirect3DRMDevice2_iface.lpVtbl = &Direct3DRMDevice2_Vtbl;
1011 object->IDirect3DRMDevice3_iface.lpVtbl = &Direct3DRMDevice3_Vtbl;
1012 object->ref = 1;
1014 if (IsEqualGUID(riid, &IID_IDirect3DRMFrame3))
1015 *ppObj = (IUnknown*)&object->IDirect3DRMDevice3_iface;
1016 else
1017 *ppObj = (IUnknown*)&object->IDirect3DRMDevice2_iface;
1019 return S_OK;