Owen Rudge : d3dx9: Implement missing D3DXCreateTextureFromFile functions.

Alexandre Julliard julliard at winehq.org
Tue Aug 31 11:15:54 CDT 2010


Module: wine
Branch: master
Commit: ae695bdfaaea2b114938ff92210a14f5748f7da7
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ae695bdfaaea2b114938ff92210a14f5748f7da7

Author: Owen Rudge <orudge at codeweavers.com>
Date:   Mon Aug 30 11:57:42 2010 -0500

d3dx9: Implement missing D3DXCreateTextureFromFile functions.

---

 dlls/d3dx9_36/d3dx9_36.spec |   10 +++---
 dlls/d3dx9_36/texture.c     |   64 +++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 67 insertions(+), 7 deletions(-)

diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
index 691f2ec..c6c57fa 100644
--- a/dlls/d3dx9_36/d3dx9_36.spec
+++ b/dlls/d3dx9_36/d3dx9_36.spec
@@ -93,12 +93,12 @@
 @ stub D3DXCreateTextA
 @ stub D3DXCreateTextW
 @ stdcall D3DXCreateTexture(ptr long long long long long long ptr)
-@ stdcall D3DXCreateTextureFromFileA(ptr ptr ptr)
-@ stub D3DXCreateTextureFromFileExA
-@ stdcall D3DXCreateTextureFromFileExW(ptr ptr long long long long long long long long long ptr ptr ptr)
-@ stub D3DXCreateTextureFromFileInMemory
+@ stdcall D3DXCreateTextureFromFileA(ptr str ptr)
+@ stdcall D3DXCreateTextureFromFileExA(ptr str long long long long long long long long long ptr ptr ptr)
+@ stdcall D3DXCreateTextureFromFileExW(ptr wstr long long long long long long long long long ptr ptr ptr)
+@ stdcall D3DXCreateTextureFromFileInMemory(ptr ptr long ptr)
 @ stdcall D3DXCreateTextureFromFileInMemoryEx(ptr ptr long long long long long long long long long long ptr ptr ptr)
-@ stub D3DXCreateTextureFromFileW
+@ stdcall D3DXCreateTextureFromFileW(ptr wstr ptr)
 @ stub D3DXCreateTextureFromResourceA
 @ stub D3DXCreateTextureFromResourceExA
 @ stub D3DXCreateTextureFromResourceExW
diff --git a/dlls/d3dx9_36/texture.c b/dlls/d3dx9_36/texture.c
index 8895a8f..4c4bc91 100644
--- a/dlls/d3dx9_36/texture.c
+++ b/dlls/d3dx9_36/texture.c
@@ -18,6 +18,7 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "wine/unicode.h"
 #include "wine/debug.h"
 #include "d3dx9_36_private.h"
 
@@ -289,6 +290,17 @@ HRESULT WINAPI D3DXCreateTextureFromFileInMemoryEx(LPDIRECT3DDEVICE9 device,
     return E_NOTIMPL;
 }
 
+HRESULT WINAPI D3DXCreateTextureFromFileInMemory(LPDIRECT3DDEVICE9 device,
+                                                 LPCVOID srcdata,
+                                                 UINT srcdatasize,
+                                                 LPDIRECT3DTEXTURE9 *texture)
+{
+    TRACE("(%p, %p, %d, %p)\n", device, srcdata, srcdatasize, texture);
+
+    return D3DXCreateTextureFromFileInMemoryEx(device, srcdata, srcdatasize, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN,
+                                               D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, texture);
+}
+
 HRESULT WINAPI D3DXCreateTextureFromFileExW(LPDIRECT3DDEVICE9 device,
                                             LPCWSTR srcfile,
                                             UINT width,
@@ -326,11 +338,59 @@ HRESULT WINAPI D3DXCreateTextureFromFileExW(LPDIRECT3DDEVICE9 device,
     return hr;
 }
 
+HRESULT WINAPI D3DXCreateTextureFromFileExA(LPDIRECT3DDEVICE9 device,
+                                            LPCSTR srcfile,
+                                            UINT width,
+                                            UINT height,
+                                            UINT miplevels,
+                                            DWORD usage,
+                                            D3DFORMAT format,
+                                            D3DPOOL pool,
+                                            DWORD filter,
+                                            DWORD mipfilter,
+                                            D3DCOLOR colorkey,
+                                            D3DXIMAGE_INFO *srcinfo,
+                                            PALETTEENTRY *palette,
+                                            LPDIRECT3DTEXTURE9 *texture)
+{
+    LPWSTR widename;
+    HRESULT hr;
+    DWORD len;
+
+    TRACE("(%p, %p, %u, %u, %u, %x, %x, %x, %u, %u, %x, %p, %p, %p): relay\n", device, debugstr_a(srcfile), width,
+        height, miplevels, usage, format, pool, filter, mipfilter, colorkey, srcinfo, palette, texture);
+
+    if (!device || !srcfile || !texture)
+        return D3DERR_INVALIDCALL;
+
+    len = MultiByteToWideChar(CP_ACP, 0, srcfile, -1, NULL, 0);
+    widename = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len * sizeof(WCHAR));
+    MultiByteToWideChar(CP_ACP, 0, srcfile, -1, widename, len);
+
+    hr = D3DXCreateTextureFromFileExW(device, widename, width, height, miplevels,
+                                      usage, format, pool, filter, mipfilter,
+                                      colorkey, srcinfo, palette, texture);
+
+    HeapFree(GetProcessHeap(), 0, widename);
+    return hr;
+}
+
 HRESULT WINAPI D3DXCreateTextureFromFileA(LPDIRECT3DDEVICE9 device,
                                           LPCSTR srcfile,
                                           LPDIRECT3DTEXTURE9 *texture)
 {
-    FIXME("(%p, %s, %p): stub\n", device, debugstr_a(srcfile), texture);
+    TRACE("(%p, %s, %p)\n", device, debugstr_a(srcfile), texture);
 
-    return E_NOTIMPL;
+    return D3DXCreateTextureFromFileExA(device, srcfile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN,
+                                        D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, texture);
+}
+
+HRESULT WINAPI D3DXCreateTextureFromFileW(LPDIRECT3DDEVICE9 device,
+                                          LPCWSTR srcfile,
+                                          LPDIRECT3DTEXTURE9 *texture)
+{
+    TRACE("(%p, %s, %p)\n", device, debugstr_w(srcfile), texture);
+
+    return D3DXCreateTextureFromFileExW(device, srcfile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN,
+                                        D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, texture);
 }




More information about the wine-cvs mailing list