You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by rw...@apache.org on 2016/05/24 22:54:02 UTC

svn commit: r1745408 - /pivot/trunk/wtk/src/org/apache/pivot/wtk/GraphicsUtilities.java

Author: rwhitcomb
Date: Tue May 24 22:54:02 2016
New Revision: 1745408

URL: http://svn.apache.org/viewvc?rev=1745408&view=rev
Log:
PIVOT-984:  Add the list of CSS3/X11 color names/values into GraphicsUtilities
and add lookup of them to the "decodeColor" method.

Next step is a demo/text program.


Modified:
    pivot/trunk/wtk/src/org/apache/pivot/wtk/GraphicsUtilities.java

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/GraphicsUtilities.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/GraphicsUtilities.java?rev=1745408&r1=1745407&r2=1745408&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/GraphicsUtilities.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/GraphicsUtilities.java Tue May 24 22:54:02 2016
@@ -24,7 +24,9 @@ import java.awt.Paint;
 import java.awt.RadialGradientPaint;
 import java.awt.RenderingHints;
 import java.awt.geom.AffineTransform;
+import java.util.HashMap;
 import java.util.Locale;
+import java.util.Map;
 
 import org.apache.pivot.collections.Dictionary;
 import org.apache.pivot.collections.List;
@@ -62,6 +64,145 @@ public final class GraphicsUtilities {
     public static final String STOPS_KEY = "stops";
     public static final String OFFSET_KEY = "offset";
 
+    public static Map<String, Color> CSS3ColorMap = new HashMap<>();
+    
+    static {
+        // Initialize the table of CSS3/X11 color names and values
+        // from here: http://www.w3.org/TR/css3-color/
+        // but with the Java names (such as "black", "blue", etc.) omitted
+        CSS3ColorMap.put("aliceblue",            new Color(240,248,255));
+        CSS3ColorMap.put("antiquewhite",         new Color(250,235,215));
+        CSS3ColorMap.put("aqua",                 new Color(  0,255,255));
+        CSS3ColorMap.put("aquamarine",           new Color(127,255,212));
+        CSS3ColorMap.put("azure",                new Color(240,255,255));
+        CSS3ColorMap.put("beige",                new Color(245,245,220));
+        CSS3ColorMap.put("bisque",               new Color(255,228,196));
+        CSS3ColorMap.put("blanchedalmond",       new Color(255,235,205));
+        CSS3ColorMap.put("blueviolet",           new Color(138, 43,226));
+        CSS3ColorMap.put("brown",                new Color(165, 42, 42));
+        CSS3ColorMap.put("burlywood",            new Color(222,184,135));
+        CSS3ColorMap.put("cadetblue",            new Color( 95,158,160));
+        CSS3ColorMap.put("chartreuse",           new Color(127,255,  0));
+        CSS3ColorMap.put("chocolate",            new Color(210,105, 30));
+        CSS3ColorMap.put("coral",                new Color(255,127, 80));
+        CSS3ColorMap.put("cornflowerblue",       new Color(100,149,237));
+        CSS3ColorMap.put("cornsilk",             new Color(255,248,220));
+        CSS3ColorMap.put("crimson",              new Color(220, 20, 60));
+        CSS3ColorMap.put("darkblue",             new Color(  0,  0,139));
+        CSS3ColorMap.put("darkcyan",             new Color(  0,139,139));
+        CSS3ColorMap.put("darkgoldenrod",        new Color(184,134, 11));
+        CSS3ColorMap.put("darkgreen",            new Color(  0,100,  0));
+        CSS3ColorMap.put("darkkhaki",            new Color(189,183,107));
+        CSS3ColorMap.put("darkmagenta",          new Color(139,  0,139));
+        CSS3ColorMap.put("darkolivegreen",       new Color( 85,107, 47));
+        CSS3ColorMap.put("darkorange",           new Color(255,140,  0));
+        CSS3ColorMap.put("darkorchid",           new Color(153, 50,204));
+        CSS3ColorMap.put("darkred",              new Color(139,  0,  0));
+        CSS3ColorMap.put("darksalmon",           new Color(233,150,122));
+        CSS3ColorMap.put("darkseagreen",         new Color(143,188,143));
+        CSS3ColorMap.put("darkslateblue",        new Color( 72, 61,139));
+        CSS3ColorMap.put("darkslategray",        new Color( 47, 79, 79));
+        CSS3ColorMap.put("darkslategrey",        new Color( 47, 79, 79));
+        CSS3ColorMap.put("darkturquoise",        new Color(  0,206,209));
+        CSS3ColorMap.put("darkviolet",           new Color(148,  0,211));
+        CSS3ColorMap.put("deeppink",             new Color(255, 20,147));
+        CSS3ColorMap.put("deepskyblue",          new Color(  0,191,255));
+        CSS3ColorMap.put("dimgray",              new Color(105,105,105));
+        CSS3ColorMap.put("dimgrey",              new Color(105,105,105));
+        CSS3ColorMap.put("dodgerblue",           new Color( 30,144,255));
+        CSS3ColorMap.put("firebrick",            new Color(178, 34, 34));
+        CSS3ColorMap.put("floralwhite",          new Color(255,250,240));
+        CSS3ColorMap.put("forestgreen",          new Color( 34,139, 34));
+        CSS3ColorMap.put("fuchsia",              new Color(255,  0,255));
+        CSS3ColorMap.put("gainsboro",            new Color(220,220,220));
+        CSS3ColorMap.put("ghostwhite",           new Color(248,248,255));
+        CSS3ColorMap.put("gold",                 new Color(255,215,  0));
+        CSS3ColorMap.put("goldenrod",            new Color(218,165, 32));
+        CSS3ColorMap.put("greenyellow",          new Color(173,255, 47));
+        CSS3ColorMap.put("honeydew",             new Color(240,255,240));
+        CSS3ColorMap.put("hotpink",              new Color(255,105,180));
+        CSS3ColorMap.put("indianred",            new Color(205, 92, 92));
+        CSS3ColorMap.put("indigo",               new Color( 75,  0,130));
+        CSS3ColorMap.put("ivory",                new Color(255,255,240));
+        CSS3ColorMap.put("khaki",                new Color(240,230,140));
+        CSS3ColorMap.put("lavender",             new Color(230,230,250));
+        CSS3ColorMap.put("lavenderblush",        new Color(255,240,245));
+        CSS3ColorMap.put("lawngreen",            new Color(124,252,  0));
+        CSS3ColorMap.put("lemonchiffon",         new Color(255,250,205));
+        CSS3ColorMap.put("lightblue",            new Color(173,216,230));
+        CSS3ColorMap.put("lightcoral",           new Color(240,128,128));
+        CSS3ColorMap.put("lightcyan",            new Color(224,255,255));
+        CSS3ColorMap.put("lightgoldenrodyellow", new Color(250,250,210));
+        CSS3ColorMap.put("lightgreen",           new Color(144,238,144));
+        CSS3ColorMap.put("lightpink",            new Color(255,182,193));
+        CSS3ColorMap.put("lightsalmon",          new Color(255,160,122));
+        CSS3ColorMap.put("lightseagreen",        new Color( 32,178,170));
+        CSS3ColorMap.put("lightskyblue",         new Color(135,206,250));
+        CSS3ColorMap.put("lightslategray",       new Color(119,136,153));
+        CSS3ColorMap.put("lightslategrey",       new Color(119,136,153));
+        CSS3ColorMap.put("lightsteelblue",       new Color(176,196,222));
+        CSS3ColorMap.put("lightyellow",          new Color(255,255,224));
+        CSS3ColorMap.put("lime",                 new Color(  0,255,  0));
+        CSS3ColorMap.put("limegreen",            new Color( 50,205, 50));
+        CSS3ColorMap.put("linen",                new Color(250,240,230));
+        CSS3ColorMap.put("maroon",               new Color(128,  0,  0));
+        CSS3ColorMap.put("mediumaquamarine",     new Color(102,205,170));
+        CSS3ColorMap.put("mediumblue",           new Color(  0,  0,205));
+        CSS3ColorMap.put("mediumorchid",         new Color(186, 85,211));
+        CSS3ColorMap.put("mediumpurple",         new Color(147,112,219));
+        CSS3ColorMap.put("mediumseagreen",       new Color( 60,179,113));
+        CSS3ColorMap.put("mediumslateblue",      new Color(123,104,238));
+        CSS3ColorMap.put("mediumspringgreen",    new Color(  0,250,154));
+        CSS3ColorMap.put("mediumturquoise",      new Color( 72,209,204));
+        CSS3ColorMap.put("mediumvioletred",      new Color(199, 21,133));
+        CSS3ColorMap.put("midnightblue",         new Color( 25, 25,112));
+        CSS3ColorMap.put("mintcream",            new Color(245,255,250));
+        CSS3ColorMap.put("mistyrose",            new Color(255,228,225));
+        CSS3ColorMap.put("moccasin",             new Color(255,228,181));
+        CSS3ColorMap.put("navajowhite",          new Color(255,222,173));
+        CSS3ColorMap.put("navy",                 new Color(  0,  0,128));
+        CSS3ColorMap.put("oldlace",              new Color(253,245,230));
+        CSS3ColorMap.put("olive",                new Color(128,128,  0));
+        CSS3ColorMap.put("olivedrab",            new Color(107,142, 35));
+        CSS3ColorMap.put("orangered",            new Color(255, 69,  0));
+        CSS3ColorMap.put("orchid",               new Color(218,112,214));
+        CSS3ColorMap.put("palegoldenrod",        new Color(238,232,170));
+        CSS3ColorMap.put("palegreen",            new Color(152,251,152));
+        CSS3ColorMap.put("paleturquoise",        new Color(175,238,238));
+        CSS3ColorMap.put("palevioletred",        new Color(219,112,147));
+        CSS3ColorMap.put("papayawhip",           new Color(255,239,213));
+        CSS3ColorMap.put("peachpuff",            new Color(255,218,185));
+        CSS3ColorMap.put("peru",                 new Color(205,133, 63));
+        CSS3ColorMap.put("plum",                 new Color(221,160,221));
+        CSS3ColorMap.put("powderblue",           new Color(176,224,230));
+        CSS3ColorMap.put("purple",               new Color(128,  0,128));
+        CSS3ColorMap.put("rosybrown",            new Color(188,143,143));
+        CSS3ColorMap.put("royalblue",            new Color( 65,105,225));
+        CSS3ColorMap.put("saddlebrown",          new Color(139, 69, 19));
+        CSS3ColorMap.put("salmon",               new Color(250,128,114));
+        CSS3ColorMap.put("sandybrown",           new Color(244,164, 96));
+        CSS3ColorMap.put("seagreen",             new Color( 46,139, 87));
+        CSS3ColorMap.put("seashell",             new Color(255,245,238));
+        CSS3ColorMap.put("sienna",               new Color(160, 82, 45));
+        CSS3ColorMap.put("silver",               new Color(192,192,192));
+        CSS3ColorMap.put("skyblue",              new Color(135,206,235));
+        CSS3ColorMap.put("slateblue",            new Color(106, 90,205));
+        CSS3ColorMap.put("slategray",            new Color(112,128,144));
+        CSS3ColorMap.put("slategrey",            new Color(112,128,144));
+        CSS3ColorMap.put("snow",                 new Color(255,250,250));
+        CSS3ColorMap.put("springgreen",          new Color(  0,255,127));
+        CSS3ColorMap.put("steelblue",            new Color( 70,130,180));
+        CSS3ColorMap.put("tan",                  new Color(210,180,140));
+        CSS3ColorMap.put("teal",                 new Color(  0,128,128));
+        CSS3ColorMap.put("thistle",              new Color(216,191,216));
+        CSS3ColorMap.put("tomato",               new Color(255, 99, 71));
+        CSS3ColorMap.put("turquoise",            new Color( 64,224,208));
+        CSS3ColorMap.put("violet",               new Color(238,130,238));
+        CSS3ColorMap.put("wheat",                new Color(245,222,179));
+        CSS3ColorMap.put("whitesmoke",           new Color(245,245,245));
+        CSS3ColorMap.put("yellowgreen",          new Color(154,205, 50));
+    }
+
     private GraphicsUtilities() {
     }
 
@@ -164,7 +305,9 @@ public final class GraphicsUtilities {
      * hexadecimal digits, specifying 8 bits each of red, green, and blue,
      * followed by 8 bits of alpha.</li> <li>#dddddd - 6 hexadecimal digits,
      * specifying 8 bits each of red, green, and blue. <li>Any of the names of
-     * the static colors in the Java {@link Color} class. </ul>
+     * the static colors in the Java {@link Color} class.</li>
+     * <li>Any of the CSS3/X11 color names from here: http://www.w3.org/TR/css3-color/
+     * (except the Java color names will be accepted first if there is a conflict).</li></ul>
      * @return A {@link Color} on successful decoding
      * @throws NumberFormatException if the value in the first two cases
      * contains illegal hexadecimal digits.
@@ -207,7 +350,7 @@ public final class GraphicsUtilities {
             } catch (Exception exception) {
                 // PIVOT-985: special case for two values (plus spelling variants)
                 // that don't work with just a pure lower case name lookup, plus the
-                // British spelling variant of the standard "gray".
+                // British spelling variants of the standard "gray".
                 if (valueLowercase.equals("darkgray") || valueLowercase.equals("darkgrey")) {
                     color = Color.darkGray;
                 } else if (valueLowercase.equals("lightgray") || valueLowercase.equals("lightgrey")) {
@@ -215,6 +358,10 @@ public final class GraphicsUtilities {
                 } else if (valueLowercase.equals("grey")) {
                     color = Color.gray;
                 } else {
+                    // Otherwise try to decode an X11/CSS3 color name
+                    if ((color = CSS3ColorMap.get(valueLowercase)) != null) {
+                        return color;
+                    }
                     throw new IllegalArgumentException("\"" + valueLowercase
                         + "\" is not a valid color constant.");
                 }