From a94f901851bf83aea4424a4ec78dd411f3b75461 Mon Sep 17 00:00:00 2001 From: gmungoc Date: Mon, 6 Nov 2017 16:44:43 +0000 Subject: [PATCH] JAL-2069 cache colours generated from labels --- src/jalview/util/ColorUtils.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/jalview/util/ColorUtils.java b/src/jalview/util/ColorUtils.java index d4be322..60129fb 100644 --- a/src/jalview/util/ColorUtils.java +++ b/src/jalview/util/ColorUtils.java @@ -25,10 +25,17 @@ package jalview.util; import java.awt.Color; +import java.util.HashMap; +import java.util.Map; 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 myColours = new HashMap<>(); /** * Generates a random color, will mix with input color. Code taken from @@ -260,6 +267,10 @@ public class ColorUtils { return Color.white; } + if (myColours.containsKey(name)) + { + return myColours.get(name); + } int lsize = name.length(); int start = 0; int end = lsize / 3; @@ -291,6 +302,11 @@ public class ColorUtils Color color = new Color(r, g, b); + if (myColours.size() < MAX_CACHE_SIZE) + { + myColours.put(name, color); + } + return color; } -- 1.7.10.2