def clip.block

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

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

5239def clip.block(c: Clip, +x0: U32, +y0: U32, +x1: U32, +y1: U32) -> F32:
5240  match c:
5241    case ClipAll{}: 1.0
5242    case ClipShape{es, inv, even, cover}:
5243      +cov = cover
5244      cover.block.if(cover.present(cov), cov, x0, y0, x1, y1)
5245    case ClipUnion{a, b}:
5246      +u = clip.block(a, x0, y0, x1, y1)
5247      +v = clip.block(b, x0, y0, x1, y1)
5248      U.choose(F32, F32.is_lt(u, 0.0) || F32.is_lt(v, 0.0), F32.neg(1.0), (u + v - u * v : F32))
5249    case ClipIntersect{a, b}:
5250      +u = clip.block(a, x0, y0, x1, y1)
5251      +v = clip.block(b, x0, y0, x1, y1)
5252      U.choose(F32, F32.is_lt(u, 0.0) || F32.is_lt(v, 0.0), F32.neg(1.0), (u * v : F32))

Uses (12)

Used by (1)