diff --git a/android/android-base/src/main/java/org/isoron/androidbase/utils/ColorUtils.java b/android/android-base/src/main/java/org/isoron/androidbase/utils/ColorUtils.java index 58199d2dd..306fa57e1 100644 --- a/android/android-base/src/main/java/org/isoron/androidbase/utils/ColorUtils.java +++ b/android/android-base/src/main/java/org/isoron/androidbase/utils/ColorUtils.java @@ -30,22 +30,12 @@ public abstract class ColorUtils final byte GREEN_CHANNEL = 8; final byte BLUE_CHANNEL = 0; - final float inverseAmount = 1.0f - amount; - - int a = ((int) (((float) (color1 >> ALPHA_CHANNEL & 0xff) * amount) + - ((float) (color2 >> ALPHA_CHANNEL & 0xff) * - inverseAmount))) & 0xff; - int r = ((int) (((float) (color1 >> RED_CHANNEL & 0xff) * amount) + - ((float) (color2 >> RED_CHANNEL & 0xff) * - inverseAmount))) & 0xff; - int g = ((int) (((float) (color1 >> GREEN_CHANNEL & 0xff) * amount) + - ((float) (color2 >> GREEN_CHANNEL & 0xff) * - inverseAmount))) & 0xff; - int b = ((int) (((float) (color1 & 0xff) * amount) + - ((float) (color2 & 0xff) * inverseAmount))) & 0xff; + int a = getComponent(color1, color2, amount, ALPHA_CHANNEL); + int r = getComponent(color1, color2, amount, RED_CHANNEL); + int g = getComponent(color1, color2, amount, GREEN_CHANNEL); + int b = getComponent(color1, color2, amount, BLUE_CHANNEL); - return a << ALPHA_CHANNEL | r << RED_CHANNEL | g << GREEN_CHANNEL | - b << BLUE_CHANNEL; + return a | r | g | b ; } public static int setAlpha(int color, float newAlpha) @@ -63,4 +53,11 @@ public abstract class ColorUtils return Color.HSVToColor(hsv); } + private static int getComponent(int color1, int color2, float amount, byte channel) { + final float inverseAmount = 1.0f - amount; + + return (((int) (((float) (color1 >> channel & 0xff) * amount) + + ((float) (color2 >> channel & 0xff) * inverseAmount))) & 0xff) << channel; + } + } \ No newline at end of file