def cover.scenes

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

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

4407# Scenes painted directly keep rows-only fill masks (trees false); scenes
4408# sampled per pixel (pattern tiles, filter and mask rasters) need trees.
4409def cover.scenes(xs: List<&2, Scene<Brush>>, +frame: Raster, +sub: U32, +trees: Bool) -> List<&2, Scene<Brush>>:
4410  match xs:
4411    case Nil{}: Nil{}
4412    case Con{Scene{es, box, inv, style, opacity, kids, id, ink, clip, outline, fill, maskNodes, maskMode, markerNodes, coverage, effect}, rest}:
4413      +iv = inv
4414      +st = style
4415      +m = matrix.inverse(iv)
4416      +half = (raster.scale(frame) * 0.5 + 0.01 : F32)
4417      +ik = ink
4418      Con{Scene{Nil{}, bounds.expand(box, cover.reach(iv, half)), iv, st, opacity, cover.scenes(kids, frame, sub, trees), id, cover.paint(ik, m, frame, sub, nodes => f => n => cover.scenes(nodes, f, n, True{}), nodes => f => n => cover.scenes(nodes, f, n, True{})), cover.image.clip(paint.fill(ik), cover.clip(clip, frame, sub), iv, frame, sub), cover.stroke.if(style.strokes(st), outline, frame, sub, trees),
4419        cover.fill.if(style.fills(st), fill, es, m, cover.rule(st), frame, sub, trees), cover.scenes(maskNodes, frame, sub, trees), maskMode, cover.scenes(markerNodes, frame, sub, trees), bounds.expand(coverage, half), effect}, cover.scenes(rest, frame, sub, trees)}

Uses (22)

Used by (2)