FastLED 3.9.15
Loading...
Searching...
No Matches

◆ interp8()

template<typename T>
T fl::LUT< T >::interp8 ( u8 alpha)
inline

Definition at line 59 of file lut.h.

59 {
60 if (length == 0)
61 return T();
62 if (alpha == 0)
63 return data[0];
64 if (alpha == 255)
65 return data[length - 1];
66
67 // treat alpha/255 as fraction, scale to [0..length-1]
68 u32 maxIndex = length - 1;
69 u32 pos = u32(alpha) * maxIndex; // numerator
70 u32 idx0 = pos / 255; // floor(position)
71 u32 idx1 = idx0 < maxIndex ? idx0 + 1 : maxIndex;
72 u8 blend = pos % 255; // fractional part
73
74 const T &a = data[idx0];
75 const T &b = data[idx1];
76 // a + (b-a) * blend/255
77 return a + (b - a) * blend / 255;
78 }
T * data
Definition lut.h:103
u32 length
Definition lut.h:104
Definition lut.h:35