APIs de geometría

Las APIs de Geometry te permiten crear herramientas interactivas, como borradores y mecanismos de selección.

Para ilustrar la aplicación práctica de las APIs de Geometry, explora el siguiente ejemplo de implementación de borrador.

Borrador de trazo completo

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
        }
    }
}

En el caso de una implementación de Compose, asegúrate de activar una recomposición, de modo que los trazos se quitan eficazmente. Por ejemplo, un enfoque sería usar rememberCoroutineScope en tu elemento componible y pasar el alcance de la corrutina a tu objeto de escucha táctil, lo que te permite modificar finishedStrokesState dentro del alcance de Compose.