def clip.cover

gralha-svg-render@0.1.0.1 · svg.bend:2478

import gralha-svg-render@0.1.0.1/svg.bend as Svg
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U

2478# Clip coverage: unions add as independent areas, intersections multiply.
2479def clip.cover(c: Clip, +p: Point) -> F32:
2480  match c:
2481    case ClipAll{}: 1.0
2482    case ClipShape{es, inv, even, cover}:
2483      +cov = cover
2484      U.branch(F32, cover.present(cov), _ => cover.at(cov, p), _ => U.choose(F32, edge.tree.inside(es, matrix.point(inv, p), even), 1.0, 0.0))
2485    case ClipUnion{a, b}:
2486      +u = clip.cover(a, p)
2487      +v = clip.cover(b, p)
2488      (u + v - u * v : F32)
2489    case ClipIntersect{a, b}: (clip.cover(a, p) * clip.cover(b, p) : F32)

Uses (12)

Used by (1)