From 51fa9bde4957dfeb30922420cfaffe06de75764f Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Wed, 11 Apr 2018 17:11:15 +0800 Subject: [PATCH] fix(images): java.lang.IllegalArgumentException: x must be < bitmap.width() in images.findMultiColors() --- .../scriptdroid/ui/edit/editor/CodeEditText.java | 9 +++++++++ .../java/com/stardust/autojs/core/image/ColorFinder.java | 7 ++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditText.java b/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditText.java index 5be3ff7e..5a630e80 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditText.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/edit/editor/CodeEditText.java @@ -34,6 +34,7 @@ import android.view.Gravity; import com.stardust.scriptdroid.BuildConfig; import com.stardust.scriptdroid.ui.edit.theme.Theme; import com.stardust.scriptdroid.ui.edit.theme.TokenMapping; +import com.stardust.util.ClipboardUtil; import com.stardust.util.TextUtils; import org.mozilla.javascript.Token; @@ -135,6 +136,14 @@ public class CodeEditText extends AppCompatEditText { } } + @Override + public boolean onTextContextMenuItem(int id) { + if (id == android.R.id.paste) { + ClipboardUtil.setClip(getContext(), ClipboardUtil.getClip(getContext()).toString()); + } + return super.onTextContextMenuItem(id); + } + //该方法中内联了很多函数来提高效率 但是 这是必要的吗??? // 绘制文本着色 private void drawText(Canvas canvas) { diff --git a/autojs/src/main/java/com/stardust/autojs/core/image/ColorFinder.java b/autojs/src/main/java/com/stardust/autojs/core/image/ColorFinder.java index 4a9561d3..6392b5f0 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/image/ColorFinder.java +++ b/autojs/src/main/java/com/stardust/autojs/core/image/ColorFinder.java @@ -110,7 +110,12 @@ public class ColorFinder { int y = points[i + 1]; int color = points[i + 2]; ColorDetector colorDetector = new ColorDetector.DifferenceDetector(color, threshold); - int c = image.pixel((int) (x + startingPoint.x), (int) (y + startingPoint.y)); + x += startingPoint.x; + y += startingPoint.y; + if (x >= image.getWidth() || y >= image.getHeight()) { + return false; + } + int c = image.pixel(x, y); if (!colorDetector.detectsColor(Color.red(c), Color.green(c), Color.blue(c))) { return false; }