Coverage Summary for Class: RadialDragKt (com.vsevolodganin.clicktrack.utils.compose)
Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
RadialDragKt |
0%
(0/1)
|
0%
(0/3)
|
|
0%
(0/7)
|
0%
(0/80)
|
package com.vsevolodganin.clicktrack.utils.compose
import androidx.compose.foundation.gestures.detectDragGestures
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.input.pointer.PointerInputScope
import kotlin.math.atan2
suspend fun PointerInputScope.detectRadialDragGesture(center: Offset, onRadialDrag: (Float) -> Unit) {
detectDragGestures(
onDrag = { change, _ ->
change.consume()
val angleDiff = angleBetween(change.previousPosition - center, change.position - center)
onRadialDrag.invoke(angleDiff)
},
)
}
private fun angleBetween(from: Offset, to: Offset): Float {
val dot = from.x * to.x + from.y * to.y
val det = from.x * to.y - from.y * to.x
return atan2(det, dot).toDegrees()
}