gdiplus: Added GdipFillPolygonI.

This commit is contained in:
Evan Stade 2007-07-23 20:24:35 -07:00 committed by Alexandre Julliard
parent 27124d5d32
commit 6467526469
5 changed files with 72 additions and 1 deletions

View File

@ -214,7 +214,7 @@
@ stub GdipFillPolygon2
@ stub GdipFillPolygon2I
@ stub GdipFillPolygon
@ stub GdipFillPolygonI
@ stdcall GdipFillPolygonI(ptr ptr ptr long long)
@ stub GdipFillRectangle
@ stub GdipFillRectangleI
@ stub GdipFillRectangles

View File

@ -974,6 +974,26 @@ GpStatus WINGDIPAPI GdipFillPie(GpGraphics *graphics, GpBrush *brush, REAL x,
width, height, startAngle, sweepAngle);
}
GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics *graphics, GpBrush *brush,
GDIPCONST GpPoint *points, INT count, GpFillMode fillMode)
{
INT save_state;
if(!graphics || !brush || !points || !count)
return InvalidParameter;
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));
Polygon(graphics->hdc, (GDIPCONST POINT*) points, count);
RestoreDC(graphics->hdc, save_state);
return Ok;
}
/* FIXME: Compositing quality is not used anywhere except the getter/setter. */
GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics *graphics,
CompositingQuality *quality)

View File

@ -58,6 +58,8 @@ GpStatus WINGDIPAPI GdipDrawPie(GpGraphics*,GpPen*,REAL,REAL,REAL,REAL,REAL,REAL
GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics*,GpPen*,INT,INT,INT,INT);
GpStatus WINGDIPAPI GdipFillPath(GpGraphics*,GpBrush*,GpPath*);
GpStatus WINGDIPAPI GdipFillPie(GpGraphics*,GpBrush*,REAL,REAL,REAL,REAL,REAL,REAL);
GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT,
GpFillMode);
GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics*,InterpolationMode*);
GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*);

View File

@ -55,5 +55,6 @@ typedef LineJoin GpLineJoin;
typedef DashCap GpDashCap;
typedef DashStyle GpDashStyle;
typedef MatrixOrder GpMatrixOrder;
typedef Point GpPoint;
#endif

View File

@ -47,6 +47,48 @@ enum Status{
#ifdef __cplusplus
class Point
{
public:
Point()
{
X = Y = 0;
}
Point(IN const Point &pt)
{
X = pt.X;
Y = pt.Y;
}
/* FIXME: missing constructor that takes a Size */
Point(IN INT x, IN INT y)
{
X = x;
Y = y;
}
Point operator+(IN const Point& pt) const
{
return Point(X + pt.X, Y + pt.Y);
}
Point operator-(IN const Point& pt) const
{
return Point(X - pt.X, Y - pt.Y);
}
BOOL Equals(IN const Point& pt)
{
return (X == pt.X) && (Y == pt.Y);
}
public:
INT X;
INT Y;
};
class PointF
{
public:
@ -134,6 +176,12 @@ public:
#else /* end of c++ typedefs */
typedef struct Point
{
INT X;
INT Y;
} Point;
typedef struct PointF
{
REAL X;