Search in sources :

Example 1 with GraphInfoHolder

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);
    }
}
Also used : CrossingsCounter(org.eclipse.elk.alg.layered.p3order.counting.CrossingsCounter) LNode(org.eclipse.elk.alg.layered.graph.LNode) GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder)

Example 2 with GraphInfoHolder

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);
    }
}
Also used : GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder)

Example 3 with GraphInfoHolder

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());
        }
    }
}
Also used : LPort(org.eclipse.elk.alg.layered.graph.LPort) LNode(org.eclipse.elk.alg.layered.graph.LNode) GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder) Test(org.junit.Test)

Example 4 with GraphInfoHolder

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());
        }
    }
}
Also used : LPort(org.eclipse.elk.alg.layered.graph.LPort) LNode(org.eclipse.elk.alg.layered.graph.LNode) GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder) Test(org.junit.Test)

Example 5 with GraphInfoHolder

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());
        }
    }
}
Also used : LPort(org.eclipse.elk.alg.layered.graph.LPort) LNode(org.eclipse.elk.alg.layered.graph.LNode) GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder) Test(org.junit.Test)

Aggregations

GraphInfoHolder (org.eclipse.elk.alg.layered.p3order.GraphInfoHolder)19 LNode (org.eclipse.elk.alg.layered.graph.LNode)16 LPort (org.eclipse.elk.alg.layered.graph.LPort)15 Test (org.junit.Test)14 LGraph (org.eclipse.elk.alg.layered.graph.LGraph)7 Layer (org.eclipse.elk.alg.layered.graph.Layer)5 CrossingsCounter (org.eclipse.elk.alg.layered.p3order.counting.CrossingsCounter)3 CrossingMatrixFiller (org.eclipse.elk.alg.layered.intermediate.greedyswitch.CrossingMatrixFiller)2 SwitchDecider (org.eclipse.elk.alg.layered.intermediate.greedyswitch.SwitchDecider)2 ArrayList (java.util.ArrayList)1 LayerSweepTypeDecider (org.eclipse.elk.alg.layered.p3order.LayerSweepTypeDecider)1 Ignore (org.junit.Ignore)1