Module: wine Branch: master Commit: ff88d4e18e806c6c5256ef00f8a8f612c1469ae8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ff88d4e18e806c6c5256ef00f8...
Author: Nikolay Sivov bunglehead@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*);