[PATCH 5/5] d3drm: Get rid of the IDirect3DRMViewportImpl typedef.

Henri Verbeet hverbeet at codeweavers.com
Fri Nov 1 03:41:02 CDT 2013


---
 dlls/d3drm/viewport.c | 1751 +++++++++++++++++++++++--------------------------
 1 file changed, 833 insertions(+), 918 deletions(-)
 rewrite dlls/d3drm/viewport.c (79%)

diff --git a/dlls/d3drm/viewport.c b/dlls/d3drm/viewport.c
dissimilarity index 79%
index 522653a..c39903f 100644
--- a/dlls/d3drm/viewport.c
+++ b/dlls/d3drm/viewport.c
@@ -1,918 +1,833 @@
-/*
- * Implementation of IDirect3DRMViewport Interface
- *
- * Copyright 2012 André Hentschel
- *
- * This file contains the (internal) driver registration functions,
- * driver enumeration APIs and DirectDraw creation functions.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "wine/debug.h"
-
-#define COBJMACROS
-
-#include "winbase.h"
-#include "wingdi.h"
-
-#include "d3drm_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
-
-typedef struct {
-    IDirect3DRMViewport IDirect3DRMViewport_iface;
-    IDirect3DRMViewport2 IDirect3DRMViewport2_iface;
-    LONG ref;
-    D3DVALUE back;
-    D3DVALUE front;
-    D3DVALUE field;
-    D3DRMPROJECTIONTYPE projection;
-} IDirect3DRMViewportImpl;
-
-static inline IDirect3DRMViewportImpl *impl_from_IDirect3DRMViewport(IDirect3DRMViewport *iface)
-{
-    return CONTAINING_RECORD(iface, IDirect3DRMViewportImpl, IDirect3DRMViewport_iface);
-}
-
-static inline IDirect3DRMViewportImpl *impl_from_IDirect3DRMViewport2(IDirect3DRMViewport2 *iface)
-{
-    return CONTAINING_RECORD(iface, IDirect3DRMViewportImpl, IDirect3DRMViewport2_iface);
-}
-
-/*** IUnknown methods ***/
-static HRESULT WINAPI IDirect3DRMViewportImpl_QueryInterface(IDirect3DRMViewport* iface,
-                                                             REFIID riid, void** object)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    TRACE("(%p/%p)->(%s, %p)\n", iface, This, debugstr_guid(riid), object);
-
-    *object = NULL;
-
-    if (IsEqualGUID(riid, &IID_IUnknown) ||
-        IsEqualGUID(riid, &IID_IDirect3DRMViewport))
-    {
-        *object = &This->IDirect3DRMViewport_iface;
-    }
-    else if(IsEqualGUID(riid, &IID_IDirect3DRMViewport2))
-    {
-        *object = &This->IDirect3DRMViewport2_iface;
-    }
-    else
-    {
-        FIXME("interface %s not implemented\n", debugstr_guid(riid));
-        return E_NOINTERFACE;
-    }
-
-    IDirect3DRMViewport_AddRef(iface);
-    return S_OK;
-}
-
-static ULONG WINAPI IDirect3DRMViewportImpl_AddRef(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-    ULONG ref = InterlockedIncrement(&This->ref);
-
-    TRACE("(%p)->(): new ref = %d\n", This, ref);
-
-    return ref;
-}
-
-static ULONG WINAPI IDirect3DRMViewportImpl_Release(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-    ULONG ref = InterlockedDecrement(&This->ref);
-
-    TRACE("(%p)->(): new ref = %d\n", This, ref);
-
-    if (!ref)
-        HeapFree(GetProcessHeap(), 0, This);
-
-    return ref;
-}
-
-/*** IDirect3DRMObject methods ***/
-static HRESULT WINAPI IDirect3DRMViewportImpl_Clone(IDirect3DRMViewport *iface,
-        IUnknown *outer, REFIID iid, void **out)
-{
-    FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_AddDestroyCallback(IDirect3DRMViewport *iface,
-        D3DRMOBJECTCALLBACK cb, void *ctx)
-{
-    FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_DeleteDestroyCallback(IDirect3DRMViewport *iface,
-        D3DRMOBJECTCALLBACK cb, void *ctx)
-{
-    FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_SetAppData(IDirect3DRMViewport* iface,
-                                                             DWORD data)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
-
-    return E_NOTIMPL;
-}
-
-static DWORD WINAPI IDirect3DRMViewportImpl_GetAppData(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return 0;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_SetName(IDirect3DRMViewport *iface, const char *name)
-{
-    FIXME("iface %p, name %s stub!\n", iface, debugstr_a(name));
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_GetName(IDirect3DRMViewport *iface, DWORD *size, char *name)
-{
-    FIXME("iface %p, size %p, name %p stub!\n", iface, size, name);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_GetClassName(IDirect3DRMViewport *iface, DWORD *size, char *name)
-{
-    IDirect3DRMViewportImpl *viewport = impl_from_IDirect3DRMViewport(iface);
-
-    TRACE("iface %p, size %p, name %p.\n", iface, size, name);
-
-    return IDirect3DRMViewport2_GetClassName(&viewport->IDirect3DRMViewport2_iface, size, name);
-}
-
-/*** IDirect3DRMViewport methods ***/
-static HRESULT WINAPI IDirect3DRMViewportImpl_Init(IDirect3DRMViewport *iface, IDirect3DRMDevice *device,
-        IDirect3DRMFrame *camera, DWORD x, DWORD y, DWORD width, DWORD height)
-{
-    FIXME("iface %p, device %p, camera %p, x %u, y %u, width %u, height %u stub!\n",
-            iface, device, camera, x, y, width, height);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_Clear(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return D3DRM_OK;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_Render(IDirect3DRMViewport *iface, IDirect3DRMFrame *frame)
-{
-    FIXME("iface %p, frame %p stub!\n", iface, frame);
-
-    return D3DRM_OK;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_SetFront(IDirect3DRMViewport* iface, D3DVALUE front)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    TRACE("(%p/%p)->(%f)\n", iface, This, front);
-
-    return IDirect3DRMViewport2_SetFront(&This->IDirect3DRMViewport2_iface, front);
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_SetBack(IDirect3DRMViewport* iface, D3DVALUE back)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    TRACE("(%p/%p)->(%f)\n", iface, This, back);
-
-    return IDirect3DRMViewport2_SetBack(&This->IDirect3DRMViewport2_iface, back);
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_SetField(IDirect3DRMViewport* iface, D3DVALUE field)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    TRACE("(%p/%p)->(%f)\n", iface, This, field);
-
-    return IDirect3DRMViewport2_SetField(&This->IDirect3DRMViewport2_iface, field);
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_SetUniformScaling(IDirect3DRMViewport* iface, BOOL b)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(%d): stub\n", iface, This, b);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_SetCamera(IDirect3DRMViewport *iface, IDirect3DRMFrame *camera)
-{
-    FIXME("iface %p, camera %p stub!\n", iface, camera);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_SetProjection(IDirect3DRMViewport* iface,
-                                                            D3DRMPROJECTIONTYPE type)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    TRACE("(%p/%p)->(%u)\n", iface, This, type);
-
-    return IDirect3DRMViewport2_SetProjection(&This->IDirect3DRMViewport2_iface, type);
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_Transform(IDirect3DRMViewport* iface,
-                                                        D3DRMVECTOR4D *d, D3DVECTOR *s)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, d, s);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_InverseTransform(IDirect3DRMViewport* iface,
-                                                               D3DVECTOR *d, D3DRMVECTOR4D *s)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, d, s);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_Configure(IDirect3DRMViewport* iface, LONG x, LONG y,
-                                                        DWORD width, DWORD height)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(%u, %u, %u, %u): stub\n", iface, This, x, y, width, height);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_ForceUpdate(IDirect3DRMViewport* iface,
-                                                          DWORD x1, DWORD y1, DWORD x2, DWORD y2)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(%u, %u, %u, %u): stub\n", iface, This, x1, y1, x2, y2);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_SetPlane(IDirect3DRMViewport* iface,
-                                                       D3DVALUE left, D3DVALUE right,
-                                                       D3DVALUE bottom, D3DVALUE top)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(%f, %f, %f, %f): stub\n", iface, This, left, right, bottom, top);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_GetCamera(IDirect3DRMViewport *iface, IDirect3DRMFrame **camera)
-{
-    FIXME("iface %p, camera %p stub!\n", iface, camera);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_GetDevice(IDirect3DRMViewport *iface, IDirect3DRMDevice **device)
-{
-    FIXME("iface %p, device %p stub!\n", iface, device);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_GetPlane(IDirect3DRMViewport* iface,
-                                                       D3DVALUE *left, D3DVALUE *right,
-                                                       D3DVALUE *bottom, D3DVALUE *top)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(%p, %p, %p, %p): stub\n", iface, This, left, right, bottom, top);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_Pick(IDirect3DRMViewport *iface,
-        LONG x, LONG y, IDirect3DRMPickedArray **visuals)
-{
-    FIXME("iface %p, x %d, y %d, visuals %p stub!\n", iface, x, y, visuals);
-
-    return E_NOTIMPL;
-}
-
-static BOOL WINAPI IDirect3DRMViewportImpl_GetUniformScaling(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return E_NOTIMPL;
-}
-
-static LONG WINAPI IDirect3DRMViewportImpl_GetX(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return E_NOTIMPL;
-}
-
-static LONG WINAPI IDirect3DRMViewportImpl_GetY(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return E_NOTIMPL;
-}
-
-static DWORD WINAPI IDirect3DRMViewportImpl_GetWidth(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return E_NOTIMPL;
-}
-
-static DWORD WINAPI IDirect3DRMViewportImpl_GetHeight(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return E_NOTIMPL;
-}
-
-static D3DVALUE WINAPI IDirect3DRMViewportImpl_GetField(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    TRACE("(%p/%p)->()\n", iface, This);
-
-    return IDirect3DRMViewport2_GetField(&This->IDirect3DRMViewport2_iface);
-}
-
-static D3DVALUE WINAPI IDirect3DRMViewportImpl_GetBack(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    TRACE("(%p/%p)->()\n", iface, This);
-
-    return IDirect3DRMViewport2_GetBack(&This->IDirect3DRMViewport2_iface);
-}
-
-static D3DVALUE WINAPI IDirect3DRMViewportImpl_GetFront(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    TRACE("(%p/%p)->()\n", iface, This);
-
-    return IDirect3DRMViewport2_GetFront(&This->IDirect3DRMViewport2_iface);
-}
-
-static D3DRMPROJECTIONTYPE WINAPI IDirect3DRMViewportImpl_GetProjection(IDirect3DRMViewport* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    TRACE("(%p/%p)->()\n", iface, This);
-
-    return IDirect3DRMViewport2_GetProjection(&This->IDirect3DRMViewport2_iface);
-}
-
-static HRESULT WINAPI IDirect3DRMViewportImpl_GetDirect3DViewport(IDirect3DRMViewport *iface,
-        IDirect3DViewport **viewport)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport(iface);
-
-    FIXME("(%p/%p)->(%p): stub\n", iface, This, This);
-
-    return E_NOTIMPL;
-}
-
-static const struct IDirect3DRMViewportVtbl Direct3DRMViewport_Vtbl =
-{
-    /*** IUnknown methods ***/
-    IDirect3DRMViewportImpl_QueryInterface,
-    IDirect3DRMViewportImpl_AddRef,
-    IDirect3DRMViewportImpl_Release,
-    /*** IDirect3DRMObject methods ***/
-    IDirect3DRMViewportImpl_Clone,
-    IDirect3DRMViewportImpl_AddDestroyCallback,
-    IDirect3DRMViewportImpl_DeleteDestroyCallback,
-    IDirect3DRMViewportImpl_SetAppData,
-    IDirect3DRMViewportImpl_GetAppData,
-    IDirect3DRMViewportImpl_SetName,
-    IDirect3DRMViewportImpl_GetName,
-    IDirect3DRMViewportImpl_GetClassName,
-    /*** IDirect3DRMViewport methods ***/
-    IDirect3DRMViewportImpl_Init,
-    IDirect3DRMViewportImpl_Clear,
-    IDirect3DRMViewportImpl_Render,
-    IDirect3DRMViewportImpl_SetFront,
-    IDirect3DRMViewportImpl_SetBack,
-    IDirect3DRMViewportImpl_SetField,
-    IDirect3DRMViewportImpl_SetUniformScaling,
-    IDirect3DRMViewportImpl_SetCamera,
-    IDirect3DRMViewportImpl_SetProjection,
-    IDirect3DRMViewportImpl_Transform,
-    IDirect3DRMViewportImpl_InverseTransform,
-    IDirect3DRMViewportImpl_Configure,
-    IDirect3DRMViewportImpl_ForceUpdate,
-    IDirect3DRMViewportImpl_SetPlane,
-    IDirect3DRMViewportImpl_GetCamera,
-    IDirect3DRMViewportImpl_GetDevice,
-    IDirect3DRMViewportImpl_GetPlane,
-    IDirect3DRMViewportImpl_Pick,
-    IDirect3DRMViewportImpl_GetUniformScaling,
-    IDirect3DRMViewportImpl_GetX,
-    IDirect3DRMViewportImpl_GetY,
-    IDirect3DRMViewportImpl_GetWidth,
-    IDirect3DRMViewportImpl_GetHeight,
-    IDirect3DRMViewportImpl_GetField,
-    IDirect3DRMViewportImpl_GetBack,
-    IDirect3DRMViewportImpl_GetFront,
-    IDirect3DRMViewportImpl_GetProjection,
-    IDirect3DRMViewportImpl_GetDirect3DViewport
-};
-
-
-/*** IUnknown methods ***/
-static HRESULT WINAPI IDirect3DRMViewport2Impl_QueryInterface(IDirect3DRMViewport2* iface,
-                                                             REFIID riid, void** object)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-    return IDirect3DRMViewport_QueryInterface(&This->IDirect3DRMViewport_iface, riid, object);
-}
-
-static ULONG WINAPI IDirect3DRMViewport2Impl_AddRef(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-    return IDirect3DRMViewport_AddRef(&This->IDirect3DRMViewport_iface);
-}
-
-static ULONG WINAPI IDirect3DRMViewport2Impl_Release(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-    return IDirect3DRMViewport_Release(&This->IDirect3DRMViewport_iface);
-}
-
-/*** IDirect3DRMObject methods ***/
-static HRESULT WINAPI IDirect3DRMViewport2Impl_Clone(IDirect3DRMViewport2 *iface,
-        IUnknown *outer, REFIID iid, void **out)
-{
-    FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_AddDestroyCallback(IDirect3DRMViewport2 *iface,
-        D3DRMOBJECTCALLBACK cb, void *ctx)
-{
-    FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_DeleteDestroyCallback(IDirect3DRMViewport2 *iface,
-        D3DRMOBJECTCALLBACK cb, void *ctx)
-{
-    FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_SetAppData(IDirect3DRMViewport2* iface,
-                                                             DWORD data)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%u): stub\n", iface, This, data);
-
-    return E_NOTIMPL;
-}
-
-static DWORD WINAPI IDirect3DRMViewport2Impl_GetAppData(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return 0;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_SetName(IDirect3DRMViewport2 *iface, const char *name)
-{
-    FIXME("iface %p, name %s stub!\n", iface, debugstr_a(name));
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_GetName(IDirect3DRMViewport2 *iface, DWORD *size, char *name)
-{
-    FIXME("iface %p, size %p, name %p stub!\n", iface, size, name);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_GetClassName(IDirect3DRMViewport2 *iface, DWORD *size, char *name)
-{
-    TRACE("iface %p, size %p, name %p.\n", iface, size, name);
-
-    if (!size || *size < strlen("Viewport") || !name)
-        return E_INVALIDARG;
-
-    strcpy(name, "Viewport");
-    *size = sizeof("Viewport");
-
-    return D3DRM_OK;
-}
-
-/*** IDirect3DRMViewport methods ***/
-static HRESULT WINAPI IDirect3DRMViewport2Impl_Init(IDirect3DRMViewport2 *iface, IDirect3DRMDevice3 *device,
-        IDirect3DRMFrame3 *camera, DWORD x, DWORD y, DWORD width, DWORD height)
-{
-    FIXME("iface %p, device %p, camera %p, x %u, y %u, width %u, height %u stub!\n",
-            iface, device, camera, x, y, width, height);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_Clear(IDirect3DRMViewport2* iface, DWORD flags)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return D3DRM_OK;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_Render(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 *frame)
-{
-    FIXME("iface %p, frame %p stub!\n", iface, frame);
-
-    return D3DRM_OK;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_SetFront(IDirect3DRMViewport2* iface, D3DVALUE front)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    TRACE("(%p/%p)->(%f):\n", iface, This, front);
-
-    This->front = front;
-
-    return D3DRM_OK;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_SetBack(IDirect3DRMViewport2* iface, D3DVALUE back)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    TRACE("(%p/%p)->(%f)\n", iface, This, back);
-
-    This->back = back;
-
-    return D3DRM_OK;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_SetField(IDirect3DRMViewport2* iface, D3DVALUE field)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    TRACE("(%p/%p)->(%f)\n", iface, This, field);
-
-    This->field = field;
-
-    return D3DRM_OK;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_SetUniformScaling(IDirect3DRMViewport2* iface, BOOL b)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%d): stub\n", iface, This, b);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_SetCamera(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 *camera)
-{
-    FIXME("iface %p, camera %p stub!\n", iface, camera);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_SetProjection(IDirect3DRMViewport2* iface,
-                                                            D3DRMPROJECTIONTYPE type)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    TRACE("(%p/%p)->(%u)\n", iface, This, type);
-
-    This->projection = type;
-
-    return D3DRM_OK;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_Transform(IDirect3DRMViewport2* iface,
-                                                        D3DRMVECTOR4D *d, D3DVECTOR *s)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, d, s);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_InverseTransform(IDirect3DRMViewport2* iface,
-                                                               D3DVECTOR *d, D3DRMVECTOR4D *s)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, d, s);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_Configure(IDirect3DRMViewport2* iface, LONG x, LONG y,
-                                                        DWORD width, DWORD height)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%u, %u, %u, %u): stub\n", iface, This, x, y, width, height);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_ForceUpdate(IDirect3DRMViewport2* iface,
-                                                          DWORD x1, DWORD y1, DWORD x2, DWORD y2)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%u, %u, %u, %u): stub\n", iface, This, x1, y1, x2, y2);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_SetPlane(IDirect3DRMViewport2* iface,
-                                                       D3DVALUE left, D3DVALUE right,
-                                                       D3DVALUE bottom, D3DVALUE top)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%f, %f, %f, %f): stub\n", iface, This, left, right, bottom, top);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_GetCamera(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 **camera)
-{
-    FIXME("iface %p, camera %p stub!\n", iface, camera);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_GetDevice(IDirect3DRMViewport2 *iface, IDirect3DRMDevice3 **device)
-{
-    FIXME("iface %p, device %p stub!\n", iface, device);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_GetPlane(IDirect3DRMViewport2* iface,
-                                                       D3DVALUE *left, D3DVALUE *right,
-                                                       D3DVALUE *bottom, D3DVALUE *top)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%p, %p, %p, %p): stub\n", iface, This, left, right, bottom, top);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_Pick(IDirect3DRMViewport2 *iface,
-        LONG x, LONG y, IDirect3DRMPickedArray **visuals)
-{
-    FIXME("iface %p, x %d, y %d, visuals %p stub!\n", iface, x, y, visuals);
-
-    return E_NOTIMPL;
-}
-
-static BOOL WINAPI IDirect3DRMViewport2Impl_GetUniformScaling(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return E_NOTIMPL;
-}
-
-static LONG WINAPI IDirect3DRMViewport2Impl_GetX(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return E_NOTIMPL;
-}
-
-static LONG WINAPI IDirect3DRMViewport2Impl_GetY(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return E_NOTIMPL;
-}
-
-static DWORD WINAPI IDirect3DRMViewport2Impl_GetWidth(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return E_NOTIMPL;
-}
-
-static DWORD WINAPI IDirect3DRMViewport2Impl_GetHeight(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(): stub\n", iface, This);
-
-    return E_NOTIMPL;
-}
-
-static D3DVALUE WINAPI IDirect3DRMViewport2Impl_GetField(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    TRACE("(%p/%p)->()\n", iface, This);
-
-    return This->field;
-}
-
-static D3DVALUE WINAPI IDirect3DRMViewport2Impl_GetBack(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    TRACE("(%p/%p)->()\n", iface, This);
-
-    return This->back;
-}
-
-static D3DVALUE WINAPI IDirect3DRMViewport2Impl_GetFront(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    TRACE("(%p/%p)->()\n", iface, This);
-
-    return This->front;
-}
-
-static D3DRMPROJECTIONTYPE WINAPI IDirect3DRMViewport2Impl_GetProjection(IDirect3DRMViewport2* iface)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    TRACE("(%p/%p)->()\n", iface, This);
-
-    return This->projection;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_GetDirect3DViewport(IDirect3DRMViewport2 *iface,
-        IDirect3DViewport **viewport)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%p): stub\n", iface, This, This);
-
-    return E_NOTIMPL;
-}
-
-/*** IDirect3DRMViewport2 methods ***/
-static HRESULT WINAPI IDirect3DRMViewport2Impl_TransformVectors(IDirect3DRMViewport2 *iface,
-        DWORD numvectors, D3DRMVECTOR4D *dstvectors, D3DVECTOR *srcvectors)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%u, %p, %p): stub\n", iface, This, numvectors, dstvectors, srcvectors);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IDirect3DRMViewport2Impl_InverseTransformVectors(IDirect3DRMViewport2 *iface,
-        DWORD numvectors, D3DVECTOR *dstvectors, D3DRMVECTOR4D *srcvectors)
-{
-    IDirect3DRMViewportImpl *This = impl_from_IDirect3DRMViewport2(iface);
-
-    FIXME("(%p/%p)->(%u, %p, %p): stub\n", iface, This, numvectors, dstvectors, srcvectors);
-
-    return E_NOTIMPL;
-}
-
-static const struct IDirect3DRMViewport2Vtbl Direct3DRMViewport2_Vtbl =
-{
-    /*** IUnknown methods ***/
-    IDirect3DRMViewport2Impl_QueryInterface,
-    IDirect3DRMViewport2Impl_AddRef,
-    IDirect3DRMViewport2Impl_Release,
-    /*** IDirect3DRMObject methods ***/
-    IDirect3DRMViewport2Impl_Clone,
-    IDirect3DRMViewport2Impl_AddDestroyCallback,
-    IDirect3DRMViewport2Impl_DeleteDestroyCallback,
-    IDirect3DRMViewport2Impl_SetAppData,
-    IDirect3DRMViewport2Impl_GetAppData,
-    IDirect3DRMViewport2Impl_SetName,
-    IDirect3DRMViewport2Impl_GetName,
-    IDirect3DRMViewport2Impl_GetClassName,
-    /*** IDirect3DRMViewport methods ***/
-    IDirect3DRMViewport2Impl_Init,
-    IDirect3DRMViewport2Impl_Clear,
-    IDirect3DRMViewport2Impl_Render,
-    IDirect3DRMViewport2Impl_SetFront,
-    IDirect3DRMViewport2Impl_SetBack,
-    IDirect3DRMViewport2Impl_SetField,
-    IDirect3DRMViewport2Impl_SetUniformScaling,
-    IDirect3DRMViewport2Impl_SetCamera,
-    IDirect3DRMViewport2Impl_SetProjection,
-    IDirect3DRMViewport2Impl_Transform,
-    IDirect3DRMViewport2Impl_InverseTransform,
-    IDirect3DRMViewport2Impl_Configure,
-    IDirect3DRMViewport2Impl_ForceUpdate,
-    IDirect3DRMViewport2Impl_SetPlane,
-    IDirect3DRMViewport2Impl_GetCamera,
-    IDirect3DRMViewport2Impl_GetDevice,
-    IDirect3DRMViewport2Impl_GetPlane,
-    IDirect3DRMViewport2Impl_Pick,
-    IDirect3DRMViewport2Impl_GetUniformScaling,
-    IDirect3DRMViewport2Impl_GetX,
-    IDirect3DRMViewport2Impl_GetY,
-    IDirect3DRMViewport2Impl_GetWidth,
-    IDirect3DRMViewport2Impl_GetHeight,
-    IDirect3DRMViewport2Impl_GetField,
-    IDirect3DRMViewport2Impl_GetBack,
-    IDirect3DRMViewport2Impl_GetFront,
-    IDirect3DRMViewport2Impl_GetProjection,
-    IDirect3DRMViewport2Impl_GetDirect3DViewport,
-    /*** IDirect3DRMViewport2 methods ***/
-    IDirect3DRMViewport2Impl_TransformVectors,
-    IDirect3DRMViewport2Impl_InverseTransformVectors
-};
-
-HRESULT Direct3DRMViewport_create(REFIID riid, IUnknown** ppObj)
-{
-    IDirect3DRMViewportImpl* object;
-
-    TRACE("(%p)\n", ppObj);
-
-    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMViewportImpl));
-    if (!object)
-        return E_OUTOFMEMORY;
-
-    object->IDirect3DRMViewport_iface.lpVtbl = &Direct3DRMViewport_Vtbl;
-    object->IDirect3DRMViewport2_iface.lpVtbl = &Direct3DRMViewport2_Vtbl;
-    object->ref = 1;
-
-    if (IsEqualGUID(riid, &IID_IDirect3DRMViewport2))
-        *ppObj = (IUnknown*)&object->IDirect3DRMViewport2_iface;
-    else
-        *ppObj = (IUnknown*)&object->IDirect3DRMViewport_iface;
-
-    return S_OK;
-}
+/*
+ * Implementation of IDirect3DRMViewport Interface
+ *
+ * Copyright 2012 André Hentschel
+ *
+ * This file contains the (internal) driver registration functions,
+ * driver enumeration APIs and DirectDraw creation functions.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "wine/debug.h"
+
+#define COBJMACROS
+
+#include "winbase.h"
+#include "wingdi.h"
+
+#include "d3drm_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
+
+struct d3drm_viewport
+{
+    IDirect3DRMViewport IDirect3DRMViewport_iface;
+    IDirect3DRMViewport2 IDirect3DRMViewport2_iface;
+    LONG ref;
+    D3DVALUE back;
+    D3DVALUE front;
+    D3DVALUE field;
+    D3DRMPROJECTIONTYPE projection;
+};
+
+static inline struct d3drm_viewport *impl_from_IDirect3DRMViewport(IDirect3DRMViewport *iface)
+{
+    return CONTAINING_RECORD(iface, struct d3drm_viewport, IDirect3DRMViewport_iface);
+}
+
+static inline struct d3drm_viewport *impl_from_IDirect3DRMViewport2(IDirect3DRMViewport2 *iface)
+{
+    return CONTAINING_RECORD(iface, struct d3drm_viewport, IDirect3DRMViewport2_iface);
+}
+
+static HRESULT WINAPI d3drm_viewport1_QueryInterface(IDirect3DRMViewport *iface, REFIID riid, void **out)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+
+    TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
+
+    if (IsEqualGUID(riid, &IID_IDirect3DRMViewport)
+            || IsEqualGUID(riid, &IID_IUnknown))
+    {
+        *out = &viewport->IDirect3DRMViewport_iface;
+    }
+    else if (IsEqualGUID(riid, &IID_IDirect3DRMViewport2))
+    {
+        *out = &viewport->IDirect3DRMViewport2_iface;
+    }
+    else
+    {
+        *out = NULL;
+        WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
+        return E_NOINTERFACE;
+    }
+
+    IUnknown_AddRef((IUnknown *)*out);
+    return S_OK;
+}
+
+static ULONG WINAPI d3drm_viewport1_AddRef(IDirect3DRMViewport *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+    ULONG refcount = InterlockedIncrement(&viewport->ref);
+
+    TRACE("%p increasing refcount to %u.\n", iface, refcount);
+
+    return refcount;
+}
+
+static ULONG WINAPI d3drm_viewport1_Release(IDirect3DRMViewport *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+    ULONG refcount = InterlockedDecrement(&viewport->ref);
+
+    TRACE("%p decreasing refcount to %u.\n", iface, refcount);
+
+    if (!refcount)
+        HeapFree(GetProcessHeap(), 0, viewport);
+
+    return refcount;
+}
+
+static HRESULT WINAPI d3drm_viewport1_Clone(IDirect3DRMViewport *iface,
+        IUnknown *outer, REFIID iid, void **out)
+{
+    FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_AddDestroyCallback(IDirect3DRMViewport *iface,
+        D3DRMOBJECTCALLBACK cb, void *ctx)
+{
+    FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_DeleteDestroyCallback(IDirect3DRMViewport *iface,
+        D3DRMOBJECTCALLBACK cb, void *ctx)
+{
+    FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_SetAppData(IDirect3DRMViewport *iface, DWORD data)
+{
+    FIXME("iface %p, data %#x stub!\n", iface, data);
+
+    return E_NOTIMPL;
+}
+
+static DWORD WINAPI d3drm_viewport1_GetAppData(IDirect3DRMViewport *iface)
+{
+    FIXME("iface %p.\n", iface);
+
+    return 0;
+}
+
+static HRESULT WINAPI d3drm_viewport1_SetName(IDirect3DRMViewport *iface, const char *name)
+{
+    FIXME("iface %p, name %s stub!\n", iface, debugstr_a(name));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_GetName(IDirect3DRMViewport *iface, DWORD *size, char *name)
+{
+    FIXME("iface %p, size %p, name %p stub!\n", iface, size, name);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_GetClassName(IDirect3DRMViewport *iface, DWORD *size, char *name)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+
+    TRACE("iface %p, size %p, name %p.\n", iface, size, name);
+
+    return IDirect3DRMViewport2_GetClassName(&viewport->IDirect3DRMViewport2_iface, size, name);
+}
+
+static HRESULT WINAPI d3drm_viewport1_Init(IDirect3DRMViewport *iface, IDirect3DRMDevice *device,
+        IDirect3DRMFrame *camera, DWORD x, DWORD y, DWORD width, DWORD height)
+{
+    FIXME("iface %p, device %p, camera %p, x %u, y %u, width %u, height %u stub!\n",
+            iface, device, camera, x, y, width, height);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_Clear(IDirect3DRMViewport *iface)
+{
+    FIXME("iface %p.\n", iface);
+
+    return D3DRM_OK;
+}
+
+static HRESULT WINAPI d3drm_viewport1_Render(IDirect3DRMViewport *iface, IDirect3DRMFrame *frame)
+{
+    FIXME("iface %p, frame %p stub!\n", iface, frame);
+
+    return D3DRM_OK;
+}
+
+static HRESULT WINAPI d3drm_viewport1_SetFront(IDirect3DRMViewport *iface, D3DVALUE front)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+
+    TRACE("iface %p, front %.8e.\n", iface, front);
+
+    return IDirect3DRMViewport2_SetFront(&viewport->IDirect3DRMViewport2_iface, front);
+}
+
+static HRESULT WINAPI d3drm_viewport1_SetBack(IDirect3DRMViewport *iface, D3DVALUE back)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+
+    TRACE("iface %p, back %.8e.\n", iface, back);
+
+    return IDirect3DRMViewport2_SetBack(&viewport->IDirect3DRMViewport2_iface, back);
+}
+
+static HRESULT WINAPI d3drm_viewport1_SetField(IDirect3DRMViewport *iface, D3DVALUE field)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+
+    TRACE("iface %p, field %.8e.\n", iface, field);
+
+    return IDirect3DRMViewport2_SetField(&viewport->IDirect3DRMViewport2_iface, field);
+}
+
+static HRESULT WINAPI d3drm_viewport1_SetUniformScaling(IDirect3DRMViewport *iface, BOOL b)
+{
+    FIXME("iface %p, b %#x stub!\n", iface, b);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_SetCamera(IDirect3DRMViewport *iface, IDirect3DRMFrame *camera)
+{
+    FIXME("iface %p, camera %p stub!\n", iface, camera);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_SetProjection(IDirect3DRMViewport *iface, D3DRMPROJECTIONTYPE type)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+
+    TRACE("iface %p, type %#x.\n", iface, type);
+
+    return IDirect3DRMViewport2_SetProjection(&viewport->IDirect3DRMViewport2_iface, type);
+}
+
+static HRESULT WINAPI d3drm_viewport1_Transform(IDirect3DRMViewport *iface, D3DRMVECTOR4D *d, D3DVECTOR *s)
+{
+    FIXME("iface %p, d %p, s %p stub!\n", iface, d, s);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_InverseTransform(IDirect3DRMViewport *iface, D3DVECTOR *d, D3DRMVECTOR4D *s)
+{
+    FIXME("iface %p, d %p, s %p stub!\n", iface, d, s);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_Configure(IDirect3DRMViewport *iface,
+        LONG x, LONG y, DWORD width, DWORD height)
+{
+    FIXME("iface %p, x %d, y %d, width %u, height %u stub!\n", iface, x, y, width, height);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_ForceUpdate(IDirect3DRMViewport *iface,
+        DWORD x1, DWORD y1, DWORD x2, DWORD y2)
+{
+    FIXME("iface %p, x1 %u, y1 %u, x2 %u, y2 %u stub!\n", iface, x1, y1, x2, y2);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_SetPlane(IDirect3DRMViewport *iface,
+        D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top)
+{
+    FIXME("iface %p, left %.8e, right %.8e, bottom %.8e, top %.8e stub!\n",
+            iface, left, right, bottom, top);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_GetCamera(IDirect3DRMViewport *iface, IDirect3DRMFrame **camera)
+{
+    FIXME("iface %p, camera %p stub!\n", iface, camera);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_GetDevice(IDirect3DRMViewport *iface, IDirect3DRMDevice **device)
+{
+    FIXME("iface %p, device %p stub!\n", iface, device);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_GetPlane(IDirect3DRMViewport *iface,
+        D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top)
+{
+    FIXME("iface %p, left %p, right %p, bottom %p, top %p stub!\n",
+            iface, left, right, bottom, top);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport1_Pick(IDirect3DRMViewport *iface,
+        LONG x, LONG y, IDirect3DRMPickedArray **visuals)
+{
+    FIXME("iface %p, x %d, y %d, visuals %p stub!\n", iface, x, y, visuals);
+
+    return E_NOTIMPL;
+}
+
+static BOOL WINAPI d3drm_viewport1_GetUniformScaling(IDirect3DRMViewport *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static LONG WINAPI d3drm_viewport1_GetX(IDirect3DRMViewport *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static LONG WINAPI d3drm_viewport1_GetY(IDirect3DRMViewport *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static DWORD WINAPI d3drm_viewport1_GetWidth(IDirect3DRMViewport *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static DWORD WINAPI d3drm_viewport1_GetHeight(IDirect3DRMViewport *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static D3DVALUE WINAPI d3drm_viewport1_GetField(IDirect3DRMViewport *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    return IDirect3DRMViewport2_GetField(&viewport->IDirect3DRMViewport2_iface);
+}
+
+static D3DVALUE WINAPI d3drm_viewport1_GetBack(IDirect3DRMViewport *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    return IDirect3DRMViewport2_GetBack(&viewport->IDirect3DRMViewport2_iface);
+}
+
+static D3DVALUE WINAPI d3drm_viewport1_GetFront(IDirect3DRMViewport *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    return IDirect3DRMViewport2_GetFront(&viewport->IDirect3DRMViewport2_iface);
+}
+
+static D3DRMPROJECTIONTYPE WINAPI d3drm_viewport1_GetProjection(IDirect3DRMViewport *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    return IDirect3DRMViewport2_GetProjection(&viewport->IDirect3DRMViewport2_iface);
+}
+
+static HRESULT WINAPI d3drm_viewport1_GetDirect3DViewport(IDirect3DRMViewport *iface,
+        IDirect3DViewport **viewport)
+{
+    FIXME("iface %p, viewport %p stub!\n", iface, viewport);
+
+    return E_NOTIMPL;
+}
+
+static const struct IDirect3DRMViewportVtbl d3drm_viewport1_vtbl =
+{
+    d3drm_viewport1_QueryInterface,
+    d3drm_viewport1_AddRef,
+    d3drm_viewport1_Release,
+    d3drm_viewport1_Clone,
+    d3drm_viewport1_AddDestroyCallback,
+    d3drm_viewport1_DeleteDestroyCallback,
+    d3drm_viewport1_SetAppData,
+    d3drm_viewport1_GetAppData,
+    d3drm_viewport1_SetName,
+    d3drm_viewport1_GetName,
+    d3drm_viewport1_GetClassName,
+    d3drm_viewport1_Init,
+    d3drm_viewport1_Clear,
+    d3drm_viewport1_Render,
+    d3drm_viewport1_SetFront,
+    d3drm_viewport1_SetBack,
+    d3drm_viewport1_SetField,
+    d3drm_viewport1_SetUniformScaling,
+    d3drm_viewport1_SetCamera,
+    d3drm_viewport1_SetProjection,
+    d3drm_viewport1_Transform,
+    d3drm_viewport1_InverseTransform,
+    d3drm_viewport1_Configure,
+    d3drm_viewport1_ForceUpdate,
+    d3drm_viewport1_SetPlane,
+    d3drm_viewport1_GetCamera,
+    d3drm_viewport1_GetDevice,
+    d3drm_viewport1_GetPlane,
+    d3drm_viewport1_Pick,
+    d3drm_viewport1_GetUniformScaling,
+    d3drm_viewport1_GetX,
+    d3drm_viewport1_GetY,
+    d3drm_viewport1_GetWidth,
+    d3drm_viewport1_GetHeight,
+    d3drm_viewport1_GetField,
+    d3drm_viewport1_GetBack,
+    d3drm_viewport1_GetFront,
+    d3drm_viewport1_GetProjection,
+    d3drm_viewport1_GetDirect3DViewport,
+};
+
+static HRESULT WINAPI d3drm_viewport2_QueryInterface(IDirect3DRMViewport2 *iface, REFIID riid, void **out)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
+
+    return d3drm_viewport1_QueryInterface(&viewport->IDirect3DRMViewport_iface, riid, out);
+}
+
+static ULONG WINAPI d3drm_viewport2_AddRef(IDirect3DRMViewport2 *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    return d3drm_viewport1_AddRef(&viewport->IDirect3DRMViewport_iface);
+}
+
+static ULONG WINAPI d3drm_viewport2_Release(IDirect3DRMViewport2 *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    return d3drm_viewport1_Release(&viewport->IDirect3DRMViewport_iface);
+}
+
+static HRESULT WINAPI d3drm_viewport2_Clone(IDirect3DRMViewport2 *iface,
+        IUnknown *outer, REFIID iid, void **out)
+{
+    FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_AddDestroyCallback(IDirect3DRMViewport2 *iface,
+        D3DRMOBJECTCALLBACK cb, void *ctx)
+{
+    FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_DeleteDestroyCallback(IDirect3DRMViewport2 *iface,
+        D3DRMOBJECTCALLBACK cb, void *ctx)
+{
+    FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_SetAppData(IDirect3DRMViewport2 *iface, DWORD data)
+{
+    FIXME("iface %p, data %#x stub!\n", iface, data);
+
+    return E_NOTIMPL;
+}
+
+static DWORD WINAPI d3drm_viewport2_GetAppData(IDirect3DRMViewport2 *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return 0;
+}
+
+static HRESULT WINAPI d3drm_viewport2_SetName(IDirect3DRMViewport2 *iface, const char *name)
+{
+    FIXME("iface %p, name %s stub!\n", iface, debugstr_a(name));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_GetName(IDirect3DRMViewport2 *iface, DWORD *size, char *name)
+{
+    FIXME("iface %p, size %p, name %p stub!\n", iface, size, name);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_GetClassName(IDirect3DRMViewport2 *iface, DWORD *size, char *name)
+{
+    TRACE("iface %p, size %p, name %p.\n", iface, size, name);
+
+    if (!size || *size < strlen("Viewport") || !name)
+        return E_INVALIDARG;
+
+    strcpy(name, "Viewport");
+    *size = sizeof("Viewport");
+
+    return D3DRM_OK;
+}
+
+static HRESULT WINAPI d3drm_viewport2_Init(IDirect3DRMViewport2 *iface, IDirect3DRMDevice3 *device,
+        IDirect3DRMFrame3 *camera, DWORD x, DWORD y, DWORD width, DWORD height)
+{
+    FIXME("iface %p, device %p, camera %p, x %u, y %u, width %u, height %u stub!\n",
+            iface, device, camera, x, y, width, height);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_Clear(IDirect3DRMViewport2 *iface, DWORD flags)
+{
+    FIXME("iface %p, flags %#x.\n", iface, flags);
+
+    return D3DRM_OK;
+}
+
+static HRESULT WINAPI d3drm_viewport2_Render(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 *frame)
+{
+    FIXME("iface %p, frame %p stub!\n", iface, frame);
+
+    return D3DRM_OK;
+}
+
+static HRESULT WINAPI d3drm_viewport2_SetFront(IDirect3DRMViewport2 *iface, D3DVALUE front)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p, front %.8e.\n", iface, front);
+
+    viewport->front = front;
+
+    return D3DRM_OK;
+}
+
+static HRESULT WINAPI d3drm_viewport2_SetBack(IDirect3DRMViewport2 *iface, D3DVALUE back)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p, back %.8e.\n", iface, back);
+
+    viewport->back = back;
+
+    return D3DRM_OK;
+}
+
+static HRESULT WINAPI d3drm_viewport2_SetField(IDirect3DRMViewport2 *iface, D3DVALUE field)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p, field %.8e.\n", iface, field);
+
+    viewport->field = field;
+
+    return D3DRM_OK;
+}
+
+static HRESULT WINAPI d3drm_viewport2_SetUniformScaling(IDirect3DRMViewport2 *iface, BOOL b)
+{
+    FIXME("iface %p, b %#x stub!\n", iface, b);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_SetCamera(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 *camera)
+{
+    FIXME("iface %p, camera %p stub!\n", iface, camera);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_SetProjection(IDirect3DRMViewport2 *iface, D3DRMPROJECTIONTYPE type)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p, type %#x.\n", iface, type);
+
+    viewport->projection = type;
+
+    return D3DRM_OK;
+}
+
+static HRESULT WINAPI d3drm_viewport2_Transform(IDirect3DRMViewport2 *iface, D3DRMVECTOR4D *d, D3DVECTOR *s)
+{
+    FIXME("iface %p, d %p, s %p stub!\n", iface, d, s);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_InverseTransform(IDirect3DRMViewport2 *iface, D3DVECTOR *d, D3DRMVECTOR4D *s)
+{
+    FIXME("iface %p, d %p, s %p stub!\n", iface, d, s);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_Configure(IDirect3DRMViewport2 *iface,
+        LONG x, LONG y, DWORD width, DWORD height)
+{
+    FIXME("iface %p, x %d, y %d, width %u, height %u stub!\n", iface, x, y, width, height);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_ForceUpdate(IDirect3DRMViewport2* iface,
+        DWORD x1, DWORD y1, DWORD x2, DWORD y2)
+{
+    FIXME("iface %p, x1 %u, y1 %u, x2 %u, y2 %u stub!\n", iface, x1, y1, x2, y2);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_SetPlane(IDirect3DRMViewport2 *iface,
+        D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top)
+{
+    FIXME("iface %p, left %.8e, right %.8e, bottom %.8e, top %.8e stub!\n",
+            iface, left, right, bottom, top);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_GetCamera(IDirect3DRMViewport2 *iface, IDirect3DRMFrame3 **camera)
+{
+    FIXME("iface %p, camera %p stub!\n", iface, camera);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_GetDevice(IDirect3DRMViewport2 *iface, IDirect3DRMDevice3 **device)
+{
+    FIXME("iface %p, device %p stub!\n", iface, device);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_GetPlane(IDirect3DRMViewport2 *iface,
+        D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top)
+{
+    FIXME("iface %p, left %p, right %p, bottom %p, top %p stub!\n",
+            iface, left, right, bottom, top);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_Pick(IDirect3DRMViewport2 *iface,
+        LONG x, LONG y, IDirect3DRMPickedArray **visuals)
+{
+    FIXME("iface %p, x %d, y %d, visuals %p stub!\n", iface, x, y, visuals);
+
+    return E_NOTIMPL;
+}
+
+static BOOL WINAPI d3drm_viewport2_GetUniformScaling(IDirect3DRMViewport2 *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static LONG WINAPI d3drm_viewport2_GetX(IDirect3DRMViewport2 *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static LONG WINAPI d3drm_viewport2_GetY(IDirect3DRMViewport2 *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static DWORD WINAPI d3drm_viewport2_GetWidth(IDirect3DRMViewport2 *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static DWORD WINAPI d3drm_viewport2_GetHeight(IDirect3DRMViewport2 *iface)
+{
+    FIXME("iface %p stub!\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static D3DVALUE WINAPI d3drm_viewport2_GetField(IDirect3DRMViewport2 *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    return viewport->field;
+}
+
+static D3DVALUE WINAPI d3drm_viewport2_GetBack(IDirect3DRMViewport2 *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    return viewport->back;
+}
+
+static D3DVALUE WINAPI d3drm_viewport2_GetFront(IDirect3DRMViewport2 *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    return viewport->front;
+}
+
+static D3DRMPROJECTIONTYPE WINAPI d3drm_viewport2_GetProjection(IDirect3DRMViewport2 *iface)
+{
+    struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
+
+    TRACE("iface %p.\n", iface);
+
+    return viewport->projection;
+}
+
+static HRESULT WINAPI d3drm_viewport2_GetDirect3DViewport(IDirect3DRMViewport2 *iface,
+        IDirect3DViewport **viewport)
+{
+    FIXME("iface %p, viewport %p stub!\n", iface, viewport);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_TransformVectors(IDirect3DRMViewport2 *iface,
+        DWORD vector_count, D3DRMVECTOR4D *dst, D3DVECTOR *src)
+{
+    FIXME("iface %p, vector_count %u, dst %p, src %p stub!\n", iface, vector_count, dst, src);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI d3drm_viewport2_InverseTransformVectors(IDirect3DRMViewport2 *iface,
+        DWORD vector_count, D3DVECTOR *dst, D3DRMVECTOR4D *src)
+{
+    FIXME("iface %p, vector_count %u, dst %p, src %p stub!\n", iface, vector_count, dst, src);
+
+    return E_NOTIMPL;
+}
+
+static const struct IDirect3DRMViewport2Vtbl d3drm_viewport2_vtbl =
+{
+    d3drm_viewport2_QueryInterface,
+    d3drm_viewport2_AddRef,
+    d3drm_viewport2_Release,
+    d3drm_viewport2_Clone,
+    d3drm_viewport2_AddDestroyCallback,
+    d3drm_viewport2_DeleteDestroyCallback,
+    d3drm_viewport2_SetAppData,
+    d3drm_viewport2_GetAppData,
+    d3drm_viewport2_SetName,
+    d3drm_viewport2_GetName,
+    d3drm_viewport2_GetClassName,
+    d3drm_viewport2_Init,
+    d3drm_viewport2_Clear,
+    d3drm_viewport2_Render,
+    d3drm_viewport2_SetFront,
+    d3drm_viewport2_SetBack,
+    d3drm_viewport2_SetField,
+    d3drm_viewport2_SetUniformScaling,
+    d3drm_viewport2_SetCamera,
+    d3drm_viewport2_SetProjection,
+    d3drm_viewport2_Transform,
+    d3drm_viewport2_InverseTransform,
+    d3drm_viewport2_Configure,
+    d3drm_viewport2_ForceUpdate,
+    d3drm_viewport2_SetPlane,
+    d3drm_viewport2_GetCamera,
+    d3drm_viewport2_GetDevice,
+    d3drm_viewport2_GetPlane,
+    d3drm_viewport2_Pick,
+    d3drm_viewport2_GetUniformScaling,
+    d3drm_viewport2_GetX,
+    d3drm_viewport2_GetY,
+    d3drm_viewport2_GetWidth,
+    d3drm_viewport2_GetHeight,
+    d3drm_viewport2_GetField,
+    d3drm_viewport2_GetBack,
+    d3drm_viewport2_GetFront,
+    d3drm_viewport2_GetProjection,
+    d3drm_viewport2_GetDirect3DViewport,
+    d3drm_viewport2_TransformVectors,
+    d3drm_viewport2_InverseTransformVectors,
+};
+
+HRESULT Direct3DRMViewport_create(REFIID riid, IUnknown **out)
+{
+    struct d3drm_viewport *object;
+
+    TRACE("riid %s, out %p.\n", debugstr_guid(riid), out);
+
+    if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
+        return E_OUTOFMEMORY;
+
+    object->IDirect3DRMViewport_iface.lpVtbl = &d3drm_viewport1_vtbl;
+    object->IDirect3DRMViewport2_iface.lpVtbl = &d3drm_viewport2_vtbl;
+    object->ref = 1;
+
+    if (IsEqualGUID(riid, &IID_IDirect3DRMViewport2))
+        *out = (IUnknown *)&object->IDirect3DRMViewport2_iface;
+    else
+        *out = (IUnknown *)&object->IDirect3DRMViewport_iface;
+
+    return S_OK;
+}
-- 
1.7.10.4




More information about the wine-patches mailing list