diff --git a/dlls/d3drm/Makefile.in b/dlls/d3drm/Makefile.in index 8c2eb0ae43f..4dfd89c5679 100644 --- a/dlls/d3drm/Makefile.in +++ b/dlls/d3drm/Makefile.in @@ -9,7 +9,8 @@ IMPORTS = dxguid uuid kernel32 C_SRCS = \ d3drm.c \ d3drm_main.c \ - math.c + math.c \ + meshbuilder.c RC_SRCS = version.rc diff --git a/dlls/d3drm/d3drm.c b/dlls/d3drm/d3drm.c index 4eed18be98a..849efea8c96 100644 --- a/dlls/d3drm/d3drm.c +++ b/dlls/d3drm/d3drm.c @@ -134,9 +134,9 @@ static HRESULT WINAPI IDirect3DRMImpl_CreateMeshBuilder(IDirect3DRM* iface, LPDI { IDirect3DRMImpl *This = (IDirect3DRMImpl *)iface; - FIXME("(%p/%p)->(%p): stub\n", iface, This, ppMeshBuilder); + TRACE("(%p/%p)->(%p)\n", iface, This, ppMeshBuilder); - return E_NOTIMPL; + return Direct3DRMMeshBuilder_create(ppMeshBuilder); } static HRESULT WINAPI IDirect3DRMImpl_CreateFace(IDirect3DRM* iface, LPDIRECT3DRMFACE * ppFace) diff --git a/dlls/d3drm/d3drm_private.h b/dlls/d3drm/d3drm_private.h index 091b0765f0a..f3580c3d212 100644 --- a/dlls/d3drm/d3drm_private.h +++ b/dlls/d3drm/d3drm_private.h @@ -27,5 +27,6 @@ #include "d3drm.h" HRESULT Direct3DRM_create(LPDIRECT3DRM* ppDirect3DRM); +HRESULT Direct3DRMMeshBuilder_create(LPDIRECT3DRMMESHBUILDER* ppMeshBuilder); #endif /* __D3DRM_PRIVATE_INCLUDED__ */ diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c new file mode 100644 index 00000000000..b2ef539640f --- /dev/null +++ b/dlls/d3drm/meshbuilder.c @@ -0,0 +1,575 @@ +/* + * Implementation of IDirect3DRMMeshBuilder Interface + * + * Copyright 2010 Christian Costa + * + * 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" +#include "d3drm.h" + +WINE_DEFAULT_DEBUG_CHANNEL(d3drm); + +typedef struct { + const IDirect3DRMMeshBuilderVtbl *lpVtbl; + LONG ref; +} IDirect3DRMMeshBuilderImpl; + +static const struct IDirect3DRMMeshBuilderVtbl Direct3DRMMeshBuilder_Vtbl; + +HRESULT Direct3DRMMeshBuilder_create(LPDIRECT3DRMMESHBUILDER* ppMeshBuilder) +{ + IDirect3DRMMeshBuilderImpl* object; + + TRACE("(%p)\n", ppMeshBuilder); + + object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DRMMeshBuilderImpl)); + if (!object) + { + ERR("Out of memory\n"); + return E_OUTOFMEMORY; + } + + object->lpVtbl = &Direct3DRMMeshBuilder_Vtbl; + object->ref = 1; + + *ppMeshBuilder = (IDirect3DRMMeshBuilder*)object; + + return S_OK; +} + +/*** IUnknown methods ***/ +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_QueryInterface(IDirect3DRMMeshBuilder* iface, REFIID riid, void** ppvObject) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + TRACE("(%p)->(%s,%p)\n", This, debugstr_guid(riid), ppvObject); + + if (IsEqualGUID(riid, &IID_IUnknown) || + IsEqualGUID(riid, &IID_IDirect3DRMMeshBuilder)) + { + IClassFactory_AddRef(iface); + *ppvObject = This; + return S_OK; + } + + ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject); + return E_NOINTERFACE; +} + +static ULONG WINAPI IDirect3DRMMeshBuilderImpl_AddRef(IDirect3DRMMeshBuilder* iface) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + TRACE("(%p)\n", This); + + return InterlockedIncrement(&This->ref); +} + +static ULONG WINAPI IDirect3DRMMeshBuilderImpl_Release(IDirect3DRMMeshBuilder* iface) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + ULONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p)\n", This); + + if (!ref) + HeapFree(GetProcessHeap(), 0, This); + + return ref; +} + +/*** IDirect3DRMObject methods ***/ +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_Clone(IDirect3DRMMeshBuilder* iface, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p,%s,%p): stub\n", This, pUnkOuter, debugstr_guid(riid), ppvObj); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_AddDestroyCallback(IDirect3DRMMeshBuilder* iface, D3DRMOBJECTCALLBACK cb, LPVOID argument) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p,%p): stub\n", This, cb, argument); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_DeleteDestroyCallback(IDirect3DRMMeshBuilder* iface, D3DRMOBJECTCALLBACK cb, LPVOID argument) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p,%p): stub\n", This, cb, argument); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetAppData(IDirect3DRMMeshBuilder* iface, DWORD data) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%u): stub\n", This, data); + + return E_NOTIMPL; +} + +static DWORD WINAPI IDirect3DRMMeshBuilderImpl_GetAppData(IDirect3DRMMeshBuilder* iface) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(): stub\n", This); + + return 0; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetName(IDirect3DRMMeshBuilder* iface, LPCSTR pName) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%s): stub\n", This, pName); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_GetName(IDirect3DRMMeshBuilder* iface, LPDWORD lpdwSize, LPSTR lpName) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p,%p): stub\n", This, lpdwSize, lpName); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_GetClassName(IDirect3DRMMeshBuilder* iface, LPDWORD lpdwSize, LPSTR lpName) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p,%p): stub\n", This, lpdwSize, lpName); + + return E_NOTIMPL; +} + +/*** IDirect3DRMMeshBuilder methods ***/ +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_Load(IDirect3DRMMeshBuilder* iface, LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK cb, LPVOID pArg) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p,%p,%x,%p,%p): stub\n", This, filename, name, loadflags, cb, pArg); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_Save(IDirect3DRMMeshBuilder* iface, const char *filename, D3DRMXOFFORMAT format, D3DRMSAVEOPTIONS save) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%s,%d,%d): stub\n", This, filename, format, save); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_Scale(IDirect3DRMMeshBuilder* iface, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%f,%f,%f): stub\n", This, sx, sy, sz); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_Translate(IDirect3DRMMeshBuilder* iface, D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%f,%f,%f): stub\n", This, tx, ty, tz); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetColorSource(IDirect3DRMMeshBuilder* iface, D3DRMCOLORSOURCE color) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%x): stub\n", This, color); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_GetBox(IDirect3DRMMeshBuilder* iface, D3DRMBOX *pBox) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p): stub\n", This, pBox); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_GenerateNormals(IDirect3DRMMeshBuilder* iface) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(): stub\n", This); + + return E_NOTIMPL; +} + +static D3DRMCOLORSOURCE WINAPI IDirect3DRMMeshBuilderImpl_GetColorSource(IDirect3DRMMeshBuilder* iface) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(): stub\n", This); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_AddMesh(IDirect3DRMMeshBuilder* iface, LPDIRECT3DRMMESH pMesh) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p): stub\n", This, pMesh); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_AddMeshBuilder(IDirect3DRMMeshBuilder* iface, LPDIRECT3DRMMESHBUILDER pMeshBuilder) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p): stub\n", This, pMeshBuilder); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_AddFrame(IDirect3DRMMeshBuilder* iface, LPDIRECT3DRMFRAME pFrame) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p): stub\n", This, pFrame); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_AddFace(IDirect3DRMMeshBuilder* iface, LPDIRECT3DRMFACE pFace) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p): stub\n", This, pFace); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_AddFaces(IDirect3DRMMeshBuilder* iface, DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data, LPDIRECT3DRMFACEARRAY* pFaceArray) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%d,%p,%d,%p,%p,%p): stub\n", This, vcount, vertices, ncount, normals, data, pFaceArray); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_ReserveSpace(IDirect3DRMMeshBuilder* iface, DWORD vertex_Count, DWORD normal_count, DWORD face_count) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%d,%d,%d): stub\n", This, vertex_Count, normal_count, face_count); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetColorRGB(IDirect3DRMMeshBuilder* iface, D3DVALUE red, D3DVALUE green, D3DVALUE blue) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%f,%f,%f): stub\n", This, red, green, blue); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetColor(IDirect3DRMMeshBuilder* iface, D3DCOLOR color) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%x): stub\n", This, color); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetTexture(IDirect3DRMMeshBuilder* iface, LPDIRECT3DRMTEXTURE pTexture) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p): stub\n", This, pTexture); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetMaterial(IDirect3DRMMeshBuilder* iface, LPDIRECT3DRMMATERIAL pMaterial) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p): stub\n", This, pMaterial); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetTextureTopology(IDirect3DRMMeshBuilder* iface, BOOL wrap_u, BOOL wrap_v) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%d,%d): stub\n", This, wrap_u, wrap_v); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetQuality(IDirect3DRMMeshBuilder* iface, D3DRMRENDERQUALITY quality) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%d): stub\n", This, quality); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetPerspective(IDirect3DRMMeshBuilder* iface, BOOL enable) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%d): stub\n", This, enable); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetVertex(IDirect3DRMMeshBuilder* iface, DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%f,%f,%f): stub\n", This, x, y, z); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetNormal(IDirect3DRMMeshBuilder* iface, DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%f,%f,%f): stub\n", This, x, y, z); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetTextureCoordinates(IDirect3DRMMeshBuilder* iface, DWORD index, D3DVALUE u, D3DVALUE v) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%f,%f): stub\n", This, u, v); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetVertexColor(IDirect3DRMMeshBuilder* iface, DWORD index, D3DCOLOR color) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%d,%x): stub\n", This, index, color); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_SetVertexColorRGB(IDirect3DRMMeshBuilder* iface, DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%d,%f,%f,%f): stub\n", This, index, red, green, blue); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_GetFaces(IDirect3DRMMeshBuilder* iface, LPDIRECT3DRMFACEARRAY* pFaceArray) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p): stub\n", This, pFaceArray); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_GetVertices(IDirect3DRMMeshBuilder* iface, DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals, DWORD *face_data_size, DWORD *face_data) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p,%p,%p,%p,%p,%p): stub\n", This, vcount, vertices, ncount, normals, face_data_size, face_data); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_GetTextureCoordinates(IDirect3DRMMeshBuilder* iface, DWORD index, D3DVALUE *u, D3DVALUE *v) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%d,%p,%p): stub\n", This, index, u, v); + + return E_NOTIMPL; +} + +static int WINAPI IDirect3DRMMeshBuilderImpl_AddVertex(IDirect3DRMMeshBuilder* iface, D3DVALUE x, D3DVALUE y, D3DVALUE z) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%f,%f,%f): stub\n", This, x, y, z); + + return 0; +} + +static int WINAPI IDirect3DRMMeshBuilderImpl_AddNormal(IDirect3DRMMeshBuilder* iface, D3DVALUE x, D3DVALUE y, D3DVALUE z) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%f,%f,%f): stub\n", This, x, y, z); + + return 0; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_CreateFace(IDirect3DRMMeshBuilder* iface, LPDIRECT3DRMFACE* ppFace) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p): stub\n", This, ppFace); + + return E_NOTIMPL; +} + +static D3DRMRENDERQUALITY WINAPI IDirect3DRMMeshBuilderImpl_GetQuality(IDirect3DRMMeshBuilder* iface) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(): stub\n", This); + + return 0; +} + +static BOOL WINAPI IDirect3DRMMeshBuilderImpl_GetPerspective(IDirect3DRMMeshBuilder* iface) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(): stub\n", This); + + return FALSE; +} + +static int WINAPI IDirect3DRMMeshBuilderImpl_GetFaceCount(IDirect3DRMMeshBuilder* iface) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(): stub\n", This); + + return 0; +} + +static int WINAPI IDirect3DRMMeshBuilderImpl_GetVertexCount(IDirect3DRMMeshBuilder* iface) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(): stub\n", This); + + return 0; +} + +static D3DCOLOR WINAPI IDirect3DRMMeshBuilderImpl_GetVertexColor(IDirect3DRMMeshBuilder* iface, DWORD index) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%d): stub\n", This, index); + + return 0; +} + +static HRESULT WINAPI IDirect3DRMMeshBuilderImpl_CreateMesh(IDirect3DRMMeshBuilder* iface, LPDIRECT3DRMMESH* ppMesh) +{ + IDirect3DRMMeshBuilderImpl *This = (IDirect3DRMMeshBuilderImpl *)iface; + + FIXME("(%p)->(%p): stub\n", This, ppMesh); + + return E_NOTIMPL; +} + +static const struct IDirect3DRMMeshBuilderVtbl Direct3DRMMeshBuilder_Vtbl = +{ + /*** IUnknown methods ***/ + IDirect3DRMMeshBuilderImpl_QueryInterface, + IDirect3DRMMeshBuilderImpl_AddRef, + IDirect3DRMMeshBuilderImpl_Release, + /*** IDirect3DRMObject methods ***/ + IDirect3DRMMeshBuilderImpl_Clone, + IDirect3DRMMeshBuilderImpl_AddDestroyCallback, + IDirect3DRMMeshBuilderImpl_DeleteDestroyCallback, + IDirect3DRMMeshBuilderImpl_SetAppData, + IDirect3DRMMeshBuilderImpl_GetAppData, + IDirect3DRMMeshBuilderImpl_SetName, + IDirect3DRMMeshBuilderImpl_GetName, + IDirect3DRMMeshBuilderImpl_GetClassName, + /*** IDirect3DRMMeshBuilder methods ***/ + IDirect3DRMMeshBuilderImpl_Load, + IDirect3DRMMeshBuilderImpl_Save, + IDirect3DRMMeshBuilderImpl_Scale, + IDirect3DRMMeshBuilderImpl_Translate, + IDirect3DRMMeshBuilderImpl_SetColorSource, + IDirect3DRMMeshBuilderImpl_GetBox, + IDirect3DRMMeshBuilderImpl_GenerateNormals, + IDirect3DRMMeshBuilderImpl_GetColorSource, + IDirect3DRMMeshBuilderImpl_AddMesh, + IDirect3DRMMeshBuilderImpl_AddMeshBuilder, + IDirect3DRMMeshBuilderImpl_AddFrame, + IDirect3DRMMeshBuilderImpl_AddFace, + IDirect3DRMMeshBuilderImpl_AddFaces, + IDirect3DRMMeshBuilderImpl_ReserveSpace, + IDirect3DRMMeshBuilderImpl_SetColorRGB, + IDirect3DRMMeshBuilderImpl_SetColor, + IDirect3DRMMeshBuilderImpl_SetTexture, + IDirect3DRMMeshBuilderImpl_SetMaterial, + IDirect3DRMMeshBuilderImpl_SetTextureTopology, + IDirect3DRMMeshBuilderImpl_SetQuality, + IDirect3DRMMeshBuilderImpl_SetPerspective, + IDirect3DRMMeshBuilderImpl_SetVertex, + IDirect3DRMMeshBuilderImpl_SetNormal, + IDirect3DRMMeshBuilderImpl_SetTextureCoordinates, + IDirect3DRMMeshBuilderImpl_SetVertexColor, + IDirect3DRMMeshBuilderImpl_SetVertexColorRGB, + IDirect3DRMMeshBuilderImpl_GetFaces, + IDirect3DRMMeshBuilderImpl_GetVertices, + IDirect3DRMMeshBuilderImpl_GetTextureCoordinates, + IDirect3DRMMeshBuilderImpl_AddVertex, + IDirect3DRMMeshBuilderImpl_AddNormal, + IDirect3DRMMeshBuilderImpl_CreateFace, + IDirect3DRMMeshBuilderImpl_GetQuality, + IDirect3DRMMeshBuilderImpl_GetPerspective, + IDirect3DRMMeshBuilderImpl_GetFaceCount, + IDirect3DRMMeshBuilderImpl_GetVertexCount, + IDirect3DRMMeshBuilderImpl_GetVertexColor, + IDirect3DRMMeshBuilderImpl_CreateMesh +};