diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 89b9d5f623..d9d63cc505 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -32,6 +32,7 @@ import android.content.pm.ResolveInfo; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Color; import android.graphics.Matrix; import android.hardware.biometrics.BiometricManager; import android.hardware.fingerprint.FingerprintManager; @@ -66,6 +67,7 @@ import androidx.biometric.BiometricPrompt; import androidx.browser.customtabs.CustomTabsIntent; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.ContextCompat; +import androidx.core.graphics.ColorUtils; import androidx.exifinterface.media.ExifInterface; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; @@ -340,6 +342,15 @@ public class Helper { return (tv.string != null && !"light".contentEquals(tv.string)); } + static int adjustLuminance(int color, boolean dark, float min) { + float lum = (float) ColorUtils.calculateLuminance(color); + if (dark ? lum < min : lum > 1 - min) + return ColorUtils.blendARGB(color, + dark ? Color.WHITE : Color.BLACK, + dark ? min - lum : lum - (1 - min)); + return color; + } + // Formatting static String humanReadableByteCount(long bytes, boolean si) { diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index f86bb08957..8df6255fbb 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -45,7 +45,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.graphics.ColorUtils; import androidx.core.text.HtmlCompat; import androidx.core.util.PatternsCompat; import androidx.preference.PreferenceManager; @@ -211,11 +210,7 @@ public class HtmlHelper { } if (color != null) { - float lum = (float) ColorUtils.calculateLuminance(color); - if (dark ? lum < MIN_LUMINANCE : lum > 1 - MIN_LUMINANCE) - color = ColorUtils.blendARGB(color, - dark ? Color.WHITE : Color.BLACK, - dark ? MIN_LUMINANCE - lum : lum - (1 - MIN_LUMINANCE)); + color = Helper.adjustLuminance(color, dark, MIN_LUMINANCE); c = String.format("#%06x", color & 0xFFFFFF); sb.append("color:").append(c).append(";"); diff --git a/app/src/main/java/eu/faircode/email/Identicon.java b/app/src/main/java/eu/faircode/email/Identicon.java index ab5eaa1941..d18db9cc0c 100644 --- a/app/src/main/java/eu/faircode/email/Identicon.java +++ b/app/src/main/java/eu/faircode/email/Identicon.java @@ -39,8 +39,7 @@ class Identicon { byte[] hash = getHash(email); int color = Color.argb(255, hash[0], hash[1], hash[2]); - color = ColorUtils.blendARGB(color, - dark ? Color.WHITE : Color.BLACK, MIN_LUMINANCE); + color = Helper.adjustLuminance(color, dark, MIN_LUMINANCE); Paint paint = new Paint(); paint.setColor(color); @@ -79,7 +78,7 @@ class Identicon { byte[] hash = getHash(email); int color = Color.argb(255, hash[0], hash[1], hash[2]); - color = ColorUtils.blendARGB(color, dark ? Color.WHITE : Color.BLACK, MIN_LUMINANCE); + color = Helper.adjustLuminance(color, dark, MIN_LUMINANCE); Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap);