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).