diff options
Diffstat (limited to 'src/data/edge.cpp')
-rw-r--r-- | src/data/edge.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/data/edge.cpp b/src/data/edge.cpp index e4d5d69..d3396e8 100644 --- a/src/data/edge.cpp +++ b/src/data/edge.cpp @@ -25,6 +25,28 @@ Edge::~Edge() delete _edgeNode; } +/*! + * @brief Edge::copy makes a deep copy of an edge. + * @param nodeTable is an optional pointer to a table mapping the old source/target + * node pointers to their new, copied versions. This is used when making a copy of + * an entire (sub)graph. + * @return a copy of the edge + */ +Edge *Edge::copy(QMap<Node*,Node*> *nodeTable) +{ + Edge *e; + if (nodeTable == 0) e = new Edge(_source, _target); + else e = new Edge(nodeTable->value(_source), nodeTable->value(_target)); + e->setData(_data->copy()); + e->setBasicBendMode(_basicBendMode); + e->setBend(_bend); + e->setInAngle(_inAngle); + e->setOutAngle(_outAngle); + e->setWeight(_weight); + e->updateControls(); + return e; +} + Node *Edge::source() const { return _source; |