Skip to content

Commit 4c7dcc2

Browse files
committed
Extract logic to view model
1 parent 40dbb24 commit 4c7dcc2

File tree

3 files changed

+39
-43
lines changed

3 files changed

+39
-43
lines changed

canvas/src/main/java/dev/arkbuilders/canvas/presentation/drawing/EditManager.kt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,6 +744,23 @@ class EditManager {
744744
_isResizeMode.value = !isResizeMode.value
745745
}
746746

747+
fun enterResizeMode() {
748+
if (!isEligibleForResizeMode())
749+
return
750+
toggleResizeMode()
751+
if (isResizeMode.value) {
752+
setBackgroundImage2()
753+
val imgBitmap = getEditedImage()
754+
backgroundImage.value = imgBitmap
755+
resizeOperation.init(
756+
imgBitmap.asAndroidBitmap()
757+
)
758+
return
759+
}
760+
cancelResizeMode()
761+
scaleToFit()
762+
}
763+
747764
fun cancelResizeMode() {
748765
backgroundImage.value = backgroundImage2.value
749766
editMatrix.reset()
@@ -753,6 +770,18 @@ class EditManager {
753770
_isBlurMode.value = !isBlurMode.value
754771
}
755772

773+
fun enterBlurMode(strokeSliderExpanded: Boolean) {
774+
if (isEligibleForBlurMode() && !strokeSliderExpanded) toggleBlurMode()
775+
if (isBlurMode.value) {
776+
setBackgroundImage2()
777+
backgroundImage.value = getEditedImage()
778+
blurOperation.init()
779+
return
780+
}
781+
blurOperation.cancel()
782+
scaleToFit()
783+
}
784+
756785
fun setPaintStrokeWidth(strokeWidth: Float) {
757786
drawPaint.value.strokeWidth = strokeWidth
758787
}

canvas/src/main/java/dev/arkbuilders/canvas/presentation/edit/EditScreen.kt

Lines changed: 5 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ import androidx.compose.ui.ExperimentalComposeUiApi
5050
import androidx.compose.ui.Modifier
5151
import androidx.compose.ui.draw.clip
5252
import androidx.compose.ui.graphics.Color
53-
import androidx.compose.ui.graphics.asAndroidBitmap
5453
import androidx.compose.ui.graphics.vector.ImageVector
5554
import androidx.compose.ui.input.pointer.pointerInteropFilter
5655
import androidx.compose.ui.layout.onSizeChanged
@@ -570,14 +569,7 @@ private fun EditMenuContent(
570569
viewModel.strokeSliderExpanded = !viewModel.strokeSliderExpanded
571570
},
572571
imageVector = ImageVector.vectorResource(R.drawable.ic_line_weight),
573-
tint = if (
574-
!editManager.isRotateMode.value &&
575-
!editManager.isResizeMode.value &&
576-
!editManager.isCropMode.value &&
577-
!editManager.isEyeDropperMode.value &&
578-
!editManager.isBlurMode.value
579-
) editManager.paintColor.value
580-
else Color.Black,
572+
tint = if (editManager.isEligibleForUndoOrRedo()) editManager.paintColor.value else Color.Black,
581573
contentDescription = null
582574
)
583575
Icon(
@@ -674,24 +666,8 @@ private fun EditMenuContent(
674666
.size(40.dp)
675667
.clip(CircleShape)
676668
.clickable {
677-
editManager.apply {
678-
if (isEligibleForResizeMode()
679-
)
680-
toggleResizeMode()
681-
else return@clickable
682-
viewModel.menusVisible = !isResizeMode.value
683-
if (isResizeMode.value) {
684-
setBackgroundImage2()
685-
val imgBitmap = viewModel.getEditedImage()
686-
backgroundImage.value = imgBitmap
687-
resizeOperation.init(
688-
imgBitmap.asAndroidBitmap()
689-
)
690-
return@clickable
691-
}
692-
cancelResizeMode()
693-
scaleToFit()
694-
}
669+
editManager.enterResizeMode()
670+
viewModel.menusVisible = !editManager.isResizeMode.value
695671
},
696672
imageVector = ImageVector
697673
.vectorResource(R.drawable.ic_aspect_ratio),
@@ -707,19 +683,7 @@ private fun EditMenuContent(
707683
.size(40.dp)
708684
.clip(CircleShape)
709685
.clickable {
710-
editManager.apply {
711-
if (isEligibleForBlurMode() &&
712-
!viewModel.strokeSliderExpanded
713-
) toggleBlurMode()
714-
if (isBlurMode.value) {
715-
setBackgroundImage2()
716-
backgroundImage.value = viewModel.getEditedImage()
717-
blurOperation.init()
718-
return@clickable
719-
}
720-
blurOperation.cancel()
721-
scaleToFit()
722-
}
686+
editManager.enterBlurMode(viewModel.strokeSliderExpanded)
723687
},
724688
imageVector = ImageVector
725689
.vectorResource(R.drawable.ic_blur_on),
@@ -731,9 +695,7 @@ private fun EditMenuContent(
731695
)
732696
}
733697
}
734-
viewModel.bottomButtonsScrollIsAtStart.value = scrollState.value == 0
735-
viewModel.bottomButtonsScrollIsAtEnd.value =
736-
scrollState.value == scrollState.maxValue
698+
viewModel.onBottomButtonStateChange(scrollState.value, 0, scrollState.maxValue)
737699
}
738700

739701
@Composable

canvas/src/main/java/dev/arkbuilders/canvas/presentation/edit/EditViewModel.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ class EditViewModel(
6666
private val _usedColors = mutableListOf<Color>()
6767
val usedColors: List<Color> = _usedColors
6868

69+
fun onBottomButtonStateChange(scrollStateValue: Int, minStateValue: Int = 0, maxStateValue: Int) {
70+
bottomButtonsScrollIsAtStart.value = scrollStateValue == minStateValue
71+
bottomButtonsScrollIsAtEnd.value = scrollStateValue == maxStateValue
72+
}
73+
6974
private fun loadResource(path: Path) {
7075
viewModelScope.launch {
7176
if (path.name.endsWith(".png")) {

0 commit comments

Comments
 (0)