use of org.eclipse.elk.alg.layered.p3order.GraphInfoHolder in project elk by eclipse.
the class SwitchDecider method initParentCrossingsCounters.
private void initParentCrossingsCounters(final int freeLayerIndex, final int length) {
GraphInfoHolder parentGraphData = graphData.parentGraphData();
LNode[][] parentNodeOrder = parentGraphData.currentNodeOrder();
int[] portPos = parentGraphData.portPositions();
parentCrossCounter = new CrossingsCounter(portPos);
int parentNodeLayerPos = graphData.parent().getLayer().id;
LNode[] leftLayer = parentNodeLayerPos > 0 ? parentNodeOrder[parentNodeLayerPos - 1] : new LNode[0];
LNode[] middleLayer = parentNodeOrder[parentNodeLayerPos];
LNode[] rightLayer = parentNodeLayerPos < parentNodeOrder.length - 1 ? parentNodeOrder[parentNodeLayerPos + 1] : new LNode[0];
boolean rightMostLayer = freeLayerIndex == length - 1;
if (rightMostLayer) {
parentCrossCounter.initForCountingBetween(middleLayer, rightLayer);
} else {
parentCrossCounter.initForCountingBetween(leftLayer, middleLayer);
}
}
use of org.eclipse.elk.alg.layered.p3order.GraphInfoHolder in project elk by eclipse.
the class AbstractBarycenterPortDistributorTest method distributePortsInCompleteGraph.
private void distributePortsInCompleteGraph(final int numberOfPorts) {
GraphInfoHolder gd = new GraphInfoHolder(graph, CrossMinType.BARYCENTER, null);
LNode[][] nodes = graph.toNodeArray();
for (int i = 0; i < nodes.length; i++) {
gd.portDistributor().distributePortsWhileSweeping(nodes, i, true);
}
for (int i = nodes.length - 1; i >= 0; i--) {
gd.portDistributor().distributePortsWhileSweeping(nodes, i, false);
}
}
use of org.eclipse.elk.alg.layered.p3order.GraphInfoHolder in project elk by eclipse.
the class LayerSweepCrossingMinimizerTest method singleCrossHierarchEdge_needsNoCrossHierarchy.
/**
* <pre>
* _____
* *--+-* |
* p-* |
* |___|
* </pre>
*
* p is unconnected port.
*/
@Test
public void singleCrossHierarchEdge_needsNoCrossHierarchy() {
LNode leftNode = addNodeToLayer(makeLayer());
LNode rightOuterNode = addNodeToLayer(makeLayer());
LPort[] rightOuterPorts = addPortsOnSide(2, rightOuterNode, PortSide.WEST);
eastWestEdgeFromTo(leftNode, rightOuterPorts[1]);
setOnAllGraphs(LayeredOptions.CROSSING_MINIMIZATION_HIERARCHICAL_SWEEPINESS, 0.1, graph);
makeNestedTwoNodeGraphWithWesternPorts(rightOuterNode, rightOuterPorts);
setUpAndMinimizeCrossings();
List<GraphInfoHolder> graphData = crossMin.getGraphData();
for (GraphInfoHolder data : graphData) {
if (data.hasParent()) {
assertFalse(data.dontSweepInto());
}
}
}
use of org.eclipse.elk.alg.layered.p3order.GraphInfoHolder in project elk by eclipse.
the class LayerSweepCrossingMinimizerTest method fixedOrderMustTransfer_checkWhetherMarked.
/**
* <pre>
* _______ _____
* | *-+-*-+-* |
* | *-+-*-+-* |
* |_____| |___|
* ^
* fixed port order
* </pre>
*/
@Test
public void fixedOrderMustTransfer_checkWhetherMarked() {
LNode leftOuterNode = addNodeToLayer(makeLayer());
LNode[] middleNodes = addNodesToLayer(2, makeLayer());
setFixedOrderConstraint(middleNodes[0]);
setFixedOrderConstraint(middleNodes[1]);
LNode rightOuterNode = addNodeToLayer(makeLayer());
LPort[] leftOuterPorts = addPortsOnSide(2, leftOuterNode, PortSide.EAST);
LPort[] rightOuterPorts = addPortsOnSide(2, rightOuterNode, PortSide.WEST);
eastWestEdgeFromTo(leftOuterPorts[0], middleNodes[0]);
eastWestEdgeFromTo(leftOuterPorts[1], middleNodes[1]);
eastWestEdgeFromTo(middleNodes[0], rightOuterPorts[0]);
eastWestEdgeFromTo(middleNodes[1], rightOuterPorts[1]);
makeNestedTwoNodeGraphWithEasternPorts(leftOuterNode, leftOuterPorts);
makeNestedTwoNodeGraphWithWesternPorts(rightOuterNode, rightOuterPorts);
setUpAndMinimizeCrossings();
List<GraphInfoHolder> graphData = crossMin.getGraphData();
for (GraphInfoHolder data : graphData) {
if (data.hasParent()) {
assertFalse(data.dontSweepInto());
}
}
}
use of org.eclipse.elk.alg.layered.p3order.GraphInfoHolder in project elk by eclipse.
the class LayerSweepCrossingMinimizerTest method needsHierarchicalBecauseOfFixedOrder2_checkWhetherMarked.
/**
* <pre>
* _______ _____
* | +--+-* |
* | +--+-* |
* |_____| |___|
* ^
* fixed port order
* </pre>
*/
@Test
public void needsHierarchicalBecauseOfFixedOrder2_checkWhetherMarked() {
LNode leftOuterNode = addNodeToLayer(makeLayer());
LNode rightOuterNode = addNodeToLayer(makeLayer());
setFixedOrderConstraint(leftOuterNode);
LPort[] leftOuterPorts = addPortsOnSide(2, leftOuterNode, PortSide.EAST);
LPort[] rightOuterPorts = addPortsOnSide(2, rightOuterNode, PortSide.WEST);
addEdgeBetweenPorts(leftOuterPorts[0], rightOuterPorts[1]);
addEdgeBetweenPorts(leftOuterPorts[1], rightOuterPorts[0]);
makeNestedTwoNodeGraphWithWesternPorts(rightOuterNode, rightOuterPorts);
setUpAndMinimizeCrossings();
List<GraphInfoHolder> graphData = crossMin.getGraphData();
for (GraphInfoHolder data : graphData) {
if (data.hasParent()) {
assertFalse(data.dontSweepInto());
}
}
}
Aggregations