API Geometry

Les API Geometry vous permettent de créer des outils interactifs comme des gommes et mécanismes de sélection.

Pour illustrer une application pratique des API Geometry, explorez les ressources suivantes : exemple d'implémentation de la gomme.

Gomme complète

fun eraseWholeStrokes(
    eraserBox: ImmutableBox,
    finishedStrokesState: MutableState<Set<Stroke>>,
) {
    val threshold = 0.1f

    val strokesToErase = finishedStrokesState.value.filter { stroke ->
        stroke.shape.computeCoverageIsGreaterThan(
            box = eraserBox,
            coverageThreshold = threshold,
        )
    }
    if (strokesToErase.isNotEmpty()) {
        Snapshot.withMutableSnapshot {
            finishedStrokesState.value -= strokesToErase
        }
    }
}

Pour une implémentation Compose, veillez à déclencher une recomposition afin que les traits soient effectivement supprimés. Par exemple, vous pouvez utiliser rememberCoroutineScope dans votre composable et transmettez le champ d'application de coroutine à votre écouteur tactile, qui vous permet de modifier finishedStrokesState dans le champ d'application de Compose.