Skip to content

Commit d8ae066

Browse files
bug fixes
* fix MorphLayout not disabling bug * change zoom level on ZoomModifier
1 parent 774fd12 commit d8ae066

File tree

5 files changed

+32
-99
lines changed

5 files changed

+32
-99
lines changed

image/src/main/java/com/smarttoolfactory/image/transform/MorphLayout.kt

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -138,47 +138,14 @@ private fun MorphLayout(
138138
onUp = onUp
139139
)
140140

141-
// var zoom by remember { mutableStateOf(1f) }
142-
// var offset by remember { mutableStateOf(Offset.Zero) }
143-
144141
val transformModifier = Modifier
145142
.padding(handleRadius)
146143
.fillMaxSize()
147-
// .clipToBounds()
148-
// .graphicsLayer {
149-
// translationX = offset.x
150-
// translationY = offset.y
151-
// scaleX = zoom
152-
// scaleY = zoom
153-
// }
154-
// .pointerInput(Unit) {
155-
// detectPointerTransformGestures(
156-
// requisite = PointerRequisite.GreaterThan,
157-
// numberOfPointers = 1,
158-
// onGesture = { _,
159-
// gesturePan: Offset,
160-
// gestureZoom: Float,
161-
// _,
162-
// _,
163-
// _ ->
164-
// val newScale = (zoom * gestureZoom).coerceIn(1f, 3f)
165-
// val newOffset = offset + gesturePan
166-
// zoom = newScale
167-
//
168-
// val maxX = (size.width * (zoom - 1) / 2f)
169-
// val maxY = (size.height * (zoom - 1) / 2f)
170-
//
171-
// offset = Offset(
172-
// newOffset.x.coerceIn(-maxX, maxX),
173-
// newOffset.y.coerceIn(-maxY, maxY)
174-
// )
175-
// }
176-
// )
177-
// }
178144

179145
ResizeImpl(
180146
modifier = editModifier,
181147
transformModifier = transformModifier,
148+
enabled = enabled,
182149
touchRegionRadius = touchRegionRadius,
183150
rectDraw = rectDraw,
184151
handlePlacement = handlePlacement,
@@ -190,6 +157,7 @@ private fun MorphLayout(
190157
private fun ResizeImpl(
191158
modifier: Modifier,
192159
transformModifier: Modifier,
160+
enabled: Boolean,
193161
touchRegionRadius: Float,
194162
rectDraw: Rect,
195163
handlePlacement: HandlePlacement,
@@ -207,11 +175,15 @@ private fun ResizeImpl(
207175
content()
208176
}
209177

210-
HandleOverlay(
211-
modifier = Modifier.fillMaxSize(),
212-
radius = touchRegionRadius,
213-
rectDraw = rectDraw,
214-
handlePlacement = handlePlacement
215-
)
178+
if (enabled) {
179+
HandleOverlay(
180+
modifier = Modifier.fillMaxSize(),
181+
radius = touchRegionRadius,
182+
rectDraw = rectDraw,
183+
handlePlacement = handlePlacement
184+
)
185+
}
186+
187+
216188
}
217189
}

image/src/main/java/com/smarttoolfactory/image/transform/MorphModifier.kt

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,26 @@ internal fun Modifier.morph(
6060
translationY = transform.translationY
6161
rotationZ = transform.rotation
6262
}
63-
.pointerMotionEvents(Unit,
63+
.pointerMotionEvents(enabled,
6464
onDown = { change ->
6565

66-
val size = with(density) { updatedSize.toSize() }
67-
val position = change.position
68-
69-
touchRegion = getTouchRegion(
70-
position = position,
71-
rect = Rect(offset = Offset.Zero, size = size),
72-
threshold = touchRegionRadius * 2,
73-
handlePlacement = handlePlacement
74-
)
75-
76-
onDown()
77-
66+
if (enabled) {
67+
val size = with(density) { updatedSize.toSize() }
68+
val position = change.position
69+
70+
touchRegion = getTouchRegion(
71+
position = position,
72+
rect = Rect(offset = Offset.Zero, size = size),
73+
threshold = touchRegionRadius * 2,
74+
handlePlacement = handlePlacement
75+
)
76+
onDown()
77+
}
7878
},
7979
onMove = { change ->
80+
81+
if (!enabled) return@pointerMotionEvents
82+
8083
val dragAmount = change.positionChange()
8184

8285
updateTransform(

image/src/main/java/com/smarttoolfactory/image/transform/TranformLayout.kt

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,6 @@ private fun TransformLayout(
111111
)
112112
}
113113

114-
// var innerTransform by remember {
115-
// mutableStateOf(
116-
// transform
117-
// )
118-
// }
119-
120114
var rectDraw by remember {
121115
mutableStateOf(
122116
Rect(
@@ -166,42 +160,6 @@ private fun TransformLayout(
166160
horizontal = handleRadius / abs(outerTransform.scaleX),
167161
vertical = handleRadius / abs(outerTransform.scaleY)
168162
)
169-
// .clipToBounds()
170-
// .graphicsLayer {
171-
// translationX = innerTransform.translationX
172-
// translationY = innerTransform.translationY
173-
// scaleX = innerTransform.scaleX
174-
// scaleY = innerTransform.scaleY
175-
// }
176-
// .pointerInput(Unit) {
177-
// detectPointerTransformGestures(
178-
// requisite = PointerRequisite.GreaterThan,
179-
// numberOfPointers = 1,
180-
// onGesture = { _,
181-
// gesturePan: Offset,
182-
// gestureZoom: Float,
183-
// _,
184-
// _,
185-
// _ ->
186-
//
187-
// val oldZoom = innerTransform.scaleX
188-
// val offset =
189-
// Offset(innerTransform.translationX, innerTransform.translationY)
190-
// val zoom = (oldZoom * gestureZoom).coerceIn(1f, 3f)
191-
// val newOffset = offset + gesturePan
192-
//
193-
// val maxX = (size.width * (zoom - 1) / 2f)
194-
// val maxY = (size.height * (zoom - 1) / 2f)
195-
//
196-
// innerTransform = innerTransform.copy(
197-
// translationX = newOffset.x.coerceIn(-maxX, maxX),
198-
// translationY = newOffset.y.coerceIn(-maxY, maxY),
199-
// scaleX = zoom,
200-
// scaleY = zoom
201-
// )
202-
// }
203-
// )
204-
// }
205163

206164
TransformImpl(
207165
modifier = editModifier,

image/src/main/java/com/smarttoolfactory/image/transform/TransformModifier.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@ internal fun Modifier.transform(
107107
// This is required for not moving edge of draw rect to touch position on move
108108
distanceToEdgeFromTouch =
109109
getDistanceToEdgeFromTouch(touchRegion, rectTemp, touchPositionOnScreen)
110-
}
111110

112-
onDown(currentTransform, rectDraw)
111+
onDown(currentTransform, rectDraw)
112+
}
113113
},
114114
onMove = { change: PointerInputChange ->
115115

image/src/main/java/com/smarttoolfactory/image/util/ZoomUtil.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ internal fun calculateZoom(
2424
}
2525
ZoomLevel.Max -> {
2626
newZoomLevel = ZoomLevel.Min
27-
newZoom = if (min == initial) (min + max.coerceAtMost(3f)) / 2 else min
27+
newZoom = if (min == initial) initial else min
2828
}
2929
else -> {
3030
newZoomLevel = ZoomLevel.Mid
31-
newZoom = initial.coerceAtMost(2f)
31+
newZoom = if (min == initial) (min + max.coerceAtMost(3f)) / 2 else initial
3232
}
3333
}
3434
return Pair(newZoomLevel, newZoom)

0 commit comments

Comments
 (0)