Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

SugiyamaLayout.h
Go to the documentation of this file.
1 
32 #pragma once
33 
42 
43 #include <memory>
44 
45 namespace ogdf {
46 
161 #if 0
162  class CrossMinMaster;
163  class CrossMinWorker;
164 #endif
165 
166 protected:
168  std::unique_ptr<RankingModule> m_ranking;
169 
171  std::unique_ptr<LayeredCrossMinModule> m_crossMin;
172 
173  std::unique_ptr<TwoLayerCrossMinSimDraw> m_crossMinSimDraw;
174 
176  std::unique_ptr<HierarchyLayoutModule> m_layout;
177 
179  std::unique_ptr<HierarchyClusterLayoutModule> m_clusterLayout;
180 
182  std::unique_ptr<CCLayoutPackModule> m_packer;
183 
184  int m_fails;
185  int m_runs;
186  bool m_transpose;
188  double m_minDistCC;
189  double m_pageRatio;
191  unsigned int m_maxThreads;
192 
196 
199 
201 
202 public:
204  SugiyamaLayout();
205 
206  // destructor
208 
219  virtual void call(GraphAttributes& GA) override;
220 
226  void call(ClusterGraphAttributes& CGA);
227 
236  void call(GraphAttributes& GA, NodeArray<int>& rank);
237 
238  // special call for UML graphs
239  void callUML(GraphAttributes& GA);
240 
253  int fails() const { return m_fails; }
254 
256  void fails(int nFails) { m_fails = nFails; }
257 
266  int runs() const { return m_runs; }
267 
269  void runs(int nRuns) { m_runs = nRuns; }
270 
278  bool transpose() const { return m_transpose; }
279 
281  void transpose(bool bTranspose) { m_transpose = bTranspose; }
282 
289  bool arrangeCCs() const { return m_arrangeCCs; }
290 
292  void arrangeCCs(bool bArrange) { m_arrangeCCs = bArrange; }
293 
300  double minDistCC() const { return m_minDistCC; }
301 
303  void minDistCC(double x) { m_minDistCC = x; }
304 
312  double pageRatio() const { return m_pageRatio; }
313 
315  void pageRatio(double x) { m_pageRatio = x; }
316 
323  bool alignBaseClasses() const { return m_alignBaseClasses; }
324 
326  void alignBaseClasses(bool b) { m_alignBaseClasses = b; }
327 
334  bool alignSiblings() const { return m_alignSiblings; }
335 
337  void alignSiblings(bool b) { m_alignSiblings = b; }
338 
340  void setSubgraphs(EdgeArray<uint32_t>* esg) { m_subgraphs = esg; }
341 
343  bool useSubgraphs() const { return m_subgraphs != nullptr; }
344 
345  bool permuteFirst() const { return m_permuteFirst; }
346 
347  void permuteFirst(bool b) { m_permuteFirst = b; }
348 
350  unsigned int maxThreads() const { return m_maxThreads; }
351 
353  void maxThreads(unsigned int n) {
354 #ifndef OGDF_MEMORY_POOL_NTS
355  m_maxThreads = n;
356 #endif
357  }
358 
374  void setRanking(RankingModule* pRanking) { m_ranking.reset(pRanking); }
375 
382  void setCrossMin(LayeredCrossMinModule* pCrossMin) { m_crossMin.reset(pCrossMin); }
383 
391  void setLayout(HierarchyLayoutModule* pLayout) { m_layout.reset(pLayout); }
392 
400  void setClusterLayout(HierarchyClusterLayoutModule* pLayout) { m_clusterLayout.reset(pLayout); }
401 
409  void setPacker(CCLayoutPackModule* pPacker) { m_packer.reset(pPacker); }
410 
417  int numberOfCrossings() const { return m_nCrossings; }
419 
421  RCCrossings numberOfCrossingsCluster() const { return m_nCrossingsCluster; }
422 
424  int numberOfLevels() { return m_numLevels; }
425 
427  int maxLevelSize() { return m_maxLevelSize; }
428 
429  double timeReduceCrossings() { return m_timeReduceCrossings; }
430 
431  // needed by LayerByLayerSweep::
432  const EdgeArray<uint32_t>* subgraphs() const { return m_subgraphs; };
433 
434  int numCC() const { return m_numCC; };
435 
436  const NodeArray<int>& compGC() const { return m_compGC; };
437 
438 protected:
439 #if 0
440  void reduceCrossings(HierarchyLevels &levels);
441 #endif
442  void reduceCrossings(ExtendedNestingGraph& H);
443 
444  const HierarchyLevelsBase* reduceCrossings(Hierarchy& H);
445 
446 private:
447  int m_numCC;
449 
450  void doCall(GraphAttributes& AG, bool umlCall);
451  void doCall(GraphAttributes& AG, bool umlCall, NodeArray<int>& rank);
452 
453 #if 0
454  int traverseTopDown(HierarchyLevels &levels);
455  int traverseBottomUp(HierarchyLevels &levels);
456 
457  bool transposeLevel(int i, HierarchyLevels &levels);
458  void doTranspose(HierarchyLevels &levels);
459  void doTransposeRev(HierarchyLevels &levels);
460 #endif
461 
462 
466 
467  RCCrossings traverseTopDown(ExtendedNestingGraph& H);
468  RCCrossings traverseBottomUp(ExtendedNestingGraph& H);
469 };
470 
471 
472 }
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::SugiyamaLayout::numCC
int numCC() const
Definition: SugiyamaLayout.h:434
ogdf::SugiyamaLayout::m_transpose
bool m_transpose
Option for switching on transposal heuristic.
Definition: SugiyamaLayout.h:186
ogdf::SugiyamaLayout::m_packer
std::unique_ptr< CCLayoutPackModule > m_packer
The module for arranging connected components.
Definition: SugiyamaLayout.h:182
ogdf::SugiyamaLayout::subgraphs
const EdgeArray< uint32_t > * subgraphs() const
Definition: SugiyamaLayout.h:432
RankingModule.h
Declaration of interface for ranking algorithms.
ogdf::SugiyamaLayout::alignSiblings
void alignSiblings(bool b)
Sets the option alignSiblings to b.
Definition: SugiyamaLayout.h:337
ogdf::SugiyamaLayout::minDistCC
double minDistCC() const
Returns the current setting of option minDistCC (distance between components).
Definition: SugiyamaLayout.h:300
ogdf::SugiyamaLayout::numberOfLevels
int numberOfLevels()
Return the number of layers/levels}.
Definition: SugiyamaLayout.h:424
ogdf::SugiyamaLayout::m_minDistCC
double m_minDistCC
Option for distance between connected components.
Definition: SugiyamaLayout.h:188
ogdf::HierarchyLayoutModule
Interface of hierarchy layout algorithms.
Definition: HierarchyLayoutModule.h:47
ogdf::SugiyamaLayout::fails
void fails(int nFails)
Sets the option fails to nFails.
Definition: SugiyamaLayout.h:256
ogdf::SugiyamaLayout::m_runs
int m_runs
Option for number of runs.
Definition: SugiyamaLayout.h:185
ogdf::SugiyamaLayout::permuteFirst
bool permuteFirst() const
Definition: SugiyamaLayout.h:345
ogdf::SugiyamaLayout::alignBaseClasses
bool alignBaseClasses() const
Returns the current setting of option alignBaseClasses.
Definition: SugiyamaLayout.h:323
ogdf::SugiyamaLayout::~SugiyamaLayout
~SugiyamaLayout()
Definition: SugiyamaLayout.h:207
ogdf::HierarchyClusterLayoutModule
Interface of hierarchy layout algorithms for cluster graphs.
Definition: HierarchyClusterLayoutModule.h:45
ogdf::Hierarchy
Representation of proper hierarchies used by Sugiyama-layout.
Definition: Hierarchy.h:43
ogdf::SugiyamaLayout::m_fails
int m_fails
Option for maximal number of fails.
Definition: SugiyamaLayout.h:184
ogdf::SugiyamaLayout::m_crossMin
std::unique_ptr< LayeredCrossMinModule > m_crossMin
the module for two-layer crossing minimization
Definition: SugiyamaLayout.h:171
LayoutModule.h
Declaration of interface for layout algorithms (class LayoutModule)
ogdf::SugiyamaLayout::runs
void runs(int nRuns)
Sets the option runs to nRuns.
Definition: SugiyamaLayout.h:269
ogdf::SugiyamaLayout::runs
int runs() const
Returns the current setting of option runs.
Definition: SugiyamaLayout.h:266
ogdf::HierarchyLevelsBase
Definition: CrossingMinInterfaces.h:61
ogdf::RankingModule
Interface of algorithms for computing a node ranking.
Definition: RankingModule.h:44
ogdf::SugiyamaLayout::useSubgraphs
bool useSubgraphs() const
Returns true iff subgraphs for simultaneous drawing are set.
Definition: SugiyamaLayout.h:343
ogdf::CCLayoutPackModule
Base class of algorithms that arrange/pack layouts of connected components.
Definition: CCLayoutPackModule.h:46
ogdf::SugiyamaLayout::m_permuteFirst
bool m_permuteFirst
Definition: SugiyamaLayout.h:190
ogdf::SugiyamaLayout::fails
int fails() const
Returns the current setting of option fails.
Definition: SugiyamaLayout.h:253
ogdf::SugiyamaLayout::arrangeCCs
void arrangeCCs(bool bArrange)
Sets the options arrangeCCs to bArrange.
Definition: SugiyamaLayout.h:292
ogdf::SugiyamaLayout::alignBaseClasses
void alignBaseClasses(bool b)
Sets the option alignBaseClasses to b.
Definition: SugiyamaLayout.h:326
ogdf::SugiyamaLayout::m_pageRatio
double m_pageRatio
Option for desired page ratio.
Definition: SugiyamaLayout.h:189
ogdf::SugiyamaLayout::m_alignBaseClasses
bool m_alignBaseClasses
Option for aligning base classes.
Definition: SugiyamaLayout.h:197
ogdf::SugiyamaLayout::transpose
void transpose(bool bTranspose)
Sets the option transpose to bTranspose.
Definition: SugiyamaLayout.h:281
ogdf::SugiyamaLayout::setCrossMin
void setCrossMin(LayeredCrossMinModule *pCrossMin)
Sets the module option for the two-layer crossing minimization.
Definition: SugiyamaLayout.h:382
ogdf::ClusterGraphAttributes
Stores additional attributes of a clustered graph (like layout information).
Definition: ClusterGraphAttributes.h:46
ogdf::SugiyamaLayout::setPacker
void setPacker(CCLayoutPackModule *pPacker)
Sets the module option for the arrangement of connected components.
Definition: SugiyamaLayout.h:409
ogdf::SugiyamaLayout::m_layout
std::unique_ptr< HierarchyLayoutModule > m_layout
the hierarchy layout module (final coordinate assignment)
Definition: SugiyamaLayout.h:176
ogdf::SugiyamaLayout::timeReduceCrossings
double timeReduceCrossings()
Definition: SugiyamaLayout.h:429
ogdf::SugiyamaLayout::m_subgraphs
EdgeArray< uint32_t > * m_subgraphs
Defines the subgraphs for simultaneous drawing.
Definition: SugiyamaLayout.h:200
ogdf::SugiyamaLayout::m_crossMinSimDraw
std::unique_ptr< TwoLayerCrossMinSimDraw > m_crossMinSimDraw
Definition: SugiyamaLayout.h:173
ogdf::SugiyamaLayout::setLayout
void setLayout(HierarchyLayoutModule *pLayout)
Sets the module option for the computation of the final layout.
Definition: SugiyamaLayout.h:391
ogdf::Array< bool >
HierarchyClusterLayoutModule.h
Declaration of interface for hierarchy layout algorithms (3. phase of Sugiyama) for cluster graphs.
CCLayoutPackModule.h
Declaration of interface for algorithms that arrange/pack layouts of connected components.
ogdf::SugiyamaLayout::maxThreads
unsigned int maxThreads() const
Returns the maximal number of used threads.
Definition: SugiyamaLayout.h:350
TwoLayerCrossMinSimDraw.h
Declaration of interface for two-layer crossing minimization algorithms for Simultaneous Drawing.
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::SugiyamaLayout::m_clusterLayout
std::unique_ptr< HierarchyClusterLayoutModule > m_clusterLayout
the hierarchy cluster layout module (final coordinate assignment for clustered graphs)
Definition: SugiyamaLayout.h:179
ogdf::SugiyamaLayout::m_numLevels
int m_numLevels
Definition: SugiyamaLayout.h:463
ogdf::SugiyamaLayout::minDistCC
void minDistCC(double x)
Sets the option minDistCC to x.
Definition: SugiyamaLayout.h:303
ogdf::SugiyamaLayout::transpose
bool transpose() const
Returns the current setting of option transpose.
Definition: SugiyamaLayout.h:278
ogdf::SugiyamaLayout::arrangeCCs
bool arrangeCCs() const
Returns the current setting of option arrangeCCs.
Definition: SugiyamaLayout.h:289
ogdf::SugiyamaLayout::m_levelChanged
Array< bool > m_levelChanged
Definition: SugiyamaLayout.h:195
ogdf::SugiyamaLayout::setSubgraphs
void setSubgraphs(EdgeArray< uint32_t > *esg)
Sets the subgraphs for simultaneous drawing.
Definition: SugiyamaLayout.h:340
ogdf::SugiyamaLayout::maxLevelSize
int maxLevelSize()
Return the max. number of elements on a layer.
Definition: SugiyamaLayout.h:427
ogdf::SugiyamaLayout::m_maxThreads
unsigned int m_maxThreads
The maximal number of used threads.
Definition: SugiyamaLayout.h:191
ogdf::SugiyamaLayout::maxThreads
void maxThreads(unsigned int n)
Sets the maximal number of used threads to n.
Definition: SugiyamaLayout.h:353
ogdf::SugiyamaLayout::compGC
const NodeArray< int > & compGC() const
Definition: SugiyamaLayout.h:436
ogdf::SugiyamaLayout
Sugiyama's layout algorithm.
Definition: SugiyamaLayout.h:160
ogdf::SugiyamaLayout::m_alignSiblings
bool m_alignSiblings
Option for aligning siblings in inheritance trees.
Definition: SugiyamaLayout.h:198
ogdf::SugiyamaLayout::alignSiblings
bool alignSiblings() const
Returns the current setting of option alignSiblings.
Definition: SugiyamaLayout.h:334
ogdf::SugiyamaLayout::pageRatio
void pageRatio(double x)
Sets the option pageRatio to x.
Definition: SugiyamaLayout.h:315
ogdf::SugiyamaLayout::m_numCC
int m_numCC
Definition: SugiyamaLayout.h:447
ogdf::SugiyamaLayout::setRanking
void setRanking(RankingModule *pRanking)
Sets the module option for the node ranking (layer assignment).
Definition: SugiyamaLayout.h:374
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::SugiyamaLayout::m_timeReduceCrossings
double m_timeReduceCrossings
Definition: SugiyamaLayout.h:465
HierarchyLayoutModule.h
Declaration of interface hierarchy layout algorithms (3. phase of Sugiyama).
ogdf::SugiyamaLayout::m_nCrossings
int m_nCrossings
Number of crossings in computed layout.
Definition: SugiyamaLayout.h:193
ClusterGraphAttributes.h
Declares ClusterGraphAttributes, an extension of class GraphAttributes, to store clustergraph layout ...
ogdf::RCCrossings
Definition: ExtendedNestingGraph.h:42
ogdf::SugiyamaLayout::numberOfCrossingsCluster
RCCrossings numberOfCrossingsCluster() const
Returns the number of crossings in the computed layout (cluster graph).
Definition: SugiyamaLayout.h:421
ogdf::ExtendedNestingGraph
Definition: ExtendedNestingGraph.h:295
ogdf::LayeredCrossMinModule
Interface of crossing minimization algorithms for layered graphs.
Definition: LayeredCrossMinModule.h:54
ogdf::SugiyamaLayout::permuteFirst
void permuteFirst(bool b)
Definition: SugiyamaLayout.h:347
ogdf::SugiyamaLayout::setClusterLayout
void setClusterLayout(HierarchyClusterLayoutModule *pLayout)
Sets the module option for the computation of the final layout for clustered graphs.
Definition: SugiyamaLayout.h:400
ogdf::SugiyamaLayout::m_nCrossingsCluster
RCCrossings m_nCrossingsCluster
Definition: SugiyamaLayout.h:194
ogdf::SugiyamaLayout::m_arrangeCCs
bool m_arrangeCCs
Option for laying out components separately.
Definition: SugiyamaLayout.h:187
ogdf::SugiyamaLayout::m_ranking
std::unique_ptr< RankingModule > m_ranking
the ranking module (level assignment)
Definition: SugiyamaLayout.h:168
ExtendedNestingGraph.h
Declaration of ExtendedNestingGraph.
ogdf::SugiyamaLayout::pageRatio
double pageRatio() const
Returns the current setting of option pageRation.
Definition: SugiyamaLayout.h:312
ogdf::SugiyamaLayout::m_compGC
NodeArray< int > m_compGC
Definition: SugiyamaLayout.h:448
ogdf::SugiyamaLayout::m_maxLevelSize
int m_maxLevelSize
Definition: SugiyamaLayout.h:464
ogdf::HierarchyLevels
Representation of proper hierarchies used by Sugiyama-layout.
Definition: HierarchyLevels.h:46
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709
ogdf::LayoutModule
Interface of general layout algorithms.
Definition: LayoutModule.h:44