diff --git a/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java b/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java index f3092de5..3886a492 100644 --- a/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java +++ b/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java @@ -26,12 +26,12 @@ public class TestScreen extends LayoutScreen { rows.addFiller(); rows.add(new Text( - DynamicSize.fitOrFill(), DynamicSize.fit(), + DynamicSize.fitOrFill(), DynamicSize.fixed(20), Component.literal("Some Text") ).alignRight() ); rows.add(new Text( - DynamicSize.fitOrFill(), DynamicSize.fit(), + DynamicSize.fitOrFill(), DynamicSize.fixed(20), Component.literal("Some other, longer Text") ).centerHorizontal() ); diff --git a/src/main/java/org/betterx/ui/layout/components/Text.java b/src/main/java/org/betterx/ui/layout/components/Text.java index e76a4078..748b0855 100644 --- a/src/main/java/org/betterx/ui/layout/components/Text.java +++ b/src/main/java/org/betterx/ui/layout/components/Text.java @@ -48,6 +48,10 @@ public class Text extends Component { return getFont().width(c.getVisualOrderText()); } + @Override + public int getHeight(net.minecraft.network.chat.Component c) { + return TextProvider.super.getLineHeight(c); + } @Override public void renderInBounds(PoseStack stack, int x, int y, float a, Rectangle bounds, Rectangle clipRect) { diff --git a/src/main/java/org/betterx/ui/layout/values/Rectangle.java b/src/main/java/org/betterx/ui/layout/values/Rectangle.java index ba141164..938d2e08 100644 --- a/src/main/java/org/betterx/ui/layout/values/Rectangle.java +++ b/src/main/java/org/betterx/ui/layout/values/Rectangle.java @@ -26,10 +26,6 @@ public class Rectangle { return top + height; } - public Size size() { - return new Size(width, height); - } - public Rectangle movedBy(int left, int top) { return new Rectangle(this.left + left, this.top + top, this.width, this.height); } diff --git a/src/main/java/org/betterx/ui/vanilla/LayoutScreen.java b/src/main/java/org/betterx/ui/vanilla/LayoutScreen.java index 659aa972..cbd894f9 100644 --- a/src/main/java/org/betterx/ui/vanilla/LayoutScreen.java +++ b/src/main/java/org/betterx/ui/vanilla/LayoutScreen.java @@ -1,5 +1,6 @@ package org.betterx.ui.vanilla; +import org.betterx.ui.layout.components.HorizontalStack; import org.betterx.ui.layout.components.Panel; import org.betterx.ui.layout.components.Text; import org.betterx.ui.layout.components.VerticalStack; @@ -16,13 +17,30 @@ import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public abstract class LayoutScreen extends Screen { + protected final int topPadding; + protected final int bottomPadding; + protected final int sidePadding; + public LayoutScreen(Component component) { - this(null, component); + this(null, component, 20, 10, 20); } public LayoutScreen(@Nullable Screen parent, Component component) { + this(parent, component, 20, 10, 20); + } + + public LayoutScreen( + @Nullable Screen parent, + Component component, + int topPadding, + int bottomPadding, + int sidePadding + ) { super(component); this.parent = parent; + this.topPadding = topPadding; + this.bottomPadding = topPadding; + this.sidePadding = sidePadding; } @Nullable @@ -44,12 +62,22 @@ public abstract class LayoutScreen extends Screen { } protected org.betterx.ui.layout.components.Component addTitle(org.betterx.ui.layout.components.Component content) { - VerticalStack rows = new VerticalStack(DynamicSize.relative(1), DynamicSize.relative(1)); + VerticalStack rows = new VerticalStack(DynamicSize.fill(), DynamicSize.fill()); + if (topPadding > 0) rows.addSpacer(topPadding); rows.add(new Text(DynamicSize.fill(), DynamicSize.fit(), title).centerHorizontal()); rows.addSpacer(15); rows.add(content); - return rows; + if (bottomPadding > 0) rows.addSpacer(bottomPadding); + + if (sidePadding <= 0) return rows; + + HorizontalStack cols = new HorizontalStack(DynamicSize.fill(), DynamicSize.fill()); + cols.addSpacer(sidePadding); + cols.add(rows); + cols.addSpacer(sidePadding); + + return cols; } protected void renderBackground(PoseStack poseStack, int i, int j, float f) {