From 55ea745d57b52f6858bbab5de69f1d89ecfb4137 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sun, 31 Dec 2017 18:52:03 +0800 Subject: [PATCH] fix: colors.red() return NaN --- .../ui/main/drawer/DrawerFragment.java | 1 + autojs/src/main/assets/modules/__images__.js | 15 ++++- .../stardust/autojs/core/image/Colors.java | 55 +++++++++++++++++++ .../autojs/runtime/ScriptRuntime.java | 4 ++ 4 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 autojs/src/main/java/com/stardust/autojs/core/image/Colors.java diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java index 28784802..b6db595d 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java @@ -1,6 +1,7 @@ package com.stardust.scriptdroid.ui.main.drawer; import android.content.Intent; +import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; diff --git a/autojs/src/main/assets/modules/__images__.js b/autojs/src/main/assets/modules/__images__.js index 000ed8d4..f4c52389 100644 --- a/autojs/src/main/assets/modules/__images__.js +++ b/autojs/src/main/assets/modules/__images__.js @@ -1,9 +1,18 @@ module.exports = function(__runtime__, scope){ var images = {}; - var colors = Object.create(android.graphics.Color); - colors.toString = function(color){ - return '#' + (color >>> 0).toString(16); + var colors = Object.create(__runtime__.colors); + colors.alpha = function(color){ + return color >>> 24; + } + colors.red = function(color){ + return (color >> 16) & 0xFF; + } + colors.green = function(color){ + return (color >> 8) & 0xFF; + } + colors.blue = function(color){ + return color & 0xFF; } if(android.os.Build.VERSION.SDK_INT < 19){ return images; diff --git a/autojs/src/main/java/com/stardust/autojs/core/image/Colors.java b/autojs/src/main/java/com/stardust/autojs/core/image/Colors.java new file mode 100644 index 00000000..fa0bf8b8 --- /dev/null +++ b/autojs/src/main/java/com/stardust/autojs/core/image/Colors.java @@ -0,0 +1,55 @@ +package com.stardust.autojs.core.image; + +import android.graphics.Color; +import android.os.Build; +import android.support.annotation.RequiresApi; + +/** + * Created by Stardust on 2017/12/31. + */ + +public class Colors { + + public int rgb(int red, int green, int blue) { + return Color.rgb(red, green, blue); + } + + public int argb(int alpha, int red, int green, int blue) { + return Color.argb(alpha, red, green, blue); + } + + @RequiresApi(api = Build.VERSION_CODES.N) + public float luminance(int color) { + double red = Color.red(color) / 255.0; + red = red < 0.03928 ? red / 12.92 : Math.pow((red + 0.055) / 1.055, 2.4); + double green = Color.green(color) / 255.0; + green = green < 0.03928 ? green / 12.92 : Math.pow((green + 0.055) / 1.055, 2.4); + double blue = Color.blue(color) / 255.0; + blue = blue < 0.03928 ? blue / 12.92 : Math.pow((blue + 0.055) / 1.055, 2.4); + return (float) ((0.2126 * red) + (0.7152 * green) + (0.0722 * blue)); + } + + public int parseColor(String colorString) { + return Color.parseColor(colorString); + } + + public void RGBToHSV(int red, int green, int blue, float[] hsv) { + Color.RGBToHSV(red, green, blue, hsv); + } + + public void colorToHSV(int color, float[] hsv) { + Color.colorToHSV(color, hsv); + } + + public int HSVToColor(float[] hsv) { + return Color.HSVToColor(hsv); + } + + public int HSVToColor(int alpha, float[] hsv) { + return Color.HSVToColor(alpha, hsv); + } + + public String toString(int color) { + return "#" + Integer.toHexString(color); + } +} diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java index afc3ae0c..f772e636 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java @@ -8,6 +8,7 @@ import com.stardust.autojs.R; import com.stardust.autojs.ScriptEngineService; import com.stardust.autojs.annotation.ScriptVariable; import com.stardust.autojs.core.accessibility.AccessibilityBridge; +import com.stardust.autojs.core.image.Colors; import com.stardust.autojs.engine.ScriptEngine; import com.stardust.autojs.rhino.AndroidClassLoader; import com.stardust.autojs.runtime.api.AbstractShell; @@ -161,6 +162,9 @@ public class ScriptRuntime { @ScriptVariable public UiHandler uiHandler; + @ScriptVariable + public final Colors colors = new Colors(); + private Images images; private static WeakReference applicationContext;