d3drm: Implement IDirect3DRMViewportX_[Get|Set]Back.
[wine/multimedia.git] / dlls / d3drm / viewport.c
blobd3738ae3923a282364bb085f7ddf2801c4785e37
1 /*
2 * Implementation of IDirect3DRMViewport Interface
4 * Copyright 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 IDirect3DRMViewport IDirect3DRMViewport_iface;
37 IDirect3DRMViewport2 IDirect3DRMViewport2_iface;
38 LONG ref;
39 D3DVALUE back;
40 } IDirect3DRMViewportImpl;
42 static inline IDirect3DRMViewportImpl *impl_from_IDirect3DRMViewport(IDirect3DRMViewport *iface)
44 return CONTAINING_RECORD(iface, IDirect3DRMViewportImpl, IDirect3DRMViewport_iface);
47 static inline IDirect3DRMViewportImpl *impl_from_IDirect3DRMViewport2(IDirect3DRMViewport2 *iface)
49 return CONTAINING_RECORD(iface, IDirect3DRMViewportImpl, IDirect3DRMViewport2_iface);
52 /*** IUnknown methods ***/
53 static HRESULT WINAPI IDirect3DRMViewportImpl_QueryInterface(IDirect3DRMViewport* iface,
54 REFIID riid, void** object)
56 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
58 TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), object);
60 *object = NULL;
62 if (IsEqualGUID(riid, &IID_IUnknown) ||
63 IsEqualGUID(riid, &IID_IDirect3DRMViewport))
65 *object = &This->IDirect3DRMViewport_iface;
67 else if(IsEqualGUID(riid, &IID_IDirect3DRMViewport2))
69 *object = &This->IDirect3DRMViewport2_iface;
71 else
73 FIXME("interface %s not implemented\n", debugstr_guid(riid));
74 return E_NOINTERFACE;
77 IDirect3DRMViewport_AddRef(iface);
78 return S_OK;
81 static ULONG WINAPI IDirect3DRMViewportImpl_AddRef(IDirect3DRMViewport* iface)
83 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
84 ULONG ref = InterlockedIncrement(&This->ref);
86 TRACE("(%p)->(): new ref = %d\n", This, ref);
88 return ref;
91 static ULONG WINAPI IDirect3DRMViewportImpl_Release(IDirect3DRMViewport* iface)
93 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
94 ULONG ref = InterlockedDecrement(&This->ref);
96 TRACE("(%p)->(): new ref = %d\n", This, ref);
98 if (!ref)
99 HeapFree(GetProcessHeap(), 0, This);
101 return ref;
104 /*** IDirect3DRMObject methods ***/
105 static HRESULT WINAPI IDirect3DRMViewportImpl_Clone(IDirect3DRMViewport* iface,
106 LPUNKNOWN unkwn, REFIID riid,
107 LPVOID* object)
109 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
111 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
113 return E_NOTIMPL;
116 static HRESULT WINAPI IDirect3DRMViewportImpl_AddDestroyCallback(IDirect3DRMViewport* iface,
117 D3DRMOBJECTCALLBACK cb,
118 LPVOID argument)
120 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
122 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
124 return E_NOTIMPL;
127 static HRESULT WINAPI IDirect3DRMViewportImpl_DeleteDestroyCallback(IDirect3DRMViewport* iface,
128 D3DRMOBJECTCALLBACK cb,
129 LPVOID argument)
131 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
133 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
135 return E_NOTIMPL;
138 static HRESULT WINAPI IDirect3DRMViewportImpl_SetAppData(IDirect3DRMViewport* iface,
139 DWORD data)
141 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
143 FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
145 return E_NOTIMPL;
148 static DWORD WINAPI IDirect3DRMViewportImpl_GetAppData(IDirect3DRMViewport* iface)
150 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
152 FIXME("(%p/%p)->(): stub\n", iface, This);
154 return 0;
157 static HRESULT WINAPI IDirect3DRMViewportImpl_SetName(IDirect3DRMViewport* iface, LPCSTR name)
159 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
161 FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
163 return E_NOTIMPL;
166 static HRESULT WINAPI IDirect3DRMViewportImpl_GetName(IDirect3DRMViewport* iface,
167 LPDWORD size, LPSTR name)
169 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
171 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
173 return E_NOTIMPL;
176 static HRESULT WINAPI IDirect3DRMViewportImpl_GetClassName(IDirect3DRMViewport* iface,
177 LPDWORD size, LPSTR name)
179 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
181 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
183 return E_NOTIMPL;
186 /*** IDirect3DRMViewport methods ***/
187 static HRESULT WINAPI IDirect3DRMViewportImpl_Init(IDirect3DRMViewport* iface,
188 LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMFRAME camera,
189 DWORD xpos, DWORD ypos,
190 DWORD width, DWORD height)
192 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
194 FIXME("(%p/%p)->(%p, %p, %u, %u, %u, %u): stub\n", iface, This, dev, camera,
195 xpos, ypos, width, height);
197 return E_NOTIMPL;
200 static HRESULT WINAPI IDirect3DRMViewportImpl_Clear(IDirect3DRMViewport* iface)
202 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
204 FIXME("(%p/%p)->(): stub\n", iface, This);
206 return E_NOTIMPL;
209 static HRESULT WINAPI IDirect3DRMViewportImpl_Render(IDirect3DRMViewport* iface,
210 LPDIRECT3DRMFRAME frame)
212 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
214 FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
216 return E_NOTIMPL;
219 static HRESULT WINAPI IDirect3DRMViewportImpl_SetFront(IDirect3DRMViewport* iface, D3DVALUE front)
221 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
223 FIXME("(%p/%p)->(%f): stub\n", iface, This, front);
225 return E_NOTIMPL;
228 static HRESULT WINAPI IDirect3DRMViewportImpl_SetBack(IDirect3DRMViewport* iface, D3DVALUE back)
230 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
232 TRACE("(%p/%p)->(%f)\n", iface, This, back);
234 return IDirect3DRMViewport2_SetBack(&This->IDirect3DRMViewport2_iface, back);
237 static HRESULT WINAPI IDirect3DRMViewportImpl_SetField(IDirect3DRMViewport* iface, D3DVALUE field)
239 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
241 FIXME("(%p/%p)->(%f): stub\n", iface, This, field);
243 return E_NOTIMPL;
246 static HRESULT WINAPI IDirect3DRMViewportImpl_SetUniformScaling(IDirect3DRMViewport* iface, BOOL b)
248 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
250 FIXME("(%p/%p)->(%d): stub\n", iface, This, b);
252 return E_NOTIMPL;
255 static HRESULT WINAPI IDirect3DRMViewportImpl_SetCamera(IDirect3DRMViewport* iface,
256 LPDIRECT3DRMFRAME frame)
258 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
260 FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
262 return E_NOTIMPL;
265 static HRESULT WINAPI IDirect3DRMViewportImpl_SetProjection(IDirect3DRMViewport* iface,
266 D3DRMPROJECTIONTYPE type)
268 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
270 FIXME("(%p/%p)->(%u): stub\n", iface, This, type);
272 return S_OK;
275 static HRESULT WINAPI IDirect3DRMViewportImpl_Transform(IDirect3DRMViewport* iface,
276 D3DRMVECTOR4D *d, D3DVECTOR *s)
278 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
280 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, d, s);
282 return E_NOTIMPL;
285 static HRESULT WINAPI IDirect3DRMViewportImpl_InverseTransform(IDirect3DRMViewport* iface,
286 D3DVECTOR *d, D3DRMVECTOR4D *s)
288 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
290 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, d, s);
292 return E_NOTIMPL;
295 static HRESULT WINAPI IDirect3DRMViewportImpl_Configure(IDirect3DRMViewport* iface, LONG x, LONG y,
296 DWORD width, DWORD height)
298 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
300 FIXME("(%p/%p)->(%u, %u, %u, %u): stub\n", iface, This, x, y, width, height);
302 return E_NOTIMPL;
305 static HRESULT WINAPI IDirect3DRMViewportImpl_ForceUpdate(IDirect3DRMViewport* iface,
306 DWORD x1, DWORD y1, DWORD x2, DWORD y2)
308 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
310 FIXME("(%p/%p)->(%u, %u, %u, %u): stub\n", iface, This, x1, y1, x2, y2);
312 return E_NOTIMPL;
315 static HRESULT WINAPI IDirect3DRMViewportImpl_SetPlane(IDirect3DRMViewport* iface,
316 D3DVALUE left, D3DVALUE right,
317 D3DVALUE bottom, D3DVALUE top)
319 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
321 FIXME("(%p/%p)->(%f, %f, %f, %f): stub\n", iface, This, left, right, bottom, top);
323 return E_NOTIMPL;
326 static HRESULT WINAPI IDirect3DRMViewportImpl_GetCamera(IDirect3DRMViewport* iface,
327 LPDIRECT3DRMFRAME * frame)
329 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
331 FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
333 return E_NOTIMPL;
336 static HRESULT WINAPI IDirect3DRMViewportImpl_GetDevice(IDirect3DRMViewport* iface,
337 LPDIRECT3DRMDEVICE * device)
339 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
341 FIXME("(%p/%p)->(%p): stub\n", iface, This, device);
343 return E_NOTIMPL;
346 static HRESULT WINAPI IDirect3DRMViewportImpl_GetPlane(IDirect3DRMViewport* iface,
347 D3DVALUE *left, D3DVALUE *right,
348 D3DVALUE *bottom, D3DVALUE *top)
350 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
352 FIXME("(%p/%p)->(%p, %p, %p, %p): stub\n", iface, This, left, right, bottom, top);
354 return E_NOTIMPL;
357 static HRESULT WINAPI IDirect3DRMViewportImpl_Pick(IDirect3DRMViewport* iface, LONG x, LONG y,
358 LPDIRECT3DRMPICKEDARRAY *return_visuals)
360 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
362 FIXME("(%p/%p)->(%u, %u, %p): stub\n", iface, This, x, y, return_visuals);
364 return E_NOTIMPL;
367 static BOOL WINAPI IDirect3DRMViewportImpl_GetUniformScaling(IDirect3DRMViewport* iface)
369 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
371 FIXME("(%p/%p)->(): stub\n", iface, This);
373 return E_NOTIMPL;
376 static LONG WINAPI IDirect3DRMViewportImpl_GetX(IDirect3DRMViewport* iface)
378 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
380 FIXME("(%p/%p)->(): stub\n", iface, This);
382 return E_NOTIMPL;
385 static LONG WINAPI IDirect3DRMViewportImpl_GetY(IDirect3DRMViewport* iface)
387 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
389 FIXME("(%p/%p)->(): stub\n", iface, This);
391 return E_NOTIMPL;
394 static DWORD WINAPI IDirect3DRMViewportImpl_GetWidth(IDirect3DRMViewport* iface)
396 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
398 FIXME("(%p/%p)->(): stub\n", iface, This);
400 return E_NOTIMPL;
403 static DWORD WINAPI IDirect3DRMViewportImpl_GetHeight(IDirect3DRMViewport* iface)
405 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
407 FIXME("(%p/%p)->(): stub\n", iface, This);
409 return E_NOTIMPL;
412 static D3DVALUE WINAPI IDirect3DRMViewportImpl_GetField(IDirect3DRMViewport* iface)
414 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
416 FIXME("(%p/%p)->(): stub\n", iface, This);
418 return E_NOTIMPL;
421 static D3DVALUE WINAPI IDirect3DRMViewportImpl_GetBack(IDirect3DRMViewport* iface)
423 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
425 TRACE("(%p/%p)->()\n", iface, This);
427 return IDirect3DRMViewport2_GetBack(&This->IDirect3DRMViewport2_iface);
430 static D3DVALUE WINAPI IDirect3DRMViewportImpl_GetFront(IDirect3DRMViewport* iface)
432 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
434 FIXME("(%p/%p)->(): stub\n", iface, This);
436 return E_NOTIMPL;
439 static D3DRMPROJECTIONTYPE WINAPI IDirect3DRMViewportImpl_GetProjection(IDirect3DRMViewport* iface)
441 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
443 FIXME("(%p/%p)->(): stub\n", iface, This);
445 return E_NOTIMPL;
448 static HRESULT WINAPI IDirect3DRMViewportImpl_GetDirect3DViewport(IDirect3DRMViewport* iface,
449 LPDIRECT3DVIEWPORT * viewport)
451 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
453 FIXME("(%p/%p)->(%p): stub\n", iface, This, This);
455 return E_NOTIMPL;
458 static const struct IDirect3DRMViewportVtbl Direct3DRMViewport_Vtbl =
460 /*** IUnknown methods ***/
461 IDirect3DRMViewportImpl_QueryInterface,
462 IDirect3DRMViewportImpl_AddRef,
463 IDirect3DRMViewportImpl_Release,
464 /*** IDirect3DRMObject methods ***/
465 IDirect3DRMViewportImpl_Clone,
466 IDirect3DRMViewportImpl_AddDestroyCallback,
467 IDirect3DRMViewportImpl_DeleteDestroyCallback,
468 IDirect3DRMViewportImpl_SetAppData,
469 IDirect3DRMViewportImpl_GetAppData,
470 IDirect3DRMViewportImpl_SetName,
471 IDirect3DRMViewportImpl_GetName,
472 IDirect3DRMViewportImpl_GetClassName,
473 /*** IDirect3DRMViewport methods ***/
474 IDirect3DRMViewportImpl_Init,
475 IDirect3DRMViewportImpl_Clear,
476 IDirect3DRMViewportImpl_Render,
477 IDirect3DRMViewportImpl_SetFront,
478 IDirect3DRMViewportImpl_SetBack,
479 IDirect3DRMViewportImpl_SetField,
480 IDirect3DRMViewportImpl_SetUniformScaling,
481 IDirect3DRMViewportImpl_SetCamera,
482 IDirect3DRMViewportImpl_SetProjection,
483 IDirect3DRMViewportImpl_Transform,
484 IDirect3DRMViewportImpl_InverseTransform,
485 IDirect3DRMViewportImpl_Configure,
486 IDirect3DRMViewportImpl_ForceUpdate,
487 IDirect3DRMViewportImpl_SetPlane,
488 IDirect3DRMViewportImpl_GetCamera,
489 IDirect3DRMViewportImpl_GetDevice,
490 IDirect3DRMViewportImpl_GetPlane,
491 IDirect3DRMViewportImpl_Pick,
492 IDirect3DRMViewportImpl_GetUniformScaling,
493 IDirect3DRMViewportImpl_GetX,
494 IDirect3DRMViewportImpl_GetY,
495 IDirect3DRMViewportImpl_GetWidth,
496 IDirect3DRMViewportImpl_GetHeight,
497 IDirect3DRMViewportImpl_GetField,
498 IDirect3DRMViewportImpl_GetBack,
499 IDirect3DRMViewportImpl_GetFront,
500 IDirect3DRMViewportImpl_GetProjection,
501 IDirect3DRMViewportImpl_GetDirect3DViewport
505 /*** IUnknown methods ***/
506 static HRESULT WINAPI IDirect3DRMViewport2Impl_QueryInterface(IDirect3DRMViewport2* iface,
507 REFIID riid, void** object)
509 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
510 return IDirect3DRMViewport_QueryInterface(&This->IDirect3DRMViewport_iface, riid, object);
513 static ULONG WINAPI IDirect3DRMViewport2Impl_AddRef(IDirect3DRMViewport2* iface)
515 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
516 return IDirect3DRMViewport_AddRef(&This->IDirect3DRMViewport_iface);
519 static ULONG WINAPI IDirect3DRMViewport2Impl_Release(IDirect3DRMViewport2* iface)
521 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
522 return IDirect3DRMViewport_Release(&This->IDirect3DRMViewport_iface);
525 /*** IDirect3DRMObject methods ***/
526 static HRESULT WINAPI IDirect3DRMViewport2Impl_Clone(IDirect3DRMViewport2* iface,
527 LPUNKNOWN unkwn, REFIID riid,
528 LPVOID* object)
530 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
532 FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object);
534 return E_NOTIMPL;
537 static HRESULT WINAPI IDirect3DRMViewport2Impl_AddDestroyCallback(IDirect3DRMViewport2* iface,
538 D3DRMOBJECTCALLBACK cb,
539 LPVOID argument)
541 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
543 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
545 return E_NOTIMPL;
548 static HRESULT WINAPI IDirect3DRMViewport2Impl_DeleteDestroyCallback(IDirect3DRMViewport2* iface,
549 D3DRMOBJECTCALLBACK cb,
550 LPVOID argument)
552 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
554 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument);
556 return E_NOTIMPL;
559 static HRESULT WINAPI IDirect3DRMViewport2Impl_SetAppData(IDirect3DRMViewport2* iface,
560 DWORD data)
562 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
564 FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
566 return E_NOTIMPL;
569 static DWORD WINAPI IDirect3DRMViewport2Impl_GetAppData(IDirect3DRMViewport2* iface)
571 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
573 FIXME("(%p/%p)->(): stub\n", iface, This);
575 return 0;
578 static HRESULT WINAPI IDirect3DRMViewport2Impl_SetName(IDirect3DRMViewport2* iface, LPCSTR name)
580 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
582 FIXME("(%p/%p)->(%s): stub\n", iface, This, name);
584 return E_NOTIMPL;
587 static HRESULT WINAPI IDirect3DRMViewport2Impl_GetName(IDirect3DRMViewport2* iface,
588 LPDWORD size, LPSTR name)
590 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
592 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
594 return E_NOTIMPL;
597 static HRESULT WINAPI IDirect3DRMViewport2Impl_GetClassName(IDirect3DRMViewport2* iface,
598 LPDWORD size, LPSTR name)
600 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
602 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name);
604 return E_NOTIMPL;
607 /*** IDirect3DRMViewport methods ***/
608 static HRESULT WINAPI IDirect3DRMViewport2Impl_Init(IDirect3DRMViewport2* iface,
609 LPDIRECT3DRMDEVICE3 dev, LPDIRECT3DRMFRAME3 camera,
610 DWORD xpos, DWORD ypos,
611 DWORD width, DWORD height)
613 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
615 FIXME("(%p/%p)->(%p, %p, %u, %u, %u, %u): stub\n", iface, This, dev, camera,
616 xpos, ypos, width, height);
618 return E_NOTIMPL;
621 static HRESULT WINAPI IDirect3DRMViewport2Impl_Clear(IDirect3DRMViewport2* iface, DWORD flags)
623 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
625 FIXME("(%p/%p)->(): stub\n", iface, This);
627 return E_NOTIMPL;
630 static HRESULT WINAPI IDirect3DRMViewport2Impl_Render(IDirect3DRMViewport2* iface,
631 LPDIRECT3DRMFRAME3 frame)
633 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
635 FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
637 return E_NOTIMPL;
640 static HRESULT WINAPI IDirect3DRMViewport2Impl_SetFront(IDirect3DRMViewport2* iface, D3DVALUE front)
642 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
644 FIXME("(%p/%p)->(%f): stub\n", iface, This, front);
646 return E_NOTIMPL;
649 static HRESULT WINAPI IDirect3DRMViewport2Impl_SetBack(IDirect3DRMViewport2* iface, D3DVALUE back)
651 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
653 TRACE("(%p/%p)->(%f)\n", iface, This, back);
655 This->back = back;
657 return D3DRM_OK;
660 static HRESULT WINAPI IDirect3DRMViewport2Impl_SetField(IDirect3DRMViewport2* iface, D3DVALUE field)
662 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
664 FIXME("(%p/%p)->(%f): stub\n", iface, This, field);
666 return E_NOTIMPL;
669 static HRESULT WINAPI IDirect3DRMViewport2Impl_SetUniformScaling(IDirect3DRMViewport2* iface, BOOL b)
671 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
673 FIXME("(%p/%p)->(%d): stub\n", iface, This, b);
675 return E_NOTIMPL;
678 static HRESULT WINAPI IDirect3DRMViewport2Impl_SetCamera(IDirect3DRMViewport2* iface,
679 LPDIRECT3DRMFRAME3 frame)
681 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
683 FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
685 return E_NOTIMPL;
688 static HRESULT WINAPI IDirect3DRMViewport2Impl_SetProjection(IDirect3DRMViewport2* iface,
689 D3DRMPROJECTIONTYPE type)
691 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
693 FIXME("(%p/%p)->(%u): stub\n", iface, This, type);
695 return S_OK;
698 static HRESULT WINAPI IDirect3DRMViewport2Impl_Transform(IDirect3DRMViewport2* iface,
699 D3DRMVECTOR4D *d, D3DVECTOR *s)
701 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
703 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, d, s);
705 return E_NOTIMPL;
708 static HRESULT WINAPI IDirect3DRMViewport2Impl_InverseTransform(IDirect3DRMViewport2* iface,
709 D3DVECTOR *d, D3DRMVECTOR4D *s)
711 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
713 FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, d, s);
715 return E_NOTIMPL;
718 static HRESULT WINAPI IDirect3DRMViewport2Impl_Configure(IDirect3DRMViewport2* iface, LONG x, LONG y,
719 DWORD width, DWORD height)
721 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
723 FIXME("(%p/%p)->(%u, %u, %u, %u): stub\n", iface, This, x, y, width, height);
725 return E_NOTIMPL;
728 static HRESULT WINAPI IDirect3DRMViewport2Impl_ForceUpdate(IDirect3DRMViewport2* iface,
729 DWORD x1, DWORD y1, DWORD x2, DWORD y2)
731 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
733 FIXME("(%p/%p)->(%u, %u, %u, %u): stub\n", iface, This, x1, y1, x2, y2);
735 return E_NOTIMPL;
738 static HRESULT WINAPI IDirect3DRMViewport2Impl_SetPlane(IDirect3DRMViewport2* iface,
739 D3DVALUE left, D3DVALUE right,
740 D3DVALUE bottom, D3DVALUE top)
742 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
744 FIXME("(%p/%p)->(%f, %f, %f, %f): stub\n", iface, This, left, right, bottom, top);
746 return E_NOTIMPL;
749 static HRESULT WINAPI IDirect3DRMViewport2Impl_GetCamera(IDirect3DRMViewport2* iface,
750 LPDIRECT3DRMFRAME3 * frame)
752 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
754 FIXME("(%p/%p)->(%p): stub\n", iface, This, frame);
756 return E_NOTIMPL;
759 static HRESULT WINAPI IDirect3DRMViewport2Impl_GetDevice(IDirect3DRMViewport2* iface,
760 LPDIRECT3DRMDEVICE3 * device)
762 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
764 FIXME("(%p/%p)->(%p): stub\n", iface, This, device);
766 return E_NOTIMPL;
769 static HRESULT WINAPI IDirect3DRMViewport2Impl_GetPlane(IDirect3DRMViewport2* iface,
770 D3DVALUE *left, D3DVALUE *right,
771 D3DVALUE *bottom, D3DVALUE *top)
773 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
775 FIXME("(%p/%p)->(%p, %p, %p, %p): stub\n", iface, This, left, right, bottom, top);
777 return E_NOTIMPL;
780 static HRESULT WINAPI IDirect3DRMViewport2Impl_Pick(IDirect3DRMViewport2* iface, LONG x, LONG y,
781 LPDIRECT3DRMPICKEDARRAY *return_visuals)
783 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
785 FIXME("(%p/%p)->(%u, %u, %p): stub\n", iface, This, x, y, return_visuals);
787 return E_NOTIMPL;
790 static BOOL WINAPI IDirect3DRMViewport2Impl_GetUniformScaling(IDirect3DRMViewport2* iface)
792 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
794 FIXME("(%p/%p)->(): stub\n", iface, This);
796 return E_NOTIMPL;
799 static LONG WINAPI IDirect3DRMViewport2Impl_GetX(IDirect3DRMViewport2* iface)
801 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
803 FIXME("(%p/%p)->(): stub\n", iface, This);
805 return E_NOTIMPL;
808 static LONG WINAPI IDirect3DRMViewport2Impl_GetY(IDirect3DRMViewport2* iface)
810 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
812 FIXME("(%p/%p)->(): stub\n", iface, This);
814 return E_NOTIMPL;
817 static DWORD WINAPI IDirect3DRMViewport2Impl_GetWidth(IDirect3DRMViewport2* iface)
819 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
821 FIXME("(%p/%p)->(): stub\n", iface, This);
823 return E_NOTIMPL;
826 static DWORD WINAPI IDirect3DRMViewport2Impl_GetHeight(IDirect3DRMViewport2* iface)
828 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
830 FIXME("(%p/%p)->(): stub\n", iface, This);
832 return E_NOTIMPL;
835 static D3DVALUE WINAPI IDirect3DRMViewport2Impl_GetField(IDirect3DRMViewport2* iface)
837 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
839 FIXME("(%p/%p)->(): stub\n", iface, This);
841 return E_NOTIMPL;
844 static D3DVALUE WINAPI IDirect3DRMViewport2Impl_GetBack(IDirect3DRMViewport2* iface)
846 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
848 TRACE("(%p/%p)->()\n", iface, This);
850 return This->back;
853 static D3DVALUE WINAPI IDirect3DRMViewport2Impl_GetFront(IDirect3DRMViewport2* iface)
855 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
857 FIXME("(%p/%p)->(): stub\n", iface, This);
859 return E_NOTIMPL;
862 static D3DRMPROJECTIONTYPE WINAPI IDirect3DRMViewport2Impl_GetProjection(IDirect3DRMViewport2* iface)
864 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
866 FIXME("(%p/%p)->(): stub\n", iface, This);
868 return E_NOTIMPL;
871 static HRESULT WINAPI IDirect3DRMViewport2Impl_GetDirect3DViewport(IDirect3DRMViewport2* iface,
872 LPDIRECT3DVIEWPORT * viewport)
874 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
876 FIXME("(%p/%p)->(%p): stub\n", iface, This, This);
878 return E_NOTIMPL;
881 /*** IDirect3DRMViewport2 methods ***/
882 static HRESULT WINAPI IDirect3DRMViewport2Impl_TransformVectors(IDirect3DRMViewport2* iface,
883 DWORD numvectors,
884 LPD3DRMVECTOR4D dstvectors,
885 LPD3DVECTOR srcvectors)
887 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
889 FIXME("(%p/%p)->(%u, %p, %p): stub\n", iface, This, numvectors, dstvectors, srcvectors);
891 return E_NOTIMPL;
894 static HRESULT WINAPI IDirect3DRMViewport2Impl_InverseTransformVectors(IDirect3DRMViewport2* iface,
895 DWORD numvectors,
896 LPD3DVECTOR dstvectors,
897 LPD3DRMVECTOR4D srcvectors)
899 IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
901 FIXME("(%p/%p)->(%u, %p, %p): stub\n", iface, This, numvectors, dstvectors, srcvectors);
903 return E_NOTIMPL;
906 static const struct IDirect3DRMViewport2Vtbl Direct3DRMViewport2_Vtbl =
908 /*** IUnknown methods ***/
909 IDirect3DRMViewport2Impl_QueryInterface,
910 IDirect3DRMViewport2Impl_AddRef,
911 IDirect3DRMViewport2Impl_Release,
912 /*** IDirect3DRMObject methods ***/
913 IDirect3DRMViewport2Impl_Clone,
914 IDirect3DRMViewport2Impl_AddDestroyCallback,
915 IDirect3DRMViewport2Impl_DeleteDestroyCallback,
916 IDirect3DRMViewport2Impl_SetAppData,
917 IDirect3DRMViewport2Impl_GetAppData,
918 IDirect3DRMViewport2Impl_SetName,
919 IDirect3DRMViewport2Impl_GetName,
920 IDirect3DRMViewport2Impl_GetClassName,
921 /*** IDirect3DRMViewport methods ***/
922 IDirect3DRMViewport2Impl_Init,
923 IDirect3DRMViewport2Impl_Clear,
924 IDirect3DRMViewport2Impl_Render,
925 IDirect3DRMViewport2Impl_SetFront,
926 IDirect3DRMViewport2Impl_SetBack,
927 IDirect3DRMViewport2Impl_SetField,
928 IDirect3DRMViewport2Impl_SetUniformScaling,
929 IDirect3DRMViewport2Impl_SetCamera,
930 IDirect3DRMViewport2Impl_SetProjection,
931 IDirect3DRMViewport2Impl_Transform,
932 IDirect3DRMViewport2Impl_InverseTransform,
933 IDirect3DRMViewport2Impl_Configure,
934 IDirect3DRMViewport2Impl_ForceUpdate,
935 IDirect3DRMViewport2Impl_SetPlane,
936 IDirect3DRMViewport2Impl_GetCamera,
937 IDirect3DRMViewport2Impl_GetDevice,
938 IDirect3DRMViewport2Impl_GetPlane,
939 IDirect3DRMViewport2Impl_Pick,
940 IDirect3DRMViewport2Impl_GetUniformScaling,
941 IDirect3DRMViewport2Impl_GetX,
942 IDirect3DRMViewport2Impl_GetY,
943 IDirect3DRMViewport2Impl_GetWidth,
944 IDirect3DRMViewport2Impl_GetHeight,
945 IDirect3DRMViewport2Impl_GetField,
946 IDirect3DRMViewport2Impl_GetBack,
947 IDirect3DRMViewport2Impl_GetFront,
948 IDirect3DRMViewport2Impl_GetProjection,
949 IDirect3DRMViewport2Impl_GetDirect3DViewport,
950 /*** IDirect3DRMViewport2 methods ***/
951 IDirect3DRMViewport2Impl_TransformVectors,
952 IDirect3DRMViewport2Impl_InverseTransformVectors
955 HRESULT Direct3DRMViewport_create(REFIID riid, IUnknown** ppObj)
957 IDirect3DRMViewportImpl* object;
959 TRACE("(%p)\n", ppObj);
961 object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMViewportImpl));
962 if (!object)
964 ERR("Out of memory\n");
965 return E_OUTOFMEMORY;
968 object->IDirect3DRMViewport_iface.lpVtbl = &Direct3DRMViewport_Vtbl;
969 object->IDirect3DRMViewport2_iface.lpVtbl = &Direct3DRMViewport2_Vtbl;
970 object->ref = 1;
972 if (IsEqualGUID(riid, &IID_IDirect3DRMViewport2))
973 *ppObj = (IUnknown*)&object->IDirect3DRMViewport2_iface;
974 else
975 *ppObj = (IUnknown*)&object->IDirect3DRMViewport_iface;
977 return S_OK;