private static void ProcessPhyloEdges(Graph graph, Microsoft.Msagl.GeometryGraph msaglGraph)
        {
            foreach (Edge e in graph.Edges)
            {
                Microsoft.Msagl.Node sourceNode = msaglGraph.FindNode(e.Source);
                Microsoft.Msagl.Node targetNode = msaglGraph.FindNode(e.Target);

                if (sourceNode == null)
                {
                    sourceNode = CreateGeometryNode(msaglGraph, graph.FindNode(e.Source) as Node, Connection.Connected);
                }
                if (targetNode == null)
                {
                    targetNode = CreateGeometryNode(msaglGraph, graph.FindNode(e.Target) as Node, Connection.Connected);
                }

                Microsoft.Msagl.Edge msaglEdge = new Microsoft.Msagl.PhyloEdge(sourceNode, targetNode);
                msaglEdge.Weight            = e.Attr.Weight;
                msaglEdge.Separation        = e.Attr.Separation;
                msaglEdge.ArrowheadAtSource = e.Attr.ArrowAtSource;
                msaglEdge.ArrowheadAtTarget = e.Attr.ArrowAtTarget;
                msaglGraph.AddEdge(msaglEdge);
                msaglEdge.UserData        = e;
                msaglEdge.ArrowheadLength = e.Attr.ArrowheadLength;
                msaglEdge.LineWidth       = e.Attr.LineWidth;
            }
        }
        private static void ProcessEdges(Graph graph, Microsoft.Msagl.GeometryGraph msaglGraph)
        {
            foreach (Edge drawingEdge in graph.Edges)
            {
                Microsoft.Msagl.Node sourceNode = msaglGraph.FindNode(drawingEdge.Source);
                Microsoft.Msagl.Node targetNode = msaglGraph.FindNode(drawingEdge.Target);

                if (sourceNode == null)
                {
                    sourceNode = CreateGeometryNode(msaglGraph, graph.FindNode(drawingEdge.Source) as Node, Connection.Connected);
                }
                if (targetNode == null)
                {
                    targetNode = CreateGeometryNode(msaglGraph, graph.FindNode(drawingEdge.Target) as Node, Connection.Connected);
                }

                Microsoft.Msagl.Edge msaglEdge = new Microsoft.Msagl.Edge(sourceNode, targetNode);
                if (drawingEdge.Label != null && graph.LayoutAlgorithmSettings is SugiyamaLayoutSettings)
                {
                    msaglEdge.Label        = drawingEdge.Label.GeometryLabel;
                    msaglEdge.Label.Parent = msaglEdge;
                }
                msaglEdge.Weight            = drawingEdge.Attr.Weight;
                msaglEdge.Length            = drawingEdge.Attr.Length;
                msaglEdge.Separation        = drawingEdge.Attr.Separation;
                msaglEdge.ArrowheadAtSource = drawingEdge.Attr.ArrowAtSource;
                msaglEdge.ArrowheadAtTarget = drawingEdge.Attr.ArrowAtTarget;
                msaglGraph.AddEdge(msaglEdge);
                msaglEdge.UserData        = drawingEdge;
                msaglEdge.ArrowheadLength = drawingEdge.Attr.ArrowheadLength;
                msaglEdge.LineWidth       = drawingEdge.Attr.LineWidth;
            }
        }
 private static void ProcessNodes(Graph graph, Microsoft.Msagl.GeometryGraph msaglGraph)
 {
     foreach (Node n in graph.NodeMap.Values)
     {
         Microsoft.Msagl.Node msaglNode = msaglGraph.FindNode(n.Id);
         if (msaglNode == null)
         {
             msaglNode = CreateGeometryNode(msaglGraph, n, Connection.Connected);
         }
         else
         {
             msaglGraph.NodeMap[msaglNode.Id] = msaglNode;
         }
     }
 }