// onjava/HTMLColors.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Sample data for collection examples package onjava; import java.util.*; import java.util.stream.*; import java.util.concurrent.*; public class HTMLColors { public static final Object[][] ARRAY = { {0xF0F8FF, "AliceBlue"}, {0xFAEBD7, "AntiqueWhite"}, {0x7FFFD4, "Aquamarine"}, {0xF0FFFF, "Azure"}, {0xF5F5DC, "Beige"}, {0xFFE4C4, "Bisque"}, {0x000000, "Black"}, {0xFFEBCD, "BlanchedAlmond"}, {0x0000FF, "Blue"}, {0x8A2BE2, "BlueViolet"}, {0xA52A2A, "Brown"}, {0xDEB887, "BurlyWood"}, {0x5F9EA0, "CadetBlue"}, {0x7FFF00, "Chartreuse"}, {0xD2691E, "Chocolate"}, {0xFF7F50, "Coral"}, {0x6495ED, "CornflowerBlue"}, {0xFFF8DC, "Cornsilk"}, {0xDC143C, "Crimson"}, {0x00FFFF, "Cyan"}, {0x00008B, "DarkBlue"}, {0x008B8B, "DarkCyan"}, {0xB8860B, "DarkGoldenRod"}, {0xA9A9A9, "DarkGray"}, {0x006400, "DarkGreen"}, {0xBDB76B, "DarkKhaki"}, {0x8B008B, "DarkMagenta"}, {0x556B2F, "DarkOliveGreen"}, {0xFF8C00, "DarkOrange"}, {0x9932CC, "DarkOrchid"}, {0x8B0000, "DarkRed"}, {0xE9967A, "DarkSalmon"}, {0x8FBC8F, "DarkSeaGreen"}, {0x483D8B, "DarkSlateBlue"}, {0x2F4F4F, "DarkSlateGray"}, {0x00CED1, "DarkTurquoise"}, {0x9400D3, "DarkViolet"}, {0xFF1493, "DeepPink"}, {0x00BFFF, "DeepSkyBlue"}, {0x696969, "DimGray"}, {0x1E90FF, "DodgerBlue"}, {0xB22222, "FireBrick"}, {0xFFFAF0, "FloralWhite"}, {0x228B22, "ForestGreen"}, {0xDCDCDC, "Gainsboro"}, {0xF8F8FF, "GhostWhite"}, {0xFFD700, "Gold"}, {0xDAA520, "GoldenRod"}, {0x808080, "Gray"}, {0x008000, "Green"}, {0xADFF2F, "GreenYellow"}, {0xF0FFF0, "HoneyDew"}, {0xFF69B4, "HotPink"}, {0xCD5C5C, "IndianRed"}, {0x4B0082, "Indigo"}, {0xFFFFF0, "Ivory"}, {0xF0E68C, "Khaki"}, {0xE6E6FA, "Lavender"}, {0xFFF0F5, "LavenderBlush"}, {0x7CFC00, "LawnGreen"}, {0xFFFACD, "LemonChiffon"}, {0xADD8E6, "LightBlue"}, {0xF08080, "LightCoral"}, {0xE0FFFF, "LightCyan"}, {0xFAFAD2, "LightGoldenRodYellow"}, {0xD3D3D3, "LightGray"}, {0x90EE90, "LightGreen"}, {0xFFB6C1, "LightPink"}, {0xFFA07A, "LightSalmon"}, {0x20B2AA, "LightSeaGreen"}, {0x87CEFA, "LightSkyBlue"}, {0x778899, "LightSlateGray"}, {0xB0C4DE, "LightSteelBlue"}, {0xFFFFE0, "LightYellow"}, {0x00FF00, "Lime"}, {0x32CD32, "LimeGreen"}, {0xFAF0E6, "Linen"}, {0xFF00FF, "Magenta"}, {0x800000, "Maroon"}, {0x66CDAA, "MediumAquaMarine"}, {0x0000CD, "MediumBlue"}, {0xBA55D3, "MediumOrchid"}, {0x9370DB, "MediumPurple"}, {0x3CB371, "MediumSeaGreen"}, {0x7B68EE, "MediumSlateBlue"}, {0x00FA9A, "MediumSpringGreen"}, {0x48D1CC, "MediumTurquoise"}, {0xC71585, "MediumVioletRed"}, {0x191970, "MidnightBlue"}, {0xF5FFFA, "MintCream"}, {0xFFE4E1, "MistyRose"}, {0xFFE4B5, "Moccasin"}, {0xFFDEAD, "NavajoWhite"}, {0x000080, "Navy"}, {0xFDF5E6, "OldLace"}, {0x808000, "Olive"}, {0x6B8E23, "OliveDrab"}, {0xFFA500, "Orange"}, {0xFF4500, "OrangeRed"}, {0xDA70D6, "Orchid"}, {0xEEE8AA, "PaleGoldenRod"}, {0x98FB98, "PaleGreen"}, {0xAFEEEE, "PaleTurquoise"}, {0xDB7093, "PaleVioletRed"}, {0xFFEFD5, "PapayaWhip"}, {0xFFDAB9, "PeachPuff"}, {0xCD853F, "Peru"}, {0xFFC0CB, "Pink"}, {0xDDA0DD, "Plum"}, {0xB0E0E6, "PowderBlue"}, {0x800080, "Purple"}, {0xFF0000, "Red"}, {0xBC8F8F, "RosyBrown"}, {0x4169E1, "RoyalBlue"}, {0x8B4513, "SaddleBrown"}, {0xFA8072, "Salmon"}, {0xF4A460, "SandyBrown"}, {0x2E8B57, "SeaGreen"}, {0xFFF5EE, "SeaShell"}, {0xA0522D, "Sienna"}, {0xC0C0C0, "Silver"}, {0x87CEEB, "SkyBlue"}, {0x6A5ACD, "SlateBlue"}, {0x708090, "SlateGray"}, {0xFFFAFA, "Snow"}, {0x00FF7F, "SpringGreen"}, {0x4682B4, "SteelBlue"}, {0xD2B48C, "Tan"}, {0x008080, "Teal"}, {0xD8BFD8, "Thistle"}, {0xFF6347, "Tomato"}, {0x40E0D0, "Turquoise"}, {0xEE82EE, "Violet"}, {0xF5DEB3, "Wheat"}, {0xFFFFFF, "White"}, {0xF5F5F5, "WhiteSmoke"}, {0xFFFF00, "Yellow"}, {0x9ACD32, "YellowGreen"}, }; public static final Map MAP = Arrays.stream(ARRAY) .collect(Collectors.toMap( element -> (Integer) element[0], element -> (String) element[1], (v1, v2) -> { // Merge function throw new IllegalStateException(); }, LinkedHashMap::new )); // Inversion only works if values are unique: public static Map invert(Map map) { return map.entrySet().stream() .collect(Collectors.toMap( Map.Entry::getValue, Map.Entry::getKey, (v1, v2) -> { throw new IllegalStateException(); }, LinkedHashMap::new )); } public static final Map INVMAP = invert(MAP); // Look up RGB value given a name: public static Integer rgb(String colorName) { return INVMAP.get(colorName); } public static final List LIST = Arrays.stream(ARRAY) .map(item -> (String) item[1]) .collect(Collectors.toList()); public static final List RGBLIST = Arrays.stream(ARRAY) .map(item -> (Integer) item[0]) .collect(Collectors.toList()); public static void show(Map.Entry e) { System.out.format( "0x%06X: %s%n", e.getKey(), e.getValue()); } public static void show(Map m, int count) { m.entrySet().stream() .limit(count) .forEach(e -> show(e)); } public static void show(Map m) { show(m, m.size()); } public static void show(Collection lst, int count) { lst.stream() .limit(count) .forEach(System.out::println); } public static void show(Collection lst) { show(lst, lst.size()); } public static void showrgb(Collection lst, int count) { lst.stream() .limit(count) .forEach(n -> System.out.format("0x%06X%n", n)); } public static void showrgb(Collection lst) { showrgb(lst, lst.size()); } public static void showInv(Map m, int count) { m.entrySet().stream() .limit(count) .forEach(e -> System.out.format( "%-20s 0x%06X%n", e.getKey(), e.getValue())); } public static void showInv(Map m) { showInv(m, m.size()); } public static void border() { System.out.println( "******************************"); } }