Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

PlanRep.h
Go to the documentation of this file.
1 
34 // PlanRep should not know about generalizations and association,
35 // but we already set types in Attributedgraph, therefore set them
36 // in PlanRep, too
37 
38 #pragma once
39 
40 #include <ogdf/basic/GraphCopy.h>
41 #include <ogdf/basic/GridLayout.h>
42 #include <ogdf/basic/Layout.h>
45 
46 namespace ogdf {
47 
48 class OrthoRep;
49 
51 
57 class OGDF_EXPORT PlanRep : public GraphCopy {
58 public:
60  struct Deg1RestoreInfo {
61  Deg1RestoreInfo() : m_eOriginal(nullptr), m_deg1Original(nullptr), m_adjRef(nullptr) { }
62 
63  Deg1RestoreInfo(edge eOrig, node deg1Orig, adjEntry adjRef)
64  : m_eOriginal(eOrig), m_deg1Original(deg1Orig), m_adjRef(adjRef) { }
65 
69  };
70 
73  explicit PlanRep(const Graph& G);
74 
76  explicit PlanRep(const GraphAttributes& AG);
77 
78  virtual ~PlanRep() { }
79 
81 
87 
90  int numberOfCCs() const { return m_ccInfo.numberOfCCs(); }
91 
93  int currentCC() const { return m_currentCC; }
94 
96  const CCsInfo& ccInfo() const { return m_ccInfo; }
97 
99  int numberOfNodesInCC() const { return numberOfNodesInCC(m_currentCC); }
100 
102  int numberOfNodesInCC(int cc) const { return stopNode(cc) - startNode(cc); }
103 
105  node v(int i) const { return m_ccInfo.v(i); }
106 
108  edge e(int i) const { return m_ccInfo.e(i); }
109 
111  int startNode() const { return m_ccInfo.startNode(m_currentCC); }
112 
114  int startNode(int cc) const { return m_ccInfo.startNode(cc); }
115 
117  int stopNode() const { return m_ccInfo.stopNode(m_currentCC); }
118 
120  int stopNode(int cc) const { return m_ccInfo.stopNode(cc); }
121 
123  int startEdge() const { return m_ccInfo.startEdge(m_currentCC); }
124 
126  int stopEdge() const { return m_ccInfo.stopEdge(m_currentCC); }
127 
129 
135  void initCC(int cc);
136 
138 
142 
149  adjEntry expandAdj(node v) const { return m_expandAdj[v]; }
150 
151  adjEntry& expandAdj(node v) { return m_expandAdj[v]; }
152 
154 
157 
163  adjEntry boundaryAdj(node v) const { return m_boundaryAdj[v]; }
164 
169  adjEntry& boundaryAdj(node v) { return m_boundaryAdj[v]; }
170 
171  //edge on the clique boundary, adjSource
172  void setCliqueBoundary(edge e) { setEdgeTypeOf(e, edgeTypeOf(e) | cliquePattern()); }
173 
174  bool isCliqueBoundary(edge e) const {
175  return (edgeTypeOf(e) & cliquePattern()) == cliquePattern();
176  }
177 
179 
182 
188  Graph::NodeType typeOf(node v) const { return m_vType[v]; }
189 
194  Graph::NodeType& typeOf(node v) { return m_vType[v]; }
195 
204  inline bool isVertex(node v) const {
205  return typeOf(v) == Graph::NodeType::vertex || typeOf(v) == Graph::NodeType::associationClass;
206  }
207 
212  nodeType nodeTypeOf(node v) { return m_nodeTypes[v]; }
213 
220  }
221 
226  bool isCrossingType(node v) const {
228  != 0;
229  }
230 
232 
235 
241  EdgeType typeOf(edge e) const { return m_eType[e]; }
242 
247  EdgeType& typeOf(edge e) { return m_eType[e]; }
248 
253  edgeType& oriEdgeTypes(edge e) { return m_oriEdgeTypes[e]; }
254 
259  edgeType edgeTypeOf(edge e) const { return m_edgeTypes[e]; }
260 
265  edgeType& edgeTypes(edge e) { return m_edgeTypes[e]; }
266 
272  void setEdgeTypeOf(edge e, edgeType et) { m_edgeTypes[e] = et; }
273 
282  void setType(edge e, EdgeType et) {
283  m_eType[e] = et;
284  switch (et) {
286  m_edgeTypes[e] = static_cast<edgeType>(UMLEdgeTypeConstants::PrimAssociation);
287  break;
289  m_edgeTypes[e] = static_cast<edgeType>(UMLEdgeTypeConstants::PrimGeneralization);
290  break;
292  m_edgeTypes[e] = static_cast<edgeType>(UMLEdgeTypeConstants::PrimDependency);
293  break;
294  default:
295  break;
296  }
297  }
298 
299  // new edge types
300  // to set or check edge types use the pattern function in the private section
301 
302  // primary level types
303 
305  bool isGeneralization(edge e) const {
306  bool check = (((m_edgeTypes[e] & UMLEdgeTypePatterns::Primary)
309  return check;
310  }
311 
314  setPrimaryType(e, UMLEdgeTypeConstants::PrimGeneralization);
315 
316  //preliminary set old array too
317  m_eType[e] = EdgeType::generalization; //can be removed if edgetypes work properly
318  }
319 
321  bool isDependency(edge e) const {
322  bool check = (((m_edgeTypes[e] & UMLEdgeTypePatterns::Primary)
325  return check;
326  }
327 
329  void setDependency(edge e) {
330  setPrimaryType(e, UMLEdgeTypeConstants::PrimDependency);
331 
332  //preliminary set old array too
333  m_eType[e] = EdgeType::dependency; //can be removed if edgetypes work properly
334  }
335 
338  setPrimaryType(e, UMLEdgeTypeConstants::PrimAssociation);
339 
340  //preliminary set old array too
341  m_eType[e] = EdgeType::association; //can be removed if edgetypes work properly
342  }
343 
344  //second level types
345 
346  //in contrast to setsecondarytype: do not delete old value
347 
349  void setExpansion(edge e) {
350  m_edgeTypes[e] |= expansionPattern();
351 
352  //preliminary set old array too
353  m_expansionEdge[e] = 1; //can be removed if edgetypes work properly
354  }
355 
357  bool isExpansion(edge e) const {
358  return (m_edgeTypes[e] & expansionPattern()) == expansionPattern();
359  }
360 
361  //should add things like cluster and clique boundaries that need rectangle shape
362 
364  bool isBoundary(edge e) const { return isCliqueBoundary(e); }
365 
366  //tertiary types
367 
369  void setAssClass(edge e) { m_edgeTypes[e] |= assClassPattern(); }
370 
372  bool isAssClass(edge e) const {
373  return (m_edgeTypes[e] & assClassPattern()) == assClassPattern();
374  }
375 
376  //fourth level types
377 
379  void setBrother(edge e) { m_edgeTypes[e] |= brotherPattern(); }
380 
382  void setHalfBrother(edge e) { m_edgeTypes[e] |= halfBrotherPattern(); }
383 
385  bool isBrother(edge e) const {
386  return ((m_edgeTypes[e] & UMLEdgeTypePatterns::Fourth & brotherPattern())
389  }
390 
392  bool isHalfBrother(edge e) const {
393  return ((m_edgeTypes[e] & UMLEdgeTypePatterns::Fourth & halfBrotherPattern())
396  }
397 
398  //set generic types
399 
402  m_edgeTypes[e] &= et;
403  return m_edgeTypes[e];
404  }
405 
408  m_edgeTypes[e] |= et;
409  return m_edgeTypes[e];
410  }
411 
414  m_edgeTypes[e] &= 0xfffffff0;
415  m_edgeTypes[e] |= (UMLEdgeTypePatterns::Primary & et);
416  }
417 
420  setPrimaryType(e, static_cast<edgeType>(et));
421  }
422 
425  m_edgeTypes[e] &= 0xffffff0f;
427  }
428 
431  m_edgeTypes[e] &= (UMLEdgeTypePatterns::All & et);
432  return m_edgeTypes[e];
433  }
434 
437  m_edgeTypes[e] |= et;
438  return m_edgeTypes[e];
439  }
440 
442  void setUserType(edge e, edgeType et) {
443  OGDF_ASSERT(et < 147);
444  m_edgeTypes[e] |= (et << UMLEdgeTypeOffsets::User);
445  }
446 
448  bool isUserType(edge e, edgeType et) const {
449  OGDF_ASSERT(et < 147);
450  return (m_edgeTypes[e] & (et << UMLEdgeTypeOffsets::User))
451  == (et << UMLEdgeTypeOffsets::User);
452  }
453 
454  // old edge types
455 
456  //this is pure nonsense, cause we have uml-edgetype and m_etype, and should be able to
457  //use them with different types, but as long as they arent used correctly (switch instead of xor),
458  //use this function to return if e is expansionedge
459  //if it is implemented correctly later, delete the array and return m_etype == Graph::expand
460  //(the whole function then is obsolete, cause you can check it directly, but for convenience...)
461  //should use genexpand, nodeexpand, dissect instead of bool
462 
464  void setExpansionEdge(edge e, int expType) { m_expansionEdge[e] = expType; }
465 
467  bool isExpansionEdge(edge e) const { return m_expansionEdge[e] > 0; }
468 
470  int expansionType(edge e) const { return m_expansionEdge[e]; }
471 
472  //precondition normalized
474  bool isDegreeExpansionEdge(edge e) const {
475 #if 0
476  return (m_eType[e] == Graph::expand);
477 #else
478  return m_expansionEdge[e] == 2;
479 #endif
480  }
481 
483 
488 
490 
492  const NodeArray<double>& widthOrig() const {
493  OGDF_ASSERT(m_pGraphAttributes != nullptr);
494  return m_pGraphAttributes->width();
495  }
496 
498  double widthOrig(node v) const {
499  OGDF_ASSERT(m_pGraphAttributes != nullptr);
500  return m_pGraphAttributes->width(v);
501  }
502 
504  const NodeArray<double>& heightOrig() const {
505  OGDF_ASSERT(m_pGraphAttributes != nullptr);
506  return m_pGraphAttributes->height();
507  }
508 
510  double heightOrig(node v) const {
511  OGDF_ASSERT(m_pGraphAttributes != nullptr);
512  return m_pGraphAttributes->height(v);
513  }
514 
516  EdgeType typeOrig(edge e) const {
517  OGDF_ASSERT(m_pGraphAttributes != nullptr);
518  return m_pGraphAttributes->type(e);
519  }
520 
523  OGDF_ASSERT(m_pGraphAttributes != nullptr);
524  return *m_pGraphAttributes;
525  }
526 
528 
531 
533  // Expands nodes with degree > 4 and merge nodes for generalizations
534  virtual void expand(bool lowDegreeExpand = false);
535 
536  void expandLowDegreeVertices(OrthoRep& OR);
537 
538  void collapseVertices(const OrthoRep& OR, Layout& drawing);
539  void collapseVertices(const OrthoRep& OR, GridLayout& drawing);
540 
541  void removeCrossing(node v); //removes the crossing at node v
542 
543  //model a boundary around a star subgraph centered at center
544  //and keep external face information (outside the clique
545  void insertBoundary(node center, adjEntry& adjExternal);
546 
547 
549 
552 
555  virtual edge split(edge e) override;
556 
557  //returns node which was expanded using v
558  node expandedNode(node v) const { return m_expandedNode[v]; }
559 
560  void setExpandedNode(node v, node w) { m_expandedNode[v] = w; }
561 
563 
566 
573  node newCopy(node vOrig, Graph::NodeType vType);
574 
582  edge newCopy(node v, adjEntry adjAfter, edge eOrig);
583 
592  edge newCopy(node v, adjEntry adjAfter, edge eOrig, CombinatorialEmbedding& E);
593 
594 
596 
599 
602 
607  void insertEdgePath(edge eOrig, const SList<adjEntry>& crossedEdges);
608 
610  void insertEdgePathEmbedded(edge eOrig, CombinatorialEmbedding& E,
611  const SList<adjEntry>& crossedEdges);
612 
614 
618  GraphCopy::removeEdgePathEmbedded(E, eOrig, newFaces);
619  }
620 
622 
636  edge insertCrossing(edge& crossingEdge, edge crossedEdge, bool topDown);
637 
639 
643 
652  void removeDeg1Nodes(ArrayBuffer<Deg1RestoreInfo>& S, const NodeArray<bool>& mark);
653 
659  void restoreDeg1Nodes(ArrayBuffer<Deg1RestoreInfo>& S, List<node>& deg1s);
660 
662  void writeGML(const char* fileName, const OrthoRep& OR, const GridLayout& drawing);
663  void writeGML(std::ostream& os, const OrthoRep& OR, const GridLayout& drawing);
664 
665 protected:
668  //int m_numCC; //!< The number of components in the original graph.
669 
670  //Array<List<node> > m_nodesInCC; //!< The list of original nodes in each component.
671 
673 
674  // object types
675 
676  //set the type of eCopy according to the type of eOrig
677  //should be virtual if PlanRepUML gets its own
678  void setCopyType(edge eCopy, edge eOrig);
679 
680  //helper to cope with the edge types, shifting to the right place
683  }
684 
686  return static_cast<edgeType>(UMLEdgeTypeConstants::PrimAssociation);
687  }
688 
691  }
692 
695  }
696 
699  }
700 
703  }
704 
707  }
708 
710 
712 
715 
716  //clique handling: We save an adjEntry of the first edge of an inserted
717  //boundary around a clique at its center v
719 
720  //zusammenlegbare Typen
721  EdgeArray<int> m_expansionEdge; //1 genmerge, 2 degree (2 highdegree, 3 lowdegree)
723 
724  //m_edgeTypes stores semantic edge type information on several levels:
725  //primary type: generalization, association,...
726  //secondary type: merger,...
727  //tertiary type: vertical in hierarchy, inner, outer, ...
728  //fourth type: neighbour relation (brother, cousin in hierarchy)
729  //user types: user defined for local changes
730  EdgeArray<edgeType> m_edgeTypes; //store all type information
731 
732  //workaround fuer typsuche in insertedgepathembed
733  //speichere kopietyp auf originalen
734  //maybe it's enough to set gen/ass without extra array
736 
737  EdgeArray<edge> m_eAuxCopy; // auxiliary (GraphCopy::initByNodes())
738 };
739 
740 }
ogdf::ArrayBuffer
An array that keeps track of the number of inserted elements; also usable as an efficient stack.
Definition: Array.h:46
ogdf::PlanRep::isVertex
bool isVertex(node v) const
Returns true if the node represents a "real" object in the original graph.
Definition: PlanRep.h:204
ogdf::PlanRep::edgeTypeOf
edgeType edgeTypeOf(edge e) const
Returns the new type field of e.
Definition: PlanRep.h:259
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::PlanRep::halfBrotherPattern
edgeType halfBrotherPattern() const
Definition: PlanRep.h:701
ogdf::PlanRep::setSecondaryType
void setSecondaryType(edge e, edgeType et)
Sets secondary edge type of edge e to primary edge type in et.
Definition: PlanRep.h:424
ogdf::PlanRep::m_oriEdgeTypes
EdgeArray< edgeType > m_oriEdgeTypes
Definition: PlanRep.h:735
ogdf::Graph::NodeType::vertex
@ vertex
ogdf::PlanRep::assClassPattern
edgeType assClassPattern() const
Definition: PlanRep.h:693
ogdf::Graph::CCsInfo
Info structure for maintaining connected components.
Definition: Graph_d.h:1900
ogdf::PlanRep::isCliqueBoundary
bool isCliqueBoundary(edge e) const
Definition: PlanRep.h:174
ogdf::PlanRep::m_eType
EdgeArray< EdgeType > m_eType
Definition: PlanRep.h:722
ogdf::PlanRep
Planarized representations (of a connected component) of a graph.
Definition: PlanRep.h:57
Layout.h
Declaration of class Layout.
ogdf::PlanRep::setBrother
void setBrother(edge e)
Classifies edge e as connection between hierarchy neighbours (fourth level type).
Definition: PlanRep.h:379
OGDF_ASSERT
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
Definition: basic.h:54
ogdf::PlanRep::setExpandedNode
void setExpandedNode(node v, node w)
Definition: PlanRep.h:560
ogdf::UMLEdgeTypeOffsets::Tertiary
@ Tertiary
ogdf::PlanRep::m_boundaryAdj
NodeArray< adjEntry > m_boundaryAdj
Definition: PlanRep.h:718
ogdf::Graph::NodeType::associationClass
@ associationClass
ogdf::UMLEdgeTypeOffsets::Secondary
@ Secondary
ogdf::PlanRep::edgeTypeAND
edgeType edgeTypeAND(edge e, edgeType et)
Sets type of edge e to current type (bitwise) AND et.
Definition: PlanRep.h:401
ogdf::PlanRep::expansionPattern
edgeType expansionPattern() const
Definition: PlanRep.h:689
ogdf::PlanRep::stopNode
int stopNode(int cc) const
Returns the index of (one past) the last node in connected component cc.
Definition: PlanRep.h:120
ogdf::PlanRep::stopEdge
int stopEdge() const
Returns the index of (one past) the last edge in this connected component.
Definition: PlanRep.h:126
ogdf::PlanRep::Deg1RestoreInfo::Deg1RestoreInfo
Deg1RestoreInfo()
Definition: PlanRep.h:61
ogdf::PlanRep::typeOf
EdgeType & typeOf(edge e)
Returns a reference to the type of edge e.
Definition: PlanRep.h:247
ogdf::UMLNodeTypeConstants::TerCrossing
@ TerCrossing
ogdf::PlanRep::~PlanRep
virtual ~PlanRep()
Definition: PlanRep.h:78
ogdf::PlanRep::m_vType
NodeArray< NodeType > m_vType
Simple node types.
Definition: PlanRep.h:709
ogdf::PlanRep::isHalfBrother
bool isHalfBrother(edge e) const
Returns true if edge e is classified as half-brother.
Definition: PlanRep.h:392
ogdf::sync_plan::split
std::pair< node, node > split(Graph &G, sync_plan::PipeBij &bij, const EdgeArray< edge > *new_edges=nullptr, const EdgeArray< bool > *reverse_edges=nullptr, node src=nullptr, node tgt=nullptr)
ogdf::PlanRep::brotherPattern
edgeType brotherPattern() const
Definition: PlanRep.h:697
ogdf::SList
Singly linked lists (maintaining the length of the list).
Definition: SList.h:833
ogdf::nodeType
long long nodeType
Definition: NodeTypePatterns.h:44
ogdf::PlanRep::widthOrig
double widthOrig(node v) const
Returns the width of original node v.
Definition: PlanRep.h:498
ogdf::edgeType
long long edgeType
Definition: EdgeTypePatterns.h:42
ogdf::PlanRep::expandAdj
adjEntry expandAdj(node v) const
Returns the adjacency entry of a node of an expanded face.
Definition: PlanRep.h:149
ogdf::GraphCopy
Copies of graphs supporting edge splitting.
Definition: GraphCopy.h:384
ogdf::PlanRep::setType
void setType(edge e, EdgeType et)
Set both type values of e at once.
Definition: PlanRep.h:282
ogdf::PlanRep::Deg1RestoreInfo::Deg1RestoreInfo
Deg1RestoreInfo(edge eOrig, node deg1Orig, adjEntry adjRef)
Definition: PlanRep.h:63
ogdf::PlanRep::isExpansionEdge
bool isExpansionEdge(edge e) const
Returns if e is an expansion edge.
Definition: PlanRep.h:467
ogdf::PlanRep::m_expandAdj
NodeArray< adjEntry > m_expandAdj
Definition: PlanRep.h:714
ogdf::UMLEdgeTypeConstants::AssClass
@ AssClass
ogdf::UMLEdgeTypeConstants::PrimDependency
@ PrimDependency
ogdf::PlanRep::edgeTypePrimaryOR
edgeType edgeTypePrimaryOR(edge e, edgeType et)
Sets primary type of e to bitwise OR of et's primary value and old value.
Definition: PlanRep.h:436
ogdf::PlanRep::ccInfo
const CCsInfo & ccInfo() const
Returns the connected components info structure.
Definition: PlanRep.h:96
ogdf::PlanRep::setPrimaryType
void setPrimaryType(edge e, edgeType et)
Sets primary edge type of edge e to primary edge type in et (deletes old primary value).
Definition: PlanRep.h:413
ogdf::UMLNodeTypeOffsets::Tertiary
@ Tertiary
ogdf::UMLEdgeTypePatterns::Secondary
@ Secondary
ogdf::PlanRep::isExpansion
bool isExpansion(edge e) const
Returns true iff edge e is classified as expansion edge.
Definition: PlanRep.h:357
ogdf::PlanRep::Deg1RestoreInfo::m_adjRef
adjEntry m_adjRef
the reference adjacency entry for restoring the edge
Definition: PlanRep.h:68
ogdf::PlanRep::v
node v(int i) const
Returns node i in the list of all original nodes.
Definition: PlanRep.h:105
ogdf::PlanRep::numberOfNodesInCC
int numberOfNodesInCC(int cc) const
Returns the number of nodes in connected component cc.
Definition: PlanRep.h:102
ogdf::AdjElement
Class for adjacency list elements.
Definition: Graph_d.h:135
ogdf::PlanRep::m_pGraphAttributes
const GraphAttributes * m_pGraphAttributes
Pointer to graph attributes of original graph.
Definition: PlanRep.h:672
ogdf::PlanRep::cliquePattern
edgeType cliquePattern() const
Definition: PlanRep.h:705
ogdf::PlanRep::isDegreeExpansionEdge
bool isDegreeExpansionEdge(edge e) const
Returns if e is a degree expansion edge.
Definition: PlanRep.h:474
ogdf::UMLEdgeTypePatterns::Primary
@ Primary
ogdf::UMLEdgeTypeOffsets::Fourth
@ Fourth
ogdf::PlanRep::setAssClass
void setAssClass(edge e)
Classifies edge e as connection at an association class (tertiary type).
Definition: PlanRep.h:369
ogdf::PlanRep::m_edgeTypes
EdgeArray< edgeType > m_edgeTypes
Definition: PlanRep.h:730
ogdf::Layout
Stores a layout of a graph (coordinates of nodes, bend points of edges).
Definition: Layout.h:46
ogdf::PlanRep::stopNode
int stopNode() const
Returns the index of (one past) the last node in this connected component.
Definition: PlanRep.h:117
ogdf::PlanRep::setAssociation
void setAssociation(edge e)
Classifies edge e as association (primary type).
Definition: PlanRep.h:337
ogdf::PlanRep::isBrother
bool isBrother(edge e) const
Returns true if edge e is classified as brother.
Definition: PlanRep.h:385
ogdf::Graph::EdgeType::association
@ association
ogdf::OrthoRep
Orthogonal representation of an embedded graph.
Definition: OrthoRep.h:219
ogdf::PlanRep::numberOfCCs
int numberOfCCs() const
Returns the number of connected components in the original graph.
Definition: PlanRep.h:90
ogdf::PlanRep::m_ccInfo
Graph::CCsInfo m_ccInfo
Definition: PlanRep.h:667
ogdf::PlanRep::startEdge
int startEdge() const
Returns the index of the first edge in this connected component.
Definition: PlanRep.h:123
ogdf::PlanRep::boundaryAdj
adjEntry boundaryAdj(node v) const
Returns the adjacency entry of the first edge of the inserted boundary at a center node (original) of...
Definition: PlanRep.h:163
ogdf::PlanRep::typeOf
Graph::NodeType typeOf(node v) const
Returns the type of node v.
Definition: PlanRep.h:188
ogdf::PlanRep::expandAdj
adjEntry & expandAdj(node v)
Definition: PlanRep.h:151
ogdf::PlanRep::m_currentCC
int m_currentCC
The index of the current component.
Definition: PlanRep.h:666
ogdf::FaceSet< false >
ogdf::PlanRep::typeOf
EdgeType typeOf(edge e) const
Returns the type of edge e.
Definition: PlanRep.h:241
ogdf::Graph::EdgeType::generalization
@ generalization
ogdf::UMLEdgeTypePatterns::Fourth
@ Fourth
ogdf::UMLEdgeTypeConstants::SecClique
@ SecClique
ogdf::PlanRep::setEdgeTypeOf
void setEdgeTypeOf(edge e, edgeType et)
Sets the new type field of edge e to et.
Definition: PlanRep.h:272
ogdf::PlanRep::boundaryAdj
adjEntry & boundaryAdj(node v)
Returns a reference to the adjacency entry of the first edge of the inserted boundary at a center nod...
Definition: PlanRep.h:169
GraphCopy.h
Declaration of graph copy classes.
ogdf::List
Doubly linked lists (maintaining the length of the list).
Definition: List.h:42
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::PlanRep::e
edge e(int i) const
Returns edge i in the list of all original edges.
Definition: PlanRep.h:108
ogdf::PlanRep::expandedNode
node expandedNode(node v) const
Definition: PlanRep.h:558
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
ogdf::PlanRep::removeEdgePathEmbedded
void removeEdgePathEmbedded(CombinatorialEmbedding &E, edge eOrig, FaceSet< false > &newFaces)
Removes the complete edge path for edge eOrig while preserving the embedding.
Definition: PlanRep.h:617
ogdf::PlanRep::isDependency
bool isDependency(edge e) const
Returns true iff edge e is classified as dependency.
Definition: PlanRep.h:321
ogdf::UMLEdgeTypeConstants::HalfBrother
@ HalfBrother
ogdf::GraphCopy::removeEdgePathEmbedded
void removeEdgePathEmbedded(CombinatorialEmbedding &E, edge eOrig, FaceSet< false > &newFaces)
Removes the complete edge path for edge eOrig while preserving the embedding.
ogdf::PlanRep::oriEdgeTypes
edgeType & oriEdgeTypes(edge e)
Returns a reference to the type of original edge e.
Definition: PlanRep.h:253
ogdf::PlanRep::Deg1RestoreInfo::m_eOriginal
edge m_eOriginal
the original edge leading to the deg-1 node
Definition: PlanRep.h:66
ogdf::PlanRep::associationPattern
edgeType associationPattern() const
Definition: PlanRep.h:685
ogdf::UMLEdgeTypeConstants::PrimAssociation
@ PrimAssociation
ogdf::PlanRep::edgeTypeOR
edgeType edgeTypeOR(edge e, edgeType et)
Sets type of edge e to current type (bitwise) OR et.
Definition: PlanRep.h:407
ogdf::UMLEdgeTypeConstants::Brother
@ Brother
ogdf::Graph::NodeType
NodeType
The type of nodes.
Definition: Graph_d.h:904
ogdf::PlanRep::heightOrig
double heightOrig(node v) const
Returns the height of original node v.
Definition: PlanRep.h:510
ogdf::PlanRep::setCrossingType
void setCrossingType(node v)
Classifies node v as a crossing.
Definition: PlanRep.h:218
ogdf::PlanRep::heightOrig
const NodeArray< double > & heightOrig() const
Gives access to the node array of the heights of original nodes.
Definition: PlanRep.h:504
NodeTypePatterns.h
Declaration of node types and patterns for planar representations.
ogdf::PlanRep::isBoundary
bool isBoundary(edge e) const
Returns true iff edge e is a clique boundary.
Definition: PlanRep.h:364
ogdf::PlanRep::nodeTypeOf
nodeType nodeTypeOf(node v)
Returns the extended node type of v.
Definition: PlanRep.h:212
ogdf::PlanRep::setGeneralization
void setGeneralization(edge e)
Classifies edge e as generalization (primary type).
Definition: PlanRep.h:313
ogdf::PlanRep::isCrossingType
bool isCrossingType(node v) const
Returns true iff node v is classified as a crossing.
Definition: PlanRep.h:226
ogdf::PlanRep::edgeTypePrimaryAND
edgeType edgeTypePrimaryAND(edge e, edgeType et)
Sets primary type of e to bitwise AND of et's primary value and old value.
Definition: PlanRep.h:430
ogdf::UMLEdgeTypeConstants
UMLEdgeTypeConstants
Definition: EdgeTypePatterns.h:65
ogdf::PlanRep::numberOfNodesInCC
int numberOfNodesInCC() const
Returns the number of nodes in the current connected component.
Definition: PlanRep.h:99
ogdf::PlanRep::setCliqueBoundary
void setCliqueBoundary(edge e)
Definition: PlanRep.h:172
ogdf::PlanRep::startNode
int startNode(int cc) const
Returns the index of the first node in connected component cc.
Definition: PlanRep.h:114
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::PlanRep::getGraphAttributes
const GraphAttributes & getGraphAttributes() const
Returns the graph attributes of the original graph (the pointer may be 0).
Definition: PlanRep.h:522
ogdf::PlanRep::setPrimaryType
void setPrimaryType(edge e, UMLEdgeTypeConstants et)
Sets primary edge type of edge e to primary edge type in et (deletes old primary value).
Definition: PlanRep.h:419
ogdf::PlanRep::currentCC
int currentCC() const
Returns the index of the current connected component (-1 if not yet initialized).
Definition: PlanRep.h:93
ogdf::CombinatorialEmbedding
Combinatorial embeddings of planar graphs with modification functionality.
Definition: CombinatorialEmbedding.h:397
ogdf::EdgeElement
Class for the representation of edges.
Definition: Graph_d.h:356
ogdf::PlanRep::setExpansionEdge
void setExpansionEdge(edge e, int expType)
Sets the expansion edge type of e to expType.
Definition: PlanRep.h:464
ogdf::PlanRep::expansionType
int expansionType(edge e) const
Returns the expansion edge type of e.
Definition: PlanRep.h:470
ogdf::PlanRep::setExpansion
void setExpansion(edge e)
Classifies edge e as expansion edge (secondary type).
Definition: PlanRep.h:349
ogdf::GridLayout
Representation of a graph's grid layout.
Definition: GridLayout.h:46
ogdf::PlanRep::isGeneralization
bool isGeneralization(edge e) const
Returns true iff edge e is classified as generalization.
Definition: PlanRep.h:305
ogdf::PlanRep::edgeTypes
edgeType & edgeTypes(edge e)
Returns a reference to the new type field of e.
Definition: PlanRep.h:265
ogdf::UMLEdgeTypeConstants::SecExpansion
@ SecExpansion
ogdf::PlanRep::setDependency
void setDependency(edge e)
Classifies edge e as dependency (primary type).
Definition: PlanRep.h:329
ogdf::PlanRep::widthOrig
const NodeArray< double > & widthOrig() const
Gives access to the node array of the widths of original nodes.
Definition: PlanRep.h:492
ogdf::PlanRep::Deg1RestoreInfo
Information for restoring degree-1 nodes.
Definition: PlanRep.h:60
ogdf::PlanRep::m_expandedNode
NodeArray< node > m_expandedNode
For all expansion nodes, save expanded node.
Definition: PlanRep.h:713
ogdf::Graph::EdgeType::dependency
@ dependency
ogdf::UMLEdgeTypeConstants::PrimGeneralization
@ PrimGeneralization
ogdf::UMLEdgeTypeOffsets::User
@ User
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::PlanRep::typeOf
Graph::NodeType & typeOf(node v)
Returns a reference to the type of node v.
Definition: PlanRep.h:194
GridLayout.h
Declaration of class GridLayout.
ogdf::PlanRep::setHalfBrother
void setHalfBrother(edge e)
Classifies edge e as connection between ... (fourth level type).
Definition: PlanRep.h:382
ogdf::PlanRep::Deg1RestoreInfo::m_deg1Original
node m_deg1Original
the original deg-1 node
Definition: PlanRep.h:67
ogdf::PlanRep::setUserType
void setUserType(edge e, edgeType et)
Sets user defined type locally.
Definition: PlanRep.h:442
ogdf::PlanRep::typeOrig
EdgeType typeOrig(edge e) const
Returns the type of original edge e.
Definition: PlanRep.h:516
ogdf::PlanRep::isAssClass
bool isAssClass(edge e) const
Returns true iff edge e is classified as connection at an association class.
Definition: PlanRep.h:372
ogdf::UMLEdgeTypePatterns::All
@ All
ogdf::PlanRep::isUserType
bool isUserType(edge e, edgeType et) const
Returns user defined type.
Definition: PlanRep.h:448
EdgeTypePatterns.h
Edge types and patterns for planar representations.
ogdf::PlanRep::startNode
int startNode() const
Returns the index of the first node in this connected component.
Definition: PlanRep.h:111
ogdf::PlanRep::generalizationPattern
edgeType generalizationPattern() const
Definition: PlanRep.h:681
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709
ogdf::PlanRep::m_nodeTypes
NodeArray< nodeType > m_nodeTypes
Node types for extended semantic information.
Definition: PlanRep.h:711
ogdf::PlanRep::m_expansionEdge
EdgeArray< int > m_expansionEdge
Definition: PlanRep.h:721
ogdf::PlanRep::m_eAuxCopy
EdgeArray< edge > m_eAuxCopy
Definition: PlanRep.h:737