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