Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
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
42#include <ogdf/basic/Layout.h>
45
46namespace ogdf {
47
48class OrthoRep;
49
51
58public:
61 Deg1RestoreInfo() : m_eOriginal(nullptr), m_deg1Original(nullptr), m_adjRef(nullptr) { }
62
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
88
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
143
149 adjEntry expandAdj(node v) const { return m_expandAdj[v]; }
150
151 adjEntry& expandAdj(node v) { return m_expandAdj[v]; }
152
154
158
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
183
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
219 m_nodeTypes[v] |= UMLNodeTypeConstants::TerCrossing << UMLNodeTypeOffsets::Tertiary;
220 }
221
226 bool isCrossingType(node v) const {
227 return (m_nodeTypes[v] & (UMLNodeTypeConstants::TerCrossing << UMLNodeTypeOffsets::Tertiary))
228 != 0;
229 }
230
232
236
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
283 m_eType[e] = et;
284 switch (et) {
285 case Graph::EdgeType::association:
286 m_edgeTypes[e] = static_cast<edgeType>(UMLEdgeTypeConstants::PrimAssociation);
287 break;
288 case Graph::EdgeType::generalization:
289 m_edgeTypes[e] = static_cast<edgeType>(UMLEdgeTypeConstants::PrimGeneralization);
290 break;
291 case Graph::EdgeType::dependency:
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)
307 & UMLEdgeTypeConstants::PrimGeneralization)
308 == UMLEdgeTypeConstants::PrimGeneralization);
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)
323 & UMLEdgeTypeConstants::PrimDependency)
324 == UMLEdgeTypeConstants::PrimDependency);
325 return check;
326 }
327
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
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())
387 >> UMLEdgeTypeOffsets::Fourth)
388 == UMLEdgeTypeConstants::Brother;
389 }
390
392 bool isHalfBrother(edge e) const {
393 return ((m_edgeTypes[e] & UMLEdgeTypePatterns::Fourth & halfBrotherPattern())
394 >> UMLEdgeTypeOffsets::Fourth)
395 == UMLEdgeTypeConstants::HalfBrother;
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;
426 m_edgeTypes[e] |= (UMLEdgeTypePatterns::Secondary & (et << UMLEdgeTypeOffsets::Secondary));
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
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
475#if 0
476 return (m_eType[e] == Graph::expand);
477#else
478 return m_expansionEdge[e] == 2;
479#endif
480 }
481
483
489
490
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
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
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
532
533 // Expands nodes with degree > 4 and merge nodes for generalizations
534 virtual void expand(bool lowDegreeExpand = false);
535
537
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
546
547
549
553
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
567
574
583
593
594
596
600
602
608
612
614
618 GraphCopy::removeEdgePathEmbedded(E, eOrig, newFaces);
619 }
620
622
637
639
644
653
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
665protected:
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
679
680 //helper to cope with the edge types, shifting to the right place
682 return static_cast<edgeType>(UMLEdgeTypeConstants::PrimGeneralization);
683 }
684
686 return static_cast<edgeType>(UMLEdgeTypeConstants::PrimAssociation);
687 }
688
690 return UMLEdgeTypeConstants::SecExpansion << UMLEdgeTypeOffsets::Secondary;
691 }
692
694 return UMLEdgeTypeConstants::AssClass << UMLEdgeTypeOffsets::Tertiary;
695 }
696
698 return UMLEdgeTypeConstants::Brother << UMLEdgeTypeOffsets::Fourth;
699 }
700
702 return UMLEdgeTypeConstants::HalfBrother << UMLEdgeTypeOffsets::Fourth;
703 }
704
706 return UMLEdgeTypeConstants::SecClique << UMLEdgeTypeOffsets::Secondary;
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}
Edge types and patterns for planar representations.
Declaration of graph copy classes.
Declaration of class GridLayout.
Declaration of class Layout.
Declaration of node types and patterns for planar representations.
Class for adjacency list elements.
Definition Graph_d.h:79
An array that keeps track of the number of inserted elements; also usable as an efficient stack.
Definition ArrayBuffer.h:56
Combinatorial embeddings of planar graphs with modification functionality.
Dynamic arrays indexed with edges.
Definition EdgeArray.h:125
Class for the representation of edges.
Definition Graph_d.h:300
Face sets.
Definition FaceSet.h:53
Info structure for maintaining connected components.
Definition Graph_d.h:1339
Stores additional attributes of a graph (like layout information).
Copies of graphs supporting edge splitting.
Definition GraphCopy.h:254
Data type for general directed graphs (adjacency list representation).
Definition Graph_d.h:521
NodeType
The type of nodes.
Definition Graph_d.h:569
EdgeType
The type of edges (only used in derived classes).
Definition Graph_d.h:566
Representation of a graph's grid layout.
Definition GridLayout.h:46
Stores a layout of a graph (coordinates of nodes, bend points of edges).
Definition Layout.h:46
Doubly linked lists (maintaining the length of the list).
Definition List.h:1435
Dynamic arrays indexed with nodes.
Definition NodeArray.h:125
Class for the representation of nodes.
Definition Graph_d.h:177
Orthogonal representation of an embedded graph.
Definition OrthoRep.h:219
Planarized representations (of a connected component) of a graph.
Definition PlanRep.h:57
const CCsInfo & ccInfo() const
Returns the connected components info structure.
Definition PlanRep.h:96
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
EdgeArray< edgeType > m_edgeTypes
Definition PlanRep.h:730
EdgeType typeOrig(edge e) const
Returns the type of original edge e.
Definition PlanRep.h:516
void setExpansionEdge(edge e, int expType)
Sets the expansion edge type of e to expType.
Definition PlanRep.h:464
const NodeArray< double > & heightOrig() const
Gives access to the node array of the heights of original nodes.
Definition PlanRep.h:504
node newCopy(node vOrig, Graph::NodeType vType)
Creates a new node with node type vType in the planarized representation.
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
edge e(int i) const
Returns edge i in the list of all original edges.
Definition PlanRep.h:108
edgeType edgeTypeOf(edge e) const
Returns the new type field of e.
Definition PlanRep.h:259
void setDependency(edge e)
Classifies edge e as dependency (primary type).
Definition PlanRep.h:329
int m_currentCC
The index of the current component.
Definition PlanRep.h:666
void initCC(int cc)
Initializes the planarized representation for connected component cc.
void insertEdgePath(edge eOrig, const SList< adjEntry > &crossedEdges)
Re-inserts edge eOrig by "crossing" the edges in crossedEdges.
EdgeArray< edge > m_eAuxCopy
Definition PlanRep.h:737
int stopNode() const
Returns the index of (one past) the last node in this connected component.
Definition PlanRep.h:117
EdgeArray< int > m_expansionEdge
Definition PlanRep.h:721
edgeType halfBrotherPattern() const
Definition PlanRep.h:701
edgeType generalizationPattern() const
Definition PlanRep.h:681
EdgeType typeOf(edge e) const
Returns the type of edge e.
Definition PlanRep.h:241
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
node v(int i) const
Returns node i in the list of all original nodes.
Definition PlanRep.h:105
Graph::NodeType & typeOf(node v)
Returns a reference to the type of node v.
Definition PlanRep.h:194
int startNode(int cc) const
Returns the index of the first node in connected component cc.
Definition PlanRep.h:114
void writeGML(const char *fileName, const OrthoRep &OR, const GridLayout &drawing)
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
NodeArray< NodeType > m_vType
Simple node types.
Definition PlanRep.h:709
edgeType associationPattern() const
Definition PlanRep.h:685
edgeType & edgeTypes(edge e)
Returns a reference to the new type field of e.
Definition PlanRep.h:265
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
bool isExpansionEdge(edge e) const
Returns if e is an expansion edge.
Definition PlanRep.h:467
edge insertCrossing(edge &crossingEdge, edge crossedEdge, bool topDown)
Inserts crossings between two copy edges.
edgeType cliquePattern() const
Definition PlanRep.h:705
int startEdge() const
Returns the index of the first edge in this connected component.
Definition PlanRep.h:123
EdgeArray< EdgeType > m_eType
Definition PlanRep.h:722
bool isHalfBrother(edge e) const
Returns true if edge e is classified as half-brother.
Definition PlanRep.h:392
void collapseVertices(const OrthoRep &OR, Layout &drawing)
Graph::NodeType typeOf(node v) const
Returns the type of node v.
Definition PlanRep.h:188
NodeArray< nodeType > m_nodeTypes
Node types for extended semantic information.
Definition PlanRep.h:711
void removeCrossing(node v)
const NodeArray< double > & widthOrig() const
Gives access to the node array of the widths of original nodes.
Definition PlanRep.h:492
void writeGML(std::ostream &os, const OrthoRep &OR, const GridLayout &drawing)
double heightOrig(node v) const
Returns the height of original node v.
Definition PlanRep.h:510
bool isCliqueBoundary(edge e) const
Definition PlanRep.h:174
void insertEdgePathEmbedded(edge eOrig, CombinatorialEmbedding &E, const SList< adjEntry > &crossedEdges)
Same as insertEdgePath, but for embedded graphs.
int numberOfCCs() const
Returns the number of connected components in the original graph.
Definition PlanRep.h:90
edgeType expansionPattern() const
Definition PlanRep.h:689
adjEntry expandAdj(node v) const
Returns the adjacency entry of a node of an expanded face.
Definition PlanRep.h:149
bool isBoundary(edge e) const
Returns true iff edge e is a clique boundary.
Definition PlanRep.h:364
void expandLowDegreeVertices(OrthoRep &OR)
void collapseVertices(const OrthoRep &OR, GridLayout &drawing)
int stopEdge() const
Returns the index of (one past) the last edge in this connected component.
Definition PlanRep.h:126
void removeDeg1Nodes(ArrayBuffer< Deg1RestoreInfo > &S, const NodeArray< bool > &mark)
Removes all marked degree-1 nodes from the graph copy and stores restore information in S.
void setExpansion(edge e)
Classifies edge e as expansion edge (secondary type).
Definition PlanRep.h:349
int startNode() const
Returns the index of the first node in this connected component.
Definition PlanRep.h:111
edgeType edgeTypeAND(edge e, edgeType et)
Sets type of edge e to current type (bitwise) AND et.
Definition PlanRep.h:401
const GraphAttributes * m_pGraphAttributes
Pointer to graph attributes of original graph.
Definition PlanRep.h:672
NodeArray< adjEntry > m_boundaryAdj
Definition PlanRep.h:718
NodeArray< node > m_expandedNode
For all expansion nodes, save expanded node.
Definition PlanRep.h:713
PlanRep(const Graph &G)
Creates a planarized representation of graph G.
virtual edge split(edge e) override
Splits edge e.
bool isDependency(edge e) const
Returns true iff edge e is classified as dependency.
Definition PlanRep.h:321
edge newCopy(node v, adjEntry adjAfter, edge eOrig)
Creates a new edge in the planarized representation.
int currentCC() const
Returns the index of the current connected component (-1 if not yet initialized).
Definition PlanRep.h:93
node expandedNode(node v) const
Definition PlanRep.h:558
void setType(edge e, EdgeType et)
Set both type values of e at once.
Definition PlanRep.h:282
void restoreDeg1Nodes(ArrayBuffer< Deg1RestoreInfo > &S, List< node > &deg1s)
Restores degree-1 nodes previously removed with removeDeg1Nodes().
bool isExpansion(edge e) const
Returns true iff edge e is classified as expansion edge.
Definition PlanRep.h:357
void setAssociation(edge e)
Classifies edge e as association (primary type).
Definition PlanRep.h:337
virtual ~PlanRep()
Definition PlanRep.h:78
void setSecondaryType(edge e, edgeType et)
Sets secondary edge type of edge e to primary edge type in et.
Definition PlanRep.h:424
bool isVertex(node v) const
Returns true if the node represents a "real" object in the original graph.
Definition PlanRep.h:204
int numberOfNodesInCC(int cc) const
Returns the number of nodes in connected component cc.
Definition PlanRep.h:102
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
void setGeneralization(edge e)
Classifies edge e as generalization (primary type).
Definition PlanRep.h:313
void setUserType(edge e, edgeType et)
Sets user defined type locally.
Definition PlanRep.h:442
void setAssClass(edge e)
Classifies edge e as connection at an association class (tertiary type).
Definition PlanRep.h:369
void setHalfBrother(edge e)
Classifies edge e as connection between ... (fourth level type).
Definition PlanRep.h:382
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
double widthOrig(node v) const
Returns the width of original node v.
Definition PlanRep.h:498
PlanRep(const GraphAttributes &AG)
Creates a planarized representation of graph AG.
void insertBoundary(node center, adjEntry &adjExternal)
bool isUserType(edge e, edgeType et) const
Returns user defined type.
Definition PlanRep.h:448
EdgeArray< edgeType > m_oriEdgeTypes
Definition PlanRep.h:735
const GraphAttributes & getGraphAttributes() const
Returns the graph attributes of the original graph (the pointer may be 0).
Definition PlanRep.h:522
void setCliqueBoundary(edge e)
Definition PlanRep.h:172
NodeArray< adjEntry > m_expandAdj
Definition PlanRep.h:714
Graph::CCsInfo m_ccInfo
Definition PlanRep.h:667
bool isBrother(edge e) const
Returns true if edge e is classified as brother.
Definition PlanRep.h:385
void setCopyType(edge eCopy, edge eOrig)
edgeType edgeTypeOR(edge e, edgeType et)
Sets type of edge e to current type (bitwise) OR et.
Definition PlanRep.h:407
EdgeType & typeOf(edge e)
Returns a reference to the type of edge e.
Definition PlanRep.h:247
bool isCrossingType(node v) const
Returns true iff node v is classified as a crossing.
Definition PlanRep.h:226
nodeType nodeTypeOf(node v)
Returns the extended node type of v.
Definition PlanRep.h:212
adjEntry & expandAdj(node v)
Definition PlanRep.h:151
edgeType assClassPattern() const
Definition PlanRep.h:693
int stopNode(int cc) const
Returns the index of (one past) the last node in connected component cc.
Definition PlanRep.h:120
bool isAssClass(edge e) const
Returns true iff edge e is classified as connection at an association class.
Definition PlanRep.h:372
void setBrother(edge e)
Classifies edge e as connection between hierarchy neighbours (fourth level type).
Definition PlanRep.h:379
bool isDegreeExpansionEdge(edge e) const
Returns if e is a degree expansion edge.
Definition PlanRep.h:474
edgeType & oriEdgeTypes(edge e)
Returns a reference to the type of original edge e.
Definition PlanRep.h:253
void setEdgeTypeOf(edge e, edgeType et)
Sets the new type field of edge e to et.
Definition PlanRep.h:272
bool isGeneralization(edge e) const
Returns true iff edge e is classified as generalization.
Definition PlanRep.h:305
virtual void expand(bool lowDegreeExpand=false)
int expansionType(edge e) const
Returns the expansion edge type of e.
Definition PlanRep.h:470
edgeType brotherPattern() const
Definition PlanRep.h:697
edge newCopy(node v, adjEntry adjAfter, edge eOrig, CombinatorialEmbedding &E)
Creates a new edge in the planarized representation while updating the embedding E.
void setCrossingType(node v)
Classifies node v as a crossing.
Definition PlanRep.h:218
int numberOfNodesInCC() const
Returns the number of nodes in the current connected component.
Definition PlanRep.h:99
void setExpandedNode(node v, node w)
Definition PlanRep.h:560
Singly linked lists (maintaining the length of the list).
Definition SList.h:833
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition config.h:101
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
Definition basic.h:41
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.
long long nodeType
long long edgeType
Information for restoring degree-1 nodes.
Definition PlanRep.h:60
adjEntry m_adjRef
the reference adjacency entry for restoring the edge
Definition PlanRep.h:68
Deg1RestoreInfo(edge eOrig, node deg1Orig, adjEntry adjRef)
Definition PlanRep.h:63
node m_deg1Original
the original deg-1 node
Definition PlanRep.h:67
edge m_eOriginal
the original edge leading to the deg-1 node
Definition PlanRep.h:66