Module: wine Branch: master Commit: 5190f8a5f1c41b10a1b7d1d0837cf78cebd41862 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5190f8a5f1c41b10a1b7d1d083...
Author: Vincent Povirk vincent@codeweavers.com Date: Thu Mar 10 16:45:41 2011 -0600
gdiplus: Use GdipFillPath to implement GdipFillPolygonI.
---
dlls/gdiplus/graphics.c | 47 ++++++++++------------------------------------- 1 files changed, 10 insertions(+), 37 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index f2ebfba..b0b4d08 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -3540,10 +3540,8 @@ GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics *graphics, GpBrush *brush, GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics *graphics, GpBrush *brush, GDIPCONST GpPoint *points, INT count, GpFillMode fillMode) { - INT save_state, i; - 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);
@@ -3553,44 +3551,19 @@ GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics *graphics, GpBrush *brush, if(graphics->busy) return ObjectBusy;
- if(!graphics->hdc) + stat = GdipCreatePath(fillMode, &path); + + if (stat == Ok) { - FIXME("graphics object has no HDC\n"); - return Ok; - } + stat = GdipAddPathPolygonI(path, points, count);
- ptf = GdipAlloc(count * sizeof(GpPointF)); - pti = GdipAlloc(count * sizeof(POINT)); - if(!ptf || !pti){ - retval = OutOfMemory; - goto end; - } + if (stat == Ok) + stat = GdipFillPath(graphics, brush, path);
- for(i = 0; i < count; i ++){ - ptf[i].X = (REAL) points[i].X; - ptf[i].Y = (REAL) points[i].Y; + GdipDeletePath(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); - - RestoreDC(graphics->hdc, save_state); - -end: - GdipFree(ptf); - GdipFree(pti); - - return retval; + return stat; }
GpStatus WINGDIPAPI GdipFillPolygon2(GpGraphics *graphics, GpBrush *brush,