Merge branch 'develop' into update_212_Dec_merge_with_21125_chamges
[jalview.git] / src / jalview / util / ColorUtils.java
index 16ff259..008c8b0 100644 (file)
@@ -24,6 +24,8 @@
 
 package jalview.util;
 
+import java.util.Locale;
+
 import java.awt.Color;
 import java.util.HashMap;
 import java.util.Map;
@@ -31,10 +33,8 @@ import java.util.Random;
 
 public class ColorUtils
 {
-  // constant borrowed from java.awt.Color
-  private static final float FACTOR = 0.7f;
-
   private static final int MAX_CACHE_SIZE = 1729;
+
   /*
    * a cache for colours generated from text strings
    */
@@ -222,12 +222,15 @@ public class ColorUtils
     colour = colour.trim();
 
     Color col = null;
-    try
-    {
-      int value = Integer.parseInt(colour, 16);
-      col = new Color(value);
-    } catch (NumberFormatException ex)
+    if (StringUtils.isHexString(colour))
     {
+      try
+      {
+        int value = Integer.parseInt(colour, 16);
+        col = new Color(value);
+      } catch (NumberFormatException ex)
+      {
+      }
     }
 
     if (col == null)
@@ -327,7 +330,7 @@ public class ColorUtils
       return null;
     }
     Color col = null;
-    name = name.toLowerCase();
+    name = name.toLowerCase(Locale.ROOT);
 
     // or make a static map; or use reflection on the field name
     switch (name)
@@ -375,63 +378,4 @@ public class ColorUtils
 
     return col;
   }
-
-  /**
-   * Generates a colour that is interpolated between
-   * <code>colour.darker()</code> and <code>colour.brighter()</code> in
-   * proportion as <code>value</code> is between <code>min</code> and
-   * <code>max</code>. Note that the 'neutral point' (unchanged colour) is
-   * closer to 'brighter' than to 'darker'as this is a geometric range.
-   * 
-   * @param value
-   * @param min
-   * @param max
-   * @param colour
-   * @return
-   */
-  public static Color getGraduatedColour(float value, float min, float max,
-          Color colour)
-  {
-    /*
-     * this computes the equivalent of
-     * getGraduatedColour(value, min, colour.darker(), max, colour.brighter())
-     * but avoiding object creation except for the return value
-     */
-    if (value < min)
-    {
-      value = min;
-    }
-    if (value > max)
-    {
-      value = max;
-    }
-
-    int r = colour.getRed();
-    int g = colour.getGreen();
-    int b = colour.getBlue();
-
-    /*
-     * rgb for colour.darker():
-     */
-    float minR = r * FACTOR;
-    float minG = g * FACTOR;
-    float minB = b * FACTOR;
-
-    /*
-     * rgb for colour.brighter():
-     */
-    float maxR = Math.min(255f, r / FACTOR);
-    float maxG = Math.min(255f, g / FACTOR);
-    float maxB = Math.min(255f, b / FACTOR);
-
-    /*
-     * interpolation
-     */
-    float p = (value - min) / (max - min);
-    int newR = (int) (minR + p * (maxR - minR));
-    int newG = (int) (minG + p * (maxG - minG));
-    int newB = (int) (minB + p * (maxB - minB));
-
-    return new Color(newR, newG, newB, colour.getAlpha());
-  }
 }