Browse Source

stop using linq in InternalPath

af/merge-core
Scott Williams 10 years ago
parent
commit
3d3832adf1
  1. 12
      src/ImageSharp/Drawing/Paths/InternalPath.cs
  2. 9
      src/ImageSharp/Drawing/Shapes/Polygon.cs

12
src/ImageSharp/Drawing/Paths/InternalPath.cs

@ -32,7 +32,7 @@ namespace ImageSharp.Drawing.Paths
/// </summary>
/// <param name="segments">The segments.</param>
/// <param name="isClosedPath">if set to <c>true</c> [is closed path].</param>
internal InternalPath(IEnumerable<ILineSegment> segments, bool isClosedPath)
internal InternalPath(ILineSegment[] segments, bool isClosedPath)
{
Guard.NotNull(segments, nameof(segments));
@ -158,9 +158,15 @@ namespace ImageSharp.Drawing.Paths
return oddNodes;
}
private Vector2[] Simplify(IEnumerable<ILineSegment> segments)
private Vector2[] Simplify(ILineSegment[] segments)
{
return segments.SelectMany(x => x.AsSimpleLinearPath()).ToArray();
List<Vector2> points = new List<Vector2>();
foreach(var seg in segments)
{
points.AddRange(seg.AsSimpleLinearPath());
}
return points.ToArray();
}
private float CalculateLength()

9
src/ImageSharp/Drawing/Shapes/Polygon.cs

@ -24,15 +24,6 @@ namespace ImageSharp.Drawing.Shapes
/// </summary>
/// <param name="segments">The segments.</param>
public Polygon(params ILineSegment[] segments)
: this((IEnumerable<ILineSegment>)segments)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="Polygon"/> class.
/// </summary>
/// <param name="segments">The segments.</param>
public Polygon(IEnumerable<ILineSegment> segments)
{
this.innerPath = new InternalPath(segments, true);
this.pathCollection = new[] { this };

Loading…
Cancel
Save