Adjust project structure

This commit is contained in:
NaBian committed 2019-04-05 22:23:19 +08:00
1 parent d38912f5da
commit e3c436f939
2111 files changed
+14028 -47199

No files matched your search

@@ -0,0 +1,76 @@
using System.Collections.Generic;
using System.Windows;
namespace HandyControl.Expression.Drawing
{
internal class SimpleSegment
{
public enum SegmentType
{
Line,
CubicBeizer
}
private SimpleSegment()
{
}
public Point[] Points { get; private set; }
public SegmentType Type { get; private set; }
public static SimpleSegment Create(Point point0, Point point1)
{
var segment = new SimpleSegment
{
Type = SegmentType.Line,
Points = new[] {point0, point1}
};
return segment;
}
public static SimpleSegment Create(Point point0, Point point1, Point point2)
{
var point = GeometryHelper.Lerp(point0, point1, 0.66666666666666663);
var point3 = GeometryHelper.Lerp(point1, point2, 0.33333333333333331);
var segment = new SimpleSegment
{
Type = SegmentType.CubicBeizer,
Points = new[] {point0, point, point3, point2}
};
return segment;
}
public static SimpleSegment Create(Point point0, Point point1, Point point2, Point point3)
{
var segment = new SimpleSegment
{
Type = SegmentType.CubicBeizer,
Points = new[] {point0, point1, point2, point3}
};
return segment;
}
public void Flatten(IList<Point> resultPolyline, double tolerance, IList<double> resultParameters)
{
switch (Type)
{
case SegmentType.Line:
resultPolyline.Add(Points[1]);
if (resultParameters == null) break;
resultParameters.Add(1.0);
return;
case SegmentType.CubicBeizer:
BezierCurveFlattener.FlattenCubic(Points, tolerance, resultPolyline, true,
resultParameters);
break;
default:
return;
}
}
}
}