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