private void DrawSpline(Context g)
{
var infos = GetDrawingInfos ();
foreach (var controlPoints in ControlPoints) {
int points = controlPoints.Count;
SplineInterpolator interpolator = new SplineInterpolator ();
IList<int> xa = controlPoints.Keys;
IList<int> ya = controlPoints.Values;
PointD[] line = new PointD [size];
for (int i = 0; i < points; i++) {
interpolator.Add (xa [i], ya [i]);
}
for (int i = 0; i < line.Length; i++) {
line[i].X = (float)i;
line[i].Y = (float)(Utility.Clamp(size - 1 - interpolator.Interpolate (i), 0, size - 1));
}
g.LineWidth = 2;
g.LineJoin = LineJoin.Round;
g.MoveTo (line [0]);
for (int i = 1; i < line.Length; i++)
g.LineTo (line [i]);
infos.MoveNext ();
var info = infos.Current;
g.Color = info.Color;
g.LineWidth = info.IsActive ? 2 : 1;
g.Stroke ();
}
}