package aimax.osm.viewer;
/**
* A platform independent implementation for colors. Can be used with Android
* and AWT. Letter U stands for unified.
*
* @author Daniel Wonnenberg
* @author Ruediger Lunde
*/
public class UColor {
public static final UColor RED = new UColor(255, 0, 0);
public static final UColor GREEN = new UColor(0, 255, 0);
public static final UColor BLUE = new UColor(0, 0, 255);
public static final UColor PINK = new UColor(255, 175, 175);
public static final UColor ORANGE = new UColor(255, 200, 0);
public static final UColor YELLOW = new UColor(255, 255, 0);
public static final UColor CYAN = new UColor(0, 255, 255);
public static final UColor WHITE = new UColor(255, 255, 255);
public static final UColor LIGHT_GRAY = new UColor(192, 192,
192);
public static final UColor GRAY = new UColor(128, 128, 128);
public static final UColor DARK_GRAY = new UColor(64, 64, 64);
public static final UColor BLACK = new UColor(0, 0, 0);
// //////////////////////////////////////////////////////////////////////////
private int red;
private int green;
private int blue;
private int alpha;
public UColor(int red, int green, int blue) {
this(red, green, blue, 255);
}
/**
* For the parameters use values between 0 and 255.
*/
public UColor(int red, int green, int blue, int alpha) {
if (!isInRange(red) || !isInRange(green) || !isInRange(blue)
|| !isInRange(alpha)) {
throw new IllegalArgumentException("Check parameters (0 to 255)");
}
this.red = red;
this.green = green;
this.blue = blue;
this.alpha = alpha;
}
private boolean isInRange(int number) {
return number >= 0 && number <= 255;
}
public UColor brighter() {
float fac = (float) Math.sqrt(2.0);
return new UColor(round(red * fac), round(green * fac),
round(blue * fac), alpha);
}
public UColor darker() {
float fac = (float) Math.sqrt(0.5);
return new UColor(round(red * fac), round(green * fac),
round(blue * fac), alpha);
}
private int round(float colorValue) {
return Math.min(255, Math.round(colorValue));
}
public int getRed() {
return red;
}
public int getGreen() {
return green;
}
public int getBlue() {
return blue;
}
public int getAlpha() {
return alpha;
}
@Override
public boolean equals(Object otherObject) {
if (otherObject != null && getClass() == otherObject.getClass()) {
final UColor other = (UColor) otherObject;
return other.red == red && other.green == green && other.blue == blue
&& other.alpha == alpha;
} else {
return false;
}
}
@Override
public int hashCode() {
return 3 * red + 11 * green + 23 * blue + 31 * alpha;
}
@Override
public String toString() {
String res = "UColor(";
res += red + ",";
res += green + ",";
res += blue + ",";
res += alpha + ")";
return res;
}
}