From 1fc9640e388d11ac0fdc10a2a936b1f55cae4c15 Mon Sep 17 00:00:00 2001 From: areumwoo Date: Mon, 2 Mar 2026 16:27:04 +0900 Subject: [PATCH] =?UTF-8?q?Gradient=20=EC=8A=AC=EB=9D=BC=EC=9D=B4=EB=8D=94?= =?UTF-8?q?=20=EA=B3=84=EC=82=B0=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/screens/home/dcd/DcdSettingPopup.kt | 2 +- .../ui/screens/home/dcd/GradientSlider.kt | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/laseroptek/raman/ui/screens/home/dcd/DcdSettingPopup.kt b/app/src/main/java/com/laseroptek/raman/ui/screens/home/dcd/DcdSettingPopup.kt index 359e05f..5bd631c 100644 --- a/app/src/main/java/com/laseroptek/raman/ui/screens/home/dcd/DcdSettingPopup.kt +++ b/app/src/main/java/com/laseroptek/raman/ui/screens/home/dcd/DcdSettingPopup.kt @@ -334,7 +334,7 @@ fun DcdSettingPopup( modifier = Modifier .fillMaxHeight() .size(40.px.dp, 210.px.dp), - chargeRate = gasChargeRate.toInt() + chargeRate = gasChargeRate ) // Icon diff --git a/app/src/main/java/com/laseroptek/raman/ui/screens/home/dcd/GradientSlider.kt b/app/src/main/java/com/laseroptek/raman/ui/screens/home/dcd/GradientSlider.kt index 3250621..4babb62 100644 --- a/app/src/main/java/com/laseroptek/raman/ui/screens/home/dcd/GradientSlider.kt +++ b/app/src/main/java/com/laseroptek/raman/ui/screens/home/dcd/GradientSlider.kt @@ -28,14 +28,26 @@ import com.laseroptek.raman.ui.screens.main.MainViewModel import com.laseroptek.raman.utils.DefaultDispatcherProvider import com.laseroptek.raman.utils.ext.px import timber.log.Timber +import kotlin.math.abs +import kotlin.math.ceil @Composable fun GradientSlider( modifier: Modifier = Modifier, - chargeRate: Int = 0, // Value from (0 .. 100) + chargeRate: Float = 0f, ) { - val chargeIndex = ((chargeRate.coerceIn(0, 100) + 4) / 5).toInt() // 0..19 + val normalizedRate = chargeRate.coerceIn(0f, 100f) + val bucket = normalizedRate / 5f + val remainder = normalizedRate % 5f + val isExactMultiple = abs(remainder) < 0.0001f + + val chargeIndex = when { + normalizedRate == 0f -> -1 + isExactMultiple -> (bucket - 1f).toInt().coerceAtLeast(-1) + else -> (ceil(bucket.toDouble()).toInt() - 1) + }.coerceIn(-1, 19) + Timber.d("chargeRate: $chargeRate, chargeIndex: $chargeIndex") Box( @@ -103,6 +115,6 @@ fun GradientSliderPreview( //mainViewModel = mainViewModel modifier = Modifier .size(40.px.dp, 210.px.dp), - chargeRate = 20 + chargeRate = 20f ) }