internal static DGraph CreateDGraphAndGeometryInfo(DrawingGraph drawingGraph, GeometryGraph gleeGraph) { DGraph ret = new DGraph(drawingGraph); //create dnodes and glee node boundary curves foreach (GeometryNode geomNode in gleeGraph.NodeMap.Values) { DrawingNode drawingNode = geomNode.UserData as DrawingNode; CreateDNodeAndSetNodeBoundaryCurve(drawingGraph, ret, geomNode, drawingNode); } foreach (GeometryEdge gleeEdge in gleeGraph.Edges) { DEdge dEdge = new DEdge(ret.GetNode(gleeEdge.Source), ret.GetNode(gleeEdge.Target), gleeEdge.UserData as DrawingEdge, Connection.Connected); ret.AddEdge(dEdge); DrawingEdge drawingEdge = dEdge.Edge; Microsoft.Msagl.Drawing.Label label = drawingEdge.Label; if (label != null) { double width, height; CreateDLabel(dEdge, label, out width, out height); } } return(ret); }
internal static DGraph CreateDGraphAndGeometryInfo(Graph drawingGraph, GeometryGraph geometryGraph, GViewer viewer) { var dGraph = new DGraph(drawingGraph, viewer); //create dnodes and glee node boundary curves var nodeMapping = new Dictionary <GeometryNode, DNode>(); if (geometryGraph.RootCluster != null) { foreach (var geomCluster in geometryGraph.RootCluster.AllClustersDepthFirstExcludingSelf()) { var drawingNode = (Drawing.Node)geomCluster.UserData; DNode dNode = CreateDNodeAndSetNodeBoundaryCurveForSubgraph(drawingGraph, dGraph, geomCluster, drawingNode, viewer); nodeMapping[geomCluster] = dNode; } } foreach (GeometryNode geomNode in geometryGraph.Nodes) { var drawingNode = (Drawing.Node)geomNode.UserData; DNode dNode = CreateDNodeAndSetNodeBoundaryCurve(drawingGraph, dGraph, geomNode, drawingNode, viewer); nodeMapping[geomNode] = dNode; } foreach (GeometryEdge gleeEdge in geometryGraph.Edges) { var dEdge = new DEdge(nodeMapping[gleeEdge.Source], nodeMapping[gleeEdge.Target], gleeEdge.UserData as DrawingEdge, ConnectionToGraph.Connected, viewer); dGraph.AddEdge(dEdge); DrawingEdge drawingEdge = dEdge.Edge; Drawing.Label label = drawingEdge.Label; if (label != null) { double width, height; CreateDLabel(dEdge, label, out width, out height, viewer); } } return(dGraph); }
/// <summary> /// creates DGraph from a precalculated drawing graph /// </summary> /// <param name="drawingGraph"></param> /// <returns></returns> internal static DGraph CreateDGraphFromPrecalculatedDrawingGraph(DrawingGraph drawingGraph) { DGraph ret = new DGraph(drawingGraph); //create dnodes and node boundary curves foreach (DrawingNode drawingNode in drawingGraph.NodeMap.Values) { DNode dNode = new DNode(drawingNode); if (drawingNode.Label != null) { dNode.Label = new DLabel(dNode, drawingNode.Label); } ret.AddNode(dNode); } foreach (DrawingEdge drawingEdge in drawingGraph.Edges) { ret.AddEdge(new DEdge(ret.GetNode(drawingEdge.SourceNode), ret.GetNode(drawingEdge.TargetNode), drawingEdge, Connection.Connected)); } return(ret); }
/// <summary> /// creates DGraph from a precalculated drawing graph /// </summary> /// <param name="drawingGraph"></param> /// <param name="viewer">the owning viewer</param> /// <returns></returns> internal static DGraph CreateDGraphFromPrecalculatedDrawingGraph(Graph drawingGraph, GViewer viewer) { var dGraph = new DGraph(drawingGraph, viewer); //create dnodes and node boundary curves if (drawingGraph.RootSubgraph != null) { foreach (DrawingNode drawingNode in drawingGraph.RootSubgraph.AllSubgraphsWidthFirstExcludingSelf()) { var dNode = new DNode(drawingNode, viewer); if (drawingNode.Label != null) { dNode.Label = new DLabel(dNode, drawingNode.Label, viewer); } dGraph.AddNode(dNode); } } foreach (DrawingNode drawingNode in drawingGraph.Nodes) { var dNode = new DNode(drawingNode, viewer); if (drawingNode.Label != null) { dNode.Label = new DLabel(dNode, drawingNode.Label, viewer); } dGraph.AddNode(dNode); } foreach (DrawingEdge drawingEdge in drawingGraph.Edges) { dGraph.AddEdge(new DEdge(dGraph.GetNode(drawingEdge.SourceNode), dGraph.GetNode(drawingEdge.TargetNode), drawingEdge, ConnectionToGraph.Connected, viewer)); } return(dGraph); }
internal static DGraph CreateDGraphAndGeometryInfo(Graph drawingGraph, GeometryGraph geometryGraph, GViewer viewer) { var dGraph = new DGraph(drawingGraph, viewer); //create dnodes and glee node boundary curves var nodeMapping = new Dictionary<GeometryNode, DNode>(); if (geometryGraph.RootCluster != null) foreach (var geomCluster in geometryGraph.RootCluster.AllClustersDepthFirstExcludingSelf()) { var drawingNode = (Drawing.Node) geomCluster.UserData; DNode dNode = CreateDNodeAndSetNodeBoundaryCurveForSubgraph(drawingGraph, dGraph, geomCluster, drawingNode, viewer); nodeMapping[geomCluster] = dNode; } foreach (GeometryNode geomNode in geometryGraph.Nodes) { var drawingNode = (Drawing.Node) geomNode.UserData; DNode dNode = CreateDNodeAndSetNodeBoundaryCurve(drawingGraph, dGraph, geomNode, drawingNode, viewer); nodeMapping[geomNode] = dNode; } foreach (GeometryEdge gleeEdge in geometryGraph.Edges) { var dEdge = new DEdge(nodeMapping[gleeEdge.Source], nodeMapping[gleeEdge.Target], gleeEdge.UserData as DrawingEdge, ConnectionToGraph.Connected, viewer); dGraph.AddEdge(dEdge); DrawingEdge drawingEdge = dEdge.Edge; Drawing.Label label = drawingEdge.Label; if (label != null) { double width, height; CreateDLabel(dEdge, label, out width, out height, viewer); } } return dGraph; }
/// <summary> /// creates DGraph from a precalculated drawing graph /// </summary> /// <param name="drawingGraph"></param> /// <param name="viewer">the owning viewer</param> /// <returns></returns> internal static DGraph CreateDGraphFromPrecalculatedDrawingGraph(Graph drawingGraph, GViewer viewer){ var dGraph = new DGraph(drawingGraph, viewer); //create dnodes and node boundary curves if (drawingGraph.RootSubgraph != null) foreach (DrawingNode drawingNode in drawingGraph.RootSubgraph.AllSubgraphsWidthFirstExcludingSelf()) { var dNode = new DNode(drawingNode, viewer); if (drawingNode.Label != null) dNode.Label = new DLabel(dNode, drawingNode.Label, viewer); dGraph.AddNode(dNode); } foreach (DrawingNode drawingNode in drawingGraph.Nodes){ var dNode = new DNode(drawingNode, viewer); if (drawingNode.Label != null) dNode.Label = new DLabel(dNode, drawingNode.Label, viewer); dGraph.AddNode(dNode); } foreach (DrawingEdge drawingEdge in drawingGraph.Edges) dGraph.AddEdge(new DEdge(dGraph.GetNode(drawingEdge.SourceNode), dGraph.GetNode(drawingEdge.TargetNode), drawingEdge, ConnectionToGraph.Connected, viewer)); return dGraph; }