annotate trunk/src/docgen/graphutils/dotwriter.d @ 717:cb8edb09108a

Updated docgen (mostly) to new tango. Reflective options. Updated translations.
author Jari-Matti M?kel? <jmjm@iki.fi>
date Fri, 01 Feb 2008 15:05:56 +0200
parents db7e27b5c180
children ec8dd7b8bf0c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
1 /**
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
2 * Author: Aziz Köksal & Jari-Matti Mäkelä
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
3 * License: GPL3
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
4 */
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
5 module docgen.graphutils.dotwriter;
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
6 import docgen.graphutils.writer;
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
7
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
8 import tango.io.Print: Print;
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
9 import tango.text.convert.Layout : Layout;
449
757bd048482c Depgraph test + minor modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 448
diff changeset
10 import tango.io.FilePath;
454
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
11 import tango.text.Util;
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
12 import tango.text.convert.Sprint;
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
13 debug import tango.io.Stdout;
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
14
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
15 /**
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
16 * Creates a graph rule file for the dot utility.
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
17 */
451
3f44c38bf870 Page templates, more flexible writer interfaces, small fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 449
diff changeset
18 class DotWriter : AbstractGraphWriter {
466
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
19 public:
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
20
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
21 this(GraphWriterFactory factory, PageWriter writer) {
451
3f44c38bf870 Page templates, more flexible writer interfaces, small fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 449
diff changeset
22 super(factory, writer);
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
23 }
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
24
466
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
25 void generateDepGraph(Vertex[] vertices, Edge[] edges, OutputStream imageFile) {
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
26 generateImageTag(imageFile);
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
27
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
28 auto image = generateDepImageFile(vertices, edges);
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
29 auto printer = new Print!(char)(new Layout!(char), imageFile);
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
30 printer(image);
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
31 }
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
32
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
33 protected:
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
34
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
35 char[] generateDepImageFile(Vertex[] vertices, Edge[] edges) {
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
36 char[] image;
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
37 auto sprint = new Sprint!(char);
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
38
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
39 Vertex[][char[]] verticesByPckgName;
454
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
40 if (factory.options.graph.groupByFullPackageName ||
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
41 factory.options.graph.groupByPackageNames) {
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
42 foreach (mod; vertices) {
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
43 auto parts = mod.name.delimit(".");
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
44
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
45 if (parts.length>1) {
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
46 auto pkg = parts[0..$-1].join(".");
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
47 verticesByPckgName[pkg] ~= mod;
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
48 }
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
49 }
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
50 }
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
51
452
f658ec4a15dd Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 451
diff changeset
52 if (factory.options.graph.highlightCyclicVertices ||
f658ec4a15dd Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 451
diff changeset
53 factory.options.graph.highlightCyclicEdges)
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
54 findCycles(vertices, edges);
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
55
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
56 image ~= "Digraph ModuleDependencies {\n";
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
57
454
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
58 foreach (module_; vertices) {
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
59 auto nodeName =
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
60 factory.options.graph.groupByPackageNames ?
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
61 module_.name.split(".")[$-1] :
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
62 module_.name;
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
63
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
64 image ~= sprint.format(
462
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
65 ` n{} [label="{}",style=filled,fillcolor={}];`\n,
453
4e5b35df3060 Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 452
diff changeset
66 module_.id,
454
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
67 nodeName,
462
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
68 module_.isCyclic && factory.options.graph.highlightCyclicVertices ?
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
69 factory.options.graph.cyclicNodeColor :
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
70 module_.type == VertexType.UnlocatableModule ?
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
71 factory.options.graph.unlocatableNodeColor :
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
72 factory.options.graph.nodeColor
453
4e5b35df3060 Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 452
diff changeset
73 );
454
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
74 }
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
75
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
76 foreach (edge; edges)
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
77 image ~= sprint.format(
462
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
78 ` n{} -> n{}[color={}];`\n,
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
79 edge.outgoing.id,
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
80 edge.incoming.id,
462
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
81 edge.isCyclic ?
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
82 factory.options.graph.cyclicDepColor :
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
83 edge.type == EdgeType.PublicDependency ?
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
84 factory.options.graph.publicDepColor ~ ",style=bold" :
b7503e02fbe7 Docgen code for handling public imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 459
diff changeset
85 factory.options.graph.depColor
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
86 );
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
87
454
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
88 if (factory.options.graph.groupByPackageNames)
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
89
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
90 if (!factory.options.graph.groupByFullPackageName) {
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
91 foreach (packageName, vertices; verticesByPckgName) {
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
92 auto name = packageName.split(".");
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
93
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
94 if (name.length > 1) {
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
95 char[] pkg;
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
96 foreach(part; name) {
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
97 pkg ~= part ~ ".";
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
98 image ~= sprint.format(
454
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
99 `subgraph "cluster_{0}" {{`\n` label="{0}"`\n,
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
100 pkg[0..$-1],
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
101 pkg[0..$-1]
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
102 );
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
103 }
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
104 for (int i=0; i< name.length; i++) {
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
105 image ~= "}\n";
454
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
106 }
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
107 }
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
108 }
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
109 }
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
110 foreach (packageName, vertices; verticesByPckgName) {
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
111 image ~= sprint.format(
454
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
112 ` subgraph "cluster_{0}" {{`\n` label="{0}";color=`
dbdc9fa5d479 depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 453
diff changeset
113 ~ factory.options.graph.clusterColor ~ `;`\n` `,
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
114 packageName,
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
115 packageName
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
116 );
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
117
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
118 foreach (module_; vertices)
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
119 image ~= sprint.format(`n{0};`, module_.id);
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
120 image ~= "\n }\n";
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
121 }
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
122
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
123 image ~= "}";
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
124
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
125 return image;
395
ac9cd48151b6 Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff changeset
126 }
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
127
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
128 void generateImageTag(OutputStream imageFile) {
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
129 // name of the .dot file
717
cb8edb09108a Updated docgen (mostly) to new tango.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 466
diff changeset
130 char[] fn = (cast(Object)imageFile.conduit).toString();
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
131 fn = FilePath(fn).file;
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
132
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
133 fn = fn[0..$-3] ~ imageFormatExts[factory.options.graph.imageFormat];
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
134
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
135 writer.addGraphics(fn);
466
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
136 }
452
f658ec4a15dd Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 451
diff changeset
137 }
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
138
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
139 class CachingDotWriter : DotWriter {
466
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
140 private:
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
141
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
142 CachingGraphWriterFactory factory;
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
143
466
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
144 public:
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
145
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
146 this(CachingGraphWriterFactory factory, PageWriter writer) {
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
147 super(factory, writer);
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
148 this.factory = factory;
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
149 }
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
150
466
db7e27b5c180 Fixed parts of HTML output, some reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 462
diff changeset
151 override void generateDepGraph(Vertex[] vertices, Edge[] edges, OutputStream imageFile) {
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
152 generateImageTag(imageFile);
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
153
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
154 auto cached = factory.graphCache.getCachedGraph(vertices, edges, GraphFormat.Dot);
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
155
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
156 auto printer = new Print!(char)(new Layout!(char), imageFile);
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
157
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
158 if (cached) {
459
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
159 printer(cached);
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
160 } else {
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
161 auto image = generateDepImageFile(vertices, edges);
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
162 factory.graphCache.setCachedGraph(vertices, edges, GraphFormat.Dot, image);
1b5f1ce09f38 Fix to the image cache, cleaned stuff.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 457
diff changeset
163 printer(image);
457
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
164 }
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
165 }
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
166 }
33a4cb255fcc Cached images, small fixes, reorganizing.
Jari-Matti M?kel? <jmjm@iki.fi>
parents: 454
diff changeset
167