Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

ogdf::CompactionConstraintGraphBase Class Reference

Class implementing template-parameter-independent behaviour of ogdf::CompactionConstraintGraph. More...

#include <ogdf/orthogonal/CompactionConstraintGraph.h>

+ Inheritance diagram for ogdf::CompactionConstraintGraphBase:

Public Member Functions

void align (bool b)
 Triggers alignment (=>some special edge handling to support al.) More...
 
bool alignmentArc (edge e) const
 Returns if arc is important for alignment. These are the arcs representing node to gen. merger edges. More...
 
edge pathToOriginal (node v)
 
Edge property getters
bool verticalGen (edge e) const
 Returns true if e is vertical edge in PlanRepUML hierarchy. More...
 
bool verticalArc (edge e) const
 Returns true if e is basic arc of vertical edge in PlanRepUML hierarchy. More...
 
- Public Member Functions inherited from ogdf::CommonCompactionConstraintGraphBase
edge basicArc (edge e) const
 Returns constraint arc representing input edge e in constraint graph. More...
 
void computeTopologicalSegmentNum (NodeArray< int > &topNum)
 Computes topological numbering on the segments of the constraint graph. More...
 
void embed ()
 Embeds constraint graph such that all sources and sinks lie in a common face. More...
 
bool extraNode (node v) const
 Returns node status. More...
 
void removeRedundantVisibArcs (SListPure< Tuple2< node, node >> &visibArcs)
 Removes "arcs" from visibArcs which we already have in the constraint graph (as basic arcs) More...
 
ConstraintEdgeType typeOf (edge e) const
 Returns type of edge e. More...
 
const GraphgetGraph () const
 Returns underlying graph. More...
 
GraphgetGraph ()
 
const OrthoRepgetOrthoRep () const
 Returns underlying OrthoRep. More...
 
const PlanRepgetPlanRep () const
 
const SListPure< node > & nodesIn (node v) const
 Returns list of nodes contained in segment v. More...
 
node pathNodeOf (node v) const
 Returns the segment (path node in constraint graph) containing v. More...
 
int cost (edge e) const
 Returns cost of edge e. More...
 
node extraRep (node v) const
 Returns extraNode existing anchor representant. More...
 
bool onBorder (edge e) const
 Returns true if edge lies on cage border. More...
 
bool fixOnBorder (edge e) const
 Returns true if edge is subject to length fixation if length < sep. More...
 
void writeGML (const char *fileName) const
 Writes GML output (for debugging) More...
 
void writeGML (std::ostream &os) const
 
void writeGML (const char *fileName, const NodeArray< bool > &one) const
 
void writeGML (std::ostream &os, const NodeArray< bool > &one) const
 

Protected Member Functions

 CompactionConstraintGraphBase (const OrthoRep &OR, const PlanRep &PG, OrthoDir arcDir, int costGen=1, int costAssoc=1, bool align=false)
 Construction. More...
 
- Protected Member Functions inherited from ogdf::CommonCompactionConstraintGraphBase
 CommonCompactionConstraintGraphBase (const OrthoRep &OR, const PlanRep &PG, OrthoDir arcDir, int costAssoc)
 Build constraint graph with basic arcs. More...
 
virtual string getLengthString (edge e) const =0
 
- Protected Member Functions inherited from ogdf::Graph
virtual void * preInsert (bool copyEmbedding, bool copyIDs, bool notifyObservers, bool edgeFilter, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap, int *newNodes, int *newEdges)
 Callback notifying subclasses that some graph is about to be insert() -ed. More...
 
virtual void nodeInserted (void *userData, node original, node copy)
 Callback notifying subclasses that insert() copied a node. More...
 
virtual void edgeInserted (void *userData, edge original, edge copy)
 Callback notifying subclasses that insert() copied an edge. More...
 
virtual void postInsert (void *userData, int newNodes, int newEdges)
 Callback notifying subclasses that an insert() call has finished. More...
 
 Graph ()
 Constructs an empty graph. More...
 
 Graph (const Graph &copy)
 Constructs a graph that is a copy of G. More...
 
 Graph (Graph &&move)=delete
 
virtual ~Graph ()
 Destructor. More...
 
Graphoperator= (const Graph &copy)
 Overwrites this graph to be a copy of G. More...
 
Graphoperator= (Graph &&move)=delete
 
bool empty () const
 Returns true iff the graph is empty, i.e., contains no nodes. More...
 
int numberOfNodes () const
 Returns the number of nodes in the graph. More...
 
int numberOfEdges () const
 Returns the number of edges in the graph. More...
 
int maxNodeIndex () const
 Returns the largest used node index. More...
 
int maxEdgeIndex () const
 Returns the largest used edge index. More...
 
int maxAdjEntryIndex () const
 Returns the largest used adjEntry index. More...
 
node firstNode () const
 Returns the first node in the list of all nodes. More...
 
node lastNode () const
 Returns the last node in the list of all nodes. More...
 
edge firstEdge () const
 Returns the first edge in the list of all edges. More...
 
edge lastEdge () const
 Returns the last edge in the list of all edges. More...
 
node chooseNode (std::function< bool(node)> includeNode=[](node) { return true;}, bool isFastTest=true) const
 Returns a random node. More...
 
edge chooseEdge (std::function< bool(edge)> includeEdge=[](edge) { return true;}, bool isFastTest=true) const
 Returns a random edge. More...
 
template<class CONTAINER >
void allNodes (CONTAINER &nodeContainer) const
 Returns a container with all nodes of the graph. More...
 
template<class CONTAINER >
void allEdges (CONTAINER &edgeContainer) const
 Returns a container with all edges of the graph. More...
 
node newNode (int index=-1)
 Creates a new node and returns it. More...
 
edge newEdge (node v, node w, int index=-1)
 Creates a new edge (v,w) and returns it. More...
 
edge newEdge (node v, adjEntry adjTgt, int index=-1)
 Creates a new edge at predefined positions in the adjacency lists. More...
 
edge newEdge (adjEntry adjSrc, node w, int index=-1)
 Creates a new edge at predefined positions in the adjacency lists. More...
 
edge newEdge (adjEntry adjSrc, adjEntry adjTgt, Direction dir=Direction::after, int index=-1)
 Creates a new edge at predefined positions in the adjacency lists. More...
 
template<typename S , typename T >
edge newEdge (S src, Direction dirSrc, T tgt, Direction dirTgt, int index=-1)
 Creates a new edge at predefined positions in the adjacency lists. More...
 
virtual void delNode (node v)
 Removes node v and all incident edges from the graph. More...
 
virtual void delEdge (edge e)
 Removes edge e from the graph. More...
 
virtual void clear ()
 Removes all nodes and all edges from the graph. More...
 
void restoreAllEdges ()
 Restore all hidden edges and invalidate all HiddenEdgeSets. More...
 
virtual edge split (edge e)
 Splits edge e into two edges introducing a new node. More...
 
void unsplit (node u)
 Undoes a split operation. More...
 
virtual void unsplit (edge eIn, edge eOut)
 Undoes a split operation. More...
 
node splitNode (adjEntry adjStartLeft, adjEntry adjStartRight)
 Splits a node while preserving the order of adjacency entries. More...
 
node contract (edge e, bool keepSelfLoops=false)
 Contracts edge e while preserving the order of adjacency entries. More...
 
void move (edge e, adjEntry adjSrc, Direction dirSrc, adjEntry adjTgt, Direction dirTgt)
 Moves edge e to a different adjacency list. More...
 
void moveTarget (edge e, node w)
 Moves the target node of edge e to node w. More...
 
void moveTarget (edge e, adjEntry adjTgt, Direction dir)
 Moves the target node of edge e to a specific position in an adjacency list. More...
 
void moveSource (edge e, node w)
 Moves the source node of edge e to node w. More...
 
void moveSource (edge e, adjEntry adjSrc, Direction dir)
 Moves the source node of edge e to a specific position in an adjacency list. More...
 
edge searchEdge (node v, node w, bool directed=false) const
 Searches and returns an edge connecting nodes v and w in time O( min(deg(v ), deg(w ))). More...
 
void reverseEdge (edge e)
 Reverses the edge e, i.e., exchanges source and target node. More...
 
void reverseAllEdges ()
 Reverses all edges in the graph. More...
 
template<class NODELIST >
void collapse (NODELIST &nodesToCollapse)
 Collapses all nodes in the list nodesToCollapse to the first node in the list. More...
 
template<class ADJ_ENTRY_LIST >
void sort (node v, const ADJ_ENTRY_LIST &newOrder)
 Sorts the adjacency list of node v according to newOrder. More...
 
template<class IT >
void sort (node v, IT begin, IT end)
 Sorts the adjacency list of node v according to the range denoted by two iterators. More...
 
void reverseAdjEdges (node v)
 Reverses the adjacency list of v. More...
 
void moveAdj (adjEntry adjMove, Direction dir, adjEntry adjPos)
 Moves adjacency entry adjMove before or after adjPos. More...
 
void moveAdjAfter (adjEntry adjMove, adjEntry adjAfter)
 Moves adjacency entry adjMove after adjAfter. More...
 
void moveAdjBefore (adjEntry adjMove, adjEntry adjBefore)
 Moves adjacency entry adjMove before adjBefore. More...
 
void reverseAdjEdges ()
 Reverses all adjacency lists. More...
 
void swapAdjEdges (adjEntry adj1, adjEntry adj2)
 Exchanges two entries in an adjacency list. More...
 
int genus () const
 Returns the genus of the graph's embedding. More...
 
bool representsCombEmbedding () const
 Returns true iff the graph represents a combinatorial embedding. More...
 
void consistencyCheck () const
 Asserts that this graph is consistent. More...
 
internal::GraphNodeRegistrynodeRegistry ()
 Returns a reference to the registry of node arrays associated with this graph. More...
 
const internal::GraphNodeRegistrynodeRegistry () const
 Returns a const reference to the registry of node arrays associated with this graph. More...
 
 operator const internal::GraphNodeRegistry & () const
 
internal::GraphEdgeRegistryedgeRegistry ()
 Returns a reference to the registry of edge arrays associated with this graph. More...
 
const internal::GraphEdgeRegistryedgeRegistry () const
 Returns a const reference to the registry of edge arrays associated with this graph. More...
 
 operator const internal::GraphEdgeRegistry & () const
 
internal::GraphAdjRegistryadjEntryRegistry ()
 Returns a reference to the registry of adjEntry arrays associated with this graph. More...
 
const internal::GraphAdjRegistryadjEntryRegistry () const
 Returns a const reference to the registry of adjEntry arrays associated with this graph. More...
 
 operator const internal::GraphAdjRegistry & () const
 
void resetEdgeIdCount (int maxId)
 Resets the edge id count to maxId. More...
 
void resetNodeIdCount (int maxId)
 
template<OGDF_NODE_ITER NI, OGDF_EDGE_ITER EI, bool copyEmbedding = true, bool copyIDs = false, bool notifyObservers = true>
std::pair< int, int > insert (const NI &nodesBegin, const NI &nodesEnd, const EI &edgesBegin, const EI &edgesEnd, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap)
 Inserts a copy of a given subgraph into this graph. More...
 
template<OGDF_NODE_ITER NI, OGDF_EDGE_FILTER EF, bool copyIDs = false, bool notifyObservers = true>
std::pair< int, int > insert (const NI &nodesBegin, const NI &nodesEnd, const EF &edgeFilter, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap)
 Inserts a copy of a given subgraph into this graph. More...
 
template<OGDF_NODE_LIST NL>
std::pair< int, int > insert (const NL &nodeList, const EdgeSet< true > &edgeSet, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap)
 Inserts a copy of a given subgraph into this graph. More...
 
template<OGDF_NODE_LIST NL>
std::pair< int, int > insert (const NL &nodeList, const EdgeSet< false > &edgeSet, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap)
 Inserts a copy of a given subgraph into this graph. More...
 
template<OGDF_NODE_LIST NL, OGDF_EDGE_LIST EL>
std::pair< int, int > insert (const NL &nodeList, const EL &edgeList, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap)
 Inserts a copy of a given subgraph into this graph. More...
 
std::pair< int, int > insert (const CCsInfo &info, int cc, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap)
 Inserts a copy of a given connected component cc into this graph. More...
 
std::pair< int, int > insert (const Graph &G, NodeArray< node > &nodeMap, EdgeArray< edge > &edgeMap)
 Inserts a copy of a given Graph G into this graph. More...
 
std::pair< int, int > insert (const Graph &G)
 Inserts a copy of a given Graph G into this graph. More...
 
- Protected Member Functions inherited from ogdf::Observable< GraphObserver, Graph >
void clearObservers ()
 
const ListPure< GraphObserver * > & getObservers () const
 
 Observable ()=default
 
 Observable (const Observable &copy)=delete
 If you want to copy a subclass of Observable, call the default Observable() constructor. More...
 
 Observable (Observable &&move)=delete
 If you want to move a subclass of Observable, call the default Observable() constructor. More...
 
virtual ~Observable ()
 
Observableoperator= (const Observable &copy)=delete
 
Observableoperator= (Observable &&move)=delete
 

Protected Attributes

EdgeArray< bool > m_alignmentArc
 Basic arcs that have to be short for alignment (node to gen expander) More...
 
int m_edgeCost [2]
 
NodeArray< edgem_pathToEdge
 save the (single!) edge (segment) for a pathNode More...
 
EdgeArray< bool > m_verticalArc
 arc corresponding to such an edge More...
 
EdgeArray< bool > m_verticalGen
 generalization that runs vertical relative to hierarchy More...
 
- Protected Attributes inherited from ogdf::CommonCompactionConstraintGraphBase
OrthoDir m_arcDir
 
EdgeArray< int > m_border
 only used for cage precompaction in flowcompaction computecoords More...
 
EdgeArray< int > m_cost
 cost of an edge More...
 
EdgeArray< edgem_edgeToBasicArc
 basic arc representing an edge in PG More...
 
NodeArray< bool > m_extraNode
 Node does not represent drawing node as we dont have positions we save a drawing representant and an offset. More...
 
NodeArray< nodem_extraRep
 existing representant of extranodes position anchor More...
 
OrthoDir m_oppArcDir
 
NodeArray< edgem_originalEdge
 save edge for the basic arcs More...
 
NodeArray< SListPure< node > > m_path
 list of nodes contained in a segment More...
 
NodeArray< nodem_pathNode
 segment containing a node in PG More...
 
const OrthoRepm_pOR
 
const PlanRepm_pPR
 
SList< nodem_sinks
 
SList< nodem_sources
 
EdgeArray< ConstraintEdgeTypem_type
 constraint type for each edge More...
 
- Protected Attributes inherited from ogdf::Graph
internal::GraphObjectContainer< NodeElementnodes
 The container containing all node objects. More...
 
internal::GraphObjectContainer< EdgeElementedges
 The container containing all edge objects. More...
 

Private Member Functions

void dfsInsertPathVertex (node v, node pathVertex, NodeArray< bool > &visited, const NodeArray< node > &genOpposite)
 
void insertBasicArcs (const PlanRep &PG)
 
void insertPathVertices (const PlanRep &PG)
 

Private Attributes

bool m_align
 

Additional Inherited Members

- Protected Types inherited from ogdf::Graph
enum  EdgeType { EdgeType::association = 0, EdgeType::generalization = 1, EdgeType::dependency = 2 }
 The type of edges (only used in derived classes). More...
 
enum  NodeType { NodeType::vertex = 0, NodeType::dummy = 1, NodeType::generalizationMerger = 2, NodeType::generalizationExpander = 3, NodeType::highDegreeExpander = 4, NodeType::lowDegreeExpander = 5, NodeType::associationClass = 6 }
 The type of nodes. More...
 
using node_iterator = internal::GraphIterator< node >
 Provides a bidirectional iterator to a node in a graph. More...
 
using edge_iterator = internal::GraphIterator< edge >
 Provides a bidirectional iterator to an edge in a graph. More...
 
using adjEntry_iterator = internal::GraphIterator< adjEntry >
 Provides a bidirectional iterator to an entry in an adjacency list. More...
 

Detailed Description

Class implementing template-parameter-independent behaviour of ogdf::CompactionConstraintGraph.

Definition at line 45 of file CompactionConstraintGraph.h.

Constructor & Destructor Documentation

◆ CompactionConstraintGraphBase()

ogdf::CompactionConstraintGraphBase::CompactionConstraintGraphBase ( const OrthoRep OR,
const PlanRep PG,
OrthoDir  arcDir,
int  costGen = 1,
int  costAssoc = 1,
bool  align = false 
)
protected

Construction.

Member Function Documentation

◆ align()

void ogdf::CompactionConstraintGraphBase::align ( bool  b)
inline

Triggers alignment (=>some special edge handling to support al.)

Definition at line 60 of file CompactionConstraintGraph.h.

◆ alignmentArc()

bool ogdf::CompactionConstraintGraphBase::alignmentArc ( edge  e) const
inline

Returns if arc is important for alignment. These are the arcs representing node to gen. merger edges.

Definition at line 64 of file CompactionConstraintGraph.h.

◆ dfsInsertPathVertex()

void ogdf::CompactionConstraintGraphBase::dfsInsertPathVertex ( node  v,
node  pathVertex,
NodeArray< bool > &  visited,
const NodeArray< node > &  genOpposite 
)
private

◆ insertBasicArcs()

void ogdf::CompactionConstraintGraphBase::insertBasicArcs ( const PlanRep PG)
private

◆ insertPathVertices()

void ogdf::CompactionConstraintGraphBase::insertPathVertices ( const PlanRep PG)
private

◆ pathToOriginal()

edge ogdf::CompactionConstraintGraphBase::pathToOriginal ( node  v)
inline

Definition at line 66 of file CompactionConstraintGraph.h.

◆ verticalArc()

bool ogdf::CompactionConstraintGraphBase::verticalArc ( edge  e) const
inline

Returns true if e is basic arc of vertical edge in PlanRepUML hierarchy.

Precondition
e is arc in the constraint graph

Definition at line 55 of file CompactionConstraintGraph.h.

◆ verticalGen()

bool ogdf::CompactionConstraintGraphBase::verticalGen ( edge  e) const
inline

Returns true if e is vertical edge in PlanRepUML hierarchy.

Definition at line 51 of file CompactionConstraintGraph.h.

Member Data Documentation

◆ m_align

bool ogdf::CompactionConstraintGraphBase::m_align
private

Definition at line 86 of file CompactionConstraintGraph.h.

◆ m_alignmentArc

EdgeArray<bool> ogdf::CompactionConstraintGraphBase::m_alignmentArc
protected

Basic arcs that have to be short for alignment (node to gen expander)

Definition at line 80 of file CompactionConstraintGraph.h.

◆ m_edgeCost

int ogdf::CompactionConstraintGraphBase::m_edgeCost[2]
protected

Definition at line 73 of file CompactionConstraintGraph.h.

◆ m_pathToEdge

NodeArray<edge> ogdf::CompactionConstraintGraphBase::m_pathToEdge
protected

save the (single!) edge (segment) for a pathNode

Definition at line 82 of file CompactionConstraintGraph.h.

◆ m_verticalArc

EdgeArray<bool> ogdf::CompactionConstraintGraphBase::m_verticalArc
protected

arc corresponding to such an edge

Definition at line 77 of file CompactionConstraintGraph.h.

◆ m_verticalGen

EdgeArray<bool> ogdf::CompactionConstraintGraphBase::m_verticalGen
protected

generalization that runs vertical relative to hierarchy

Definition at line 76 of file CompactionConstraintGraph.h.


The documentation for this class was generated from the following file: