def pixels.set
gralha-image@0.1.0.1 · image.bend:51
import gralha-image@0.1.0.1/image.bend as Image
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U
51def pixels.set(+pixels: Pixels, +depth: Nat, +x: U32, +y: U32, +col: Color) -> Pixels:
52 match pixels:
53 case Flat{c}:
54 match depth:
55 case 0n: Flat{col}
56 case 1n+d: pixels.set(Quad{Flat{c}, Flat{c}, Flat{c}, Flat{c}}, 1n+d, x, y, col)
57 case Quad{a, b, c, e}:
58 match depth:
59 case 0n: Flat{col}
60 case 1n+d:
61 +dd = d
62 +half = U32.shln(1, dd)
63 U.branch(Pixels, U32.is_lt(y, half),
64 _ => U.branch(Pixels, U32.is_lt(x, half), _ => pixels.join(pixels.set(a, dd, x, y, col), b, c, e), _ => pixels.join(a, pixels.set(b, dd, (x - half : U32), y, col), c, e)),
65 _ => U.branch(Pixels, U32.is_lt(x, half), _ => pixels.join(a, b, pixels.set(c, dd, x, (y - half : U32), col), e), _ => pixels.join(a, b, c, pixels.set(e, dd, (x - half : U32), (y - half : U32), col))))