diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index 2c708235b83..298c5f76ab1 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -164,7 +164,7 @@ @ stub GdipDrawClosedCurve @ stub GdipDrawClosedCurveI @ stdcall GdipDrawCurve2(ptr ptr ptr long long) -@ stub GdipDrawCurve2I +@ stdcall GdipDrawCurve2I(ptr ptr ptr long long) @ stub GdipDrawCurve3 @ stub GdipDrawCurve3I @ stub GdipDrawCurve diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index b8a2efade1d..d918d9917f7 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -1059,6 +1059,31 @@ GpStatus WINGDIPAPI GdipDrawCurve2(GpGraphics *graphics, GpPen *pen, return retval; } +GpStatus WINGDIPAPI GdipDrawCurve2I(GpGraphics *graphics, GpPen *pen, + GDIPCONST GpPoint *points, INT count, REAL tension) +{ + GpPointF *pointsF; + GpStatus ret; + INT i; + + if(!points || count <= 0) + return InvalidParameter; + + pointsF = GdipAlloc(sizeof(GpPointF)*count); + if(!pointsF) + return OutOfMemory; + + for(i = 0; i < count; i++){ + pointsF[i].X = (REAL)points[i].X; + pointsF[i].Y = (REAL)points[i].Y; + } + + ret = GdipDrawCurve2(graphics,pen,pointsF,count,tension); + GdipFree(pointsF); + + return ret; +} + GpStatus WINGDIPAPI GdipDrawImageI(GpGraphics *graphics, GpImage *image, INT x, INT y) {