Vincent Povirk : gdiplus: Use clip region in GdipFillPath.
Module: wine Branch: master Commit: feef61743d188698907dc0b956395788c22c4666 URL: http://source.winehq.org/git/wine.git/?a=commit;h=feef61743d188698907dc0b956... Author: Vincent Povirk <vincent(a)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; }
participants (1)
-
Alexandre Julliard