Esempio n. 1
0
        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;
        }