MCPcopy Create free account
hub / github.com/FastLED/FastLED / hsv2rgb_fullspectrum

Function hsv2rgb_fullspectrum

src/hsv2rgb.cpp.hpp:495–511  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

493}
494
495void hsv2rgb_fullspectrum( const CHSV& hsv, CRGB& rgb) {
496 const auto f = [](const int n, const fl::u8 h) -> fl::u32 {
497 constexpr int kZero = 0 << 8;
498 constexpr int kOne = 1 << 8;
499 constexpr int kFour = 4 << 8;
500 constexpr int kSix = 6 << 8;
501
502 const int k = ((n << 8) + 6*h) % kSix;
503 const int k2 = kFour - k;
504 return fl::max(kZero, fl::min(kOne, fl::min(k, k2)));
505 };
506
507 const fl::u32 chroma = hsv.v * hsv.s / 255;
508 rgb.r = hsv.v - ((chroma * f(5, hsv.h)) >> 8);
509 rgb.g = hsv.v - ((chroma * f(3, hsv.h)) >> 8);
510 rgb.b = hsv.v - ((chroma * f(1, hsv.h)) >> 8);
511}
512
513/// Inline version of hsv2rgb_fullspectrum which returns a CRGB object.
514CRGB hsv2rgb_fullspectrum( const CHSV& hsv) {

Callers 3

hsv2rgb_dispatchFunction · 0.85
FL_TEST_FILEFunction · 0.85
loopFunction · 0.85

Calls 1

maxFunction · 0.85

Tested by 1

loopFunction · 0.68