private Dictionary <TEdge, Route> CalculateStraightEdgeRouting() { var edgeRoutes = new Dictionary <TEdge, Route>(); foreach (var edge in _originalEdges) { var source = edge.Source; var target = edge.Target; var secondPoint = target.Center; var penultimatePoint = source.Center; if (_interimRoutePointsOfEdges.TryGetValue(edge, out var interimRoutePoints)) { secondPoint = interimRoutePoints.First(); penultimatePoint = interimRoutePoints.Last(); } var firstPoint = source.Rect.GetAttachPointToward(secondPoint); var lastPoint = target.Rect.GetAttachPointToward(penultimatePoint); var route = new Route.Builder { firstPoint, interimRoutePoints, lastPoint }.ToRoute(); edgeRoutes.Add(edge, route); } return(edgeRoutes); }
private static Route GetRoutePoints(LayoutPath layoutPath, LayoutVertexToPointMap vertexCenters) { var sourceRect = vertexCenters.GetRect(layoutPath.PathSource); var targetRect = vertexCenters.GetRect(layoutPath.PathTarget); var routePoints = new Route.Builder { sourceRect.Center, layoutPath.InterimVertices.Select(vertexCenters.Get), targetRect.Center }.ToRoute(); return(routePoints.AttachToSourceRectAndTargetRect(sourceRect, targetRect)); }