mess with dot types
This commit is contained in:
parent
3c6bd51bbc
commit
339fdc0bcf
|
@ -23,6 +23,7 @@ import (
|
|||
|
||||
type WeightedGraph interface {
|
||||
graph.Weighted
|
||||
graph.WeightedMultigraphBuilder
|
||||
|
||||
WeightedEdges() graph.WeightedEdges
|
||||
|
||||
|
|
|
@ -25,19 +25,23 @@ import (
|
|||
"gonum.org/v1/gonum/graph/multi"
|
||||
)
|
||||
|
||||
// DOTDirectedGraph is a graph to unmarshal DOT graphs.
|
||||
type DOTDirectedGraph struct {
|
||||
*igraph.DirectedGraph
|
||||
// DOTWeightedGraph is a graph to unmarshal DOT graphs.
|
||||
type DOTWeightedGraph struct {
|
||||
igraph.WeightedGraph
|
||||
WeightAttribute string
|
||||
}
|
||||
|
||||
// NewDOTDirectedGraph returns a graph with no nodes or edges.
|
||||
func NewDOTDirectedGraph(weightAttr string) *DOTDirectedGraph {
|
||||
return &DOTDirectedGraph{DirectedGraph: igraph.NewDirectedGraph(), WeightAttribute: weightAttr}
|
||||
func NewDOTDirectedGraph(weightAttr string) DOTWeightedGraph {
|
||||
return DOTWeightedGraph{WeightedGraph: igraph.NewDirectedGraph(), WeightAttribute: weightAttr}
|
||||
}
|
||||
|
||||
func NewDOTUndirectedGraph(weightAttr string) DOTWeightedGraph {
|
||||
return DOTWeightedGraph{WeightedGraph: igraph.NewUndirectedGraph(), WeightAttribute: weightAttr}
|
||||
}
|
||||
|
||||
// NewLine returns a DOT-aware weighted line.
|
||||
func (g *DOTDirectedGraph) NewLine(from, to graph.Node) graph.Line {
|
||||
func (g *DOTWeightedGraph) NewLine(from, to graph.Node) graph.Line {
|
||||
var defaultWeight float64
|
||||
if g.WeightAttribute == "" {
|
||||
defaultWeight = 1
|
||||
|
@ -45,16 +49,16 @@ func (g *DOTDirectedGraph) NewLine(from, to graph.Node) graph.Line {
|
|||
defaultWeight = math.NaN()
|
||||
}
|
||||
|
||||
e := g.DirectedGraph.NewWeightedLine(from, to, defaultWeight).(multi.WeightedLine)
|
||||
e := g.WeightedGraph.NewWeightedLine(from, to, defaultWeight).(multi.WeightedLine)
|
||||
return &weightedLine{WeightedLine: e, weightAttribute: g.WeightAttribute}
|
||||
}
|
||||
|
||||
// NewNode returns a DOT-aware Node.
|
||||
func (g *DOTDirectedGraph) NewNode() graph.Node {
|
||||
return &Node{Node: g.DirectedGraph.NewNode()}
|
||||
func (g *DOTWeightedGraph) NewNode() graph.Node {
|
||||
return &Node{Node: g.WeightedGraph.NewNode()}
|
||||
}
|
||||
|
||||
// SetLine adds a DOT-aware weighted line to the graph.
|
||||
func (g *DOTDirectedGraph) SetLine(e graph.Line) {
|
||||
g.DirectedGraph.SetWeightedLine(e.(*weightedLine))
|
||||
func (g *DOTWeightedGraph) SetLine(e graph.Line) {
|
||||
g.WeightedGraph.SetWeightedLine(e.(*weightedLine))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue