From bca7280cac2e5552aecf5dbb41718d548176a72c Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 25 Apr 2019 17:53:45 +0200 Subject: [PATCH] Pick first letter --- .../main/java/eu/faircode/email/Identicon.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Identicon.java b/app/src/main/java/eu/faircode/email/Identicon.java index 723e7d8d2a..14322ddab0 100644 --- a/app/src/main/java/eu/faircode/email/Identicon.java +++ b/app/src/main/java/eu/faircode/email/Identicon.java @@ -26,13 +26,14 @@ import android.graphics.Paint; import android.graphics.RectF; import android.graphics.Typeface; +import androidx.annotation.NonNull; import androidx.core.graphics.ColorUtils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; class Identicon { - static Bitmap icon(String email, int size, int pixels, boolean dark) { + static Bitmap icon(@NonNull String email, int size, int pixels, boolean dark) { byte[] hash = getHash(email); int color = Color.argb(255, hash[0], hash[1], hash[2]); @@ -60,7 +61,18 @@ class Identicon { return bitmap; } - static Bitmap letter(String email, int size, boolean dark) { + static Bitmap letter(@NonNull String email, int size, boolean dark) { + String text = null; + for (int i = 0; i < email.length(); i++) { + char kar = email.charAt(i); + if (Character.isAlphabetic(kar)) { + text = email.substring(i, i + 1).toUpperCase(); + break; + } + } + if (text == null) + return null; + byte[] hash = getHash(email); int color = Color.argb(255, hash[0], hash[1], hash[2]); @@ -76,7 +88,7 @@ class Identicon { paint.setColor(y < 128 ? Color.WHITE : Color.BLACK); paint.setTextSize(size / 2f); paint.setTypeface(Typeface.DEFAULT_BOLD); - String text = email.substring(0, 1).toUpperCase(); + canvas.drawText( text, size / 2f - paint.measureText(text) / 2,