ColorSchemaGenerator.java Source code

Java tutorial

Introduction

Here is the source code for ColorSchemaGenerator.java

Source

/*
 * 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" };

}