FastLED 3.10.6
Loading...
Searching...
No Matches
device_solve.cpp.hpp File Reference
+ Include dependency graph for device_solve.cpp.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  fl
 Base definition for an LED controller.
 
namespace  fl::anonymous_namespace{device_solve.cpp.hpp}
 
namespace  fl::detail
 Compile-time linker keep-alive hook for a single fl::Bus.
 

Functions

bool fl::buildRgbSolveMatrixFromQ16 (const EmitterChromaticitiesQ16 &profile, EmitterSolveMatrixQ16 *out) FL_NO_EXCEPT
 Build the inverse emitter matrix from a Q16 profile, without floats.
 
bool fl::buildRgbSolveMatrixQ16 (const colorimetric_response::EmitterProfile &profile, EmitterSolveMatrixQ16 *out) FL_NO_EXCEPT
 Invert the emitter matrix for a three-emitter profile.
 
bool fl::anonymous_namespace{device_solve.cpp.hpp}::cofactorQ32 (i32 e, i32 i_, i32 f, i32 h, i64 *out) FL_NO_EXCEPT
 e * i - f * h, or false if any part of it leaves i64.
 
i64 fl::anonymous_namespace{device_solve.cpp.hpp}::divideCoefficientQ16 (i64 cofactor_q32, i64 determinant_q48) FL_NO_EXCEPT
 round(cofactor_q32 * 2^32 / determinant_q48), in s16.16, without a 128-bit intermediate.
 
i32 fl::detail::dotRowQ16 (const i32(&row)[3], const i32(&v)[3]) FL_NO_EXCEPT
 One s16.16 matrix row against a vector, rounded and saturated.
 
i32 fl::anonymous_namespace{device_solve.cpp.hpp}::dotSolveRowQ16 (const i32(&row)[3], const i32(&v)[3]) FL_NO_EXCEPT
 
bool fl::anonymous_namespace{device_solve.cpp.hpp}::emitterColumnQ16 (const i32(&xy)[2], i32 luminance, i64(&column)[3]) FL_NO_EXCEPT
 One emitter's XYZ column at its own luminance, all in s16.16.
 
bool fl::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 fl::anonymous_namespace{device_solve.cpp.hpp}::productFitsI64 (i64 a, i64 b) FL_NO_EXCEPT
 Does a * b fit an i64?
 
bool fl::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 – no soft-float helper on a part without an FPU (FastLED#4458).
 
i64 fl::anonymous_namespace{device_solve.cpp.hpp}::roundedDivI64 (i64 numerator, i64 denominator) FL_NO_EXCEPT
 Nearest integer, halves away from zero.
 
i64 fl::anonymous_namespace{device_solve.cpp.hpp}::roundedDivideQ16 (i64 numerator, i64 denominator) FL_NO_EXCEPT
 Nearest integer of numerator / denominator, halves away from zero.
 
i64 fl::detail::roundedDivideQ16 (i64 numerator, i64 denominator) FL_NO_EXCEPT
 The s16.16 building blocks the bind-time builders share.
 
void fl::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.
 
bool fl::anonymous_namespace{device_solve.cpp.hpp}::sumFitsI64 (i64 a, i64 b) FL_NO_EXCEPT
 Does a + b fit an i64, for operands already known to be in range?
 
bool fl::detail::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 chromaticity or a non-positive luminance.
 

Variables

constexpr i64 fl::anonymous_namespace{device_solve.cpp.hpp}::kI64Max = 9223372036854775807LL
 
constexpr i32 fl::anonymous_namespace{device_solve.cpp.hpp}::kMaxCoefficient = 21845
 Largest coefficient magnitude the build accepts, in whole units.
 
constexpr i64 fl::anonymous_namespace{device_solve.cpp.hpp}::kQ16One = 65536
 One, in s16.16.