public string Render(string dot, string fileName, DotRenderType renderType) { var root = Path.GetDirectoryName(fileName); if (!string.IsNullOrWhiteSpace(root)) Directory.CreateDirectory(root); fileName = Path.Combine(root, Path.GetFileNameWithoutExtension(fileName) + "." + renderType); var tempFile = Path.GetTempFileName(); using (var sw = new StreamWriter(tempFile)) sw.Write(dot); var info = new ProcessStartInfo(_dotPath, string.Format(@"-T{0} ""{2}"" -o ""{1}""", renderType, fileName, tempFile)); info.UseShellExecute = false; info.CreateNoWindow = true; var process = new Process(); process.StartInfo = info; process.Start(); process.WaitForExit(); File.Delete(tempFile); return fileName; }
public List <string> DrawAll(string outputDirectory, DotRenderType renderType = DotRenderType.png) { var imageFiles = new List <string>(); Directory.CreateDirectory(outputDirectory); foreach (var g in _graphs) { string name; if (NameGraph6) { name = g.ToGraph6().LegalizeFileName(); foreach (var c in "abcdefghijklmnopqrstuvwxyz".ToCharArray()) { name = name.Replace(c.ToString(), "(" + c + ")"); } } else if (CompressName) { var bytes = new List <byte>(); var bits = g.GetEdgeWeights().Select(ew => Math.Abs(ew)).ToList(); int i = 0; while (true) { byte b = 0; int j = i; for (; j < Math.Min(bits.Count, i + 8); j++) { b |= (byte)(1 << bits[j - i]); } bytes.Add(b); if (j >= bits.Count) { break; } i = j; } name = Convert.ToBase64String(bytes.ToArray()); } else { name = string.Join("", g.GetEdgeWeights().Select(ew => Math.Abs(ew))); } if (g.VertexWeight != null) { name += "[" + string.Join(",", g.VertexWeight) + "]"; } var path = Path.Combine(outputDirectory, name); var imageFile = Draw(g, path, renderType); imageFiles.Add(imageFile); } return(imageFiles); }
string Draw(Graph g, string path, DotRenderType renderType = DotRenderType.png) { var imageFile = Renderer.Render(ToDot(g, Directed, ShowFactors, InDegreeTerms, IsLowPlus, IsFivePlus, UseLaplacian, K), path, renderType); if (renderType == DotRenderType.svg) { FixSvg(imageFile); } return(imageFile); }
public string Draw(Graphs.Graph g, string path, DotRenderType renderType = DotRenderType.svg) { if (g == null) { return(null); } var imageFile = Renderer.Render(ToDot(g), path, renderType); if (renderType == DotRenderType.svg) { FixSvg(imageFile); } return(imageFile); }
public void Render(Graph graph, Dictionary <int, GameTree> treeLookup, string fileName, DotRenderType renderType, bool drawCached) { Render(ToDotBasic(graph, treeLookup, drawCached), fileName, renderType); }
public string Render(IEnumerable<int> edgeWeights, string fileName, DotRenderType renderType) { return Render(ToDot(edgeWeights), fileName, renderType); }