Skip to content

Commit 0ea53be

Browse files
committed
Consider the parent label when having child nodes for size.
1 parent 1f1c007 commit 0ea53be

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

plugins/org.eclipse.elk.alg.rectpacking/src/org/eclipse/elk/alg/rectpacking/intermediate/MinSizePreProcessor.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,15 @@
99
*******************************************************************************/
1010
package org.eclipse.elk.alg.rectpacking.intermediate;
1111

12+
import org.eclipse.elk.alg.common.nodespacing.NodeLabelAndSizeCalculator;
1213
import org.eclipse.elk.alg.rectpacking.options.InternalProperties;
1314
import org.eclipse.elk.core.alg.ILayoutProcessor;
1415
import org.eclipse.elk.core.math.KVector;
1516
import org.eclipse.elk.core.util.ElkUtil;
1617
import org.eclipse.elk.core.util.IElkProgressMonitor;
18+
import org.eclipse.elk.core.util.adapters.ElkGraphAdapters;
19+
import org.eclipse.elk.core.util.adapters.GraphAdapters.GraphAdapter;
20+
import org.eclipse.elk.core.util.adapters.GraphAdapters.NodeAdapter;
1721
import org.eclipse.elk.graph.ElkNode;
1822

1923
/**
@@ -36,7 +40,19 @@ public class MinSizePreProcessor implements ILayoutProcessor<ElkNode> {
3640
@Override
3741
public void process(ElkNode graph, IElkProgressMonitor progressMonitor) {
3842
progressMonitor.begin("Min Size Preprocessing", 1);
43+
// Get minimum size based on children.
3944
KVector minSize = ElkUtil.effectiveMinSizeConstraintFor(graph);
45+
46+
// Get minimum size based on labels.
47+
if (graph.getParent() != null) {
48+
// only possible if a parent exists.
49+
GraphAdapter<?> graphAdapter = ElkGraphAdapters.adapt(graph.getParent());
50+
NodeAdapter<?> nodeAdapter = ElkGraphAdapters.adaptSingleNode(graph);
51+
52+
KVector minSize2 = NodeLabelAndSizeCalculator.process(graphAdapter, nodeAdapter, false, true);
53+
minSize.x = Math.max(minSize.x, minSize2.x);
54+
minSize.y = Math.max(minSize.y, minSize2.y);
55+
}
4056
graph.setProperty(InternalProperties.MIN_WIDTH, minSize.x);
4157
graph.setProperty(InternalProperties.MIN_HEIGHT, minSize.y);
4258
progressMonitor.done();

0 commit comments

Comments
 (0)