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
41#include <ogdf/basic/Graph.h>
44#include <ogdf/basic/SList.h>
45#include <ogdf/basic/basic.h>
48
49#include <iosfwd>
50
51namespace ogdf {
52
53class CombinatorialEmbedding;
54class GridLayout;
55class Layout;
56class OrthoRep;
57class FaceSet;
58template<class E>
59class List;
60
62
69public:
72 Deg1RestoreInfo() : m_eOriginal(nullptr), m_deg1Original(nullptr), m_adjRef(nullptr) { }
73
74 Deg1RestoreInfo(edge eOrig, node deg1Orig, adjEntry adjRef)
75 : m_eOriginal(eOrig), m_deg1Original(deg1Orig), m_adjRef(adjRef) { }
76
80 };
81
84 explicit PlanRep(const Graph& G);
85
87 explicit PlanRep(const GraphAttributes& AG);
88
89 virtual ~PlanRep() { }
90
92
99
101 int numberOfCCs() const { return m_ccInfo.numberOfCCs(); }
102
104 int currentCC() const { return m_currentCC; }
105
107 const CCsInfo& ccInfo() const { return m_ccInfo; }
108
110 int numberOfNodesInCC() const { return numberOfNodesInCC(m_currentCC); }
111
113 int numberOfNodesInCC(int cc) const { return stopNode(cc) - startNode(cc); }
114
116 node v(int i) const { return m_ccInfo.v(i); }
117
119 edge e(int i) const { return m_ccInfo.e(i); }
120
122 int startNode() const { return m_ccInfo.startNode(m_currentCC); }
123
125 int startNode(int cc) const { return m_ccInfo.startNode(cc); }
126
128 int stopNode() const { return m_ccInfo.stopNode(m_currentCC); }
129
131 int stopNode(int cc) const { return m_ccInfo.stopNode(cc); }
132
134 int startEdge() const { return m_ccInfo.startEdge(m_currentCC); }
135
137 int stopEdge() const { return m_ccInfo.stopEdge(m_currentCC); }
138
140
146 void initCC(int cc);
147
149
154
160 adjEntry expandAdj(node v) const { return m_expandAdj[v]; }
161
162 adjEntry& expandAdj(node v) { return m_expandAdj[v]; }
163
165
169
174 adjEntry boundaryAdj(node v) const { return m_boundaryAdj[v]; }
175
180 adjEntry& boundaryAdj(node v) { return m_boundaryAdj[v]; }
181
182 //edge on the clique boundary, adjSource
183 void setCliqueBoundary(edge e) { setEdgeTypeOf(e, edgeTypeOf(e) | cliquePattern()); }
184
185 bool isCliqueBoundary(edge e) const {
186 return (edgeTypeOf(e) & cliquePattern()) == cliquePattern();
187 }
188
190
194
199 Graph::NodeType typeOf(node v) const { return m_vType[v]; }
200
205 Graph::NodeType& typeOf(node v) { return m_vType[v]; }
206
215 inline bool isVertex(node v) const {
216 return typeOf(v) == Graph::NodeType::vertex || typeOf(v) == Graph::NodeType::associationClass;
217 }
218
223 nodeType nodeTypeOf(node v) { return m_nodeTypes[v]; }
224
230 m_nodeTypes[v] |= UMLNodeTypeConstants::TerCrossing << UMLNodeTypeOffsets::Tertiary;
231 }
232
237 bool isCrossingType(node v) const {
238 return (m_nodeTypes[v] & (UMLNodeTypeConstants::TerCrossing << UMLNodeTypeOffsets::Tertiary))
239 != 0;
240 }
241
243
247
252 EdgeType typeOf(edge e) const { return m_eType[e]; }
253
258 EdgeType& typeOf(edge e) { return m_eType[e]; }
259
264 edgeType& oriEdgeTypes(edge e) { return m_oriEdgeTypes[e]; }
265
270 edgeType edgeTypeOf(edge e) const { return m_edgeTypes[e]; }
271
276 edgeType& edgeTypes(edge e) { return m_edgeTypes[e]; }
277
283 void setEdgeTypeOf(edge e, edgeType et) { m_edgeTypes[e] = et; }
284
293 void setType(edge e, EdgeType et) {
294 m_eType[e] = et;
295 switch (et) {
296 case Graph::EdgeType::association:
297 m_edgeTypes[e] = static_cast<edgeType>(UMLEdgeTypeConstants::PrimAssociation);
298 break;
299 case Graph::EdgeType::generalization:
300 m_edgeTypes[e] = static_cast<edgeType>(UMLEdgeTypeConstants::PrimGeneralization);
301 break;
302 case Graph::EdgeType::dependency:
303 m_edgeTypes[e] = static_cast<edgeType>(UMLEdgeTypeConstants::PrimDependency);
304 break;
305 default:
306 break;
307 }
308 }
309
310 // new edge types
311 // to set or check edge types use the pattern function in the private section
312
313 // primary level types
314
316 bool isGeneralization(edge e) const {
317 bool check = (((m_edgeTypes[e] & UMLEdgeTypePatterns::Primary)
318 & UMLEdgeTypeConstants::PrimGeneralization)
319 == UMLEdgeTypeConstants::PrimGeneralization);
320 return check;
321 }
322
325 setPrimaryType(e, UMLEdgeTypeConstants::PrimGeneralization);
326
327 //preliminary set old array too
328 m_eType[e] = EdgeType::generalization; //can be removed if edgetypes work properly
329 }
330
332 bool isDependency(edge e) const {
333 bool check = (((m_edgeTypes[e] & UMLEdgeTypePatterns::Primary)
334 & UMLEdgeTypeConstants::PrimDependency)
335 == UMLEdgeTypeConstants::PrimDependency);
336 return check;
337 }
338
341 setPrimaryType(e, UMLEdgeTypeConstants::PrimDependency);
342
343 //preliminary set old array too
344 m_eType[e] = EdgeType::dependency; //can be removed if edgetypes work properly
345 }
346
349 setPrimaryType(e, UMLEdgeTypeConstants::PrimAssociation);
350
351 //preliminary set old array too
352 m_eType[e] = EdgeType::association; //can be removed if edgetypes work properly
353 }
354
355 //second level types
356
357 //in contrast to setsecondarytype: do not delete old value
358
361 m_edgeTypes[e] |= expansionPattern();
362
363 //preliminary set old array too
364 m_expansionEdge[e] = 1; //can be removed if edgetypes work properly
365 }
366
368 bool isExpansion(edge e) const {
369 return (m_edgeTypes[e] & expansionPattern()) == expansionPattern();
370 }
371
372 //should add things like cluster and clique boundaries that need rectangle shape
373
375 bool isBoundary(edge e) const { return isCliqueBoundary(e); }
376
377 //tertiary types
378
380 void setAssClass(edge e) { m_edgeTypes[e] |= assClassPattern(); }
381
383 bool isAssClass(edge e) const {
384 return (m_edgeTypes[e] & assClassPattern()) == assClassPattern();
385 }
386
387 //fourth level types
388
390 void setBrother(edge e) { m_edgeTypes[e] |= brotherPattern(); }
391
393 void setHalfBrother(edge e) { m_edgeTypes[e] |= halfBrotherPattern(); }
394
396 bool isBrother(edge e) const {
397 return ((m_edgeTypes[e] & UMLEdgeTypePatterns::Fourth & brotherPattern())
398 >> UMLEdgeTypeOffsets::Fourth)
399 == UMLEdgeTypeConstants::Brother;
400 }
401
403 bool isHalfBrother(edge e) const {
404 return ((m_edgeTypes[e] & UMLEdgeTypePatterns::Fourth & halfBrotherPattern())
405 >> UMLEdgeTypeOffsets::Fourth)
406 == UMLEdgeTypeConstants::HalfBrother;
407 }
408
409 //set generic types
410
413 m_edgeTypes[e] &= et;
414 return m_edgeTypes[e];
415 }
416
419 m_edgeTypes[e] |= et;
420 return m_edgeTypes[e];
421 }
422
425 m_edgeTypes[e] &= 0xfffffff0;
426 m_edgeTypes[e] |= (UMLEdgeTypePatterns::Primary & et);
427 }
428
431 setPrimaryType(e, static_cast<edgeType>(et));
432 }
433
436 m_edgeTypes[e] &= 0xffffff0f;
437 m_edgeTypes[e] |= (UMLEdgeTypePatterns::Secondary & (et << UMLEdgeTypeOffsets::Secondary));
438 }
439
442 m_edgeTypes[e] &= (UMLEdgeTypePatterns::All & et);
443 return m_edgeTypes[e];
444 }
445
448 m_edgeTypes[e] |= et;
449 return m_edgeTypes[e];
450 }
451
454 OGDF_ASSERT(et < 147);
455 m_edgeTypes[e] |= (et << UMLEdgeTypeOffsets::User);
456 }
457
459 bool isUserType(edge e, edgeType et) const {
460 OGDF_ASSERT(et < 147);
461 return (m_edgeTypes[e] & (et << UMLEdgeTypeOffsets::User))
462 == (et << UMLEdgeTypeOffsets::User);
463 }
464
465 // old edge types
466
467 //this is pure nonsense, cause we have uml-edgetype and m_etype, and should be able to
468 //use them with different types, but as long as they arent used correctly (switch instead of xor),
469 //use this function to return if e is expansionedge
470 //if it is implemented correctly later, delete the array and return m_etype == Graph::expand
471 //(the whole function then is obsolete, cause you can check it directly, but for convenience...)
472 //should use genexpand, nodeexpand, dissect instead of bool
473
475 void setExpansionEdge(edge e, int expType) { m_expansionEdge[e] = expType; }
476
478 bool isExpansionEdge(edge e) const { return m_expansionEdge[e] > 0; }
479
481 int expansionType(edge e) const { return m_expansionEdge[e]; }
482
483 //precondition normalized
486#if 0
487 return (m_eType[e] == Graph::expand);
488#else
489 return m_expansionEdge[e] == 2;
490#endif
491 }
492
494
500
501
504 OGDF_ASSERT(m_pGraphAttributes != nullptr);
505 return m_pGraphAttributes->width();
506 }
507
509 double widthOrig(node v) const {
510 OGDF_ASSERT(m_pGraphAttributes != nullptr);
511 return m_pGraphAttributes->width(v);
512 }
513
516 OGDF_ASSERT(m_pGraphAttributes != nullptr);
517 return m_pGraphAttributes->height();
518 }
519
521 double heightOrig(node v) const {
522 OGDF_ASSERT(m_pGraphAttributes != nullptr);
523 return m_pGraphAttributes->height(v);
524 }
525
528 OGDF_ASSERT(m_pGraphAttributes != nullptr);
529 return m_pGraphAttributes->type(e);
530 }
531
534 OGDF_ASSERT(m_pGraphAttributes != nullptr);
535 return *m_pGraphAttributes;
536 }
537
539
543
544 // Expands nodes with degree > 4 and merge nodes for generalizations
545 virtual void expand(bool lowDegreeExpand = false);
546
548
549 void collapseVertices(const OrthoRep& OR, Layout& drawing);
550 void collapseVertices(const OrthoRep& OR, GridLayout& drawing);
551
552 void removeCrossing(node v); //removes the crossing at node v
553
554 //model a boundary around a star subgraph centered at center
555 //and keep external face information (outside the clique
556 void insertBoundary(node center, adjEntry& adjExternal);
557
558
560
564
566 virtual edge split(edge e) override;
567
568 //returns node which was expanded using v
569 node expandedNode(node v) const { return m_expandedNode[v]; }
570
571 void setExpandedNode(node v, node w) { m_expandedNode[v] = w; }
572
574
578
585
593 edge newCopy(node v, adjEntry adjAfter, edge eOrig);
594
604
605
607
611
613
618 void insertEdgePath(edge eOrig, const SList<adjEntry>& crossedEdges);
619
622 const SList<adjEntry>& crossedEdges);
623
625
629 GraphCopy::removeEdgePathEmbedded(E, eOrig, newFaces);
630 }
631
633
647 edge insertCrossing(edge& crossingEdge, edge crossedEdge, bool topDown);
648
650
655
664
671
673 void writeGML(const char* fileName, const OrthoRep& OR, const GridLayout& drawing);
674 void writeGML(std::ostream& os, const OrthoRep& OR, const GridLayout& drawing);
675
676protected:
679 //int m_numCC; //!< The number of components in the original graph.
680
681 //Array<List<node> > m_nodesInCC; //!< The list of original nodes in each component.
682
684
685 // object types
686
687 //set the type of eCopy according to the type of eOrig
688 //should be virtual if PlanRepUML gets its own
689 void setCopyType(edge eCopy, edge eOrig);
690
691 //helper to cope with the edge types, shifting to the right place
693 return static_cast<edgeType>(UMLEdgeTypeConstants::PrimGeneralization);
694 }
695
697 return static_cast<edgeType>(UMLEdgeTypeConstants::PrimAssociation);
698 }
699
701 return UMLEdgeTypeConstants::SecExpansion << UMLEdgeTypeOffsets::Secondary;
702 }
703
705 return UMLEdgeTypeConstants::AssClass << UMLEdgeTypeOffsets::Tertiary;
706 }
707
709 return UMLEdgeTypeConstants::Brother << UMLEdgeTypeOffsets::Fourth;
710 }
711
713 return UMLEdgeTypeConstants::HalfBrother << UMLEdgeTypeOffsets::Fourth;
714 }
715
717 return UMLEdgeTypeConstants::SecClique << UMLEdgeTypeOffsets::Secondary;
718 }
719
721
723
726
727 //clique handling: We save an adjEntry of the first edge of an inserted
728 //boundary around a clique at its center v
730
731 //zusammenlegbare Typen
732 EdgeArray<int> m_expansionEdge; //1 genmerge, 2 degree (2 highdegree, 3 lowdegree)
734
735 //m_edgeTypes stores semantic edge type information on several levels:
736 //primary type: generalization, association,...
737 //secondary type: merger,...
738 //tertiary type: vertical in hierarchy, inner, outer, ...
739 //fourth type: neighbour relation (brother, cousin in hierarchy)
740 //user types: user defined for local changes
741 EdgeArray<edgeType> m_edgeTypes; //store all type information
742
743 //workaround fuer typsuche in insertedgepathembed
744 //speichere kopietyp auf originalen
745 //maybe it's enough to set gen/ass without extra array
747
748 EdgeArray<edge> m_eAuxCopy; // auxiliary (GraphCopy::initByNodes())
749};
750
751}
Declaration and implementation of ArrayBuffer class.
Edge types and patterns for planar representations.
Includes declaration of graph class.
Declaration of class GraphAttributes which extends a Graph by additional attributes.
Declaration of graph copy classes.
Declaration of node types and patterns for planar representations.
Declaration of singly linked lists and iterators.
Basic declarations, included by all source files.
Class for adjacency list elements.
Definition Graph_d.h:143
An array that keeps track of the number of inserted elements; also usable as an efficient stack.
Definition ArrayBuffer.h:64
Combinatorial embeddings of planar graphs with modification functionality.
Class for the representation of edges.
Definition Graph_d.h:364
Face sets.
Definition FaceSet.h:51
Info structure for maintaining connected components.
Definition Graph_d.h:1896
Stores additional attributes of a graph (like layout information).
Copies of graphs supporting edge splitting.
Definition GraphCopy.h:390
Data type for general directed graphs (adjacency list representation).
Definition Graph_d.h:866
NodeType
The type of nodes.
Definition Graph_d.h:909
EdgeType
The type of edges (only used in derived classes).
Definition Graph_d.h:906
Representation of a graph's grid layout.
Definition GridLayout.h:47
Stores a layout of a graph (coordinates of nodes, bend points of edges).
Definition Layout.h:49
Doubly linked lists (maintaining the length of the list).
Definition List.h:1451
Class for the representation of nodes.
Definition Graph_d.h:241
Orthogonal representation of an embedded graph.
Definition OrthoRep.h:225
Planarized representations (of a connected component) of a graph.
Definition PlanRep.h:68
const CCsInfo & ccInfo() const
Returns the connected components info structure.
Definition PlanRep.h:107
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:441
EdgeArray< edgeType > m_edgeTypes
Definition PlanRep.h:741
EdgeType typeOrig(edge e) const
Returns the type of original edge e.
Definition PlanRep.h:527
void setExpansionEdge(edge e, int expType)
Sets the expansion edge type of e to expType.
Definition PlanRep.h:475
const NodeArray< double > & heightOrig() const
Gives access to the node array of the heights of original nodes.
Definition PlanRep.h:515
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:447
edge e(int i) const
Returns edge i in the list of all original edges.
Definition PlanRep.h:119
edgeType edgeTypeOf(edge e) const
Returns the new type field of e.
Definition PlanRep.h:270
void setDependency(edge e)
Classifies edge e as dependency (primary type).
Definition PlanRep.h:340
int m_currentCC
The index of the current component.
Definition PlanRep.h:677
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.
void removeEdgePathEmbedded(CombinatorialEmbedding &E, edge eOrig, FaceSet &newFaces)
Removes the complete edge path for edge eOrig while preserving the embedding.
Definition PlanRep.h:628
EdgeArray< edge > m_eAuxCopy
Definition PlanRep.h:748
int stopNode() const
Returns the index of (one past) the last node in this connected component.
Definition PlanRep.h:128
EdgeArray< int > m_expansionEdge
Definition PlanRep.h:732
edgeType halfBrotherPattern() const
Definition PlanRep.h:712
edgeType generalizationPattern() const
Definition PlanRep.h:692
EdgeType typeOf(edge e) const
Returns the type of edge e.
Definition PlanRep.h:252
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:180
node v(int i) const
Returns node i in the list of all original nodes.
Definition PlanRep.h:116
Graph::NodeType & typeOf(node v)
Returns a reference to the type of node v.
Definition PlanRep.h:205
int startNode(int cc) const
Returns the index of the first node in connected component cc.
Definition PlanRep.h:125
void writeGML(const char *fileName, const OrthoRep &OR, const GridLayout &drawing)
NodeArray< NodeType > m_vType
Simple node types.
Definition PlanRep.h:720
edgeType associationPattern() const
Definition PlanRep.h:696
edgeType & edgeTypes(edge e)
Returns a reference to the new type field of e.
Definition PlanRep.h:276
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:424
bool isExpansionEdge(edge e) const
Returns if e is an expansion edge.
Definition PlanRep.h:478
edge insertCrossing(edge &crossingEdge, edge crossedEdge, bool topDown)
Inserts crossings between two copy edges.
edgeType cliquePattern() const
Definition PlanRep.h:716
int startEdge() const
Returns the index of the first edge in this connected component.
Definition PlanRep.h:134
EdgeArray< EdgeType > m_eType
Definition PlanRep.h:733
bool isHalfBrother(edge e) const
Returns true if edge e is classified as half-brother.
Definition PlanRep.h:403
void collapseVertices(const OrthoRep &OR, Layout &drawing)
Graph::NodeType typeOf(node v) const
Returns the type of node v.
Definition PlanRep.h:199
NodeArray< nodeType > m_nodeTypes
Node types for extended semantic information.
Definition PlanRep.h:722
void removeCrossing(node v)
const NodeArray< double > & widthOrig() const
Gives access to the node array of the widths of original nodes.
Definition PlanRep.h:503
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:521
bool isCliqueBoundary(edge e) const
Definition PlanRep.h:185
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:101
edgeType expansionPattern() const
Definition PlanRep.h:700
adjEntry expandAdj(node v) const
Returns the adjacency entry of a node of an expanded face.
Definition PlanRep.h:160
bool isBoundary(edge e) const
Returns true iff edge e is a clique boundary.
Definition PlanRep.h:375
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:137
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:360
int startNode() const
Returns the index of the first node in this connected component.
Definition PlanRep.h:122
edgeType edgeTypeAND(edge e, edgeType et)
Sets type of edge e to current type (bitwise) AND et.
Definition PlanRep.h:412
const GraphAttributes * m_pGraphAttributes
Pointer to graph attributes of original graph.
Definition PlanRep.h:683
NodeArray< adjEntry > m_boundaryAdj
Definition PlanRep.h:729
NodeArray< node > m_expandedNode
For all expansion nodes, save expanded node.
Definition PlanRep.h:724
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:332
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:104
node expandedNode(node v) const
Definition PlanRep.h:569
void setType(edge e, EdgeType et)
Set both type values of e at once.
Definition PlanRep.h:293
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:368
void setAssociation(edge e)
Classifies edge e as association (primary type).
Definition PlanRep.h:348
virtual ~PlanRep()
Definition PlanRep.h:89
void setSecondaryType(edge e, edgeType et)
Sets secondary edge type of edge e to primary edge type in et.
Definition PlanRep.h:435
bool isVertex(node v) const
Returns true if the node represents a "real" object in the original graph.
Definition PlanRep.h:215
int numberOfNodesInCC(int cc) const
Returns the number of nodes in connected component cc.
Definition PlanRep.h:113
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:430
void setGeneralization(edge e)
Classifies edge e as generalization (primary type).
Definition PlanRep.h:324
void setUserType(edge e, edgeType et)
Sets user defined type locally.
Definition PlanRep.h:453
void setAssClass(edge e)
Classifies edge e as connection at an association class (tertiary type).
Definition PlanRep.h:380
void setHalfBrother(edge e)
Classifies edge e as connection between ... (fourth level type).
Definition PlanRep.h:393
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:174
double widthOrig(node v) const
Returns the width of original node v.
Definition PlanRep.h:509
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:459
EdgeArray< edgeType > m_oriEdgeTypes
Definition PlanRep.h:746
const GraphAttributes & getGraphAttributes() const
Returns the graph attributes of the original graph (the pointer may be 0).
Definition PlanRep.h:533
void setCliqueBoundary(edge e)
Definition PlanRep.h:183
NodeArray< adjEntry > m_expandAdj
Definition PlanRep.h:725
Graph::CCsInfo m_ccInfo
Definition PlanRep.h:678
bool isBrother(edge e) const
Returns true if edge e is classified as brother.
Definition PlanRep.h:396
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:418
EdgeType & typeOf(edge e)
Returns a reference to the type of edge e.
Definition PlanRep.h:258
bool isCrossingType(node v) const
Returns true iff node v is classified as a crossing.
Definition PlanRep.h:237
nodeType nodeTypeOf(node v)
Returns the extended node type of v.
Definition PlanRep.h:223
adjEntry & expandAdj(node v)
Definition PlanRep.h:162
edgeType assClassPattern() const
Definition PlanRep.h:704
int stopNode(int cc) const
Returns the index of (one past) the last node in connected component cc.
Definition PlanRep.h:131
bool isAssClass(edge e) const
Returns true iff edge e is classified as connection at an association class.
Definition PlanRep.h:383
void setBrother(edge e)
Classifies edge e as connection between hierarchy neighbours (fourth level type).
Definition PlanRep.h:390
bool isDegreeExpansionEdge(edge e) const
Returns if e is a degree expansion edge.
Definition PlanRep.h:485
edgeType & oriEdgeTypes(edge e)
Returns a reference to the type of original edge e.
Definition PlanRep.h:264
void setEdgeTypeOf(edge e, edgeType et)
Sets the new type field of edge e to et.
Definition PlanRep.h:283
bool isGeneralization(edge e) const
Returns true iff edge e is classified as generalization.
Definition PlanRep.h:316
virtual void expand(bool lowDegreeExpand=false)
int expansionType(edge e) const
Returns the expansion edge type of e.
Definition PlanRep.h:481
edgeType brotherPattern() const
Definition PlanRep.h:708
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:229
int numberOfNodesInCC() const
Returns the number of nodes in the current connected component.
Definition PlanRep.h:110
void setExpandedNode(node v, node w)
Definition PlanRep.h:571
Singly linked lists (maintaining the length of the list).
Definition SList.h:845
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition Graph_d.h:717
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition Graph_d.h:659
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
Definition config.h:117
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
Definition basic.h:52
The namespace for all OGDF objects.
long long nodeType
long long edgeType
Information for restoring degree-1 nodes.
Definition PlanRep.h:71
adjEntry m_adjRef
the reference adjacency entry for restoring the edge
Definition PlanRep.h:79
Deg1RestoreInfo(edge eOrig, node deg1Orig, adjEntry adjRef)
Definition PlanRep.h:74
node m_deg1Original
the original deg-1 node
Definition PlanRep.h:78
edge m_eOriginal
the original edge leading to the deg-1 node
Definition PlanRep.h:77