Evan Stade : gdiplus: Added GdipGetImageGraphicsContext.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Aug 10 07:31:15 CDT 2007
Module: wine
Branch: master
Commit: 94a19d1f759b76de7d2127978a09e844b6026cde
URL: http://source.winehq.org/git/wine.git/?a=commit;h=94a19d1f759b76de7d2127978a09e844b6026cde
Author: Evan Stade <estade at gmail.com>
Date: Thu Aug 9 18:25:01 2007 -0700
gdiplus: Added GdipGetImageGraphicsContext.
---
dlls/gdiplus/gdiplus.spec | 2 +-
dlls/gdiplus/image.c | 27 +++++++++++++++++++++++++++
include/gdiplusflat.h | 1 +
3 files changed, 29 insertions(+), 1 deletions(-)
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 50d2f6b..b09ca8e 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -287,7 +287,7 @@
@ stub GdipGetImageEncoders
@ stub GdipGetImageEncodersSize
@ stub GdipGetImageFlags
-@ stub GdipGetImageGraphicsContext
+@ stdcall GdipGetImageGraphicsContext(ptr ptr)
@ stdcall GdipGetImageHeight(ptr ptr)
@ stdcall GdipGetImageHorizontalResolution(ptr ptr)
@ stub GdipGetImageItemData
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index d813678..d779907 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -384,9 +384,13 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream* stream,
GpStatus WINGDIPAPI GdipDisposeImage(GpImage *image)
{
+ HDC hdc;
+
if(!image)
return InvalidParameter;
+ IPicture_get_CurDC(image->picture, &hdc);
+ DeleteDC(hdc);
IPicture_Release(image->picture);
GdipFree(image);
@@ -429,6 +433,29 @@ GpStatus WINGDIPAPI GdipGetImageBounds(GpImage *image, GpRectF *srcRect,
return Ok;
}
+GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage *image,
+ GpGraphics **graphics)
+{
+ HDC hdc;
+
+ if(!image || !graphics)
+ return InvalidParameter;
+
+ if(image->type != ImageTypeBitmap){
+ FIXME("not implemented for image type %d\n", image->type);
+ return NotImplemented;
+ }
+
+ IPicture_get_CurDC(image->picture, &hdc);
+
+ if(!hdc){
+ hdc = CreateCompatibleDC(0);
+ IPicture_SelectPicture(image->picture, hdc, NULL, NULL);
+ }
+
+ return GdipCreateFromHDC(hdc, graphics);
+}
+
GpStatus WINGDIPAPI GdipGetImageHeight(GpImage *image, UINT *height)
{
if(!image || !height)
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index 33d0e33..b190492 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -192,6 +192,7 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromStream(IStream*,GpBitmap**);
GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM(IStream*,GpBitmap**);
GpStatus WINGDIPAPI GdipDisposeImage(GpImage*);
GpStatus WINGDIPAPI GdipGetImageBounds(GpImage*,GpRectF*,GpUnit*);
+GpStatus WINGDIPAPI GdipGetImageGraphicsContext(GpImage*,GpGraphics**);
GpStatus WINGDIPAPI GdipGetImageHeight(GpImage*,UINT*);
GpStatus WINGDIPAPI GdipGetImageHorizontalResolution(GpImage*,REAL*);
GpStatus WINGDIPAPI GdipGetImagePixelFormat(GpImage*,PixelFormat*);
More information about the wine-cvs
mailing list