Commit feef6174 authored by Vincent Povirk's avatar Vincent Povirk Committed by Alexandre Julliard

gdiplus: Use clip region in GdipFillPath.

parent 08b65020
...@@ -3618,6 +3618,7 @@ static GpStatus GDI32_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath ...@@ -3618,6 +3618,7 @@ static GpStatus GDI32_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath
{ {
INT save_state; INT save_state;
GpStatus retval; GpStatus retval;
HRGN hrgn=NULL;
if(!graphics->hdc || !brush_can_fill_path(brush)) if(!graphics->hdc || !brush_can_fill_path(brush))
return NotImplemented; return NotImplemented;
...@@ -3627,6 +3628,14 @@ static GpStatus GDI32_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath ...@@ -3627,6 +3628,14 @@ static GpStatus GDI32_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath
SetPolyFillMode(graphics->hdc, (path->fill == FillModeAlternate ? ALTERNATE SetPolyFillMode(graphics->hdc, (path->fill == FillModeAlternate ? ALTERNATE
: WINDING)); : WINDING));
retval = get_clip_hrgn(graphics, &hrgn);
if (retval != Ok)
goto end;
if (hrgn)
ExtSelectClipRgn(graphics->hdc, hrgn, RGN_AND);
BeginPath(graphics->hdc); BeginPath(graphics->hdc);
retval = draw_poly(graphics, NULL, path->pathdata.Points, retval = draw_poly(graphics, NULL, path->pathdata.Points,
path->pathdata.Types, path->pathdata.Count, FALSE); path->pathdata.Types, path->pathdata.Count, FALSE);
...@@ -3641,6 +3650,7 @@ static GpStatus GDI32_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath ...@@ -3641,6 +3650,7 @@ static GpStatus GDI32_GdipFillPath(GpGraphics *graphics, GpBrush *brush, GpPath
end: end:
RestoreDC(graphics->hdc, save_state); RestoreDC(graphics->hdc, save_state);
DeleteObject(hrgn);
return retval; return retval;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment