parent
990c3de5ca
commit
225f062684
@ -1,50 +0,0 @@ |
||||
package mightypork.gamecore.render.fonts.impl; |
||||
|
||||
|
||||
import mightypork.gamecore.render.fonts.GLFont; |
||||
import mightypork.utils.math.color.RGB; |
||||
import mightypork.utils.math.constraints.vect.Vect; |
||||
|
||||
|
||||
/** |
||||
* Null font used where real resource could not be loaded. |
||||
* |
||||
* @author MightyPork |
||||
*/ |
||||
public class NullFont implements GLFont { |
||||
|
||||
@Override |
||||
public void draw(String str, RGB color) |
||||
{ |
||||
// yeah right
|
||||
} |
||||
|
||||
|
||||
@Override |
||||
public Vect getNeededSpace(String str) |
||||
{ |
||||
return Vect.ZERO; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public int getLineHeight() |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public int getWidth(String text) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public int getFontSize() |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,28 @@ |
||||
package mightypork.rogue.screens.main_menu; |
||||
|
||||
import mightypork.gamecore.gui.AlignX; |
||||
import mightypork.gamecore.gui.components.ClickableComponent; |
||||
import mightypork.gamecore.gui.components.painters.TextPainter; |
||||
import mightypork.gamecore.render.fonts.GLFont; |
||||
import mightypork.rogue.Res; |
||||
import mightypork.utils.math.color.Color; |
||||
|
||||
|
||||
class MenuButton extends ClickableComponent { |
||||
|
||||
private static GLFont font = Res.getFont("main_menu_button"); |
||||
private TextPainter painter; |
||||
|
||||
public MenuButton(String text, Color color) { |
||||
this.painter = new TextPainter(font, AlignX.CENTER, color, text); |
||||
painter.setRect(this.shrink(this.height().perc(5))); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
protected void renderComponent() |
||||
{ |
||||
painter.render(); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,23 @@ |
||||
package mightypork.rogue.screens.test_cat_sound; |
||||
|
||||
import mightypork.gamecore.gui.components.painters.QuadPainter; |
||||
import mightypork.gamecore.gui.screens.Screen; |
||||
import mightypork.gamecore.gui.screens.ScreenLayer; |
||||
import mightypork.utils.math.color.Color; |
||||
|
||||
|
||||
public class LayerColor extends ScreenLayer{ |
||||
|
||||
public LayerColor(Screen screen, Color color) { |
||||
super(screen); |
||||
|
||||
root.add(new QuadPainter(color)); |
||||
} |
||||
|
||||
@Override |
||||
public int getPriority() |
||||
{ |
||||
return Integer.MIN_VALUE; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,144 @@ |
||||
package mightypork.utils.math.color; |
||||
|
||||
|
||||
import mightypork.utils.annotations.FactoryMethod; |
||||
import mightypork.utils.math.Calc; |
||||
import mightypork.utils.math.constraints.num.Num; |
||||
|
||||
|
||||
/** |
||||
* Color.<br> |
||||
* All values are 0-1 |
||||
* |
||||
* @author MightyPork |
||||
*/ |
||||
public abstract class Color { |
||||
|
||||
public static final Color NONE = rgba(0, 0, 0, 0); |
||||
public static final Color SHADOW = rgba(0, 0, 0, 0.5); |
||||
|
||||
public static final Color WHITE = rgb(1, 1, 1); |
||||
public static final Color BLACK = rgb(0, 0, 0); |
||||
public static final Color DARK_GRAY = rgb(0.25, 0.25, 0.25); |
||||
public static final Color GRAY = rgb(0.5, 0.5, 0.5); |
||||
public static final Color LIGHT_GRAY = rgb(0.75, 0.75, 0.75); |
||||
|
||||
public static final Color RED = rgb(1, 0, 0); |
||||
public static final Color GREEN = rgb(0, 1, 0); |
||||
public static final Color BLUE = rgb(0, 0, 1); |
||||
|
||||
public static final Color YELLOW = rgb(1, 1, 0); |
||||
public static final Color MAGENTA = rgb(1, 0, 1); |
||||
public static final Color CYAN = rgb(0, 1, 1); |
||||
|
||||
public static final Color ORANGE = rgb(1, 0.78, 0); |
||||
public static final Color PINK = rgb(1, 0.68, 0.68); |
||||
|
||||
@FactoryMethod |
||||
public static final Color rgb(double r, double g, double b) |
||||
{ |
||||
return rgba(Num.make(r), Num.make(g), Num.make(b), Num.ONE); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color rgba(double r, double g, double b, double a) |
||||
{ |
||||
return rgba(Num.make(r), Num.make(g), Num.make(b), Num.make(a)); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color rgba(Num r, Num g, Num b) |
||||
{ |
||||
return rgba(r, g, b, Num.ONE); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color rgba(Num r, Num g, Num b, Num a) |
||||
{ |
||||
return new ColorRgb(r, g, b, a); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color hsb(double h, double s, double b) |
||||
{ |
||||
return hsba(Num.make(h), Num.make(s), Num.make(b), Num.ONE); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color hsba(double h, double s, double b, double a) |
||||
{ |
||||
return hsba(Num.make(h), Num.make(s), Num.make(b), Num.make(a)); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color hsb(Num h, Num s, Num b) |
||||
{ |
||||
return hsba(h, s, b, Num.ONE); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color hsba(Num h, Num s, Num b, Num a) |
||||
{ |
||||
return new ColorHsb(h, s, b, a); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color light(double a) |
||||
{ |
||||
return light(Num.make(a)); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color light(Num a) |
||||
{ |
||||
return rgba(Num.ONE, Num.ONE, Num.ONE, a); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color dark(double a) |
||||
{ |
||||
return dark(Num.make(a)); |
||||
} |
||||
|
||||
@FactoryMethod |
||||
public static final Color dark(Num a) |
||||
{ |
||||
return rgba(Num.ZERO, Num.ZERO, Num.ZERO, a); |
||||
} |
||||
|
||||
|
||||
protected static final double clamp(Num n) |
||||
{ |
||||
return Calc.clampd(n.value(), 0, 1); |
||||
} |
||||
|
||||
|
||||
protected static final double clamp(double n) |
||||
{ |
||||
return Calc.clampd(n, 0, 1); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @return red 0-1 |
||||
*/ |
||||
public abstract double red(); |
||||
|
||||
|
||||
/** |
||||
* @return green 0-1 |
||||
*/ |
||||
public abstract double green(); |
||||
|
||||
|
||||
/** |
||||
* @return blue 0-1 |
||||
*/ |
||||
public abstract double blue(); |
||||
|
||||
|
||||
/** |
||||
* @return alpha 0-1 |
||||
*/ |
||||
public abstract double alpha(); |
||||
} |
@ -0,0 +1,60 @@ |
||||
package mightypork.utils.math.color; |
||||
|
||||
import mightypork.utils.math.constraints.num.Num; |
||||
|
||||
|
||||
public class ColorHsb extends Color { |
||||
|
||||
private final Num h; |
||||
private final Num s; |
||||
private final Num b; |
||||
private final Num a; |
||||
|
||||
|
||||
public ColorHsb(Num h, Num s, Num b, Num a) { |
||||
this.h = h; |
||||
this.s = s; |
||||
this.b = b; |
||||
this.a = a; |
||||
} |
||||
|
||||
|
||||
private double[] asRgb() |
||||
{ |
||||
final int hex = java.awt.Color.HSBtoRGB((float) clamp(h), (float) clamp(s), (float) clamp(b)); |
||||
|
||||
final int bi = hex & 0xff; |
||||
final int gi = (hex >> 8) & 0xff; |
||||
final int ri = (hex >> 16) & 0xff; |
||||
return new double[] { ri / 255D, gi / 255D, bi / 255D, clamp(a) }; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public double red() |
||||
{ |
||||
return asRgb()[0]; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public double green() |
||||
{ |
||||
return asRgb()[1]; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public double blue() |
||||
{ |
||||
return asRgb()[2]; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public double alpha() |
||||
{ |
||||
return asRgb()[3]; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,49 @@ |
||||
package mightypork.utils.math.color; |
||||
|
||||
import mightypork.utils.math.constraints.num.Num; |
||||
|
||||
|
||||
public class ColorRgb extends Color { |
||||
|
||||
private final Num r; |
||||
private final Num g; |
||||
private final Num b; |
||||
private final Num a; |
||||
|
||||
|
||||
public ColorRgb(Num r, Num g, Num b, Num a) { |
||||
this.r = r; |
||||
this.g = g; |
||||
this.b = b; |
||||
this.a = a; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public double red() |
||||
{ |
||||
return clamp(r); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public double green() |
||||
{ |
||||
return clamp(g); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public double blue() |
||||
{ |
||||
return clamp(b); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public double alpha() |
||||
{ |
||||
return clamp(a); |
||||
} |
||||
|
||||
} |
@ -1,178 +0,0 @@ |
||||
package mightypork.utils.math.color; |
||||
|
||||
|
||||
import java.awt.Color; |
||||
|
||||
import mightypork.utils.math.Calc; |
||||
|
||||
|
||||
/** |
||||
* HSV color |
||||
* |
||||
* @author MightyPork |
||||
*/ |
||||
public class HSV { |
||||
|
||||
/** H */ |
||||
public double h; |
||||
/** S */ |
||||
public double s; |
||||
/** V */ |
||||
public double v; |
||||
|
||||
|
||||
/** |
||||
* Create black color 0,0,0 |
||||
*/ |
||||
public HSV() { |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Color from HSV 0-1 |
||||
* |
||||
* @param h |
||||
* @param s |
||||
* @param v |
||||
*/ |
||||
public HSV(Number h, Number s, Number v) { |
||||
this.h = h.doubleValue(); |
||||
this.s = s.doubleValue(); |
||||
this.v = v.doubleValue(); |
||||
norm(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @return hue 0-1 |
||||
*/ |
||||
public double h() |
||||
{ |
||||
return h; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @return saturation 0-1 |
||||
*/ |
||||
public double s() |
||||
{ |
||||
return s; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @return value/brightness 0-1 |
||||
*/ |
||||
public double v() |
||||
{ |
||||
return v; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Set color to other color |
||||
* |
||||
* @param copied copied color |
||||
* @return this |
||||
*/ |
||||
public HSV setTo(HSV copied) |
||||
{ |
||||
h = copied.h; |
||||
s = copied.s; |
||||
v = copied.v; |
||||
|
||||
norm(); |
||||
return this; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Set to H,S,V 0-1 |
||||
* |
||||
* @param h hue |
||||
* @param s saturation |
||||
* @param v value |
||||
* @return this |
||||
*/ |
||||
public HSV setTo(Number h, Number s, Number v) |
||||
{ |
||||
this.h = h.doubleValue(); |
||||
this.s = s.doubleValue(); |
||||
this.v = v.doubleValue(); |
||||
norm(); |
||||
return this; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Fix numbers out of range 0-1 |
||||
*/ |
||||
public void norm() |
||||
{ |
||||
h = Calc.clampd(h, 0, 1); |
||||
s = Calc.clampd(s, 0, 1); |
||||
v = Calc.clampd(v, 0, 1); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Convert to RGB |
||||
* |
||||
* @return RGB representation |
||||
*/ |
||||
public RGB toRGB() |
||||
{ |
||||
norm(); |
||||
|
||||
final int rgb = Color.HSBtoRGB((float) h, (float) s, (float) v); |
||||
|
||||
return RGB.fromHex(rgb); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Make from RGB |
||||
* |
||||
* @param color RGB |
||||
* @return HSV |
||||
*/ |
||||
public static HSV fromRGB(RGB color) |
||||
{ |
||||
return color.toHSV(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public String toString() |
||||
{ |
||||
return "HSV[" + h + ";" + s + ";" + v + "]"; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public boolean equals(Object obj) |
||||
{ |
||||
if (obj == null) return false; |
||||
if (!(obj instanceof HSV)) return false; |
||||
return ((HSV) obj).h == h && ((HSV) obj).s == s && ((HSV) obj).v == v; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public int hashCode() |
||||
{ |
||||
return Double.valueOf(h).hashCode() ^ Double.valueOf(s).hashCode() ^ Double.valueOf(v).hashCode(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Get a copy |
||||
* |
||||
* @return copy |
||||
*/ |
||||
public HSV copy() |
||||
{ |
||||
return new HSV().setTo(this); |
||||
} |
||||
} |
@ -1,399 +0,0 @@ |
||||
package mightypork.utils.math.color; |
||||
|
||||
|
||||
import java.awt.Color; |
||||
|
||||
import mightypork.utils.annotations.FactoryMethod; |
||||
import mightypork.utils.math.Calc; |
||||
|
||||
|
||||
/** |
||||
* RGB color |
||||
* |
||||
* @author MightyPork |
||||
*/ |
||||
public class RGB { |
||||
|
||||
/** White */ |
||||
public static final RGB WHITE = new RGB(1, 1, 1); |
||||
/** Black */ |
||||
public static final RGB BLACK = new RGB(0, 0, 0); |
||||
/** Red */ |
||||
public static final RGB RED = new RGB(1, 0, 0); |
||||
/** Lime green */ |
||||
public static final RGB GREEN = new RGB(0, 1, 0); |
||||
/** Blue */ |
||||
public static final RGB BLUE = new RGB(0, 0, 1); |
||||
/** Yellow */ |
||||
public static final RGB YELLOW = new RGB(1, 1, 0); |
||||
/** Purple */ |
||||
public static final RGB PURPLE = new RGB(1, 0, 1); |
||||
/** Cyan */ |
||||
public static final RGB CYAN = new RGB(0, 1, 1); |
||||
/** orange */ |
||||
public static final RGB ORANGE = new RGB(1, 0.6, 0); |
||||
/** no color (alpha=0) */ |
||||
public static final RGB TRANSPARENT = new RGB(0, 0, 0, 0); |
||||
|
||||
/** R */ |
||||
public double r; |
||||
/** G */ |
||||
public double g; |
||||
/** B */ |
||||
public double b; |
||||
/** ALPHA */ |
||||
public double a = 1; |
||||
|
||||
|
||||
/** |
||||
* Create black color 0,0,0 |
||||
*/ |
||||
public RGB() { |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Get copy with custom alpha |
||||
* |
||||
* @param alpha alpha to set |
||||
* @return copy w/ alpha |
||||
*/ |
||||
public RGB setAlpha(double alpha) |
||||
{ |
||||
return copy().setAlpha_ip(alpha); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* set alpha IP |
||||
* |
||||
* @param alpha alpha to set |
||||
* @return this |
||||
*/ |
||||
public RGB setAlpha_ip(double alpha) |
||||
{ |
||||
a = alpha; |
||||
norm(); |
||||
return this; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Get copy. |
||||
* |
||||
* @return copy |
||||
*/ |
||||
public RGB copy() |
||||
{ |
||||
return new RGB(r, g, b, a); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Get copy with alpha multiplied by custom value |
||||
* |
||||
* @param alpha alpha to set |
||||
* @return copy w/ alpha |
||||
*/ |
||||
public RGB mulAlpha(double alpha) |
||||
{ |
||||
return copy().mulAlpha_ip(alpha); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Multiply alpha by given number |
||||
* |
||||
* @param alpha alpha multiplier |
||||
* @return this |
||||
*/ |
||||
public RGB mulAlpha_ip(double alpha) |
||||
{ |
||||
a *= alpha; |
||||
norm(); |
||||
return this; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Color from RGB 0-1 |
||||
* |
||||
* @param r red |
||||
* @param g green |
||||
* @param b blue |
||||
*/ |
||||
public RGB(Number r, Number g, Number b) { |
||||
this.r = r.doubleValue(); |
||||
this.g = g.doubleValue(); |
||||
this.b = b.doubleValue(); |
||||
norm(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Color from RGB 0-1 |
||||
* |
||||
* @param r red |
||||
* @param g green |
||||
* @param b blue |
||||
* @param a alpha |
||||
*/ |
||||
public RGB(Number r, Number g, Number b, Number a) { |
||||
this.r = r.doubleValue(); |
||||
this.g = g.doubleValue(); |
||||
this.b = b.doubleValue(); |
||||
this.a = a.doubleValue(); |
||||
norm(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Color from hex 0xRRGGBB |
||||
* |
||||
* @param hex hex integer |
||||
*/ |
||||
public RGB(int hex) { |
||||
setTo(RGB.fromHex(hex)); |
||||
norm(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Color from hex 0xRRGGBB |
||||
* |
||||
* @param hex hex integer |
||||
* @param alpha alpha color |
||||
*/ |
||||
public RGB(int hex, double alpha) { |
||||
setTo(RGB.fromHex(hex)); |
||||
a = alpha; |
||||
norm(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Color from other RGB and alpha channel |
||||
* |
||||
* @param color other RGB color |
||||
* @param alpha new alpha channel |
||||
*/ |
||||
public RGB(RGB color, double alpha) { |
||||
setTo(color); |
||||
setAlpha_ip(alpha); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @return red channel 0-1 |
||||
*/ |
||||
public double r() |
||||
{ |
||||
return r; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @return green channel 0-1 |
||||
*/ |
||||
public double g() |
||||
{ |
||||
return g; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @return blue channel 0-1 |
||||
*/ |
||||
public double b() |
||||
{ |
||||
return b; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @return alpha 0-1 |
||||
*/ |
||||
public double a() |
||||
{ |
||||
return a; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Set color to other color |
||||
* |
||||
* @param copied copied color |
||||
* @return this |
||||
*/ |
||||
public RGB setTo(RGB copied) |
||||
{ |
||||
r = copied.r; |
||||
g = copied.g; |
||||
b = copied.b; |
||||
a = copied.a; |
||||
|
||||
norm(); |
||||
return this; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Set to represent hex color |
||||
* |
||||
* @param hex hex integer RRGGBB |
||||
* @return this |
||||
*/ |
||||
public RGB setTo(int hex) |
||||
{ |
||||
setTo(RGB.fromHex(hex)); |
||||
norm(); |
||||
return this; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Set to R,G,B 0-1 |
||||
* |
||||
* @param r red |
||||
* @param g green |
||||
* @param b blue |
||||
* @param a alpha |
||||
* @return this |
||||
*/ |
||||
public RGB setTo(Number r, Number g, Number b, Number a) |
||||
{ |
||||
this.r = r.doubleValue(); |
||||
this.g = g.doubleValue(); |
||||
this.b = b.doubleValue(); |
||||
this.a = a.doubleValue(); |
||||
norm(); |
||||
return this; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Set to R,G,B 0-1 |
||||
* |
||||
* @param r red |
||||
* @param g green |
||||
* @param b blue |
||||
* @return this |
||||
*/ |
||||
public RGB setTo(Number r, Number g, Number b) |
||||
{ |
||||
this.r = r.doubleValue(); |
||||
this.g = g.doubleValue(); |
||||
this.b = b.doubleValue(); |
||||
this.a = 1; |
||||
norm(); |
||||
return this; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Fix numbers out of range 0-1 |
||||
* |
||||
* @return this |
||||
*/ |
||||
public RGB norm() |
||||
{ |
||||
r = Calc.clampd(r, 0, 1); |
||||
g = Calc.clampd(g, 0, 1); |
||||
b = Calc.clampd(b, 0, 1); |
||||
a = Calc.clampd(a, 0, 1); |
||||
return this; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Get hex value 0xRRGGBB |
||||
* |
||||
* @return hex value RRGGBB |
||||
*/ |
||||
public int getHex() |
||||
{ |
||||
final int ri = (int) Math.round(r * 255); |
||||
final int gi = (int) Math.round(g * 255); |
||||
final int bi = (int) Math.round(b * 255); |
||||
return (ri << 16) | (gi << 8) | bi; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Convert to HSV |
||||
* |
||||
* @return HSV representation |
||||
*/ |
||||
public HSV toHSV() |
||||
{ |
||||
final float[] hsv = { 0, 0, 0 }; |
||||
Color.RGBtoHSB((int) (r * 255), (int) (g * 255), (int) (b * 255), hsv); |
||||
return new HSV(hsv[0], hsv[1], hsv[2]); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Create color from hex 0xRRGGBB |
||||
* |
||||
* @param hex hex RRGGBB |
||||
* @return the new color |
||||
*/ |
||||
@FactoryMethod |
||||
public static RGB fromHex(int hex) |
||||
{ |
||||
final int bi = hex & 0xff; |
||||
final int gi = (hex >> 8) & 0xff; |
||||
final int ri = (hex >> 16) & 0xff; |
||||
return new RGB(ri / 255D, gi / 255D, bi / 255D); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Make from HSV |
||||
* |
||||
* @param color HSV color |
||||
* @return RGB |
||||
*/ |
||||
@FactoryMethod |
||||
public static RGB fromHSV(HSV color) |
||||
{ |
||||
return color.toRGB(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public String toString() |
||||
{ |
||||
return "RGB[" + r + ";" + g + ";" + b + ";" + a + "]"; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public boolean equals(Object obj) |
||||
{ |
||||
if (obj == null) return false; |
||||
if (!(obj instanceof RGB)) return false; |
||||
return ((RGB) obj).r == r && ((RGB) obj).g == g && ((RGB) obj).b == b && ((RGB) obj).a == a; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public int hashCode() |
||||
{ |
||||
return Double.valueOf(r).hashCode() ^ Double.valueOf(g).hashCode() ^ Double.valueOf(b).hashCode() ^ Double.valueOf(a).hashCode(); |
||||
} |
||||
|
||||
|
||||
@FactoryMethod |
||||
public static RGB dark(double d) |
||||
{ |
||||
return new RGB(0, 0, 0, d); |
||||
} |
||||
|
||||
|
||||
@FactoryMethod |
||||
public static RGB light(double d) |
||||
{ |
||||
return new RGB(1, 1, 1, d); |
||||
} |
||||
} |
Loading…
Reference in new issue