gdiplus: Use clip region in GdipFillPath.

This commit is contained in:
Vincent Povirk 2013-10-30 11:14:12 -05:00 committed by Alexandre Julliard
parent 08b650202c
commit feef61743d
1 changed files with 10 additions and 0 deletions

View File

@ -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;
}