/** * A graph defined by tikz code. */ #ifndef GRAPH_H #define GRAPH_H #include "node.h" #include "edge.h" #include "graphelementdata.h" #include #include #include #include #include class Graph : public QObject { Q_OBJECT public: explicit Graph(QObject *parent = 0); ~Graph(); Node *addNode(Node *n); void removeNode(Node *n); Edge *addEdge(Edge *e); void removeEdge(Edge *e); GraphElementData *data() const; void setData(GraphElementData *data); const QVector &nodes(); const QVector &edges(); QRectF bbox() const; void setBbox(const QRectF &bbox); bool hasBbox(); void clearBbox(); QString tikz(); signals: public slots: private: QVector _nodes; QVector _edges; QMultiHash inEdges; QMultiHash outEdges; GraphElementData *_data; QRectF _bbox; }; #endif // GRAPH_H