diff --git a/dlls/d3drm/d3drm.c b/dlls/d3drm/d3drm.c index 958fe85976a..3ce374ded5b 100644 --- a/dlls/d3drm/d3drm.c +++ b/dlls/d3drm/d3drm.c @@ -152,7 +152,7 @@ static HRESULT WINAPI IDirect3DRMImpl_CreateFrame(IDirect3DRM* iface, LPDIRECT3D if (pFrameParent) FIXME("(%p/%p): Parent frame not yet supported\n", iface, This); - return Direct3DRMFrame_create((IUnknown**)ppFrame); + return Direct3DRMFrame_create(&IID_IDirect3DRMFrame, (IUnknown**)ppFrame); } static HRESULT WINAPI IDirect3DRMImpl_CreateMesh(IDirect3DRM* iface, LPDIRECT3DRMMESH * ppMesh) @@ -519,7 +519,7 @@ static HRESULT WINAPI IDirect3DRM2Impl_CreateFrame(IDirect3DRM2* iface, if (pFrameParent) FIXME("(%p/%p): Parent frame not yet supported\n", iface, This); - return Direct3DRMFrame_create((IUnknown**)ppFrame); + return Direct3DRMFrame_create(&IID_IDirect3DRMFrame2, (IUnknown**)ppFrame); } static HRESULT WINAPI IDirect3DRM2Impl_CreateMesh(IDirect3DRM2* iface, LPDIRECT3DRMMESH * ppMesh) @@ -943,9 +943,12 @@ static HRESULT WINAPI IDirect3DRM3Impl_CreateFrame(IDirect3DRM3* iface, { IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface); - FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, FrameParent, Frame); + TRACE("(%p/%p)->(%p,%p)\n", iface, This, FrameParent, Frame); - return E_NOTIMPL; + if (FrameParent) + FIXME("(%p/%p): Parent frame not yet supported\n", iface, This); + + return Direct3DRMFrame_create(&IID_IDirect3DRMFrame3, (IUnknown**)Frame); } static HRESULT WINAPI IDirect3DRM3Impl_CreateMesh(IDirect3DRM3* iface, LPDIRECT3DRMMESH* Mesh) diff --git a/dlls/d3drm/d3drm_private.h b/dlls/d3drm/d3drm_private.h index 5572e307446..e1be76387ba 100644 --- a/dlls/d3drm/d3drm_private.h +++ b/dlls/d3drm/d3drm_private.h @@ -27,7 +27,7 @@ #include "d3drm.h" HRESULT Direct3DRM_create(IUnknown** ppObj) DECLSPEC_HIDDEN; -HRESULT Direct3DRMFrame_create(IUnknown** ppObj) DECLSPEC_HIDDEN; +HRESULT Direct3DRMFrame_create(REFIID riid, IUnknown** ppObj) DECLSPEC_HIDDEN; HRESULT Direct3DRMMeshBuilder_create(REFIID riid, IUnknown** ppObj) DECLSPEC_HIDDEN; #endif /* __D3DRM_PRIVATE_INCLUDED__ */ diff --git a/dlls/d3drm/frame.c b/dlls/d3drm/frame.c index 29cceb4f74f..212f7dd57bc 100644 --- a/dlls/d3drm/frame.c +++ b/dlls/d3drm/frame.c @@ -1,10 +1,7 @@ /* * Implementation of IDirect3DRMFrame Interface * - * Copyright 2011 André Hentschel - * - * This file contains the (internal) driver registration functions, - * driver enumeration APIs and DirectDraw creation functions. + * Copyright 2011, 2012 André Hentschel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -34,17 +31,24 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3drm); typedef struct { IDirect3DRMFrame2 IDirect3DRMFrame2_iface; + IDirect3DRMFrame3 IDirect3DRMFrame3_iface; LONG ref; } IDirect3DRMFrameImpl; static const struct IDirect3DRMFrame2Vtbl Direct3DRMFrame2_Vtbl; +static const struct IDirect3DRMFrame3Vtbl Direct3DRMFrame3_Vtbl; static inline IDirect3DRMFrameImpl *impl_from_IDirect3DRMFrame2(IDirect3DRMFrame2 *iface) { return CONTAINING_RECORD(iface, IDirect3DRMFrameImpl, IDirect3DRMFrame2_iface); } -HRESULT Direct3DRMFrame_create(IUnknown** ppObj) +static inline IDirect3DRMFrameImpl *impl_from_IDirect3DRMFrame3(IDirect3DRMFrame3 *iface) +{ + return CONTAINING_RECORD(iface, IDirect3DRMFrameImpl, IDirect3DRMFrame3_iface); +} + +HRESULT Direct3DRMFrame_create(REFIID riid, IUnknown** ppObj) { IDirect3DRMFrameImpl* object; @@ -58,9 +62,13 @@ HRESULT Direct3DRMFrame_create(IUnknown** ppObj) } object->IDirect3DRMFrame2_iface.lpVtbl = &Direct3DRMFrame2_Vtbl; + object->IDirect3DRMFrame3_iface.lpVtbl = &Direct3DRMFrame3_Vtbl; object->ref = 1; - *ppObj = (IUnknown*)object; + if (IsEqualGUID(riid, &IID_IDirect3DRMFrame3)) + *ppObj = (IUnknown*)&object->IDirect3DRMFrame3_iface; + else + *ppObj = (IUnknown*)&object->IDirect3DRMFrame2_iface; return S_OK; } @@ -81,6 +89,10 @@ static HRESULT WINAPI IDirect3DRMFrame2Impl_QueryInterface(IDirect3DRMFrame2* if { *object = &This->IDirect3DRMFrame2_iface; } + else if(IsEqualGUID(riid, &IID_IDirect3DRMFrame3)) + { + *object = &This->IDirect3DRMFrame3_iface; + } else { FIXME("interface %s not implemented\n", debugstr_guid(riid)); @@ -942,3 +954,1012 @@ static const struct IDirect3DRMFrame2Vtbl Direct3DRMFrame2_Vtbl = IDirect3DRMFrame2Impl_GetInheritAxes, IDirect3DRMFrame2Impl_GetHierarchyBox }; + + +/*** IUnknown methods ***/ +static HRESULT WINAPI IDirect3DRMFrame3Impl_QueryInterface(IDirect3DRMFrame3* iface, + REFIID riid, void** object) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + return IDirect3DRMFrame_QueryInterface(&This->IDirect3DRMFrame2_iface, riid, object); +} + +static ULONG WINAPI IDirect3DRMFrame3Impl_AddRef(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + TRACE("(%p)\n", This); + + return InterlockedIncrement(&This->ref); +} + +static ULONG WINAPI IDirect3DRMFrame3Impl_Release(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + ULONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p)\n", This); + + if (!ref) + HeapFree(GetProcessHeap(), 0, This); + + return ref; +} + +/*** IDirect3DRMObject methods ***/ +static HRESULT WINAPI IDirect3DRMFrame3Impl_Clone(IDirect3DRMFrame3* iface, + LPUNKNOWN unkwn, REFIID riid, + LPVOID* object) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p, %s, %p): stub\n", iface, This, unkwn, debugstr_guid(riid), object); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_AddDestroyCallback(IDirect3DRMFrame3* iface, + D3DRMOBJECTCALLBACK cb, + LPVOID argument) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteDestroyCallback(IDirect3DRMFrame3* iface, + D3DRMOBJECTCALLBACK cb, + LPVOID argument) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, cb, argument); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetAppData(IDirect3DRMFrame3* iface, + DWORD data) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, data); + + return E_NOTIMPL; +} + +static DWORD WINAPI IDirect3DRMFrame3Impl_GetAppData(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return 0; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetName(IDirect3DRMFrame3* iface, LPCSTR name) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%s): stub\n", iface, This, name); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetName(IDirect3DRMFrame3* iface, + LPDWORD size, LPSTR name) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetClassName(IDirect3DRMFrame3* iface, + LPDWORD size, LPSTR name) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, size, name); + + return E_NOTIMPL; +} + +/*** IDirect3DRMFrame methods ***/ +static HRESULT WINAPI IDirect3DRMFrame3Impl_AddChild(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 child) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, child); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_AddLight(IDirect3DRMFrame3* iface, + LPDIRECT3DRMLIGHT light) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, light); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_AddMoveCallback(IDirect3DRMFrame3* iface, + D3DRMFRAME3MOVECALLBACK cb, VOID *arg, + DWORD flags) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface, This, cb, arg, flags); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_AddTransform(IDirect3DRMFrame3* iface, + D3DRMCOMBINETYPE type, + D3DRMMATRIX4D matrix) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u,%p): stub\n", iface, This, type, matrix); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_AddTranslation(IDirect3DRMFrame3* iface, + D3DRMCOMBINETYPE type, + D3DVALUE x, D3DVALUE y, D3DVALUE z) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface, This, type, x, y, z); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_AddScale(IDirect3DRMFrame3* iface, + D3DRMCOMBINETYPE type, + D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u,%f,%f,%f): stub\n", iface, This, type, sx, sy, sz); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_AddRotation(IDirect3DRMFrame3* iface, + D3DRMCOMBINETYPE type, + D3DVALUE x, D3DVALUE y, D3DVALUE z, + D3DVALUE theta) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u,%f,%f,%f,%f): stub\n", iface, This, type, x, y, z, theta); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_AddVisual(IDirect3DRMFrame3* iface, LPUNKNOWN vis) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, vis); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetChildren(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAMEARRAY *children) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, children); + + return E_NOTIMPL; +} + +static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetColor(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return 0; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetLights(IDirect3DRMFrame3* iface, + LPDIRECT3DRMLIGHTARRAY *lights) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, lights); + + return E_NOTIMPL; +} + +static D3DRMMATERIALMODE WINAPI IDirect3DRMFrame3Impl_GetMaterialMode(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return D3DRMMATERIAL_FROMPARENT; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetParent(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 * frame) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, frame); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetPosition(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + LPD3DVECTOR return_position) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, return_position); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetRotation(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + LPD3DVECTOR axis, LPD3DVALUE return_theta) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, reference, axis, return_theta); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetScene(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 * frame) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, frame); + + return E_NOTIMPL; +} + +static D3DRMSORTMODE WINAPI IDirect3DRMFrame3Impl_GetSortMode(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return D3DRMSORT_FROMPARENT; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetTexture(IDirect3DRMFrame3* iface, + LPDIRECT3DRMTEXTURE3 * tex) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, tex); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetTransform(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + D3DRMMATRIX4D return_matrix) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, return_matrix); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetVelocity(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + LPD3DVECTOR return_velocity, + BOOL with_rotation) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p,%d): stub\n", iface, This, reference, return_velocity, with_rotation); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetOrientation(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + LPD3DVECTOR dir, LPD3DVECTOR up) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, reference, dir, up); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetVisuals(IDirect3DRMFrame3* iface, LPDWORD num, + LPUNKNOWN *visuals) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, num, visuals); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_InverseTransform(IDirect3DRMFrame3* iface, + D3DVECTOR *d, D3DVECTOR *s) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, d, s); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_Load(IDirect3DRMFrame3* iface, LPVOID filename, + LPVOID name, D3DRMLOADOPTIONS loadflags, + D3DRMLOADTEXTURE3CALLBACK cb, LPVOID lpArg) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p,%u,%p,%p): stub\n", iface, This, filename, name, loadflags, cb, lpArg); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_LookAt(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 target, + LPDIRECT3DRMFRAME3 reference, + D3DRMFRAMECONSTRAINT constraint) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p,%u): stub\n", iface, This, target, reference, constraint); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_Move(IDirect3DRMFrame3* iface, D3DVALUE delta) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%f): stub\n", iface, This, delta); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteChild(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 frame) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, frame); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteLight(IDirect3DRMFrame3* iface, + LPDIRECT3DRMLIGHT light) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, light); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteMoveCallback(IDirect3DRMFrame3* iface, + D3DRMFRAME3MOVECALLBACK cb, + VOID *arg) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, arg); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteVisual(IDirect3DRMFrame3* iface, LPUNKNOWN vis) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, vis); + + return E_NOTIMPL; +} + +static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetSceneBackground(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return 0; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetSceneBackgroundDepth(IDirect3DRMFrame3* iface, + LPDIRECTDRAWSURFACE * surface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, surface); + + return E_NOTIMPL; +} + +static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetSceneFogColor(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return 0; +} + +static BOOL WINAPI IDirect3DRMFrame3Impl_GetSceneFogEnable(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return FALSE; +} + +static D3DRMFOGMODE WINAPI IDirect3DRMFrame3Impl_GetSceneFogMode(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return D3DRMFOG_LINEAR; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetSceneFogParams(IDirect3DRMFrame3* iface, + D3DVALUE *return_start, + D3DVALUE *return_end, + D3DVALUE *return_density) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, return_start, return_end, return_density); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackground(IDirect3DRMFrame3* iface, + D3DCOLOR color) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, color); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackgroundRGB(IDirect3DRMFrame3* iface, + D3DVALUE red, D3DVALUE green, + D3DVALUE blue) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, red, green, blue); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackgroundDepth(IDirect3DRMFrame3* iface, + LPDIRECTDRAWSURFACE surface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, surface); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneBackgroundImage(IDirect3DRMFrame3* iface, + LPDIRECT3DRMTEXTURE3 texture) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, texture); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogEnable(IDirect3DRMFrame3* iface, BOOL enable) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%d): stub\n", iface, This, enable); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogColor(IDirect3DRMFrame3* iface, + D3DCOLOR color) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, color); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogMode(IDirect3DRMFrame3* iface, + D3DRMFOGMODE mode) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, mode); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogParams(IDirect3DRMFrame3* iface, + D3DVALUE start, D3DVALUE end, + D3DVALUE density) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, start, end, density); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetColor(IDirect3DRMFrame3* iface, D3DCOLOR color) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, color); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetColorRGB(IDirect3DRMFrame3* iface, D3DVALUE red, + D3DVALUE green, D3DVALUE blue) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%f,%f,%f): stub\n", iface, This, red, green, blue); + + return E_NOTIMPL; +} + +static D3DRMZBUFFERMODE WINAPI IDirect3DRMFrame3Impl_GetZbufferMode(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return D3DRMZBUFFER_FROMPARENT; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetMaterialMode(IDirect3DRMFrame3* iface, + D3DRMMATERIALMODE mode) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, mode); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetOrientation(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, + D3DVALUE ux, D3DVALUE uy, D3DVALUE uz ) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%f,%f,%f,%f,%f,%f): stub\n", iface, This, reference, + dx, dy, dz, ux, uy, uz); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetPosition(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + D3DVALUE x, D3DVALUE y, D3DVALUE z) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%f,%f,%f): stub\n", iface, This, reference, x, y, z); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetRotation(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + D3DVALUE x, D3DVALUE y, D3DVALUE z, + D3DVALUE theta) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%f,%f,%f,%f): stub\n", iface, This, reference, x, y, z, theta); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSortMode(IDirect3DRMFrame3* iface, + D3DRMSORTMODE mode) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, mode); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetTexture(IDirect3DRMFrame3* iface, + LPDIRECT3DRMTEXTURE3 texture) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, texture); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetVelocity(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + D3DVALUE x, D3DVALUE y, D3DVALUE z, + BOOL with_rotation) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%f,%f,%f,%d): stub\n", iface, This, reference, x, y, z, with_rotation); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetZbufferMode(IDirect3DRMFrame3* iface, + D3DRMZBUFFERMODE mode) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, mode); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_Transform(IDirect3DRMFrame3* iface, D3DVECTOR *d, + D3DVECTOR *s) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, d, s); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetBox(IDirect3DRMFrame3* iface, LPD3DRMBOX box) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, box); + + return E_NOTIMPL; +} + +static BOOL WINAPI IDirect3DRMFrame3Impl_GetBoxEnable(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetAxes(IDirect3DRMFrame3* iface, + LPD3DVECTOR dir, LPD3DVECTOR up) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, dir, up); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetMaterial(IDirect3DRMFrame3* iface, + LPDIRECT3DRMMATERIAL2 *material) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, material); + + return E_NOTIMPL; +} + +static BOOL WINAPI IDirect3DRMFrame3Impl_GetInheritAxes(IDirect3DRMFrame3* iface) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(): stub\n", iface, This); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetHierarchyBox(IDirect3DRMFrame3* iface, + LPD3DRMBOX box) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, box); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetBox(IDirect3DRMFrame3* iface, LPD3DRMBOX box) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, box); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetBoxEnable(IDirect3DRMFrame3* iface, BOOL enable) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, enable); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetAxes(IDirect3DRMFrame3* iface, + D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, + D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%f,%f,%f,%f,%f,%f): stub\n", iface, This, dx, dy, dz, ux, uy, uz); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetInheritAxes(IDirect3DRMFrame3* iface, + BOOL inherit_from_parent) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, inherit_from_parent); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetMaterial(IDirect3DRMFrame3* iface, + LPDIRECT3DRMMATERIAL2 material) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, material); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetQuaternion(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + D3DRMQUATERNION *q) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, reference, q); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_RayPick(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, LPD3DRMRAY ray, + DWORD flags, + LPDIRECT3DRMPICKED2ARRAY *return_visuals) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%p,%u,%p): stub\n", iface, This, reference, ray, flags, return_visuals); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_Save(IDirect3DRMFrame3* iface, LPCSTR filename, + D3DRMXOFFORMAT d3dFormat, + D3DRMSAVEOPTIONS d3dSaveFlags) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%u,%u): stub\n", iface, This, filename, d3dFormat, d3dSaveFlags); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_TransformVectors(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + DWORD num, LPD3DVECTOR dst, + LPD3DVECTOR src) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface, This, reference, num, dst, src); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_InverseTransformVectors(IDirect3DRMFrame3* iface, + LPDIRECT3DRMFRAME3 reference, + DWORD num, LPD3DVECTOR dst, + LPD3DVECTOR src) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p,%u,%p,%p): stub\n", iface, This, reference, num, dst, src); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetTraversalOptions(IDirect3DRMFrame3* iface, + DWORD flags) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, flags); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetTraversalOptions(IDirect3DRMFrame3* iface, + LPDWORD flags) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, flags); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetSceneFogMethod(IDirect3DRMFrame3* iface, + DWORD flags) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%u): stub\n", iface, This, flags); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetSceneFogMethod(IDirect3DRMFrame3* iface, + LPDWORD flags) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, flags); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_SetMaterialOverride(IDirect3DRMFrame3* iface, + LPD3DRMMATERIALOVERRIDE override) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, override); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMFrame3Impl_GetMaterialOverride(IDirect3DRMFrame3* iface, + LPD3DRMMATERIALOVERRIDE override) +{ + IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); + + FIXME("(%p/%p)->(%p): stub\n", iface, This, override); + + return E_NOTIMPL; +} + +static const struct IDirect3DRMFrame3Vtbl Direct3DRMFrame3_Vtbl = +{ + /*** IUnknown methods ***/ + IDirect3DRMFrame3Impl_QueryInterface, + IDirect3DRMFrame3Impl_AddRef, + IDirect3DRMFrame3Impl_Release, + /*** IDirect3DRMObject methods ***/ + IDirect3DRMFrame3Impl_Clone, + IDirect3DRMFrame3Impl_AddDestroyCallback, + IDirect3DRMFrame3Impl_DeleteDestroyCallback, + IDirect3DRMFrame3Impl_SetAppData, + IDirect3DRMFrame3Impl_GetAppData, + IDirect3DRMFrame3Impl_SetName, + IDirect3DRMFrame3Impl_GetName, + IDirect3DRMFrame3Impl_GetClassName, + /*** IDirect3DRMFrame3 methods ***/ + IDirect3DRMFrame3Impl_AddChild, + IDirect3DRMFrame3Impl_AddLight, + IDirect3DRMFrame3Impl_AddMoveCallback, + IDirect3DRMFrame3Impl_AddTransform, + IDirect3DRMFrame3Impl_AddTranslation, + IDirect3DRMFrame3Impl_AddScale, + IDirect3DRMFrame3Impl_AddRotation, + IDirect3DRMFrame3Impl_AddVisual, + IDirect3DRMFrame3Impl_GetChildren, + IDirect3DRMFrame3Impl_GetColor, + IDirect3DRMFrame3Impl_GetLights, + IDirect3DRMFrame3Impl_GetMaterialMode, + IDirect3DRMFrame3Impl_GetParent, + IDirect3DRMFrame3Impl_GetPosition, + IDirect3DRMFrame3Impl_GetRotation, + IDirect3DRMFrame3Impl_GetScene, + IDirect3DRMFrame3Impl_GetSortMode, + IDirect3DRMFrame3Impl_GetTexture, + IDirect3DRMFrame3Impl_GetTransform, + IDirect3DRMFrame3Impl_GetVelocity, + IDirect3DRMFrame3Impl_GetOrientation, + IDirect3DRMFrame3Impl_GetVisuals, + IDirect3DRMFrame3Impl_InverseTransform, + IDirect3DRMFrame3Impl_Load, + IDirect3DRMFrame3Impl_LookAt, + IDirect3DRMFrame3Impl_Move, + IDirect3DRMFrame3Impl_DeleteChild, + IDirect3DRMFrame3Impl_DeleteLight, + IDirect3DRMFrame3Impl_DeleteMoveCallback, + IDirect3DRMFrame3Impl_DeleteVisual, + IDirect3DRMFrame3Impl_GetSceneBackground, + IDirect3DRMFrame3Impl_GetSceneBackgroundDepth, + IDirect3DRMFrame3Impl_GetSceneFogColor, + IDirect3DRMFrame3Impl_GetSceneFogEnable, + IDirect3DRMFrame3Impl_GetSceneFogMode, + IDirect3DRMFrame3Impl_GetSceneFogParams, + IDirect3DRMFrame3Impl_SetSceneBackground, + IDirect3DRMFrame3Impl_SetSceneBackgroundRGB, + IDirect3DRMFrame3Impl_SetSceneBackgroundDepth, + IDirect3DRMFrame3Impl_SetSceneBackgroundImage, + IDirect3DRMFrame3Impl_SetSceneFogEnable, + IDirect3DRMFrame3Impl_SetSceneFogColor, + IDirect3DRMFrame3Impl_SetSceneFogMode, + IDirect3DRMFrame3Impl_SetSceneFogParams, + IDirect3DRMFrame3Impl_SetColor, + IDirect3DRMFrame3Impl_SetColorRGB, + IDirect3DRMFrame3Impl_GetZbufferMode, + IDirect3DRMFrame3Impl_SetMaterialMode, + IDirect3DRMFrame3Impl_SetOrientation, + IDirect3DRMFrame3Impl_SetPosition, + IDirect3DRMFrame3Impl_SetRotation, + IDirect3DRMFrame3Impl_SetSortMode, + IDirect3DRMFrame3Impl_SetTexture, + IDirect3DRMFrame3Impl_SetVelocity, + IDirect3DRMFrame3Impl_SetZbufferMode, + IDirect3DRMFrame3Impl_Transform, + IDirect3DRMFrame3Impl_GetBox, + IDirect3DRMFrame3Impl_GetBoxEnable, + IDirect3DRMFrame3Impl_GetAxes, + IDirect3DRMFrame3Impl_GetMaterial, + IDirect3DRMFrame3Impl_GetInheritAxes, + IDirect3DRMFrame3Impl_GetHierarchyBox, + IDirect3DRMFrame3Impl_SetBox, + IDirect3DRMFrame3Impl_SetBoxEnable, + IDirect3DRMFrame3Impl_SetAxes, + IDirect3DRMFrame3Impl_SetInheritAxes, + IDirect3DRMFrame3Impl_SetMaterial, + IDirect3DRMFrame3Impl_SetQuaternion, + IDirect3DRMFrame3Impl_RayPick, + IDirect3DRMFrame3Impl_Save, + IDirect3DRMFrame3Impl_TransformVectors, + IDirect3DRMFrame3Impl_InverseTransformVectors, + IDirect3DRMFrame3Impl_SetTraversalOptions, + IDirect3DRMFrame3Impl_GetTraversalOptions, + IDirect3DRMFrame3Impl_SetSceneFogMethod, + IDirect3DRMFrame3Impl_GetSceneFogMethod, + IDirect3DRMFrame3Impl_SetMaterialOverride, + IDirect3DRMFrame3Impl_GetMaterialOverride +}; diff --git a/include/d3drmobj.h b/include/d3drmobj.h index 269445f0aeb..c5f69b3c4aa 100644 --- a/include/d3drmobj.h +++ b/include/d3drmobj.h @@ -1609,6 +1609,7 @@ DECLARE_INTERFACE_(IDirect3DRMFrame3,IDirect3DRMVisual) STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME3 child) PURE; STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE; STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg, DWORD flags) PURE; + STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE; STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE; STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE; STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;