blob: ce7c192947a7d796008dc1702fe0d7a1da72eae8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2020 IBM Corporation and Others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Junji MAEDA - initial API and implementation
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.actf.visualization.internal.engines.lowvision.color;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.HashMap;
public class ColorUtil {
// pre-defined 16 colors (HTML4.0, XHTML1.0, CSS2) -> CSS3 extended
// colors(X11 colors)
/*
* @SuppressWarnings("nls")
*
* private static final String predefinedColors[] = { "black", "#000000",
* "silver", "#c0c0c0", "gray", "#808080", "grey", "#808080", "white",
* "#ffffff", "maroon", "#800000", "red", "#ff0000", "purple", "#800080",
* "fuchsia", "#ff00ff", "green", "#008000", "lime", "#00ff00", "olive",
* "#808000", "yellow", "#ffff00", "navy", "#000080", "blue", "#0000ff",
* "teal", "#008080", "aqua", "#00ffff" };
*/
@SuppressWarnings("nls")
private static final String predefinedColors[][] = { { "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" }, { "darkgrey", "#a9a9a9" },
{ "darkkhaki", "#bdb76b" }, { "darkmagenta", "#8b008b" }, { "darkolivegreen", "#556b2f" },
{ "darkorange", "#ff8c00" }, { "darkorchid", "#9932cc" }, { "darkred", "#8b0000" },
{ "darksalmon", "#e9967a" }, { "darkseagreen", "#8fbc8f" }, { "darkslateblue", "#483d8b" },
{ "darkslategray", "#2f4f4f" }, { "darkslategrey", "#2f4f4f" }, { "darkturquoise", "#00ced1" },
{ "darkviolet", "#9400d3" }, { "deeppink", "#ff1493" }, { "deepskyblue", "#00bfff" },
{ "dimgray", "#696969" }, { "dimgrey", "#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" }, { "grey", "#808080" },
{ "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" },
{ "lightgray", "#d3d3d3" }, { "lightgreen", "#90ee90" }, { "lightgrey", "#d3d3d3" },
{ "lightpink", "#ffb6c1" }, { "lightsalmon", "#ffa07a" }, { "lightseagreen", "#20b2aa" },
{ "lightskyblue", "#87cefa" }, { "lightslategray", "#778899" }, { "lightslategrey", "#778899" },
{ "lightsteelblue", "#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" }, { "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" }, { "slategray", "#708090" },
{ "slategrey", "#708090" }, { "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" } };
private static final HashMap<String, String> predefinedColorMap = new HashMap<String, String>();
static {
for (int i = 0; i < predefinedColors.length; i++) {
predefinedColorMap.put(predefinedColors[i][0], predefinedColors[i][1]);
}
}
public static boolean isPredefinedColor(String _s) {
return predefinedColorMap.containsKey(_s.toLowerCase());
}
public static String predefinedColor2Pound(String _s) {
return predefinedColorMap.get(_s.toLowerCase());
}
// TYPE_INT_RGB <--> R,G,B
public static int[] intToRGB(int _i) {
int[] rgb = new int[3];
rgb[0] = (_i >> 16) & 0xff;
rgb[1] = (_i >> 8) & 0xff;
rgb[2] = _i & 0xff;
return (rgb);
}
public static int RGBToInt(int _r, int _g, int _b) {
return ((_r & 0xff) << 16 | (_g & 0xff) << 8 | (_b & 0xff));
}
public static void dumpColor(PrintStream _ps, int _i) {
(new ColorIRGB(_i)).dump(_ps);
}
public static void dumpColor(PrintWriter _pw, int _i) {
(new ColorIRGB(_i)).dump(_pw);
}
/*
* assign distinguishable colors for sequential IDs
*
*/
public static int distinguishableColor(int _id) {
int r = 0;
int g = 0;
int b = 0;
if (_id == 0) {
return (0x00ffffff);
} else {
for (int l = 0; l < 8; l++) {
r += ((_id >> (l * 3)) & 1) << (7 - l);
g += ((_id >> (l * 3 + 1)) & 1) << (7 - l);
b += ((_id >> (l * 3 + 2)) & 1) << (7 - l);
}
return ((r << 16) | (g << 8) | b);
}
}
}