|
@@ -165,6 +165,28 @@ int w_BezierCurve_render(lua_State *L)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+int w_BezierCurve_renderSegment(lua_State *L)
|
|
|
+{
|
|
|
+ BezierCurve *curve = luax_checkbeziercurve(L, 1);
|
|
|
+ double start = luaL_checknumber(L, 2);
|
|
|
+ double end = luaL_checknumber(L, 3);
|
|
|
+ int accuracy = luaL_optinteger(L, 4, 5);
|
|
|
+
|
|
|
+ std::vector<Vector> points;
|
|
|
+ luax_catchexcept(L, [&](){ points = curve->renderSegment(start, end, accuracy); });
|
|
|
+
|
|
|
+ lua_createtable(L, points.size()*2, 0);
|
|
|
+ for (size_t i = 0; i < points.size(); ++i)
|
|
|
+ {
|
|
|
+ lua_pushnumber(L, points[i].x);
|
|
|
+ lua_rawseti(L, -2, 2*i+2);
|
|
|
+ lua_pushnumber(L, points[i].y);
|
|
|
+ lua_rawseti(L, -2, 2*i+2);
|
|
|
+ }
|
|
|
+
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+
|
|
|
static const luaL_Reg functions[] =
|
|
|
{
|
|
|
{"getDegree", w_BezierCurve_getDegree},
|
|
@@ -178,6 +200,7 @@ static const luaL_Reg functions[] =
|
|
|
{"scale", w_BezierCurve_scale},
|
|
|
{"evaluate", w_BezierCurve_evaluate},
|
|
|
{"render", w_BezierCurve_render},
|
|
|
+ {"renderSegment", w_BezierCurve_renderSegment},
|
|
|
{ 0, 0 }
|
|
|
};
|
|
|
|