/** * 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(); void addNode(Node *n); void addNode(Node *n, int index); void removeNode(Node *n); void addEdge(Edge *e); void addEdge(Edge *e, int index); 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