summaryrefslogtreecommitdiff
path: root/src/data/tikzassembler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/tikzassembler.cpp')
-rw-r--r--src/data/tikzassembler.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/data/tikzassembler.cpp b/src/data/tikzassembler.cpp
index cd0b517..3cb3c10 100644
--- a/src/data/tikzassembler.cpp
+++ b/src/data/tikzassembler.cpp
@@ -29,6 +29,8 @@ TikzAssembler::TikzAssembler(Graph *graph, QObject *parent) :
{
yylex_init(&scanner);
yyset_extra(this, scanner);
+ _currentEdgeData = nullptr;
+ _currentPath = nullptr;
}
TikzAssembler::TikzAssembler(TikzStyles *tikzStyles, QObject *parent) :
@@ -36,6 +38,8 @@ TikzAssembler::TikzAssembler(TikzStyles *tikzStyles, QObject *parent) :
{
yylex_init(&scanner);
yyset_extra(this, scanner);
+ _currentEdgeData = nullptr;
+ _currentPath = nullptr;
}
void TikzAssembler::addNodeToMap(Node *n) { _nodeMap.insert(n->name(), n); }
@@ -70,3 +74,70 @@ bool TikzAssembler::isTikzStyles() const
return _tikzStyles != 0;
}
+Node *TikzAssembler::currentEdgeSource() const
+{
+ return _currentEdgeSource;
+}
+
+void TikzAssembler::setCurrentEdgeSource(Node *currentEdgeSource)
+{
+ _currentEdgeSource = currentEdgeSource;
+}
+
+Node *TikzAssembler::currentPathSource() const
+{
+ if (_currentPath && _currentPath->length() > 0) {
+ return _currentPath->edges()[0]->source();
+ } else {
+ return nullptr;
+ }
+}
+
+GraphElementData *TikzAssembler::currentEdgeData() const
+{
+ return _currentEdgeData;
+}
+
+void TikzAssembler::setCurrentEdgeData(GraphElementData *currentEdgeData)
+{
+ _currentEdgeData = currentEdgeData;
+}
+
+QString TikzAssembler::currentEdgeSourceAnchor() const
+{
+ return _currentEdgeSourceAnchor;
+}
+
+void TikzAssembler::setCurrentEdgeSourceAnchor(const QString &currentEdgeSourceAnchor)
+{
+ _currentEdgeSourceAnchor = currentEdgeSourceAnchor;
+}
+
+void TikzAssembler::addEdge(Edge *e)
+{
+ if (!_currentPath) _currentPath = new Path();
+ _currentPath->addEdge(e);
+ _graph->addEdge(e);
+}
+
+void TikzAssembler::finishCurrentPath()
+{
+ if (_currentEdgeData) {
+ GraphElementData *d = _currentEdgeData;
+ _currentEdgeData = nullptr;
+ delete d;
+ }
+
+ if (_currentPath) {
+ if (_currentPath->length() < 2) {
+ _currentPath->removeEdges();
+ Path *p = _currentPath;
+ _currentPath = nullptr;
+ delete p;
+ } else {
+ _graph->addPath(_currentPath);
+ _currentPath = nullptr;
+ }
+ }
+}
+