321 {
322 int center = int(m.position);
323
324
325 static const float kGaussian[] = {0.15f, 0.60f, 1.0f, 0.60f, 0.15f};
327 int idx = center +
offset;
329 continue;
330 float weight = kGaussian[
offset + 2];
331 u8 bri =
clamp_u8(255.0f * m.intensity * weight);
332
333 bri = scale8(bri,
random8(153, 255));
337 }
338
339
340 float tailLen = m.tailLength();
341 int tailPixels = int(tailLen);
342 for (int i = 1; i <= tailPixels; ++i) {
343 int idx = center - i;
344 if (idx < 0)
345 break;
347 continue;
348
349
350 float t = float(i) / float(tailPixels);
353
354 float bri = (1.0f -
t *
t) * m.intensity;
355 tailColor.nscale8(
clamp_u8(bri * 255.0f));
357 }
358}
static void writeMax(CRGB &dst, const CRGB &src)
fl::vector< CRGB > mTrailBuffer
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
LIB8STATIC fl::u8 random8() FL_NOEXCEPT
Generate an 8-bit random number.
u8 fract8
Fixed-Point Fractional Types.
CRGB blend(const CRGB &p1, const CRGB &p2, fract8 amountOfP2)
CRGB & nscale8(u8 scaledown) FL_NOEXCEPT
Scale down a RGB to N/256ths of its current brightness, using "plain math" dimming rules.