Refactor color handling by introducing MutableRgbaColor and updating ImmutableRgbaColor to use it; modify G2DDrawWindow and G2DDrawControlTooltip to utilize new color class.
This commit is contained in:
@@ -38,7 +38,7 @@ public class G2DDrawWindow extends G2DAbstractRenderingBo implements DrawWindowR
|
||||
}
|
||||
|
||||
final var cMain = this.color.toAwtColor();
|
||||
final var rgbaDarker = new RgbaColor(cMain);
|
||||
final var rgbaDarker = this.color.toMutable();
|
||||
rgbaDarker.setR(rgbaDarker.getR() / 2);
|
||||
rgbaDarker.setG(rgbaDarker.getG() / 2);
|
||||
rgbaDarker.setB(rgbaDarker.getB() / 2);
|
||||
|
||||
@@ -5,8 +5,8 @@ import java.awt.Graphics2D;
|
||||
|
||||
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DAbstractRenderingBo;
|
||||
import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont;
|
||||
import de.extio.game_engine.renderer.model.MutableRgbaColor;
|
||||
import de.extio.game_engine.renderer.model.RenderingBoLayer;
|
||||
import de.extio.game_engine.renderer.model.RgbaColor;
|
||||
import de.extio.game_engine.spatial2.model.CoordI2;
|
||||
|
||||
public class G2DDrawControlTooltip extends G2DAbstractRenderingBo {
|
||||
@@ -16,7 +16,7 @@ public class G2DDrawControlTooltip extends G2DAbstractRenderingBo {
|
||||
|
||||
public static TooltipRecord TOOLTIP = null;
|
||||
|
||||
private static Color BACKGROUND = (new RgbaColor(0, 0, 0, 150)).toAwtColor();
|
||||
private static Color BACKGROUND = (new MutableRgbaColor(0, 0, 0, 150)).toAwtColor();
|
||||
|
||||
public G2DDrawControlTooltip() {
|
||||
super(RenderingBoLayer.TOP);
|
||||
|
||||
@@ -1,13 +1,26 @@
|
||||
package de.extio.game_engine.renderer.model;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.Objects;
|
||||
|
||||
public final class ImmutableRgbaColor extends RgbaColor {
|
||||
public final class ImmutableRgbaColor implements RgbaColor {
|
||||
|
||||
private final int r;
|
||||
|
||||
private final int g;
|
||||
|
||||
private final int b;
|
||||
|
||||
private final int a;
|
||||
|
||||
private transient Color awtColor;
|
||||
|
||||
ImmutableRgbaColor() {
|
||||
|
||||
public ImmutableRgbaColor(final Color color) {
|
||||
this.r = color.getRed();
|
||||
this.g = color.getGreen();
|
||||
this.b = color.getBlue();
|
||||
this.a = color.getAlpha();
|
||||
this.awtColor = color;
|
||||
}
|
||||
|
||||
public ImmutableRgbaColor(final RgbaColor color) {
|
||||
@@ -15,7 +28,6 @@ public final class ImmutableRgbaColor extends RgbaColor {
|
||||
this.g = color.getG();
|
||||
this.b = color.getB();
|
||||
this.a = color.getA();
|
||||
this.awtColor = super.toAwtColor();
|
||||
}
|
||||
|
||||
public ImmutableRgbaColor(final int r, final int g, final int b) {
|
||||
@@ -23,7 +35,6 @@ public final class ImmutableRgbaColor extends RgbaColor {
|
||||
this.g = g;
|
||||
this.b = b;
|
||||
this.a = 255;
|
||||
this.awtColor = super.toAwtColor();
|
||||
}
|
||||
|
||||
public ImmutableRgbaColor(final int r, final int g, final int b, final int a) {
|
||||
@@ -31,47 +42,26 @@ public final class ImmutableRgbaColor extends RgbaColor {
|
||||
this.g = g;
|
||||
this.b = b;
|
||||
this.a = a;
|
||||
this.awtColor = super.toAwtColor();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void xor(final RgbaColor other) {
|
||||
throw new UnsupportedOperationException();
|
||||
public int getR() {
|
||||
return this.r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void or(final RgbaColor other) {
|
||||
throw new UnsupportedOperationException();
|
||||
public int getG() {
|
||||
return this.g;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void and(final RgbaColor other) {
|
||||
throw new UnsupportedOperationException();
|
||||
public int getB() {
|
||||
return this.b;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void screen(final RgbaColor other) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setA(final int a) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setB(final int b) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setG(final int g) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setR(final int r) {
|
||||
throw new UnsupportedOperationException();
|
||||
public int getA() {
|
||||
return this.a;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,7 +69,39 @@ public final class ImmutableRgbaColor extends RgbaColor {
|
||||
if (this.awtColor != null) {
|
||||
return this.awtColor;
|
||||
}
|
||||
return super.toAwtColor();
|
||||
this.awtColor = new Color(this.r, this.g, this.b, this.a);
|
||||
return this.awtColor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImmutableRgbaColor toImmutable() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MutableRgbaColor toMutable() {
|
||||
return new MutableRgbaColor(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(this.r, this.g, this.b, this.a);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (!(obj instanceof final RgbaColor other)) {
|
||||
return false;
|
||||
}
|
||||
return this.r == other.getR() && this.g == other.getG() && this.b == other.getB() && this.a == other.getA();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ImmutableRgbaColor [r=" + this.r + ", g=" + this.g + ", b=" + this.b + ", a=" + this.a + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
package de.extio.game_engine.renderer.model;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.Objects;
|
||||
|
||||
public final class MutableRgbaColor implements RgbaColor {
|
||||
|
||||
private int r;
|
||||
|
||||
private int g;
|
||||
|
||||
private int b;
|
||||
|
||||
private int a;
|
||||
|
||||
public MutableRgbaColor(final int r, final int g, final int b) {
|
||||
this.r = r;
|
||||
this.g = g;
|
||||
this.b = b;
|
||||
this.a = 255;
|
||||
}
|
||||
|
||||
public MutableRgbaColor(final int r, final int g, final int b, final int a) {
|
||||
this.r = r;
|
||||
this.g = g;
|
||||
this.b = b;
|
||||
this.a = a;
|
||||
}
|
||||
|
||||
public MutableRgbaColor(final Color color) {
|
||||
this.r = color.getRed();
|
||||
this.g = color.getGreen();
|
||||
this.b = color.getBlue();
|
||||
this.a = color.getAlpha();
|
||||
}
|
||||
|
||||
public MutableRgbaColor(final RgbaColor color) {
|
||||
this.r = color.getR();
|
||||
this.g = color.getG();
|
||||
this.b = color.getB();
|
||||
this.a = color.getA();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Color toAwtColor() {
|
||||
return new Color(this.r, this.g, this.b, this.a);
|
||||
}
|
||||
|
||||
public void xor(final RgbaColor other) {
|
||||
this.r ^= other.getR();
|
||||
this.g ^= other.getG();
|
||||
this.b ^= other.getB();
|
||||
}
|
||||
|
||||
public void or(final RgbaColor other) {
|
||||
this.r |= other.getR();
|
||||
this.g |= other.getG();
|
||||
this.b |= other.getB();
|
||||
}
|
||||
|
||||
public void and(final RgbaColor other) {
|
||||
this.r &= other.getR();
|
||||
this.g &= other.getG();
|
||||
this.b &= other.getB();
|
||||
}
|
||||
|
||||
public void screen(final RgbaColor other) {
|
||||
this.r = (int) ((1.0 - (1.0 - (this.r / 255.0)) * (1.0 - (other.getR() / 255.0))) * 255.0);
|
||||
this.g = (int) ((1.0 - (1.0 - (this.g / 255.0)) * (1.0 - (other.getG() / 255.0))) * 255.0);
|
||||
this.b = (int) ((1.0 - (1.0 - (this.b / 255.0)) * (1.0 - (other.getB() / 255.0))) * 255.0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getR() {
|
||||
return this.r;
|
||||
}
|
||||
|
||||
public void setR(final int r) {
|
||||
this.r = r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getG() {
|
||||
return this.g;
|
||||
}
|
||||
|
||||
public void setG(final int g) {
|
||||
this.g = g;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getB() {
|
||||
return this.b;
|
||||
}
|
||||
|
||||
public void setB(final int b) {
|
||||
this.b = b;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getA() {
|
||||
return this.a;
|
||||
}
|
||||
|
||||
public void setA(final int a) {
|
||||
this.a = a;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImmutableRgbaColor toImmutable() {
|
||||
return new ImmutableRgbaColor(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MutableRgbaColor toMutable() {
|
||||
return new MutableRgbaColor(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(this.r, this.g, this.b, this.a);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (!(obj instanceof final RgbaColor other)) {
|
||||
return false;
|
||||
}
|
||||
return this.r == other.getR() && this.g == other.getG() && this.b == other.getB() && this.a == other.getA();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "MutableRgbaColor [r=" + this.r + ", g=" + this.g + ", b=" + this.b + ", a=" + this.a + "]";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,189 +1,81 @@
|
||||
package de.extio.game_engine.renderer.model;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.Objects;
|
||||
|
||||
public class RgbaColor {
|
||||
public interface RgbaColor {
|
||||
|
||||
public final static RgbaColor WHITE = new ImmutableRgbaColor(255, 255, 255, 255);
|
||||
RgbaColor WHITE = new ImmutableRgbaColor(255, 255, 255, 255);
|
||||
|
||||
public final static RgbaColor LIGHT_GRAY = new ImmutableRgbaColor(192, 192, 192, 255);
|
||||
RgbaColor LIGHT_GRAY = new ImmutableRgbaColor(192, 192, 192, 255);
|
||||
|
||||
public final static RgbaColor GRAY = new ImmutableRgbaColor(128, 128, 128, 255);
|
||||
RgbaColor GRAY = new ImmutableRgbaColor(128, 128, 128, 255);
|
||||
|
||||
public final static RgbaColor DARK_GRAY = new ImmutableRgbaColor(64, 64, 64, 255);
|
||||
RgbaColor DARK_GRAY = new ImmutableRgbaColor(64, 64, 64, 255);
|
||||
|
||||
public final static RgbaColor DARK_GRAY2 = new ImmutableRgbaColor(32, 32, 32, 255);
|
||||
RgbaColor DARK_GRAY2 = new ImmutableRgbaColor(32, 32, 32, 255);
|
||||
|
||||
public final static RgbaColor BLACK = new ImmutableRgbaColor(0, 0, 0, 255);
|
||||
RgbaColor BLACK = new ImmutableRgbaColor(0, 0, 0, 255);
|
||||
|
||||
public final static RgbaColor BLACK_DARKEN = new ImmutableRgbaColor(0, 0, 0, 100);
|
||||
RgbaColor BLACK_DARKEN = new ImmutableRgbaColor(0, 0, 0, 100);
|
||||
|
||||
public final static RgbaColor LIGHT_RED = new ImmutableRgbaColor(255, 128, 128, 255);
|
||||
RgbaColor LIGHT_RED = new ImmutableRgbaColor(255, 128, 128, 255);
|
||||
|
||||
public final static RgbaColor RED = new ImmutableRgbaColor(255, 0, 0, 255);
|
||||
RgbaColor RED = new ImmutableRgbaColor(255, 0, 0, 255);
|
||||
|
||||
public final static RgbaColor DARK_RED = new ImmutableRgbaColor(128, 0, 0, 255);
|
||||
RgbaColor DARK_RED = new ImmutableRgbaColor(128, 0, 0, 255);
|
||||
|
||||
public final static RgbaColor DARK_RED2 = new ImmutableRgbaColor(64, 0, 0, 255);
|
||||
RgbaColor DARK_RED2 = new ImmutableRgbaColor(64, 0, 0, 255);
|
||||
|
||||
public final static RgbaColor PINK = new ImmutableRgbaColor(255, 175, 175, 255);
|
||||
RgbaColor PINK = new ImmutableRgbaColor(255, 175, 175, 255);
|
||||
|
||||
public final static RgbaColor DARK_PINK = new ImmutableRgbaColor(128, 88, 88, 255);
|
||||
RgbaColor DARK_PINK = new ImmutableRgbaColor(128, 88, 88, 255);
|
||||
|
||||
public final static RgbaColor DARK_PINK2 = new ImmutableRgbaColor(64, 44, 44, 255);
|
||||
RgbaColor DARK_PINK2 = new ImmutableRgbaColor(64, 44, 44, 255);
|
||||
|
||||
public final static RgbaColor LIGHT_YELLOW = new ImmutableRgbaColor(235, 255, 151, 255);
|
||||
RgbaColor LIGHT_YELLOW = new ImmutableRgbaColor(235, 255, 151, 255);
|
||||
|
||||
public final static RgbaColor YELLOW = new ImmutableRgbaColor(214, 255, 43, 255);
|
||||
RgbaColor YELLOW = new ImmutableRgbaColor(214, 255, 43, 255);
|
||||
|
||||
public final static RgbaColor DARK_YELLOW = new ImmutableRgbaColor(160, 192, 33, 255);
|
||||
RgbaColor DARK_YELLOW = new ImmutableRgbaColor(160, 192, 33, 255);
|
||||
|
||||
public final static RgbaColor DARK_YELLOW2 = new ImmutableRgbaColor(64, 79, 0, 255);
|
||||
RgbaColor DARK_YELLOW2 = new ImmutableRgbaColor(64, 79, 0, 255);
|
||||
|
||||
public final static RgbaColor LIGHT_ORANGE = new ImmutableRgbaColor(255, 228, 128, 255);
|
||||
RgbaColor LIGHT_ORANGE = new ImmutableRgbaColor(255, 228, 128, 255);
|
||||
|
||||
public final static RgbaColor ORANGE = new ImmutableRgbaColor(255, 200, 0, 255);
|
||||
RgbaColor ORANGE = new ImmutableRgbaColor(255, 200, 0, 255);
|
||||
|
||||
public final static RgbaColor DARK_ORANGE = new ImmutableRgbaColor(128, 100, 0, 255);
|
||||
RgbaColor DARK_ORANGE = new ImmutableRgbaColor(128, 100, 0, 255);
|
||||
|
||||
public final static RgbaColor DARK_ORANGE2 = new ImmutableRgbaColor(64, 50, 0, 255);
|
||||
RgbaColor DARK_ORANGE2 = new ImmutableRgbaColor(64, 50, 0, 255);
|
||||
|
||||
public final static RgbaColor LIGHT_GREEN = new ImmutableRgbaColor(128, 255, 128, 255);
|
||||
RgbaColor LIGHT_GREEN = new ImmutableRgbaColor(128, 255, 128, 255);
|
||||
|
||||
public final static RgbaColor GREEN = new ImmutableRgbaColor(0, 255, 0, 255);
|
||||
RgbaColor GREEN = new ImmutableRgbaColor(0, 255, 0, 255);
|
||||
|
||||
public final static RgbaColor DARK_GREEN = new ImmutableRgbaColor(0, 128, 0, 255);
|
||||
RgbaColor DARK_GREEN = new ImmutableRgbaColor(0, 128, 0, 255);
|
||||
|
||||
public final static RgbaColor DARK_GREEN2 = new ImmutableRgbaColor(0, 64, 0, 255);
|
||||
RgbaColor DARK_GREEN2 = new ImmutableRgbaColor(0, 64, 0, 255);
|
||||
|
||||
public final static RgbaColor LIGHT_BLUE = new ImmutableRgbaColor(128, 192, 255, 255);
|
||||
RgbaColor LIGHT_BLUE = new ImmutableRgbaColor(128, 192, 255, 255);
|
||||
|
||||
public final static RgbaColor BLUE = new ImmutableRgbaColor(0, 0, 255, 255);
|
||||
RgbaColor BLUE = new ImmutableRgbaColor(0, 0, 255, 255);
|
||||
|
||||
public final static RgbaColor DARK_BLUE = new ImmutableRgbaColor(0, 0, 128, 255);
|
||||
RgbaColor DARK_BLUE = new ImmutableRgbaColor(0, 0, 128, 255);
|
||||
|
||||
public final static RgbaColor DARK_BLUE2 = new ImmutableRgbaColor(0, 0, 64, 255);
|
||||
RgbaColor DARK_BLUE2 = new ImmutableRgbaColor(0, 0, 64, 255);
|
||||
|
||||
protected int r;
|
||||
int getR();
|
||||
|
||||
protected int g;
|
||||
int getG();
|
||||
|
||||
protected int b;
|
||||
int getB();
|
||||
|
||||
protected int a;
|
||||
int getA();
|
||||
|
||||
RgbaColor() {
|
||||
Color toAwtColor();
|
||||
|
||||
}
|
||||
ImmutableRgbaColor toImmutable();
|
||||
|
||||
public RgbaColor(final int r, final int g, final int b) {
|
||||
this.r = r;
|
||||
this.g = g;
|
||||
this.b = b;
|
||||
this.a = 255;
|
||||
}
|
||||
|
||||
public RgbaColor(final int r, final int g, final int b, final int a) {
|
||||
this.r = r;
|
||||
this.g = g;
|
||||
this.b = b;
|
||||
this.a = a;
|
||||
}
|
||||
|
||||
public RgbaColor(final Color color) {
|
||||
this.r = color.getRed();
|
||||
this.g = color.getGreen();
|
||||
this.b = color.getBlue();
|
||||
this.a = color.getAlpha();
|
||||
}
|
||||
|
||||
public RgbaColor(final RgbaColor color) {
|
||||
this.r = color.getR();
|
||||
this.g = color.getG();
|
||||
this.b = color.getB();
|
||||
this.a = color.getA();
|
||||
}
|
||||
|
||||
public Color toAwtColor() {
|
||||
return new Color(this.r, this.g, this.b, this.a);
|
||||
}
|
||||
|
||||
public void xor(final RgbaColor other) {
|
||||
this.r ^= other.r;
|
||||
this.g ^= other.g;
|
||||
this.b ^= other.b;
|
||||
}
|
||||
|
||||
public void or(final RgbaColor other) {
|
||||
this.r |= other.r;
|
||||
this.g |= other.g;
|
||||
this.b |= other.b;
|
||||
}
|
||||
|
||||
public void and(final RgbaColor other) {
|
||||
this.r &= other.r;
|
||||
this.g &= other.g;
|
||||
this.b &= other.b;
|
||||
}
|
||||
|
||||
public void screen(final RgbaColor other) {
|
||||
this.r = (int) ((1.0 - (1.0 - (this.r / 255.0)) * (1.0 - (other.r / 255.0))) * 255.0);
|
||||
this.g = (int) ((1.0 - (1.0 - (this.g / 255.0)) * (1.0 - (other.g / 255.0))) * 255.0);
|
||||
this.b = (int) ((1.0 - (1.0 - (this.b / 255.0)) * (1.0 - (other.b / 255.0))) * 255.0);
|
||||
}
|
||||
|
||||
public int getR() {
|
||||
return this.r;
|
||||
}
|
||||
|
||||
public void setR(final int r) {
|
||||
this.r = r;
|
||||
}
|
||||
|
||||
public int getG() {
|
||||
return this.g;
|
||||
}
|
||||
|
||||
public void setG(final int g) {
|
||||
this.g = g;
|
||||
}
|
||||
|
||||
public int getB() {
|
||||
return this.b;
|
||||
}
|
||||
|
||||
public void setB(final int b) {
|
||||
this.b = b;
|
||||
}
|
||||
|
||||
public int getA() {
|
||||
return this.a;
|
||||
}
|
||||
|
||||
public void setA(final int a) {
|
||||
this.a = a;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(this.r, this.g, this.b, this.a);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (!(obj instanceof final RgbaColor other)) {
|
||||
return false;
|
||||
}
|
||||
return this.r == other.r && this.g == other.g && this.b == other.b && this.a == other.a;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RgbaColor [r=" + this.r + ", g=" + this.g + ", b=" + this.b + ", a=" + this.a + "]";
|
||||
}
|
||||
MutableRgbaColor toMutable();
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user