Commit 1ef7793b authored by Evan Stade's avatar Evan Stade Committed by Alexandre Julliard

gdiplus: Added GdipFillPolygon.

parent bba20a68
...@@ -224,7 +224,7 @@ ...@@ -224,7 +224,7 @@
@ stub GdipFillPieI @ stub GdipFillPieI
@ stub GdipFillPolygon2 @ stub GdipFillPolygon2
@ stub GdipFillPolygon2I @ stub GdipFillPolygon2I
@ stub GdipFillPolygon @ stdcall GdipFillPolygon(ptr ptr ptr long long)
@ stdcall GdipFillPolygonI(ptr ptr ptr long long) @ stdcall GdipFillPolygonI(ptr ptr ptr long long)
@ stub GdipFillRectangle @ stub GdipFillRectangle
@ stub GdipFillRectangleI @ stub GdipFillRectangleI
......
...@@ -1224,6 +1224,45 @@ GpStatus WINGDIPAPI GdipFillPie(GpGraphics *graphics, GpBrush *brush, REAL x, ...@@ -1224,6 +1224,45 @@ GpStatus WINGDIPAPI GdipFillPie(GpGraphics *graphics, GpBrush *brush, REAL x,
return Ok; return Ok;
} }
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;
if(!graphics || !brush || !points || !count)
return InvalidParameter;
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);
EndPath(graphics->hdc);
SelectObject(graphics->hdc, brush->gdibrush);
SelectObject(graphics->hdc, GetStockObject(NULL_PEN));
SetPolyFillMode(graphics->hdc, (fillMode == FillModeAlternate ? ALTERNATE
: WINDING));
transform_and_round_points(graphics, pti, ptf, count);
Polygon(graphics->hdc, pti, count);
RestoreDC(graphics->hdc, save_state);
end:
GdipFree(ptf);
GdipFree(pti);
return retval;
}
GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics *graphics, GpBrush *brush, GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics *graphics, GpBrush *brush,
GDIPCONST GpPoint *points, INT count, GpFillMode fillMode) GDIPCONST GpPoint *points, INT count, GpFillMode fillMode)
{ {
......
...@@ -102,6 +102,8 @@ GpStatus WINGDIPAPI GdipClosePathFigure(GpPath*); ...@@ -102,6 +102,8 @@ GpStatus WINGDIPAPI GdipClosePathFigure(GpPath*);
GpStatus WINGDIPAPI GdipClosePathFigures(GpPath*); GpStatus WINGDIPAPI GdipClosePathFigures(GpPath*);
GpStatus WINGDIPAPI GdipCreatePath(GpFillMode,GpPath**); GpStatus WINGDIPAPI GdipCreatePath(GpFillMode,GpPath**);
GpStatus WINGDIPAPI GdipDeletePath(GpPath*); GpStatus WINGDIPAPI GdipDeletePath(GpPath*);
GpStatus WINGDIPAPI GdipFillPolygon(GpGraphics*,GpBrush*,GDIPCONST GpPointF*,
INT,GpFillMode);
GpStatus WINGDIPAPI GdipGetPathFillMode(GpPath*,GpFillMode*); GpStatus WINGDIPAPI GdipGetPathFillMode(GpPath*,GpFillMode*);
GpStatus WINGDIPAPI GdipGetPathPoints(GpPath*,GpPointF*,INT); GpStatus WINGDIPAPI GdipGetPathPoints(GpPath*,GpPointF*,INT);
GpStatus WINGDIPAPI GdipGetPathTypes(GpPath*,BYTE*,INT); GpStatus WINGDIPAPI GdipGetPathTypes(GpPath*,BYTE*,INT);
......
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