From c6fc85357976eb4c88ffd6bbef69ff7b1c13bcf7 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 21 May 2019 14:49:01 -0700 Subject: [PATCH] Don't miter join on stroke endpoints. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes the Moiré demo. --- geometry/src/stroke.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/geometry/src/stroke.rs b/geometry/src/stroke.rs index 8b0d9f4b..02d6a282 100644 --- a/geometry/src/stroke.rs +++ b/geometry/src/stroke.rs @@ -134,8 +134,9 @@ impl ContourStrokeToFill { } fn offset_forward(&mut self) { - for segment in self.input.iter() { - segment.offset(self.radius, self.join, &mut self.output); + for (segment_index, segment) in self.input.iter().enumerate() { + let join = if segment_index == 0 { LineJoin::Bevel } else { self.join }; + segment.offset(self.radius, join, &mut self.output); } } @@ -146,8 +147,9 @@ impl ContourStrokeToFill { .map(|segment| segment.reversed()) .collect(); segments.reverse(); - for segment in &segments { - segment.offset(self.radius, self.join, &mut self.output); + for (segment_index, segment) in segments.iter().enumerate() { + let join = if segment_index == 0 { LineJoin::Bevel } else { self.join }; + segment.offset(self.radius, join, &mut self.output); } } }