Interfejsy API geometrii

Interfejsy Geometry API umożliwiają tworzenie interaktywnych narzędzi, takich jak gumki i mechanizmy wyboru.

Aby zilustrować praktyczne zastosowanie interfejsów Geometry API, zapoznaj się z tym przykładem implementacji gumki.

Gumka do pełnej kreski

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

W przypadku implementacji Compose pamiętaj, aby wywołać ponowne skompilowanie, aby zmiany zostały skutecznie usunięte. Można na przykład użyć atrybutu rememberCoroutineScope w funkcji kompozycyjnej i przekaż zakres współrzędny do funkcji detektor dotyku, który umożliwia modyfikację elementu finishedStrokesState w zakresie z kompozycji.