def brush.sample

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

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

2376def brush.sample(brush: Brush, +p: Point, +paintPoint: Point, next: List<&2, Scene<Brush>> -> Point -> Point -> Img.Color) -> Img.Color:
2377  match brush:
2378    case Solid{c, source}: c
2379    case Bitmap{raster, inv, nearest}:
2380      +mat = inv
2381      bitmap.sample(raster, matrix.point(mat, p), matrix.point(mat, paintPoint), nearest)
2382    case PendingContext{stroke, opacity}: Img.clear()
2383    case ContextPaint{source, matrix, opacity}:
2384      +mat = matrix
2385      color.fade(brush.sample(source, matrix.point(mat, p), matrix.point(mat, paintPoint), next), opacity)
2386    case Pattern{inv, w, h, opacity, nodes}:
2387      +matrix = inv
2388      pattern.at(matrix.point(matrix, p), matrix.point(matrix, paintPoint), w, h, opacity, nodes, next)
2389    case Tile{raster, inv, w, h, opacity, u, v, grid}: tile.sample(raster, matrix.point(inv, p), w, h, opacity, u, v, grid)
2390    case Gradient{inv, radial, start, end, radius, fr, stops, spread, opacity, linear}:
2391      +q = matrix.point(inv, paintPoint)
2392      +a = start
2393      +b = end
2394      gradient.at(U.choose(Parameter, radial, radial.parameter(q, a, b, radius, fr), linear.parameter(q, a, b)),
2395        stops, spread, opacity, linear)

Uses (16)

Used by (2)