#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(); void removeNode(Node *n); Edge *addEdge(Node *s, Node*t); 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