FastLED 3.10.6
Loading...
Searching...
No Matches

◆ solveRgbDrivesQ16()

void fl::solveRgbDrivesQ16 ( const EmitterSolveMatrixQ16 & matrix,
const i32(&) xyz[3],
i32(&) drives[3] )

One pixel: XYZ in s16.16 to three emitter drives in s16.16.

Drives may come out negative for a target outside the device gamut. That is deliberate: clamping belongs to the gamut mapper, and silently clipping here would hide out-of-gamut targets from it.

Definition at line 380 of file device_solve.cpp.hpp.

381 {
382 const i32 in[3] = {xyz[0], xyz[1], xyz[2]};
383 drives[0] = dotSolveRowQ16(matrix.m[0], in);
384 drives[1] = dotSolveRowQ16(matrix.m[1], in);
385 drives[2] = dotSolveRowQ16(matrix.m[2], in);
386}

References FL_NO_EXCEPT, and fl::EmitterSolveMatrixQ16::m.

Referenced by allocateEmitterDrivesQ16(), allocateTwoWhiteDrivesQ16(), buildGamutMapFromSolveQ16(), buildGamutMapRgbwFromSolveQ16(), buildGamutMapRgbwwFromSolveQ16(), buildTwoWhiteAllocationFromSolveQ16(), buildWhiteAllocationFromSolveQ16(), mapAndSolveDrivesQ16(), fl::anonymous_namespace{gamut_map.cpp.hpp}::RgbFeasible::operator()(), processPixelLinearQ16(), and processPixelWideLinearQ16().

+ Here is the caller graph for this function: