Skip to content

Commit 19c3566

Browse files
add rectangle color pickers and dialogs
1 parent ec91ea7 commit 19c3566

20 files changed

+1114
-100
lines changed

app/src/main/java/com/smarttoolfactory/composecolorpicker/demo/ColorPickerDemo.kt

Lines changed: 365 additions & 44 deletions
Large diffs are not rendered by default.

app/src/main/java/com/smarttoolfactory/composecolorpicker/demo/SaturationSelectorDemo.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ fun SLWithHSLDiamondExample(modifier: Modifier, selectorModifier: Modifier) {
7171
modifier = modifier,
7272
horizontalAlignment = Alignment.CenterHorizontally
7373
) {
74-
SaturationLightnessSelectorDiamondHSL(
74+
SelectorDiamondSaturationLightnessHSL(
7575
modifier = selectorModifier,
7676
hue = hue,
7777
saturation = saturation,
@@ -113,7 +113,7 @@ private fun SVSelectorWithHSVRectangleExample(modifier: Modifier, selectorModifi
113113
modifier = modifier,
114114
horizontalAlignment = Alignment.CenterHorizontally
115115
) {
116-
SaturationValueSelectorRectHSV(
116+
SelectorRectSaturationValueHSV(
117117
modifier = Modifier
118118
.fillMaxWidth()
119119
.aspectRatio(4 / 3f),
@@ -156,7 +156,7 @@ private fun SLSelectorWithHSLRectangleExample(modifier: Modifier, selectorModifi
156156
modifier = modifier,
157157
horizontalAlignment = Alignment.CenterHorizontally
158158
) {
159-
SaturationLightnessSelectorRectHSL(
159+
SelectorRectSaturationLightnessHSL(
160160
modifier = Modifier
161161
.fillMaxWidth()
162162
.aspectRatio(4 / 3f),
@@ -198,7 +198,7 @@ private fun HSSelectorHSVCircleExample(modifier: Modifier, selectorModifier: Mod
198198
modifier = modifier,
199199
horizontalAlignment = Alignment.CenterHorizontally
200200
) {
201-
HueSaturationSelectorCircleHSV(
201+
SelectorCircleHueSaturationHSV(
202202
modifier = selectorModifier,
203203
hue = hue,
204204
saturation = saturation,
@@ -238,7 +238,7 @@ private fun HSSelectorWithHSVRectangleExample(modifier: Modifier, selectorModifi
238238
modifier = modifier,
239239
horizontalAlignment = Alignment.CenterHorizontally
240240
) {
241-
HueSaturationSelectorRectHSV(
241+
SelectorRectHueSaturationHSV(
242242
modifier = Modifier
243243
.fillMaxWidth()
244244
.aspectRatio(4 / 3f),
@@ -280,7 +280,7 @@ private fun HVSelectorWithHSVRectangleExample(modifier: Modifier, selectorModifi
280280
modifier = modifier,
281281
horizontalAlignment = Alignment.CenterHorizontally
282282
) {
283-
HueValueSelectorRectHSV(
283+
SelectorRectHueValueHSV(
284284
modifier = Modifier
285285
.fillMaxWidth()
286286
.aspectRatio(4 / 3f),
@@ -322,7 +322,7 @@ private fun HSSelectorWithHSLRectangleExample(modifier: Modifier, selectorModifi
322322
modifier = modifier,
323323
horizontalAlignment = Alignment.CenterHorizontally
324324
) {
325-
HueSaturationSelectorRectHSL(
325+
SelectorRectHueSaturationHSL(
326326
modifier = Modifier
327327
.fillMaxWidth()
328328
.aspectRatio(4 / 3f),
@@ -364,7 +364,7 @@ private fun HLSelectorWithHSLRectangleExample(modifier: Modifier, selectorModifi
364364
modifier = modifier,
365365
horizontalAlignment = Alignment.CenterHorizontally
366366
) {
367-
HueLightnessSelectorRectHSL(
367+
SelectorRectHueLightnessHSL(
368368
modifier = Modifier
369369
.fillMaxWidth()
370370
.aspectRatio(4 / 3f),

colorpicker/src/main/java/com/smarttoolfactory/colorpicker/dialog/ColorPickerDialog.kt

Lines changed: 204 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@ import androidx.compose.material.icons.Icons
1212
import androidx.compose.material.icons.filled.Close
1313
import androidx.compose.runtime.*
1414
import androidx.compose.ui.Alignment
15+
import androidx.compose.ui.ExperimentalComposeUiApi
1516
import androidx.compose.ui.Modifier
1617
import androidx.compose.ui.graphics.Color
1718
import androidx.compose.ui.graphics.Shape
1819
import androidx.compose.ui.unit.Dp
1920
import androidx.compose.ui.unit.dp
2021
import androidx.compose.ui.window.Dialog
21-
import com.smarttoolfactory.colorpicker.picker.ColorPickerCircleValueHSV
22-
import com.smarttoolfactory.colorpicker.picker.ColorPickerRingDiamondHSL
23-
import com.smarttoolfactory.colorpicker.picker.ColorPickerRingRectHSV
22+
import com.smarttoolfactory.colorpicker.picker.*
2423
import com.smarttoolfactory.colorpicker.ui.Blue400
2524

2625
@Composable
@@ -130,7 +129,7 @@ fun ColorPickerCircleHSVDialog(
130129
ColorPickerCircleValueHSV(
131130
modifier = Modifier
132131
.fillMaxWidth()
133-
.padding(horizontal = 12.dp, vertical = 12.dp),
132+
.padding(horizontal = 8.dp, vertical = 12.dp),
134133
initialColor = initialColor,
135134
selectionRadius = selectionRadius
136135
) {
@@ -140,5 +139,206 @@ fun ColorPickerCircleHSVDialog(
140139
}
141140
}
142141

142+
@Composable
143+
fun ColorPickerSVRectHSVDialog(
144+
modifier: Modifier = Modifier,
145+
initialColor: Color,
146+
selectionRadius: Dp = 8.dp,
147+
dialogBackgroundColor: Color = Color.White,
148+
dialogShape: Shape = RoundedCornerShape(5.dp),
149+
onDismiss: (Color) -> Unit
150+
) {
151+
152+
var color by remember { mutableStateOf(initialColor.copy()) }
153+
154+
Dialog(
155+
onDismissRequest = {
156+
onDismiss(color)
157+
}
158+
) {
159+
Surface(
160+
modifier = modifier,
161+
color = dialogBackgroundColor,
162+
shape = dialogShape,
163+
elevation = 2.dp
164+
) {
165+
ColorPickerRectSaturationValueHSV(
166+
modifier = Modifier,
167+
initialColor = initialColor,
168+
selectionRadius = selectionRadius
169+
) {
170+
color = it
171+
}
172+
}
173+
}
174+
}
175+
176+
@Composable
177+
fun ColorPickerSLRectHSLDialog(
178+
modifier: Modifier = Modifier,
179+
initialColor: Color,
180+
selectionRadius: Dp = 8.dp,
181+
dialogBackgroundColor: Color = Color.White,
182+
dialogShape: Shape = RoundedCornerShape(5.dp),
183+
onDismiss: (Color) -> Unit
184+
) {
185+
186+
var color by remember { mutableStateOf(initialColor.copy()) }
187+
188+
Dialog(
189+
onDismissRequest = {
190+
onDismiss(color)
191+
}
192+
) {
193+
Surface(
194+
modifier = modifier,
195+
color = dialogBackgroundColor,
196+
shape = dialogShape,
197+
elevation = 2.dp
198+
) {
199+
ColorPickerRectSaturationLightnessHSL(
200+
modifier = Modifier,
201+
initialColor = initialColor,
202+
selectionRadius = selectionRadius
203+
) {
204+
color = it
205+
}
206+
}
207+
}
208+
}
209+
210+
@Composable
211+
fun ColorPickerHSRectHSVDialog(
212+
modifier: Modifier = Modifier,
213+
initialColor: Color,
214+
selectionRadius: Dp = 8.dp,
215+
dialogBackgroundColor: Color = Color.White,
216+
dialogShape: Shape = RoundedCornerShape(5.dp),
217+
onDismiss: (Color) -> Unit
218+
) {
219+
220+
var color by remember { mutableStateOf(initialColor.copy()) }
221+
222+
Dialog(
223+
onDismissRequest = {
224+
onDismiss(color)
225+
}
226+
) {
227+
Surface(
228+
modifier = modifier,
229+
color = dialogBackgroundColor,
230+
shape = dialogShape,
231+
elevation = 2.dp
232+
) {
233+
ColorPickerRectHueSaturationHSV(
234+
modifier = Modifier,
235+
initialColor = initialColor,
236+
selectionRadius = selectionRadius
237+
) {
238+
color = it
239+
}
240+
}
241+
}
242+
}
243+
244+
@Composable
245+
fun ColorPickerHVRectHSVDialog(
246+
modifier: Modifier = Modifier,
247+
initialColor: Color,
248+
selectionRadius: Dp = 8.dp,
249+
dialogBackgroundColor: Color = Color.White,
250+
dialogShape: Shape = RoundedCornerShape(5.dp),
251+
onDismiss: (Color) -> Unit
252+
) {
253+
254+
var color by remember { mutableStateOf(initialColor.copy()) }
255+
256+
Dialog(
257+
onDismissRequest = {
258+
onDismiss(color)
259+
}
260+
) {
261+
Surface(
262+
modifier = modifier,
263+
color = dialogBackgroundColor,
264+
shape = dialogShape,
265+
elevation = 2.dp
266+
) {
267+
ColorPickerRectHueValueHSV(
268+
modifier = Modifier,
269+
initialColor = initialColor,
270+
selectionRadius = selectionRadius
271+
) {
272+
color = it
273+
}
274+
}
275+
}
276+
}
143277

278+
@Composable
279+
fun ColorPickerHSRectHSLDialog(
280+
modifier: Modifier = Modifier,
281+
initialColor: Color,
282+
selectionRadius: Dp = 8.dp,
283+
dialogBackgroundColor: Color = Color.White,
284+
dialogShape: Shape = RoundedCornerShape(5.dp),
285+
onDismiss: (Color) -> Unit
286+
) {
144287

288+
var color by remember { mutableStateOf(initialColor.copy()) }
289+
290+
Dialog(
291+
onDismissRequest = {
292+
onDismiss(color)
293+
}
294+
) {
295+
Surface(
296+
modifier = modifier,
297+
color = dialogBackgroundColor,
298+
shape = dialogShape,
299+
elevation = 2.dp
300+
) {
301+
ColorPickerRectHueSaturationHSL(
302+
modifier = Modifier,
303+
initialColor = initialColor,
304+
selectionRadius = selectionRadius
305+
) {
306+
color = it
307+
}
308+
}
309+
}
310+
}
311+
312+
@Composable
313+
fun ColorPickerHLRectHSLDialog(
314+
modifier: Modifier = Modifier,
315+
initialColor: Color,
316+
selectionRadius: Dp = 8.dp,
317+
dialogBackgroundColor: Color = Color.White,
318+
dialogShape: Shape = RoundedCornerShape(5.dp),
319+
onDismiss: (Color) -> Unit
320+
) {
321+
322+
var color by remember { mutableStateOf(initialColor.copy()) }
323+
324+
Dialog(
325+
onDismissRequest = {
326+
onDismiss(color)
327+
}
328+
) {
329+
Surface(
330+
modifier = modifier,
331+
color = dialogBackgroundColor,
332+
shape = dialogShape,
333+
elevation = 2.dp
334+
) {
335+
ColorPickerRectHueLightnessHSL(
336+
modifier = Modifier,
337+
initialColor = initialColor,
338+
selectionRadius = selectionRadius
339+
) {
340+
color = it
341+
}
342+
}
343+
}
344+
}

colorpicker/src/main/java/com/smarttoolfactory/colorpicker/picker/ColorPickerCircleValueHSV.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import androidx.compose.ui.graphics.Color
99
import androidx.compose.ui.unit.Dp
1010
import androidx.compose.ui.unit.dp
1111
import com.smarttoolfactory.colorpicker.model.ColorModel
12-
import com.smarttoolfactory.colorpicker.selector.HueSaturationSelectorCircleHSV
12+
import com.smarttoolfactory.colorpicker.selector.SelectorCircleHueSaturationHSV
1313
import com.smarttoolfactory.colorpicker.slider.SliderCircleColorDisplayValueHSV
1414
import com.smarttoolfactory.colorpicker.util.colorToHSV
1515
import com.smarttoolfactory.colorpicker.widget.HexDisplay
@@ -43,7 +43,7 @@ fun ColorPickerCircleValueHSV(
4343
modifier = modifier,
4444
horizontalAlignment = Alignment.CenterHorizontally
4545
) {
46-
HueSaturationSelectorCircleHSV(
46+
SelectorCircleHueSaturationHSV(
4747
modifier = Modifier.padding(8.dp),
4848
hue = hue,
4949
saturation = saturation,

0 commit comments

Comments
 (0)