docs / stdlib / math

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

aot

  1. Components
  2. Scope
  3. Scoped

codec

  1. Base32
  2. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. Fiber
  5. FiberLocal
  6. Lock
  7. Mutex
  8. RwLock
  9. Semaphore
  10. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. NotProvidedException
  4. RecoverableException
  5. ScopedBuildFailedException
  6. ScopeNotActiveException
  7. Throwable
  8. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. DefaultHasher
  2. Hash
  3. SipHash
  4. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. IpAddress
  4. Server
  5. ServerBuilder
  6. SocketAddress
  7. TcpListener
  8. TcpStream
  9. UdpSocket

io / net / dns

  1. Dns

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. CompressStream
  3. DecompressionLimitException
  4. Decompressor
  5. Encoder
  6. Schema
  7. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream
  4. KernelTimer

xpu / mesh

  1. MeshSimplifier

Color

cajeta.math.Color — an RGBA color, the value type a renderer passes between sRGB-encoded texture/UI space and linear light space. A record over four float32 channels (r, g, b, a), each in [0,1]: structural equality (two colors with equal channels compare ==), and the flat no-header layout — the struct is just the four channel slots, no vtable. Construct through the constructor (Color(r, g, b, a)), or with a record binding — named (Color { r: ..., g: ..., b: ..., a: ... }) or positional in declared order (Color { r, g, b, a }); the fields declare no defaults, so all four channels must be given. Shading must happen in linear light, but textures and UI colors are usually sRGB-encoded: toLinear() decodes sRGB → linear, toSrgb() encodes linear → sRGB, both using the standard IEC 61966-2-1 piecewise transfer function. Alpha is linear and passes through unchanged.

package snip.color;

import cajeta.math.Color;

public final class Demo {
    public static void run() {
        Color albedo = stack Color(0.5f, 0.25f, 0.1f, 1.0f);  // sRGB from a texture
        Color same = Color { r: 0.5f, g: 0.25f, b: 0.1f, a: 1.0f };
        boolean eq = albedo == same;                          // true — structural
        Color lit = albedo.toLinear();                        // shade in linear light
        Color enc = lit.toSrgb();                             // encode for the display
        return;
    }
}

Methods

Signature
Color(float32 r, float32 g, float32 b, float32 a) ⚑Build a color from its r, g, b, a channels, each in [0,1]
float32 r()Red channel
float32 g()Green channel
float32 b()Blue channel
float32 a()Alpha channel
static float32 srgbToLinearChannel(float32 c)Decode one sRGB-encoded channel to linear light
static float32 linearToSrgbChannel(float32 c)Encode one linear-light channel to sRGB
Color toLinear()This color decoded from sRGB to linear light (alpha unchanged)
Color toSrgb()This color encoded from linear light to sRGB (alpha unchanged)

⚑ = @EntryPoint

See also

Source: docs/stdlib/math/Color.md · 1 min read · 284 words