diplus: Implemented GdipDrawArcI based on GdipDrawArc.
This commit is contained in:
parent
da161a50f3
commit
fc31303780
|
@ -153,7 +153,7 @@
|
|||
@ stdcall GdipDisposeImage(ptr)
|
||||
@ stdcall GdipDisposeImageAttributes(ptr)
|
||||
@ stdcall GdipDrawArc(ptr ptr long long long long long long)
|
||||
@ stub GdipDrawArcI
|
||||
@ stdcall GdipDrawArcI(ptr ptr long long long long long long)
|
||||
@ stdcall GdipDrawBezier(ptr ptr long long long long long long long long)
|
||||
@ stdcall GdipDrawBezierI(ptr ptr long long long long long long long long)
|
||||
@ stub GdipDrawBeziers
|
||||
|
|
|
@ -929,6 +929,27 @@ GpStatus WINGDIPAPI GdipDrawArc(GpGraphics *graphics, GpPen *pen, REAL x,
|
|||
return retval;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipDrawArcI(GpGraphics *graphics, GpPen *pen, INT x,
|
||||
INT y, INT width, INT height, REAL startAngle, REAL sweepAngle)
|
||||
{
|
||||
INT save_state, num_pts;
|
||||
GpPointF points[MAX_ARC_PTS];
|
||||
GpStatus retval;
|
||||
|
||||
if(!graphics || !pen || width <= 0 || height <= 0)
|
||||
return InvalidParameter;
|
||||
|
||||
num_pts = arc2polybezier(points, x, y, width, height, startAngle, sweepAngle);
|
||||
|
||||
save_state = prepare_dc(graphics, pen);
|
||||
|
||||
retval = draw_polybezier(graphics, pen, points, num_pts, TRUE);
|
||||
|
||||
restore_dc(graphics, save_state);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics *graphics, GpPen *pen, REAL x1,
|
||||
REAL y1, REAL x2, REAL y2, REAL x3, REAL y3, REAL x4, REAL y4)
|
||||
{
|
||||
|
|
|
@ -220,6 +220,50 @@ static void test_save_restore(void)
|
|||
ReleaseDC(0, hdc);
|
||||
}
|
||||
|
||||
static void test_GdipDrawArcI(void)
|
||||
{
|
||||
GpStatus status;
|
||||
GpGraphics *graphics = NULL;
|
||||
GpPen *pen = NULL;
|
||||
HDC hdc = GetDC(0);
|
||||
|
||||
/* make a graphics object and pen object */
|
||||
status = GdipCreateFromHDC(hdc, &graphics);
|
||||
expect(Ok, status);
|
||||
ok(hdc != NULL, "Expected HDC to be initialized\n");
|
||||
|
||||
status = GdipCreateFromHDC(hdc, &graphics);
|
||||
expect(Ok, status);
|
||||
ok(graphics != NULL, "Expected graphics to be initialized\n");
|
||||
|
||||
status = GdipCreatePen1((ARGB)0xffff00ff, 10.0f, UnitPixel, &pen);
|
||||
expect(Ok, status);
|
||||
ok(pen != NULL, "Expected pen to be initialized\n");
|
||||
|
||||
/* InvalidParameter cases: null graphics, null pen, non-positive width, non-positive height */
|
||||
status = GdipDrawArcI(NULL, NULL, 0, 0, 0, 0, 0, 0);
|
||||
expect(InvalidParameter, status);
|
||||
|
||||
status = GdipDrawArcI(graphics, NULL, 0, 0, 1, 1, 0, 0);
|
||||
expect(InvalidParameter, status);
|
||||
|
||||
status = GdipDrawArcI(NULL, pen, 0, 0, 1, 1, 0, 0);
|
||||
expect(InvalidParameter, status);
|
||||
|
||||
status = GdipDrawArcI(graphics, pen, 0, 0, 1, 0, 0, 0);
|
||||
expect(InvalidParameter, status);
|
||||
|
||||
status = GdipDrawArcI(graphics, pen, 0, 0, 0, 1, 0, 0);
|
||||
expect(InvalidParameter, status);
|
||||
|
||||
/* successful case */
|
||||
status = GdipDrawArcI(graphics, pen, 0, 0, 1, 1, 0, 0);
|
||||
expect(Ok, status);
|
||||
|
||||
GdipDeletePen(pen);
|
||||
ReleaseDC(0, hdc);
|
||||
}
|
||||
|
||||
static void test_GdipDrawBezierI(void)
|
||||
{
|
||||
GpStatus status;
|
||||
|
@ -273,6 +317,7 @@ START_TEST(graphics)
|
|||
test_constructor_destructor();
|
||||
test_save_restore();
|
||||
test_GdipDrawBezierI();
|
||||
test_GdipDrawArcI();
|
||||
|
||||
GdiplusShutdown(gdiplusToken);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue