[1/4] gdiplus: Implemented GdipResetClip with tests

Nikolay Sivov bunglehead at gmail.com
Fri Aug 29 00:12:35 CDT 2008


Changelog
    - Implemented GdipResetClip with tests


>From d8488b258fea9cfc19e0a6ce91f0110954cdae67 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <bunglehead at gmail.com>
Date: Thu, 28 Aug 2008 17:34:22 +0400
Subject:  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*);
-- 
1.4.4.4






More information about the wine-patches mailing list