Module: wine Branch: master Commit: 8128aeb035ddfa769df99b08ca551eafcc5c007a URL: http://source.winehq.org/git/wine.git/?a=commit;h=8128aeb035ddfa769df99b08ca...
Author: Evan Stade estade@gmail.com Date: Fri Aug 3 17:30:22 2007 -0700
gdiplus: Added GdipCreateBitmapFromStream.
---
dlls/gdiplus/gdiplus.spec | 4 ++-- dlls/gdiplus/image.c | 29 ++++++++++++++++++++++++++--- include/gdiplusflat.h | 2 ++ 3 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index db227c1..538c571 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -79,7 +79,7 @@ @ stub GdipCreateBitmapFromHICON @ stub GdipCreateBitmapFromResource @ stdcall GdipCreateBitmapFromScan0(long long long long ptr ptr) -@ stub GdipCreateBitmapFromStream +@ stdcall GdipCreateBitmapFromStream(ptr ptr) @ stdcall GdipCreateBitmapFromStreamICM(ptr ptr) @ stub GdipCreateCachedBitmap @ stdcall GdipCreateCustomLineCap(ptr ptr long long ptr) @@ -437,7 +437,7 @@ @ stub GdipIsVisibleRegionRectI @ stub GdipLoadImageFromFile @ stub GdipLoadImageFromFileICM -@ stub GdipLoadImageFromStream +@ stdcall GdipLoadImageFromStream(ptr ptr) @ stdcall GdipLoadImageFromStreamICM(ptr ptr) @ stub GdipMeasureCharacterRanges @ stub GdipMeasureDriverString diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c index d649e03..391a5fc 100644 --- a/dlls/gdiplus/image.c +++ b/dlls/gdiplus/image.c @@ -149,6 +149,24 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT width, INT height, INT stride, return Ok; }
+GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream* stream, + GpBitmap **bitmap) +{ + GpStatus stat; + + stat = GdipLoadImageFromStream(stream, (GpImage**) bitmap); + + if(stat != Ok) + return stat; + + /* FIXME: make sure it's actually a bitmap */ + (*bitmap)->image.type = ImageTypeBitmap; + (*bitmap)->width = ipicture_pixel_width((*bitmap)->image.picture); + (*bitmap)->height = ipicture_pixel_height((*bitmap)->image.picture); + + return Ok; +} + GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream* stream, GpBitmap **bitmap) { @@ -344,8 +362,7 @@ GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage *image, return NotImplemented; }
-/* FIXME: no ICM */ -GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream* stream, GpImage **image) +GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream* stream, GpImage **image) { if(!stream || !image) return InvalidParameter; @@ -360,12 +377,18 @@ GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream* stream, GpImage **image) return GenericError; }
- /* FIXME: use IPicture_get_Type to get image type */ + /* FIXME: use IPicture_get_Type to get image type? */ (*image)->type = ImageTypeUnknown;
return Ok; }
+/* FIXME: no ICM */ +GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream* stream, GpImage **image) +{ + return GdipLoadImageFromStream(stream, image); +} + GpStatus WINGDIPAPI GdipRemovePropertyItem(GpImage *image, PROPID propId) { static int calls; diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index fb15b88..f735f94 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -166,6 +166,7 @@ GpStatus WINGDIPAPI GdipDeleteCustomLineCap(GpCustomLineCap*); GpStatus WINGDIPAPI GdipBitmapGetPixel(GpBitmap*,INT,INT,ARGB*); GpStatus WINGDIPAPI GdipCreateBitmapFromScan0(INT,INT,INT,PixelFormat,BYTE*, GpBitmap**); +GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream*,GpBitmap**); GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream*,GpBitmap**); GpStatus WINGDIPAPI GdipDisposeImage(GpImage*); GpStatus WINGDIPAPI GdipGetImageBounds(GpImage*,GpRectF*,GpUnit*); @@ -178,6 +179,7 @@ GpStatus WINGDIPAPI GdipGetImageWidth(GpImage*,UINT*); GpStatus WINGDIPAPI GdipGetMetafileHeaderFromMetafile(GpMetafile*,MetafileHeader*); GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage*,PROPID,UINT*); GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage*,GDIPCONST GUID*,UINT*); +GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream*,GpImage**); GpStatus WINGDIPAPI GdipLoadImageFromStreamICM(IStream*,GpImage**); GpStatus WINGDIPAPI GdipRemovePropertyItem(GpImage*,PROPID); GpStatus WINGDIPAPI GdipSaveImageToStream(GpImage*,IStream*,