Closed_BSpline31::Closed_BSpline31 ( const Brush* brush, const Color* stroke, const Color* fill, Coord* x, Coord* y, int n, Transformer* t ) : Graphic31(brush, stroke, fill, nil, true, true, n * 3 + 1, t) { Bspline_move_to(x[0], y[0], x[n-1], y[n-1], x[1], y[1]); for (int i = 1; i < n - 1; ++i) { Bspline_curve_to(x[i], y[i], x[i-1], y[i-1], x[i+1], y[i+1]); } Bspline_curve_to(x[n-1], y[n-1], x[n-2], y[n-2], x[0], y[0]); Bspline_curve_to(x[0], y[0], x[n-1], y[n-1], x[1], y[1]); }
Open_BSpline::Open_BSpline ( const Brush* brush, const Color* stroke, const Color* fill, Coord* x, Coord* y, int n, Transformer* t ) : Graphic(brush, stroke, fill, nil, false, true, (n + 2) * 3 + 1, t) { Bspline_move_to(x[0], y[0], x[0], y[0], x[0], y[0]); Bspline_curve_to(x[0], y[0], x[0], y[0], x[1], y[1]); for (int i = 1; i < n - 1; ++i) { Bspline_curve_to(x[i], y[i], x[i-1], y[i-1], x[i+1], y[i+1]); } Bspline_curve_to(x[n-1], y[n-1], x[n-2], y[n-2], x[n-1], y[n-1]); Bspline_curve_to(x[n-1], y[n-1], x[n-1], y[n-1], x[n-1], y[n-1]); }