diff grapher.h @ 46:bd3accba9b3f

* Better layout for branches; spline connection paths
author Chris Cannam
date Wed, 10 Nov 2010 17:11:41 +0000
parents 4286836bb3c9
children bf3ab0ffb559
line wrap: on
line diff
--- a/grapher.h	Wed Nov 10 12:44:11 2010 +0000
+++ b/grapher.h	Wed Nov 10 17:11:41 2010 +0000
@@ -6,6 +6,7 @@
 
 #include <QSet>
 #include <QMap>
+#include <QPair>
 
 #include <exception>
 
@@ -28,14 +29,10 @@
     };
 
 private:
-    void layoutRow(QString id);
-    void layoutCol(QString id);
-    int findAvailableColumn(int row, int parent, bool preferParentCol);
-
     QGraphicsScene *m_scene;
 
     typedef QMap<QString, Changeset *> IdChangesetMap;
-    IdChangesetMap m_idCsetMap;
+    IdChangesetMap m_changesets;
 
     typedef QMap<QString, ChangesetItem *> IdItemMap;
     IdItemMap m_items;
@@ -44,8 +41,21 @@
     typedef QMap<int, ColumnSet> GridAlloc;
     GridAlloc m_alloc;
 
+    typedef QPair<int, int> Range;
+    typedef QMap<QString, Range> BranchRangeMap;
+    BranchRangeMap m_branchRanges;
+
+    typedef QMap<QString, int> BranchColumnMap;
+    BranchColumnMap m_branchHomes;
+
     typedef QSet<QString> IdSet;
     IdSet m_handled;
+
+    void layoutRow(QString id);
+    void layoutCol(QString id);
+    void allocateBranchHomes(Changesets csets);
+    bool rangesConflict(const Range &r1, const Range &r2);
+    int findAvailableColumn(int row, int parent, bool preferParentCol);
 };
 
 #endif