JAL-3210 Improvements to eclipse detection. New src tree and SwingJS updated from...
[jalview.git] / src / jalview / util / ColorUtils.java
index 60129fb..a2d8d3e 100644 (file)
@@ -199,6 +199,42 @@ public class ColorUtils
     }
   }
 
+  public static int bleachColourInt(int colour, float bleachFactor)
+  {
+    if (bleachFactor >= 1f)
+    {
+      return -1;// Color.WHITE;
+    }
+    if (bleachFactor <= -1f)
+    {
+      return 0xFF000000;// Color.BLACK;
+    }
+    if (bleachFactor == 0f)
+    {
+      return colour;
+    }
+
+    int red = (colour >> 16) & 0xFF;// getRed();
+    int green = (colour >> 8) & 0xFF;// colour.getGreen();
+    int blue = colour & 0xFF;// .getBlue();
+
+    if (bleachFactor > 0)
+    {
+      red += (255 - red) * bleachFactor;
+      green += (255 - green) * bleachFactor;
+      blue += (255 - blue) * bleachFactor;
+    }
+    else
+    {
+      float factor = 1 + bleachFactor;
+      red *= factor;
+      green *= factor;
+      blue *= factor;
+    }
+    return 0xFF000000 | (red << 16) | (green << 8) | blue;// new Color(red,
+                                                          // green, blue);
+  }
+
   /**
    * Parses a string into a Color, where the accepted formats are
    * <ul>
@@ -225,6 +261,7 @@ public class ColorUtils
       col = new Color(value);
     } catch (NumberFormatException ex)
     {
+      col = Platform.getColorFromName(colour);
     }
 
     if (col == null)
@@ -319,57 +356,8 @@ public class ColorUtils
    */
   public static Color getAWTColorFromName(String name)
   {
-    if (name == null)
-    {
-      return null;
-    }
-    Color col = null;
-    name = name.toLowerCase();
-
-    // or make a static map; or use reflection on the field name
-    switch (name)
-    {
-    case "black":
-      col = Color.black;
-      break;
-    case "blue":
-      col = Color.blue;
-      break;
-    case "cyan":
-      col = Color.cyan;
-      break;
-    case "darkgray":
-      col = Color.darkGray;
-      break;
-    case "gray":
-      col = Color.gray;
-      break;
-    case "green":
-      col = Color.green;
-      break;
-    case "lightgray":
-      col = Color.lightGray;
-      break;
-    case "magenta":
-      col = Color.magenta;
-      break;
-    case "orange":
-      col = Color.orange;
-      break;
-    case "pink":
-      col = Color.pink;
-      break;
-    case "red":
-      col = Color.red;
-      break;
-    case "white":
-      col = Color.white;
-      break;
-    case "yellow":
-      col = Color.yellow;
-      break;
-    }
-
-    return col;
+    return Platform.getColorFromName(name); // BH 2019 -- allows for wide range
+                                            // of JavaScript colors (for
+                                            // JavaScript only)
   }
 }