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

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

public class HierarchicalPortConstraintProcessor
extends AbstractAlgorithm
implements ILayoutProcessor

Processes constraints imposed on hierarchical node dummies.

Eastern and western ports cannot be ordered arbitrarily by the crossing minimizer if the port order is fixed. Thus, this processor inserts appropriate in-layer successor constraints to restrict the node ordering.

Northern and southern external ports can sadly not be processed in the usual way with port constraints at least at FIXED_ORDER. Instead, we need to replace them by new external port dummies. For each node connected to a northern or southern hierarchical port dummy, we need to place a new dummy in the next layer, rerouting the edges appropriately. The original dummies are removed, to be reinserted later by HierarchicalPortOrthogonalEdgeRouter. For simplification, this is also done in all other port constraint cases. This saves us the trouble of having to differentiate between the different port constraints later on.

Precondition:
A layered graph; long edge dummies have not yet been inserted; layer constraints have not yet been applied.
Postcondition:
Hierarchical port dummies for northern and southern ports are replaced by multiple dummies if the port constraints are at least FIXED_ORDER.
Slots:
Before phase 3.
Same-slot dependencies:
LayerConstraintProcessor

See Also:
HierarchicalPortDummySizeProcessor, HierarchicalPortOrthogonalEdgeRouter, HierarchicalPortPositionProcessor
Rating red

Constructor Summary
HierarchicalPortConstraintProcessor()
           
 
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

HierarchicalPortConstraintProcessor

public HierarchicalPortConstraintProcessor()
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