6.2.0 - Fix - 补充未提交的文件
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package org.autojs.autojs.core.accessibility
|
||||
|
||||
import android.accessibilityservice.AccessibilityServiceInfo
|
||||
import android.os.Build
|
||||
import org.autojs.autojs.pref.Pref
|
||||
|
||||
class ApplicationAccessibilityService : AccessibilityService() {
|
||||
|
||||
override fun onServiceConnected() {
|
||||
serviceInfo = serviceInfo.apply {
|
||||
AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS.let {
|
||||
flags = (if (Pref.isStableModeEnabled) flags and it.inv() else flags or it)
|
||||
}
|
||||
AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE.let {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
flags = (if (Pref.isGestureObservingEnabled) flags or it else flags and it.inv())
|
||||
}
|
||||
}
|
||||
}
|
||||
super.onServiceConnected()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,173 @@
|
||||
package org.autojs.autojs.core.automator
|
||||
|
||||
import android.os.Build
|
||||
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction
|
||||
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
|
||||
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat
|
||||
import org.autojs.autojs.annotation.ScriptInterface
|
||||
|
||||
interface UiObjectActions {
|
||||
|
||||
fun performAction(action: Int, vararg arguments: ActionArgument): Boolean
|
||||
|
||||
@ScriptInterface
|
||||
fun click() = performAction(AccessibilityActionCompat.ACTION_CLICK.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun longClick() = performAction(AccessibilityActionCompat.ACTION_LONG_CLICK.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun accessibilityFocus() = performAction(AccessibilityActionCompat.ACTION_ACCESSIBILITY_FOCUS.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun clearAccessibilityFocus() = performAction(AccessibilityActionCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun focus() = performAction(AccessibilityActionCompat.ACTION_FOCUS.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun clearFocus() = performAction(AccessibilityActionCompat.ACTION_CLEAR_FOCUS.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun clearSelection() = performAction(AccessibilityActionCompat.ACTION_CLEAR_SELECTION.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun dragCancel() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S_V2) performAction(AccessibilityAction.ACTION_DRAG_CANCEL.id) else false
|
||||
|
||||
@ScriptInterface
|
||||
fun dragDrop() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S_V2) performAction(AccessibilityAction.ACTION_DRAG_DROP.id) else false
|
||||
|
||||
@ScriptInterface
|
||||
fun dragStart() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S_V2) performAction(AccessibilityAction.ACTION_DRAG_START.id) else false
|
||||
|
||||
@ScriptInterface
|
||||
fun hideTooltip() = performAction(AccessibilityActionCompat.ACTION_HIDE_TOOLTIP.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun imeEnter() = performAction(AccessibilityActionCompat.ACTION_IME_ENTER.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun moveWindow(x: Int, y: Int) = performAction(
|
||||
AccessibilityActionCompat.ACTION_MOVE_WINDOW.id,
|
||||
ActionArgument.IntActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_MOVE_WINDOW_X, x),
|
||||
ActionArgument.IntActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_MOVE_WINDOW_Y, y),
|
||||
)
|
||||
|
||||
@ScriptInterface
|
||||
fun nextAtMovementGranularity(granularity: Int, isExtendSelection: Boolean) = performAction(
|
||||
AccessibilityActionCompat.ACTION_NEXT_AT_MOVEMENT_GRANULARITY.id,
|
||||
ActionArgument.IntActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT, granularity),
|
||||
ActionArgument.BooleanActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN, isExtendSelection),
|
||||
)
|
||||
|
||||
@ScriptInterface
|
||||
fun nextHtmlElement(element: String) = performAction(
|
||||
AccessibilityActionCompat.ACTION_NEXT_HTML_ELEMENT.id,
|
||||
ActionArgument.StringActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_HTML_ELEMENT_STRING, element),
|
||||
)
|
||||
|
||||
@ScriptInterface
|
||||
fun pageDown() = performAction(AccessibilityActionCompat.ACTION_PAGE_DOWN.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun pageLeft() = performAction(AccessibilityActionCompat.ACTION_PAGE_LEFT.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun pageRight() = performAction(AccessibilityActionCompat.ACTION_PAGE_RIGHT.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun pageUp() = performAction(AccessibilityActionCompat.ACTION_PAGE_UP.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun pressAndHold() = performAction(AccessibilityActionCompat.ACTION_PRESS_AND_HOLD.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun previousAtMovementGranularity(granularity: Int, isExtendSelection: Boolean) = performAction(
|
||||
AccessibilityActionCompat.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY.id,
|
||||
ActionArgument.IntActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT, granularity),
|
||||
ActionArgument.BooleanActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN, isExtendSelection),
|
||||
)
|
||||
|
||||
@ScriptInterface
|
||||
fun previousHtmlElement(element: String) = performAction(
|
||||
AccessibilityActionCompat.ACTION_PREVIOUS_HTML_ELEMENT.id,
|
||||
ActionArgument.StringActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_HTML_ELEMENT_STRING, element),
|
||||
)
|
||||
|
||||
@ScriptInterface
|
||||
fun showTextSuggestions() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) performAction(AccessibilityAction.ACTION_SHOW_TEXT_SUGGESTIONS.id) else false
|
||||
|
||||
@ScriptInterface
|
||||
fun showTooltip() = performAction(AccessibilityActionCompat.ACTION_SHOW_TOOLTIP.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun copy() = performAction(AccessibilityActionCompat.ACTION_COPY.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun paste() = performAction(AccessibilityActionCompat.ACTION_PASTE.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun select() = performAction(AccessibilityActionCompat.ACTION_SELECT.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun cut() = performAction(AccessibilityActionCompat.ACTION_CUT.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun collapse() = performAction(AccessibilityActionCompat.ACTION_COLLAPSE.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun expand() = performAction(AccessibilityActionCompat.ACTION_EXPAND.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun dismiss() = performAction(AccessibilityActionCompat.ACTION_DISMISS.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun show() = performAction(AccessibilityActionCompat.ACTION_SHOW_ON_SCREEN.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun scrollForward() = performAction(AccessibilityActionCompat.ACTION_SCROLL_FORWARD.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun scrollBackward() = performAction(AccessibilityActionCompat.ACTION_SCROLL_BACKWARD.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun scrollUp() = performAction(AccessibilityActionCompat.ACTION_SCROLL_UP.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun scrollDown() = performAction(AccessibilityActionCompat.ACTION_SCROLL_DOWN.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun scrollLeft() = performAction(AccessibilityActionCompat.ACTION_SCROLL_LEFT.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun scrollRight() = performAction(AccessibilityActionCompat.ACTION_SCROLL_RIGHT.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun contextClick() = performAction(AccessibilityActionCompat.ACTION_CONTEXT_CLICK.id)
|
||||
|
||||
@ScriptInterface
|
||||
fun setSelection(s: Int, e: Int) = performAction(
|
||||
AccessibilityActionCompat.ACTION_SET_SELECTION.id,
|
||||
ActionArgument.IntActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_SELECTION_START_INT, s),
|
||||
ActionArgument.IntActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_SELECTION_END_INT, e),
|
||||
)
|
||||
|
||||
@ScriptInterface
|
||||
fun setText(text: String) = performAction(
|
||||
AccessibilityActionCompat.ACTION_SET_TEXT.id,
|
||||
ActionArgument.CharSequenceActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, text),
|
||||
)
|
||||
|
||||
@ScriptInterface
|
||||
fun setProgress(progress: Float) = performAction(
|
||||
AccessibilityActionCompat.ACTION_SET_PROGRESS.id,
|
||||
ActionArgument.FloatActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_PROGRESS_VALUE, progress),
|
||||
)
|
||||
|
||||
@ScriptInterface
|
||||
fun scrollTo(row: Int, column: Int) = performAction(
|
||||
AccessibilityActionCompat.ACTION_SCROLL_TO_POSITION.id,
|
||||
ActionArgument.IntActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_ROW_INT, row),
|
||||
ActionArgument.IntActionArgument(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_COLUMN_INT, column),
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
import org.autojs.autojs.pref.Language
|
||||
import org.autojs.autojs.util.App
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Nov 19, 2022.
|
||||
*/
|
||||
class ActionFilter(private val actions: Array<out Any>) : Filter {
|
||||
|
||||
override fun filter(node: UiObject) = node.hasAction(*actions)
|
||||
|
||||
override fun toString() = when (actions.size) {
|
||||
1 -> "action(${actions.joinToString()})"
|
||||
else /* including 0. */ -> "action([${actions.joinToString(",")}])"
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import androidx.core.util.rangeTo
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics
|
||||
import org.autojs.autojs.util.StringUtils.formatDouble
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Nov 19, 2022.
|
||||
*/
|
||||
class DoubleMinFilter(private val mDoubleMinProperty: DoubleMinProperty, private val mMin: Double? = null) : Filter {
|
||||
|
||||
interface DoubleMinProperty {
|
||||
operator fun get(o: UiObject): Double
|
||||
}
|
||||
|
||||
override fun filter(node: UiObject) = mDoubleMinProperty[node] >= (mMin ?: DEFAULT)
|
||||
|
||||
override fun toString() = "$mDoubleMinProperty(${mMin?.let { formatDouble(it) } ?: ""})"
|
||||
|
||||
companion object {
|
||||
|
||||
const val DEFAULT = 0.948
|
||||
|
||||
val SCREEN_COVERAGE = object : DoubleMinProperty {
|
||||
override fun get(o: UiObject): Double {
|
||||
val w = ScreenMetrics.deviceScreenWidth
|
||||
val h = ScreenMetrics.deviceScreenHeight
|
||||
val validLeft = o.left().coerceIn(0..w)
|
||||
val validTop = o.top().coerceIn(0..h)
|
||||
val validRight = o.right().coerceIn(0..w)
|
||||
val validBottom = o.bottom().coerceIn(0..h)
|
||||
val objectArea = (validRight - validLeft) * (validBottom - validTop)
|
||||
val screenArea = w * h
|
||||
return objectArea.toDouble() / screenArea.toDouble()
|
||||
}
|
||||
|
||||
override fun toString() = "screenCoverage"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Oct 17, 2022.
|
||||
*/
|
||||
object IdHexFilter {
|
||||
|
||||
private val TEXT_GETTER = object : KeyGetter {
|
||||
|
||||
override fun getKey(nodeInfo: UiObject) = nodeInfo.idHex()
|
||||
|
||||
override fun toString() = "idHex"
|
||||
|
||||
}
|
||||
|
||||
fun equals(text: String) = StringEqualsFilter(text, TEXT_GETTER)
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Nov 29, 2022.
|
||||
*/
|
||||
class MaxIntFilter(private val mIntProperty: IntProperty, private val mValue: Int) : Filter {
|
||||
|
||||
interface IntProperty {
|
||||
operator fun get(o: UiObject): Int
|
||||
}
|
||||
|
||||
override fun filter(node: UiObject): Boolean = mIntProperty[node] <= mValue
|
||||
|
||||
override fun toString() = "$mIntProperty($mValue)"
|
||||
|
||||
companion object {
|
||||
|
||||
val CHILD_COUNT = object : IntProperty {
|
||||
override fun get(o: UiObject): Int = o.childCount()
|
||||
override fun toString() = "maxChildCount"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics.Companion.toRoundIntX
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics.Companion.toRoundIntY
|
||||
import org.autojs.autojs.util.StringUtils.formatDouble
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Nov 19, 2022.
|
||||
*/
|
||||
class MetricsFilter(private val mMetricsProperty: MetricsProperty, private val mValue: Double) : Filter {
|
||||
|
||||
interface MetricsProperty {
|
||||
operator fun get(o: UiObject, value: Double): Boolean
|
||||
}
|
||||
|
||||
override fun filter(node: UiObject) = mMetricsProperty[node, mValue]
|
||||
|
||||
override fun toString() = "$mMetricsProperty(${formatDouble(mValue)})"
|
||||
|
||||
companion object {
|
||||
|
||||
val LEFT = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.left() == toRoundIntX(value)
|
||||
override fun toString() = "left"
|
||||
}
|
||||
|
||||
val TOP = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.top() == toRoundIntY(value)
|
||||
override fun toString() = "top"
|
||||
}
|
||||
|
||||
val RIGHT = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.right() == toRoundIntX(value)
|
||||
override fun toString() = "right"
|
||||
}
|
||||
|
||||
val BOTTOM = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.bottom() == toRoundIntY(value)
|
||||
override fun toString() = "bottom"
|
||||
}
|
||||
|
||||
val WIDTH = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.width() == toRoundIntX(value)
|
||||
override fun toString() = "width"
|
||||
}
|
||||
|
||||
val HEIGHT = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.height() == toRoundIntY(value)
|
||||
override fun toString() = "height"
|
||||
}
|
||||
|
||||
val CENTER_X = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.centerX() == toRoundIntX(value)
|
||||
override fun toString() = "centerX"
|
||||
}
|
||||
|
||||
val CENTER_Y = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.centerY() == toRoundIntY(value)
|
||||
override fun toString() = "centerY"
|
||||
}
|
||||
|
||||
val BOUNDS_LEFT = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.boundsLeft() == toRoundIntX(value)
|
||||
override fun toString() = "boundsLeft"
|
||||
}
|
||||
|
||||
val BOUNDS_TOP = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.boundsTop() == toRoundIntY(value)
|
||||
override fun toString() = "boundsTop"
|
||||
}
|
||||
|
||||
val BOUNDS_RIGHT = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.boundsRight() == toRoundIntX(value)
|
||||
override fun toString() = "boundsRight"
|
||||
}
|
||||
|
||||
val BOUNDS_BOTTOM = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.boundsBottom() == toRoundIntY(value)
|
||||
override fun toString() = "boundsBottom"
|
||||
}
|
||||
|
||||
val BOUNDS_WIDTH = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.boundsWidth() == toRoundIntX(value)
|
||||
override fun toString() = "boundsWidth"
|
||||
}
|
||||
|
||||
val BOUNDS_HEIGHT = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.boundsHeight() == toRoundIntY(value)
|
||||
override fun toString() = "boundsHeight"
|
||||
}
|
||||
|
||||
val BOUNDS_CENTER_X = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.boundsCenterX() == toRoundIntX(value)
|
||||
override fun toString() = "boundsCenterX"
|
||||
}
|
||||
|
||||
val BOUNDS_CENTER_Y = object : MetricsProperty {
|
||||
override fun get(o: UiObject, value: Double) = o.boundsCenterY() == toRoundIntY(value)
|
||||
override fun toString() = "boundsCenterY"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics.Companion.toRoundIntX
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics.Companion.toRoundIntY
|
||||
import org.autojs.autojs.util.StringUtils.formatDouble
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Nov 19, 2022.
|
||||
*/
|
||||
class MetricsMaxFilter(private val mIntMaxProperty: IntMaxProperty, private val mMax: Double) : Filter {
|
||||
|
||||
interface IntMaxProperty {
|
||||
operator fun get(o: UiObject, max: Double): Boolean
|
||||
}
|
||||
|
||||
override fun filter(node: UiObject) = mIntMaxProperty[node, mMax]
|
||||
|
||||
override fun toString() = "$mIntMaxProperty(${formatDouble(mMax)})"
|
||||
|
||||
companion object {
|
||||
|
||||
val LEFT = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.left() <= toRoundIntX(max)
|
||||
override fun toString() = "maxLeft"
|
||||
}
|
||||
|
||||
val TOP = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.top() <= toRoundIntY(max)
|
||||
override fun toString() = "maxTop"
|
||||
}
|
||||
|
||||
val RIGHT = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.right() <= toRoundIntX(max)
|
||||
override fun toString() = "maxRight"
|
||||
}
|
||||
|
||||
val BOTTOM = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.bottom() <= toRoundIntY(max)
|
||||
override fun toString() = "maxBottom"
|
||||
}
|
||||
|
||||
val WIDTH = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.width() <= toRoundIntX(max)
|
||||
override fun toString() = "maxWidth"
|
||||
}
|
||||
|
||||
val HEIGHT = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.height() <= toRoundIntY(max)
|
||||
override fun toString() = "maxHeight"
|
||||
}
|
||||
|
||||
val CENTER_X = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.centerX() <= toRoundIntX(max)
|
||||
override fun toString() = "maxCenterX"
|
||||
}
|
||||
|
||||
val CENTER_Y = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.centerY() <= toRoundIntY(max)
|
||||
override fun toString() = "maxCenterY"
|
||||
}
|
||||
|
||||
val BOUNDS_LEFT = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.boundsLeft() <= toRoundIntX(max)
|
||||
override fun toString() = "boundsMaxLeft"
|
||||
}
|
||||
|
||||
val BOUNDS_TOP = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.boundsTop() <= toRoundIntY(max)
|
||||
override fun toString() = "boundsMaxTop"
|
||||
}
|
||||
|
||||
val BOUNDS_RIGHT = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.boundsRight() <= toRoundIntX(max)
|
||||
override fun toString() = "boundsMaxRight"
|
||||
}
|
||||
|
||||
val BOUNDS_BOTTOM = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.boundsBottom() <= toRoundIntY(max)
|
||||
override fun toString() = "boundsMaxBottom"
|
||||
}
|
||||
|
||||
val BOUNDS_WIDTH = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.boundsWidth() <= toRoundIntX(max)
|
||||
override fun toString() = "boundsMaxWidth"
|
||||
}
|
||||
|
||||
val BOUNDS_HEIGHT = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.boundsHeight() <= toRoundIntY(max)
|
||||
override fun toString() = "boundsMaxHeight"
|
||||
}
|
||||
|
||||
val BOUNDS_CENTER_X = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.boundsCenterX() <= toRoundIntX(max)
|
||||
override fun toString() = "boundsMaxCenterX"
|
||||
}
|
||||
|
||||
val BOUNDS_CENTER_Y = object : IntMaxProperty {
|
||||
override fun get(o: UiObject, max: Double) = o.boundsCenterY() <= toRoundIntY(max)
|
||||
override fun toString() = "boundsMaxCenterY"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics.Companion.toRoundIntX
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics.Companion.toRoundIntY
|
||||
import org.autojs.autojs.util.StringUtils.formatDouble
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Nov 19, 2022.
|
||||
*/
|
||||
class MetricsMinFilter(private val mIntMinProperty: IntMinProperty, private val mMin: Double) : Filter {
|
||||
|
||||
interface IntMinProperty {
|
||||
operator fun get(o: UiObject, min: Double): Boolean
|
||||
}
|
||||
|
||||
override fun filter(node: UiObject) = mIntMinProperty[node, mMin]
|
||||
|
||||
override fun toString() = "$mIntMinProperty(${formatDouble(mMin)})"
|
||||
|
||||
companion object {
|
||||
|
||||
val LEFT = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.left() >= toRoundIntX(min)
|
||||
override fun toString() = "minLeft"
|
||||
}
|
||||
|
||||
val TOP = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.top() >= toRoundIntY(min)
|
||||
override fun toString() = "minTop"
|
||||
}
|
||||
|
||||
val RIGHT = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.right() >= toRoundIntX(min)
|
||||
override fun toString() = "minRight"
|
||||
}
|
||||
|
||||
val BOTTOM = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.bottom() >= toRoundIntY(min)
|
||||
override fun toString() = "minBottom"
|
||||
}
|
||||
|
||||
val WIDTH = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.width() >= toRoundIntX(min)
|
||||
override fun toString() = "minWidth"
|
||||
}
|
||||
|
||||
val HEIGHT = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.height() >= toRoundIntY(min)
|
||||
override fun toString() = "minHeight"
|
||||
}
|
||||
|
||||
val CENTER_X = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.centerX() >= toRoundIntX(min)
|
||||
override fun toString() = "minCenterX"
|
||||
}
|
||||
|
||||
val CENTER_Y = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.centerY() >= toRoundIntY(min)
|
||||
override fun toString() = "minCenterY"
|
||||
}
|
||||
|
||||
val BOUNDS_LEFT = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.boundsLeft() >= toRoundIntX(min)
|
||||
override fun toString() = "boundsMinLeft"
|
||||
}
|
||||
|
||||
val BOUNDS_TOP = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.boundsTop() >= toRoundIntY(min)
|
||||
override fun toString() = "boundsMinTop"
|
||||
}
|
||||
|
||||
val BOUNDS_RIGHT = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.boundsRight() >= toRoundIntX(min)
|
||||
override fun toString() = "boundsMinRight"
|
||||
}
|
||||
|
||||
val BOUNDS_BOTTOM = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.boundsBottom() >= toRoundIntY(min)
|
||||
override fun toString() = "boundsMinBottom"
|
||||
}
|
||||
|
||||
val BOUNDS_WIDTH = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.boundsWidth() >= toRoundIntX(min)
|
||||
override fun toString() = "boundsMinWidth"
|
||||
}
|
||||
|
||||
val BOUNDS_HEIGHT = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.boundsHeight() >= toRoundIntY(min)
|
||||
override fun toString() = "boundsMinHeight"
|
||||
}
|
||||
|
||||
val BOUNDS_CENTER_X = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.boundsCenterX() >= toRoundIntX(min)
|
||||
override fun toString() = "boundsMinCenterX"
|
||||
}
|
||||
|
||||
val BOUNDS_CENTER_Y = object : IntMinProperty {
|
||||
override fun get(o: UiObject, min: Double) = o.boundsCenterY() >= toRoundIntY(min)
|
||||
override fun toString() = "boundsMinCenterY"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics.Companion.toRoundIntX
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics.Companion.toRoundIntY
|
||||
import org.autojs.autojs.util.StringUtils.formatDouble
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Nov 19, 2022.
|
||||
*/
|
||||
class MetricsRangeFilter(private val mIntRangeProperty: IntRangeProperty, private val mMin: Double, private val mMax: Double) : Filter {
|
||||
|
||||
interface IntRangeProperty {
|
||||
operator fun get(o: UiObject, min: Double, max: Double): Boolean
|
||||
}
|
||||
|
||||
override fun filter(node: UiObject) = mIntRangeProperty[node, mMin, mMax]
|
||||
|
||||
override fun toString() = "$mIntRangeProperty(${formatDouble(mMin)}, ${formatDouble(mMax)})"
|
||||
|
||||
companion object {
|
||||
|
||||
val LEFT = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.left() in toRoundIntX(min)..toRoundIntX(max)
|
||||
override fun toString() = "left"
|
||||
}
|
||||
|
||||
val TOP = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.top() in toRoundIntY(min)..toRoundIntY(max)
|
||||
override fun toString() = "top"
|
||||
}
|
||||
|
||||
val RIGHT = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.right() in toRoundIntX(min)..toRoundIntX(max)
|
||||
override fun toString() = "right"
|
||||
}
|
||||
|
||||
val BOTTOM = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.bottom() in toRoundIntY(min)..toRoundIntY(max)
|
||||
override fun toString() = "bottom"
|
||||
}
|
||||
|
||||
val WIDTH = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.width() in toRoundIntX(min)..toRoundIntX(max)
|
||||
override fun toString() = "width"
|
||||
}
|
||||
|
||||
val HEIGHT = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.height() in toRoundIntY(min)..toRoundIntY(max)
|
||||
override fun toString() = "height"
|
||||
}
|
||||
|
||||
val CENTER_X = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.centerX() in toRoundIntX(min)..toRoundIntX(max)
|
||||
override fun toString() = "centerX"
|
||||
}
|
||||
|
||||
val CENTER_Y = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.centerY() in toRoundIntY(min)..toRoundIntY(max)
|
||||
override fun toString() = "centerY"
|
||||
}
|
||||
|
||||
val BOUNDS_LEFT = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.boundsLeft() in toRoundIntX(min)..toRoundIntX(max)
|
||||
override fun toString() = "boundsLeft"
|
||||
}
|
||||
|
||||
val BOUNDS_TOP = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.boundsTop() in toRoundIntY(min)..toRoundIntY(max)
|
||||
override fun toString() = "boundsTop"
|
||||
}
|
||||
|
||||
val BOUNDS_RIGHT = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.boundsRight() in toRoundIntX(min)..toRoundIntX(max)
|
||||
override fun toString() = "boundsRight"
|
||||
}
|
||||
|
||||
val BOUNDS_BOTTOM = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.boundsBottom() in toRoundIntY(min)..toRoundIntY(max)
|
||||
override fun toString() = "boundsBottom"
|
||||
}
|
||||
|
||||
val BOUNDS_WIDTH = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.boundsWidth() in toRoundIntX(min)..toRoundIntX(max)
|
||||
override fun toString() = "boundsWidth"
|
||||
}
|
||||
|
||||
val BOUNDS_HEIGHT = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.boundsHeight() in toRoundIntY(min)..toRoundIntY(max)
|
||||
override fun toString() = "boundsHeight"
|
||||
}
|
||||
|
||||
val BOUNDS_CENTER_X = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.boundsCenterX() in toRoundIntX(min)..toRoundIntX(max)
|
||||
override fun toString() = "boundsCenterX"
|
||||
}
|
||||
|
||||
val BOUNDS_CENTER_Y = object : IntRangeProperty {
|
||||
override fun get(o: UiObject, min: Double, max: Double) = o.boundsCenterY() in toRoundIntY(min)..toRoundIntY(max)
|
||||
override fun toString() = "boundsCenterY"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Nov 29, 2022.
|
||||
*/
|
||||
class MinIntFilter(private val mIntProperty: IntProperty, private val mValue: Int) : Filter {
|
||||
|
||||
interface IntProperty {
|
||||
operator fun get(o: UiObject): Int
|
||||
}
|
||||
|
||||
override fun filter(node: UiObject): Boolean = mIntProperty[node] >= mValue
|
||||
|
||||
override fun toString() = "$mIntProperty($mValue)"
|
||||
|
||||
companion object {
|
||||
|
||||
val CHILD_COUNT = object : IntProperty {
|
||||
override fun get(o: UiObject): Int = o.childCount()
|
||||
override fun toString() = "minChildCount"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Oct 17, 2022.
|
||||
*/
|
||||
class StringListMatchFilter internal constructor(private val mRegex: String, private val mKeysGetter: KeysGetter) : Filter {
|
||||
|
||||
// @Hint by SuperMonster003 on Oct 17, 2022.
|
||||
// ! Similar to JavaScript String.prototype.match
|
||||
// ! Returns the result of matching a string against a regular expression.
|
||||
// ! https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
|
||||
// ! https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-regex/contains-match-in.html
|
||||
// ! https://stackoverflow.com/questions/21883629/difference-in-results-between-java-matches-vs-javascript-match
|
||||
override fun filter(node: UiObject) = mKeysGetter.getKeys(node).any {
|
||||
it ?: return@any false
|
||||
val prefix = "/"
|
||||
val suffix = "/i"
|
||||
if (mRegex.startsWith(prefix) && mRegex.endsWith(suffix)) {
|
||||
mRegex
|
||||
.slice(prefix.length until mRegex.length - suffix.length)
|
||||
.toRegex(RegexOption.IGNORE_CASE)
|
||||
.containsMatchIn(it)
|
||||
} else {
|
||||
mRegex.toRegex().containsMatchIn(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun toString() = "${mKeysGetter}Match(\"$mRegex\")"
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/3/9.
|
||||
* Modified by SuperMonster003 as of Nov 19, 2022.
|
||||
*/
|
||||
class StringMatchFilter internal constructor(private val mRegex: String, private val mKeyGetter: KeyGetter) : Filter {
|
||||
|
||||
// @Hint by SuperMonster003 on Oct 17, 2022.
|
||||
// ! Similar to JavaScript String.prototype.match
|
||||
// ! Returns the result of matching a string against a regular expression.
|
||||
// ! https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
|
||||
// ! https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-regex/contains-match-in.html
|
||||
// ! https://stackoverflow.com/questions/21883629/difference-in-results-between-java-matches-vs-javascript-match
|
||||
override fun filter(node: UiObject) = mKeyGetter.getKey(node)?.contains(mRegex.toRegex()) ?: false
|
||||
|
||||
override fun toString(): String {
|
||||
val regexStr = when (mRegex.isEmpty()) {
|
||||
true -> "(?:)"
|
||||
else -> mRegex.toRegex().toString().replace("/", "\\/")
|
||||
}
|
||||
return "${mKeyGetter}Match(/$regexStr/)"
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package org.autojs.autojs.core.automator.filter
|
||||
|
||||
import org.autojs.autojs.core.automator.UiObject
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics.Companion.deviceScreenHeight
|
||||
import org.autojs.autojs.runtime.api.ScreenMetrics.Companion.deviceScreenWidth
|
||||
import org.autojs.autojs.util.StringUtils.formatDouble
|
||||
import kotlin.math.abs
|
||||
|
||||
/**
|
||||
* Modified by SuperMonster003 as of Nov 19, 2022.
|
||||
*/
|
||||
class ToleranceFilter(private val mToleranceSupplier: ToleranceSupplier, private val mExceptedValue: Boolean? = null, private val mTolerance: Double? = null) : Filter {
|
||||
|
||||
interface ToleranceSupplier {
|
||||
operator fun get(node: UiObject, tolerance: Double): Boolean
|
||||
}
|
||||
|
||||
override fun filter(node: UiObject) = mToleranceSupplier[node, mTolerance ?: DEFAULT_TOLERANCE] == (mExceptedValue ?: DEFAULT_EXPECTED)
|
||||
|
||||
override fun toString() = when (mExceptedValue != null) {
|
||||
true -> "$mToleranceSupplier($mExceptedValue${mTolerance?.let { ", ${formatDouble(mTolerance)}" } ?: ""})"
|
||||
else -> "$mToleranceSupplier(${mTolerance?.let { formatDouble(it) } ?: ""})"
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
const val DEFAULT_EXPECTED = true
|
||||
|
||||
const val DEFAULT_TOLERANCE = 0.016
|
||||
|
||||
val SCREEN_CENTER_X = object : ToleranceSupplier {
|
||||
override fun get(node: UiObject, tolerance: Double): Boolean {
|
||||
val w = deviceScreenWidth
|
||||
val x = node.centerX().toDouble()
|
||||
return abs(x - w / 2) / w <= tolerance
|
||||
}
|
||||
|
||||
override fun toString() = "screenCenterX"
|
||||
}
|
||||
|
||||
val SCREEN_CENTER_Y = object : ToleranceSupplier {
|
||||
override fun get(node: UiObject, tolerance: Double): Boolean {
|
||||
val h = deviceScreenHeight
|
||||
val y = node.centerY().toDouble()
|
||||
return abs(y - h / 2) / h <= tolerance
|
||||
}
|
||||
|
||||
override fun toString() = "screenCenterY"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package org.autojs.autojs.core.console
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
import org.autojs.autojs.tool.MapBuilder
|
||||
import org.autojs.autojs6.R
|
||||
|
||||
class FloatingConsoleView : ConsoleView {
|
||||
|
||||
constructor(context: Context?) : super(context)
|
||||
|
||||
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
|
||||
|
||||
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
|
||||
|
||||
override fun getLogLevelMap(): MutableMap<Int, Int> = MapBuilder<Int, Int>()
|
||||
.put(R.color.floating_console_view_verbose, Log.VERBOSE)
|
||||
.put(R.color.floating_console_view_debug, Log.DEBUG)
|
||||
.put(R.color.floating_console_view_info, Log.INFO)
|
||||
.put(R.color.floating_console_view_warn, Log.WARN)
|
||||
.put(R.color.floating_console_view_error, Log.ERROR)
|
||||
.put(R.color.floating_console_view_assert, Log.ASSERT)
|
||||
.build()
|
||||
|
||||
}
|
||||
768
app/src/main/java/org/autojs/autojs/core/image/ColorTable.kt
Normal file
768
app/src/main/java/org/autojs/autojs/core/image/ColorTable.kt
Normal file
@@ -0,0 +1,768 @@
|
||||
@file:Suppress("unused", "MemberVisibilityCanBePrivate")
|
||||
|
||||
package org.autojs.autojs.core.image
|
||||
|
||||
import android.content.res.Resources.NotFoundException
|
||||
import org.autojs.autojs.app.GlobalAppContext
|
||||
import org.autojs.autojs6.R
|
||||
|
||||
/**
|
||||
* Created by SuperMonster003 on Dec 21, 2022.
|
||||
*/
|
||||
class ColorTable {
|
||||
|
||||
object Android {
|
||||
|
||||
const val TRANSPARENT = 0
|
||||
const val BLACK = -0x1000000
|
||||
const val BLUE = -0xffff01
|
||||
const val CYAN = -0xff0001
|
||||
const val AQUA = CYAN
|
||||
const val DARK_GRAY = -0xbbbbbc
|
||||
const val DARK_GREY = DARK_GRAY
|
||||
const val DKGRAY = DARK_GRAY
|
||||
const val GRAY = -0x777778
|
||||
const val GREY = GRAY
|
||||
const val GREEN = -0xff0100
|
||||
const val LIME = GREEN
|
||||
const val LIGHT_GRAY = -0x333334
|
||||
const val LIGHT_GREY = LIGHT_GRAY
|
||||
const val LTGRAY = LIGHT_GRAY
|
||||
const val MAGENTA = -0xff01
|
||||
const val FUCHSIA = MAGENTA
|
||||
const val MAROON = -0x800000
|
||||
const val NAVY = -0xffff80
|
||||
const val OLIVE = -0x7f8000
|
||||
const val PURPLE = -0x7fff80
|
||||
const val RED = -0x10000
|
||||
const val SILVER = -0x3f3f40
|
||||
const val TEAL = -0xff7f80
|
||||
const val WHITE = -0x1
|
||||
const val YELLOW = -0x100
|
||||
|
||||
}
|
||||
|
||||
object Css {
|
||||
|
||||
const val ALICE_BLUE = -0xf0701
|
||||
const val ANTIQUE_WHITE = -0x51429
|
||||
const val AQUAMARINE = -0x80002c
|
||||
const val AZURE = -0xf0001
|
||||
const val BEIGE = -0xa0a24
|
||||
const val BISQUE = -0x1b3c
|
||||
const val BLACK = -0x1000000
|
||||
const val BLANCHED_ALMOND = -0x1433
|
||||
const val BLUE = -0xffff01
|
||||
const val BLUE_VIOLET = -0x75d41e
|
||||
const val BROWN = -0x5ad5d6
|
||||
const val BURLY_WOOD = -0x214779
|
||||
const val CADET_BLUE = -0xa06160
|
||||
const val CHARTREUSE = -0x800100
|
||||
const val CHOCOLATE = -0x2d96e2
|
||||
const val CORAL = -0x80b0
|
||||
const val CORNFLOWER_BLUE = -0x9b6a13
|
||||
const val CORN_SILK = -0x724
|
||||
const val CRIMSON = -0x23ebc4
|
||||
const val CYAN = -0xff0001
|
||||
const val AQUA = CYAN
|
||||
const val DARK_BLUE = -0xffff75
|
||||
const val DARK_CYAN = -0xff7475
|
||||
const val DARK_GOLDENROD = -0x4779f5
|
||||
const val DARK_GRAY = -0x565657
|
||||
const val DARK_GREY = DARK_GRAY
|
||||
const val DARK_GREEN = -0xff9c00
|
||||
const val DARK_KHAKI = -0x424895
|
||||
const val DARK_MAGENTA = -0x74ff75
|
||||
const val DARK_OLIVE_GREEN = -0xaa94d1
|
||||
const val DARK_ORANGE = -0x7400
|
||||
const val DARK_ORCHID = -0x66cd34
|
||||
const val DARK_RED = -0x750000
|
||||
const val DARK_SALMON = -0x166986
|
||||
const val DARK_SEA_GREEN = -0x704371
|
||||
const val DARK_SLATE_BLUE = -0xb7c275
|
||||
const val DARK_SLATE_GRAY = -0xd0b0b1
|
||||
const val DARK_SLATE_GREY = DARK_SLATE_GRAY
|
||||
const val DARK_TURQUOISE = -0xff312f
|
||||
const val DARK_VIOLET = -0x6bff2d
|
||||
const val DEEP_PINK = -0xeb6d
|
||||
const val DEEP_SKY_BLUE = -0xff4001
|
||||
const val DIM_GRAY = -0x969697
|
||||
const val DIM_GREY = DIM_GRAY
|
||||
const val DODGER_BLUE = -0xe16f01
|
||||
const val FIRE_BRICK = -0x4dddde
|
||||
const val FLORAL_WHITE = -0x510
|
||||
const val FOREST_GREEN = -0xdd74de
|
||||
const val GAINSBORO = -0x232324
|
||||
const val GHOST_WHITE = -0x70701
|
||||
const val GOLD = -0x2900
|
||||
const val GOLDENROD = -0x255ae0
|
||||
const val GRAY = -0x7f7f80
|
||||
const val GREY = GRAY
|
||||
const val GREEN = -0xff8000
|
||||
const val GREEN_YELLOW = -0x5200d1
|
||||
const val HONEYDEW = -0xf0010
|
||||
const val HOT_PINK = -0x964c
|
||||
const val INDIAN_RED = -0x32a3a4
|
||||
const val INDIGO = -0xb4ff7e
|
||||
const val IVORY = -0x10
|
||||
const val KHAKI = -0xf1974
|
||||
const val LAVENDER = -0x191906
|
||||
const val LAVENDER_BLUSH = -0xf0b
|
||||
const val LAWN_GREEN = -0x830400
|
||||
const val LEMON_CHIFFON = -0x533
|
||||
const val LIGHT_BLUE = -0x52271a
|
||||
const val LIGHT_CORAL = -0xf7f80
|
||||
const val LIGHT_CYAN = -0x1f0001
|
||||
const val LIGHT_GOLDENROD_YELLOW = -0x5052e
|
||||
const val LIGHT_GRAY = -0x2c2c2d
|
||||
const val LIGHT_GREY = LIGHT_GRAY
|
||||
const val LIGHT_GREEN = -0x6f1170
|
||||
const val LIGHT_PINK = -0x493f
|
||||
const val LIGHT_SALMON = -0x5f86
|
||||
const val LIGHT_SEA_GREEN = -0xdf4d56
|
||||
const val LIGHT_SKY_BLUE = -0x783106
|
||||
const val LIGHT_SLATE_GRAY = -0x887767
|
||||
const val LIGHT_SLATE_GREY = LIGHT_SLATE_GRAY
|
||||
const val LIGHT_STEEL_BLUE = -0x4f3b22
|
||||
const val LIGHT_YELLOW = -0x20
|
||||
const val LIME = -0xff0100
|
||||
const val LIME_GREEN = -0xcd32ce
|
||||
const val LINEN = -0x50f1a
|
||||
const val MAGENTA = -0xff01
|
||||
const val FUCHSIA = MAGENTA
|
||||
const val MAROON = -0x800000
|
||||
const val MEDIUM_AQUAMARINE = -0x993256
|
||||
const val MEDIUM_BLUE = -0xffff33
|
||||
const val MEDIUM_LAVENDER_MAGENTA = -0x225f23
|
||||
const val MEDIUM_ORCHID = -0x45aa2d
|
||||
const val MEDIUM_PURPLE = -0x6c8f25
|
||||
const val MEDIUM_SEA_GREEN = -0xc34c8f
|
||||
const val MEDIUM_SLATE_BLUE = -0x849712
|
||||
const val MEDIUM_SPRING_GREEN = -0xff0566
|
||||
const val MEDIUM_TURQUOISE = -0xb72e34
|
||||
const val MEDIUM_VIOLET_RED = -0x38ea7b
|
||||
const val MIDNIGHT_BLUE = -0xe6e690
|
||||
const val MINT_CREAM = -0xa0006
|
||||
const val MISTY_ROSE = -0x1b1f
|
||||
const val MOCCASIN = -0x1b4b
|
||||
const val NAVAJO_WHITE = -0x2153
|
||||
const val NAVY = -0xffff80
|
||||
const val OLD_LACE = -0x20a1a
|
||||
const val OLIVE = -0x7f8000
|
||||
const val OLIVE_DRAB = -0x9471dd
|
||||
const val ORANGE = -0x5b00
|
||||
const val ORANGE_RED = -0xbb00
|
||||
const val ORCHID = -0x258f2a
|
||||
const val PALE_GOLDENROD = -0x111756
|
||||
const val PALE_GREEN = -0x670468
|
||||
const val PALE_TURQUOISE = -0x501112
|
||||
const val PALE_VIOLET_RED = -0x248f6d
|
||||
const val PAPAYA_WHIP = -0x102b
|
||||
const val PATRIARCH = -0x7fff80
|
||||
const val PEACH_PUFF = -0x2547
|
||||
const val PERU = -0x327ac1
|
||||
const val PINK = -0x3f35
|
||||
const val POWDER_BLUE = -0x4f1f1a
|
||||
const val REBECCA_PURPLE = -0x99cc67
|
||||
const val RED = -0x10000
|
||||
const val ROSY_BROWN = -0x437071
|
||||
const val ROYAL_BLUE = -0xbe961f
|
||||
const val SADDLE_BROWN = -0x74baed
|
||||
const val SALMON = -0x57f8e
|
||||
const val SAND_BROWN = -0xb5ba0
|
||||
const val SEASHELL = -0xa12
|
||||
const val SEA_GREEN = -0xd174a9
|
||||
const val SIENNA = -0x5fadd3
|
||||
const val SILVER = -0x3f3f40
|
||||
const val SKY_BLUE = -0x783115
|
||||
const val SLATE_BLUE = -0x95a533
|
||||
const val SLATE_GRAY = -0x8f7f70
|
||||
const val SLATE_GREY = SLATE_GRAY
|
||||
const val SNOW = -0x506
|
||||
const val SPRING_GREEN = -0xff0081
|
||||
const val STEEL_BLUE = -0xb97d4c
|
||||
const val TAN = -0x2d4b74
|
||||
const val TEAL = -0xff7f80
|
||||
const val THISTLE = -0x274028
|
||||
const val TOMATO = -0x9cb9
|
||||
const val TURQUOISE = -0xbf1f30
|
||||
const val VIOLET = -0x117d12
|
||||
const val WHEAT = -0xa214d
|
||||
const val WHITE = -0x1
|
||||
const val WHITE_SMOKE = -0xa0a0b
|
||||
const val YELLOW = -0x100
|
||||
const val YELLOW_GREEN = -0x6532ce
|
||||
|
||||
}
|
||||
|
||||
object Web {
|
||||
|
||||
const val ALICE_BLUE = -0xf0701
|
||||
const val ALIZARIN_CRIMSON = -0x1cd9ca
|
||||
const val AMBER = -0x4100
|
||||
const val AMETHYST = -0x669934
|
||||
const val ANTIQUE_WHITE = -0x51429
|
||||
const val APPLE_GREEN = -0x731a00
|
||||
const val APRICOT = -0x19669a
|
||||
const val AQUA = -0x50201c
|
||||
const val AQUAMARINE = -0x80002c
|
||||
const val AQUA_BLUE = -0x99001a
|
||||
const val AZURE = -0xff8001
|
||||
const val BABY_BLUE = -0x763010
|
||||
const val BABY_PINK = -0x261a
|
||||
const val BEIGE = -0xa0a24
|
||||
const val BISQUE = -0x1b3c
|
||||
const val BLACK = -0x1000000
|
||||
const val BLANCHED_ALMOND = -0x1433
|
||||
const val BLUE = -0xffff01
|
||||
const val BLUE_VIOLET = -0x75d41e
|
||||
const val BRIGHT_GREEN = -0x990100
|
||||
const val BRONZE = -0x3280ce
|
||||
const val BROWN = -0x5ad5d6
|
||||
const val BURGUNDY = -0x7fffe0
|
||||
const val BURLY_WOOD = -0x214779
|
||||
const val BURNT_ORANGE = -0x33ab00
|
||||
const val CADET_BLUE = -0xa06160
|
||||
const val CAMEL = -0x5e94b9
|
||||
const val CAMELLIA = -0x19c66b
|
||||
const val CANARY_YELLOW = -0x1100
|
||||
const val CARDINAL_RED = -0x66ffca
|
||||
const val CARMINE = -0x19ffa4
|
||||
const val CELADON = -0x531e51
|
||||
const val CERISE = -0x21ce9d
|
||||
const val CERULEAN_BLUE = -0xd5ad42
|
||||
const val CHAMPAGNE_YELLOW = -0x67
|
||||
const val CHARTREUSE = -0x800100
|
||||
const val CHOCOLATE = -0x2d96e2
|
||||
const val CHROME_YELLOW = -0x194800
|
||||
const val CLEMATIS = -0x335c34
|
||||
const val COBALT_BLUE = -0xffb855
|
||||
const val COBALT_GREEN = -0x9900a7
|
||||
const val COCONUT_BROWN = -0xb2e100
|
||||
const val COFFEE = -0xb2c700
|
||||
const val CORAL = -0x80b0
|
||||
const val CORAL_PINK = -0x7f41
|
||||
const val CORNFLOWER_BLUE = -0x9b6a13
|
||||
const val CORN_SILK = -0x724
|
||||
const val CREAM = -0x230
|
||||
const val CRIMSON = -0x23ebc4
|
||||
const val CYAN = -0xff0001
|
||||
const val CYAN_BLUE = -0xf24074
|
||||
const val DARK_BLUE = -0xffff75
|
||||
const val DARK_CYAN = -0xff7475
|
||||
const val DARK_GOLDENROD = -0x4779f5
|
||||
const val DARK_GRAY = -0x565657
|
||||
const val DARK_GREEN = -0xff9c00
|
||||
const val DARK_KHAKI = -0x424895
|
||||
const val DARK_MAGENTA = -0x74ff75
|
||||
const val DARK_MINERAL_BLUE = -0xdbc983
|
||||
const val DARK_OLIVE_GREEN = -0xaa94d1
|
||||
const val DARK_ORANGE = -0x7400
|
||||
const val DARK_ORCHID = -0x66cd34
|
||||
const val DARK_POWDER_BLUE = -0xffcc67
|
||||
const val DARK_RED = -0x750000
|
||||
const val DARK_SALMON = -0x166986
|
||||
const val DARK_SEA_GREEN = -0x704371
|
||||
const val DARK_SLATE_BLUE = -0xb7c275
|
||||
const val DARK_SLATE_GRAY = -0xd0b0b1
|
||||
const val DARK_TURQUOISE = -0xff312f
|
||||
const val DARK_VIOLET = -0x6bff2d
|
||||
const val DEEP_PINK = -0xeb6d
|
||||
const val DEEP_SKY_BLUE = -0xff4001
|
||||
const val DIM_GRAY = -0x969697
|
||||
const val DODGER_BLUE = -0xe16f01
|
||||
const val EMERALD = -0xaf3788
|
||||
const val FIRE_BRICK = -0x4dddde
|
||||
const val FLAMINGO = -0x197548
|
||||
const val FLORAL_WHITE = -0x510
|
||||
const val FOLIAGE_GREEN = -0x8c47c7
|
||||
const val FOREST_GREEN = -0xdd74de
|
||||
const val FRESH_LEAVES = -0x6600b3
|
||||
const val FUCHSIA = -0xbff5f
|
||||
const val GAINSBORO = -0x232324
|
||||
const val GHOST_WHITE = -0x70701
|
||||
const val GOLDEN = -0x2900
|
||||
const val GOLD = GOLDEN
|
||||
const val GOLDENROD = -0x255ae0
|
||||
const val GRASS_GREEN = -0x6619b3
|
||||
const val GRAY = -0x7f7f80
|
||||
const val GRAYISH_PURPLE = -0x798b5f
|
||||
const val GREEN = -0xff8000
|
||||
const val GREEN_YELLOW = -0x5200d1
|
||||
const val HELIOTROPE = -0x208c01
|
||||
const val HONEYDEW = -0xf0010
|
||||
const val HONEY_ORANGE = -0x4c9a
|
||||
const val HORIZON_BLUE = -0x472238
|
||||
const val HOT_PINK = -0x964c
|
||||
const val INDIAN_RED = -0x32a3a4
|
||||
const val INDIGO = -0xb4ff80
|
||||
const val INTERNATIONAL_KLEIN_BLUE = -0xffd059
|
||||
const val IRON_GRAY = -0x9da4a9
|
||||
const val IVORY = -0x10
|
||||
const val IVY_GREEN = -0xc940ca
|
||||
const val JASMINE = -0x193ca4
|
||||
const val KHAKI = -0x6694e1
|
||||
const val LAPIS_LAZULI = -0xd99e64
|
||||
const val LAVENDER = -0x4a8124
|
||||
const val LAVENDER_BLUE = -0x333301
|
||||
const val PERIWINKLE = LAVENDER_BLUE
|
||||
const val LAVENDER_BLUSH = -0xf0b
|
||||
const val LAVENDER_MAGENTA = -0x117d12
|
||||
const val LAVENDER_MIST = -0x191906
|
||||
const val LAWN_GREEN = -0x830400
|
||||
const val LEMON_CHIFFON = -0x533
|
||||
const val LIGHT_BLUE = -0x52271a
|
||||
const val LIGHT_CORAL = -0xf7f80
|
||||
const val LIGHT_CYAN = -0x1f0001
|
||||
const val LIGHT_GOLDENROD_YELLOW = -0x5052e
|
||||
const val LIGHT_GRAY = -0x2c2c2d
|
||||
const val LIGHT_GREEN = -0x6f1170
|
||||
const val LIGHT_KHAKI = -0xf1974
|
||||
const val LIGHT_PINK = -0x493f
|
||||
const val LIGHT_SALMON = -0x5f86
|
||||
const val LIGHT_SEA_GREEN = -0xdf4d56
|
||||
const val LIGHT_SKY_BLUE = -0x783106
|
||||
const val LIGHT_SLATE_GRAY = -0x887767
|
||||
const val LIGHT_STEEL_BLUE = -0x4f3b22
|
||||
const val LIGHT_VIOLET = -0x4f6247
|
||||
const val LIGHT_YELLOW = -0x20
|
||||
const val LILAC = -0x375d38
|
||||
const val LIME = -0x330100
|
||||
const val LIGHT_LIME = LIME
|
||||
const val LIME_GREEN = -0xcd32ce
|
||||
const val LINEN = -0x50f1a
|
||||
const val MAGENTA = -0xff01
|
||||
const val MAGENTA_ROSE = -0xf25a
|
||||
const val MALACHITE = -0xdd3cd2
|
||||
const val MALLOW = -0x26b201
|
||||
const val MARIGOLD = -0x6700
|
||||
const val MARINE_BLUE = -0xffb883
|
||||
const val MAROON = -0x800000
|
||||
const val MAUVE = -0x1f4f01
|
||||
const val MEDIUM_AQUAMARINE = -0x993256
|
||||
const val MEDIUM_BLUE = -0xffff33
|
||||
const val MEDIUM_LAVENDER_MAGENTA = -0x225f23
|
||||
const val MEDIUM_ORCHID = -0x45aa2d
|
||||
const val MEDIUM_PURPLE = -0x6c8f25
|
||||
const val MEDIUM_SEA_GREEN = -0xc34c8f
|
||||
const val MEDIUM_SLATE_BLUE = -0x849712
|
||||
const val MEDIUM_SPRING_GREEN = -0xff0566
|
||||
const val MEDIUM_TURQUOISE = -0xb72e34
|
||||
const val MEDIUM_VIOLET_RED = -0x38ea7b
|
||||
const val MIDNIGHT_BLUE = -0xe6e690
|
||||
const val MIMOSA = -0x1926cd
|
||||
const val MINERAL_BLUE = -0xffb267
|
||||
const val MINERAL_VIOLET = -0x5c6252
|
||||
const val MINT = -0xe967d5
|
||||
const val MINT_CREAM = -0xa0006
|
||||
const val MISTY_ROSE = -0x1b1f
|
||||
const val MOCCASIN = -0x1b4b
|
||||
const val MOON_YELLOW = -0xb3
|
||||
const val MOSS_GREEN = -0x9688dd
|
||||
const val MUSTARD = -0x3333b3
|
||||
const val NAVAJO_WHITE = -0x2153
|
||||
const val NAVY = -0xffff80
|
||||
const val NAVY_BLUE = NAVY
|
||||
const val OCHER = -0x3388de
|
||||
const val OLD_LACE = -0x20a1a
|
||||
const val OLD_ROSE = -0x3f7f7f
|
||||
const val OLIVE = -0x7f8000
|
||||
const val OLIVE_DRAB = -0x9471dd
|
||||
const val OPERA_MAUVE = -0x487b59
|
||||
const val ORANGE = -0x5b00
|
||||
const val ORANGE_RED = -0xbb00
|
||||
const val ORCHID = -0x258f2a
|
||||
const val PAIL_LILAC = -0x19301a
|
||||
const val PALE_BLUE = -0x2e120e
|
||||
const val PALE_DENIM = -0xa1793f
|
||||
const val PALE_GOLDENROD = -0x111756
|
||||
const val PALE_GREEN = -0x670468
|
||||
const val PALE_OCHRE = -0x334c74
|
||||
const val PALE_TURQUOISE = -0x501112
|
||||
const val PALE_VIOLET_RED = -0x248f6d
|
||||
const val PANSY = -0x8bff5f
|
||||
const val PAPAYA_WHIP = -0x102b
|
||||
const val PATRIARCH = -0x7fff80
|
||||
const val PEACH = -0x1a4c
|
||||
const val PEACH_PEARL = -0x4415f
|
||||
const val PEACH_PUFF = -0x2547
|
||||
const val PEACOCK_BLUE = -0xff7f74
|
||||
const val PEACOCK_GREEN = -0xff5ea4
|
||||
const val PEARL_PINK = -0x4c1a
|
||||
const val PERSIMMON = -0xb2c0
|
||||
const val PERU = -0x327ac1
|
||||
const val PINK = -0x3f35
|
||||
const val PLUM = -0x71ba7b
|
||||
const val POWDER_BLUE = -0x4f1f1a
|
||||
const val PRUSSIAN_BLUE = -0xffcead
|
||||
const val PURPLE = -0x95f253
|
||||
const val RED = -0x10000
|
||||
const val ROSE = -0xff81
|
||||
const val ROSE_PINK = -0x9934
|
||||
const val ROSY_BROWN = -0x437071
|
||||
const val ROYAL_BLUE = -0xbe961f
|
||||
const val RUBY = -0x33ff80
|
||||
const val SADDLE_BROWN = -0x74baed
|
||||
const val SALMON = -0x57f8e
|
||||
const val SALMON_PINK = -0x7f67
|
||||
const val SALVIA_BLUE = -0xb27f1a
|
||||
const val SAND_BEIGE = -0x193c3d
|
||||
const val SAND_BROWN = -0xb5ba0
|
||||
const val SAPPHIRE = -0xf7da99
|
||||
const val SAXE_BLUE = -0xb8674d
|
||||
const val SCARLET = -0xdc00
|
||||
const val SEASHELL = -0xa12
|
||||
const val SEA_GREEN = -0xd174a9
|
||||
const val SEPIA = -0x8fbdec
|
||||
const val SHELL_PINK = -0x4c41
|
||||
const val SIENNA = -0x5fadd3
|
||||
const val SILVER = -0x3f3f40
|
||||
const val SKY_BLUE = -0x783115
|
||||
const val SLATE_BLUE = -0x95a533
|
||||
const val SLATE_GRAY = -0x8f7f70
|
||||
const val SNOW = -0x506
|
||||
const val SPINEL_RED = -0x8c4d
|
||||
const val SPRING_GREEN = -0xff0080
|
||||
const val STEEL_BLUE = -0xb97d4c
|
||||
const val STRONG_BLUE = -0xff9c8c
|
||||
const val STRONG_RED = -0x1a0000
|
||||
const val SUN_ORANGE = -0x8d00
|
||||
const val TAN = -0x2d4b74
|
||||
const val TANGERINE = -0xd7b00
|
||||
const val TANGERINE_YELLOW = -0x3400
|
||||
const val TEAL = -0xff7f80
|
||||
const val THISTLE = -0x274028
|
||||
const val TOMATO = -0x9cb9
|
||||
const val TROPICAL_ORANGE = -0x7fcd
|
||||
const val TURQUOISE = -0xcf2a38
|
||||
const val TURQUOISE_BLUE = -0xff0011
|
||||
const val TURQUOISE_GREEN = -0xb21980
|
||||
const val ULTRAMARINE = -0xffcc01
|
||||
const val VERMILION = -0x1cbdcc
|
||||
const val VERY_LIGHT_MALACHITE_GREEN = -0x8c1974
|
||||
const val VIOLET = -0x7fff01
|
||||
const val VIRIDIAN = -0xed8bca
|
||||
const val WEDGWOOD_BLUE = -0xa97941
|
||||
const val WHEAT = -0xa214d
|
||||
const val WHITE = -0x1
|
||||
const val WHITE_SMOKE = -0xa0a0b
|
||||
const val WISTERIA = -0x365f24
|
||||
const val YELLOW = -0x100
|
||||
const val YELLOW_GREEN = -0x6532ce
|
||||
|
||||
}
|
||||
|
||||
object Material {
|
||||
|
||||
const val RED_50 = 0xFFFFEBEE
|
||||
const val RED_100 = 0xFFFFCDD2
|
||||
const val RED_200 = 0xFFEF9A9A
|
||||
const val RED_300 = 0xFFE57373
|
||||
const val RED_400 = 0xFFEF5350
|
||||
const val RED_500 = 0xFFF44336
|
||||
const val RED_600 = 0xFFE53935
|
||||
const val RED_700 = 0xFFD32F2F
|
||||
const val RED_800 = 0xFFC62828
|
||||
const val RED_900 = 0xFFB71C1C
|
||||
const val RED_A100 = 0xFFFF8A80
|
||||
const val RED_A200 = 0xFFFF5252
|
||||
const val RED_A400 = 0xFFFF1744
|
||||
const val RED_A700 = 0xFFD50000
|
||||
const val PINK_50 = 0xFFFCE4EC
|
||||
const val PINK_100 = 0xFFF8BBD0
|
||||
const val PINK_200 = 0xFFF48FB1
|
||||
const val PINK_300 = 0xFFF06292
|
||||
const val PINK_400 = 0xFFEC407A
|
||||
const val PINK_500 = 0xFFE91E63
|
||||
const val PINK_600 = 0xFFD81B60
|
||||
const val PINK_700 = 0xFFC2185B
|
||||
const val PINK_800 = 0xFFAD1457
|
||||
const val PINK_900 = 0xFF880E4F
|
||||
const val PINK_A100 = 0xFFFF80AB
|
||||
const val PINK_A200 = 0xFFFF4081
|
||||
const val PINK_A400 = 0xFFF50057
|
||||
const val PINK_A700 = 0xFFC51162
|
||||
const val PURPLE_50 = 0xFFF3E5F5
|
||||
const val PURPLE_100 = 0xFFE1BEE7
|
||||
const val PURPLE_200 = 0xFFCE93D8
|
||||
const val PURPLE_300 = 0xFFBA68C8
|
||||
const val PURPLE_400 = 0xFFAB47BC
|
||||
const val PURPLE_500 = 0xFF9C27B0
|
||||
const val PURPLE_600 = 0xFF8E24AA
|
||||
const val PURPLE_700 = 0xFF7B1FA2
|
||||
const val PURPLE_800 = 0xFF6A1B9A
|
||||
const val PURPLE_900 = 0xFF4A148C
|
||||
const val PURPLE_A100 = 0xFFEA80FC
|
||||
const val PURPLE_A200 = 0xFFE040FB
|
||||
const val PURPLE_A400 = 0xFFD500F9
|
||||
const val PURPLE_A700 = 0xFFAA00FF
|
||||
const val DEEP_PURPLE_50 = 0xFFEDE7F6
|
||||
const val DEEP_PURPLE_100 = 0xFFD1C4E9
|
||||
const val DEEP_PURPLE_200 = 0xFFB39DDB
|
||||
const val DEEP_PURPLE_300 = 0xFF9575CD
|
||||
const val DEEP_PURPLE_400 = 0xFF7E57C2
|
||||
const val DEEP_PURPLE_500 = 0xFF673AB7
|
||||
const val DEEP_PURPLE_600 = 0xFF5E35B1
|
||||
const val DEEP_PURPLE_700 = 0xFF512DA8
|
||||
const val DEEP_PURPLE_800 = 0xFF4527A0
|
||||
const val DEEP_PURPLE_900 = 0xFF311B92
|
||||
const val DEEP_PURPLE_A100 = 0xFFB388FF
|
||||
const val DEEP_PURPLE_A200 = 0xFF7C4DFF
|
||||
const val DEEP_PURPLE_A400 = 0xFF651FFF
|
||||
const val DEEP_PURPLE_A700 = 0xFF6200EA
|
||||
const val INDIGO_50 = 0xFFE8EAF6
|
||||
const val INDIGO_100 = 0xFFC5CAE9
|
||||
const val INDIGO_200 = 0xFF9FA8DA
|
||||
const val INDIGO_300 = 0xFF7986CB
|
||||
const val INDIGO_400 = 0xFF5C6BC0
|
||||
const val INDIGO_500 = 0xFF3F51B5
|
||||
const val INDIGO_600 = 0xFF3949AB
|
||||
const val INDIGO_700 = 0xFF303F9F
|
||||
const val INDIGO_800 = 0xFF283593
|
||||
const val INDIGO_900 = 0xFF1A237E
|
||||
const val INDIGO_A100 = 0xFF8C9EFF
|
||||
const val INDIGO_A200 = 0xFF536DFE
|
||||
const val INDIGO_A400 = 0xFF3D5AFE
|
||||
const val INDIGO_A700 = 0xFF304FFE
|
||||
const val BLUE_50 = 0xFFE3F2FD
|
||||
const val BLUE_100 = 0xFFBBDEFB
|
||||
const val BLUE_200 = 0xFF90CAF9
|
||||
const val BLUE_300 = 0xFF64B5F6
|
||||
const val BLUE_400 = 0xFF42A5F5
|
||||
const val BLUE_500 = 0xFF2196F3
|
||||
const val BLUE_600 = 0xFF1E88E5
|
||||
const val BLUE_700 = 0xFF1976D2
|
||||
const val BLUE_800 = 0xFF1565C0
|
||||
const val BLUE_900 = 0xFF0D47A1
|
||||
const val BLUE_A100 = 0xFF82B1FF
|
||||
const val BLUE_A200 = 0xFF448AFF
|
||||
const val BLUE_A400 = 0xFF2979FF
|
||||
const val BLUE_A700 = 0xFF2962FF
|
||||
const val LIGHT_BLUE_50 = 0xFFE1F5FE
|
||||
const val LIGHT_BLUE_100 = 0xFFB3E5FC
|
||||
const val LIGHT_BLUE_200 = 0xFF81D4FA
|
||||
const val LIGHT_BLUE_300 = 0xFF4FC3F7
|
||||
const val LIGHT_BLUE_400 = 0xFF29B6FC
|
||||
const val LIGHT_BLUE_500 = 0xFF03A9F4
|
||||
const val LIGHT_BLUE_600 = 0xFF039BE5
|
||||
const val LIGHT_BLUE_700 = 0xFF0288D1
|
||||
const val LIGHT_BLUE_800 = 0xFF0277BD
|
||||
const val LIGHT_BLUE_900 = 0xFF01579B
|
||||
const val LIGHT_BLUE_A100 = 0xFF80D8FF
|
||||
const val LIGHT_BLUE_A200 = 0xFF40C4FF
|
||||
const val LIGHT_BLUE_A400 = 0xFF00B0FF
|
||||
const val LIGHT_BLUE_A700 = 0xFF0091EA
|
||||
const val CYAN_50 = 0xFFE0F7FA
|
||||
const val CYAN_100 = 0xFFB2EBF2
|
||||
const val CYAN_200 = 0xFF80DEEA
|
||||
const val CYAN_300 = 0xFF4DD0E1
|
||||
const val CYAN_400 = 0xFF26C6DA
|
||||
const val CYAN_500 = 0xFF00BCD4
|
||||
const val CYAN_600 = 0xFF00ACC1
|
||||
const val CYAN_700 = 0xFF0097A7
|
||||
const val CYAN_800 = 0xFF00838F
|
||||
const val CYAN_900 = 0xFF006064
|
||||
const val CYAN_A100 = 0xFF84FFFF
|
||||
const val CYAN_A200 = 0xFF18FFFF
|
||||
const val CYAN_A400 = 0xFF00E5FF
|
||||
const val CYAN_A700 = 0xFF00B8D4
|
||||
const val TEAL_50 = 0xFFE0F2F1
|
||||
const val TEAL_100 = 0xFFB2DFDB
|
||||
const val TEAL_200 = 0xFF80CBC4
|
||||
const val TEAL_300 = 0xFF4DB6AC
|
||||
const val TEAL_400 = 0xFF26A69A
|
||||
const val TEAL_500 = 0xFF009688
|
||||
const val TEAL_600 = 0xFF00897B
|
||||
const val TEAL_700 = 0xFF00796B
|
||||
const val TEAL_800 = 0xFF00695C
|
||||
const val TEAL_900 = 0xFF004D40
|
||||
const val TEAL_A100 = 0xFFA7FFEB
|
||||
const val TEAL_A200 = 0xFF64FFDA
|
||||
const val TEAL_A400 = 0xFF1DE9B6
|
||||
const val TEAL_A700 = 0xFF00BFA5
|
||||
const val GREEN_50 = 0xFFE8F5E9
|
||||
const val GREEN_100 = 0xFFC8E6C9
|
||||
const val GREEN_200 = 0xFFA5D6A7
|
||||
const val GREEN_300 = 0xFF81C784
|
||||
const val GREEN_400 = 0xFF66BB6A
|
||||
const val GREEN_500 = 0xFF4CAF50
|
||||
const val GREEN_600 = 0xFF43A047
|
||||
const val GREEN_700 = 0xFF388E3C
|
||||
const val GREEN_800 = 0xFF2E7D32
|
||||
const val GREEN_900 = 0xFF1B5E20
|
||||
const val GREEN_A100 = 0xFFB9F6CA
|
||||
const val GREEN_A200 = 0xFF69F0AE
|
||||
const val GREEN_A400 = 0xFF00E676
|
||||
const val GREEN_A700 = 0xFF00C853
|
||||
const val LIGHT_GREEN_50 = 0xFFF1F8E9
|
||||
const val LIGHT_GREEN_100 = 0xFFDCEDC8
|
||||
const val LIGHT_GREEN_200 = 0xFFC5E1A5
|
||||
const val LIGHT_GREEN_300 = 0xFFAED581
|
||||
const val LIGHT_GREEN_400 = 0xFF9CCC65
|
||||
const val LIGHT_GREEN_500 = 0xFF8BC34A
|
||||
const val LIGHT_GREEN_600 = 0xFF7CB342
|
||||
const val LIGHT_GREEN_700 = 0xFF689F38
|
||||
const val LIGHT_GREEN_800 = 0xFF558B2F
|
||||
const val LIGHT_GREEN_900 = 0xFF33691E
|
||||
const val LIGHT_GREEN_A100 = 0xFFCCFF90
|
||||
const val LIGHT_GREEN_A200 = 0xFFB2FF59
|
||||
const val LIGHT_GREEN_A400 = 0xFF76FF03
|
||||
const val LIGHT_GREEN_A700 = 0xFF64DD17
|
||||
const val LIME_50 = 0xFFF9FBE7
|
||||
const val LIME_100 = 0xFFF0F4C3
|
||||
const val LIME_200 = 0xFFE6EE9C
|
||||
const val LIME_300 = 0xFFDCE775
|
||||
const val LIME_400 = 0xFFD4E157
|
||||
const val LIME_500 = 0xFFCDDC39
|
||||
const val LIME_600 = 0xFFC0CA33
|
||||
const val LIME_700 = 0xFFA4B42B
|
||||
const val LIME_800 = 0xFF9E9D24
|
||||
const val LIME_900 = 0xFF827717
|
||||
const val LIME_A100 = 0xFFF4FF81
|
||||
const val LIME_A200 = 0xFFEEFF41
|
||||
const val LIME_A400 = 0xFFC6FF00
|
||||
const val LIME_A700 = 0xFFAEEA00
|
||||
const val YELLOW_50 = 0xFFFFFDE7
|
||||
const val YELLOW_100 = 0xFFFFF9C4
|
||||
const val YELLOW_200 = 0xFFFFF590
|
||||
const val YELLOW_300 = 0xFFFFF176
|
||||
const val YELLOW_400 = 0xFFFFEE58
|
||||
const val YELLOW_500 = 0xFFFFEB3B
|
||||
const val YELLOW_600 = 0xFFFDD835
|
||||
const val YELLOW_700 = 0xFFFBC02D
|
||||
const val YELLOW_800 = 0xFFF9A825
|
||||
const val YELLOW_900 = 0xFFF57F17
|
||||
const val YELLOW_A100 = 0xFFFFFF82
|
||||
const val YELLOW_A200 = 0xFFFFFF00
|
||||
const val YELLOW_A400 = 0xFFFFEA00
|
||||
const val YELLOW_A700 = 0xFFFFD600
|
||||
const val AMBER_50 = 0xFFFFF8E1
|
||||
const val AMBER_100 = 0xFFFFECB3
|
||||
const val AMBER_200 = 0xFFFFE082
|
||||
const val AMBER_300 = 0xFFFFD54F
|
||||
const val AMBER_400 = 0xFFFFCA28
|
||||
const val AMBER_500 = 0xFFFFC107
|
||||
const val AMBER_600 = 0xFFFFB300
|
||||
const val AMBER_700 = 0xFFFFA000
|
||||
const val AMBER_800 = 0xFFFF8F00
|
||||
const val AMBER_900 = 0xFFFF6F00
|
||||
const val AMBER_A100 = 0xFFFFE57F
|
||||
const val AMBER_A200 = 0xFFFFD740
|
||||
const val AMBER_A400 = 0xFFFFC400
|
||||
const val AMBER_A700 = 0xFFFFAB00
|
||||
const val ORANGE_50 = 0xFFFFF3E0
|
||||
const val ORANGE_100 = 0xFFFFE0B2
|
||||
const val ORANGE_200 = 0xFFFFCC80
|
||||
const val ORANGE_300 = 0xFFFFB74D
|
||||
const val ORANGE_400 = 0xFFFFA726
|
||||
const val ORANGE_500 = 0xFFFF9800
|
||||
const val ORANGE_600 = 0xFFFB8C00
|
||||
const val ORANGE_700 = 0xFFF57C00
|
||||
const val ORANGE_800 = 0xFFEF6C00
|
||||
const val ORANGE_900 = 0xFFE65100
|
||||
const val ORANGE_A100 = 0xFFFFD180
|
||||
const val ORANGE_A200 = 0xFFFFAB40
|
||||
const val ORANGE_A400 = 0xFFFF9100
|
||||
const val ORANGE_A700 = 0xFFFF6D00
|
||||
const val DEEP_ORANGE_50 = 0xFFFBE9A7
|
||||
const val DEEP_ORANGE_100 = 0xFFFFCCBC
|
||||
const val DEEP_ORANGE_200 = 0xFFFFAB91
|
||||
const val DEEP_ORANGE_300 = 0xFFFF8A65
|
||||
const val DEEP_ORANGE_400 = 0xFFFF7043
|
||||
const val DEEP_ORANGE_500 = 0xFFFF5722
|
||||
const val DEEP_ORANGE_600 = 0xFFF4511E
|
||||
const val DEEP_ORANGE_700 = 0xFFE64A19
|
||||
const val DEEP_ORANGE_800 = 0xFFD84315
|
||||
const val DEEP_ORANGE_900 = 0xFFBF360C
|
||||
const val DEEP_ORANGE_A100 = 0xFFFF9E80
|
||||
const val DEEP_ORANGE_A200 = 0xFFFF6E40
|
||||
const val DEEP_ORANGE_A400 = 0xFFFF3D00
|
||||
const val DEEP_ORANGE_A700 = 0xFFDD2600
|
||||
const val BROWN_50 = 0xFFEFEBE9
|
||||
const val BROWN_100 = 0xFFD7CCC8
|
||||
const val BROWN_200 = 0xFFBCAAA4
|
||||
const val BROWN_300 = 0xFFA1887F
|
||||
const val BROWN_400 = 0xFF8D6E63
|
||||
const val BROWN_500 = 0xFF795548
|
||||
const val BROWN_600 = 0xFF6D4C41
|
||||
const val BROWN_700 = 0xFF5D4037
|
||||
const val BROWN_800 = 0xFF4E342E
|
||||
const val BROWN_900 = 0xFF3E2723
|
||||
const val GREY_50 = 0xFFFAFAFA
|
||||
const val GREY_100 = 0xFFF5F5F5
|
||||
const val GREY_200 = 0xFFEEEEEE
|
||||
const val GREY_300 = 0xFFE0E0E0
|
||||
const val GREY_400 = 0xFFBDBDBD
|
||||
const val GREY_500 = 0xFF9E9E9E
|
||||
const val GREY_600 = 0xFF757575
|
||||
const val GREY_700 = 0xFF616161
|
||||
const val GREY_800 = 0xFF424242
|
||||
const val GREY_900 = 0xFF212121
|
||||
const val BLACK_1000 = 0xFF000000
|
||||
const val WHITE_1000 = 0xFFFFFFFF
|
||||
const val BLUE_GREY_50 = 0xFFECEFF1
|
||||
const val BLUE_GREY_100 = 0xFFCFD8DC
|
||||
const val BLUE_GREY_200 = 0xFFB0BBC5
|
||||
const val BLUE_GREY_300 = 0xFF90A4AE
|
||||
const val BLUE_GREY_400 = 0xFF78909C
|
||||
const val BLUE_GREY_500 = 0xFF607D8B
|
||||
const val BLUE_GREY_600 = 0xFF546E7A
|
||||
const val BLUE_GREY_700 = 0xFF455A64
|
||||
const val BLUE_GREY_800 = 0xFF37474F
|
||||
const val BLUE_GREY_900 = 0xFF263238
|
||||
|
||||
const val RED = RED_500
|
||||
const val PINK = PINK_500
|
||||
const val PURPLE = PURPLE_500
|
||||
const val DEEP_PURPLE = DEEP_PURPLE_500
|
||||
const val INDIGO = INDIGO_500
|
||||
const val BLUE = BLUE_500
|
||||
const val LIGHT_BLUE = LIGHT_BLUE_500
|
||||
const val CYAN = CYAN_500
|
||||
const val TEAL = TEAL_500
|
||||
const val GREEN = GREEN_500
|
||||
const val LIGHT_GREEN = LIGHT_GREEN_500
|
||||
const val LIME = LIME_500
|
||||
const val YELLOW = YELLOW_500
|
||||
const val AMBER = AMBER_500
|
||||
const val ORANGE = ORANGE_500
|
||||
const val DEEP_ORANGE = DEEP_ORANGE_500
|
||||
const val BROWN = BROWN_500
|
||||
const val GREY = GREY_500
|
||||
const val BLUE_GREY = BLUE_GREY_500
|
||||
const val BLACK = BLACK_1000
|
||||
const val WHITE = WHITE_1000
|
||||
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
internal val globalAppContext = GlobalAppContext.get()
|
||||
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun getColorByName(colorName: String, suppressException: Boolean = false): Int? {
|
||||
val name = colorName.replace("-", "_").uppercase()
|
||||
arrayOf(
|
||||
Android::class.java,
|
||||
Css::class.java,
|
||||
Web::class.java,
|
||||
Material::class.java,
|
||||
).forEach { clazz ->
|
||||
clazz.declaredFields.forEach { field ->
|
||||
if (removeUnderscores(name) == removeUnderscores(field.name)) {
|
||||
return field.getInt(field.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!suppressException) {
|
||||
throw NotFoundException(globalAppContext.getString(R.string.error_unknown_color_name, colorName))
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
private fun removeUnderscores(s: String) = s.replace("_", "")
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package org.autojs.autojs.theme.preference
|
||||
|
||||
import android.content.Context
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
|
||||
interface LongClickablePreferenceLike {
|
||||
|
||||
val prefTitle: CharSequence?
|
||||
|
||||
val prefContext: Context
|
||||
|
||||
val longClickPrompt: CharSequence?
|
||||
|
||||
val longClickPromptMore: CharSequence?
|
||||
|
||||
fun longClickPromptMoreDialogHandler(d: MaterialDialog?) {}
|
||||
|
||||
fun longClickPromptDialogHandler(d: MaterialDialog?) {}
|
||||
|
||||
}
|
||||
0
app/src/main/java/org/autojs/autojs/util/text
Normal file
0
app/src/main/java/org/autojs/autojs/util/text
Normal file
Reference in New Issue
Block a user