package se.kodapan.osm.city;
import org.apache.commons.codec.binary.Hex;
import java.util.ArrayList;
import java.util.List;
/**
* @author kalle
* @since 2015-01-12 04:39
*/
public class Palette {
private List<Color> colors = new ArrayList<Color>();
public Palette addColor(String rgb) {
if (rgb.startsWith("#")) {
rgb = rgb.substring(1);
}
int r = Integer.parseInt(rgb.substring(0, 2), 16);
int g = Integer.parseInt(rgb.substring(2, 4), 16);
int b = Integer.parseInt(rgb.substring(4, 6), 16);
return addColor(new java.awt.Color(r, g, b).getRGB());
}
public Palette addColor(int rgb) {
Color color = new Color();
color.setAttributeIndex((byte)colors.size());
color.setRgb(rgb);
colors.add(color);
return this;
}
public Color getColor(int rgb) {
Color rgbColor = new Color();
rgbColor.setRgb(rgb);
double closesDistance = Double.MAX_VALUE;
Color closestColor = null;
for (Color color : colors) {
if (color.getRgb() == rgb) {
return color;
}
double distance = color.distanceTo(rgbColor);
if (distance < closesDistance) {
closestColor = color;
closesDistance = distance;
}
}
return closestColor;
}
public List<Color> getColors() {
return colors;
}
public void setColors(List<Color> colors) {
this.colors = colors;
}
}