d3drm: Add IDirect3DRM3 interface.

This commit is contained in:
André Hentschel 2011-12-29 02:26:40 +01:00 committed by Alexandre Julliard
parent 7164806b56
commit 723ae056b9

View File

@ -2,6 +2,7 @@
* Implementation of IDirect3DRM Interface
*
* Copyright 2010 Christian Costa
* Copyright 2011 André Hentschel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -32,11 +33,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
typedef struct {
IDirect3DRM IDirect3DRM_iface;
IDirect3DRM2 IDirect3DRM2_iface;
IDirect3DRM3 IDirect3DRM3_iface;
LONG ref;
} IDirect3DRMImpl;
static const struct IDirect3DRMVtbl Direct3DRM_Vtbl;
static const struct IDirect3DRM2Vtbl Direct3DRM2_Vtbl;
static const struct IDirect3DRM3Vtbl Direct3DRM3_Vtbl;
static inline IDirect3DRMImpl *impl_from_IDirect3DRM(IDirect3DRM *iface)
{
@ -48,6 +51,11 @@ static inline IDirect3DRMImpl *impl_from_IDirect3DRM2(IDirect3DRM2 *iface)
return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM2_iface);
}
static inline IDirect3DRMImpl *impl_from_IDirect3DRM3(IDirect3DRM3 *iface)
{
return CONTAINING_RECORD(iface, IDirect3DRMImpl, IDirect3DRM3_iface);
}
HRESULT Direct3DRM_create(IUnknown** ppObj)
{
IDirect3DRMImpl* object;
@ -63,6 +71,7 @@ HRESULT Direct3DRM_create(IUnknown** ppObj)
object->IDirect3DRM_iface.lpVtbl = &Direct3DRM_Vtbl;
object->IDirect3DRM2_iface.lpVtbl = &Direct3DRM2_Vtbl;
object->IDirect3DRM3_iface.lpVtbl = &Direct3DRM3_Vtbl;
object->ref = 1;
*ppObj = (IUnknown*)&object->IDirect3DRM_iface;
@ -88,6 +97,10 @@ static HRESULT WINAPI IDirect3DRMImpl_QueryInterface(IDirect3DRM* iface, REFIID
{
*ppvObject = &This->IDirect3DRM2_iface;
}
else if(IsEqualGUID(riid, &IID_IDirect3DRM3))
{
*ppvObject = &This->IDirect3DRM3_iface;
}
else
{
FIXME("interface %s not implemented\n", debugstr_guid(riid));
@ -874,3 +887,481 @@ static const struct IDirect3DRM2Vtbl Direct3DRM2_Vtbl =
IDirect3DRM2Impl_Tick,
IDirect3DRM2Impl_CreateProgressiveMesh
};
/*** IUnknown methods ***/
static HRESULT WINAPI IDirect3DRM3Impl_QueryInterface(IDirect3DRM3* iface, REFIID riid,
void** ppvObject)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
return IDirect3DRM_QueryInterface(&This->IDirect3DRM_iface, riid, ppvObject);
}
static ULONG WINAPI IDirect3DRM3Impl_AddRef(IDirect3DRM3* iface)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
TRACE("(%p/%p)\n", iface, This);
return InterlockedIncrement(&This->ref);
}
static ULONG WINAPI IDirect3DRM3Impl_Release(IDirect3DRM3* iface)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
ULONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p/%p)\n", iface, This);
if (!ref)
HeapFree(GetProcessHeap(), 0, This);
return ref;
}
/*** IDirect3DRM3 methods ***/
static HRESULT WINAPI IDirect3DRM3Impl_CreateObject(IDirect3DRM3* iface, REFCLSID rclsid,
LPUNKNOWN unkwn, REFIID riid, LPVOID* object)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%s,%p,%s,%p): stub\n", iface, This, debugstr_guid(rclsid), unkwn,
debugstr_guid(riid), object);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateFrame(IDirect3DRM3* iface,
LPDIRECT3DRMFRAME3 FrameParent,
LPDIRECT3DRMFRAME3* Frame)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, FrameParent, Frame);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateMesh(IDirect3DRM3* iface, LPDIRECT3DRMMESH* Mesh)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p): stub\n", iface, This, Mesh);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateMeshBuilder(IDirect3DRM3* iface,
LPDIRECT3DRMMESHBUILDER3* ppMeshBuilder)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
TRACE("(%p/%p)->(%p)\n", iface, This, ppMeshBuilder);
return Direct3DRMMeshBuilder_create(&IID_IDirect3DRMMeshBuilder3, (IUnknown**)ppMeshBuilder);
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateFace(IDirect3DRM3* iface, LPDIRECT3DRMFACE2* Face)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p): stub\n", iface, This, Face);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateAnimation(IDirect3DRM3* iface,
LPDIRECT3DRMANIMATION2* Animation)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p): stub\n", iface, This, Animation);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateAnimationSet(IDirect3DRM3* iface,
LPDIRECT3DRMANIMATIONSET2* AnimationSet)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p): stub\n", iface, This, AnimationSet);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateTexture(IDirect3DRM3* iface, LPD3DRMIMAGE Image,
LPDIRECT3DRMTEXTURE3* Texture)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, Image, Texture);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateLight(IDirect3DRM3* iface, D3DRMLIGHTTYPE type,
D3DCOLOR color, LPDIRECT3DRMLIGHT* Light)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, type, color, Light);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateLightRGB(IDirect3DRM3* iface, D3DRMLIGHTTYPE type,
D3DVALUE red, D3DVALUE green, D3DVALUE blue,
LPDIRECT3DRMLIGHT* Light)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%d,%f,%f,%f,%p): stub\n", iface, This, type, red, green, blue, Light);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_Material(IDirect3DRM3* iface, D3DVALUE m,
LPDIRECT3DRMMATERIAL2* Material)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%f,%p): stub\n", iface, This, m, Material);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateDevice(IDirect3DRM3* iface, DWORD width, DWORD height,
LPDIRECT3DRMDEVICE3* device)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%d,%d,%p): stub\n", iface, This, width, height, device);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateDeviceFromSurface(IDirect3DRM3* iface, LPGUID pGUID,
LPDIRECTDRAW dd,
LPDIRECTDRAWSURFACE back,
LPDIRECT3DRMDEVICE3* device)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%s,%p,%p,%p): stub\n", iface, This, debugstr_guid(pGUID), dd, back, device);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateDeviceFromD3D(IDirect3DRM3* iface, LPDIRECT3D2 d3d,
LPDIRECT3DDEVICE2 d3ddev,
LPDIRECT3DRMDEVICE3* device)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, d3d, d3ddev, device);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateDeviceFromClipper(IDirect3DRM3* iface,
LPDIRECTDRAWCLIPPER clipper,
LPGUID GUID, int width, int height,
LPDIRECT3DRMDEVICE3* device)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%s,%d,%d,%p): stub\n", iface, This, clipper, debugstr_guid(GUID),
width, height, device);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateShadow(IDirect3DRM3* iface, LPUNKNOWN Visual1,
LPDIRECT3DRMLIGHT Light, D3DVALUE px,
D3DVALUE py, D3DVALUE pz, D3DVALUE nx,
D3DVALUE ny, D3DVALUE nz,
LPDIRECT3DRMSHADOW2* Visual2)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%p,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, Visual1, Light, px, py, pz,
nx, ny, nz, Visual2);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateTextureFromSurface(IDirect3DRM3* iface,
LPDIRECTDRAWSURFACE surface,
LPDIRECT3DRMTEXTURE3* texture)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, surface, texture);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateViewport(IDirect3DRM3* iface,
LPDIRECT3DRMDEVICE3 Device,
LPDIRECT3DRMFRAME3 frame, DWORD xpos,
DWORD ypos, DWORD width, DWORD height,
LPDIRECT3DRMVIEWPORT2* viewport)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%p,%d,%d,%d,%d,%p): stub\n", iface, This, Device, frame, xpos, ypos, width,
height, viewport);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateWrap(IDirect3DRM3* iface, D3DRMWRAPTYPE type,
LPDIRECT3DRMFRAME3 frame,
D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
D3DVALUE ou, D3DVALUE ov, D3DVALUE su,
D3DVALUE sv, LPDIRECT3DRMWRAP* wrap)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%d,%p,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%p): stub\n", iface, This, type,
frame, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou, ov, su, sv, wrap);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateUserVisual(IDirect3DRM3* iface,
D3DRMUSERVISUALCALLBACK cb, LPVOID arg,
LPDIRECT3DRMUSERVISUAL* UserVisual)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%p,%p): stub\n", iface, This, cb, arg, UserVisual);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_LoadTexture(IDirect3DRM3* iface, const char* filename,
LPDIRECT3DRMTEXTURE3* Texture)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, filename, Texture);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_LoadTextureFromResource(IDirect3DRM3* iface, HMODULE mod,
LPCSTR strName, LPCSTR strType,
LPDIRECT3DRMTEXTURE3 * ppTexture)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%p,%p,%p): stub\n", iface, This, mod, strName, strType, ppTexture);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_SetSearchPath(IDirect3DRM3* iface, LPCSTR path)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_AddSearchPath(IDirect3DRM3* iface, LPCSTR path)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%s): stub\n", iface, This, path);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_GetSearchPath(IDirect3DRM3* iface, DWORD* size_return,
LPSTR path_return)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%s): stub\n", iface, This, size_return, path_return);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_SetDefaultTextureColors(IDirect3DRM3* iface, DWORD nb_colors)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_colors);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_SetDefaultTextureShades(IDirect3DRM3* iface, DWORD nb_shades)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%d): stub\n", iface, This, nb_shades);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_GetDevices(IDirect3DRM3* iface,
LPDIRECT3DRMDEVICEARRAY* DeviceArray)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p): stub\n", iface, This, DeviceArray);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_GetNamedObject(IDirect3DRM3* iface, const char* Name,
LPDIRECT3DRMOBJECT* Object)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%s,%p): stub\n", iface, This, Name, Object);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_EnumerateObjects(IDirect3DRM3* iface, D3DRMOBJECTCALLBACK cb,
LPVOID arg)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%p): stub\n", iface, This, cb, arg);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_Load(IDirect3DRM3* iface, LPVOID ObjSource, LPVOID ObjID,
LPIID* GUIDs, DWORD nb_GUIDs, D3DRMLOADOPTIONS LOFlags,
D3DRMLOADCALLBACK LoadProc, LPVOID ArgLP,
D3DRMLOADTEXTURECALLBACK LoadTextureProc, LPVOID ArgLTP,
LPDIRECT3DRMFRAME3 ParentFrame)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p,%p,%p,%d,%d,%p,%p,%p,%p,%p): stub\n", iface, This, ObjSource, ObjID, GUIDs,
nb_GUIDs, LOFlags, LoadProc, ArgLP, LoadTextureProc, ArgLTP, ParentFrame);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_Tick(IDirect3DRM3* iface, D3DVALUE tick)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%f): stub\n", iface, This, tick);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateProgressiveMesh(IDirect3DRM3* iface,
LPDIRECT3DRMPROGRESSIVEMESH Mesh)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p): stub\n", iface, This, Mesh);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_RegisterClient(IDirect3DRM3* iface, REFGUID rguid,
LPDWORD id)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%s, %p): stub\n", iface, This, debugstr_guid(rguid), id);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_UnregisterClient(IDirect3DRM3* iface, REFGUID rguid)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%s): stub\n", iface, This, debugstr_guid(rguid));
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_CreateClippedVisual(IDirect3DRM3* iface,
LPDIRECT3DRMVISUAL vis,
LPDIRECT3DRMCLIPPEDVISUAL* clippedvis)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p, %p): stub\n", iface, This, vis, clippedvis);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_SetOptions(IDirect3DRM3* iface, DWORD opt)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%d): stub\n", iface, This, opt);
return E_NOTIMPL;
}
static HRESULT WINAPI IDirect3DRM3Impl_GetOptions(IDirect3DRM3* iface, LPDWORD opt)
{
IDirect3DRMImpl *This = impl_from_IDirect3DRM3(iface);
FIXME("(%p/%p)->(%p): stub\n", iface, This, opt);
return E_NOTIMPL;
}
static const struct IDirect3DRM3Vtbl Direct3DRM3_Vtbl =
{
IDirect3DRM3Impl_QueryInterface,
IDirect3DRM3Impl_AddRef,
IDirect3DRM3Impl_Release,
IDirect3DRM3Impl_CreateObject,
IDirect3DRM3Impl_CreateFrame,
IDirect3DRM3Impl_CreateMesh,
IDirect3DRM3Impl_CreateMeshBuilder,
IDirect3DRM3Impl_CreateFace,
IDirect3DRM3Impl_CreateAnimation,
IDirect3DRM3Impl_CreateAnimationSet,
IDirect3DRM3Impl_CreateTexture,
IDirect3DRM3Impl_CreateLight,
IDirect3DRM3Impl_CreateLightRGB,
IDirect3DRM3Impl_Material,
IDirect3DRM3Impl_CreateDevice,
IDirect3DRM3Impl_CreateDeviceFromSurface,
IDirect3DRM3Impl_CreateDeviceFromD3D,
IDirect3DRM3Impl_CreateDeviceFromClipper,
IDirect3DRM3Impl_CreateTextureFromSurface,
IDirect3DRM3Impl_CreateShadow,
IDirect3DRM3Impl_CreateViewport,
IDirect3DRM3Impl_CreateWrap,
IDirect3DRM3Impl_CreateUserVisual,
IDirect3DRM3Impl_LoadTexture,
IDirect3DRM3Impl_LoadTextureFromResource,
IDirect3DRM3Impl_SetSearchPath,
IDirect3DRM3Impl_AddSearchPath,
IDirect3DRM3Impl_GetSearchPath,
IDirect3DRM3Impl_SetDefaultTextureColors,
IDirect3DRM3Impl_SetDefaultTextureShades,
IDirect3DRM3Impl_GetDevices,
IDirect3DRM3Impl_GetNamedObject,
IDirect3DRM3Impl_EnumerateObjects,
IDirect3DRM3Impl_Load,
IDirect3DRM3Impl_Tick,
IDirect3DRM3Impl_CreateProgressiveMesh,
IDirect3DRM3Impl_RegisterClient,
IDirect3DRM3Impl_UnregisterClient,
IDirect3DRM3Impl_CreateClippedVisual,
IDirect3DRM3Impl_SetOptions,
IDirect3DRM3Impl_GetOptions
};