From 821cdb8d72bba7cd3d7c688e549436125ccd4d6e Mon Sep 17 00:00:00 2001 From: lynxnb Date: Wed, 5 Apr 2023 01:37:55 +0200 Subject: [PATCH] Draw a circle indicator on OSC buttons with toggle mode enabled --- .../emu/skyline/input/onscreen/OnScreenButton.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/java/emu/skyline/input/onscreen/OnScreenButton.kt b/app/src/main/java/emu/skyline/input/onscreen/OnScreenButton.kt index 95893966..1f36aa35 100644 --- a/app/src/main/java/emu/skyline/input/onscreen/OnScreenButton.kt +++ b/app/src/main/java/emu/skyline/input/onscreen/OnScreenButton.kt @@ -40,6 +40,7 @@ abstract class OnScreenButton( const val CONFIGURED_ASPECT_RATIO = 2074f / 874f private var disabledSelectionPaint : Paint? = null + private var toggleModePaint : Paint? = null } init { @@ -50,6 +51,13 @@ abstract class OnScreenButton( strokeWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2f, onScreenControllerView.context.resources.displayMetrics) } } + + if (toggleModePaint == null) { + toggleModePaint = Paint().apply { + style = Paint.Style.STROKE + strokeWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2f, onScreenControllerView.context.resources.displayMetrics) + } + } } final override val config = OnScreenConfigurationImpl(onScreenControllerView.context, buttonId, defaultRelativeX, defaultRelativeY, defaultEnabled) @@ -158,6 +166,12 @@ abstract class OnScreenButton( } renderCenteredText(canvas, buttonId.short!!, itemWidth.coerceAtMost(itemHeight) * 0.4f, bounds.centerX().toFloat(), bounds.centerY().toFloat(), alpha) + + if (config.toggleMode) { + canvas.drawCircle(bounds.centerX().toFloat(), bounds.centerY().toFloat(), itemWidth.coerceAtMost(itemHeight) * 0.35f, toggleModePaint?.apply { + color = config.textColor + this.alpha = alpha + } ?: return) } }