summaryrefslogtreecommitdiffstats
path: root/svgbob/src/buffer/fragment_buffer/fragment/marker_line.rs
diff options
context:
space:
mode:
Diffstat (limited to 'svgbob/src/buffer/fragment_buffer/fragment/marker_line.rs')
-rw-r--r--svgbob/src/buffer/fragment_buffer/fragment/marker_line.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/svgbob/src/buffer/fragment_buffer/fragment/marker_line.rs b/svgbob/src/buffer/fragment_buffer/fragment/marker_line.rs
index 5c446af..7e57490 100644
--- a/svgbob/src/buffer/fragment_buffer/fragment/marker_line.rs
+++ b/svgbob/src/buffer/fragment_buffer/fragment/marker_line.rs
@@ -92,14 +92,19 @@ impl MarkerLine {
let can_connect_start = is_close_start_point && self.start_marker.is_none();
let can_connect_end = is_close_end_point && self.end_marker.is_none();
- let is_along_side = self.line.heading().is_along_side(&polygon.tags);
- is_along_side && (can_connect_start || can_connect_end)
+ let is_same_direction = polygon
+ .tags
+ .iter()
+ .any(|tag| tag.matched_direction(self.line.heading()));
+
+ is_same_direction && (can_connect_start || can_connect_end)
}
/// merge this marker line to the polygon
pub(crate) fn merge_polygon(&self, polygon: &Polygon) -> Option<Fragment> {
if self.can_merge_polygon(polygon) {
let marker = polygon.tags.get(0).map(|tag| tag.get_marker());
+ let direction = polygon.tags.get(0).map(|tag| tag.direction());
let poly_center = polygon.center();
let distance_end_center = self.line.end.distance(&poly_center);
let distance_start_center = self.line.start.distance(&poly_center);