From 8031e1e521f5e051f11c48ac5ebdda0956837e9c Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 10 Dec 2017 21:33:48 +0100 Subject: Refined avatar generation a bit --- .../java/de/pixart/messenger/utils/UIHelper.java | 69 ++++++++++++++++++---- 1 file changed, 58 insertions(+), 11 deletions(-) (limited to 'src/main/java/de/pixart/messenger/utils') diff --git a/src/main/java/de/pixart/messenger/utils/UIHelper.java b/src/main/java/de/pixart/messenger/utils/UIHelper.java index a5c0aa317..d3e44999f 100644 --- a/src/main/java/de/pixart/messenger/utils/UIHelper.java +++ b/src/main/java/de/pixart/messenger/utils/UIHelper.java @@ -30,34 +30,75 @@ import de.pixart.messenger.xmpp.jid.Jid; public class UIHelper { - private static int COLORS[] = { + private static int[] UNSAFE_COLORS = { + 0xFFF44336, //red 500 + 0xFFE53935, //red 600 + 0xFFD32F2F, //red 700 + 0xFFC62828, //red 800 + 0xFFEF6C00, //orange 800 + 0xFFF4511E, //deep orange 600 + 0xFFE64A19, //deep orange 700 + 0xFFD84315, //deep orange 800, + }; + + private static int[] SAFE_COLORS = { 0xFFE91E63, //pink 500 + 0xFFD81B60, //pink 600 + 0xFFC2185B, //pink 700 0xFFAD1457, //pink 800 + 0xFF9C27B0, //purple 500 + 0xFF8E24AA, //purple 600 + 0xFF7B1FA2, //purple 700 0xFF6A1B9A, //purple 800 + 0xFF673AB7, //deep purple 500, + 0xFF5E35B1, //deep purple 600 + 0xFF512DA8, //deep purple 700 0xFF4527A0, //deep purple 800, + 0xFF3F51B5, //indigo 500, + 0xFF3949AB,//indigo 600 + 0xFF303F9F,//indigo 700 0xFF283593, //indigo 800 + 0xFF2196F3, //blue 500 + 0xFF1E88E5, //blue 600 + 0xFF1976D2, //blue 700 0xFF1565C0, //blue 800 + 0xFF03A9F4, //light blue 500 + 0xFF039BE5, //light blue 600 + 0xFF0288D1, //light blue 700 0xFF0277BD, //light blue 800 + 0xFF00BCD4, //cyan 500 + 0xFF00ACC1, //cyan 600 + 0xFF0097A7, //cyan 700 0xFF00838F, //cyan 800 + 0xFF009688, //teal 500, + 0xFF00897B, //teal 600 + 0xFF00796B, //teal 700 0xFF00695C, //teal 800, + //0xFF558B2F, //light green 800 - 0xFFC0CA33, //lime 600 + //0xFFC0CA33, //lime 600 0xFF9E9D24, //lime 800 - 0xFFEF6C00, //orange 800 - 0xFFD84315, //deep orange 800, + 0xFF795548, //brown 500, //0xFF4E342E, //brown 800 0xFF607D8B, //blue grey 500, - 0xFF37474F //blue grey 800 + //0xFF37474F //blue grey 800 }; + private static final int[] COLORS; + + static { + COLORS = Arrays.copyOf(SAFE_COLORS, SAFE_COLORS.length + UNSAFE_COLORS.length); + System.arraycopy(UNSAFE_COLORS, 0, COLORS, SAFE_COLORS.length, UNSAFE_COLORS.length); + } + private static final List LOCATION_QUESTIONS = Arrays.asList( "where are you", //en "where are you now", //en @@ -78,7 +119,7 @@ public class UIHelper { "donde estas" //es ); - private static final List PUNCTIONATION = Arrays.asList('.',',','?','!',';',':'); + private static final List PUNCTIONATION = Arrays.asList('.', ',', '?', '!', ';', ':'); private static final int SHORT_DATE_FLAGS = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL; @@ -177,18 +218,24 @@ public class UIHelper { } public static int getColorForName(String name) { + return getColorForName(name, false); + } + + public static int getColorForName(String name, boolean safe) { if (name == null || name.isEmpty()) { return 0xFF202020; } - return COLORS[getIntForName(name) % COLORS.length]; + if (safe) { + return SAFE_COLORS[(int) (getLongForName(name) % SAFE_COLORS.length)]; + } else { + return COLORS[(int) (getLongForName(name) % COLORS.length)]; + } } - private static int getIntForName(String name) { + private static long getLongForName(String name) { try { final MessageDigest messageDigest = MessageDigest.getInstance("MD5"); - messageDigest.update(name.getBytes()); - byte[] bytes = messageDigest.digest(); - return Math.abs(new BigInteger(bytes).intValue()); + return Math.abs(new BigInteger(messageDigest.digest(name.getBytes())).longValue()); } catch (Exception e) { return 0; } -- cgit v1.2.3