package boxrenderer.xhtml;
import java.awt.Color;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
public class Colors {
private static Map<String, String> colorNames = new HashMap<String, String>() {
@Override
public String put(String key, String value) {
return super.put(key.toLowerCase(), value);
}
};
static {
colorNames.put("AliceBlue", "#F0F8FF");
colorNames.put("AntiqueWhite", "#FAEBD7");
colorNames.put("Aqua", "#00FFFF");
colorNames.put("Aquamarine", "#7FFFD4");
colorNames.put("Azure", "#F0FFFF");
colorNames.put("Beige", "#F5F5DC");
colorNames.put("Bisque", "#FFE4C4");
colorNames.put("Black", "#000000");
colorNames.put("BlanchedAlmond", "#FFEBCD");
colorNames.put("Blue", "#0000FF");
colorNames.put("BlueViolet", "#8A2BE2");
colorNames.put("Brown", "#A52A2A");
colorNames.put("BurlyWood", "#DEB887");
colorNames.put("CadetBlue", "#5F9EA0");
colorNames.put("Chartreuse", "#7FFF00");
colorNames.put("Chocolate", "#D2691E");
colorNames.put("Coral", "#FF7F50");
colorNames.put("CornflowerBlue", "#6495ED");
colorNames.put("Cornsilk", "#FFF8DC");
colorNames.put("Crimson", "#DC143C");
colorNames.put("Cyan", "#00FFFF");
colorNames.put("DarkBlue", "#00008B");
colorNames.put("DarkCyan", "#008B8B");
colorNames.put("DarkGoldenRod", "#B8860B");
colorNames.put("DarkGray", "#A9A9A9");
colorNames.put("DarkGrey", "#A9A9A9");
colorNames.put("DarkGreen", "#006400");
colorNames.put("DarkKhaki", "#BDB76B");
colorNames.put("DarkMagenta", "#8B008B");
colorNames.put("DarkOliveGreen", "#556B2F");
colorNames.put("Darkorange", "#FF8C00");
colorNames.put("DarkOrchid", "#9932CC");
colorNames.put("DarkRed", "#8B0000");
colorNames.put("DarkSalmon", "#E9967A");
colorNames.put("DarkSeaGreen", "#8FBC8F");
colorNames.put("DarkSlateBlue", "#483D8B");
colorNames.put("DarkSlateGray", "#2F4F4F");
colorNames.put("DarkSlateGrey", "#2F4F4F");
colorNames.put("DarkTurquoise", "#00CED1");
colorNames.put("DarkViolet", "#9400D3");
colorNames.put("DeepPink", "#FF1493");
colorNames.put("DeepSkyBlue", "#00BFFF");
colorNames.put("DimGray", "#696969");
colorNames.put("DimGrey", "#696969");
colorNames.put("DodgerBlue", "#1E90FF");
colorNames.put("FireBrick", "#B22222");
colorNames.put("FloralWhite", "#FFFAF0");
colorNames.put("ForestGreen", "#228B22");
colorNames.put("Fuchsia", "#FF00FF");
colorNames.put("Gainsboro", "#DCDCDC");
colorNames.put("GhostWhite", "#F8F8FF");
colorNames.put("Gold", "#FFD700");
colorNames.put("GoldenRod", "#DAA520");
colorNames.put("Gray", "#808080");
colorNames.put("Grey", "#808080");
colorNames.put("Green", "#008000");
colorNames.put("GreenYellow", "#ADFF2F");
colorNames.put("HoneyDew", "#F0FFF0");
colorNames.put("HotPink", "#FF69B4");
colorNames.put("IndianRed", "#CD5C5C");
colorNames.put("Indigo", "#4B0082");
colorNames.put("Ivory", "#FFFFF0");
colorNames.put("Khaki", "#F0E68C");
colorNames.put("Lavender", "#E6E6FA");
colorNames.put("LavenderBlush", "#FFF0F5");
colorNames.put("LawnGreen", "#7CFC00");
colorNames.put("LemonChiffon", "#FFFACD");
colorNames.put("LightBlue", "#ADD8E6");
colorNames.put("LightCoral", "#F08080");
colorNames.put("LightCyan", "#E0FFFF");
colorNames.put("LightGoldenRodYellow", "#FAFAD2");
colorNames.put("LightGray", "#D3D3D3");
colorNames.put("LightGrey", "#D3D3D3");
colorNames.put("LightGreen", "#90EE90");
colorNames.put("LightPink", "#FFB6C1");
colorNames.put("LightSalmon", "#FFA07A");
colorNames.put("LightSeaGreen", "#20B2AA");
colorNames.put("LightSkyBlue", "#87CEFA");
colorNames.put("LightSlateGray", "#778899");
colorNames.put("LightSlateGrey", "#778899");
colorNames.put("LightSteelBlue", "#B0C4DE");
colorNames.put("LightYellow", "#FFFFE0");
colorNames.put("Lime", "#00FF00");
colorNames.put("LimeGreen", "#32CD32");
colorNames.put("Linen", "#FAF0E6");
colorNames.put("Magenta", "#FF00FF");
colorNames.put("Maroon", "#800000");
colorNames.put("MediumAquaMarine", "#66CDAA");
colorNames.put("MediumBlue", "#0000CD");
colorNames.put("MediumOrchid", "#BA55D3");
colorNames.put("MediumPurple", "#9370D8");
colorNames.put("MediumSeaGreen", "#3CB371");
colorNames.put("MediumSlateBlue", "#7B68EE");
colorNames.put("MediumSpringGreen", "#00FA9A");
colorNames.put("MediumTurquoise", "#48D1CC");
colorNames.put("MediumVioletRed", "#C71585");
colorNames.put("MidnightBlue", "#191970");
colorNames.put("MintCream", "#F5FFFA");
colorNames.put("MistyRose", "#FFE4E1");
colorNames.put("Moccasin", "#FFE4B5");
colorNames.put("NavajoWhite", "#FFDEAD");
colorNames.put("Navy", "#000080");
colorNames.put("OldLace", "#FDF5E6");
colorNames.put("Olive", "#808000");
colorNames.put("OliveDrab", "#6B8E23");
colorNames.put("Orange", "#FFA500");
colorNames.put("OrangeRed", "#FF4500");
colorNames.put("Orchid", "#DA70D6");
colorNames.put("PaleGoldenRod", "#EEE8AA");
colorNames.put("PaleGreen", "#98FB98");
colorNames.put("PaleTurquoise", "#AFEEEE");
colorNames.put("PaleVioletRed", "#D87093");
colorNames.put("PapayaWhip", "#FFEFD5");
colorNames.put("PeachPuff", "#FFDAB9");
colorNames.put("Peru", "#CD853F");
colorNames.put("Pink", "#FFC0CB");
colorNames.put("Plum", "#DDA0DD");
colorNames.put("PowderBlue", "#B0E0E6");
colorNames.put("Purple", "#800080");
colorNames.put("Red", "#FF0000");
colorNames.put("RosyBrown", "#BC8F8F");
colorNames.put("RoyalBlue", "#4169E1");
colorNames.put("SaddleBrown", "#8B4513");
colorNames.put("Salmon", "#FA8072");
colorNames.put("SandyBrown", "#F4A460");
colorNames.put("SeaGreen", "#2E8B57");
colorNames.put("SeaShell", "#FFF5EE");
colorNames.put("Sienna", "#A0522D");
colorNames.put("Silver", "#C0C0C0");
colorNames.put("SkyBlue", "#87CEEB");
colorNames.put("SlateBlue", "#6A5ACD");
colorNames.put("SlateGray", "#708090");
colorNames.put("SlateGrey", "#708090");
colorNames.put("Snow", "#FFFAFA");
colorNames.put("SpringGreen", "#00FF7F");
colorNames.put("SteelBlue", "#4682B4");
colorNames.put("Tan", "#D2B48C");
colorNames.put("Teal", "#008080");
colorNames.put("Thistle", "#D8BFD8");
colorNames.put("Tomato", "#FF6347");
colorNames.put("Turquoise", "#40E0D0");
colorNames.put("Violet", "#EE82EE");
colorNames.put("Wheat", "#F5DEB3");
colorNames.put("White", "#FFFFFF");
colorNames.put("WhiteSmoke", "#F5F5F5");
colorNames.put("Yellow", "#FFFF00");
colorNames.put("YellowGreen", "#9ACD32");
}
public static Color getPaint(String definition) {
String colorCode = colorNames.get(definition.toLowerCase());
if(colorCode == null) {
colorCode = definition;
}
if(StringUtils.startsWith(StringUtils.lowerCase(definition), "rgb")) {
return getPaintFromDecRGB(colorCode);
} else {
return getPaintFromHexRGB(colorCode);
}
}
private static Color getPaintFromDecRGB(String code) {
String colors = StringUtils.substringBetween(code, "(", ")");
int r = Integer.parseInt(StringUtils.split(colors, ",")[0]);
int g = Integer.parseInt(StringUtils.split(colors, ",")[1]);
int b = Integer.parseInt(StringUtils.split(colors, ",")[2]);
return new Color(r,g,b);
}
private static Color getPaintFromHexRGB(String code) {
String c = StringUtils.strip(StringUtils.strip(code), "#");
if(c.length()>=6) {
int r = Integer.parseInt(StringUtils.substring(c, 0, 2), 16);
int g = Integer.parseInt(StringUtils.substring(c, 2, 4), 16);
int b = Integer.parseInt(StringUtils.substring(c, 4, 6), 16);
int a = 255;
if(c.length()>=8) {
a = Integer.parseInt(StringUtils.substring(c, 6, 8), 16);
}
return new Color(r,g,b,a);
} else {
throw new IllegalArgumentException("unknown color code "+code);
}
}
}