de.cau.cs.kieler.klay.layered.intermediate
Class HierarchicalPortOrthogonalEdgeRouter

java.lang.Object
  extended by de.cau.cs.kieler.core.alg.AbstractAlgorithm
      extended by de.cau.cs.kieler.klay.layered.intermediate.HierarchicalPortOrthogonalEdgeRouter
All Implemented Interfaces:
IAlgorithm, ILayoutProcessor

public class HierarchicalPortOrthogonalEdgeRouter
extends AbstractAlgorithm
implements ILayoutProcessor

This processor does the job of routing edges connected to hierarchical ports.

Without going too much into the details, it does so in six distinct steps:

  1. Dummy nodes created for northern and southern hierarchical ports are restored and connected to the nodes formerly created in their stead.
  2. The coordinates of these dummy nodes - and thus of the hierarchical ports they represent - are calculated and applied.
  3. The edges connected to northern and southern hierarchical ports are routed.
  4. The temporary dummy nodes are removed, thereby restoring the original bijective relationship between external ports and the dummy nodes created to represent them.
  5. Due to the necessity of having to route these edges, additional height may be required, which in turn may invalidate the y coordinates of eastern and western hierarchical port dummy nodes. Those are corrected in this step.
  6. That may in turn have produced slanted edge segments, which are corrected in the final step.
Precondition:
A layered graph, with edge routing finished for edges not incident to external ports; long edge dummies are not yet joined.
Postcondition:
All external port dummy nodes left map onto an actual external port; the coordinates of external port dummy nodes specify the coordinates of their respective external port; all external port dummy nodes have a size of (0, 0); edges connected to external ports have their bend points set.
Slots:
After phase 5.
Same-slot dependencies:
None.

See Also:
HierarchicalPortConstraintProcessor, HierarchicalPortDummySizeProcessor, HierarchicalPortPositionProcessor, OrthogonalRoutingGenerator
Rating red

Constructor Summary
HierarchicalPortOrthogonalEdgeRouter()
           
 
Method Summary
 void process(LayeredGraph layeredGraph)
          Performs the phase's work on the given graph.
 
Methods inherited from class de.cau.cs.kieler.core.alg.AbstractAlgorithm
getMonitor, reset, reset, setProgressMonitor
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.cau.cs.kieler.core.alg.IAlgorithm
reset, reset, setProgressMonitor
 

Constructor Detail

HierarchicalPortOrthogonalEdgeRouter

public HierarchicalPortOrthogonalEdgeRouter()
Method Detail

process

public void process(LayeredGraph layeredGraph)
Performs the phase's work on the given graph.

Specified by:
process in interface ILayoutProcessor
Parameters:
layeredGraph - a layered graph