#include <PlanRep.h>

Public Member Functions | |
| PlanRep (const Graph &G) | |
| PlanRep (const GraphAttributes &AG) | |
| Creates a planarized representation of graph AG. | |
| virtual | ~PlanRep () |
Processing connected components | |
Planarized representations provide a mechanism for always representing a copy of a single component of the original graph. | |
| int | numberOfCCs () const |
| Returns the number of connected components in the original graph. | |
| int | currentCC () const |
| Returns the index of the current connected component (-1 if not yet initialized). | |
| const List< node > & | nodesInCC (int i) const |
| Returns the list of (original) nodes in connected component i. | |
| const List< node > & | nodesInCC () const |
| Returns the list of (original) nodes in the current connected component. | |
| void | initCC (int i) |
| Initializes the planarized representation for connected component i. | |
Node expansion | |
| adjEntry | expandAdj (node v) const |
| Returns the adjacency entry of a node of an expanded face. | |
| adjEntry & | expandAdj (node v) |
Clique boundary | |
| adjEntry | boundaryAdj (node v) const |
| adjEntry & | boundaryAdj (node v) |
| void | setCliqueBoundary (edge e) |
| bool | isCliqueBoundary (edge e) |
Node types | |
| Graph::NodeType | typeOf (node v) const |
| Returns the type of node v. | |
| Graph::NodeType & | typeOf (node v) |
| Returns a reference to the type of node v. | |
| bool | isVertex (node v) |
| Returns true if the node represents a "real" object in the original graph. | |
| nodeType | nodeTypeOf (node v) |
| Returns the extended node type of v. | |
| void | setCrossingType (node v) |
| Classifies node v as a crossing. | |
| bool | isCrossingType (node v) |
| Returns true iff node v is classified as a crossing. | |
Edge types | |
| EdgeType | typeOf (edge e) const |
| Returns the type of edge e. | |
| EdgeType & | typeOf (edge e) |
| Returns a reference to the type of edge e. | |
| edgeType & | oriEdgeTypes (edge e) |
| Returns a reference to the type of original edge e. | |
| edgeType | edgeTypeOf (edge e) |
| Returns the new type field of e. | |
| edgeType & | edgeTypes (edge e) |
| Returns a reference to the new type field of e. | |
| void | setEdgeTypeOf (edge e, edgeType et) |
| Sets the new type field of edge e to et. | |
| void | setType (edge e, EdgeType et) |
| Set both type values of e at once. | |
| bool | isGeneralization (edge e) |
| Returns true iff edge e is classified as generalization. | |
| void | setGeneralization (edge e) |
| Classifies edge e as generalization (primary type). | |
| bool | isDependency (edge e) |
| Returns true iff edge e is classified as dependency. | |
| void | setDependency (edge e) |
| Classifies edge e as dependency (primary type). | |
| void | setAssociation (edge e) |
| Classifies edge e as association (primary type). | |
| void | setExpansion (edge e) |
| Classifies edge e as expansion edge (secondary type). | |
| bool | isExpansion (edge e) |
| Returns true iff edge e is classified as expansion edge. | |
| bool | isBoundary (edge e) |
| Returns true iff edge e is a clique boundary. | |
| void | setAssClass (edge e) |
| Classifies edge e as connection at an association class (tertiary type). | |
| bool | isAssClass (edge e) |
| Returns true iff edge e is classified as connection at an association class. | |
| void | setBrother (edge e) |
| Classifies edge e as connection between hierarchy neighbours (fourth level type). | |
| void | setHalfBrother (edge e) |
| Classifies edge e as connection between ... (fourth level type). | |
| bool | isBrother (edge e) |
| Returns true if edge e is classified as brother. | |
| bool | isHalfBrother (edge e) |
| Returns true if edge e is classified as half-brother. | |
| edgeType | edgeTypeAND (edge e, edgeType et) |
| edgeType | edgeTypeOR (edge e, edgeType et) |
| void | setPrimaryType (edge e, edgeType et) |
| void | setSecondaryType (edge e, edgeType et) |
| edgeType | edgeTypePrimaryAND (edge e, edgeType et) |
| edgeType | edgeTypePrimaryOR (edge e, edgeType et) |
| void | setUserType (edge e, edgeType et) |
| bool | isUserType (edge e, edgeType et) |
| void | setExpansionEdge (edge e, int expType) |
| bool | isExpansionEdge (edge e) const |
| int | expansionType (edge e) const |
| bool | isDegreeExpansionEdge (edge e) const |
Access to attributes in original graph | |
These methods provide easy access to attributes of original nodes and edges. | |
| const NodeArray< double > & | widthOrig () const |
| Gives access to the node array of the widths of original nodes. | |
| double | widthOrig (node v) const |
| Returns the width of original node v. | |
| const NodeArray< double > & | heightOrig () const |
| Gives access to the node array of the heights of original nodes. | |
| double | heightOrig (node v) const |
| Returns the height of original node v. | |
| EdgeType | typeOrig (edge e) const |
| Returns the type of original edge e. | |
| const GraphAttributes & | getGraphAttributes () const |
| Returns the graph attributes of the original graph (the pointer may be 0). | |
Structural alterations | |
| void | expand (bool lowDegreeExpand=false) |
| void | expandLowDegreeVertices (OrthoRep &OR) |
| void | collapseVertices (const OrthoRep &OR, Layout &drawing) |
| void | removeCrossing (node v) |
| void | insertBoundary (node center, adjEntry &adjExternal) |
Extension of methods defined by GraphCopys | |
| virtual edge | split (edge e) |
| Splits edge e. | |
| node | expandedNode (node v) const |
| void | setExpandedNode (node v, node w) |
Creation of new nodes and edges | |
| node | newCopy (node vOrig, Graph::NodeType vType) |
| Creates a new node with node type vType in the planarized representation. | |
| edge | newCopy (node v, adjEntry adjAfter, edge eOrig) |
| Creates a new edge in the planarized representation. | |
| edge | newCopy (node v, adjEntry adjAfter, edge eOrig, CombinatorialEmbedding &E) |
| Creates a new edge in the planarized representation while updating the embedding E. | |
Crossings | |
| bool | embed () |
| void | removePseudoCrossings () |
| void | insertEdgePath (edge eOrig, const SList< adjEntry > &crossedEdges) |
| Re-inserts edge eOrig by "crossing" the edges in crossedEdges. | |
| void | insertEdgePathEmbedded (edge eOrig, CombinatorialEmbedding &E, const SList< adjEntry > &crossedEdges) |
| Re-inserts edge eOrig by "crossing" the edges in crossedEdges in embedding E. | |
| void | removeEdgePathEmbedded (CombinatorialEmbedding &E, edge eOrig, FaceSetPure &newFaces) |
| edge | insertCrossing (edge &crossingEdge, const edge crossedEdge, bool topDown) |
| Inserts crossings between already existing edges (used in TopologyModule). | |
Degree-1 nodes | |
These methods realize a mechanism for temporarily removing degree-1 nodes. | |
| void | removeDeg1Nodes (Stack< Deg1RestoreInfo > &S, const NodeArray< bool > &mark) |
| Removes all marked degree-1 nodes from the graph copy and stores restore information in S. | |
| void | restoreDeg1Nodes (Stack< Deg1RestoreInfo > &S, List< node > °1s) |
| Restores degree-1 nodes previously removed with removeDeg1Nodes(). | |
Protected Member Functions | |
| void | setCopyType (edge eCopy, edge eOrig) |
| edgeType | generalizationPattern () |
| edgeType | associationPattern () |
| edgeType | expansionPattern () |
| edgeType | assClassPattern () |
| edgeType | brotherPattern () |
| edgeType | halfBrotherPattern () |
| edgeType | cliquePattern () |
| void | removeUnnecessaryCrossing (adjEntry adjA1, adjEntry adjA2, adjEntry adjB1, adjEntry adjB2) |
Protected Attributes | |
| int | m_currentCC |
| The index of the current component. | |
| int | m_numCC |
| The number of components in the original graph. | |
| Array< List< node > > | m_nodesInCC |
| The list of original nodes in each component. | |
| const GraphAttributes * | m_pGraphAttributes |
| Pointer to graph attributes of original graph. | |
| NodeArray< NodeType > | m_vType |
| Simple node types. | |
| NodeArray< nodeType > | m_nodeTypes |
| Node types for extended semantic information. | |
| NodeArray< node > | m_expandedNode |
| For all expansion nodes, save expanded node. | |
| NodeArray< adjEntry > | m_expandAdj |
| NodeArray< adjEntry > | m_boundaryAdj |
| EdgeArray< int > | m_expansionEdge |
| EdgeArray< EdgeType > | m_eType |
| EdgeArray< edgeType > | m_edgeTypes |
| EdgeArray< edgeType > | m_oriEdgeTypes |
| EdgeArray< edge > | m_eAuxCopy |
Classes | |
| struct | Deg1RestoreInfo |
| Information for restoring degree-1 nodes. More... | |
Maintains types of edges (generalization, association) and nodes, and the connected components of the graph.
Definition at line 81 of file PlanRep.h.
| ogdf::PlanRep::PlanRep | ( | const Graph & | G | ) |
| ogdf::PlanRep::PlanRep | ( | const GraphAttributes & | AG | ) |
Creates a planarized representation of graph AG.
| int ogdf::PlanRep::numberOfCCs | ( | ) | const [inline] |
| int ogdf::PlanRep::currentCC | ( | ) | const [inline] |
| void ogdf::PlanRep::initCC | ( | int | i | ) |
Initializes the planarized representation for connected component i.
This initialization is always required. After performing this initialization, the planarized representation represents a copy of the i-th connected component of the original graph, where connected components are numbered 0,1,2,...
Reimplemented in ogdf::ClusterPlanRep, and ogdf::PlanRepUML.
| Graph::NodeType ogdf::PlanRep::typeOf | ( | node | v | ) | const [inline] |
| Graph::NodeType& ogdf::PlanRep::typeOf | ( | node | v | ) | [inline] |
| bool ogdf::PlanRep::isVertex | ( | node | v | ) | [inline] |
Returns true if the node represents a "real" object in the original graph.
| void ogdf::PlanRep::setCrossingType | ( | node | v | ) | [inline] |
| bool ogdf::PlanRep::isCrossingType | ( | node | v | ) | [inline] |
| bool ogdf::PlanRep::isGeneralization | ( | edge | e | ) | [inline] |
| void ogdf::PlanRep::setGeneralization | ( | edge | e | ) | [inline] |
| bool ogdf::PlanRep::isDependency | ( | edge | e | ) | [inline] |
| void ogdf::PlanRep::setDependency | ( | edge | e | ) | [inline] |
| void ogdf::PlanRep::setAssociation | ( | edge | e | ) | [inline] |
| void ogdf::PlanRep::setExpansion | ( | edge | e | ) | [inline] |
| bool ogdf::PlanRep::isExpansion | ( | edge | e | ) | [inline] |
| bool ogdf::PlanRep::isBoundary | ( | edge | e | ) | [inline] |
| void ogdf::PlanRep::setAssClass | ( | edge | e | ) | [inline] |
| bool ogdf::PlanRep::isAssClass | ( | edge | e | ) | [inline] |
| void ogdf::PlanRep::setBrother | ( | edge | e | ) | [inline] |
| void ogdf::PlanRep::setHalfBrother | ( | edge | e | ) | [inline] |
| bool ogdf::PlanRep::isBrother | ( | edge | e | ) | [inline] |
| bool ogdf::PlanRep::isHalfBrother | ( | edge | e | ) | [inline] |
| void ogdf::PlanRep::setExpansionEdge | ( | edge | e, | |
| int | expType | |||
| ) | [inline] |
| bool ogdf::PlanRep::isExpansionEdge | ( | edge | e | ) | const [inline] |
| int ogdf::PlanRep::expansionType | ( | edge | e | ) | const [inline] |
| bool ogdf::PlanRep::isDegreeExpansionEdge | ( | edge | e | ) | const [inline] |
| const NodeArray<double>& ogdf::PlanRep::widthOrig | ( | ) | const [inline] |
| double ogdf::PlanRep::widthOrig | ( | node | v | ) | const [inline] |
| const NodeArray<double>& ogdf::PlanRep::heightOrig | ( | ) | const [inline] |
| double ogdf::PlanRep::heightOrig | ( | node | v | ) | const [inline] |
| const GraphAttributes& ogdf::PlanRep::getGraphAttributes | ( | ) | const [inline] |
| void ogdf::PlanRep::expand | ( | bool | lowDegreeExpand = false |
) |
Reimplemented in ogdf::ClusterPlanRep, and ogdf::PlanRepUML.
| void ogdf::PlanRep::expandLowDegreeVertices | ( | OrthoRep & | OR | ) |
Reimplemented in ogdf::ClusterPlanRep.
Reimplemented in ogdf::PlanRepUML.
| void ogdf::PlanRep::removeCrossing | ( | node | v | ) |
Splits edge e.
Reimplemented from ogdf::GraphCopy.
Reimplemented in ogdf::ClusterPlanRep, ogdf::PlanRepInc, and ogdf::PlanRepUML.
| node ogdf::PlanRep::newCopy | ( | node | vOrig, | |
| Graph::NodeType | vType | |||
| ) |
Creates a new node with node type vType in the planarized representation.
| vOrig | becomes the original node of the new node. | |
| vType | becomes the type of the new node. |
Creates a new edge in the planarized representation.
| v | is the source node of the new edge. | |
| adjAfter | is the adjacency entry at the target node, after which the new edge is inserted. | |
| eOrig | becomes the original edge of the new edge. |
| edge ogdf::PlanRep::newCopy | ( | node | v, | |
| adjEntry | adjAfter, | |||
| edge | eOrig, | |||
| CombinatorialEmbedding & | E | |||
| ) |
Creates a new edge in the planarized representation while updating the embedding E.
| v | is the source node of the new edge. | |
| adjAfter | is the adjacency entry at the target node, after which the new edge is inserted. | |
| eOrig | becomes the original edge of the new edge. | |
| E | is an embedding of the planarized representation. |
| bool ogdf::PlanRep::embed | ( | ) |
| void ogdf::PlanRep::removePseudoCrossings | ( | ) |
Re-inserts edge eOrig by "crossing" the edges in crossedEdges.
Let v and w be the copies of the source and target nodes of eOrig. Each edge in crossedEdges is split creating a sequence
of new nodes, and additional edges are inserted creating a path
.
| eOrig | is an edge in the original graph and becomes the original edge of all edges in the path . | |
| crossedEdges | are edges in the graph copy. |
Reimplemented from ogdf::GraphCopy.
| void ogdf::PlanRep::insertEdgePathEmbedded | ( | edge | eOrig, | |
| CombinatorialEmbedding & | E, | |||
| const SList< adjEntry > & | crossedEdges | |||
| ) |
Re-inserts edge eOrig by "crossing" the edges in crossedEdges in embedding E.
Let v and w be the copies of the source and target nodes of eOrig, and let
be the sequence of edges corresponding to the adjacency entries in crossedEdges. The first edge needs to be incident to v and the last to w; the edges
are each split creating a sequence
of new nodes, and additional edges are inserted creating a path
.
The following figure illustrates, which adjacency entries need to be in the list crossedEdges. It inserts an edge connecting v and w by passing through the faces
; in this case, the list crossedEdges must contain the adjacency entries
(in this order).
| eOrig | is an edge in the original graph and becomes the original edge of all edges in the path . | |
| E | is an embedding of the graph copy. | |
| crossedEdges | are a list of adjacency entries in the graph copy. |
Reimplemented from ogdf::GraphCopy.
Reimplemented in ogdf::ClusterPlanRep.
| void ogdf::PlanRep::removeEdgePathEmbedded | ( | CombinatorialEmbedding & | E, | |
| edge | eOrig, | |||
| FaceSetPure & | newFaces | |||
| ) | [inline] |
Removes the complete edge path for edge eOrig while preserving the embedding.
| E | is an embedding of the graph copy. | |
| eOrig | is an edge in the original graph. | |
| newFaces | is assigned the set of new faces resulting from joining faces when removing edges. |
Reimplemented from ogdf::GraphCopy.
Inserts crossings between already existing edges (used in TopologyModule).
Replaces crossingEdge by first crossingEdge part and returns second.
| topDown | describes the following: if the crossingEdge is running horizontally from left to right, is the crossedEdge direction top->down? |
Reimplemented from ogdf::GraphCopy.
| void ogdf::PlanRep::removeDeg1Nodes | ( | Stack< Deg1RestoreInfo > & | S, | |
| const NodeArray< bool > & | mark | |||
| ) |
Removes all marked degree-1 nodes from the graph copy and stores restore information in S.
| S | returns the restore information required by restoreDeg1Nodes(). | |
| mark | defines which nodes are marked for removal; all nodes v with mark[v]=true are removed. |
| void ogdf::PlanRep::restoreDeg1Nodes | ( | Stack< Deg1RestoreInfo > & | S, | |
| List< node > & | deg1s | |||
| ) |
Restores degree-1 nodes previously removed with removeDeg1Nodes().
| S | contains the restore information. | |
| deg1s | returns the list of newly created nodes in the copy. |
| edgeType ogdf::PlanRep::generalizationPattern | ( | ) | [inline, protected] |
| edgeType ogdf::PlanRep::associationPattern | ( | ) | [inline, protected] |
| edgeType ogdf::PlanRep::expansionPattern | ( | ) | [inline, protected] |
| edgeType ogdf::PlanRep::assClassPattern | ( | ) | [inline, protected] |
| edgeType ogdf::PlanRep::brotherPattern | ( | ) | [inline, protected] |
| edgeType ogdf::PlanRep::halfBrotherPattern | ( | ) | [inline, protected] |
| edgeType ogdf::PlanRep::cliquePattern | ( | ) | [inline, protected] |
| void ogdf::PlanRep::removeUnnecessaryCrossing | ( | adjEntry | adjA1, | |
| adjEntry | adjA2, | |||
| adjEntry | adjB1, | |||
| adjEntry | adjB2 | |||
| ) | [protected] |
int ogdf::PlanRep::m_currentCC [protected] |
int ogdf::PlanRep::m_numCC [protected] |
Array<List<node> > ogdf::PlanRep::m_nodesInCC [protected] |
const GraphAttributes* ogdf::PlanRep::m_pGraphAttributes [protected] |
NodeArray<NodeType> ogdf::PlanRep::m_vType [protected] |
NodeArray<nodeType> ogdf::PlanRep::m_nodeTypes [protected] |
NodeArray<node> ogdf::PlanRep::m_expandedNode [protected] |
NodeArray<adjEntry> ogdf::PlanRep::m_expandAdj [protected] |
NodeArray<adjEntry> ogdf::PlanRep::m_boundaryAdj [protected] |
EdgeArray<int> ogdf::PlanRep::m_expansionEdge [protected] |
EdgeArray<EdgeType> ogdf::PlanRep::m_eType [protected] |
EdgeArray<edgeType> ogdf::PlanRep::m_edgeTypes [protected] |
EdgeArray<edgeType> ogdf::PlanRep::m_oriEdgeTypes [protected] |
EdgeArray<edge> ogdf::PlanRep::m_eAuxCopy [protected] |