[PATCH] GDI+: Implement GdipLoadImageFromFile.

Nathan Beckmann nathan.beckmann at gmail.com
Sun Feb 24 09:41:29 CST 2008


Based on GdipCreateBitmapFromFile.

Tests included. Also tested by ConvertImage.exe (Bug #10980).
---
 dlls/gdiplus/gdiplus.spec  |    2 +-
 dlls/gdiplus/image.c       |   21 +++++++++++++++++++++
 dlls/gdiplus/tests/image.c |    6 ++++++
 3 files changed, 28 insertions(+), 1 deletions(-)

diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index ce4640f..c580f19 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -435,7 +435,7 @@
 @ stub GdipIsVisibleRegionPointI
 @ stub GdipIsVisibleRegionRect
 @ stub GdipIsVisibleRegionRectI
-@ stub GdipLoadImageFromFile
+@ stdcall GdipLoadImageFromFile(wstr ptr)
 @ stub GdipLoadImageFromFileICM
 @ stdcall GdipLoadImageFromStream(ptr ptr)
 @ stdcall GdipLoadImageFromStreamICM(ptr ptr)
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index 7c7eb90..cdd58e8 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -697,6 +697,27 @@ GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage *image,
     return Ok;
 }
 
+GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR* filename,
+                                          GpImage **image)
+{
+    GpStatus stat;
+    IStream *stream;
+
+    if (!filename || !image)
+        return InvalidParameter;
+
+    stat = GdipCreateStreamOnFile(filename, GENERIC_READ, &stream);
+
+    if (stat != Ok)
+        return stat;
+
+    stat = GdipLoadImageFromStream(stream, image);
+   
+    IStream_Release(stream);
+
+    return stat;
+}
+
 GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream* stream, GpImage **image)
 {
     IPicture *pic;
diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c
index 63a2618..4fc41d5 100644
--- a/dlls/gdiplus/tests/image.c
+++ b/dlls/gdiplus/tests/image.c
@@ -114,6 +114,12 @@ void test_LoadingImages()
 
     stat = GdipCreateBitmapFromFile(0, (GpBitmap**)0xdeadbeef);
     expect(InvalidParameter, stat);
+
+    stat = GdipLoadImageFromFile(0, 0);
+    expect(InvalidParameter, stat);
+
+    stat = GdipLoadImageFromFile(0, (GpImage**)0xdeadbeef);
+    expect(InvalidParameter, stat);
 }
 
 START_TEST(image)
-- 
1.5.4.1




More information about the wine-patches mailing list