From feef61743d188698907dc0b956395788c22c4666 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Wed, 30 Oct 2013 11:14:12 -0500 Subject: [PATCH] gdiplus: Use clip region in GdipFillPath. --- dlls/gdiplus/graphics.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index ad5e2be2929..366fa0ecfb6 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -3618,6 +3618,7 @@ static GpStatus GDI32_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath { INT save_state; GpStatus retval; + HRGN hrgn=NULL; if(!graphics->hdc || !brush_can_fill_path(brush)) return NotImplemented; @@ -3627,6 +3628,14 @@ static GpStatus GDI32_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath SetPolyFillMode(graphics->hdc, (path->fill == FillModeAlternate ? ALTERNATE : WINDING)); + retval = get_clip_hrgn(graphics, &hrgn); + + if (retval != Ok) + goto end; + + if (hrgn) + ExtSelectClipRgn(graphics->hdc, hrgn, RGN_AND); + BeginPath(graphics->hdc); retval = draw_poly(graphics, NULL, path->pathdata.Points, path->pathdata.Types, path->pathdata.Count, FALSE); @@ -3641,6 +3650,7 @@ static GpStatus GDI32_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath end: RestoreDC(graphics->hdc, save_state); + DeleteObject(hrgn); return retval; } -- 2.11.4.GIT