Skip to content

Commit 70d28f3

Browse files
committed
initializing the values differently.
1 parent ff0ff31 commit 70d28f3

File tree

3 files changed

+38
-17
lines changed

3 files changed

+38
-17
lines changed

library/src/main/java/io/syslogic/colorpicker/compose/ColorPickerComponent.kt

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.syslogic.colorpicker.compose
22

33
import android.content.Context
4+
import android.graphics.Color.HSVToColor
5+
import android.graphics.Color.RGBToHSV
46
import android.graphics.RectF
57
import android.widget.Toast
68

@@ -43,20 +45,20 @@ fun ColorPickerComponent(
4345
initialColor: Color = Color.Transparent,
4446
onColorChanged: OnColorChangedListener?,
4547
showAlpha: Boolean = true,
46-
showARGB: Boolean = true,
4748
showHSV: Boolean = true,
49+
showARGB: Boolean = true,
4850
showHex: Boolean = true
4951
) {
5052

5153
val context = LocalContext.current
5254
val rowPadding = dimensionResource(R.dimen.compose_row_padding)
5355
val listener: OnColorChangedListener? = onColorChanged
5456

55-
var currentColor: Int by remember { mutableStateOf(initialColor.hashCode()) }
56-
var currentAlpha: Float by remember { mutableStateOf(.5F) }
57-
var currentSat: Float by remember { mutableStateOf(.5F) }
58-
var currentVal: Float by remember { mutableStateOf(.5F) }
59-
var currentHue: Float by remember { mutableStateOf(180F) }
57+
var currentColor: Int by remember { mutableStateOf( getColorValue(initialColor) ) }
58+
var currentAlpha: Float by remember { mutableStateOf( getAlphaValue(initialColor) ) }
59+
var currentSat: Float by remember { mutableStateOf( getSatValue(initialColor) ) }
60+
var currentVal: Float by remember { mutableStateOf( getValValue(initialColor) ) }
61+
var currentHue: Float by remember { mutableStateOf( getHueValue(initialColor) ) }
6062

6163
var offsetSatVal by remember { mutableStateOf(Offset.Zero) }
6264
var sizeSatVal by remember { mutableStateOf(IntSize.Zero) }
@@ -224,9 +226,9 @@ fun ColorPickerComponent(
224226
contentScale = ContentScale.FillBounds,
225227
painter = SatValPainter(Size(900F, 900F)).also {
226228
it.setAlpha(currentAlpha)
229+
it.setHue(currentHue)
227230
it.setSat(currentSat)
228231
it.setValue(currentVal)
229-
it.setHue(currentHue)
230232
},
231233
modifier = Modifier
232234
.layoutId(SatVal)
@@ -433,7 +435,7 @@ fun onButtonClick(context: Context, layoutId: LayoutId, value: Int, listener: On
433435

434436
fun toIntColor(alpha: Float, hue: Float, sat: Float, value: Float): Int {
435437
println("alpha: $alpha, hue: $hue, saturation: $sat, value: $value")
436-
return android.graphics.Color.HSVToColor(
438+
return HSVToColor(
437439
(alpha * 255).toInt(), floatArrayOf(hue, sat, value)
438440
)
439441
}
@@ -453,6 +455,32 @@ fun toARGB(color: Int): String {
453455
return String.format("#%s%s%s%s", alpha, red, green, blue)
454456
}
455457

458+
fun getColorValue(value: Color): Int {
459+
return value.hashCode()
460+
}
461+
462+
fun getAlphaValue(value: Color): Float {
463+
return value.alpha
464+
}
465+
466+
fun getHSV(value: Color): FloatArray {
467+
val hsv = FloatArray(3)
468+
RGBToHSV(value.red.times(255).toInt(), value.green.times(255).toInt(), value.blue.times(255).toInt(), hsv)
469+
return hsv
470+
}
471+
472+
fun getHueValue(value: Color): Float {
473+
return getHSV(value)[0]
474+
}
475+
476+
fun getSatValue(value: Color): Float {
477+
return getHSV(value)[1]
478+
}
479+
480+
fun getValValue(value: Color): Float {
481+
return getHSV(value)[2]
482+
}
483+
456484
/**
457485
* @param color the color value to convert.
458486
* @return channel integer value as String.

library/src/main/java/io/syslogic/colorpicker/compose/SatValPainter.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,33 +73,26 @@ class SatValPainter(intrinsicSize: Size) : BasePainter(intrinsicSize) {
7373
private fun getAlpha() : Float {
7474
return this.value[0]
7575
}
76-
7776
private fun getHue() : Float {
7877
return this.value[1]
7978
}
80-
8179
private fun getSat() : Float {
8280
return this.value[2]
8381
}
84-
8582
private fun getValue() : Float {
8683
return this.value[3]
8784
}
8885

8986
fun setAlpha(value: Float) {
9087
this.value[0] = value
9188
}
92-
9389
fun setHue(value: Float) {
9490
this.value[1] = value
9591
}
96-
9792
fun setSat(value: Float) {
9893
this.value[2] = value
9994
}
100-
10195
fun setValue(value: Float) {
10296
this.value[3] = value
10397
}
104-
10598
}

mobile/src/main/java/io/syslogic/demo/colorpicker/activity/ComposeActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ class ComposeActivity : ComponentActivity(), OnColorChangedListener {
2323
private lateinit var prefs: SharedPreferences
2424

2525
override fun onCreate(savedInstanceState: Bundle?) {
26-
2726
super.onCreate(savedInstanceState)
27+
2828
this.prefs = PreferenceManager.getDefaultSharedPreferences(this)
2929
val initialColor = prefs.getInt("color_code_01", 0xFF444444.toInt())
3030

@@ -34,8 +34,8 @@ class ComposeActivity : ComponentActivity(), OnColorChangedListener {
3434
onColorChanged = this@ComposeActivity,
3535
initialColor = Color(initialColor),
3636
showAlpha = true,
37-
showARGB = true,
3837
showHSV = true,
38+
showARGB = true,
3939
showHex = true
4040
)
4141
}

0 commit comments

Comments
 (0)