From 3d3832adf13050165a0db34227279f9f260cc484 Mon Sep 17 00:00:00 2001 From: Scott Williams Date: Thu, 15 Dec 2016 11:36:54 +0000 Subject: [PATCH] stop using linq in InternalPath --- src/ImageSharp/Drawing/Paths/InternalPath.cs | 12 +++++++++--- src/ImageSharp/Drawing/Shapes/Polygon.cs | 9 --------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/ImageSharp/Drawing/Paths/InternalPath.cs b/src/ImageSharp/Drawing/Paths/InternalPath.cs index 079ebdcf42..7fefd83a6c 100644 --- a/src/ImageSharp/Drawing/Paths/InternalPath.cs +++ b/src/ImageSharp/Drawing/Paths/InternalPath.cs @@ -32,7 +32,7 @@ namespace ImageSharp.Drawing.Paths /// /// The segments. /// if set to true [is closed path]. - internal InternalPath(IEnumerable 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 segments) + private Vector2[] Simplify(ILineSegment[] segments) { - return segments.SelectMany(x => x.AsSimpleLinearPath()).ToArray(); + List points = new List(); + foreach(var seg in segments) + { + points.AddRange(seg.AsSimpleLinearPath()); + } + + return points.ToArray(); } private float CalculateLength() diff --git a/src/ImageSharp/Drawing/Shapes/Polygon.cs b/src/ImageSharp/Drawing/Shapes/Polygon.cs index 9de1220fb4..b13bf4f2f1 100644 --- a/src/ImageSharp/Drawing/Shapes/Polygon.cs +++ b/src/ImageSharp/Drawing/Shapes/Polygon.cs @@ -24,15 +24,6 @@ namespace ImageSharp.Drawing.Shapes /// /// The segments. public Polygon(params ILineSegment[] segments) - : this((IEnumerable)segments) - { - } - - /// - /// Initializes a new instance of the class. - /// - /// The segments. - public Polygon(IEnumerable segments) { this.innerPath = new InternalPath(segments, true); this.pathCollection = new[] { this };