...
Contents
...
Preconditions | - Comments have been processed by the Comment Preprocessor.
- Nodes are organized in layers and have been placed with enough spacing to hold their connected comment boxes.
|
---|
Postconditions | |
---|
Slot | After phase 5. |
---|
Dependencies | |
---|
Remarks | - This processor only makes sense if the
CommentPreprocessor was used before.
|
---|
Looks for comments that have exactly one connection to a normal node and removes them from the graph. Such comments are put either into the Properties.TOP_COMMENTS or the Properties.BOTTOM_COMMENTS list of the connected node and processed later by the Comment Postprocessor. Other comments are processed normally, i.e. they are treated as regular nodes, but their incident edges may be reversed.
...
Preconditions | |
---|
Postconditions | |
---|
Slot | After phase 5. |
---|
Dependencies | |
---|
Remarks | |
---|
Tests | - No node exists with type
LABEL . - Only nodes of the type
LABEL are deleted from the graph.
|
---|
Label Dummy Switcher
TODO: Document.
...
Preconditions | |
---|
Postconditions | |
---|
Slot | Before phase 4. |
---|
Dependencies | HyperedgeDummyMerger InLayerConstraintProcessor SubgraphOrderingProcessor
|
---|
Remarks | |
---|
Tests | - All labels on ports and edges have an assigned
LabelSide unequal to UNKNOWN .
|
---|
Layer Constraint Processor
...
Preconditions | - The graph is layered.
- Nodes to be placed in the first layer only have outgoing edges.
- Nodes to be placed in the last layer only have incoming edges.
|
---|
Postconditions | - Nodes with layer constraints have been placed in the appropriate layers.
|
---|
Slot | Before phase 3. |
---|
Dependencies | ConstrainedHierarchicalPortProcessor
|
---|
Remarks | - Layerers should usually include a dependency on this processor, unless they already adhere to layer constraints themselves.
- The
LayerConstraintEdgeReverser ensures that this processor's preconditions are met. Thus, layerers should also include a dependency on that processor.
|
---|
Tests | - If
FIRST_SEPARATE nodes exist, they must all be present in the first layer. In that case all FIRST nodes must be located in the next layer, otherwise in the first layer. Analog for LAST_SEPARATE and LAST .
|
---|
Layer Size and Graph Height Calculator
...
Preconditions | - The graph is layered.
- Nodes are assigned x and y coordinates.
- The bend points of all edges are set.
|
---|
Postconditions | - There are no long edge dummy nodes anymore.
- The graph may not be properly layered anymore.
|
---|
Slot | After phase 5. |
---|
Dependencies | HierarchicalPortOrthogonalEdgeRouter
|
---|
Remarks | - Since there are multiple processors that generate long edge dummies, this processor doesn't only make sense if the
LongEdgeSplitter was used before.
|
---|
Tests | - No node exists with type
LONG_EDGE . - Only nodes of the type
LONG_EDGE are deleted from the graph.
|
---|
Long Edge Splitter
Turns a layered graph into a properly layered graph by inserting long edge dummies where appropriate..
...
Preconditions | - The graph is layered.
- Nodes are assigned y coordinates.
- The bend points of all edges are set.
- Port positions are fixed.
|
---|
Postconditions | - North / south port dummy nodes are removed, their edges being properly routed and connected.
|
---|
Slot | After phase 5. |
---|
Dependencies | None. |
---|
Remarks | - This processor only makes sense if the
NorthSouthPortPreprocessor was used before.
|
---|
Tests | - No node exists with type
NORTH_SOUTH_PORT . - Only nodes of the type
NORTH_SOUTH_PORT are deleted from the graph.
|
---|
North South Port Preprocessor
...
Preconditions | |
---|
Postconditions | - All nodes have at least fixed port sides.
|
---|
Slot | Before phase 3. |
---|
Dependencies | None. |
---|
Remarks | None. |
---|
Tests | - No node has its PortConstraints set to
FREE or UNDEFINED . - Every port has a specified PortSide.
|
---|
...
Preconditions | |
---|
Postconditions | - Reversed edges are restored to their original direction.
|
---|
Slot | After phase 5. |
---|
Dependencies | None. |
---|
Remarks | - Note that this processor doesn't have any dependencies. Let's take a long edge that was reversed during phase 1 and then split into multiple segments by the
LongEdgeSplitter . All the edges generated by that processor inherit the REVERSED property of the original long edge. Thus, it doesn't make any difference if we reverse all those edges before joining them to the original long edge, or if we join them first and reverse the original long edge afterwards.
|
---|
Tests | - No edge exists with the
REVERSED property set to true .
|
---|
Self Loop Processor
Does some work that enables the other processors and phases to handle self-loops. To handle them well, the NorthSouthPortPreprocessor
may be required.
...