Dylan Smith : d3dx9: Implement D3DXLoadMeshHierarchyFromX.
Alexandre Julliard
julliard at winehq.org
Tue Jun 7 12:02:38 CDT 2011
Module: wine
Branch: master
Commit: 66693a6e80aa98cb82ca187f0a1347b5a77b38b0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=66693a6e80aa98cb82ca187f0a1347b5a77b38b0
Author: Dylan Smith <dylan.ah.smith at gmail.com>
Date: Mon Jun 6 12:54:52 2011 -0400
d3dx9: Implement D3DXLoadMeshHierarchyFromX.
---
dlls/d3dx9_36/d3dx9_36.spec | 4 +-
dlls/d3dx9_36/mesh.c | 60 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
index 9f42937..5a6e6e6 100644
--- a/dlls/d3dx9_36/d3dx9_36.spec
+++ b/dlls/d3dx9_36/d3dx9_36.spec
@@ -173,9 +173,9 @@
@ stub D3DXLoadMeshFromXResource(long ptr ptr long ptr ptr ptr ptr ptr ptr)
@ stub D3DXLoadMeshFromXW(ptr long ptr ptr ptr ptr ptr ptr)
@ stub D3DXLoadMeshFromXof(ptr long ptr ptr ptr ptr ptr ptr)
-@ stub D3DXLoadMeshHierarchyFromXA(ptr long ptr ptr ptr ptr ptr)
+@ stdcall D3DXLoadMeshHierarchyFromXA(str long ptr ptr ptr ptr ptr)
@ stdcall D3DXLoadMeshHierarchyFromXInMemory(ptr long long ptr ptr ptr ptr ptr)
-@ stub D3DXLoadMeshHierarchyFromXW(ptr long ptr ptr ptr ptr ptr)
+@ stdcall D3DXLoadMeshHierarchyFromXW(wstr long ptr ptr ptr ptr ptr)
@ stub D3DXLoadPatchMeshFromXof(ptr long ptr ptr ptr long ptr)
@ stub D3DXLoadPRTBufferFromFileA(ptr ptr)
@ stub D3DXLoadPRTBufferFromFileW(ptr ptr)
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
index da40402..c05b268 100644
--- a/dlls/d3dx9_36/mesh.c
+++ b/dlls/d3dx9_36/mesh.c
@@ -2724,6 +2724,66 @@ cleanup:
return hr;
}
+HRESULT WINAPI D3DXLoadMeshHierarchyFromXA(LPCSTR filename,
+ DWORD options,
+ LPDIRECT3DDEVICE9 device,
+ LPD3DXALLOCATEHIERARCHY alloc_hier,
+ LPD3DXLOADUSERDATA load_user_data,
+ LPD3DXFRAME *frame_hierarchy,
+ LPD3DXANIMATIONCONTROLLER *anim_controller)
+{
+ HRESULT hr;
+ int len;
+ LPWSTR filenameW;
+
+ TRACE("(%s, %x, %p, %p, %p, %p, %p)\n", debugstr_a(filename), options,
+ device, alloc_hier, load_user_data, frame_hierarchy, anim_controller);
+
+ if (!filename)
+ return D3DERR_INVALIDCALL;
+
+ len = MultiByteToWideChar(CP_ACP, 0, filename, -1, NULL, 0);
+ filenameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+ if (!filenameW) return E_OUTOFMEMORY;
+ MultiByteToWideChar(CP_ACP, 0, filename, -1, filenameW, len);
+
+ hr = D3DXLoadMeshHierarchyFromXW(filenameW, options, device,
+ alloc_hier, load_user_data, frame_hierarchy, anim_controller);
+ HeapFree(GetProcessHeap(), 0, filenameW);
+
+ return hr;
+}
+
+HRESULT WINAPI D3DXLoadMeshHierarchyFromXW(LPCWSTR filename,
+ DWORD options,
+ LPDIRECT3DDEVICE9 device,
+ LPD3DXALLOCATEHIERARCHY alloc_hier,
+ LPD3DXLOADUSERDATA load_user_data,
+ LPD3DXFRAME *frame_hierarchy,
+ LPD3DXANIMATIONCONTROLLER *anim_controller)
+{
+ HRESULT hr;
+ DWORD size;
+ LPVOID buffer;
+
+ TRACE("(%s, %x, %p, %p, %p, %p, %p)\n", debugstr_w(filename), options,
+ device, alloc_hier, load_user_data, frame_hierarchy, anim_controller);
+
+ if (!filename)
+ return D3DERR_INVALIDCALL;
+
+ hr = map_view_of_file(filename, &buffer, &size);
+ if (FAILED(hr))
+ return D3DXERR_INVALIDDATA;
+
+ hr = D3DXLoadMeshHierarchyFromXInMemory(buffer, size, options, device,
+ alloc_hier, load_user_data, frame_hierarchy, anim_controller);
+
+ UnmapViewOfFile(buffer);
+
+ return hr;
+}
+
static HRESULT filedata_get_name(IDirectXFileData *filedata, char **name)
{
HRESULT hr;
More information about the wine-cvs
mailing list