Example #1
0
        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);
        }
Example #2
0
        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));
        }