private void ConvertPart(PathThumb senderThumb, PathPartConvertType convertType)
		{
			if (senderThumb.PathPoint.ParentObject is PathFigure)
			{
				var pathFigure = senderThumb.PathPoint.ParentObject as PathFigure;
				var pathSegment = senderThumb.PathPoint.Object as PathSegment;

				var idx = pathFigure.Segments.IndexOf(pathSegment);

				var point = senderThumb.PathPoint.Point;

				if (pathSegment is PolyLineSegment) {
					var poly = pathSegment as PolyLineSegment;
					var lst = poly.Points.Take(senderThumb.PathPoint.PolyLineIndex);
					var lst2 = poly.Points.Skip(senderThumb.PathPoint.PolyLineIndex + 1);
					var p = poly.Points[senderThumb.PathPoint.PolyLineIndex];
					pathFigure.Segments.RemoveAt(idx);
					var p1 = new PolyLineSegment();
					p1.Points.AddRange(lst);
					pathFigure.Segments.Insert(idx, p1);
					pathSegment =  new LineSegment() {Point = p};
					pathFigure.Segments.Insert(idx+1, pathSegment);
					var p2 = new PolyLineSegment();
					p2.Points.AddRange(lst2);
					pathFigure.Segments.Insert(idx+2, p2);
					idx++;
				} else if (pathSegment is PolyBezierSegment) {
					//TODO
				} else if (pathSegment is PolyQuadraticBezierSegment) {
					//TODO
				}

				pathFigure.Segments.RemoveAt(idx);

				var midp = senderThumb.PathPoint.ParentPathPoint.Point - ((senderThumb.PathPoint.ParentPathPoint.Point - point) / 2);
				
				PathSegment newSegment = null;
				switch (convertType)
				{
					case PathPartConvertType.ToBezierSegment:
						newSegment = new BezierSegment() { Point1 = midp - new Vector(40, 40), Point2 = midp + new Vector(-40, 40), Point3 = point };
						break;
					case PathPartConvertType.ToQuadricBezierSegment:
						newSegment = new QuadraticBezierSegment() { Point1 = point - new Vector(40, 40), Point2 = point  };
						break;
					case PathPartConvertType.ToArcSegment:
						newSegment = new ArcSegment() { Point = point, Size = new Size(20, 20) };
						break;
					case PathPartConvertType.insertPoint:
						pathFigure.Segments.Insert(idx, pathSegment);
						newSegment = new LineSegment() { Point = midp, };
						break;
					default:
						newSegment = new LineSegment() { Point = point };
						break;
				}

				pathFigure.Segments.Insert(idx, newSegment);
			}

			this.ExtendedItem.ReapplyAllExtensions();
		}
        private void ConvertPart(PathThumb senderThumb, PathPartConvertType convertType)
        {
            if (senderThumb.PathPoint.ParentObject is PathFigure)
            {
                var pathFigure  = senderThumb.PathPoint.ParentObject as PathFigure;
                var pathSegment = senderThumb.PathPoint.Object as PathSegment;

                var idx = pathFigure.Segments.IndexOf(pathSegment);

                var point = senderThumb.PathPoint.Point;

                if (pathSegment is PolyLineSegment)
                {
                    var poly = pathSegment as PolyLineSegment;
                    var lst  = poly.Points.Take(senderThumb.PathPoint.PolyLineIndex);
                    var lst2 = poly.Points.Skip(senderThumb.PathPoint.PolyLineIndex + 1);
                    var p    = poly.Points[senderThumb.PathPoint.PolyLineIndex];
                    pathFigure.Segments.RemoveAt(idx);
                    var p1 = new PolyLineSegment();
                    p1.Points.AddRange(lst);
                    pathFigure.Segments.Insert(idx, p1);
                    pathSegment = new LineSegment()
                    {
                        Point = p
                    };
                    pathFigure.Segments.Insert(idx + 1, pathSegment);
                    var p2 = new PolyLineSegment();
                    p2.Points.AddRange(lst2);
                    pathFigure.Segments.Insert(idx + 2, p2);
                    idx++;
                }
                else if (pathSegment is PolyBezierSegment)
                {
                    //TODO
                }
                else if (pathSegment is PolyQuadraticBezierSegment)
                {
                    //TODO
                }

                pathFigure.Segments.RemoveAt(idx);

                var midp = senderThumb.PathPoint.ParentPathPoint.Point - ((senderThumb.PathPoint.ParentPathPoint.Point - point) / 2);

                PathSegment newSegment = null;
                switch (convertType)
                {
                case PathPartConvertType.ToBezierSegment:
                    newSegment = new BezierSegment()
                    {
                        Point1 = midp - new Vector(40, 40), Point2 = midp + new Vector(-40, 40), Point3 = point
                    };
                    break;

                case PathPartConvertType.ToQuadricBezierSegment:
                    newSegment = new QuadraticBezierSegment()
                    {
                        Point1 = point - new Vector(40, 40), Point2 = point
                    };
                    break;

                case PathPartConvertType.ToArcSegment:
                    newSegment = new ArcSegment()
                    {
                        Point = point, Size = new Size(20, 20)
                    };
                    break;

                case PathPartConvertType.insertPoint:
                    pathFigure.Segments.Insert(idx, pathSegment);
                    newSegment = new LineSegment()
                    {
                        Point = midp,
                    };
                    break;

                default:
                    newSegment = new LineSegment()
                    {
                        Point = point
                    };
                    break;
                }

                pathFigure.Segments.Insert(idx, newSegment);
                operation = PlacementOperation.Start(extendedItemArray, PlacementType.MovePoint);
                CommitOperation();
            }

            this.ExtendedItem.ReapplyAllExtensions();
        }