From 768009e45c538e91b2e36663589561eacb5e27b5 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 29 Jun 2020 14:21:19 +0200 Subject: [PATCH] Fixed adjusting compose colors --- .../java/eu/faircode/email/HtmlHelper.java | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 1357759fbd..0d4bdf500d 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -561,10 +561,13 @@ public class HtmlHelper { if (!text_color) continue; - Integer color = parseColor(value, dark, textColorPrimary); + Integer color = parseColor(value); if (color == null) element.removeAttr("color"); else { + if (view) + color = adjustColor(dark, textColorPrimary, color); + // fromHtml does not support transparency String c = String.format("#%06x", color); sb.append("color:").append(c).append(";"); @@ -1211,7 +1214,7 @@ public class HtmlHelper { } } - private static Integer parseColor(@NonNull String value, boolean dark, int textColorPrimary) { + private static Integer parseColor(@NonNull String value) { // https://developer.mozilla.org/en-US/docs/Web/CSS/color_value String c = value .replace("null", "") @@ -1280,21 +1283,21 @@ public class HtmlHelper { Log.i("Color=" + c + ": " + ex); } - if (color != null) { - int r = Color.red(color); - int g = Color.green(color); - int b = Color.blue(color); - if (r == g && r == b && (dark ? 255 - r : r) < GRAY_THRESHOLD) - color = textColorPrimary; - else - color = Helper.adjustLuminance(color, dark, MIN_LUMINANCE); - - color &= 0xFFFFFF; - } - return color; } + private static Integer adjustColor(boolean dark, int textColorPrimary, Integer color) { + int r = Color.red(color); + int g = Color.green(color); + int b = Color.blue(color); + if (r == g && r == b && (dark ? 255 - r : r) < GRAY_THRESHOLD) + color = textColorPrimary; + else + color = Helper.adjustLuminance(color, dark, MIN_LUMINANCE); + + return (color & 0xFFFFFF); + } + private static boolean hasVisibleContent(List nodes) { for (Node node : nodes) if (node instanceof TextNode && !((TextNode) node).isBlank())