~/bend-docscommunity

lib.bend checks

raw source on the hub · import 0xedb848fc7835fe5f9d34e575a7612788/lib.bend as Lib

ColorSample — Color layer 3: sample RGB within a ColorRange using Prng.

Hub deps (own CAS ids; not folded into this package's published blob): Color 0xc6ecb72f45a1b2f83318765698582f7f Prng 0xfd7037736e4fa1794a671d0278638da7

Maybe gate is U32-only: Color.range_valid uses F32.is_le on alpha, which is opaque to definitional equality. Callers who need alpha ordering should still call Color.range_valid first. No Hsl range type in Color layer 1 → RGB only. Base + hub imports only; no termination escapes.

3 imports
import Base
import 0xc6ecb72f45a1b2f83318765698582f7f/lib.bend as Color
import 0xfd7037736e4fa1794a671d0278638da7/lib.bend as Prng

Definitions

def ColorSample.span source · line 16 · raw

@+lo:U32 -> @+hi:U32 -> U32

Inclusive U32 width. Precondition: lo <= hi (enforced by the Maybe gate).

def ColorSample.channel.go source · line 19 · raw

@+lo:U32 -> @r:Pair(U32, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng) -> Pair(U32, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)

def ColorSample.channel source · line 24 · raw

@p:0xfd7037736e4fa1794a671d0278638da7/lib.Prng -> @+lo:U32 -> @+hi:U32 -> Pair(U32, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)

Uniform draw in lo..=hi via next_bounded(span).

def ColorSample.alpha.go source · line 27 · raw

@+lo:F32 -> @+hi:F32 -> @r:Pair(F32, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng) -> Pair(F32, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)

def ColorSample.alpha source · line 32 · raw

@p:0xfd7037736e4fa1794a671d0278638da7/lib.Prng -> @+lo:F32 -> @+hi:F32 -> Pair(F32, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)

Lerp alpha with next_f32 in [0, 1). Always advances the PRNG.

def ColorSample.after_a.go source · line 37 · raw

@+r:U32 -> @+g:U32 -> @+b:U32 -> @ra:Pair(F32, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng) -> Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)

Thread PRNG through r → g → b → a. Helpers are ordered bottom-up; each match scrutinizes a parameter (Bend forbids matching computed pairs inline).

def ColorSample.after_b.go source · line 43 · raw

@+aa:F32 -> @+ba:F32 -> @+r:U32 -> @+g:U32 -> @rb:Pair(U32, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng) -> Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)

def ColorSample.after_g.go source · line 50 · raw

@+ab:U32 -> @+aa:F32 -> @+bb:U32 -> @+ba:F32 -> @+r:U32 -> @rg:Pair(U32, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng) -> Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)

def ColorSample.after_r.go source · line 58 · raw

@+ag:U32 -> @+ab:U32 -> @+aa:F32 -> @+bg:U32 -> @+bb:U32 -> @+ba:F32 -> @+r:U32 -> @p1:0xfd7037736e4fa1794a671d0278638da7/lib.Prng -> Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)

def ColorSample.rgb.go source · line 65 · raw

@+ar:U32 -> @+ag:U32 -> @+ab:U32 -> @+aa:F32 -> @+br:U32 -> @+bg:U32 -> @+bb:U32 -> @+ba:F32 -> @rr:Pair(U32, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng) -> Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)

def ColorSample.rgb.from_ends source · line 73 · raw

@+ar:U32 -> @+ag:U32 -> @+ab:U32 -> @+aa:F32 -> @+br:U32 -> @+bg:U32 -> @+bb:U32 -> @+ba:F32 -> @p:0xfd7037736e4fa1794a671d0278638da7/lib.Prng -> Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)

def ColorSample.rgb.with_ends source · line 81 · raw

@+ar:U32 -> @+ag:U32 -> @+ab:U32 -> @+aa:F32 -> @+br:U32 -> @+bg:U32 -> @+bb:U32 -> @+ba:F32 -> @p:0xfd7037736e4fa1794a671d0278638da7/lib.Prng -> Maybe<&1, Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)>

Gate on U32 min<=max for r/g/b; sample when ok. Pair payload ⇒ Maybe<&1, …>.

def ColorSample.rgb source · line 92 · raw

@range:0xc6ecb72f45a1b2f83318765698582f7f/lib.ColorRange -> @p:0xfd7037736e4fa1794a671d0278638da7/lib.Prng -> Maybe<&1, Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)>

def ColorSample.range_ok_u32 source · line 100 · raw

@r:0xc6ecb72f45a1b2f83318765698582f7f/lib.ColorRange -> Bool

Same U32 predicate as the Maybe gate (for laws / callers).

def ColorSample.unwrap_rgb source · line 109 · raw

@m:Maybe<&1, Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)> -> 0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb

Projection helper for laws. None{} yields black (laws only call on Some).