Open
Graph Drawing
Framework

 v.2012.07
 

MultilevelBuilder.h
Go to the documentation of this file.
1 /*
2  * $Revision: 2523 $
3  *
4  * last checkin:
5  * $Author: gutwenger $
6  * $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
7  ***************************************************************/
8 
43 #ifdef _MSC_VER
44 #pragma once
45 #endif
46 
47 #ifndef OGDF_MULTILEVEL_BUILDER_H
48 #define OGDF_MULTILEVEL_BUILDER_H
49 
50 #include <ogdf/basic/Graph.h>
52 
53 namespace ogdf {
54 
56 {
57 private:
68  virtual bool buildOneLevel(MultilevelGraph &MLG) = 0;
69 
70 protected:
71  // if set to true the length of the edge between two merged nodes will be added to
72  // all edges that are moved to the other node in this merge.
75 
76 public:
77  virtual ~MultilevelBuilder() { }
78  MultilevelBuilder():m_adjustEdgeLengths(0),m_numLevels(1) { }
79 
80  virtual void buildAllLevels(MultilevelGraph &MLG)
81  {
82  m_numLevels = 1;
84  MLG.updateMergeWeights();
85  while (buildOneLevel(MLG))
86  {
87  m_numLevels++;
88  }
90  }
91 
92  void setEdgeLengthAdjustment(int factor) { m_adjustEdgeLengths = factor; }
93  int getNumLevels() {return m_numLevels;}
94 
95 };
96 
97 } // namespace ogdf
98 
99 #endif