예제 #1
0
        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));
            }
        }
예제 #2
0
 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];
     }
 }