def filter.op.sample

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

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
import gralha-image@0.1.0.1/image.bend as Img

4713def filter.op.sample(op: FilterOp, +a: FilterInput, +b: FilterInput, +p: Point, +linear: Bool) -> Img.Color:
4714  match op:
4715    case FilterCopy{}: filter.input.color(a, p, linear)
4716    case FilterFlood{c}: c
4717    case FilterOffset{delta}: filter.input.color(a, point.sub(p, delta), linear)
4718    case FilterMatrix{rows}: filter.matrix(rows, filter.input.color(a, p, linear))
4719    case FilterTransfer{r, g, b, alpha}: filter.transfer(r, g, b, alpha, filter.input.color(a, p, linear))
4720    case FilterComposite{kind, k1, k2, k3, k4}: filter.composite(filter.input.color(a, p, linear), filter.input.color(b, p, linear), kind, k1, k2, k3, k4)
4721    case FilterBlend{kind}: filter.blend(filter.input.color(a, p, linear), filter.input.color(b, p, linear), kind)
4722    case FilterMerge{inputs}: filter.merge(inputs, p, linear, Img.clear())
4723    case FilterBlur{kernel}: filter.convolve(kernel, a, p, linear, Img.clear())
4724    case FilterConvolution{spec}: filter.convolution.sample(spec, a, p, linear)
4725    case FilterMorphology{dilate, radius, direction}:
4726      +n = radius
4727      +expand = dilate
4728      filter.morphology.sample(U32.to_nat((n * 2 + 1 : U32)), F32.neg(U32.to_f32(n)), direction, expand, a, p, linear, U.choose(Img.Color, expand, Img.clear(), Img.Color{1.0, 1.0, 1.0, 1.0}))

Uses (23)

Used by (1)