Vincent Povirk : gdiplus: Use GdipFillPath to implement GdipFillPolygonI.
Alexandre Julliard
julliard at winehq.org
Thu Mar 17 12:27:00 CDT 2011
Module: wine
Branch: master
Commit: 5190f8a5f1c41b10a1b7d1d0837cf78cebd41862
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5190f8a5f1c41b10a1b7d1d0837cf78cebd41862
Author: Vincent Povirk <vincent at 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,
More information about the wine-cvs
mailing list