git://source.jalview.org
/
jalview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'releases/Release_2_11_3_Branch'
[jalview.git]
/
src
/
jalview
/
util
/
ColorUtils.java
diff --git
a/src/jalview/util/ColorUtils.java
b/src/jalview/util/ColorUtils.java
index
d4be322
..
24128ea
100644
(file)
--- a/
src/jalview/util/ColorUtils.java
+++ b/
src/jalview/util/ColorUtils.java
@@
-25,10
+25,19
@@
package jalview.util;
import java.awt.Color;
package jalview.util;
import java.awt.Color;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
import java.util.Random;
public class ColorUtils
{
import java.util.Random;
public class ColorUtils
{
+ private static final int MAX_CACHE_SIZE = 1729;
+
+ /*
+ * a cache for colours generated from text strings
+ */
+ static Map<String, Color> myColours = new HashMap<>();
/**
* Generates a random color, will mix with input color. Code taken from
/**
* Generates a random color, will mix with input color. Code taken from
@@
-60,6
+69,18
@@
public class ColorUtils
}
/**
}
/**
+ *
+ * @return random color
+ */
+ public static final Color getARandomColor()
+ {
+
+ Color col = new Color((int) (Math.random() * 255),
+ (int) (Math.random() * 255), (int) (Math.random() * 255));
+ return col;
+ }
+
+ /**
* Convert to Tk colour code format
*
* @param colour
* Convert to Tk colour code format
*
* @param colour
@@
-212,6
+233,12
@@
public class ColorUtils
colour = colour.trim();
Color col = null;
colour = colour.trim();
Color col = null;
+
+ if ("random".equals(colour))
+ {
+ return generateRandomColor(null);
+ }
+
try
{
int value = Integer.parseInt(colour, 16);
try
{
int value = Integer.parseInt(colour, 16);
@@
-237,7
+264,8
@@
public class ColorUtils
int b = Integer.parseInt(tokens[2].trim());
col = new Color(r, g, b);
}
int b = Integer.parseInt(tokens[2].trim());
col = new Color(r, g, b);
}
- } catch (Exception ex)
+ } catch (IllegalArgumentException ex) // IllegalArgumentException includes
+ // NumberFormatException
{
// non-numeric token or out of 0-255 range
}
{
// non-numeric token or out of 0-255 range
}
@@
-260,6
+288,10
@@
public class ColorUtils
{
return Color.white;
}
{
return Color.white;
}
+ if (myColours.containsKey(name))
+ {
+ return myColours.get(name);
+ }
int lsize = name.length();
int start = 0;
int end = lsize / 3;
int lsize = name.length();
int start = 0;
int end = lsize / 3;
@@
-291,6
+323,11
@@
public class ColorUtils
Color color = new Color(r, g, b);
Color color = new Color(r, g, b);
+ if (myColours.size() < MAX_CACHE_SIZE)
+ {
+ myColours.put(name, color);
+ }
+
return color;
}
return color;
}
@@
-308,7
+345,7
@@
public class ColorUtils
return null;
}
Color col = null;
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)
// or make a static map; or use reflection on the field name
switch (name)