From 6717613b5e308243b2ba263105ca18cfd72a7bd6 Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Sat, 22 Mar 2025 12:25:59 +0100 Subject: [PATCH] Fix label brightness not being applied This is due to Paint.setColor overriding any alpha value set with Paint.setAlpha. Bug was added in 653c598. --- srcs/juloo.keyboard2/Keyboard2View.java | 6 ++---- srcs/juloo.keyboard2/Theme.java | 9 ++++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java index ab3e36b..0e1b258 100644 --- a/srcs/juloo.keyboard2/Keyboard2View.java +++ b/srcs/juloo.keyboard2/Keyboard2View.java @@ -441,8 +441,7 @@ public class Keyboard2View extends View if (kv == null) return; float textSize = scaleTextSize(kv, _config.labelTextSize, keyH); - Paint p = tc.label_paint(kv.hasFlagsAny(KeyValue.FLAG_KEY_FONT), textSize); - p.setColor(labelColor(kv, isKeyDown, false)); + Paint p = tc.label_paint(kv.hasFlagsAny(KeyValue.FLAG_KEY_FONT), labelColor(kv, isKeyDown, false), textSize); canvas.drawText(kv.getString(), x, (keyH - p.ascent() - p.descent()) / 2f + y, p); } @@ -456,8 +455,7 @@ public class Keyboard2View extends View if (kv == null) return; float textSize = scaleTextSize(kv, _config.sublabelTextSize, keyH); - Paint p = tc.sublabel_paint(kv.hasFlagsAny(KeyValue.FLAG_KEY_FONT), textSize, a); - p.setColor(labelColor(kv, isKeyDown, true)); + Paint p = tc.sublabel_paint(kv.hasFlagsAny(KeyValue.FLAG_KEY_FONT), labelColor(kv, isKeyDown, true), textSize, a); float subPadding = _config.keyPadding; if (v == Vertical.CENTER) y += (keyH - p.ascent() - p.descent()) / 2f; diff --git a/srcs/juloo.keyboard2/Theme.java b/srcs/juloo.keyboard2/Theme.java index e896af5..c5f3e20 100644 --- a/srcs/juloo.keyboard2/Theme.java +++ b/srcs/juloo.keyboard2/Theme.java @@ -126,6 +126,7 @@ public class Theme final Paint _special_label_paint; final Paint _sublabel_paint; final Paint _special_sublabel_paint; + final int _label_alpha_bits; public Key(Theme theme, Config config, float keyWidth, boolean activated) { @@ -149,18 +150,21 @@ public class Theme _special_label_paint = init_label_paint(config, _key_font); _sublabel_paint = init_label_paint(config, null); _special_sublabel_paint = init_label_paint(config, _key_font); + _label_alpha_bits = (config.labelBrightness & 0xFF) << 24; } - public Paint label_paint(boolean special_font, float text_size) + public Paint label_paint(boolean special_font, int color, float text_size) { Paint p = special_font ? _special_label_paint : _label_paint; + p.setColor((color & 0x00FFFFFF) | _label_alpha_bits); p.setTextSize(text_size); return p; } - public Paint sublabel_paint(boolean special_font, float text_size, Paint.Align align) + public Paint sublabel_paint(boolean special_font, int color, float text_size, Paint.Align align) { Paint p = special_font ? _special_sublabel_paint : _sublabel_paint; + p.setColor((color & 0x00FFFFFF) | _label_alpha_bits); p.setTextSize(text_size); p.setTextAlign(align); return p; @@ -181,7 +185,6 @@ public class Theme { Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); p.setTextAlign(Paint.Align.CENTER); - p.setAlpha(config.labelBrightness); if (font != null) p.setTypeface(font); return p;