Commit 86d55d43 authored by Vincent Povirk's avatar Vincent Povirk Committed by Alexandre Julliard

gdiplus: Use GdipFillPath to implement GdipFillPolygon.

parent b17d6492
...@@ -3511,10 +3511,8 @@ GpStatus WINGDIPAPI GdipFillPieI(GpGraphics *graphics, GpBrush *brush, INT x, ...@@ -3511,10 +3511,8 @@ GpStatus WINGDIPAPI GdipFillPieI(GpGraphics *graphics, GpBrush *brush, INT x,
GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics *graphics, GpBrush *brush, GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics *graphics, GpBrush *brush,
GDIPCONST GpPointF *points, INT count, GpFillMode fillMode) GDIPCONST GpPointF *points, INT count, GpFillMode fillMode)
{ {
INT save_state; GpStatus stat;
GpPointF *ptf = NULL; GpPath *path;
POINT *pti = NULL;
GpStatus retval = Ok;
TRACE("(%p, %p, %p, %d, %d)\n", graphics, brush, points, count, fillMode); TRACE("(%p, %p, %p, %d, %d)\n", graphics, brush, points, count, fillMode);
...@@ -3524,41 +3522,19 @@ GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics *graphics, GpBrush *brush, ...@@ -3524,41 +3522,19 @@ GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics *graphics, GpBrush *brush,
if(graphics->busy) if(graphics->busy)
return ObjectBusy; return ObjectBusy;
if(!graphics->hdc) stat = GdipCreatePath(fillMode, &path);
{
FIXME("graphics object has no HDC\n");
return Ok;
}
ptf = GdipAlloc(count * sizeof(GpPointF));
pti = GdipAlloc(count * sizeof(POINT));
if(!ptf || !pti){
retval = OutOfMemory;
goto end;
}
memcpy(ptf, points, count * sizeof(GpPointF));
save_state = SaveDC(graphics->hdc); if (stat == Ok)
EndPath(graphics->hdc); {
SetPolyFillMode(graphics->hdc, (fillMode == FillModeAlternate ? ALTERNATE stat = GdipAddPathPolygon(path, points, count);
: WINDING));
transform_and_round_points(graphics, pti, ptf, count);
BeginPath(graphics->hdc);
Polygon(graphics->hdc, pti, count);
EndPath(graphics->hdc);
brush_fill_path(graphics, brush);
RestoreDC(graphics->hdc, save_state); if (stat == Ok)
stat = GdipFillPath(graphics, brush, path);
end: GdipDeletePath(path);
GdipFree(ptf); }
GdipFree(pti);
return retval; return stat;
} }
GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics *graphics, GpBrush *brush, GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics *graphics, GpBrush *brush,
......
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