Преглед на файлове

move edge reversing to last step

icestormikk преди 1 месец
родител
ревизия
bec4361ae3
променени са 2 файла, в които са добавени 8 реда и са изтрити 15 реда
  1. 8 3
      src/v1/optimizer/steps/CleanupStep.ts
  2. 0 12
      src/v1/optimizer/steps/CoordinateAssignmentStep.ts

+ 8 - 3
src/v1/optimizer/steps/CleanupStep.ts

@@ -22,16 +22,21 @@ export default class CleanupStep extends AlgorithmStep<SiguiyamaContext> {
 
 		for(const subdivision of edgeSubdivisions.values())
 			this.restoreSubdivision(graph, subdivision, feedbackSet);
+
+		for(const edge of feedbackSet) {
+			const from = edge.getFrom(), to = edge.getTo();
+			edge.setFrom(to).setTo(from);
+		}
 	}
 
 	private restoreSubdivision(graph: Graph<Node, Edge<Node>>, subdivision: EdgeSubdivision<Node>, feedbackSet: FeedbackSet): void {
 		const { originalEdge, segments, dummies } = subdivision;
 
-		if(feedbackSet.includes(originalEdge))
-			dummies.reverse();
-
 		const waypoints = dummies.map((d) => ({ x: d.getX(), y: d.getY() }));
 
+		if(feedbackSet.includes(originalEdge))
+			waypoints.reverse();
+
 		originalEdge.setWaypoints(waypoints);
 
 		for(const segment of segments)

+ 0 - 12
src/v1/optimizer/steps/CoordinateAssignmentStep.ts

@@ -26,24 +26,12 @@ export default class CoordinateAssignmentStep extends AlgorithmStep<SiguiyamaCon
 		if(!feedbackSet)
 			throw new Error("Feedback set was not found!");
 
-		this.reverseEdgesInFeedback(feedbackSet);
-
 		const grid = this.buildGrid(layering);
 		context.grid = grid;
 
 		this.assignCoordinatesFromGrid(graph, grid);
 	}
 
-	private reverseEdgesInFeedback(feedbackSet: FeedbackSet) : void {
-		for(const edge of feedbackSet) {
-			if(!feedbackSet.includes(edge))
-				continue;
-
-			const from = edge.getFrom(), to = edge.getTo();
-			edge.setFrom(to).setTo(from);
-		}
-	}
-
 	private buildGrid(layering: Layering<Node, Edge<Node>>): Grid<Node> {
 		const grid = new Grid<Node>();
 		const layers = layering.getLayers();