From 4043436d630df3bcfe8cf6c187c54e9786aef297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Fri, 19 Mar 2021 21:30:15 +0100 Subject: [PATCH] Add support for HEX-defined colors --- .../base/api/game/gui/base/Color.java | 12 ++++++ .../base/api/game/gui/component/Label.java | 21 +++++++++++ .../base/engine/gui/render/NanoVGColor.java | 37 ++++++++++++++++++- 3 files changed, 68 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/base/Color.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/base/Color.java index 07b613e5..cf498399 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/base/Color.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/base/Color.java @@ -5,6 +5,10 @@ public interface Color { void setRGBA(float red, float green, float blue, float alpha); + void setRGB(int hex); + + void setRGBA(long hex); + void setRed(float value); void setGreen(float value); @@ -13,6 +17,14 @@ public interface Color { void setAlpha(float value); + void setRed(int value); + + void setGreen(int value); + + void setBlue(int value); + + void setAlpha(int value); + float getRed(); float getGreen(); diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/component/Label.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/component/Label.java index 5dad3904..c42269ae 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/component/Label.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/gui/component/Label.java @@ -19,6 +19,7 @@ public class Label extends BaseComponent { public Label(Context context, GUI gui) { super(context, gui); this.color = gui.createColor(); + this.color.setRGBA(0xFFFFFFFF); } public String getText() { @@ -61,6 +62,10 @@ public class Label extends BaseComponent { color.setRed(value); } + public void setRed(Integer value) { + color.setRed(value); + } + public float getGreen() { return color.getGreen(); } @@ -69,6 +74,10 @@ public class Label extends BaseComponent { color.setGreen(value); } + public void setGreen(Integer value) { + color.setGreen(value); + } + public float getBlue() { return color.getBlue(); } @@ -77,6 +86,10 @@ public class Label extends BaseComponent { color.setBlue(value); } + public void setBlue(Integer value) { + color.setBlue(value); + } + public float getAlpha() { return color.getAlpha(); } @@ -85,6 +98,10 @@ public class Label extends BaseComponent { color.setAlpha(value); } + public void setAlpha(Integer value) { + color.setAlpha(value); + } + public void setColor(Float red, Float green, Float blue, Float alpha) { color.setRGBA(red, green, blue, alpha); } @@ -93,6 +110,10 @@ public class Label extends BaseComponent { color.setRGB(red, green, blue); } + public void setColor(Integer hex) { + color.setRGB(hex); + } + @Override protected float getContentWidth() { return bounds[2] - bounds[0]; diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/gui/render/NanoVGColor.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/gui/render/NanoVGColor.java index 04a70869..bfeb32d1 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/gui/render/NanoVGColor.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/gui/render/NanoVGColor.java @@ -29,6 +29,21 @@ public class NanoVGColor implements Color, Disposable { color.a(alpha); } + @Override + public void setRGB(int hex) { + color.r(((hex & 0xFF0000) >> 2 * 8) / 255f); + color.g(((hex & 0x00FF00) >> 8) / 255f); + color.b(((hex & 0x0000FF)) / 255f); + } + + @Override + public void setRGBA(long hex) { + color.r(((hex & 0xFF000000L) >> 3 * 8) / 255f); + color.g(((hex & 0x00FF0000L) >> 2 * 8) / 255f); + color.b(((hex & 0x0000FF00L) >> 8) / 255f); + color.a(((hex & 0x000000FFL)) / 255f); + } + @Override public void setRed(float value) { color.r(value); @@ -37,13 +52,11 @@ public class NanoVGColor implements Color, Disposable { @Override public void setGreen(float value) { color.g(value); - } @Override public void setBlue(float value) { color.b(value); - } @Override @@ -51,6 +64,26 @@ public class NanoVGColor implements Color, Disposable { color.a(value); } + @Override + public void setRed(int value) { + color.r(value / 255f); + } + + @Override + public void setGreen(int value) { + color.g(value / 255f); + } + + @Override + public void setBlue(int value) { + color.b(value / 255f); + } + + @Override + public void setAlpha(int value) { + color.a(value / 255f); + } + @Override public float getRed() { return color.r();