Evan Stade : gdiplus: Added GdipCreateBitmapFromFile.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Aug 8 08:59:44 CDT 2007


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

Author: Evan Stade <estade at gmail.com>
Date:   Tue Aug  7 18:42:04 2007 -0700

gdiplus: Added GdipCreateBitmapFromFile.

---

 dlls/gdiplus/gdiplus.spec |    2 +-
 dlls/gdiplus/image.c      |   22 ++++++++++++++++++++++
 include/gdiplusflat.h     |    1 +
 3 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 218990d..c49a395 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -71,7 +71,7 @@
 @ stub GdipConvertToEmfPlusToStream
 @ stub GdipCreateAdjustableArrowCap
 @ stub GdipCreateBitmapFromDirectDrawSurface
-@ stub GdipCreateBitmapFromFile
+@ stdcall GdipCreateBitmapFromFile(wstr ptr)
 @ stub GdipCreateBitmapFromFileICM
 @ stub GdipCreateBitmapFromGdiDib
 @ stub GdipCreateBitmapFromGraphics
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index 59690c5..da816b8 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -229,6 +229,28 @@ GpStatus WINGDIPAPI GdipBitmapUnlockBits(GpBitmap* bitmap,
     return Ok;
 }
 
+GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR* filename,
+    GpBitmap **bitmap)
+{
+    GpStatus stat;
+    IStream *stream;
+
+    if(!filename || !bitmap)
+        return InvalidParameter;
+
+    stat = GdipCreateStreamOnFile(filename, GENERIC_READ, &stream);
+
+    if(stat != Ok)
+        return stat;
+
+    stat = GdipCreateBitmapFromStream(stream, bitmap);
+
+    if(!stat)
+        IStream_Release(stream);
+
+    return stat;
+}
+
 GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT width, INT height, INT stride,
     PixelFormat format, BYTE* scan0, GpBitmap** bitmap)
 {
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index 1768419..aba71ed 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -167,6 +167,7 @@ GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap*);
 GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap*,INT,INT,ARGB*);
 GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap*,GDIPCONST GpRect*,UINT,
     PixelFormat,BitmapData*);
+GpStatus WINGDIPAPI GdipCreateBitmapFromFile(GDIPCONST WCHAR*,GpBitmap**);
 GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT,INT,INT,PixelFormat,BYTE*,
     GpBitmap**);
 GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream*,GpBitmap**);




More information about the wine-cvs mailing list