From 157cd71c33a0d8cfe540566f8c82575eda8890ad Mon Sep 17 00:00:00 2001 From: Marek Ossowski Date: Tue, 19 Aug 2025 22:09:18 +0200 Subject: [PATCH] Removed usage of ColorUtils.blendARGB --- .../java/xdsopl/robot36/ColorConverter.java | 20 +++++++++++++++++++ .../java/xdsopl/robot36/MainActivity.java | 3 +-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/xdsopl/robot36/ColorConverter.java b/app/src/main/java/xdsopl/robot36/ColorConverter.java index cd64aaf..d5b18e5 100644 --- a/app/src/main/java/xdsopl/robot36/ColorConverter.java +++ b/app/src/main/java/xdsopl/robot36/ColorConverter.java @@ -6,6 +6,8 @@ Copyright 2024 Ahmet Inan package xdsopl.robot36; +import android.graphics.Color; + public final class ColorConverter { private static int clamp(int value) { @@ -36,6 +38,24 @@ public final class ColorConverter { return 0xff000000 | (R << 16) | (G << 8) | B; } + private static int[] argb2components(int argb) { + return new int[] { (argb >> 24) & 0xff, (argb >> 16) & 0xff, (argb >> 8) & 0xff, argb & 0xff }; + } + + public static int blend(int argbLeft, int argbRight, float ratioOfArgbRight) { + int[] componentsLeft = argb2components(argbLeft); + int[] componentsRight = argb2components(argbRight); + int[] output = new int[4]; + + ratioOfArgbRight = clamp(ratioOfArgbRight); + + for (int i = 0; i < 4; i++) { + output[i] = clamp(Math.round(componentsLeft[i] * (1 - ratioOfArgbRight) + componentsRight[i] * ratioOfArgbRight)); + } + + return Color.argb(output[0], output[1], output[2], output[3]); + } + public static int GRAY(float level) { return 0xff000000 | 0x00010101 * compress(level); } diff --git a/app/src/main/java/xdsopl/robot36/MainActivity.java b/app/src/main/java/xdsopl/robot36/MainActivity.java index ce02a2f..d644c0b 100644 --- a/app/src/main/java/xdsopl/robot36/MainActivity.java +++ b/app/src/main/java/xdsopl/robot36/MainActivity.java @@ -44,7 +44,6 @@ import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.widget.ShareActionProvider; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; -import androidx.core.graphics.ColorUtils; import androidx.core.graphics.Insets; import androidx.core.os.LocaleListCompat; import androidx.core.view.MenuItemCompat; @@ -238,7 +237,7 @@ public class MainActivity extends AppCompatActivity { for (int freq: markerFrequencies) { int marker = freq / binWidthHz - lowestBin; waterfallPlotBuffer.pixels[line + marker - 1] = Color.BLACK; - waterfallPlotBuffer.pixels[line + marker] = ColorUtils.blendARGB(waterfallPlotBuffer.pixels[line + marker], Color.GREEN, 0.8f); + waterfallPlotBuffer.pixels[line + marker] = ColorConverter.blend(waterfallPlotBuffer.pixels[line + marker], Color.GREEN, 0.8f); waterfallPlotBuffer.pixels[line + marker + 1] = Color.BLACK; }