public void RandomDotFileTests()
        {
            int    line, column;
            string msg;

            string fileName = Path.Combine(this.TestContext.TestDir, "Out\\Dots\\fsm.dot");

            Drawing.Graph drawGraph = Parser.Parse(fileName, out line, out column, out msg);
            drawGraph.CreateGeometryGraph();
            GeometryGraph graph = drawGraph.GeometryGraph;

            GraphGenerator.SetRandomNodeShapes(graph, random);
            LayeredLayout layeredLayout = new LayeredLayout(graph, new SugiyamaLayoutSettings()
            {
                BrandesThreshold = 1
            });

            layeredLayout.Run();
            string[]   allFiles = Directory.GetFiles(Path.Combine(this.TestContext.TestDir, "Out\\Dots"), "*.dot");
            List <int> selected = new List <int>();

            for (int i = 0; i < 10; i++)
            {
                int next = random.Next(allFiles.Length);
                while (selected.Contains(next))
                {
                    next = random.Next(allFiles.Length);
                }
                selected.Add(next);
                WriteLine("Now handling dot file: " + allFiles[next]);
                drawGraph = Parser.Parse(allFiles[next], out line, out column, out msg);
                drawGraph.CreateGeometryGraph();
                graph = drawGraph.GeometryGraph;
                GraphGenerator.SetRandomNodeShapes(graph, random);

                LayerDirection direction = LayerDirection.None;
                switch (i % 4)
                {
                case 0:
                    direction = LayerDirection.TopToBottom;
                    break;

                case 1:
                    direction = LayerDirection.BottomToTop;
                    break;

                case 2:
                    direction = LayerDirection.LeftToRight;
                    break;

                case 3:
                    direction = LayerDirection.RightToLeft;
                    break;
                }
                LayoutAndValidate(graph, (SugiyamaLayoutSettings)drawGraph.LayoutAlgorithmSettings, direction);
            }
        }
        void ChangeDirection(LayerDirection dir)
        {
            CheckDirectionMenu(dir);
            Graph g = diagram.Graph;

            if (g != null)
            {
                g.Attr.LayerDirection = direction;
                diagram.OnGraphChanged();
            }
        }
Пример #3
0
        //визуализация дерева
        private void Visualize(Graph graph, Grid grid, LayerDirection layerDirection)
        {
            //TreeGridView
            System.Windows.Forms.Integration.WindowsFormsHost host =
                new System.Windows.Forms.Integration.WindowsFormsHost();
            //create a viewer object
            GViewer viewer = new GViewer();

            //create the graph content
            graph.Attr.LayerDirection = layerDirection;
            //bind the graph to the viewer
            viewer.Graph = graph;
            //associate the viewer with the form
            viewer.Dock = DockStyle.Fill;
            host.Child  = viewer;
            grid.Children.Add(host);
        }
Пример #4
0
 private void rbLR_CheckedChanged(object sender, EventArgs e)
 {
     if (rbLR.Checked)
     {
         userLayerDirection = LayerDirection.LR;
     }
     if (rbTB.Checked)
     {
         userLayerDirection = LayerDirection.TB;
         sugiyamaSettings.Transformation = planeTB;
     }
     if (rbRL.Checked)
     {
         userLayerDirection = LayerDirection.RL;
     }
     if (rbBT.Checked)
     {
         userLayerDirection = LayerDirection.BT;
     }
     regenerateMaster();
 }
        private static void LayoutAndValidate(GeometryGraph graph, SugiyamaLayoutSettings settings, double nodeSeparation, double layerSeparation, LayerDirection direction)
        {
            settings.NodeSeparation = nodeSeparation;

            switch (direction)
            {
            case LayerDirection.None:
            case LayerDirection.TopToBottom:
                break;

            case LayerDirection.BottomToTop:
                settings.Transformation = PlaneTransformation.Rotation(Math.PI);
                break;

            case LayerDirection.LeftToRight:
                settings.Transformation = PlaneTransformation.Rotation(Math.PI / 2);
                break;

            case LayerDirection.RightToLeft:
                settings.Transformation = PlaneTransformation.Rotation(-Math.PI / 2);
                break;
            }

            settings.LayerSeparation = layerSeparation;
            LayeredLayout layeredLayout = new LayeredLayout(graph, settings);

            layeredLayout.Run();


            ShowGraphInDebugViewer(graph);

//            SugiyamaValidation.ValidateGraph(graph, settings);
        }
 private static void LayoutAndValidate(GeometryGraph graph, SugiyamaLayoutSettings settings, LayerDirection direction)
 {
     LayoutAndValidate(graph, settings, settings.NodeSeparation, settings.LayerSeparation, direction);
 }
Пример #7
0
 public MoveLayerAction(LayerDirection direction, int layerID)
 {
     _direction = direction;
     _layerID = layerID;
 }
Пример #8
0
 private void Button_Direction_Click(object sender, EventArgs e)
 {
     if (Direction == LayerDirection.TB)
     {
         Direction = LayerDirection.LR;
         Button_Direction.Text = "L";
     }
     else
     {
         Direction = LayerDirection.TB;
         Button_Direction.Text = "T";
     }
 }
 void CheckDirectionMenu(LayerDirection dir)
 {
     Check(direction.ToString(), false);
     direction = dir;
     Check(dir.ToString(), true);
 }
Пример #10
0
 void CheckDirectionMenu(LayerDirection dir)
 {
     Check(direction.ToString(), false);
     direction = dir;
     Check(dir.ToString(), true);
 }
Пример #11
0
 void ChangeDirection(LayerDirection dir)
 {
     CheckDirectionMenu(dir);
     Graph g = diagram.Graph;
     if (g != null)
     {
         g.Attr.LayerDirection = direction;
         diagram.OnGraphChanged();
     }
 }
        private static void LayoutAndValidate(GeometryGraph graph, SugiyamaLayoutSettings settings, double nodeSeparation, double layerSeparation, LayerDirection direction)
        {
            settings.NodeSeparation = nodeSeparation;
            
            switch (direction)
            {
                case LayerDirection.None:
                case LayerDirection.TopToBottom:                    
                    break;
                case LayerDirection.BottomToTop:
                    settings.Transformation = PlaneTransformation.Rotation(Math.PI);
                    break;
                case LayerDirection.LeftToRight:
                    settings.Transformation = PlaneTransformation.Rotation(Math.PI / 2);
                    break;
                case LayerDirection.RightToLeft:
                    settings.Transformation = PlaneTransformation.Rotation(-Math.PI / 2);
                    break;
            }

            settings.LayerSeparation = layerSeparation;
            LayeredLayout layeredLayout = new LayeredLayout(graph, settings);
            layeredLayout.Run();


            ShowGraphInDebugViewer(graph);

//            SugiyamaValidation.ValidateGraph(graph, settings);
        }
 private static void LayoutAndValidate(GeometryGraph graph, SugiyamaLayoutSettings settings, double nodeSeparation, LayerDirection direction)
 {
     LayoutAndValidate(graph, settings, nodeSeparation, settings.LayerSeparation, direction);
 }