Module: wine Branch: master Commit: 86d55d43c5f49ac5e87196cb1d4153626e292e18 URL: http://source.winehq.org/git/wine.git/?a=commit;h=86d55d43c5f49ac5e87196cb1d...
Author: Vincent Povirk vincent@codeweavers.com Date: Thu Mar 10 16:42:30 2011 -0600
gdiplus: Use GdipFillPath to implement GdipFillPolygon.
---
dlls/gdiplus/graphics.c | 46 +++++++++++----------------------------------- 1 files changed, 11 insertions(+), 35 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 262828b..f2ebfba 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -3511,10 +3511,8 @@ GpStatus WINGDIPAPI GdipFillPieI(GpGraphics *graphics, GpBrush *brush, INT x, GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPointF *points, INT count, GpFillMode fillMode) { - INT save_state; - GpPointF *ptf = NULL; - POINT *pti = NULL; - GpStatus retval = Ok; + GpStatus stat; + GpPath *path;
TRACE("(%p, %p, %p, %d, %d)\n", graphics, brush, points, count, fillMode);
@@ -3524,41 +3522,19 @@ GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics *graphics, GpBrush *brush, if(graphics->busy) return ObjectBusy;
- if(!graphics->hdc) - { - 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)); + stat = GdipCreatePath(fillMode, &path);
- save_state = SaveDC(graphics->hdc); - EndPath(graphics->hdc); - SetPolyFillMode(graphics->hdc, (fillMode == FillModeAlternate ? ALTERNATE - : 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); + if (stat == Ok) + { + stat = GdipAddPathPolygon(path, points, count);
- RestoreDC(graphics->hdc, save_state); + if (stat == Ok) + stat = GdipFillPath(graphics, brush, path);
-end: - GdipFree(ptf); - GdipFree(pti); + GdipDeletePath(path); + }
- return retval; + return stat; }
GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics *graphics, GpBrush *brush,