From b9dc25096f2826ec0a56032dfcbb72225ac2cc1a Mon Sep 17 00:00:00 2001 From: OLEGSHA Date: Wed, 5 Aug 2020 11:55:50 +0300 Subject: [PATCH] Replaced .gui.Size with Vec2i --- .../optica/client/graphics/gui/Component.java | 19 ++++++----- .../client/graphics/gui/LayerTestGUI.java | 5 +-- .../optica/client/graphics/gui/Layout.java | 4 ++- .../optica/client/graphics/gui/Size.java | 29 ---------------- .../graphics/gui/layout/LayoutAlign.java | 24 ++++++------- .../gui/layout/LayoutBorderHorizontal.java | 34 +++++++++---------- .../gui/layout/LayoutBorderVertical.java | 34 +++++++++---------- .../graphics/gui/layout/LayoutGrid.java | 18 +++++----- .../graphics/gui/layout/LayoutHorizontal.java | 20 +++++------ .../graphics/gui/layout/LayoutVertical.java | 20 +++++------ 10 files changed, 91 insertions(+), 116 deletions(-) delete mode 100644 src/main/java/ru/windcorp/optica/client/graphics/gui/Size.java diff --git a/src/main/java/ru/windcorp/optica/client/graphics/gui/Component.java b/src/main/java/ru/windcorp/optica/client/graphics/gui/Component.java index 3ee94db..6376b0c 100644 --- a/src/main/java/ru/windcorp/optica/client/graphics/gui/Component.java +++ b/src/main/java/ru/windcorp/optica/client/graphics/gui/Component.java @@ -25,6 +25,7 @@ import org.lwjgl.glfw.GLFW; import com.google.common.eventbus.EventBus; +import glm.vec._2.i.Vec2i; import ru.windcorp.optica.client.graphics.backend.InputTracker; import ru.windcorp.optica.client.graphics.flat.RenderTarget; import ru.windcorp.optica.client.graphics.gui.event.ChildAddedEvent; @@ -54,7 +55,7 @@ public class Component extends Named { private boolean valid = false; - private Size preferredSize = null; + private Vec2i preferredSize = null; private Object layoutHint = null; private Layout layout = null; @@ -185,8 +186,8 @@ public class Component extends Named { return this; } - public Component setSize(Size size) { - return setSize(size.width, size.height); + public Component setSize(Vec2i size) { + return setSize(size.x, size.y); } public synchronized Component setBounds(int x, int y, int width, int height) { @@ -195,8 +196,8 @@ public class Component extends Named { return this; } - public Component setBounds(int x, int y, Size size) { - return setBounds(x, y, size.width, size.height); + public Component setBounds(int x, int y, Vec2i size) { + return setBounds(x, y, size.x, size.y); } public boolean isValid() { @@ -235,7 +236,7 @@ public class Component extends Named { } } - public synchronized Size getPreferredSize() { + public synchronized Vec2i getPreferredSize() { if (preferredSize != null) { return preferredSize; } @@ -248,16 +249,16 @@ public class Component extends Named { } } - return new Size(0, 0); + return new Vec2i(0, 0); } - public synchronized Component setPreferredSize(Size preferredSize) { + public synchronized Component setPreferredSize(Vec2i preferredSize) { this.preferredSize = preferredSize; return this; } public Component setPreferredSize(int width, int height) { - return setPreferredSize(new Size(width, height)); + return setPreferredSize(new Vec2i(width, height)); } public Layout getLayout() { diff --git a/src/main/java/ru/windcorp/optica/client/graphics/gui/LayerTestGUI.java b/src/main/java/ru/windcorp/optica/client/graphics/gui/LayerTestGUI.java index dc6714e..e194bf1 100644 --- a/src/main/java/ru/windcorp/optica/client/graphics/gui/LayerTestGUI.java +++ b/src/main/java/ru/windcorp/optica/client/graphics/gui/LayerTestGUI.java @@ -19,6 +19,7 @@ package ru.windcorp.optica.client.graphics.gui; import com.google.common.eventbus.Subscribe; +import glm.vec._2.i.Vec2i; import ru.windcorp.optica.client.graphics.Colors; import ru.windcorp.optica.client.graphics.flat.RenderTarget; import ru.windcorp.optica.client.graphics.gui.event.HoverEvent; @@ -30,7 +31,7 @@ public class LayerTestGUI extends GUILayer { private static class DebugComponent extends Component { private final int color; - public DebugComponent(String name, Size size, int color) { + public DebugComponent(String name, Vec2i size, int color) { super(name); this.color = color; @@ -68,7 +69,7 @@ public class LayerTestGUI extends GUILayer { public LayerTestGUI() { super("LayerTestGui", new LayoutAlign(1, 0.75, 5)); - getRoot().addChild(new DebugComponent("Alex", new Size(200, 100), 0x44FF44)); + getRoot().addChild(new DebugComponent("Alex", new Vec2i(200, 100), 0x44FF44)); } } diff --git a/src/main/java/ru/windcorp/optica/client/graphics/gui/Layout.java b/src/main/java/ru/windcorp/optica/client/graphics/gui/Layout.java index d7ad7d1..9858314 100644 --- a/src/main/java/ru/windcorp/optica/client/graphics/gui/Layout.java +++ b/src/main/java/ru/windcorp/optica/client/graphics/gui/Layout.java @@ -17,10 +17,12 @@ *******************************************************************************/ package ru.windcorp.optica.client.graphics.gui; +import glm.vec._2.i.Vec2i; + public interface Layout { public void layout(Component c); - public Size calculatePreferredSize(Component c); + public Vec2i calculatePreferredSize(Component c); } diff --git a/src/main/java/ru/windcorp/optica/client/graphics/gui/Size.java b/src/main/java/ru/windcorp/optica/client/graphics/gui/Size.java deleted file mode 100644 index ce72e4a..0000000 --- a/src/main/java/ru/windcorp/optica/client/graphics/gui/Size.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Optica - * Copyright (C) 2020 Wind Corporation - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - *******************************************************************************/ -package ru.windcorp.optica.client.graphics.gui; - -public class Size { - - public int width, height; - - public Size(int width, int height) { - this.width = width; - this.height = height; - } - -} \ No newline at end of file diff --git a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutAlign.java b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutAlign.java index 7718165..1dbe5fd 100644 --- a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutAlign.java +++ b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutAlign.java @@ -20,9 +20,9 @@ package ru.windcorp.optica.client.graphics.gui.layout; import static java.lang.Math.max; import static java.lang.Math.min; +import glm.vec._2.i.Vec2i; import ru.windcorp.optica.client.graphics.gui.Component; import ru.windcorp.optica.client.graphics.gui.Layout; -import ru.windcorp.optica.client.graphics.gui.Size; public class LayoutAlign implements Layout { @@ -47,19 +47,19 @@ public class LayoutAlign implements Layout { public void layout(Component c) { c.getChildren().forEach(child -> { - Size size = child.getPreferredSize(); + Vec2i size = child.getPreferredSize(); int cWidth = c.getWidth() - 2 * margin; int cHeight = c.getHeight() - 2 * margin; - size.width = min(size.width, cWidth); - size.height = min(size.height, cHeight); + size.x = min(size.x, cWidth); + size.y = min(size.y, cHeight); child.setBounds( c.getX() + - (int) ((cWidth - size.width) * alignX) + margin, + (int) ((cWidth - size.x) * alignX) + margin, c.getY() + - (int) ((cHeight - size.height) * alignY) + margin, + (int) ((cHeight - size.y) * alignY) + margin, size ); @@ -67,18 +67,18 @@ public class LayoutAlign implements Layout { } @Override - public Size calculatePreferredSize(Component c) { - Size result = new Size(0, 0); + public Vec2i calculatePreferredSize(Component c) { + Vec2i result = new Vec2i(0, 0); c.getChildren().stream() .map(child -> child.getPreferredSize()) .forEach(size -> { - result.width = max(size.width, result.width); - result.height = max(size.height, result.height); + result.x = max(size.x, result.x); + result.y = max(size.y, result.y); }); - result.width += 2 * margin; - result.height += 2 * margin; + result.x += 2 * margin; + result.y += 2 * margin; return result; } diff --git a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutBorderHorizontal.java b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutBorderHorizontal.java index 3b53d63..3ae970c 100644 --- a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutBorderHorizontal.java +++ b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutBorderHorizontal.java @@ -19,9 +19,9 @@ package ru.windcorp.optica.client.graphics.gui.layout; import static java.lang.Math.max; +import glm.vec._2.i.Vec2i; import ru.windcorp.optica.client.graphics.gui.Component; import ru.windcorp.optica.client.graphics.gui.Layout; -import ru.windcorp.optica.client.graphics.gui.Size; public class LayoutBorderHorizontal implements Layout { @@ -43,25 +43,25 @@ public class LayoutBorderHorizontal implements Layout { public void layout(Component c) { int left = 0, right = 0; - Size childSize; + Vec2i childSize; synchronized (c.getChildren()) { for (Component child : c.getChildren()) { if (child.getLayoutHint() == LEFT) { childSize = child.getPreferredSize(); - left = childSize.width + margin; + left = childSize.x + margin; child.setBounds( c.getX(), c.getY(), - childSize.width, + childSize.x, c.getHeight()); } else if (child.getLayoutHint() == RIGHT) { childSize = child.getPreferredSize(); - right = childSize.width + margin; + right = childSize.x + margin; child.setBounds( - c.getX() + c.getWidth() - childSize.width, + c.getX() + c.getWidth() - childSize.x, c.getY(), - childSize.width, + childSize.x, c.getHeight()); } } @@ -80,11 +80,11 @@ public class LayoutBorderHorizontal implements Layout { } @Override - public Size calculatePreferredSize(Component c) { - Size result = new Size(0, 0); + public Vec2i calculatePreferredSize(Component c) { + Vec2i result = new Vec2i(0, 0); int left = 0, right = 0; - Size childSize; + Vec2i childSize; synchronized (c.getChildren()) { for (Component child : c.getChildren()) { @@ -92,22 +92,22 @@ public class LayoutBorderHorizontal implements Layout { if (child.getLayoutHint() instanceof String) { if (child.getLayoutHint() == LEFT) { - left = max(left, childSize.width + margin); - result.height = max(result.height, childSize.height); + left = max(left, childSize.x + margin); + result.y = max(result.y, childSize.y); continue; } else if (child.getLayoutHint() == RIGHT) { - right = max(right, childSize.width + margin); - result.height = max(result.height, childSize.height); + right = max(right, childSize.x + margin); + result.y = max(result.y, childSize.y); continue; } } - result.width = max(result.width, childSize.width); - result.height = max(result.height, childSize.height); + result.x = max(result.x, childSize.x); + result.y = max(result.y, childSize.y); } } - result.width += left + right; + result.x += left + right; return result; } diff --git a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutBorderVertical.java b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutBorderVertical.java index a19698a..2374493 100644 --- a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutBorderVertical.java +++ b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutBorderVertical.java @@ -19,9 +19,9 @@ package ru.windcorp.optica.client.graphics.gui.layout; import static java.lang.Math.max; +import glm.vec._2.i.Vec2i; import ru.windcorp.optica.client.graphics.gui.Component; import ru.windcorp.optica.client.graphics.gui.Layout; -import ru.windcorp.optica.client.graphics.gui.Size; public class LayoutBorderVertical implements Layout { @@ -44,25 +44,25 @@ public class LayoutBorderVertical implements Layout { public void layout(Component c) { int top = 0, bottom = 0; - Size childSize; + Vec2i childSize; synchronized (c.getChildren()) { for (Component child : c.getChildren()) { if (child.getLayoutHint() == UP) { childSize = child.getPreferredSize(); - top = childSize.height + margin; + top = childSize.y + margin; child.setBounds( c.getX(), c.getY(), c.getWidth(), - childSize.height); + childSize.y); } else if (child.getLayoutHint() == DOWN) { childSize = child.getPreferredSize(); - bottom = childSize.height + margin; + bottom = childSize.y + margin; child.setBounds( c.getX(), - c.getY() + c.getHeight() - childSize.height, - c.getWidth(), childSize.height); + c.getY() + c.getHeight() - childSize.y, + c.getWidth(), childSize.y); } } @@ -80,11 +80,11 @@ public class LayoutBorderVertical implements Layout { } @Override - public Size calculatePreferredSize(Component c) { - Size result = new Size(0, 0); + public Vec2i calculatePreferredSize(Component c) { + Vec2i result = new Vec2i(0, 0); int up = 0, down = 0; - Size childSize; + Vec2i childSize; synchronized (c.getChildren()) { for (Component child : c.getChildren()) { @@ -92,22 +92,22 @@ public class LayoutBorderVertical implements Layout { if (child.getLayoutHint() instanceof String) { if (child.getLayoutHint() == UP) { - up = max(up, childSize.height + margin); - result.width = max(result.width, childSize.width); + up = max(up, childSize.y + margin); + result.x = max(result.x, childSize.x); continue; } else if (child.getLayoutHint() == DOWN) { - down = max(down, childSize.height + margin); - result.width = max(result.width, childSize.width); + down = max(down, childSize.y + margin); + result.x = max(result.x, childSize.x); continue; } } - result.width = max(result.width, childSize.width); - result.height = max(result.height, childSize.height); + result.x = max(result.x, childSize.x); + result.y = max(result.y, childSize.y); } } - result.height += up + down; + result.y += up + down; return result; } diff --git a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutGrid.java b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutGrid.java index 2b7d799..8823e92 100644 --- a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutGrid.java +++ b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutGrid.java @@ -19,9 +19,9 @@ package ru.windcorp.optica.client.graphics.gui.layout; import java.util.Arrays; +import glm.vec._2.i.Vec2i; import ru.windcorp.optica.client.graphics.gui.Component; import ru.windcorp.optica.client.graphics.gui.Layout; -import ru.windcorp.optica.client.graphics.gui.Size; public class LayoutGrid implements Layout { @@ -30,10 +30,10 @@ public class LayoutGrid implements Layout { int[] rows = new int[10]; boolean isSummed = false; - void add(int column, int row, Size size) { + void add(int column, int row, Vec2i size) { if (isSummed) throw new IllegalStateException("Already summed"); - columns = update(columns, column, size.width); - rows = update(rows, row, size.height); + columns = update(columns, column, size.x); + rows = update(rows, row, size.y); } private int[] update(int[] array, int index, int value) { @@ -48,19 +48,19 @@ public class LayoutGrid implements Layout { return array; } - Size getBounds() { + Vec2i getBounds() { if (isSummed) throw new IllegalStateException("Already summed"); - Size result = new Size(2*margin - gap, 2*margin - gap); + Vec2i result = new Vec2i(2*margin - gap, 2*margin - gap); for (int i = 0; i < columns.length; ++i) { if (columns[i] != 0) { - result.width += columns[i] + gap; + result.x += columns[i] + gap; } } for (int i = 0; i < rows.length; ++i) { if (rows[i] != 0) { - result.height += rows[i] + gap; + result.y += rows[i] + gap; } } @@ -138,7 +138,7 @@ public class LayoutGrid implements Layout { } @Override - public Size calculatePreferredSize(Component c) { + public Vec2i calculatePreferredSize(Component c) { synchronized (c.getChildren()) { return calculateGrid(c).getBounds(); } diff --git a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutHorizontal.java b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutHorizontal.java index d397f24..51b5b20 100644 --- a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutHorizontal.java +++ b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutHorizontal.java @@ -19,9 +19,9 @@ package ru.windcorp.optica.client.graphics.gui.layout; import static java.lang.Math.max; +import glm.vec._2.i.Vec2i; import ru.windcorp.optica.client.graphics.gui.Component; import ru.windcorp.optica.client.graphics.gui.Layout; -import ru.windcorp.optica.client.graphics.gui.Size; public class LayoutHorizontal implements Layout { @@ -50,7 +50,7 @@ public class LayoutHorizontal implements Layout { synchronized (c.getChildren()) { for (Component child : c.getChildren()) { - width = child.getPreferredSize().width; + width = child.getPreferredSize().x; child.setBounds(x, y, width, c.getHeight() - 2 * margin); x += gap + width; @@ -59,25 +59,25 @@ public class LayoutHorizontal implements Layout { } @Override - public Size calculatePreferredSize(Component c) { - Size size = new Size(0, 0); - Size childPreferredSize; + public Vec2i calculatePreferredSize(Component c) { + Vec2i size = new Vec2i(0, 0); + Vec2i childPreferredSize; synchronized (c.getChildren()) { for (int i = 0; i < c.getChildren().size(); ++i) { childPreferredSize = c.getChild(i).getPreferredSize(); if (i > 0) { - size.width += gap; + size.x += gap; } - size.height = max(size.height, childPreferredSize.height); - size.width += childPreferredSize.width; + size.y = max(size.y, childPreferredSize.y); + size.x += childPreferredSize.x; } } - size.width += 2 * margin; - size.height += 2 * margin; + size.x += 2 * margin; + size.y += 2 * margin; return size; } diff --git a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutVertical.java b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutVertical.java index a72fbc7..a50c706 100644 --- a/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutVertical.java +++ b/src/main/java/ru/windcorp/optica/client/graphics/gui/layout/LayoutVertical.java @@ -19,9 +19,9 @@ package ru.windcorp.optica.client.graphics.gui.layout; import static java.lang.Math.max; +import glm.vec._2.i.Vec2i; import ru.windcorp.optica.client.graphics.gui.Component; import ru.windcorp.optica.client.graphics.gui.Layout; -import ru.windcorp.optica.client.graphics.gui.Size; public class LayoutVertical implements Layout { @@ -50,7 +50,7 @@ public class LayoutVertical implements Layout { synchronized (c.getChildren()) { for (Component child : c.getChildren()) { - height = child.getPreferredSize().height; + height = child.getPreferredSize().y; child.setBounds(x, y, c.getWidth() - 2 * margin, height); y += gap + height; @@ -59,25 +59,25 @@ public class LayoutVertical implements Layout { } @Override - public Size calculatePreferredSize(Component c) { - Size size = new Size(0, 0); - Size childPreferredSize; + public Vec2i calculatePreferredSize(Component c) { + Vec2i size = new Vec2i(0, 0); + Vec2i childPreferredSize; synchronized (c.getChildren()) { for (int i = 0; i < c.getChildren().size(); ++i) { childPreferredSize = c.getChild(i).getPreferredSize(); if (i > 0) { - size.height += gap; + size.y += gap; } - size.width = max(size.width, childPreferredSize.width); - size.height += childPreferredSize.height; + size.x = max(size.x, childPreferredSize.x); + size.y += childPreferredSize.y; } } - size.width += 2 * margin; - size.height += 2 * margin; + size.x += 2 * margin; + size.y += 2 * margin; return size; }