static void AddBezierData(List <PointF> points, PathSeg segment) { var data = segment.Data; var offset = !segment.Abs && points.Count > 0 ? points[points.Count - 1] : PointF.Empty; if (segment.Type == SvgPathSegType.SVG_SEGTYPE_SMOOTHCURVETO) { var first = points[points.Count - 1]; if (points.Count == 1) { points.Add(first); } else { var reflection = points[points.Count - 2]; reflection.X = 2 * first.X - reflection.X; reflection.Y = 2 * first.Y - reflection.Y; points.Add(reflection); } } for (int i = 0; i < data.Length / 2; i++) { points.Add(new PointF( data[i * 2 + 0] + offset.X, data[i * 2 + 1] + offset.Y)); } }
static void StartLine(List <PointF> bezierPoints, List <PointF> linePoints, PathSeg segment, ref PointF point) { if (bezierPoints.Count > 0) { linePoints.Add(bezierPoints[bezierPoints.Count - 1]); point = segment.Abs ? default(PointF) : linePoints[0]; } }