d3drm: Implement width and height handling in device interfaces.
[wine/multimedia.git] / dlls / d3drm / device.c
blob1b4967a83eeff2ad7d098f721ad30dd2e2ef261f
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"
32 #include "initguid.h"
33 #include "d3drmwin.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
37 typedef struct {
38 IDirect3DRMDevice2 IDirect3DRMDevice2_iface;
39 IDirect3DRMDevice3 IDirect3DRMDevice3_iface;
40 IDirect3DRMWinDevice IDirect3DRMWinDevice_iface;
41 LONG ref;
42 BOOL dither;
43 D3DRMRENDERQUALITY quality;
44 DWORD rendermode;
45 DWORD height;
46 DWORD width;
47 } IDirect3DRMDeviceImpl;
49 static inline IDirect3DRMDeviceImpl *impl_from_IDirect3DRMDevice2(IDirect3DRMDevice2 *iface)
51 return CONTAINING_RECORD(iface, IDirect3DRMDeviceImpl, IDirect3DRMDevice2_iface);
54 static inline IDirect3DRMDeviceImpl *impl_from_IDirect3DRMDevice3(IDirect3DRMDevice3 *iface)
56 return CONTAINING_RECORD(iface, IDirect3DRMDeviceImpl, IDirect3DRMDevice3_iface);
59 static inline IDirect3DRMDeviceImpl *impl_from_IDirect3DRMWinDevice(IDirect3DRMWinDevice *iface)
61 return CONTAINING_RECORD(iface, IDirect3DRMDeviceImpl, IDirect3DRMWinDevice_iface);
64 /*** IUnknown methods ***/
65 static HRESULT WINAPI IDirect3DRMDevice2Impl_QueryInterface(IDirect3DRMDevice2* iface,
66 REFIID riid, void** object)
68 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
70 TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), object);
72 *object = NULL;
74 if (IsEqualGUID(riid, &IID_IUnknown) ||
75 IsEqualGUID(riid, &IID_IDirect3DRMDevice) ||
76 IsEqualGUID(riid, &IID_IDirect3DRMDevice2))
78 *object = &This->IDirect3DRMDevice2_iface;
80 else if(IsEqualGUID(riid, &IID_IDirect3DRMDevice3))
82 *object = &This->IDirect3DRMDevice3_iface;
84 else if(IsEqualGUID(riid, &IID_IDirect3DRMWinDevice))
86 *object = &This->IDirect3DRMWinDevice_iface;
88 else
90 FIXME("interface %s not implemented\n", debugstr_guid(riid));
91 return E_NOINTERFACE;
94 IDirect3DRMDevice2_AddRef(iface);
95 return S_OK;
98 static ULONG WINAPI IDirect3DRMDevice2Impl_AddRef(IDirect3DRMDevice2* iface)
100 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
101 ULONG ref = InterlockedIncrement(&This->ref);
103 TRACE("(%p)->(): new ref = %d\n", iface, ref);
105 return ref;
108 static ULONG WINAPI IDirect3DRMDevice2Impl_Release(IDirect3DRMDevice2* iface)
110 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
111 ULONG ref = InterlockedDecrement(&This->ref);
113 TRACE("(%p)->(): new ref = %d\n", iface, ref);
115 if (!ref)
116 HeapFree(GetProcessHeap(), 0, This);
118 return ref;
121 /*** IDirect3DRMObject methods ***/
122 static HRESULT WINAPI IDirect3DRMDevice2Impl_Clone(IDirect3DRMDevice2* iface,
123 LPUNKNOWN unkwn, REFIID riid,
124 LPVOID* object)
126 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
128 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
130 return E_NOTIMPL;
133 static HRESULT WINAPI IDirect3DRMDevice2Impl_AddDestroyCallback(IDirect3DRMDevice2* iface,
134 D3DRMOBJECTCALLBACK cb,
135 LPVOID argument)
137 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
139 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
141 return E_NOTIMPL;
144 static HRESULT WINAPI IDirect3DRMDevice2Impl_DeleteDestroyCallback(IDirect3DRMDevice2* iface,
145 D3DRMOBJECTCALLBACK cb,
146 LPVOID argument)
148 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
150 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
152 return E_NOTIMPL;
155 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetAppData(IDirect3DRMDevice2* iface,
156 DWORD data)
158 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
160 FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
162 return E_NOTIMPL;
165 static DWORD WINAPI IDirect3DRMDevice2Impl_GetAppData(IDirect3DRMDevice2* iface)
167 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
169 FIXME("(%p/%p)->(): stub\n", iface, This);
171 return 0;
174 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetName(IDirect3DRMDevice2* iface, LPCSTR name)
176 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
178 FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
180 return E_NOTIMPL;
183 static HRESULT WINAPI IDirect3DRMDevice2Impl_GetName(IDirect3DRMDevice2* iface,
184 LPDWORD size, LPSTR name)
186 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
188 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
190 return E_NOTIMPL;
193 static HRESULT WINAPI IDirect3DRMDevice2Impl_GetClassName(IDirect3DRMDevice2* iface,
194 LPDWORD size, LPSTR name)
196 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
198 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
200 return E_NOTIMPL;
203 /*** IDirect3DRMDevice methods ***/
204 static HRESULT WINAPI IDirect3DRMDevice2Impl_Init(IDirect3DRMDevice2* iface, ULONG width,
205 ULONG height)
207 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
209 TRACE("(%p/%p)->(%u, %u)\n", iface, This, width, height);
211 return IDirect3DRMDevice3_Init(&This->IDirect3DRMDevice3_iface, width, height);
214 /*** IDirect3DRMDevice2 methods ***/
215 static HRESULT WINAPI IDirect3DRMDevice2Impl_InitFromD3D(IDirect3DRMDevice2* iface,
216 LPDIRECT3D lpD3D,
217 LPDIRECT3DDEVICE lpD3DDev)
219 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
221 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, lpD3D, lpD3DDev);
223 return E_NOTIMPL;
226 static HRESULT WINAPI IDirect3DRMDevice2Impl_InitFromClipper(IDirect3DRMDevice2* iface,
227 LPDIRECTDRAWCLIPPER lpDDClipper,
228 LPGUID lpGUID, int width, int height)
230 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
232 TRACE("(%p/%p)->(%p, %p, %u, %u)\n", iface, This, lpDDClipper, lpGUID, width, height);
234 return IDirect3DRMDevice3_InitFromClipper(&This->IDirect3DRMDevice3_iface, lpDDClipper, lpGUID,
235 width, height);
238 static HRESULT WINAPI IDirect3DRMDevice2Impl_Update(IDirect3DRMDevice2* iface)
240 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
242 FIXME("(%p/%p)->(): stub\n", iface, This);
244 return E_NOTIMPL;
247 static HRESULT WINAPI IDirect3DRMDevice2Impl_AddUpdateCallback(IDirect3DRMDevice2* iface,
248 D3DRMUPDATECALLBACK cb, LPVOID arg)
250 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
252 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, arg);
254 return E_NOTIMPL;
257 static HRESULT WINAPI IDirect3DRMDevice2Impl_DeleteUpdateCallback(IDirect3DRMDevice2* iface,
258 D3DRMUPDATECALLBACK cb,
259 LPVOID arg)
261 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
263 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, arg);
265 return E_NOTIMPL;
268 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetBufferCount(IDirect3DRMDevice2* iface, DWORD count)
270 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
272 FIXME("(%p/%p)->(%u): stub\n", iface, This, count);
274 return E_NOTIMPL;
277 static DWORD WINAPI IDirect3DRMDevice2Impl_GetBufferCount(IDirect3DRMDevice2* iface)
279 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
281 FIXME("(%p/%p)->(): stub\n", iface, This);
283 return E_NOTIMPL;
286 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetDither(IDirect3DRMDevice2* iface, BOOL enable)
288 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
290 TRACE("(%p/%p)->(%d)\n", iface, This, enable);
292 return IDirect3DRMDevice3_SetDither(&This->IDirect3DRMDevice3_iface, enable);
295 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetShades(IDirect3DRMDevice2* iface, DWORD count)
297 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
299 FIXME("(%p/%p)->(%u): stub\n", iface, This, count);
301 return E_NOTIMPL;
304 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetQuality(IDirect3DRMDevice2* iface,
305 D3DRMRENDERQUALITY quality)
307 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
309 TRACE("(%p/%p)->(%u)\n", iface, This, quality);
311 return IDirect3DRMDevice3_SetQuality(&This->IDirect3DRMDevice3_iface, quality);
314 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetTextureQuality(IDirect3DRMDevice2* iface,
315 D3DRMTEXTUREQUALITY quality)
317 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
319 FIXME("(%p/%p)->(%u): stub\n", iface, This, quality);
321 return E_NOTIMPL;
324 static HRESULT WINAPI IDirect3DRMDevice2Impl_GetViewports(IDirect3DRMDevice2* iface,
325 LPDIRECT3DRMVIEWPORTARRAY *return_views)
327 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
329 FIXME("(%p/%p)->(%p): stub\n", iface, This, return_views);
331 return E_NOTIMPL;
334 static BOOL WINAPI IDirect3DRMDevice2Impl_GetDither(IDirect3DRMDevice2* iface)
336 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
338 TRACE("(%p/%p)->()\n", iface, This);
340 return IDirect3DRMDevice3_GetDither(&This->IDirect3DRMDevice3_iface);
343 static DWORD WINAPI IDirect3DRMDevice2Impl_GetShades(IDirect3DRMDevice2* iface)
345 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
347 FIXME("(%p/%p)->(): stub\n", iface, This);
349 return E_NOTIMPL;
352 static DWORD WINAPI IDirect3DRMDevice2Impl_GetHeight(IDirect3DRMDevice2* iface)
354 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
356 TRACE("(%p/%p)->()\n", iface, This);
358 return IDirect3DRMDevice3_GetHeight(&This->IDirect3DRMDevice3_iface);
361 static DWORD WINAPI IDirect3DRMDevice2Impl_GetWidth(IDirect3DRMDevice2* iface)
363 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
365 TRACE("(%p/%p)->()\n", iface, This);
367 return IDirect3DRMDevice3_GetWidth(&This->IDirect3DRMDevice3_iface);
370 static DWORD WINAPI IDirect3DRMDevice2Impl_GetTrianglesDrawn(IDirect3DRMDevice2* iface)
372 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
374 FIXME("(%p/%p)->(): stub\n", iface, This);
376 return E_NOTIMPL;
379 static DWORD WINAPI IDirect3DRMDevice2Impl_GetWireframeOptions(IDirect3DRMDevice2* iface)
381 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
383 FIXME("(%p/%p)->(): stub\n", iface, This);
385 return E_NOTIMPL;
388 static D3DRMRENDERQUALITY WINAPI IDirect3DRMDevice2Impl_GetQuality(IDirect3DRMDevice2* iface)
390 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
392 TRACE("(%p/%p)->()\n", iface, This);
394 return IDirect3DRMDevice3_GetQuality(&This->IDirect3DRMDevice3_iface);
397 static D3DCOLORMODEL WINAPI IDirect3DRMDevice2Impl_GetColorModel(IDirect3DRMDevice2* iface)
399 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
401 FIXME("(%p/%p)->(): stub\n", iface, This);
403 return E_NOTIMPL;
406 static D3DRMTEXTUREQUALITY WINAPI IDirect3DRMDevice2Impl_GetTextureQuality(IDirect3DRMDevice2* iface)
408 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
410 FIXME("(%p/%p)->(): stub\n", iface, This);
412 return E_NOTIMPL;
415 static HRESULT WINAPI IDirect3DRMDevice2Impl_GetDirect3DDevice(IDirect3DRMDevice2* iface,
416 LPDIRECT3DDEVICE * dev)
418 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
420 FIXME("(%p/%p)->(%p): stub\n", iface, This, dev);
422 return E_NOTIMPL;
425 static HRESULT WINAPI IDirect3DRMDevice2Impl_InitFromD3D2(IDirect3DRMDevice2* iface,
426 LPDIRECT3D2 lpD3D,
427 LPDIRECT3DDEVICE2 lpD3DDev)
429 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
431 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, lpD3D, lpD3DDev);
433 return E_NOTIMPL;
436 static HRESULT WINAPI IDirect3DRMDevice2Impl_InitFromSurface(IDirect3DRMDevice2* iface,
437 LPGUID lpGUID, LPDIRECTDRAW lpDD,
438 LPDIRECTDRAWSURFACE lpDDSBack)
440 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
442 FIXME("(%p/%p)->(%p, %p, %p): stub\n", iface, This, lpGUID, lpDD, lpDDSBack);
444 return E_NOTIMPL;
447 static HRESULT WINAPI IDirect3DRMDevice2Impl_SetRenderMode(IDirect3DRMDevice2* iface, DWORD dwFlags)
449 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
451 TRACE("(%p/%p)->(%u)\n", iface, This, dwFlags);
453 return IDirect3DRMDevice3_SetRenderMode(&This->IDirect3DRMDevice3_iface, dwFlags);
456 static DWORD WINAPI IDirect3DRMDevice2Impl_GetRenderMode(IDirect3DRMDevice2* iface)
458 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
460 TRACE("(%p/%p)->()\n", iface, This);
462 return IDirect3DRMDevice3_GetRenderMode(&This->IDirect3DRMDevice3_iface);
465 static HRESULT WINAPI IDirect3DRMDevice2Impl_GetDirect3DDevice2(IDirect3DRMDevice2* iface,
466 LPDIRECT3DDEVICE2 * dev)
468 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice2(iface);
470 FIXME("(%p/%p)->(%p): stub\n", iface, This, dev);
472 return E_NOTIMPL;
475 static const struct IDirect3DRMDevice2Vtbl Direct3DRMDevice2_Vtbl =
477 /*** IUnknown methods ***/
478 IDirect3DRMDevice2Impl_QueryInterface,
479 IDirect3DRMDevice2Impl_AddRef,
480 IDirect3DRMDevice2Impl_Release,
481 /*** IDirect3DRMObject methods ***/
482 IDirect3DRMDevice2Impl_Clone,
483 IDirect3DRMDevice2Impl_AddDestroyCallback,
484 IDirect3DRMDevice2Impl_DeleteDestroyCallback,
485 IDirect3DRMDevice2Impl_SetAppData,
486 IDirect3DRMDevice2Impl_GetAppData,
487 IDirect3DRMDevice2Impl_SetName,
488 IDirect3DRMDevice2Impl_GetName,
489 IDirect3DRMDevice2Impl_GetClassName,
490 /*** IDirect3DRMDevice methods ***/
491 IDirect3DRMDevice2Impl_Init,
492 IDirect3DRMDevice2Impl_InitFromD3D,
493 IDirect3DRMDevice2Impl_InitFromClipper,
494 IDirect3DRMDevice2Impl_Update,
495 IDirect3DRMDevice2Impl_AddUpdateCallback,
496 IDirect3DRMDevice2Impl_DeleteUpdateCallback,
497 IDirect3DRMDevice2Impl_SetBufferCount,
498 IDirect3DRMDevice2Impl_GetBufferCount,
499 IDirect3DRMDevice2Impl_SetDither,
500 IDirect3DRMDevice2Impl_SetShades,
501 IDirect3DRMDevice2Impl_SetQuality,
502 IDirect3DRMDevice2Impl_SetTextureQuality,
503 IDirect3DRMDevice2Impl_GetViewports,
504 IDirect3DRMDevice2Impl_GetDither,
505 IDirect3DRMDevice2Impl_GetShades,
506 IDirect3DRMDevice2Impl_GetHeight,
507 IDirect3DRMDevice2Impl_GetWidth,
508 IDirect3DRMDevice2Impl_GetTrianglesDrawn,
509 IDirect3DRMDevice2Impl_GetWireframeOptions,
510 IDirect3DRMDevice2Impl_GetQuality,
511 IDirect3DRMDevice2Impl_GetColorModel,
512 IDirect3DRMDevice2Impl_GetTextureQuality,
513 IDirect3DRMDevice2Impl_GetDirect3DDevice,
514 /*** IDirect3DRMDevice2 methods ***/
515 IDirect3DRMDevice2Impl_InitFromD3D2,
516 IDirect3DRMDevice2Impl_InitFromSurface,
517 IDirect3DRMDevice2Impl_SetRenderMode,
518 IDirect3DRMDevice2Impl_GetRenderMode,
519 IDirect3DRMDevice2Impl_GetDirect3DDevice2
523 /*** IUnknown methods ***/
524 static HRESULT WINAPI IDirect3DRMDevice3Impl_QueryInterface(IDirect3DRMDevice3* iface,
525 REFIID riid, void** object)
527 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
528 return IDirect3DRMDevice2_QueryInterface(&This->IDirect3DRMDevice2_iface, riid, object);
531 static ULONG WINAPI IDirect3DRMDevice3Impl_AddRef(IDirect3DRMDevice3* iface)
533 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
534 return IDirect3DRMDevice2_AddRef(&This->IDirect3DRMDevice2_iface);
537 static ULONG WINAPI IDirect3DRMDevice3Impl_Release(IDirect3DRMDevice3* iface)
539 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
540 return IDirect3DRMDevice2_Release(&This->IDirect3DRMDevice2_iface);
543 /*** IDirect3DRMObject methods ***/
544 static HRESULT WINAPI IDirect3DRMDevice3Impl_Clone(IDirect3DRMDevice3* iface,
545 LPUNKNOWN unkwn, REFIID riid,
546 LPVOID* object)
548 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
550 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
552 return E_NOTIMPL;
555 static HRESULT WINAPI IDirect3DRMDevice3Impl_AddDestroyCallback(IDirect3DRMDevice3* iface,
556 D3DRMOBJECTCALLBACK cb,
557 LPVOID argument)
559 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
561 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
563 return E_NOTIMPL;
566 static HRESULT WINAPI IDirect3DRMDevice3Impl_DeleteDestroyCallback(IDirect3DRMDevice3* iface,
567 D3DRMOBJECTCALLBACK cb,
568 LPVOID argument)
570 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
572 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
574 return E_NOTIMPL;
577 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetAppData(IDirect3DRMDevice3* iface,
578 DWORD data)
580 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
582 FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
584 return E_NOTIMPL;
587 static DWORD WINAPI IDirect3DRMDevice3Impl_GetAppData(IDirect3DRMDevice3* iface)
589 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
591 FIXME("(%p/%p)->(): stub\n", iface, This);
593 return 0;
596 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetName(IDirect3DRMDevice3* iface, LPCSTR name)
598 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
600 FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
602 return E_NOTIMPL;
605 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetName(IDirect3DRMDevice3* iface,
606 LPDWORD size, LPSTR name)
608 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
610 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
612 return E_NOTIMPL;
615 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetClassName(IDirect3DRMDevice3* iface,
616 LPDWORD size, LPSTR name)
618 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
620 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
622 return E_NOTIMPL;
625 /*** IDirect3DRMDevice methods ***/
626 static HRESULT WINAPI IDirect3DRMDevice3Impl_Init(IDirect3DRMDevice3* iface, ULONG width,
627 ULONG height)
629 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
631 FIXME("(%p/%p)->(%u, %u): stub\n", iface, This, width, height);
633 This->height = height;
634 This->width = width;
636 return D3DRM_OK;
639 static HRESULT WINAPI IDirect3DRMDevice3Impl_InitFromD3D(IDirect3DRMDevice3* iface,
640 LPDIRECT3D lpD3D,
641 LPDIRECT3DDEVICE lpD3DDev)
643 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
645 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, lpD3D, lpD3DDev);
647 return E_NOTIMPL;
650 static HRESULT WINAPI IDirect3DRMDevice3Impl_InitFromClipper(IDirect3DRMDevice3* iface,
651 LPDIRECTDRAWCLIPPER lpDDClipper,
652 LPGUID lpGUID, int width, int height)
654 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
656 FIXME("(%p/%p)->(%p, %p, %u, %u): stub\n", iface, This, lpDDClipper, lpGUID, width, height);
658 This->height = height;
659 This->width = width;
661 return D3DRM_OK;
664 static HRESULT WINAPI IDirect3DRMDevice3Impl_Update(IDirect3DRMDevice3* iface)
666 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
668 FIXME("(%p/%p)->(): stub\n", iface, This);
670 return E_NOTIMPL;
673 static HRESULT WINAPI IDirect3DRMDevice3Impl_AddUpdateCallback(IDirect3DRMDevice3* iface,
674 D3DRMUPDATECALLBACK cb, LPVOID arg)
676 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
678 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, arg);
680 return E_NOTIMPL;
683 static HRESULT WINAPI IDirect3DRMDevice3Impl_DeleteUpdateCallback(IDirect3DRMDevice3* iface,
684 D3DRMUPDATECALLBACK cb,
685 LPVOID arg)
687 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
689 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, arg);
691 return E_NOTIMPL;
694 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetBufferCount(IDirect3DRMDevice3* iface, DWORD count)
696 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
698 FIXME("(%p/%p)->(%u): stub\n", iface, This, count);
700 return E_NOTIMPL;
703 static DWORD WINAPI IDirect3DRMDevice3Impl_GetBufferCount(IDirect3DRMDevice3* iface)
705 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
707 FIXME("(%p/%p)->(): stub\n", iface, This);
709 return E_NOTIMPL;
712 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetDither(IDirect3DRMDevice3* iface, BOOL enable)
714 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
716 TRACE("(%p/%p)->(%d)\n", iface, This, enable);
718 This->dither = enable;
720 return D3DRM_OK;
723 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetShades(IDirect3DRMDevice3* iface, DWORD count)
725 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
727 FIXME("(%p/%p)->(%u): stub\n", iface, This, count);
729 return E_NOTIMPL;
732 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetQuality(IDirect3DRMDevice3* iface,
733 D3DRMRENDERQUALITY quality)
735 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
737 TRACE("(%p/%p)->(%u)\n", iface, This, quality);
739 This->quality = quality;
741 return D3DRM_OK;
744 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetTextureQuality(IDirect3DRMDevice3* iface,
745 D3DRMTEXTUREQUALITY quality)
747 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
749 FIXME("(%p/%p)->(%u): stub\n", iface, This, quality);
751 return E_NOTIMPL;
754 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetViewports(IDirect3DRMDevice3* iface,
755 LPDIRECT3DRMVIEWPORTARRAY *return_views)
757 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
759 FIXME("(%p/%p)->(%p): stub\n", iface, This, return_views);
761 return E_NOTIMPL;
764 static BOOL WINAPI IDirect3DRMDevice3Impl_GetDither(IDirect3DRMDevice3* iface)
766 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
768 TRACE("(%p/%p)->()\n", iface, This);
770 return This->dither;
773 static DWORD WINAPI IDirect3DRMDevice3Impl_GetShades(IDirect3DRMDevice3* iface)
775 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
777 FIXME("(%p/%p)->(): stub\n", iface, This);
779 return E_NOTIMPL;
782 static DWORD WINAPI IDirect3DRMDevice3Impl_GetHeight(IDirect3DRMDevice3* iface)
784 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
786 TRACE("(%p/%p)->()\n", iface, This);
788 return This->height;
791 static DWORD WINAPI IDirect3DRMDevice3Impl_GetWidth(IDirect3DRMDevice3* iface)
793 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
795 TRACE("(%p/%p)->()\n", iface, This);
797 return This->width;
800 static DWORD WINAPI IDirect3DRMDevice3Impl_GetTrianglesDrawn(IDirect3DRMDevice3* iface)
802 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
804 FIXME("(%p/%p)->(): stub\n", iface, This);
806 return E_NOTIMPL;
809 static DWORD WINAPI IDirect3DRMDevice3Impl_GetWireframeOptions(IDirect3DRMDevice3* iface)
811 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
813 FIXME("(%p/%p)->(): stub\n", iface, This);
815 return E_NOTIMPL;
818 static D3DRMRENDERQUALITY WINAPI IDirect3DRMDevice3Impl_GetQuality(IDirect3DRMDevice3* iface)
820 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
822 TRACE("(%p/%p)->()\n", iface, This);
824 return This->quality;
827 static D3DCOLORMODEL WINAPI IDirect3DRMDevice3Impl_GetColorModel(IDirect3DRMDevice3* iface)
829 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
831 FIXME("(%p/%p)->(): stub\n", iface, This);
833 return E_NOTIMPL;
836 static D3DRMTEXTUREQUALITY WINAPI IDirect3DRMDevice3Impl_GetTextureQuality(IDirect3DRMDevice3* iface)
838 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
840 FIXME("(%p/%p)->(): stub\n", iface, This);
842 return E_NOTIMPL;
845 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetDirect3DDevice(IDirect3DRMDevice3* iface,
846 LPDIRECT3DDEVICE * dev)
848 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
850 FIXME("(%p/%p)->(%p): stub\n", iface, This, dev);
852 return E_NOTIMPL;
855 /*** IDirect3DRMDevice2 methods ***/
856 static HRESULT WINAPI IDirect3DRMDevice3Impl_InitFromD3D2(IDirect3DRMDevice3* iface,
857 LPDIRECT3D2 lpD3D,
858 LPDIRECT3DDEVICE2 lpD3DDev)
860 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
862 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, lpD3D, lpD3DDev);
864 return E_NOTIMPL;
867 static HRESULT WINAPI IDirect3DRMDevice3Impl_InitFromSurface(IDirect3DRMDevice3* iface,
868 LPGUID lpGUID, LPDIRECTDRAW lpDD,
869 LPDIRECTDRAWSURFACE lpDDSBack)
871 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
873 FIXME("(%p/%p)->(%p, %p, %p): stub\n", iface, This, lpGUID, lpDD, lpDDSBack);
875 return E_NOTIMPL;
878 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetRenderMode(IDirect3DRMDevice3* iface, DWORD dwFlags)
880 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
882 TRACE("(%p/%p)->(%u)\n", iface, This, dwFlags);
884 This->rendermode = dwFlags;
886 return D3DRM_OK;
889 static DWORD WINAPI IDirect3DRMDevice3Impl_GetRenderMode(IDirect3DRMDevice3* iface)
891 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
893 TRACE("(%p/%p)->()\n", iface, This);
895 return This->rendermode;
898 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetDirect3DDevice2(IDirect3DRMDevice3* iface,
899 LPDIRECT3DDEVICE2 * dev)
901 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
903 FIXME("(%p/%p)->(%p): stub\n", iface, This, dev);
905 return E_NOTIMPL;
908 /*** IDirect3DRMDevice3 methods ***/
909 static HRESULT WINAPI IDirect3DRMDevice3Impl_FindPreferredTextureFormat(IDirect3DRMDevice3* iface,
910 DWORD bitdepths,
911 DWORD flags,
912 LPDDPIXELFORMAT lpDDPF)
914 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
916 FIXME("(%p/%p)->(%u, %u, %p): stub\n", iface, This, bitdepths, flags, lpDDPF);
918 return E_NOTIMPL;
921 static HRESULT WINAPI IDirect3DRMDevice3Impl_RenderStateChange(IDirect3DRMDevice3* iface,
922 D3DRENDERSTATETYPE type, DWORD val,
923 DWORD flags)
925 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
927 FIXME("(%p/%p)->(%u, %u, %u): stub\n", iface, This, type, val, flags);
929 return E_NOTIMPL;
932 static HRESULT WINAPI IDirect3DRMDevice3Impl_LightStateChange(IDirect3DRMDevice3* iface,
933 D3DLIGHTSTATETYPE type, DWORD val,
934 DWORD flags)
936 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
938 FIXME("(%p/%p)->(%u, %u, %u): stub\n", iface, This, type, val, flags);
940 return E_NOTIMPL;
943 static HRESULT WINAPI IDirect3DRMDevice3Impl_GetStateChangeOptions(IDirect3DRMDevice3* iface,
944 DWORD stateclass, DWORD statenum,
945 LPDWORD flags)
947 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
949 FIXME("(%p/%p)->(%u, %u, %p): stub\n", iface, This, stateclass, statenum, flags);
951 return E_NOTIMPL;
954 static HRESULT WINAPI IDirect3DRMDevice3Impl_SetStateChangeOptions(IDirect3DRMDevice3* iface,
955 DWORD stateclass, DWORD statenum,
956 DWORD flags)
958 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMDevice3(iface);
960 FIXME("(%p/%p)->(%u, %u, %u): stub\n", iface, This, stateclass, statenum, flags);
962 return E_NOTIMPL;
965 static const struct IDirect3DRMDevice3Vtbl Direct3DRMDevice3_Vtbl =
967 /*** IUnknown methods ***/
968 IDirect3DRMDevice3Impl_QueryInterface,
969 IDirect3DRMDevice3Impl_AddRef,
970 IDirect3DRMDevice3Impl_Release,
971 /*** IDirect3DRMObject methods ***/
972 IDirect3DRMDevice3Impl_Clone,
973 IDirect3DRMDevice3Impl_AddDestroyCallback,
974 IDirect3DRMDevice3Impl_DeleteDestroyCallback,
975 IDirect3DRMDevice3Impl_SetAppData,
976 IDirect3DRMDevice3Impl_GetAppData,
977 IDirect3DRMDevice3Impl_SetName,
978 IDirect3DRMDevice3Impl_GetName,
979 IDirect3DRMDevice3Impl_GetClassName,
980 /*** IDirect3DRMDevice methods ***/
981 IDirect3DRMDevice3Impl_Init,
982 IDirect3DRMDevice3Impl_InitFromD3D,
983 IDirect3DRMDevice3Impl_InitFromClipper,
984 IDirect3DRMDevice3Impl_Update,
985 IDirect3DRMDevice3Impl_AddUpdateCallback,
986 IDirect3DRMDevice3Impl_DeleteUpdateCallback,
987 IDirect3DRMDevice3Impl_SetBufferCount,
988 IDirect3DRMDevice3Impl_GetBufferCount,
989 IDirect3DRMDevice3Impl_SetDither,
990 IDirect3DRMDevice3Impl_SetShades,
991 IDirect3DRMDevice3Impl_SetQuality,
992 IDirect3DRMDevice3Impl_SetTextureQuality,
993 IDirect3DRMDevice3Impl_GetViewports,
994 IDirect3DRMDevice3Impl_GetDither,
995 IDirect3DRMDevice3Impl_GetShades,
996 IDirect3DRMDevice3Impl_GetHeight,
997 IDirect3DRMDevice3Impl_GetWidth,
998 IDirect3DRMDevice3Impl_GetTrianglesDrawn,
999 IDirect3DRMDevice3Impl_GetWireframeOptions,
1000 IDirect3DRMDevice3Impl_GetQuality,
1001 IDirect3DRMDevice3Impl_GetColorModel,
1002 IDirect3DRMDevice3Impl_GetTextureQuality,
1003 IDirect3DRMDevice3Impl_GetDirect3DDevice,
1004 /*** IDirect3DRMDevice2 methods ***/
1005 IDirect3DRMDevice3Impl_InitFromD3D2,
1006 IDirect3DRMDevice3Impl_InitFromSurface,
1007 IDirect3DRMDevice3Impl_SetRenderMode,
1008 IDirect3DRMDevice3Impl_GetRenderMode,
1009 IDirect3DRMDevice3Impl_GetDirect3DDevice2,
1010 /*** IDirect3DRMDevice3 methods ***/
1011 IDirect3DRMDevice3Impl_FindPreferredTextureFormat,
1012 IDirect3DRMDevice3Impl_RenderStateChange,
1013 IDirect3DRMDevice3Impl_LightStateChange,
1014 IDirect3DRMDevice3Impl_GetStateChangeOptions,
1015 IDirect3DRMDevice3Impl_SetStateChangeOptions
1019 /*** IUnknown methods ***/
1020 static HRESULT WINAPI IDirect3DRMWinDeviceImpl_QueryInterface(IDirect3DRMWinDevice* iface,
1021 REFIID riid, void** object)
1023 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1024 return IDirect3DRMDevice2_QueryInterface(&This->IDirect3DRMDevice2_iface, riid, object);
1027 static ULONG WINAPI IDirect3DRMWinDeviceImpl_AddRef(IDirect3DRMWinDevice* iface)
1029 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1030 return IDirect3DRMDevice2_AddRef(&This->IDirect3DRMDevice2_iface);
1033 static ULONG WINAPI IDirect3DRMWinDeviceImpl_Release(IDirect3DRMWinDevice* iface)
1035 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1036 return IDirect3DRMDevice2_Release(&This->IDirect3DRMDevice2_iface);
1039 /*** IDirect3DRMObject methods ***/
1040 static HRESULT WINAPI IDirect3DRMWinDeviceImpl_Clone(IDirect3DRMWinDevice* iface,
1041 LPUNKNOWN unkwn, REFIID riid,
1042 LPVOID* object)
1044 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1046 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
1048 return E_NOTIMPL;
1051 static HRESULT WINAPI IDirect3DRMWinDeviceImpl_AddDestroyCallback(IDirect3DRMWinDevice* iface,
1052 D3DRMOBJECTCALLBACK cb,
1053 LPVOID argument)
1055 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1057 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
1059 return E_NOTIMPL;
1062 static HRESULT WINAPI IDirect3DRMWinDeviceImpl_DeleteDestroyCallback(IDirect3DRMWinDevice* iface,
1063 D3DRMOBJECTCALLBACK cb,
1064 LPVOID argument)
1066 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1068 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
1070 return E_NOTIMPL;
1073 static HRESULT WINAPI IDirect3DRMWinDeviceImpl_SetAppData(IDirect3DRMWinDevice* iface,
1074 DWORD data)
1076 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1078 FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
1080 return E_NOTIMPL;
1083 static DWORD WINAPI IDirect3DRMWinDeviceImpl_GetAppData(IDirect3DRMWinDevice* iface)
1085 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1087 FIXME("(%p/%p)->(): stub\n", iface, This);
1089 return 0;
1092 static HRESULT WINAPI IDirect3DRMWinDeviceImpl_SetName(IDirect3DRMWinDevice* iface, LPCSTR name)
1094 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1096 FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
1098 return E_NOTIMPL;
1101 static HRESULT WINAPI IDirect3DRMWinDeviceImpl_GetName(IDirect3DRMWinDevice* iface,
1102 LPDWORD size, LPSTR name)
1104 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1106 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
1108 return E_NOTIMPL;
1111 static HRESULT WINAPI IDirect3DRMWinDeviceImpl_GetClassName(IDirect3DRMWinDevice* iface,
1112 LPDWORD size, LPSTR name)
1114 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1116 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
1118 return E_NOTIMPL;
1121 /*** IDirect3DRMWinDevice methods ***/
1122 static HRESULT WINAPI IDirect3DRMWinDeviceImpl_HandlePaint(IDirect3DRMWinDevice* iface, HDC hdc)
1124 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1126 FIXME("(%p/%p)->(%p): stub\n", iface, This, hdc);
1128 return E_NOTIMPL;
1131 static HRESULT WINAPI IDirect3DRMWinDeviceImpl_HandleActivate(IDirect3DRMWinDevice* iface, WORD wparam)
1133 IDirect3DRMDeviceImpl *This = impl_from_IDirect3DRMWinDevice(iface);
1135 FIXME("(%p/%p)->(%u): stub\n", iface, This, wparam);
1137 return E_NOTIMPL;
1140 static const struct IDirect3DRMWinDeviceVtbl Direct3DRMWinDevice_Vtbl =
1142 /*** IUnknown methods ***/
1143 IDirect3DRMWinDeviceImpl_QueryInterface,
1144 IDirect3DRMWinDeviceImpl_AddRef,
1145 IDirect3DRMWinDeviceImpl_Release,
1146 /*** IDirect3DRMObject methods ***/
1147 IDirect3DRMWinDeviceImpl_Clone,
1148 IDirect3DRMWinDeviceImpl_AddDestroyCallback,
1149 IDirect3DRMWinDeviceImpl_DeleteDestroyCallback,
1150 IDirect3DRMWinDeviceImpl_SetAppData,
1151 IDirect3DRMWinDeviceImpl_GetAppData,
1152 IDirect3DRMWinDeviceImpl_SetName,
1153 IDirect3DRMWinDeviceImpl_GetName,
1154 IDirect3DRMWinDeviceImpl_GetClassName,
1155 /*** IDirect3DRMWinDevice methods ***/
1156 IDirect3DRMWinDeviceImpl_HandlePaint,
1157 IDirect3DRMWinDeviceImpl_HandleActivate
1160 HRESULT Direct3DRMDevice_create(REFIID riid, IUnknown** ppObj)
1162 IDirect3DRMDeviceImpl* object;
1164 TRACE("(%p)\n", ppObj);
1166 object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMDeviceImpl));
1167 if (!object)
1169 ERR("Out of memory\n");
1170 return E_OUTOFMEMORY;
1173 object->IDirect3DRMDevice2_iface.lpVtbl = &Direct3DRMDevice2_Vtbl;
1174 object->IDirect3DRMDevice3_iface.lpVtbl = &Direct3DRMDevice3_Vtbl;
1175 object->IDirect3DRMWinDevice_iface.lpVtbl = &Direct3DRMWinDevice_Vtbl;
1176 object->ref = 1;
1178 if (IsEqualGUID(riid, &IID_IDirect3DRMFrame3))
1179 *ppObj = (IUnknown*)&object->IDirect3DRMDevice3_iface;
1180 else
1181 *ppObj = (IUnknown*)&object->IDirect3DRMDevice2_iface;
1183 return S_OK;