Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
ModularMultilevelMixer.h
Go to the documentation of this file.
1
32#pragma once
33
35#include <ogdf/basic/basic.h>
38
39#include <memory>
40
41namespace ogdf {
42class GraphAttributes;
43class MultilevelGraph;
44
46
76private:
78
83 std::unique_ptr<LayoutModule> m_oneLevelLayoutModule;
84
86
91 std::unique_ptr<LayoutModule> m_finalLayoutModule;
92
94 std::unique_ptr<MultilevelBuilder> m_multilevelBuilder;
95
97 std::unique_ptr<InitialPlacer> m_initialPlacement;
98
101
104
107
109
112
113public:
115 enum class erc {
116 None,
117 LevelBound
118 };
119
121
124 m_oneLevelLayoutModule.reset(levelLayout);
125 }
126
128 void setFinalLayoutModule(LayoutModule* finalLayout) { m_finalLayoutModule.reset(finalLayout); }
129
132 m_multilevelBuilder.reset(levelBuilder);
133 }
134
136 void setInitialPlacer(InitialPlacer* placement) { m_initialPlacement.reset(placement); }
137
139 void setLayoutRepeats(int times = 1) { m_times = times; }
140
142 void setAllEdgeLengths(double len) { m_fixedEdgeLength = len; }
143
145 void setAllNodeSizes(double size) { m_fixedNodeSize = size; }
146
148 void setRandomize(bool b) { m_randomize = b; }
149
151 void setLevelBound(bool b) { m_levelBound = b; }
152
154 void call(GraphAttributes& GA) override;
155
166#if 0
167 virtual void call(MultilevelGraph &MLG) {
168 GraphAttributes GA(MLG.getGraph());
170 call(GA);
172 };
173#else
174 virtual void call(MultilevelGraph& MLG);
175#endif
176
178 erc errorCode() { return m_errorCode; }
179
181 double coarseningRatio() { return m_coarseningRatio; }
182
183private:
185};
186
187}
Abstract InitialPlacer places the nodes of the level into the next.
Declaration of interface for layout algorithms (class LayoutModule)
Declaration of MultilevelBuilder.
Basic declarations, included by all source files.
Stores additional attributes of a graph (like layout information).
Base class for placer modules.
Interface of general layout algorithms.
Modular multilevel graph layout.
std::unique_ptr< LayoutModule > m_oneLevelLayoutModule
The layout algorithm applied on each level.
std::unique_ptr< InitialPlacer > m_initialPlacement
The initial placer module computes the initial positions for nodes inserted into the previous level.
double m_fixedNodeSize
If set to a value > 0, all node sizes will be set to this value.
bool m_levelBound
Determines if computation is stopped when number of levels is too high.
void setAllNodeSizes(double size)
If size > 0, all node sizes will be set to size.
void setFinalLayoutModule(LayoutModule *finalLayout)
Sets the final layout module to finalLayout.
bool m_randomize
Determines if initial random layout is computed.
std::unique_ptr< MultilevelBuilder > m_multilevelBuilder
The multilevel builder module computes the multilevel hierarchy.
void setMultilevelBuilder(MultilevelBuilder *levelBuilder)
Sets the multilevel builder module to levelBuilder.
double m_coarseningRatio
Ratio between sizes of previous (p) and current (c) level graphs: c/p.
double coarseningRatio()
Returns the ratio c/p between sizes of previous (p) and current (c) level graphs.
std::unique_ptr< LayoutModule > m_finalLayoutModule
The layout algorithm applied on the last level (i.e., the largest graph in the multilevel hierarchy).
void setAllEdgeLengths(double len)
If len > 0, all edge weights will be set to len.
void setLayoutRepeats(int times=1)
Determines how many times the one-level layout will be called.
int m_times
The one-level layout will be called m_times to improve quality.
void setInitialPlacer(InitialPlacer *placement)
Sets the initial placer module to placement.
double m_fixedEdgeLength
If set to a value > 0, all edge weights will be set to this value.
erc m_errorCode
The error code of the last call.
void setRandomize(bool b)
Determines if an initial random layout is computed.
void setLevelLayoutModule(LayoutModule *levelLayout)
Sets the one-level layout module to levelLayout.
erc errorCode()
Returns the error code of last call.
void setLevelBound(bool b)
Determines if computation is stopped when number of levels is too high.
virtual void call(MultilevelGraph &MLG)
Calls the multilevel layout algorithm for multilevel graph MLG.
void call(GraphAttributes &GA) override
Calls the multilevel layout algorithm for graph attributes GA.
Base class for merger modules.
void exportAttributesSimple(GraphAttributes &GA) const
void importAttributesSimple(const GraphAttributes &GA)
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
Definition config.h:117
The namespace for all OGDF objects.
@ None
Two geometric objects do not intersect.