=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: d3dx9: Forward D3DXSaveTextureToFile to D3DXSaveTextureToFileInMemory.

Alexandre Julliard julliard at winehq.org
Thu May 31 13:30:41 CDT 2012


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

Author: Józef Kucia <joseph.kucia at gmail.com>
Date:   Tue May 29 11:29:23 2012 +0200

d3dx9: Forward D3DXSaveTextureToFile to D3DXSaveTextureToFileInMemory.

---

 dlls/d3dx9_36/d3dx9_36.spec |    6 ++--
 dlls/d3dx9_36/texture.c     |   61 +++++++++++++++++++++++++++++++++++++++++++
 include/d3dx9tex.h          |    5 +++
 3 files changed, 69 insertions(+), 3 deletions(-)

diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
index 44efaf5..aec2a5c 100644
--- a/dlls/d3dx9_36/d3dx9_36.spec
+++ b/dlls/d3dx9_36/d3dx9_36.spec
@@ -266,9 +266,9 @@
 @ stdcall D3DXSaveSurfaceToFileA(ptr long ptr ptr ptr)
 @ stdcall D3DXSaveSurfaceToFileInMemory(ptr long ptr ptr ptr)
 @ stdcall D3DXSaveSurfaceToFileW(ptr long ptr ptr ptr)
-@ stub D3DXSaveTextureToFileA(ptr long ptr ptr)
-@ stub D3DXSaveTextureToFileInMemory(ptr long ptr ptr)
-@ stub D3DXSaveTextureToFileW(ptr long ptr ptr)
+@ stdcall D3DXSaveTextureToFileA(ptr long ptr ptr)
+@ stdcall D3DXSaveTextureToFileInMemory(ptr long ptr ptr)
+@ stdcall D3DXSaveTextureToFileW(ptr long ptr ptr)
 @ stub D3DXSaveVolumeToFileA(ptr long ptr ptr ptr)
 @ stub D3DXSaveVolumeToFileInMemory(ptr long ptr ptr ptr)
 @ stub D3DXSaveVolumeToFileW(ptr long ptr ptr ptr)
diff --git a/dlls/d3dx9_36/texture.c b/dlls/d3dx9_36/texture.c
index c17a327..97d26d9 100644
--- a/dlls/d3dx9_36/texture.c
+++ b/dlls/d3dx9_36/texture.c
@@ -1606,3 +1606,64 @@ HRESULT WINAPI D3DXFillVolumeTexture(LPDIRECT3DVOLUMETEXTURE9 texture,
 
     return D3D_OK;
 }
+
+HRESULT WINAPI D3DXSaveTextureToFileA(const char *dst_filename, D3DXIMAGE_FILEFORMAT file_format,
+        IDirect3DBaseTexture9 *src_texture, const PALETTEENTRY *src_palette)
+{
+    int len;
+    WCHAR *filename;
+    HRESULT hr;
+    ID3DXBuffer *buffer;
+
+    TRACE("(%s, %#x, %p, %p): relay\n",
+            wine_dbgstr_a(dst_filename), file_format, src_texture, src_palette);
+
+    if (!dst_filename) return D3DERR_INVALIDCALL;
+
+    len = MultiByteToWideChar(CP_ACP, 0, dst_filename, -1, NULL, 0);
+    filename = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+    if (!filename) return E_OUTOFMEMORY;
+    MultiByteToWideChar(CP_ACP, 0, dst_filename, -1, filename, len);
+
+    hr = D3DXSaveTextureToFileInMemory(&buffer, file_format, src_texture, src_palette);
+    if (SUCCEEDED(hr))
+    {
+        hr = write_buffer_to_file(filename, buffer);
+        ID3DXBuffer_Release(buffer);
+    }
+
+    HeapFree(GetProcessHeap(), 0, filename);
+    return hr;
+}
+
+HRESULT WINAPI D3DXSaveTextureToFileW(const WCHAR *dst_filename, D3DXIMAGE_FILEFORMAT file_format,
+        IDirect3DBaseTexture9 *src_texture, const PALETTEENTRY *src_palette)
+{
+    HRESULT hr;
+    ID3DXBuffer *buffer;
+
+    TRACE("(%s, %#x, %p, %p): relay\n",
+        wine_dbgstr_w(dst_filename), file_format, src_texture, src_palette);
+
+    if (!dst_filename) return D3DERR_INVALIDCALL;
+
+    hr = D3DXSaveTextureToFileInMemory(&buffer, file_format, src_texture, src_palette);
+    if (SUCCEEDED(hr))
+    {
+        hr = write_buffer_to_file(dst_filename, buffer);
+        ID3DXBuffer_Release(buffer);
+    }
+
+    return hr;
+}
+
+HRESULT WINAPI D3DXSaveTextureToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE_FILEFORMAT file_format,
+        IDirect3DBaseTexture9 *src_texture, const PALETTEENTRY *src_palette)
+{
+    FIXME("(%p, %#x, %p, %p): stub\n",
+        dst_buffer, file_format, src_texture, src_palette);
+
+    if (!dst_buffer || !src_texture) return D3DERR_INVALIDCALL;
+
+    return E_NOTIMPL;
+}
diff --git a/include/d3dx9tex.h b/include/d3dx9tex.h
index 0e89021..38441ce 100644
--- a/include/d3dx9tex.h
+++ b/include/d3dx9tex.h
@@ -638,6 +638,11 @@ HRESULT WINAPI D3DXCreateVolumeTextureFromFileInMemoryEx(LPDIRECT3DDEVICE9 devic
                                                          PALETTEENTRY *palette,
                                                          LPDIRECT3DVOLUMETEXTURE9 *volume);
 
+HRESULT WINAPI D3DXSaveTextureToFileInMemory(LPD3DXBUFFER *destbuffer,
+                                             D3DXIMAGE_FILEFORMAT destformat,
+                                             LPDIRECT3DBASETEXTURE9 srctexture,
+                                             CONST PALETTEENTRY *srcpalette);
+
 HRESULT WINAPI D3DXSaveTextureToFileA(LPCSTR destfile,
                                       D3DXIMAGE_FILEFORMAT destformat,
                                       LPDIRECT3DBASETEXTURE9 srctexture,




More information about the wine-cvs mailing list