use of limelight.styles.values.AutoDimensionValue in project limelight by slagyr.
the class PropPanelLayout method snapToSize.
public void snapToSize(PropPanel panel) {
if (// can happen if removed from tree
panel.getParent() == null)
return;
Box maxArea = panel.getParent().getChildConsumableBounds();
Style style = panel.getStyle();
if (style.getCompiledWidth() instanceof AutoDimensionValue && style.getCompiledHeight() instanceof GreedyDimensionValue)
throw new LimelightException("A greedy height is not allowed with auto width.");
int newWidth = style.getCompiledWidth().calculateDimension(maxArea.width, style.getCompiledMinWidth(), style.getCompiledMaxWidth(), panel.greediness.width);
int newHeight = style.getCompiledHeight().calculateDimension(maxArea.height, style.getCompiledMinHeight(), style.getCompiledMaxHeight(), panel.greediness.height);
// TODO MDM - Hacky Hack!!!! More thought needs to go into the way layouts are down and how greedy fits into it all
// if(topLevel && style.getCompiledWidth() instanceof GreedyDimensionValue && panel.getWidth() > newWidth)
// newWidth = panel.getWidth();
// if(topLevel && style.getCompiledHeight() instanceof GreedyDimensionValue && panel.getHeight() > newHeight)
// newHeight = panel.getHeight();
panel.setSize(newWidth, newHeight);
panel.resetPendingSizeChange();
}
use of limelight.styles.values.AutoDimensionValue in project limelight by slagyr.
the class ImagePanelLayout method handleAutoDimensions.
private void handleAutoDimensions(ImagePanel panel, Dimension size) {
Style style = panel.getStyle();
boolean autoWidth = style.getCompiledWidth() instanceof AutoDimensionValue;
boolean autoHeight = style.getCompiledHeight() instanceof AutoDimensionValue;
if (autoWidth && autoHeight) {
size.width = (int) (panel.getRotatedWidth() + 0.5);
size.height = (int) (panel.getRotatedHeight() + 0.5);
} else if (autoWidth) {
double ratio = size.height / panel.getRotatedHeight();
size.width = (int) (panel.getRotatedWidth() * ratio + 0.5);
} else if (autoHeight) {
double ratio = size.width / panel.getRotatedWidth();
size.height = (int) (panel.getRotatedHeight() * ratio + 0.5);
}
}
Aggregations