Module: wine Branch: master Commit: feef61743d188698907dc0b956395788c22c4666 URL: http://source.winehq.org/git/wine.git/?a=commit;h=feef61743d188698907dc0b956...
Author: Vincent Povirk vincent@codeweavers.com Date: Wed Oct 30 11:14:12 2013 -0500
gdiplus: Use clip region in GdipFillPath.
---
dlls/gdiplus/graphics.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index ad5e2be..366fa0e 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; }