6.7.0 - Alpha13 - 修复 Canvas 构造函数可接受的参数类型错误 (issue #402)

This commit is contained in:
SuperMonster003
2026-01-03 20:48:07 +08:00
parent 7e979dd9a7
commit c3b7d6359c
4 changed files with 54 additions and 2 deletions

View File

@@ -74,6 +74,7 @@
"部分设备无法正常初始化 MLKit Google OCR 的问题 (试修) _[`issue #8`](http://issues.autojs6.com/8#issuecomment-3117061768)_", "部分设备无法正常初始化 MLKit Google OCR 的问题 (试修) _[`issue #8`](http://issues.autojs6.com/8#issuecomment-3117061768)_",
"部分设备无法正常触发文件管理器功能按钮点击事件的问题 (试修) _[`issue #465`](http://issues.autojs6.com/465)_", "部分设备无法正常触发文件管理器功能按钮点击事件的问题 (试修) _[`issue #465`](http://issues.autojs6.com/465)_",
"ErrorDialogActivity 可能无法正常启动或短时间自动消失的问题 _[`issue #471`](http://issues.autojs6.com/471)_ _[`issue #414`](http://issues.autojs6.com/414)_ _[`issue #340`](http://issues.autojs6.com/340#issuecomment-2973485826)_", "ErrorDialogActivity 可能无法正常启动或短时间自动消失的问题 _[`issue #471`](http://issues.autojs6.com/471)_ _[`issue #414`](http://issues.autojs6.com/414)_ _[`issue #340`](http://issues.autojs6.com/340#issuecomment-2973485826)_",
"Canvas 构造函数可接受的参数类型错误 _[`issue #402`](http://issues.autojs6.com/402)_",
"崩溃报告页面复制详细信息功能失效的问题", "崩溃报告页面复制详细信息功能失效的问题",
"文件管理器删除项目文件夹后 UI 未能自动刷新的问题", "文件管理器删除项目文件夹后 UI 未能自动刷新的问题",
"使用 \"三按钮\" 手势导航时导航栏前景色可能与夜间模式关联异常的问题", "使用 \"三按钮\" 手势导航时导航栏前景色可能与夜间模式关联异常的问题",

View File

@@ -42,6 +42,7 @@ import org.autojs.autojs.runtime.api.augment.automator.RootAutomator
import org.autojs.autojs.runtime.api.augment.barcode.Barcode import org.autojs.autojs.runtime.api.augment.barcode.Barcode
import org.autojs.autojs.runtime.api.augment.barcode.QrCode import org.autojs.autojs.runtime.api.augment.barcode.QrCode
import org.autojs.autojs.runtime.api.augment.base64.Base64 import org.autojs.autojs.runtime.api.augment.base64.Base64
import org.autojs.autojs.runtime.api.augment.canvas.Canvas
import org.autojs.autojs.runtime.api.augment.colors.Color import org.autojs.autojs.runtime.api.augment.colors.Color
import org.autojs.autojs.runtime.api.augment.colors.Colors import org.autojs.autojs.runtime.api.augment.colors.Colors
import org.autojs.autojs.runtime.api.augment.console.Console import org.autojs.autojs.runtime.api.augment.console.Console
@@ -755,6 +756,7 @@ class ScriptRuntime private constructor(builder: Builder) {
Selector(this).augment(target, true, READONLY) Selector(this).augment(target, true, READONLY)
Events(this).augment(target, events, true) Events(this).augment(target, events, true)
Keys.augmentWithRuntime(target, this, true) Keys.augmentWithRuntime(target, this, true)
Canvas(this).augment(target, false)
Images(this).augment(target, true) Images(this).augment(target, true)
Ocr(this).augment(target, true).also { ocr -> Ocr(this).augment(target, true).also { ocr ->
OcrMLKit(this).augment(ocr, false).also { augmentedOcrMLKit = it } OcrMLKit(this).augment(ocr, false).also { augmentedOcrMLKit = it }

View File

@@ -0,0 +1,48 @@
package org.autojs.autojs.runtime.api.augment.canvas
import android.graphics.Bitmap
import org.autojs.autojs.core.graphics.ScriptCanvas
import org.autojs.autojs.core.image.ImageWrapper
import org.autojs.autojs.extension.AnyExtensions.jsBrief
import org.autojs.autojs.extension.FlexibleArray.Companion.component1
import org.autojs.autojs.extension.FlexibleArray.Companion.component2
import org.autojs.autojs.runtime.ScriptRuntime
import org.autojs.autojs.runtime.api.augment.Augmentable
import org.autojs.autojs.runtime.api.augment.Constructable
import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException
import org.autojs.autojs.util.RhinoUtils.coerceIntNumber
import org.mozilla.javascript.Context
import org.mozilla.javascript.Scriptable
@Suppress("unused")
class Canvas(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime), Constructable {
init {
originateKeyName()
}
override fun construct(vararg args: Any?): Scriptable = ensureArgumentsAtMost(args, 2) { argList ->
when (argList.size) {
0 -> ScriptCanvas(scriptRuntime)
1 -> when (val o = argList[0]) {
is Bitmap -> ScriptCanvas(scriptRuntime, o)
is ImageWrapper -> ScriptCanvas(scriptRuntime, o)
else -> throw WrappedIllegalArgumentException("Invalid argument ${o.jsBrief()} for $key constructor")
}
2 -> {
val (width, height) = argList
require(width is Number) {
"Argument \"width\" ${width.jsBrief()} for $key constructor must be a number"
}
require(height is Number) {
"Argument \"height\" ${height.jsBrief()} for $key constructor must be a number"
}
ScriptCanvas(scriptRuntime, coerceIntNumber(width), coerceIntNumber(height))
}
else -> throw WrappedIllegalArgumentException("Invalid arguments length ${argList.size} for $key constructor")
}.let { javaCanvas ->
Context.javaToJS(javaCanvas, scriptRuntime.topLevelScope) as Scriptable
}
}
}

View File

@@ -461,8 +461,9 @@ class Classes {
@JvmField @JvmField
val JsWebView = org.autojs.autojs.core.ui.widget.JsWebView::class val JsWebView = org.autojs.autojs.core.ui.widget.JsWebView::class
@JvmField // @Comment by SuperMonster003 on Jan 3, 2026.
val Canvas = org.autojs.autojs.core.graphics.ScriptCanvas::class // # @JvmField
// # val Canvas = org.autojs.autojs.core.graphics.ScriptCanvas::class
@JvmField @JvmField
val EvaluatorException = org.mozilla.javascript.EvaluatorException::class val EvaluatorException = org.mozilla.javascript.EvaluatorException::class