/* * JaamSim Discrete Event Simulation * Copyright (C) 2011 Ausenco Engineering Canada Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.jaamsim.input; import java.util.HashMap; import com.jaamsim.math.Color4d; public class ColourInput extends Input<Color4d> { public static final Color4d WHITE = new Color4d(1.0d, 1.0d, 1.0d); public static final Color4d BLACK = new Color4d(0.0d, 0.0d, 0.0d); public static final Color4d RED = new Color4d(1.0d, 0.0d, 0.0d); public static final Color4d GREEN = new Color4d(0.0d, 1.0d, 0.0d); public static final Color4d BLUE = new Color4d(0.0d, 0.0d, 1.0d); public static final Color4d CYAN = new Color4d(0.0d, 1.0d, 1.0d); public static final Color4d YELLOW = new Color4d(1.0d, 1.0d, 0.0d); public static final Color4d PURPLE = new Color4d(1.0d, 0.0d, 1.0d); public static final Color4d LIGHT_GREY = new Color4d(0.75d, 0.75d, 0.75d); public static final Color4d MED_GREY = new Color4d(0.5d, 0.5d, 0.5d); public static final Color4d DARK_RED = new Color4d(0.75d, 0.0d, 0.0d); public static final Color4d DARK_GREEN = new Color4d(0.0d, 0.75d, 0.0d); public static final Color4d DARK_BLUE = new Color4d(0.0d, 0.0d, 0.75d); public static final Color4d DARK_CYAN = new Color4d(0.0d, 0.75d, 0.75d); public static final Color4d DARK_YELLOW = new Color4d(0.75d, 0.75d, 0.0d); public static final Color4d DARK_PURPLE = new Color4d(0.75d, 0.0d, 0.75d); private static final HashMap<String, Color4d> colorMap; private static final HashMap<Color4d, String> colorNameMap; static { colorMap = new HashMap<>(); colorNameMap = new HashMap<>(); initColors(); } public ColourInput(String key, String cat, Color4d def) { super(key, cat, def); } @Override public void parse(KeywordIndex kw) throws InputErrorException { value = Input.parseColour(kw); } public static Color4d getColorWithName(String colorName) { return colorMap.get(colorName); } public static String getColorName(Color4d col) { return colorNameMap.get(col); } private static void defColor(String colorName, int r, int g, int b) { mapColor(colorName, new Color4d(r / 255.0f, g / 255.0f, b / 255.0f)); } private static void mapColor(String colorName, Color4d col) { if (colorMap.put(colorName, col) != null) System.out.println(String.format("ColorName added twice: %s ", colorName)); if (colorNameMap.put(col, colorName) != null) System.out.println(String.format("Color4d added twice: %s", colorName)); } private static void initColors() { mapColor("white", WHITE); mapColor("black", BLACK); mapColor("red", RED); mapColor("green", GREEN); mapColor("blue", BLUE); mapColor("cyan", CYAN); mapColor("yellow", YELLOW); //mapColor("purple", PURPLE); This RGB value is actually "magenta" mapColor("darkred", DARK_RED); mapColor("darkgreen", DARK_GREEN); mapColor("darkblue", DARK_BLUE); mapColor("darkcyan", DARK_CYAN); mapColor("darkyellow", DARK_YELLOW); mapColor("darkpurple", DARK_PURPLE); defColor("lavenderblush", 255, 240, 245); defColor("pink", 255, 192, 203); defColor("lightpink", 255, 182, 193); defColor("palevioletred", 219, 112, 147); defColor("hotpink", 255, 105, 180); defColor("deeppink", 255, 20, 147); defColor("violetred", 208, 32, 144); defColor("mediumvioletred", 199, 21, 133); defColor("raspberry", 135, 38, 87); defColor("thistle", 216, 191, 216); defColor("plum", 221, 160, 221); defColor("orchid", 218, 112, 214); defColor("violet", 238, 130, 238); defColor("magenta", 255, 0, 255); defColor("purple", 128, 0, 128); defColor("mediumorchid", 186, 85, 211); defColor("darkorchid", 153, 50, 204); defColor("darkviolet", 148, 0, 211); defColor("blueviolet", 138, 43, 226); defColor("indigo", 75, 0, 130); defColor("mediumpurple", 147, 112, 219); defColor("lightslateblue", 132, 112, 255); defColor("mediumslateblue", 123, 104, 238); defColor("slateblue", 106, 90, 205); defColor("darkslateblue", 72, 61, 139); defColor("ghostwhite", 248, 248, 255); defColor("lavender", 230, 230, 250); defColor("navy", 0, 0, 128); defColor("midnightblue", 25, 25, 112); defColor("cobalt", 61, 89, 171); defColor("royalblue", 65, 105, 225); defColor("cornflowerblue", 100, 149, 237); defColor("lightsteelblue", 176, 196, 222); defColor("lightslategray", 119, 136, 153); defColor("slategray", 112, 128, 144); defColor("dodgerblue", 30, 144, 255); defColor("aliceblue", 240, 248, 255); defColor("powderblue", 176, 224, 230); defColor("lightblue", 173, 216, 230); defColor("lightskyblue", 135, 206, 250); defColor("skyblue", 135, 206, 235); defColor("deepskyblue", 0, 191, 255); defColor("peacock", 51, 161, 201); defColor("steelblue", 70, 130, 180); defColor("darkturquoise", 0, 206, 209); defColor("cadetblue", 95, 158, 160); defColor("azure", 240, 255, 255); defColor("lightcyan", 224, 255, 255); defColor("paleturquoise", 187, 255, 255); defColor("turquoise", 64, 224, 208); defColor("mediumturquoise", 72, 209, 204); defColor("lightseagreen", 32, 178, 170); defColor("manganeseblue", 3, 168, 158); defColor("teal", 0, 128, 128); defColor("darkslategray", 47, 79, 79); defColor("turquoiseblue", 0, 199, 140); defColor("aquamarine", 127, 255, 212); defColor("mintcream", 245, 255, 250); defColor("mint", 189, 252, 201); defColor("seagreen", 84, 255, 159); defColor("mediumspringgreen", 0, 250, 154); defColor("springgreen", 0, 255, 127); defColor("emeraldgreen", 0, 201, 87); defColor("mediumseagreen", 60, 179, 113); defColor("cobaltgreen", 61, 145, 64); defColor("darkseagreen", 143, 188, 143); defColor("honeydew", 240, 255, 240); defColor("palegreen", 152, 251, 152); defColor("lawngreen", 124, 252, 0); defColor("greenyellow", 173, 255, 47); defColor("limegreen", 50, 205, 50); defColor("forestgreen", 34, 139, 34); defColor("sapgreen", 48, 128, 20); defColor("darkolivegreen", 85, 107, 47); defColor("olivedrab", 107, 142, 35); defColor("olive", 128, 128, 0); defColor("ivory", 255, 255, 240); defColor("lightyellow", 255, 255, 224); defColor("lightgoldenrodyellow", 250, 250, 210); defColor("cornsilk", 255, 248, 220); defColor("lemonchiffon", 255, 250, 205); defColor("beige", 245, 245, 220); defColor("khaki", 240, 230, 140); defColor("lightgoldenrod", 255, 236, 139); defColor("palegoldenrod", 238, 232, 170); defColor("darkkhaki", 189, 183, 107); defColor("banana", 227, 207, 87); defColor("gold", 255, 215, 0); defColor("goldenrod", 218, 165, 32); defColor("darkgoldenrod", 184, 134, 11); defColor("brick", 156, 102, 31); defColor("floralwhite", 255, 250, 240); defColor("seashell", 255, 245, 238); defColor("oldlace", 253, 245, 230); defColor("linen", 250, 240, 230); defColor("antiquewhite", 250, 235, 215); defColor("papayawhip", 255, 239, 213); defColor("blanchedalmond", 255, 235, 205); defColor("eggshell", 252, 230, 201); defColor("bisque", 255, 228, 196); defColor("moccasin", 255, 228, 181); defColor("navajowhite", 255, 222, 173); defColor("wheat", 245, 222, 179); defColor("peachpuff", 255, 218, 185); defColor("tan", 210, 180, 140); defColor("burlywood", 222, 184, 135); defColor("melon", 227, 168, 105); defColor("sandybrown", 244, 164, 96); defColor("cadmiumyellow", 255, 153, 18); defColor("carrot", 237, 145, 33); defColor("orange", 255, 128, 0); defColor("flesh", 255, 125, 64); defColor("cadmiumorange", 255, 97, 3); defColor("chocolate", 210, 105, 30); defColor("rawsienna", 199, 97, 20); defColor("sienna", 160, 82, 45); defColor("brown", 138, 54, 15); defColor("lightsalmon", 255, 160, 122); defColor("darksalmon", 233, 150, 122); defColor("salmon", 250, 128, 114); defColor("lightcoral", 240, 128, 128); defColor("coral", 255, 114, 86); defColor("tomato", 255, 99, 71); defColor("orangered", 255, 69, 0); defColor("crimson", 220, 20, 60); defColor("firebrick", 178, 34, 34); defColor("indianred", 176, 23, 31); defColor("burntumber", 138, 51, 36); defColor("maroon", 128, 0, 0); defColor("sepia", 94, 38, 18); defColor("gray99", 252, 252, 252); defColor("gray98", 250, 250, 250); defColor("gray97", 247, 247, 247); defColor("gray96", 245, 245, 245); defColor("gray95", 242, 242, 242); defColor("gray94", 240, 240, 240); defColor("gray93", 237, 237, 237); defColor("gray92", 235, 235, 235); defColor("gray91", 232, 232, 232); defColor("gray90", 229, 229, 229); defColor("gray89", 227, 227, 227); defColor("gray88", 224, 224, 224); defColor("gray87", 222, 222, 222); defColor("gray86", 219, 219, 219); defColor("gray85", 217, 217, 217); defColor("gray84", 214, 214, 214); defColor("gray83", 212, 212, 212); defColor("gray82", 209, 209, 209); defColor("gray81", 207, 207, 207); defColor("gray80", 204, 204, 204); defColor("gray79", 201, 201, 201); defColor("gray78", 199, 199, 199); defColor("gray77", 196, 196, 196); defColor("gray76", 194, 194, 194); mapColor("gray75", LIGHT_GREY); defColor("gray74", 189, 189, 189); defColor("gray73", 186, 186, 186); defColor("gray72", 184, 184, 184); defColor("gray71", 181, 181, 181); defColor("gray70", 179, 179, 179); defColor("gray69", 176, 176, 176); defColor("gray68", 173, 173, 173); defColor("gray67", 171, 171, 171); defColor("gray66", 168, 168, 168); defColor("gray65", 166, 166, 166); defColor("gray64", 163, 163, 163); defColor("gray63", 161, 161, 161); defColor("gray62", 158, 158, 158); defColor("gray61", 156, 156, 156); defColor("gray60", 153, 153, 153); defColor("gray59", 150, 150, 150); defColor("gray58", 148, 148, 148); defColor("gray57", 145, 145, 145); defColor("gray56", 143, 143, 143); defColor("gray55", 140, 140, 140); defColor("gray54", 138, 138, 138); defColor("gray53", 135, 135, 135); defColor("gray52", 133, 133, 133); defColor("gray51", 130, 130, 130); mapColor("gray50", MED_GREY); defColor("gray49", 125, 125, 125); defColor("gray48", 122, 122, 122); defColor("gray47", 120, 120, 120); defColor("gray46", 117, 117, 117); defColor("gray45", 115, 115, 115); defColor("gray44", 112, 112, 112); defColor("gray43", 110, 110, 110); defColor("gray42", 107, 107, 107); defColor("gray41", 105, 105, 105); defColor("gray40", 102, 102, 102); defColor("gray39", 99, 99, 99); defColor("gray38", 97, 97, 97); defColor("gray37", 94, 94, 94); defColor("gray36", 92, 92, 92); defColor("gray35", 89, 89, 89); defColor("gray34", 87, 87, 87); defColor("gray33", 84, 84, 84); defColor("gray32", 82, 82, 82); defColor("gray31", 79, 79, 79); defColor("gray30", 77, 77, 77); defColor("gray29", 74, 74, 74); defColor("gray28", 71, 71, 71); defColor("gray27", 69, 69, 69); defColor("gray26", 66, 66, 66); defColor("gray25", 64, 64, 64); defColor("gray24", 61, 61, 61); defColor("gray23", 59, 59, 59); defColor("gray22", 56, 56, 56); defColor("gray21", 54, 54, 54); defColor("gray20", 51, 51, 51); defColor("gray19", 48, 48, 48); defColor("gray18", 46, 46, 46); defColor("gray17", 43, 43, 43); defColor("gray16", 41, 41, 41); defColor("gray15", 38, 38, 38); defColor("gray14", 36, 36, 36); defColor("gray13", 33, 33, 33); defColor("gray12", 31, 31, 31); defColor("gray11", 28, 28, 28); defColor("gray10", 26, 26, 26); defColor("gray9", 23, 23, 23); defColor("gray8", 20, 20, 20); defColor("gray7", 18, 18, 18); defColor("gray6", 15, 15, 15); defColor("gray5", 13, 13, 13); defColor("gray4", 10, 10, 10); defColor("gray3", 8, 8, 8); defColor("gray2", 5, 5, 5); defColor("gray1", 3, 3, 3); } @Override public String getDefaultString() { if (defValue == null) return ""; String colorName = getColorName(defValue); if (colorName != null) return colorName; return String.format("%.0f%s%.0f%s%.0f", defValue.r * 255, SEPARATOR, defValue.g * 255, SEPARATOR, defValue.b * 255); } }