From: Jussi Koskela Date: Thu, 20 Feb 2020 07:20:34 +0000 (+0200) Subject: Fixed Path2D creation to work with overlapping RoutePoints X-Git-Tag: v1.43.0~94^2 X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F84%2F3884%2F1;p=simantics%2Fplatform.git Fixed Path2D creation to work with overlapping RoutePoints gitlab #470 Change-Id: I678361037ec23258c3c1710a475dc25b2971ab4c --- diff --git a/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteGraph.java b/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteGraph.java index 9b707eae7..fe9371766 100644 --- a/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteGraph.java +++ b/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/RouteGraph.java @@ -21,9 +21,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import java.util.TreeMap; +import java.util.stream.Collectors; import org.simantics.diagram.connection.rendering.arrows.ILineEndStyle; import org.simantics.diagram.connection.rendering.arrows.PlainLineEndStyle; @@ -1412,9 +1413,7 @@ public class RouteGraph implements Serializable { } // Analyze graph - Map begins = -// new THashMap(); //The ordering of the coordinates in the path should be deterministic between scenegraphs - new TreeMap(RG_COMP); + Map begins = new HashMap(); for(RouteLine line : lines) { add(begins, line); } @@ -1428,7 +1427,9 @@ public class RouteGraph implements Serializable { } // Create paths - for(RoutePoint begin : begins.keySet().toArray(new RoutePoint[begins.size()])) { + // Sort the begins so that the order of segments is deterministic. This is required when comparing e.g. SVG diagrams. + // In case of overlapping begins the order may vary. + for(RoutePoint begin : begins.keySet().stream().sorted(RG_COMP).collect(Collectors.toList())) { RouteLine curLine = begins.remove(begin); drawContinuousPath(path, begins, begin, curLine); }