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 QuadraticBezierSegment CreateQuadraticBezierSegment(Point point1, Point point2, bool isStroked)
 {
     return(PathSegmentUtilities.CreateQuadraticBezierSegment(point1, point2, isStroked, new bool?()));
 }