Nikolay Sivov : gdiplus: Implemented GdipResetClip with tests.
Alexandre Julliard
julliard at winehq.org
Fri Aug 29 07:29:43 CDT 2008
Module: wine
Branch: master
Commit: ff88d4e18e806c6c5256ef00f8a8f612c1469ae8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ff88d4e18e806c6c5256ef00f8a8f612c1469ae8
Author: Nikolay Sivov <bunglehead at gmail.com>
Date: Thu Aug 28 17:34:22 2008 +0400
gdiplus: Implemented GdipResetClip with tests.
---
dlls/gdiplus/gdiplus.spec | 2 +-
dlls/gdiplus/graphics.c | 11 +++++++++++
dlls/gdiplus/tests/graphics.c | 33 +++++++++++++++++++++++++++++++++
include/gdiplusflat.h | 1 +
4 files changed, 46 insertions(+), 1 deletions(-)
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 95add0d..87dc747 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -474,7 +474,7 @@
@ stub GdipRecordMetafileStreamI
@ stdcall GdipReleaseDC(ptr ptr)
@ stdcall GdipRemovePropertyItem(ptr long)
-@ stub GdipResetClip
+@ stdcall GdipResetClip(ptr)
@ stub GdipResetImageAttributes
@ stub GdipResetLineTransform
@ stub GdipResetPageTransform
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index a2ff33f..bcfe70f 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -2514,6 +2514,17 @@ GpStatus WINGDIPAPI GdipMeasureString(GpGraphics *graphics,
return Ok;
}
+GpStatus WINGDIPAPI GdipResetClip(GpGraphics *graphics)
+{
+ if(!graphics)
+ return InvalidParameter;
+
+ if(graphics->busy)
+ return ObjectBusy;
+
+ return GdipSetInfinite(graphics->clip);
+}
+
GpStatus WINGDIPAPI GdipResetWorldTransform(GpGraphics *graphics)
{
if(!graphics)
diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c
index e316ab9..8bd76d1 100644
--- a/dlls/gdiplus/tests/graphics.c
+++ b/dlls/gdiplus/tests/graphics.c
@@ -674,6 +674,8 @@ static void test_Get_Release_DC(void)
expect(ObjectBusy, status); status = Ok;
/* GdipMeasureCharacterRanges */
/* GdipMeasureString */
+ status = GdipResetClip(graphics);
+ expect(ObjectBusy, status); status = Ok;
status = GdipResetWorldTransform(graphics);
expect(ObjectBusy, status); status = Ok;
/* GdipRestoreGraphics */
@@ -805,6 +807,37 @@ static void test_get_set_clip(void)
expect(Ok, status);
expect(TRUE, res);
+ /* remains infinite after reset */
+ res = FALSE;
+ status = GdipResetClip(graphics);
+ expect(Ok, status);
+ status = GdipGetClip(graphics, clip);
+ expect(Ok, status);
+ status = GdipIsInfiniteRegion(clip, graphics, &res);
+ expect(Ok, status);
+ expect(TRUE, res);
+
+ /* set to empty and then reset to infinite */
+ status = GdipSetEmpty(clip);
+ expect(Ok, status);
+ status = GdipSetClipRegion(graphics, clip, CombineModeReplace);
+ expect(Ok, status);
+
+ status = GdipGetClip(graphics, clip);
+ expect(Ok, status);
+ res = FALSE;
+ status = GdipIsEmptyRegion(clip, graphics, &res);
+ expect(Ok, status);
+ expect(TRUE, res);
+ status = GdipResetClip(graphics);
+ expect(Ok, status);
+ status = GdipGetClip(graphics, clip);
+ expect(Ok, status);
+ res = FALSE;
+ status = GdipIsInfiniteRegion(clip, graphics, &res);
+ expect(Ok, status);
+ expect(TRUE, res);
+
GdipDeleteRegion(clip);
GdipDeleteGraphics(graphics);
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index 8a1e8f7..d9b70b2 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -157,6 +157,7 @@ GpStatus WINGDIPAPI GdipFillRectanglesI(GpGraphics*,GpBrush*,GDIPCONST GpRect*,I
GpStatus WINGDIPAPI GdipGetCompositingMode(GpGraphics*,CompositingMode*);
GpStatus WINGDIPAPI GdipGetClip(GpGraphics*,GpRegion*);
GpStatus WINGDIPAPI GdipSetClipRegion(GpGraphics*,GpRegion*,CombineMode);
+GpStatus WINGDIPAPI GdipResetClip(GpGraphics*);
GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
GpStatus WINGDIPAPI GdipGetDC(GpGraphics*,HDC*);
GpStatus WINGDIPAPI GdipGetImageDimension(GpImage*,REAL*,REAL*);
More information about the wine-cvs
mailing list