Chris@44: #ifndef GRAPHER_H Chris@44: #define GRAPHER_H Chris@44: Chris@44: #include "changeset.h" Chris@44: #include "changesetitem.h" Chris@44: cannam@45: #include cannam@45: #include cannam@45: cannam@45: #include Chris@44: Chris@44: class Grapher Chris@44: { Chris@44: public: cannam@45: Grapher(QGraphicsScene *scene) { m_scene = scene; } cannam@45: cannam@45: void layout(Changesets csets); cannam@45: cannam@45: class LayoutException : public std::exception { cannam@45: public: cannam@45: LayoutException(QString message) throw() : m_message(message) { } cannam@45: virtual ~LayoutException() throw() { } cannam@45: virtual const char *what() const throw() { cannam@45: return m_message.toLocal8Bit().data(); cannam@45: } cannam@45: protected: cannam@45: QString m_message; cannam@45: }; cannam@45: cannam@45: private: cannam@45: void layoutRow(QString id); cannam@45: void layoutCol(QString id); cannam@45: int findAvailableColumn(int row, int parent, bool preferParentCol); cannam@45: cannam@45: QGraphicsScene *m_scene; cannam@45: cannam@45: typedef QMap IdChangesetMap; cannam@45: IdChangesetMap m_idCsetMap; cannam@45: cannam@45: typedef QMap IdItemMap; cannam@45: IdItemMap m_items; cannam@45: cannam@45: typedef QSet ColumnSet; cannam@45: typedef QMap GridAlloc; cannam@45: GridAlloc m_alloc; cannam@45: cannam@45: typedef QSet IdSet; cannam@45: IdSet m_handled; Chris@44: }; Chris@44: Chris@44: #endif