public static List <StrongComponent> getTopoOnScc(LoadInnerLogic.Graph graph, Graph graphN = null) { graphN ??= Transform.transformGraph(graph); var graphT = Transform.transformTransposeGraph(graph); return(topoOnScc(StrongComponents(graphN, graphT))); }
public async Task VisualiseGraph(Window window, string path) { var loader = new Loader(); var graph = await loader.LoadGraphAsync(path); _graph = Transform.transformGraph(graph); var topo = algos.getTopoOnScc(graph, _graph); var canvas = new Canvas { Background = Brushes.White, Width = algos.WidthOfNet(topo) * 85 + 150, Height = algos.HeightOfNet(topo) * 70 + 35 }; //TODO this seem like a little bit too much var shapes = TraverseComponents(topo, 35, (int)canvas.Width / 2); var arrows = AddEdges(shapes); foreach (var node in shapes) { canvas.Children.Add(node.shape); canvas.Children.Add(node.textBlock); } foreach (var(line, tip) in arrows) { canvas.Children.Add(line); canvas.Children.Add(tip); } var scroller = new ScrollViewer { Content = canvas }; scroller.Width = 400; scroller.Height = 600; window.Background = Brushes.Black; window.Opacity = 0.8; window.Content = scroller; }