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