From 9f8690acb5ae48e13a2b972987f21611d8680aef Mon Sep 17 00:00:00 2001 From: Scott Williams Date: Thu, 15 Dec 2016 10:07:42 +0000 Subject: [PATCH] use loops instead of linq --- .../Drawing/Processors/DrawPathProcessor.cs | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/ImageSharp/Drawing/Processors/DrawPathProcessor.cs b/src/ImageSharp/Drawing/Processors/DrawPathProcessor.cs index c286b0bbd..33a10c625 100644 --- a/src/ImageSharp/Drawing/Processors/DrawPathProcessor.cs +++ b/src/ImageSharp/Drawing/Processors/DrawPathProcessor.cs @@ -117,7 +117,7 @@ namespace ImageSharp.Drawing.Processors { int offsetX = x - startX; - var dist = this.paths.Select(p => p.Distance(offsetX, offsetY)).OrderBy(p => p.DistanceFromPath).First(); + var dist = Closest(offsetX, offsetY); var color = applicator.GetColor(dist); @@ -143,6 +143,24 @@ namespace ImageSharp.Drawing.Processors } } + private PointInfo Closest(int x, int y) + { + PointInfo result = default(PointInfo); + float distance = float.MaxValue; + + for (int i = 0; i < this.paths.Length; i++) + { + var p = this.paths[i].Distance(x, y); + if (p.DistanceFromPath < distance) + { + distance = p.DistanceFromPath; + result = p; + } + } + + return result; + } + private float Opacity(float distance) { if (distance <= 0)