Пример #1
0
        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;
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
 public void Render(Graph graph, Dictionary <int, GameTree> treeLookup, string fileName, DotRenderType renderType, bool drawCached)
 {
     Render(ToDotBasic(graph, treeLookup, drawCached), fileName, renderType);
 }
Пример #6
0
 public string Render(IEnumerable<int> edgeWeights, string fileName, DotRenderType renderType)
 {
     return Render(ToDot(edgeWeights), fileName, renderType);
 }