diplus: Implement GdipDrawBezierI based on GdipDrawBezier.
This commit is contained in:
parent
de61fc5eca
commit
da161a50f3
|
@ -155,7 +155,7 @@
|
|||
@ stdcall GdipDrawArc(ptr ptr long long long long long long)
|
||||
@ stub GdipDrawArcI
|
||||
@ stdcall GdipDrawBezier(ptr ptr long long long long long long long long)
|
||||
@ stub GdipDrawBezierI
|
||||
@ stdcall GdipDrawBezierI(ptr ptr long long long long long long long long)
|
||||
@ stub GdipDrawBeziers
|
||||
@ stub GdipDrawBeziersI
|
||||
@ stub GdipDrawCachedBitmap
|
||||
|
|
|
@ -957,6 +957,34 @@ GpStatus WINGDIPAPI GdipDrawBezier(GpGraphics *graphics, GpPen *pen, REAL x1,
|
|||
return retval;
|
||||
}
|
||||
|
||||
GpStatus WINGDIPAPI GdipDrawBezierI(GpGraphics *graphics, GpPen *pen, INT x1,
|
||||
INT y1, INT x2, INT y2, INT x3, INT y3, INT x4, INT y4)
|
||||
{
|
||||
INT save_state;
|
||||
GpPointF pt[4];
|
||||
GpStatus retval;
|
||||
|
||||
if(!graphics || !pen)
|
||||
return InvalidParameter;
|
||||
|
||||
pt[0].X = x1;
|
||||
pt[0].Y = y1;
|
||||
pt[1].X = x2;
|
||||
pt[1].Y = y2;
|
||||
pt[2].X = x3;
|
||||
pt[2].Y = y3;
|
||||
pt[3].X = x4;
|
||||
pt[3].Y = y4;
|
||||
|
||||
save_state = prepare_dc(graphics, pen);
|
||||
|
||||
retval = draw_polybezier(graphics, pen, pt, 4, TRUE);
|
||||
|
||||
restore_dc(graphics, save_state);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/* Approximates cardinal spline with Bezier curves. */
|
||||
GpStatus WINGDIPAPI GdipDrawCurve2(GpGraphics *graphics, GpPen *pen,
|
||||
GDIPCONST GpPointF *points, INT count, REAL tension)
|
||||
|
|
|
@ -220,6 +220,44 @@ static void test_save_restore(void)
|
|||
ReleaseDC(0, hdc);
|
||||
}
|
||||
|
||||
static void test_GdipDrawBezierI(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 */
|
||||
status = GdipDrawBezierI(NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
expect(InvalidParameter, status);
|
||||
|
||||
status = GdipDrawBezierI(graphics, NULL, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
expect(InvalidParameter, status);
|
||||
|
||||
status = GdipDrawBezierI(NULL, pen, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
expect(InvalidParameter, status);
|
||||
|
||||
/* successful case */
|
||||
status = GdipDrawBezierI(graphics, pen, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
expect(Ok, status);
|
||||
|
||||
GdipDeletePen(pen);
|
||||
ReleaseDC(0, hdc);
|
||||
}
|
||||
|
||||
START_TEST(graphics)
|
||||
{
|
||||
struct GdiplusStartupInput gdiplusStartupInput;
|
||||
|
@ -234,6 +272,7 @@ START_TEST(graphics)
|
|||
|
||||
test_constructor_destructor();
|
||||
test_save_restore();
|
||||
test_GdipDrawBezierI();
|
||||
|
||||
GdiplusShutdown(gdiplusToken);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue