From f8edb068e71f4865ac23db051d62b541bd28a10b Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Mon, 2 Feb 2009 23:33:41 +0300 Subject: [PATCH] gdiplus: Implemented GdipSetClipHrgn. --- dlls/gdiplus/gdiplus.spec | 2 +- dlls/gdiplus/graphics.c | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index 450c5967af..ba2b5ab9bc 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -507,7 +507,7 @@ @ stdcall GdipSetAdjustableArrowCapMiddleInset(ptr long) @ stdcall GdipSetAdjustableArrowCapWidth(ptr long) @ stdcall GdipSetClipGraphics(ptr ptr long) -@ stub GdipSetClipHrgn +@ stdcall GdipSetClipHrgn(ptr long long) @ stdcall GdipSetClipPath(ptr ptr long) @ stdcall GdipSetClipRect(ptr long long long long long) @ stdcall GdipSetClipRectI(ptr long long long long long) diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 547f9f69da..1c884533cb 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -3083,6 +3083,29 @@ GpStatus WINGDIPAPI GdipTranslateWorldTransform(GpGraphics *graphics, REAL dx, return GdipTranslateMatrix(graphics->worldtrans, dx, dy, order); } +/***************************************************************************** + * GdipSetClipHrgn [GDIPLUS.@] + */ +GpStatus WINGDIPAPI GdipSetClipHrgn(GpGraphics *graphics, HRGN hrgn, CombineMode mode) +{ + GpRegion *region; + GpStatus status; + + TRACE("(%p, %p, %d)\n", graphics, hrgn, mode); + + if(!graphics) + return InvalidParameter; + + status = GdipCreateRegionHrgn(hrgn, ®ion); + if(status != Ok) + return status; + + status = GdipSetClipRegion(graphics, region, mode); + + GdipDeleteRegion(region); + return status; +} + GpStatus WINGDIPAPI GdipSetClipPath(GpGraphics *graphics, GpPath *path, CombineMode mode) { TRACE("(%p, %p, %d)\n", graphics, path, mode); -- 2.32.0.93.g670b81a890