[PATCH] d3dx9: Redirect D3DXGetImageInfo functions to the FromFileInMemory variant
Tony Wasserka
tony.wasserka at freenet.de
Mon May 18 10:02:04 CDT 2009
---
dlls/d3dx9_36/Makefile.in | 2 +-
dlls/d3dx9_36/surface.c | 66 +++++++++++++++++++++++++++++++++++++++-----
2 files changed, 59 insertions(+), 9 deletions(-)
diff --git a/dlls/d3dx9_36/Makefile.in b/dlls/d3dx9_36/Makefile.in
index c094071..1c6195b 100644
--- a/dlls/d3dx9_36/Makefile.in
+++ b/dlls/d3dx9_36/Makefile.in
@@ -4,7 +4,7 @@ SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = d3dx9_36.dll
IMPORTLIB = d3dx9
-IMPORTS = d3d9 d3dx8 kernel32
+IMPORTS = d3d9 d3dx8 gdi32 user32 kernel32
C_SRCS = \
d3dx9_36_main.c \
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index 2983ae8..3aa0e4c 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -27,14 +27,32 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
****************************/
HRESULT WINAPI D3DXGetImageInfoFromFileA(LPCSTR file, D3DXIMAGE_INFO *info)
{
- FIXME("stub\n");
- return E_NOTIMPL;
+ HRESULT hr;
+ DWORD size;
+ LPVOID buffer;
+ TRACE("(void): relay\n");
+
+ hr = LoadFileIntoMemoryA(file, &buffer, &size);
+ if(FAILED(hr)) return hr;
+ hr = D3DXGetImageInfoFromFileInMemory(buffer, size, info);
+ HeapFree(GetProcessHeap(), 0, buffer);
+
+ return hr;
}
HRESULT WINAPI D3DXGetImageInfoFromFileW(LPCWSTR file, D3DXIMAGE_INFO *info)
{
- FIXME("stub\n");
- return E_NOTIMPL;
+ HRESULT hr;
+ DWORD size;
+ LPVOID buffer;
+ TRACE("(void): relay\n");
+
+ hr = LoadFileIntoMemoryW(file, &buffer, &size);
+ if(FAILED(hr)) return hr;
+ hr = D3DXGetImageInfoFromFileInMemory(buffer, size, info);
+ HeapFree(GetProcessHeap(), 0, buffer);
+
+ return hr;
}
/*******************************
@@ -42,14 +60,46 @@ HRESULT WINAPI D3DXGetImageInfoFromFileW(LPCWSTR file, D3DXIMAGE_INFO *info)
*******************************/
HRESULT WINAPI D3DXGetImageInfoFromResourceA(HMODULE module, LPCSTR resource, D3DXIMAGE_INFO *info)
{
- FIXME("stub\n");
- return E_NOTIMPL;
+ HBITMAP bitmap;
+ TRACE("(void): relay\n");
+
+ bitmap = LoadBitmapA(module, resource);
+ if(bitmap != NULL) {
+ FIXME("Implement loading bitmaps from resource type RT_BITMAP\n");
+ DeleteObject(bitmap);
+ return E_NOTIMPL;
+ } else {
+ HRESULT hr;
+ LPVOID buffer;
+ DWORD size;
+
+ hr = LoadResourceIntoMemoryA(module, resource, &buffer, &size);
+ if(FAILED(hr)) return hr;
+ hr = D3DXGetImageInfoFromFileInMemory(buffer, size, info);
+ return hr;
+ }
}
HRESULT WINAPI D3DXGetImageInfoFromResourceW(HMODULE module, LPCWSTR resource, D3DXIMAGE_INFO *info)
{
- FIXME("stub\n");
- return E_NOTIMPL;
+ HBITMAP bitmap;
+ TRACE("(void): relay\n");
+
+ bitmap = LoadBitmapW(module, resource);
+ if(bitmap != NULL) {
+ FIXME("Implement loading bitmaps from resource type RT_BITMAP\n");
+ DeleteObject(bitmap);
+ return E_NOTIMPL;
+ } else {
+ HRESULT hr;
+ LPVOID buffer;
+ DWORD size;
+
+ hr = LoadResourceIntoMemoryW(module, resource, &buffer, &size);
+ if(FAILED(hr)) return hr;
+ hr = D3DXGetImageInfoFromFileInMemory(buffer, size, info);
+ return hr;
+ }
}
/************************************
--
1.6.0.2
--------------060204060500020906060504--
More information about the wine-patches
mailing list