|
@@ -50,6 +50,8 @@ type DotConfig struct {
|
50
|
50
|
Total int64 // The total weight of the graph, used to compute percentages
|
51
|
51
|
}
|
52
|
52
|
|
|
53
|
+const maxNodelets = 4 // Number of nodelets for labels (both numeric and non)
|
|
54
|
+
|
53
|
55
|
// ComposeDot creates and writes a in the DOT format to the writer, using
|
54
|
56
|
// the configurations given.
|
55
|
57
|
func ComposeDot(w io.Writer, g *Graph, a *DotAttributes, c *DotConfig) {
|
|
@@ -204,8 +206,6 @@ func (b *builder) addNode(node *Node, nodeID int, maxFlat float64) {
|
204
|
206
|
|
205
|
207
|
// addNodelets generates the DOT boxes for the node tags if they exist.
|
206
|
208
|
func (b *builder) addNodelets(node *Node, nodeID int) bool {
|
207
|
|
- const maxNodelets = 4 // Number of nodelets for alphanumeric labels
|
208
|
|
- const maxNumNodelets = 4 // Number of nodelets for numeric labels
|
209
|
209
|
var nodelets string
|
210
|
210
|
|
211
|
211
|
// Populate two Tag slices, one for LabelTags and one for NumericTags.
|
|
@@ -242,12 +242,12 @@ func (b *builder) addNodelets(node *Node, nodeID int) bool {
|
242
|
242
|
nodelets += fmt.Sprintf(`N%d_%d [label = "%s" fontsize=8 shape=box3d tooltip="%s"]`+"\n", nodeID, i, t.Name, weight)
|
243
|
243
|
nodelets += fmt.Sprintf(`N%d -> N%d_%d [label=" %s" weight=100 tooltip="%s" labeltooltip="%s"]`+"\n", nodeID, nodeID, i, weight, weight, weight)
|
244
|
244
|
if nts := lnts[t.Name]; nts != nil {
|
245
|
|
- nodelets += b.numericNodelets(nts, maxNumNodelets, flatTags, fmt.Sprintf(`N%d_%d`, nodeID, i))
|
|
245
|
+ nodelets += b.numericNodelets(nts, maxNodelets, flatTags, fmt.Sprintf(`N%d_%d`, nodeID, i))
|
246
|
246
|
}
|
247
|
247
|
}
|
248
|
248
|
|
249
|
249
|
if nts := lnts[""]; nts != nil {
|
250
|
|
- nodelets += b.numericNodelets(nts, maxNumNodelets, flatTags, fmt.Sprintf(`N%d`, nodeID))
|
|
250
|
+ nodelets += b.numericNodelets(nts, maxNodelets, flatTags, fmt.Sprintf(`N%d`, nodeID))
|
251
|
251
|
}
|
252
|
252
|
|
253
|
253
|
fmt.Fprint(b, nodelets)
|