gdiplus: Added GdipFillPolygon.
This commit is contained in:
parent
bba20a68b8
commit
1ef7793b51
@ -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,
|
|||||||
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*);
|
|||||||
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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user