From 309c55b5a9670e7c327ad8d4e5d94b8af840d00f Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 18 Nov 2011 17:46:06 -0500 Subject: [PATCH] Calculate repository color from name. Show swatch on repository list. --- src/com/gitblit/utils/StringUtils.java | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/com/gitblit/utils/StringUtils.java b/src/com/gitblit/utils/StringUtils.java index 746fbe2..a51c157 100644 --- a/src/com/gitblit/utils/StringUtils.java +++ b/src/com/gitblit/utils/StringUtils.java @@ -33,7 +33,7 @@ public class StringUtils { public static final String MD5_TYPE = "MD5:"; - + public static final String COMBINED_MD5_TYPE = "CMD5:"; /** @@ -443,4 +443,48 @@ } }); } -} + + public static String getColor(String value) { + int cs = 0; + for (char c : getMD5(value.toLowerCase()).toCharArray()) { + cs += c; + } + int n = (cs % 360); + float hue = ((float) n) / 360; + return hsvToRgb(hue, 0.90f, 0.65f); + } + + public static String hsvToRgb(float hue, float saturation, float value) { + int h = (int) (hue * 6); + float f = hue * 6 - h; + float p = value * (1 - saturation); + float q = value * (1 - f * saturation); + float t = value * (1 - (1 - f) * saturation); + + switch (h) { + case 0: + return rgbToString(value, t, p); + case 1: + return rgbToString(q, value, p); + case 2: + return rgbToString(p, value, t); + case 3: + return rgbToString(p, q, value); + case 4: + return rgbToString(t, p, value); + case 5: + return rgbToString(value, p, q); + default: + throw new RuntimeException( + "Something went wrong when converting from HSV to RGB. Input was " + hue + ", " + + saturation + ", " + value); + } + } + + public static String rgbToString(float r, float g, float b) { + String rs = Integer.toHexString((int) (r * 256)); + String gs = Integer.toHexString((int) (g * 256)); + String bs = Integer.toHexString((int) (b * 256)); + return "#" + rs + gs + bs; + } +} \ No newline at end of file -- Gitblit v1.9.1