Module: wine Branch: master Commit: 94a19d1f759b76de7d2127978a09e844b6026cde URL: http://source.winehq.org/git/wine.git/?a=commit;h=94a19d1f759b76de7d2127978a...
Author: Evan Stade estade@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*);