public DirectedGraph ConvertToDMGL(freeGraph input) { DirectedGraph output = new DirectedGraph(); output.Title = input.Id; // input.InverseWeights(false, true); nodeStyler = new NodeWeightStylerCategories(setup.NodeGradient, setup); linkStyler = new NodeWeightStylerCategories(setup.LinkGradient, setup); foreach (freeGraphNodeBase node in input.nodes) { try { if (node != null) { var c = Categories.AddOrGetCategory(node.type.ToString(), "", ""); output.Categories.AddUnique(c); nodeStyler.learn(node.type, node.weight); } } catch (Exception ex) { output.ConversionErrors.Add("Node learning-conversion: " + ex.Message + Environment.NewLine + ex.StackTrace); } } foreach (var link in input.links) { try { if (link != null) { var c = Categories.AddOrGetCategory(link.type.ToString(), "", ""); output.Categories.AddUnique(c); linkStyler.learn(link.type, link.weight); } } catch (Exception ex) { output.ConversionErrors.Add("link learning-conversion: " + ex.Message + Environment.NewLine + ex.StackTrace); } } foreach (freeGraphNodeBase node in input.nodes) { try { if (node != null) { var nd = output.Nodes.AddNode(node.name); nd.Category = output.Categories[node.type].Id; nd.Background = nodeStyler.GetHexColor(node.weight, node.type); nd.StrokeThinkness = nodeStyler.GetBorderThickness(node.weight, node.type); nd.Stroke = nodeStyler.GetHexColor(1, node.type); nd.Label = nd.Label + " (" + node.weight.ToString(setup.NodeWeightFormat) + ")"; if (setup.doAddNodeTypeToLabel) { nd.Label = nd.Label + " [" + node.type + "]"; } } } catch (Exception ex) { output.ConversionErrors.Add("Node conversion: " + ex.Message + Environment.NewLine + ex.StackTrace); } } foreach (var link in input.links) { try { if (link != null) { var nodeA = input.GetNode(link.nodeNameA); var nodeB = input.GetNode(link.nodeNameB); var lnk = new Link(link.nodeNameA, link.nodeNameB, false); if (setup.doLinkDirectionFromLowerTypeToHigher) { if (nodeB.type < nodeA.type) { lnk = new Link(link.nodeNameB, link.nodeNameA, false); } } if (setup.doAddLinkWeightInTheLabel) { lnk.Label = lnk.Label.add(link.weight.ToString(setup.LinkWeightFormat)); } else { lnk.Label = link.linkLabel; } lnk.Category = output.Categories[link.type].Id; lnk.Stroke = linkStyler.GetHexColor(link.weight, link.type); lnk.StrokeThinkness = linkStyler.GetBorderThickness(link.weight, link.type); output.Links.Add(lnk); } } catch (Exception ex) { output.ConversionErrors.Add("Link conversion: " + ex.Message + Environment.NewLine + ex.StackTrace); } } output.Layout = DGML.enums.GraphLayoutEnum.ForceDirected; output.GraphDirection = DGML.enums.GraphDirectionEnum.Sugiyama; return(output); }