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"
31 #include "d3drm_private.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(d3drm
);
38 IDirect3DRMDevice2 IDirect3DRMDevice2_iface
;
39 IDirect3DRMDevice3 IDirect3DRMDevice3_iface
;
40 IDirect3DRMWinDevice IDirect3DRMWinDevice_iface
;
42 } IDirect3DRMDeviceImpl
;
44 static inline IDirect3DRMDeviceImpl
*impl_from_IDirect3DRMDevice2(IDirect3DRMDevice2
*iface
)
46 return CONTAINING_RECORD(iface
, IDirect3DRMDeviceImpl
, IDirect3DRMDevice2_iface
);
49 static inline IDirect3DRMDeviceImpl
*impl_from_IDirect3DRMDevice3(IDirect3DRMDevice3
*iface
)
51 return CONTAINING_RECORD(iface
, IDirect3DRMDeviceImpl
, IDirect3DRMDevice3_iface
);
54 static inline IDirect3DRMDeviceImpl
*impl_from_IDirect3DRMWinDevice(IDirect3DRMWinDevice
*iface
)
56 return CONTAINING_RECORD(iface
, IDirect3DRMDeviceImpl
, IDirect3DRMWinDevice_iface
);
59 /*** IUnknown methods ***/
60 static HRESULT WINAPI
IDirect3DRMDevice2Impl_QueryInterface(IDirect3DRMDevice2
* iface
,
61 REFIID riid
, void** object
)
63 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
65 TRACE("(%p/%p)->(%s, %p)\n", iface
, This
, debugstr_guid(riid
), object
);
69 if (IsEqualGUID(riid
, &IID_IUnknown
) ||
70 IsEqualGUID(riid
, &IID_IDirect3DRMDevice
) ||
71 IsEqualGUID(riid
, &IID_IDirect3DRMDevice2
))
73 *object
= &This
->IDirect3DRMDevice2_iface
;
75 else if(IsEqualGUID(riid
, &IID_IDirect3DRMDevice3
))
77 *object
= &This
->IDirect3DRMDevice3_iface
;
79 else if(IsEqualGUID(riid
, &IID_IDirect3DRMWinDevice
))
81 *object
= &This
->IDirect3DRMWinDevice_iface
;
85 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
89 IDirect3DRMDevice2_AddRef(iface
);
93 static ULONG WINAPI
IDirect3DRMDevice2Impl_AddRef(IDirect3DRMDevice2
* iface
)
95 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
96 ULONG ref
= InterlockedIncrement(&This
->ref
);
98 TRACE("(%p)->(): new ref = %d\n", iface
, ref
);
103 static ULONG WINAPI
IDirect3DRMDevice2Impl_Release(IDirect3DRMDevice2
* iface
)
105 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
106 ULONG ref
= InterlockedDecrement(&This
->ref
);
108 TRACE("(%p)->(): new ref = %d\n", iface
, ref
);
111 HeapFree(GetProcessHeap(), 0, This
);
116 /*** IDirect3DRMObject methods ***/
117 static HRESULT WINAPI
IDirect3DRMDevice2Impl_Clone(IDirect3DRMDevice2
* iface
,
118 LPUNKNOWN unkwn
, REFIID riid
,
121 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
123 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface
, This
, unkwn
, debugstr_guid(riid
), object
);
128 static HRESULT WINAPI
IDirect3DRMDevice2Impl_AddDestroyCallback(IDirect3DRMDevice2
* iface
,
129 D3DRMOBJECTCALLBACK cb
,
132 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
134 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
139 static HRESULT WINAPI
IDirect3DRMDevice2Impl_DeleteDestroyCallback(IDirect3DRMDevice2
* iface
,
140 D3DRMOBJECTCALLBACK cb
,
143 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
145 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
150 static HRESULT WINAPI
IDirect3DRMDevice2Impl_SetAppData(IDirect3DRMDevice2
* iface
,
153 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
155 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, data
);
160 static DWORD WINAPI
IDirect3DRMDevice2Impl_GetAppData(IDirect3DRMDevice2
* iface
)
162 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
164 FIXME("(%p/%p)->(): stub\n", iface
, This
);
169 static HRESULT WINAPI
IDirect3DRMDevice2Impl_SetName(IDirect3DRMDevice2
* iface
, LPCSTR name
)
171 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
173 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, name
);
178 static HRESULT WINAPI
IDirect3DRMDevice2Impl_GetName(IDirect3DRMDevice2
* iface
,
179 LPDWORD size
, LPSTR name
)
181 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
183 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
188 static HRESULT WINAPI
IDirect3DRMDevice2Impl_GetClassName(IDirect3DRMDevice2
* iface
,
189 LPDWORD size
, LPSTR name
)
191 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
193 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
198 /*** IDirect3DRMDevice methods ***/
199 static HRESULT WINAPI
IDirect3DRMDevice2Impl_Init(IDirect3DRMDevice2
* iface
, ULONG width
,
202 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
204 FIXME("(%p/%p)->(%u, %u): stub\n", iface
, This
, width
, height
);
209 /*** IDirect3DRMDevice2 methods ***/
210 static HRESULT WINAPI
IDirect3DRMDevice2Impl_InitFromD3D(IDirect3DRMDevice2
* iface
,
212 LPDIRECT3DDEVICE lpD3DDev
)
214 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
216 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, lpD3D
, lpD3DDev
);
221 static HRESULT WINAPI
IDirect3DRMDevice2Impl_InitFromClipper(IDirect3DRMDevice2
* iface
,
222 LPDIRECTDRAWCLIPPER lpDDClipper
,
223 LPGUID lpGUID
, int width
, int height
)
225 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
227 FIXME("(%p/%p)->(%p, %p, %u, %u): stub\n", iface
, This
, lpDDClipper
, lpGUID
, width
, height
);
232 static HRESULT WINAPI
IDirect3DRMDevice2Impl_Update(IDirect3DRMDevice2
* iface
)
234 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
236 FIXME("(%p/%p)->(): stub\n", iface
, This
);
241 static HRESULT WINAPI
IDirect3DRMDevice2Impl_AddUpdateCallback(IDirect3DRMDevice2
* iface
,
242 D3DRMUPDATECALLBACK cb
, LPVOID arg
)
244 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
246 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, arg
);
251 static HRESULT WINAPI
IDirect3DRMDevice2Impl_DeleteUpdateCallback(IDirect3DRMDevice2
* iface
,
252 D3DRMUPDATECALLBACK cb
,
255 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
257 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, arg
);
262 static HRESULT WINAPI
IDirect3DRMDevice2Impl_SetBufferCount(IDirect3DRMDevice2
* iface
, DWORD count
)
264 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
266 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, count
);
271 static DWORD WINAPI
IDirect3DRMDevice2Impl_GetBufferCount(IDirect3DRMDevice2
* iface
)
273 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
275 FIXME("(%p/%p)->(): stub\n", iface
, This
);
280 static HRESULT WINAPI
IDirect3DRMDevice2Impl_SetDither(IDirect3DRMDevice2
* iface
, BOOL enable
)
282 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
284 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, enable
);
289 static HRESULT WINAPI
IDirect3DRMDevice2Impl_SetShades(IDirect3DRMDevice2
* iface
, DWORD count
)
291 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
293 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, count
);
298 static HRESULT WINAPI
IDirect3DRMDevice2Impl_SetQuality(IDirect3DRMDevice2
* iface
,
299 D3DRMRENDERQUALITY quality
)
301 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
303 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, quality
);
308 static HRESULT WINAPI
IDirect3DRMDevice2Impl_SetTextureQuality(IDirect3DRMDevice2
* iface
,
309 D3DRMTEXTUREQUALITY quality
)
311 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
313 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, quality
);
318 static HRESULT WINAPI
IDirect3DRMDevice2Impl_GetViewports(IDirect3DRMDevice2
* iface
,
319 LPDIRECT3DRMVIEWPORTARRAY
*return_views
)
321 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
323 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, return_views
);
328 static BOOL WINAPI
IDirect3DRMDevice2Impl_GetDither(IDirect3DRMDevice2
* iface
)
330 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
332 FIXME("(%p/%p)->(): stub\n", iface
, This
);
337 static DWORD WINAPI
IDirect3DRMDevice2Impl_GetShades(IDirect3DRMDevice2
* iface
)
339 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
341 FIXME("(%p/%p)->(): stub\n", iface
, This
);
346 static DWORD WINAPI
IDirect3DRMDevice2Impl_GetHeight(IDirect3DRMDevice2
* iface
)
348 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
350 FIXME("(%p/%p)->(): stub\n", iface
, This
);
355 static DWORD WINAPI
IDirect3DRMDevice2Impl_GetWidth(IDirect3DRMDevice2
* iface
)
357 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
359 FIXME("(%p/%p)->(): stub\n", iface
, This
);
364 static DWORD WINAPI
IDirect3DRMDevice2Impl_GetTrianglesDrawn(IDirect3DRMDevice2
* iface
)
366 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
368 FIXME("(%p/%p)->(): stub\n", iface
, This
);
373 static DWORD WINAPI
IDirect3DRMDevice2Impl_GetWireframeOptions(IDirect3DRMDevice2
* iface
)
375 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
377 FIXME("(%p/%p)->(): stub\n", iface
, This
);
382 static D3DRMRENDERQUALITY WINAPI
IDirect3DRMDevice2Impl_GetQuality(IDirect3DRMDevice2
* iface
)
384 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
386 FIXME("(%p/%p)->(): stub\n", iface
, This
);
391 static D3DCOLORMODEL WINAPI
IDirect3DRMDevice2Impl_GetColorModel(IDirect3DRMDevice2
* iface
)
393 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
395 FIXME("(%p/%p)->(): stub\n", iface
, This
);
400 static D3DRMTEXTUREQUALITY WINAPI
IDirect3DRMDevice2Impl_GetTextureQuality(IDirect3DRMDevice2
* iface
)
402 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
404 FIXME("(%p/%p)->(): stub\n", iface
, This
);
409 static HRESULT WINAPI
IDirect3DRMDevice2Impl_GetDirect3DDevice(IDirect3DRMDevice2
* iface
,
410 LPDIRECT3DDEVICE
* dev
)
412 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
414 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, dev
);
419 static HRESULT WINAPI
IDirect3DRMDevice2Impl_InitFromD3D2(IDirect3DRMDevice2
* iface
,
421 LPDIRECT3DDEVICE2 lpD3DDev
)
423 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
425 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, lpD3D
, lpD3DDev
);
430 static HRESULT WINAPI
IDirect3DRMDevice2Impl_InitFromSurface(IDirect3DRMDevice2
* iface
,
431 LPGUID lpGUID
, LPDIRECTDRAW lpDD
,
432 LPDIRECTDRAWSURFACE lpDDSBack
)
434 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
436 FIXME("(%p/%p)->(%p, %p, %p): stub\n", iface
, This
, lpGUID
, lpDD
, lpDDSBack
);
441 static HRESULT WINAPI
IDirect3DRMDevice2Impl_SetRenderMode(IDirect3DRMDevice2
* iface
, DWORD dwFlags
)
443 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
445 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, dwFlags
);
450 static DWORD WINAPI
IDirect3DRMDevice2Impl_GetRenderMode(IDirect3DRMDevice2
* iface
)
452 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
454 FIXME("(%p/%p)->(): stub\n", iface
, This
);
459 static HRESULT WINAPI
IDirect3DRMDevice2Impl_GetDirect3DDevice2(IDirect3DRMDevice2
* iface
,
460 LPDIRECT3DDEVICE2
* dev
)
462 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice2(iface
);
464 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, dev
);
469 static const struct IDirect3DRMDevice2Vtbl Direct3DRMDevice2_Vtbl
=
471 /*** IUnknown methods ***/
472 IDirect3DRMDevice2Impl_QueryInterface
,
473 IDirect3DRMDevice2Impl_AddRef
,
474 IDirect3DRMDevice2Impl_Release
,
475 /*** IDirect3DRMObject methods ***/
476 IDirect3DRMDevice2Impl_Clone
,
477 IDirect3DRMDevice2Impl_AddDestroyCallback
,
478 IDirect3DRMDevice2Impl_DeleteDestroyCallback
,
479 IDirect3DRMDevice2Impl_SetAppData
,
480 IDirect3DRMDevice2Impl_GetAppData
,
481 IDirect3DRMDevice2Impl_SetName
,
482 IDirect3DRMDevice2Impl_GetName
,
483 IDirect3DRMDevice2Impl_GetClassName
,
484 /*** IDirect3DRMDevice methods ***/
485 IDirect3DRMDevice2Impl_Init
,
486 IDirect3DRMDevice2Impl_InitFromD3D
,
487 IDirect3DRMDevice2Impl_InitFromClipper
,
488 IDirect3DRMDevice2Impl_Update
,
489 IDirect3DRMDevice2Impl_AddUpdateCallback
,
490 IDirect3DRMDevice2Impl_DeleteUpdateCallback
,
491 IDirect3DRMDevice2Impl_SetBufferCount
,
492 IDirect3DRMDevice2Impl_GetBufferCount
,
493 IDirect3DRMDevice2Impl_SetDither
,
494 IDirect3DRMDevice2Impl_SetShades
,
495 IDirect3DRMDevice2Impl_SetQuality
,
496 IDirect3DRMDevice2Impl_SetTextureQuality
,
497 IDirect3DRMDevice2Impl_GetViewports
,
498 IDirect3DRMDevice2Impl_GetDither
,
499 IDirect3DRMDevice2Impl_GetShades
,
500 IDirect3DRMDevice2Impl_GetHeight
,
501 IDirect3DRMDevice2Impl_GetWidth
,
502 IDirect3DRMDevice2Impl_GetTrianglesDrawn
,
503 IDirect3DRMDevice2Impl_GetWireframeOptions
,
504 IDirect3DRMDevice2Impl_GetQuality
,
505 IDirect3DRMDevice2Impl_GetColorModel
,
506 IDirect3DRMDevice2Impl_GetTextureQuality
,
507 IDirect3DRMDevice2Impl_GetDirect3DDevice
,
508 /*** IDirect3DRMDevice2 methods ***/
509 IDirect3DRMDevice2Impl_InitFromD3D2
,
510 IDirect3DRMDevice2Impl_InitFromSurface
,
511 IDirect3DRMDevice2Impl_SetRenderMode
,
512 IDirect3DRMDevice2Impl_GetRenderMode
,
513 IDirect3DRMDevice2Impl_GetDirect3DDevice2
517 /*** IUnknown methods ***/
518 static HRESULT WINAPI
IDirect3DRMDevice3Impl_QueryInterface(IDirect3DRMDevice3
* iface
,
519 REFIID riid
, void** object
)
521 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
522 return IDirect3DRMDevice2_QueryInterface(&This
->IDirect3DRMDevice2_iface
, riid
, object
);
525 static ULONG WINAPI
IDirect3DRMDevice3Impl_AddRef(IDirect3DRMDevice3
* iface
)
527 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
528 return IDirect3DRMDevice2_AddRef(&This
->IDirect3DRMDevice2_iface
);
531 static ULONG WINAPI
IDirect3DRMDevice3Impl_Release(IDirect3DRMDevice3
* iface
)
533 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
534 return IDirect3DRMDevice2_Release(&This
->IDirect3DRMDevice2_iface
);
537 /*** IDirect3DRMObject methods ***/
538 static HRESULT WINAPI
IDirect3DRMDevice3Impl_Clone(IDirect3DRMDevice3
* iface
,
539 LPUNKNOWN unkwn
, REFIID riid
,
542 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
544 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface
, This
, unkwn
, debugstr_guid(riid
), object
);
549 static HRESULT WINAPI
IDirect3DRMDevice3Impl_AddDestroyCallback(IDirect3DRMDevice3
* iface
,
550 D3DRMOBJECTCALLBACK cb
,
553 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
555 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
560 static HRESULT WINAPI
IDirect3DRMDevice3Impl_DeleteDestroyCallback(IDirect3DRMDevice3
* iface
,
561 D3DRMOBJECTCALLBACK cb
,
564 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
566 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
571 static HRESULT WINAPI
IDirect3DRMDevice3Impl_SetAppData(IDirect3DRMDevice3
* iface
,
574 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
576 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, data
);
581 static DWORD WINAPI
IDirect3DRMDevice3Impl_GetAppData(IDirect3DRMDevice3
* iface
)
583 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
585 FIXME("(%p/%p)->(): stub\n", iface
, This
);
590 static HRESULT WINAPI
IDirect3DRMDevice3Impl_SetName(IDirect3DRMDevice3
* iface
, LPCSTR name
)
592 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
594 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, name
);
599 static HRESULT WINAPI
IDirect3DRMDevice3Impl_GetName(IDirect3DRMDevice3
* iface
,
600 LPDWORD size
, LPSTR name
)
602 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
604 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
609 static HRESULT WINAPI
IDirect3DRMDevice3Impl_GetClassName(IDirect3DRMDevice3
* iface
,
610 LPDWORD size
, LPSTR name
)
612 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
614 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
619 /*** IDirect3DRMDevice methods ***/
620 static HRESULT WINAPI
IDirect3DRMDevice3Impl_Init(IDirect3DRMDevice3
* iface
, ULONG width
,
623 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
625 FIXME("(%p/%p)->(%u, %u): stub\n", iface
, This
, width
, height
);
630 static HRESULT WINAPI
IDirect3DRMDevice3Impl_InitFromD3D(IDirect3DRMDevice3
* iface
,
632 LPDIRECT3DDEVICE lpD3DDev
)
634 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
636 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, lpD3D
, lpD3DDev
);
641 static HRESULT WINAPI
IDirect3DRMDevice3Impl_InitFromClipper(IDirect3DRMDevice3
* iface
,
642 LPDIRECTDRAWCLIPPER lpDDClipper
,
643 LPGUID lpGUID
, int width
, int height
)
645 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
647 FIXME("(%p/%p)->(%p, %p, %u, %u): stub\n", iface
, This
, lpDDClipper
, lpGUID
, width
, height
);
652 static HRESULT WINAPI
IDirect3DRMDevice3Impl_Update(IDirect3DRMDevice3
* iface
)
654 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
656 FIXME("(%p/%p)->(): stub\n", iface
, This
);
661 static HRESULT WINAPI
IDirect3DRMDevice3Impl_AddUpdateCallback(IDirect3DRMDevice3
* iface
,
662 D3DRMUPDATECALLBACK cb
, LPVOID arg
)
664 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
666 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, arg
);
671 static HRESULT WINAPI
IDirect3DRMDevice3Impl_DeleteUpdateCallback(IDirect3DRMDevice3
* iface
,
672 D3DRMUPDATECALLBACK cb
,
675 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
677 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, arg
);
682 static HRESULT WINAPI
IDirect3DRMDevice3Impl_SetBufferCount(IDirect3DRMDevice3
* iface
, DWORD count
)
684 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
686 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, count
);
691 static DWORD WINAPI
IDirect3DRMDevice3Impl_GetBufferCount(IDirect3DRMDevice3
* iface
)
693 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
695 FIXME("(%p/%p)->(): stub\n", iface
, This
);
700 static HRESULT WINAPI
IDirect3DRMDevice3Impl_SetDither(IDirect3DRMDevice3
* iface
, BOOL enable
)
702 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
704 FIXME("(%p/%p)->(%d): stub\n", iface
, This
, enable
);
709 static HRESULT WINAPI
IDirect3DRMDevice3Impl_SetShades(IDirect3DRMDevice3
* iface
, DWORD count
)
711 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
713 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, count
);
718 static HRESULT WINAPI
IDirect3DRMDevice3Impl_SetQuality(IDirect3DRMDevice3
* iface
,
719 D3DRMRENDERQUALITY quality
)
721 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
723 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, quality
);
728 static HRESULT WINAPI
IDirect3DRMDevice3Impl_SetTextureQuality(IDirect3DRMDevice3
* iface
,
729 D3DRMTEXTUREQUALITY quality
)
731 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
733 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, quality
);
738 static HRESULT WINAPI
IDirect3DRMDevice3Impl_GetViewports(IDirect3DRMDevice3
* iface
,
739 LPDIRECT3DRMVIEWPORTARRAY
*return_views
)
741 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
743 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, return_views
);
748 static BOOL WINAPI
IDirect3DRMDevice3Impl_GetDither(IDirect3DRMDevice3
* iface
)
750 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
752 FIXME("(%p/%p)->(): stub\n", iface
, This
);
757 static DWORD WINAPI
IDirect3DRMDevice3Impl_GetShades(IDirect3DRMDevice3
* iface
)
759 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
761 FIXME("(%p/%p)->(): stub\n", iface
, This
);
766 static DWORD WINAPI
IDirect3DRMDevice3Impl_GetHeight(IDirect3DRMDevice3
* iface
)
768 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
770 FIXME("(%p/%p)->(): stub\n", iface
, This
);
775 static DWORD WINAPI
IDirect3DRMDevice3Impl_GetWidth(IDirect3DRMDevice3
* iface
)
777 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
779 FIXME("(%p/%p)->(): stub\n", iface
, This
);
784 static DWORD WINAPI
IDirect3DRMDevice3Impl_GetTrianglesDrawn(IDirect3DRMDevice3
* iface
)
786 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
788 FIXME("(%p/%p)->(): stub\n", iface
, This
);
793 static DWORD WINAPI
IDirect3DRMDevice3Impl_GetWireframeOptions(IDirect3DRMDevice3
* iface
)
795 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
797 FIXME("(%p/%p)->(): stub\n", iface
, This
);
802 static D3DRMRENDERQUALITY WINAPI
IDirect3DRMDevice3Impl_GetQuality(IDirect3DRMDevice3
* iface
)
804 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
806 FIXME("(%p/%p)->(): stub\n", iface
, This
);
811 static D3DCOLORMODEL WINAPI
IDirect3DRMDevice3Impl_GetColorModel(IDirect3DRMDevice3
* iface
)
813 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
815 FIXME("(%p/%p)->(): stub\n", iface
, This
);
820 static D3DRMTEXTUREQUALITY WINAPI
IDirect3DRMDevice3Impl_GetTextureQuality(IDirect3DRMDevice3
* iface
)
822 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
824 FIXME("(%p/%p)->(): stub\n", iface
, This
);
829 static HRESULT WINAPI
IDirect3DRMDevice3Impl_GetDirect3DDevice(IDirect3DRMDevice3
* iface
,
830 LPDIRECT3DDEVICE
* dev
)
832 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
834 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, dev
);
839 /*** IDirect3DRMDevice2 methods ***/
840 static HRESULT WINAPI
IDirect3DRMDevice3Impl_InitFromD3D2(IDirect3DRMDevice3
* iface
,
842 LPDIRECT3DDEVICE2 lpD3DDev
)
844 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
846 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, lpD3D
, lpD3DDev
);
851 static HRESULT WINAPI
IDirect3DRMDevice3Impl_InitFromSurface(IDirect3DRMDevice3
* iface
,
852 LPGUID lpGUID
, LPDIRECTDRAW lpDD
,
853 LPDIRECTDRAWSURFACE lpDDSBack
)
855 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
857 FIXME("(%p/%p)->(%p, %p, %p): stub\n", iface
, This
, lpGUID
, lpDD
, lpDDSBack
);
862 static HRESULT WINAPI
IDirect3DRMDevice3Impl_SetRenderMode(IDirect3DRMDevice3
* iface
, DWORD dwFlags
)
864 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
866 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, dwFlags
);
871 static DWORD WINAPI
IDirect3DRMDevice3Impl_GetRenderMode(IDirect3DRMDevice3
* iface
)
873 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
875 FIXME("(%p/%p)->(): stub\n", iface
, This
);
880 static HRESULT WINAPI
IDirect3DRMDevice3Impl_GetDirect3DDevice2(IDirect3DRMDevice3
* iface
,
881 LPDIRECT3DDEVICE2
* dev
)
883 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
885 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, dev
);
890 /*** IDirect3DRMDevice3 methods ***/
891 static HRESULT WINAPI
IDirect3DRMDevice3Impl_FindPreferredTextureFormat(IDirect3DRMDevice3
* iface
,
894 LPDDPIXELFORMAT lpDDPF
)
896 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
898 FIXME("(%p/%p)->(%u, %u, %p): stub\n", iface
, This
, bitdepths
, flags
, lpDDPF
);
903 static HRESULT WINAPI
IDirect3DRMDevice3Impl_RenderStateChange(IDirect3DRMDevice3
* iface
,
904 D3DRENDERSTATETYPE type
, DWORD val
,
907 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
909 FIXME("(%p/%p)->(%u, %u, %u): stub\n", iface
, This
, type
, val
, flags
);
914 static HRESULT WINAPI
IDirect3DRMDevice3Impl_LightStateChange(IDirect3DRMDevice3
* iface
,
915 D3DLIGHTSTATETYPE type
, DWORD val
,
918 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
920 FIXME("(%p/%p)->(%u, %u, %u): stub\n", iface
, This
, type
, val
, flags
);
925 static HRESULT WINAPI
IDirect3DRMDevice3Impl_GetStateChangeOptions(IDirect3DRMDevice3
* iface
,
926 DWORD stateclass
, DWORD statenum
,
929 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
931 FIXME("(%p/%p)->(%u, %u, %p): stub\n", iface
, This
, stateclass
, statenum
, flags
);
936 static HRESULT WINAPI
IDirect3DRMDevice3Impl_SetStateChangeOptions(IDirect3DRMDevice3
* iface
,
937 DWORD stateclass
, DWORD statenum
,
940 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMDevice3(iface
);
942 FIXME("(%p/%p)->(%u, %u, %u): stub\n", iface
, This
, stateclass
, statenum
, flags
);
947 static const struct IDirect3DRMDevice3Vtbl Direct3DRMDevice3_Vtbl
=
949 /*** IUnknown methods ***/
950 IDirect3DRMDevice3Impl_QueryInterface
,
951 IDirect3DRMDevice3Impl_AddRef
,
952 IDirect3DRMDevice3Impl_Release
,
953 /*** IDirect3DRMObject methods ***/
954 IDirect3DRMDevice3Impl_Clone
,
955 IDirect3DRMDevice3Impl_AddDestroyCallback
,
956 IDirect3DRMDevice3Impl_DeleteDestroyCallback
,
957 IDirect3DRMDevice3Impl_SetAppData
,
958 IDirect3DRMDevice3Impl_GetAppData
,
959 IDirect3DRMDevice3Impl_SetName
,
960 IDirect3DRMDevice3Impl_GetName
,
961 IDirect3DRMDevice3Impl_GetClassName
,
962 /*** IDirect3DRMDevice methods ***/
963 IDirect3DRMDevice3Impl_Init
,
964 IDirect3DRMDevice3Impl_InitFromD3D
,
965 IDirect3DRMDevice3Impl_InitFromClipper
,
966 IDirect3DRMDevice3Impl_Update
,
967 IDirect3DRMDevice3Impl_AddUpdateCallback
,
968 IDirect3DRMDevice3Impl_DeleteUpdateCallback
,
969 IDirect3DRMDevice3Impl_SetBufferCount
,
970 IDirect3DRMDevice3Impl_GetBufferCount
,
971 IDirect3DRMDevice3Impl_SetDither
,
972 IDirect3DRMDevice3Impl_SetShades
,
973 IDirect3DRMDevice3Impl_SetQuality
,
974 IDirect3DRMDevice3Impl_SetTextureQuality
,
975 IDirect3DRMDevice3Impl_GetViewports
,
976 IDirect3DRMDevice3Impl_GetDither
,
977 IDirect3DRMDevice3Impl_GetShades
,
978 IDirect3DRMDevice3Impl_GetHeight
,
979 IDirect3DRMDevice3Impl_GetWidth
,
980 IDirect3DRMDevice3Impl_GetTrianglesDrawn
,
981 IDirect3DRMDevice3Impl_GetWireframeOptions
,
982 IDirect3DRMDevice3Impl_GetQuality
,
983 IDirect3DRMDevice3Impl_GetColorModel
,
984 IDirect3DRMDevice3Impl_GetTextureQuality
,
985 IDirect3DRMDevice3Impl_GetDirect3DDevice
,
986 /*** IDirect3DRMDevice2 methods ***/
987 IDirect3DRMDevice3Impl_InitFromD3D2
,
988 IDirect3DRMDevice3Impl_InitFromSurface
,
989 IDirect3DRMDevice3Impl_SetRenderMode
,
990 IDirect3DRMDevice3Impl_GetRenderMode
,
991 IDirect3DRMDevice3Impl_GetDirect3DDevice2
,
992 /*** IDirect3DRMDevice3 methods ***/
993 IDirect3DRMDevice3Impl_FindPreferredTextureFormat
,
994 IDirect3DRMDevice3Impl_RenderStateChange
,
995 IDirect3DRMDevice3Impl_LightStateChange
,
996 IDirect3DRMDevice3Impl_GetStateChangeOptions
,
997 IDirect3DRMDevice3Impl_SetStateChangeOptions
1001 /*** IUnknown methods ***/
1002 static HRESULT WINAPI
IDirect3DRMWinDeviceImpl_QueryInterface(IDirect3DRMWinDevice
* iface
,
1003 REFIID riid
, void** object
)
1005 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1006 return IDirect3DRMDevice2_QueryInterface(&This
->IDirect3DRMDevice2_iface
, riid
, object
);
1009 static ULONG WINAPI
IDirect3DRMWinDeviceImpl_AddRef(IDirect3DRMWinDevice
* iface
)
1011 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1012 return IDirect3DRMDevice2_AddRef(&This
->IDirect3DRMDevice2_iface
);
1015 static ULONG WINAPI
IDirect3DRMWinDeviceImpl_Release(IDirect3DRMWinDevice
* iface
)
1017 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1018 return IDirect3DRMDevice2_Release(&This
->IDirect3DRMDevice2_iface
);
1021 /*** IDirect3DRMObject methods ***/
1022 static HRESULT WINAPI
IDirect3DRMWinDeviceImpl_Clone(IDirect3DRMWinDevice
* iface
,
1023 LPUNKNOWN unkwn
, REFIID riid
,
1026 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1028 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface
, This
, unkwn
, debugstr_guid(riid
), object
);
1033 static HRESULT WINAPI
IDirect3DRMWinDeviceImpl_AddDestroyCallback(IDirect3DRMWinDevice
* iface
,
1034 D3DRMOBJECTCALLBACK cb
,
1037 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1039 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
1044 static HRESULT WINAPI
IDirect3DRMWinDeviceImpl_DeleteDestroyCallback(IDirect3DRMWinDevice
* iface
,
1045 D3DRMOBJECTCALLBACK cb
,
1048 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1050 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, cb
, argument
);
1055 static HRESULT WINAPI
IDirect3DRMWinDeviceImpl_SetAppData(IDirect3DRMWinDevice
* iface
,
1058 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1060 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, data
);
1065 static DWORD WINAPI
IDirect3DRMWinDeviceImpl_GetAppData(IDirect3DRMWinDevice
* iface
)
1067 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1069 FIXME("(%p/%p)->(): stub\n", iface
, This
);
1074 static HRESULT WINAPI
IDirect3DRMWinDeviceImpl_SetName(IDirect3DRMWinDevice
* iface
, LPCSTR name
)
1076 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1078 FIXME("(%p/%p)->(%s): stub\n", iface
, This
, name
);
1083 static HRESULT WINAPI
IDirect3DRMWinDeviceImpl_GetName(IDirect3DRMWinDevice
* iface
,
1084 LPDWORD size
, LPSTR name
)
1086 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1088 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
1093 static HRESULT WINAPI
IDirect3DRMWinDeviceImpl_GetClassName(IDirect3DRMWinDevice
* iface
,
1094 LPDWORD size
, LPSTR name
)
1096 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1098 FIXME("(%p/%p)->(%p, %p): stub\n", iface
, This
, size
, name
);
1103 /*** IDirect3DRMWinDevice methods ***/
1104 static HRESULT WINAPI
IDirect3DRMWinDeviceImpl_HandlePaint(IDirect3DRMWinDevice
* iface
, HDC hdc
)
1106 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1108 FIXME("(%p/%p)->(%p): stub\n", iface
, This
, hdc
);
1113 static HRESULT WINAPI
IDirect3DRMWinDeviceImpl_HandleActivate(IDirect3DRMWinDevice
* iface
, WORD wparam
)
1115 IDirect3DRMDeviceImpl
*This
= impl_from_IDirect3DRMWinDevice(iface
);
1117 FIXME("(%p/%p)->(%u): stub\n", iface
, This
, wparam
);
1122 static const struct IDirect3DRMWinDeviceVtbl Direct3DRMWinDevice_Vtbl
=
1124 /*** IUnknown methods ***/
1125 IDirect3DRMWinDeviceImpl_QueryInterface
,
1126 IDirect3DRMWinDeviceImpl_AddRef
,
1127 IDirect3DRMWinDeviceImpl_Release
,
1128 /*** IDirect3DRMObject methods ***/
1129 IDirect3DRMWinDeviceImpl_Clone
,
1130 IDirect3DRMWinDeviceImpl_AddDestroyCallback
,
1131 IDirect3DRMWinDeviceImpl_DeleteDestroyCallback
,
1132 IDirect3DRMWinDeviceImpl_SetAppData
,
1133 IDirect3DRMWinDeviceImpl_GetAppData
,
1134 IDirect3DRMWinDeviceImpl_SetName
,
1135 IDirect3DRMWinDeviceImpl_GetName
,
1136 IDirect3DRMWinDeviceImpl_GetClassName
,
1137 /*** IDirect3DRMWinDevice methods ***/
1138 IDirect3DRMWinDeviceImpl_HandlePaint
,
1139 IDirect3DRMWinDeviceImpl_HandleActivate
1142 HRESULT
Direct3DRMDevice_create(REFIID riid
, IUnknown
** ppObj
)
1144 IDirect3DRMDeviceImpl
* object
;
1146 TRACE("(%p)\n", ppObj
);
1148 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirect3DRMDeviceImpl
));
1151 ERR("Out of memory\n");
1152 return E_OUTOFMEMORY
;
1155 object
->IDirect3DRMDevice2_iface
.lpVtbl
= &Direct3DRMDevice2_Vtbl
;
1156 object
->IDirect3DRMDevice3_iface
.lpVtbl
= &Direct3DRMDevice3_Vtbl
;
1157 object
->IDirect3DRMWinDevice_iface
.lpVtbl
= &Direct3DRMWinDevice_Vtbl
;
1160 if (IsEqualGUID(riid
, &IID_IDirect3DRMFrame3
))
1161 *ppObj
= (IUnknown
*)&object
->IDirect3DRMDevice3_iface
;
1163 *ppObj
= (IUnknown
*)&object
->IDirect3DRMDevice2_iface
;