public static bool EnsureOnlySingleSegmentsInFigure(PathFigure original) { bool flag = false; PathSegmentCollection segmentCollection = new PathSegmentCollection(); foreach (PathSegment pathSegment in original.Segments) { PolyLineSegment polyLineSegment = pathSegment as PolyLineSegment; PolyQuadraticBezierSegment quadraticBezierSegment1 = pathSegment as PolyQuadraticBezierSegment; PolyBezierSegment polyBezierSegment = pathSegment as PolyBezierSegment; if (polyLineSegment != null) { foreach (Point point in polyLineSegment.Points) { LineSegment lineSegment = PathSegmentUtilities.CreateLineSegment(point, polyLineSegment.IsStroked, new bool?(polyLineSegment.IsSmoothJoin)); segmentCollection.Add((PathSegment)lineSegment); } flag = true; } else if (quadraticBezierSegment1 != null) { int index = 0; while (index < quadraticBezierSegment1.Points.Count - 1) { QuadraticBezierSegment quadraticBezierSegment2 = PathSegmentUtilities.CreateQuadraticBezierSegment(quadraticBezierSegment1.Points[index], quadraticBezierSegment1.Points[index + 1], quadraticBezierSegment1.IsStroked, new bool?(quadraticBezierSegment1.IsSmoothJoin)); segmentCollection.Add((PathSegment)quadraticBezierSegment2); index += 2; } flag = true; } else if (polyBezierSegment != null) { int index = 0; while (index < polyBezierSegment.Points.Count - 2) { BezierSegment bezierSegment = PathSegmentUtilities.CreateBezierSegment(polyBezierSegment.Points[index], polyBezierSegment.Points[index + 1], polyBezierSegment.Points[index + 2], polyBezierSegment.IsStroked, new bool?(polyBezierSegment.IsSmoothJoin)); segmentCollection.Add((PathSegment)bezierSegment); index += 3; } flag = true; } else { segmentCollection.Add(pathSegment); } } if (flag) { original.Segments = segmentCollection; } return(flag); }
public static BezierSegment CreateBezierSegment(Point point1, Point point2, Point point3, bool isStroked) { return(PathSegmentUtilities.CreateBezierSegment(point1, point2, point3, isStroked, new bool?())); }