mirror of
https://github.com/reactos/wine.git
synced 2025-02-18 03:48:01 +00:00
gdiplus: Implement GdipDrawLinesI based on GdipDrawLines.
This commit is contained in:
parent
a78727d73b
commit
6e7b5347e3
@ -188,7 +188,7 @@
|
|||||||
@ stdcall GdipDrawLine(ptr ptr long long long long)
|
@ stdcall GdipDrawLine(ptr ptr long long long long)
|
||||||
@ stdcall GdipDrawLineI(ptr ptr long long long long)
|
@ stdcall GdipDrawLineI(ptr ptr long long long long)
|
||||||
@ stdcall GdipDrawLines(ptr ptr ptr long)
|
@ stdcall GdipDrawLines(ptr ptr ptr long)
|
||||||
@ stub GdipDrawLinesI
|
@ stdcall GdipDrawLinesI(ptr ptr ptr long)
|
||||||
@ stdcall GdipDrawPath(ptr ptr ptr)
|
@ stdcall GdipDrawPath(ptr ptr ptr)
|
||||||
@ stdcall GdipDrawPie(ptr ptr long long long long long long)
|
@ stdcall GdipDrawPie(ptr ptr long long long long long long)
|
||||||
@ stub GdipDrawPieI
|
@ stub GdipDrawPieI
|
||||||
|
@ -1224,6 +1224,35 @@ GpStatus WINGDIPAPI GdipDrawLines(GpGraphics *graphics, GpPen *pen, GDIPCONST
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GpStatus WINGDIPAPI GdipDrawLinesI(GpGraphics *graphics, GpPen *pen, GDIPCONST
|
||||||
|
GpPoint *points, INT count)
|
||||||
|
{
|
||||||
|
INT save_state;
|
||||||
|
GpStatus retval;
|
||||||
|
GpPointF *ptf = NULL;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if(!pen || !graphics || (count < 2))
|
||||||
|
return InvalidParameter;
|
||||||
|
|
||||||
|
ptf = GdipAlloc(count * sizeof(GpPointF));
|
||||||
|
if(!ptf) return OutOfMemory;
|
||||||
|
|
||||||
|
for(i = 0; i < count; i ++){
|
||||||
|
ptf[i].X = (REAL) points[i].X;
|
||||||
|
ptf[i].Y = (REAL) points[i].Y;
|
||||||
|
}
|
||||||
|
|
||||||
|
save_state = prepare_dc(graphics, pen);
|
||||||
|
|
||||||
|
retval = draw_polyline(graphics, pen, ptf, count, TRUE);
|
||||||
|
|
||||||
|
restore_dc(graphics, save_state);
|
||||||
|
|
||||||
|
GdipFree(ptf);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
GpStatus WINGDIPAPI GdipDrawPath(GpGraphics *graphics, GpPen *pen, GpPath *path)
|
GpStatus WINGDIPAPI GdipDrawPath(GpGraphics *graphics, GpPen *pen, GpPath *path)
|
||||||
{
|
{
|
||||||
INT save_state;
|
INT save_state;
|
||||||
|
@ -384,6 +384,58 @@ static void test_GdipDrawLineI(void)
|
|||||||
ReleaseDC(0, hdc);
|
ReleaseDC(0, hdc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_GdipDrawLinesI(void)
|
||||||
|
{
|
||||||
|
GpStatus status;
|
||||||
|
GpGraphics *graphics = NULL;
|
||||||
|
GpPen *pen = NULL;
|
||||||
|
GpPoint *ptf = 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");
|
||||||
|
|
||||||
|
/* make some arbitrary valid points*/
|
||||||
|
ptf = GdipAlloc(2 * sizeof(GpPointF));
|
||||||
|
|
||||||
|
ptf[0].X = 1;
|
||||||
|
ptf[0].Y = 1;
|
||||||
|
|
||||||
|
ptf[1].X = 2;
|
||||||
|
ptf[1].Y = 2;
|
||||||
|
|
||||||
|
/* InvalidParameter cases: null graphics, null pen, null points, count < 2*/
|
||||||
|
status = GdipDrawLinesI(NULL, NULL, NULL, 0);
|
||||||
|
expect(InvalidParameter, status);
|
||||||
|
|
||||||
|
status = GdipDrawLinesI(graphics, pen, ptf, 0);
|
||||||
|
expect(InvalidParameter, status);
|
||||||
|
|
||||||
|
status = GdipDrawLinesI(graphics, NULL, ptf, 2);
|
||||||
|
expect(InvalidParameter, status);
|
||||||
|
|
||||||
|
status = GdipDrawLinesI(NULL, pen, ptf, 2);
|
||||||
|
expect(InvalidParameter, status);
|
||||||
|
|
||||||
|
/* successful case */
|
||||||
|
status = GdipDrawLinesI(graphics, pen, ptf, 2);
|
||||||
|
expect(Ok, status);
|
||||||
|
|
||||||
|
GdipFree(ptf);
|
||||||
|
GdipDeletePen(pen);
|
||||||
|
ReleaseDC(0, hdc);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(graphics)
|
START_TEST(graphics)
|
||||||
{
|
{
|
||||||
struct GdiplusStartupInput gdiplusStartupInput;
|
struct GdiplusStartupInput gdiplusStartupInput;
|
||||||
@ -402,6 +454,7 @@ START_TEST(graphics)
|
|||||||
test_GdipDrawArc();
|
test_GdipDrawArc();
|
||||||
test_GdipDrawArcI();
|
test_GdipDrawArcI();
|
||||||
test_GdipDrawLineI();
|
test_GdipDrawLineI();
|
||||||
|
test_GdipDrawLinesI();
|
||||||
|
|
||||||
GdiplusShutdown(gdiplusToken);
|
GdiplusShutdown(gdiplusToken);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user