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