Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

ModularMultilevelMixer.h
Go to the documentation of this file.
1 
32 #pragma once
33 
38 
39 #include <memory>
40 
41 namespace ogdf {
42 
44 
74 private:
76 
81  std::unique_ptr<LayoutModule> m_oneLevelLayoutModule;
82 
84 
89  std::unique_ptr<LayoutModule> m_finalLayoutModule;
90 
92  std::unique_ptr<MultilevelBuilder> m_multilevelBuilder;
93 
95  std::unique_ptr<InitialPlacer> m_initialPlacement;
96 
98  int m_times;
99 
102 
105 
107 
109  bool m_randomize;
110 
111 public:
113  enum class erc {
114  None,
115  LevelBound
116  };
117 
119 
121  void setLevelLayoutModule(LayoutModule* levelLayout) {
122  m_oneLevelLayoutModule.reset(levelLayout);
123  }
124 
126  void setFinalLayoutModule(LayoutModule* finalLayout) { m_finalLayoutModule.reset(finalLayout); }
127 
130  m_multilevelBuilder.reset(levelBuilder);
131  }
132 
134  void setInitialPlacer(InitialPlacer* placement) { m_initialPlacement.reset(placement); }
135 
137  void setLayoutRepeats(int times = 1) { m_times = times; }
138 
140  void setAllEdgeLengths(double len) { m_fixedEdgeLength = len; }
141 
143  void setAllNodeSizes(double size) { m_fixedNodeSize = size; }
144 
146  void setRandomize(bool b) { m_randomize = b; }
147 
149  void setLevelBound(bool b) { m_levelBound = b; }
150 
152  void call(GraphAttributes& GA) override;
153 
164 #if 0
165  virtual void call(MultilevelGraph &MLG) {
166  GraphAttributes GA(MLG.getGraph());
167  MLG.exportAttributesSimple(GA);
168  call(GA);
169  MLG.importAttributesSimple(GA);
170  };
171 #else
172  virtual void call(MultilevelGraph& MLG);
173 #endif
174 
176  erc errorCode() { return m_errorCode; }
177 
179  double coarseningRatio() { return m_coarseningRatio; }
180 
181 private:
183 };
184 
185 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::GraphAttributes
Stores additional attributes of a graph (like layout information).
Definition: GraphAttributes.h:66
ogdf::ModularMultilevelMixer::setInitialPlacer
void setInitialPlacer(InitialPlacer *placement)
Sets the initial placer module to placement.
Definition: ModularMultilevelMixer.h:134
ogdf::ModularMultilevelMixer::setLevelBound
void setLevelBound(bool b)
Determines if computation is stopped when number of levels is too high.
Definition: ModularMultilevelMixer.h:149
ogdf::MultilevelGraph::getGraph
Graph & getGraph()
Definition: MultilevelGraph.h:137
ogdf::MultilevelGraph::exportAttributesSimple
void exportAttributesSimple(GraphAttributes &GA) const
ogdf::ModularMultilevelMixer::m_errorCode
erc m_errorCode
The error code of the last call.
Definition: ModularMultilevelMixer.h:182
ogdf::ModularMultilevelMixer::m_oneLevelLayoutModule
std::unique_ptr< LayoutModule > m_oneLevelLayoutModule
The layout algorithm applied on each level.
Definition: ModularMultilevelMixer.h:81
ogdf::ModularMultilevelMixer::erc
erc
Error codes for calls.
Definition: ModularMultilevelMixer.h:113
ogdf::ModularMultilevelMixer::m_fixedNodeSize
double m_fixedNodeSize
If set to a value > 0, all node sizes will be set to this value.
Definition: ModularMultilevelMixer.h:104
LayoutModule.h
Declaration of interface for layout algorithms (class LayoutModule)
ogdf::MultilevelGraph
Definition: MultilevelGraph.h:66
ogdf::ModularMultilevelMixer::m_randomize
bool m_randomize
Determines if initial random layout is computed.
Definition: ModularMultilevelMixer.h:109
ogdf::InitialPlacer
Base class for placer modules.
Definition: InitialPlacer.h:43
ogdf::ModularMultilevelMixer::m_coarseningRatio
double m_coarseningRatio
Ratio between sizes of previous (p) and current (c) level graphs: c/p.
Definition: ModularMultilevelMixer.h:106
ogdf::ModularMultilevelMixer::setLayoutRepeats
void setLayoutRepeats(int times=1)
Determines how many times the one-level layout will be called.
Definition: ModularMultilevelMixer.h:137
ogdf::ModularMultilevelMixer::errorCode
erc errorCode()
Returns the error code of last call.
Definition: ModularMultilevelMixer.h:176
ogdf::ModularMultilevelMixer::setAllEdgeLengths
void setAllEdgeLengths(double len)
If len > 0, all edge weights will be set to len.
Definition: ModularMultilevelMixer.h:140
ogdf::ModularMultilevelMixer::setFinalLayoutModule
void setFinalLayoutModule(LayoutModule *finalLayout)
Sets the final layout module to finalLayout.
Definition: ModularMultilevelMixer.h:126
ogdf::ModularMultilevelMixer::m_finalLayoutModule
std::unique_ptr< LayoutModule > m_finalLayoutModule
The layout algorithm applied on the last level (i.e., the largest graph in the multilevel hierarchy).
Definition: ModularMultilevelMixer.h:89
ogdf::MultilevelBuilder
Base class for merger modules.
Definition: MultilevelBuilder.h:43
ogdf::ModularMultilevelMixer::m_times
int m_times
The one-level layout will be called m_times to improve quality.
Definition: ModularMultilevelMixer.h:98
ogdf::ModularMultilevelMixer::setAllNodeSizes
void setAllNodeSizes(double size)
If size > 0, all node sizes will be set to size.
Definition: ModularMultilevelMixer.h:143
MultilevelGraph.h
MLG is the main data structure for ModularMultilevelMixer.
ogdf::ModularMultilevelMixer::m_multilevelBuilder
std::unique_ptr< MultilevelBuilder > m_multilevelBuilder
The multilevel builder module computes the multilevel hierarchy.
Definition: ModularMultilevelMixer.h:92
ogdf::ModularMultilevelMixer::m_initialPlacement
std::unique_ptr< InitialPlacer > m_initialPlacement
The initial placer module computes the initial positions for nodes inserted into the previous level.
Definition: ModularMultilevelMixer.h:95
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::ModularMultilevelMixer::setRandomize
void setRandomize(bool b)
Determines if an initial random layout is computed.
Definition: ModularMultilevelMixer.h:146
ogdf::ModularMultilevelMixer::m_fixedEdgeLength
double m_fixedEdgeLength
If set to a value > 0, all edge weights will be set to this value.
Definition: ModularMultilevelMixer.h:101
ogdf::ModularMultilevelMixer::coarseningRatio
double coarseningRatio()
Returns the ratio c/p between sizes of previous (p) and current (c) level graphs.
Definition: ModularMultilevelMixer.h:179
ogdf::ModularMultilevelMixer
Modular multilevel graph layout.
Definition: ModularMultilevelMixer.h:73
ogdf::MultilevelGraph::importAttributesSimple
void importAttributesSimple(const GraphAttributes &GA)
ogdf::ModularMultilevelMixer::m_levelBound
bool m_levelBound
Determines if computation is stopped when number of levels is too high.
Definition: ModularMultilevelMixer.h:108
InitialPlacer.h
Abstract InitialPlacer places the nodes of the level into the next.
MultilevelBuilder.h
Declaration of MultilevelBuilder.
ogdf::IntersectionType::None
@ None
Two geometric objects do not intersect.
ogdf::ModularMultilevelMixer::setMultilevelBuilder
void setMultilevelBuilder(MultilevelBuilder *levelBuilder)
Sets the multilevel builder module to levelBuilder.
Definition: ModularMultilevelMixer.h:129
ogdf::LayoutModule
Interface of general layout algorithms.
Definition: LayoutModule.h:44
ogdf::ModularMultilevelMixer::setLevelLayoutModule
void setLevelLayoutModule(LayoutModule *levelLayout)
Sets the one-level layout module to levelLayout.
Definition: ModularMultilevelMixer.h:121