Color Schema Generator
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ // Revised from jaspersoft ireport designer import java.awt.Color; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * * @author gtoffoli */ public class ColorSchemaGenerator { public final static String SCHEMA_DEFAULT = "default"; public final static String SCHEMA_PASTEL = "pastel"; public final static String SCHEMA_SOFT = "soft"; public final static String SCHEMA_HARD = "hard"; public final static String SCHEMA_LIGHT = "light"; public final static String SCHEMA_PALE = "pale"; private static float[] schema_default = new float[]{ -1f,-1f, 1f,-0.7f, 0.25f,1f, 0.5f,1f }; private static float[] schema_pastel = new float[]{ 0.5f,-0.9f, 0.5f,0.5f, 0.1f,0.9f, 0.75f,0.75f }; private static float[] schema_soft = new float[]{ 0.3f,-0.8f, 0.3f,0.5f, 0.1f,0.9f, 0.5f,0.75f }; private static float[] schema_hard = new float[]{ 1f,-1f, 1f,-0.6f, 0.1f,1f, 0.6f,1f }; private static float[] schema_light = new float[]{ 0.25f,1f, 0.5f,0.75f, 0.1f,1f, 0.5f,1f }; private static float[] schema_pale = new float[]{ 0.1f,-0.85f, 0.1f,0.5f, 0.1f,1f, 0.1f,0.75f }; private static java.util.Map<String, float[]> schemas = new HashMap<String, float[]>(); static { schemas.put(SCHEMA_DEFAULT, schema_default); schemas.put(SCHEMA_PASTEL, schema_pastel); schemas.put(SCHEMA_SOFT, schema_soft); schemas.put(SCHEMA_HARD, schema_hard); schemas.put(SCHEMA_LIGHT, schema_light); schemas.put(SCHEMA_PALE, schema_pale); } /** * Create the schema color. * * @param base * @param i (a color between 0 and 3) * @param schemaName * @return */ public static Color createColor(Color base, int i, String schemaName) { i = Math.abs(i %= 3); if (schemaName == null) schemaName = SCHEMA_SOFT; float[] schema = schemas.get(schemaName); float[] components = Color.RGBtoHSB(base.getRed(), base.getGreen(), base.getBlue(), null); components[1] = (schema[i*2] < 0) ? -schema[i*2] * components[1] : schema[i*2]; if (components[1] > 1) components[1] = 1.0f; if (components[1] < 0) components[1] = 0; components[2] = (schema[i*2+1] < 0) ? -schema[i*2+1] * components[2] : schema[i*2+1]; if (components[2] > 1) components[2] = 1.0f; if (components[2] < 0) components[2] = 0; return new Color( Color.HSBtoRGB(components[0], components[1], components[2])); } public static List<String> getColors() { if (colorsList == null) { colorsList = new ArrayList<String>(); colorsMap = new HashMap<String,String>(); for (int i=0; i<colors.length/2; ++i) { colorsList.add( colors[i*2] ); colorsMap.put(colors[i*2], colors[(i*2)+1]); } } return colorsList; } public static Color getColor(String name) { if (colorsMap == null) { getColors(); } String rgb = colorsMap.get(name); return decodeColor("#"+rgb); } public static java.awt.Color decodeColor(String colorString) { java.awt.Color color = null; char firstChar = colorString.charAt(0); if (firstChar == '#') { color = new java.awt.Color(Integer.parseInt(colorString.substring(1), 16)); } else if ('0' <= firstChar && firstChar <= '9') { color = new java.awt.Color(Integer.parseInt(colorString)); } else { color = java.awt.Color.black; } return color; } static private List<String> colorsList = null; static private HashMap<String, String> colorsMap = null; static private String[] colors = new String[]{ "Aliceblue","F0F8FF", "Antiquewhite","FAEBD7", "Aqua","00FFFF", "Aquamarine","7FFFD4", "Azure","F0FFFF", "Beige","F5F5DC", "Bisque","FFE4C4", "Black","000000", "Blanchedalmond","FFEBCD", "Blue","0000FF", "Blueviolet","8A2BE2", "Brown","A52A2A", "Burlywood","DEB887", "Cadetblue","5F9EA0", "Chartreuse","7FFF00", "Chocolate","D2691E", "Coral","FF7F50", "Cornflowerblue","6495ED", "Cornsilk","FFF8DC", "Crimson","DC143C", "Cyan","00FFFF", "Darkblue","00008B", "Darkcyan","008B8B", "Darkgoldenrod","B8860B", "Darkgray","A9A9A9", "Darkgreen","006400", "Darkkhaki","BDB76B", "Darkmagenta","8B008B", "Darkolivegreen","556B2F", "Darkorange","FF8C00", "Darkorchid","9932CC", "Darkred","8B0000", "Darksalmon","E9967A", "Darkseagreen","8FBC8F", "Darkslateblue","483D8B", "Darkturqoise","00CED1", "Darkslategray","2F4F4F", "Darkviolet","9400D3", "Deeppink","FF1493", "Deepskyblue","00BFFF", "Dimgray","696969", "Dodgerblue","1E90FF", "Firebrick","B22222", "Floralwhite","FFFAF0", "Forestgreen","228B22", "Fuchsia","FF00FF", "Gainsboro","DCDCDC", "Ghostwhite","F8F8FF", "Gold","FFD700", "Goldenrod","DAA520", "Gray","808080", "Green","008000", "Greenyellow","ADFF2F", "Honeydew","F0FFF0", "Hotpink","FF69B4", "Indianred","CD5C5C", "Indigo","4B0082", "Ivory","FFFFF0", "Khaki","F0E68C", "Lavender","E6E6FA", "Lavenderblush","FFF0F5", "Lawngreen","7CFC00", "Lemonchiffon","FFFACD", "Lightblue","ADD8E6", "Lightcoral","F08080", "Lightcyan","E0FFFF", "Lightgoldenrodyellow","FAFAD2", "Lightgreen","90EE90", "Lightgrey","D3D3D3", "Lightpink","FFB6C1", "Lightsalmon","FFA07A", "Lightseagreen","20B2AA", "Lightskyblue","87CEFA", "Lightslategray","778899", "Lisghtsteelblue","B0C4DE", "Lightyellow","FFFFE0", "Lime","00FF00", "Limegreen","32CD32", "Linen","FAF0E6", "Magenta","FF00FF", "Maroon","800000", "Mediumaquamarine","66CDAA", "Mediumblue","0000CD", "Mediumorchid","BA55D3", "Mediumpurple","9370DB", "Mediumseagreen","3CB371", "Mediumslateblue","7B68EE", "Mediumspringgreen","00FA9A", "Mediumturquoise","48D1CC", "Mediumvioletred","C71585", "Midnightblue","191970", "Mintcream","F5FFFA", "Mistyrose","FFE4E1", "Moccasin","FFE4B5", "Navajowhite","FFDEAD", "Navy","000080", "Navyblue","9FAFDF", "Oldlace","FDF5E6", "Olive","808000", "Olivedrab","6B8E23", "Orange","FFA500", "Orangered","FF4500", "Orchid","DA70D6", "Palegoldenrod","EEE8AA", "Palegreen","98FB98", "Paleturquoise","AFEEEE", "Palevioletred","DB7093", "Papayawhip","FFEFD5", "Peachpuff","FFDAB9", "Peru","CD853F", "Pink","FFC0CB", "Plum","DDA0DD", "Powderblue","B0E0E6", "Purple","800080", "Red","FF0000", "Rosybrown","BC8F8F", "Royalblue","4169E1", "Saddlebrown","8B4513", "Salmon","FA8072", "Sandybrown","F4A460", "Seagreen","2E8B57", "Seashell","FFF5EE", "Sienna","A0522D", "Silver","C0C0C0", "Skyblue","87CEEB", "Slateblue","6A5ACD", "Snow","FFFAFA", "Springgreen","00FF7F", "Steelblue","4682B4", "Tan","D2B48C", "Teal","008080", "Thistle","D8BFD8", "Tomato","FF6347", "Turquoise","40E0D0", "Violet","EE82EE", "Wheat","F5DEB3", "White","FFFFFF", "Whitesmoke","F5F5F5", "Yellow","FFFF00", "Yellowgreen","9ACD32"}; }