|
FastLED 3.10.6
|
|
constexpr |
The two things Channel needs from the colour pipeline, reached through pointers rather than by name.
This is a pay-for-what-you-use seam, not indirection for its own sake. Naming buildPipelineForBinding and ColorManagedPixelSource directly from Channel made the whole pipeline reachable from show() – decode, the transfer LUTs, primaries to XYZ, adaptation, the gamut map, OKLab, the cube root, the device solve – so --gc-sections could not drop any of it and every sketch paid about 3.5 KB of flash whether or not it ever called setColorProfile.
Behind these pointers, the only thing that references the pipeline is the installer, and the only thing that calls the installer is setColorProfile. A program that never binds a profile never mentions it, and the linker takes the lot. Bytes Channel must reserve for the managed source and its iterator.
Taken with sizeof rather than guessed, so the two cannot drift. Naming the types for their size does not defeat the elision: a header declares, and it is references to the definitions that keep code alive.
Definition at line 62 of file pipeline_binding.h.