[3/19] gdiplus: added GdipCreateBitmapFromFile [try2]
Evan Stade
estade at gmail.com
Tue Aug 7 20:42:04 CDT 2007
Hi,
[try2] create stream on the file rather than reading in the file data
and creating stream on that.
dlls/gdiplus/gdiplus.spec | 2 +-
dlls/gdiplus/image.c | 22 ++++++++++++++++++++++
include/gdiplusflat.h | 1 +
3 files changed, 24 insertions(+), 1 deletions(-)
--
Evan Stade
-------------- next part --------------
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
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 GdipDeleteCustomLine
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**);
--
1.4.1
More information about the wine-patches
mailing list