Open
Graph Drawing
Framework

 v.2010.10
 

Public Member Functions | Private Member Functions | Private Attributes

ogdf::EdgeRouter Class Reference

#include <ogdf/orthogonal/EdgeRouter.h>

List of all members.

Public Member Functions

 EdgeRouter ()
 EdgeRouter (PlanRep &pru, OrthoRep &H, GridLayoutMapped &L, CombinatorialEmbedding &E, RoutingChannel< int > &rou, MinimumEdgeDistances< int > &med, NodeArray< int > &nodewidth, NodeArray< int > &nodeheight)
virtual ~EdgeRouter ()
void init (PlanRep &pru, RoutingChannel< int > &rou, bool align=false)
void setDistances ()
 sets the computed distances in structure MinimumEdgeDistance m_med
void call ()
 places nodes in cages and routes incident edges
void call (PlanRep &pru, OrthoRep &H, GridLayoutMapped &L, CombinatorialEmbedding &E, RoutingChannel< int > &rou, MinimumEdgeDistances< int > &med, NodeArray< int > &nodewidth, NodeArray< int > &nodeheight, bool align=false)
 places nodes in cages and routes incident edges
void place (node v)
 applies precomputed placement
void compute_place (node v, NodeInfo &inf)
 computes placement
void compute_routing (node v)
 computes routing after compute_place
void compute_glue_points_y (node v)
 compute glue points positions
void compute_gen_glue_points_y (node v)
 compute glue points positions
void compute_glue_points_x (node &v)
 compute glue points positions
void compute_gen_glue_points_x (node v)
 compute glue points positions
void initialize_node_info (node v, int sep)
 sets values derivable from input
int cp_x (adjEntry ae)
 connection point (cage border) coord of source
int cp_y (adjEntry ae)
 connection point (cage border) coord of source
int gp_x (adjEntry ae)
 glue point (node border)
int gp_y (adjEntry ae)
 glue point (node border)
bend_type abendType (adjEntry ae)
void addbends (BendString &bs, const char *s2)
edge addRightBend (edge e)
edge addLeftBend (edge e)
adjEntry outEntry (NodeInfo &inf, OrthoDir d, int pos)
 adjEntries for edges in inLists
adjEntry inEntry (NodeInfo &inf, OrthoDir d, int pos)
 adjEntries for edges in inLists
void set_position (node v, int x=0, int y=0)
 sets position for node v in layout to value x,y, invoked to have central control over change
void fix_position (node v, int x=0, int y=0)
 same as set but updates m_fixed, coordinates cant be changed afterwards
void multiDelta ()
 for all multiple edges, set the delta value on both sides to minimum if not m_minDelta
void align (bool b)
 set alignment option: place nodes in cage at outgoing generalization

Private Member Functions

void unsplit (edge e1, edge e2)
void set_corners (node v)
 set coordinates of cage corners after placement
int alpha_move (OrthoDir s_to, OrthoDir s_from, node v)
 computes the alpha value described in the paper
node oppositeNode (adjEntry ae)
 helper for oppositeExpander
bool oppositeExpander (adjEntry ae)
 check if the target node of the outgoing adjEntry still is a expander
int beta_move (OrthoDir s_from, OrthoDir s_to, int move_num, node v)
 computes the beta value described in the paper
int compute_move (OrthoDir s_from, OrthoDir s_to, int &kflip, node v)
 compute the maximum number of moveable edges

Private Attributes

PlanRepm_prup
GridLayoutMappedm_layoutp
OrthoRepm_orp
CombinatorialEmbeddingm_comb
RoutingChannel< int > * m_rc
MinimumEdgeDistances< int > * m_med
NodeArray< int > * m_nodewidth
NodeArray< int > * m_nodeheight
NodeArray< NodeInfoinfos
 holds the cage and placement information
int m_sep
 minimum separation
int m_overh
 minimum overhang
double Cconst
 relative sep to overhang / delta to eps
bool m_minDelta
 set minimum delta values for flip decision and adjust distances correspondingly
NodeArray< int > m_newx
NodeArray< int > m_newy
 node array saves info about changed position, no further change is allowed
NodeArray< bool > m_fixed
EdgeArray< int > lowe
EdgeArray< int > uppe
EdgeArray< int > lefte
EdgeArray< int > righte
 max box borders for bendfree edges
AdjEntryArray< int > alowe
AdjEntryArray< int > auppe
AdjEntryArray< int > alefte
AdjEntryArray< int > arighte
AdjEntryArray< int > m_agp_x
AdjEntryArray< int > m_agp_y
 because edges can connect two replacement cages
AdjEntryArray< nodem_cage_point
 newly introduced bends destroy edge to point connection
AdjEntryArray< int > m_acp_x
AdjEntryArray< int > m_acp_y
 edge connection point coordinates before treatment
AdjEntryArray< bend_typem_abends
 bends
NodeArray< bend_typem_oppositeBendType
 keep the information about the type of bend inserted at one end of an (originally unbend) edge, so that we can check possible bendsaving
NodeArray< process_typem_processStatus
 keep information about already processed Nodes
NodeArray< bool > m_mergerSon
 is part of merger son cage
NodeArray< OrthoDirm_mergeDir
 direction of adjacent (to) merger edges
bool m_align

Detailed Description

Places node boxes in replacement areas of orthogonal drawing step and route edges to minimize bends

Definition at line 103 of file EdgeRouter.h.


Constructor & Destructor Documentation

ogdf::EdgeRouter::EdgeRouter (  )  [inline]

Definition at line 107 of file EdgeRouter.h.

ogdf::EdgeRouter::EdgeRouter ( PlanRep pru,
OrthoRep H,
GridLayoutMapped L,
CombinatorialEmbedding E,
RoutingChannel< int > &  rou,
MinimumEdgeDistances< int > &  med,
NodeArray< int > &  nodewidth,
NodeArray< int > &  nodeheight 
)
virtual ogdf::EdgeRouter::~EdgeRouter (  )  [inline, virtual]

Definition at line 119 of file EdgeRouter.h.


Member Function Documentation

bend_type ogdf::EdgeRouter::abendType ( adjEntry  ae  )  [inline]

Definition at line 174 of file EdgeRouter.h.

void ogdf::EdgeRouter::addbends ( BendString bs,
const char *  s2 
)
edge ogdf::EdgeRouter::addLeftBend ( edge  e  ) 
edge ogdf::EdgeRouter::addRightBend ( edge  e  ) 
void ogdf::EdgeRouter::align ( bool  b  )  [inline]

set alignment option: place nodes in cage at outgoing generalization

postprocessing function, hmm maybe preprocessing

Definition at line 214 of file EdgeRouter.h.

int ogdf::EdgeRouter::alpha_move ( OrthoDir  s_to,
OrthoDir  s_from,
node  v 
) [private]

computes the alpha value described in the paper

int ogdf::EdgeRouter::beta_move ( OrthoDir  s_from,
OrthoDir  s_to,
int  move_num,
node  v 
) [private]

computes the beta value described in the paper

number of additional bend free edges on side s_from if move_num edges are moved from side s_from to s_to

void ogdf::EdgeRouter::call (  ) 

places nodes in cages and routes incident edges

void ogdf::EdgeRouter::call ( PlanRep pru,
OrthoRep H,
GridLayoutMapped L,
CombinatorialEmbedding E,
RoutingChannel< int > &  rou,
MinimumEdgeDistances< int > &  med,
NodeArray< int > &  nodewidth,
NodeArray< int > &  nodeheight,
bool  align = false 
)

places nodes in cages and routes incident edges

void ogdf::EdgeRouter::compute_gen_glue_points_x ( node  v  ) 

compute glue points positions

void ogdf::EdgeRouter::compute_gen_glue_points_y ( node  v  ) 

compute glue points positions

void ogdf::EdgeRouter::compute_glue_points_x ( node v  ) 

compute glue points positions

void ogdf::EdgeRouter::compute_glue_points_y ( node  v  ) 

compute glue points positions

int ogdf::EdgeRouter::compute_move ( OrthoDir  s_from,
OrthoDir  s_to,
int &  kflip,
node  v 
) [private]

compute the maximum number of moveable edges

dependant on space on available edges, return number of saved bends

void ogdf::EdgeRouter::compute_place ( node  v,
NodeInfo inf 
)

computes placement

void ogdf::EdgeRouter::compute_routing ( node  v  ) 

computes routing after compute_place

int ogdf::EdgeRouter::cp_x ( adjEntry  ae  )  [inline]

connection point (cage border) coord of source

Definition at line 169 of file EdgeRouter.h.

int ogdf::EdgeRouter::cp_y ( adjEntry  ae  )  [inline]

connection point (cage border) coord of source

Definition at line 170 of file EdgeRouter.h.

void ogdf::EdgeRouter::fix_position ( node  v,
int  x = 0,
int  y = 0 
)

same as set but updates m_fixed, coordinates cant be changed afterwards

int ogdf::EdgeRouter::gp_x ( adjEntry  ae  )  [inline]

glue point (node border)

Definition at line 171 of file EdgeRouter.h.

int ogdf::EdgeRouter::gp_y ( adjEntry  ae  )  [inline]

glue point (node border)

Definition at line 172 of file EdgeRouter.h.

adjEntry ogdf::EdgeRouter::inEntry ( NodeInfo inf,
OrthoDir  d,
int  pos 
) [inline]

adjEntries for edges in inLists

Definition at line 191 of file EdgeRouter.h.

void ogdf::EdgeRouter::init ( PlanRep pru,
RoutingChannel< int > &  rou,
bool  align = false 
)
void ogdf::EdgeRouter::initialize_node_info ( node  v,
int  sep 
)

sets values derivable from input

void ogdf::EdgeRouter::multiDelta (  ) 

for all multiple edges, set the delta value on both sides to minimum if not m_minDelta

postprocessing function, hmm maybe preprocessing

bool ogdf::EdgeRouter::oppositeExpander ( adjEntry  ae  )  [inline, private]

check if the target node of the outgoing adjEntry still is a expander

Definition at line 252 of file EdgeRouter.h.

node ogdf::EdgeRouter::oppositeNode ( adjEntry  ae  )  [inline, private]

helper for oppositeExpander

Definition at line 249 of file EdgeRouter.h.

adjEntry ogdf::EdgeRouter::outEntry ( NodeInfo inf,
OrthoDir  d,
int  pos 
) [inline]

adjEntries for edges in inLists

Definition at line 183 of file EdgeRouter.h.

void ogdf::EdgeRouter::place ( node  v  ) 

applies precomputed placement

void ogdf::EdgeRouter::set_corners ( node  v  )  [private]

set coordinates of cage corners after placement

void ogdf::EdgeRouter::set_position ( node  v,
int  x = 0,
int  y = 0 
)

sets position for node v in layout to value x,y, invoked to have central control over change

void ogdf::EdgeRouter::setDistances (  ) 

sets the computed distances in structure MinimumEdgeDistance m_med

void ogdf::EdgeRouter::unsplit ( edge  e1,
edge  e2 
) [private]

Member Data Documentation

Definition at line 276 of file EdgeRouter.h.

Definition at line 276 of file EdgeRouter.h.

Definition at line 276 of file EdgeRouter.h.

Definition at line 276 of file EdgeRouter.h.

double ogdf::EdgeRouter::Cconst [private]

relative sep to overhang / delta to eps

Definition at line 235 of file EdgeRouter.h.

holds the cage and placement information

Definition at line 231 of file EdgeRouter.h.

Definition at line 275 of file EdgeRouter.h.

Definition at line 275 of file EdgeRouter.h.

bends

0 = bendfree, 1 = single bend from left to node, 2 = single from right, 3 = int from left, 4 = int from right,...

Definition at line 287 of file EdgeRouter.h.

Definition at line 279 of file EdgeRouter.h.

edge connection point coordinates before treatment

Definition at line 279 of file EdgeRouter.h.

Definition at line 277 of file EdgeRouter.h.

because edges can connect two replacement cages

Definition at line 277 of file EdgeRouter.h.

bool ogdf::EdgeRouter::m_align [private]

Definition at line 298 of file EdgeRouter.h.

newly introduced bends destroy edge to point connection

Definition at line 278 of file EdgeRouter.h.

Definition at line 225 of file EdgeRouter.h.

Definition at line 274 of file EdgeRouter.h.

Definition at line 223 of file EdgeRouter.h.

Definition at line 227 of file EdgeRouter.h.

direction of adjacent (to) merger edges

Definition at line 297 of file EdgeRouter.h.

is part of merger son cage

Definition at line 296 of file EdgeRouter.h.

set minimum delta values for flip decision and adjust distances correspondingly

Definition at line 246 of file EdgeRouter.h.

Definition at line 272 of file EdgeRouter.h.

node array saves info about changed position, no further change is allowed

new placement position for original node

Definition at line 272 of file EdgeRouter.h.

Definition at line 229 of file EdgeRouter.h.

Definition at line 228 of file EdgeRouter.h.

keep the information about the type of bend inserted at one end of an (originally unbend) edge, so that we can check possible bendsaving

Definition at line 290 of file EdgeRouter.h.

Definition at line 224 of file EdgeRouter.h.

minimum overhang

Definition at line 234 of file EdgeRouter.h.

keep information about already processed Nodes

Definition at line 293 of file EdgeRouter.h.

Definition at line 222 of file EdgeRouter.h.

Definition at line 226 of file EdgeRouter.h.

int ogdf::EdgeRouter::m_sep [private]

minimum separation

Definition at line 233 of file EdgeRouter.h.

max box borders for bendfree edges

Definition at line 275 of file EdgeRouter.h.

Definition at line 275 of file EdgeRouter.h.


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