unsigned int xy(unsigned int x, unsigned int y)
Shared colorimetric primitives reusable by the RGBW and (future) RGB colorimetric paths (issue #3255)...
i32 dotRowQ16(const i32(&row)[3], const i32(&v)[3]) FL_NO_EXCEPT
One s16.16 matrix row against a vector, rounded and saturated.
i64 roundedDivideQ16(i64 numerator, i64 denominator) FL_NO_EXCEPT
The s16.16 building blocks the bind-time builders share.
bool xyzColumnQ16(const i32(&xy)[2], i32 luminance, i64(&column)[3]) FL_NO_EXCEPT
XYZ of chromaticity xy at luminance luminance, all s16.16; false for a non-positive or out-of-simplex...
Compile-time linker keep-alive hook for a single fl::Bus.
bool buildRgbSolveMatrixFromQ16(const EmitterChromaticitiesQ16 &profile, EmitterSolveMatrixQ16 *out) FL_NO_EXCEPT
Build the inverse emitter matrix from a Q16 profile, without floats.
constexpr int type_rank< T >::value
InputGamut g FL_NO_EXCEPT
bool invert3x3Q16(const i32(&in)[3][3], i32(&out)[3][3]) FL_NO_EXCEPT
Inverse of an s16.16 3x3 matrix, in s16.16, computed without floats.
bool buildRgbSolveMatrixQ16(const colorimetric_response::EmitterProfile &profile, EmitterSolveMatrixQ16 *out) FL_NO_EXCEPT
Invert the emitter matrix for a three-emitter profile.
bool q16FromFloatBits(float value, i32 *out) FL_NO_EXCEPT
s16.16 of a float, rounded to nearest, computed from its IEEE-754 bits with integer arithmetic only –...
void solveRgbDrivesQ16(const EmitterSolveMatrixQ16 &matrix, const i32(&xyz)[3], i32(&drives)[3]) FL_NO_EXCEPT
One pixel: XYZ in s16.16 to three emitter drives in s16.16.
Base definition for an LED controller.
i32 lum_r
Peak luminance per emitter relative to source white, s16.16.
i32 xy_r[2]
CIE 1931 xy per emitter, s16.16, so 0.64 is 41943.
Inverse emitter matrix in s16.16, mapping XYZ to three emitter drives.
A three-emitter profile with every field in s16.16.