23#ifndef FASTLED_HD_COLOR_MIXING
26#define FASTLED_HD_COLOR_MIXING 0
28#define FASTLED_HD_COLOR_MIXING 1
105 constexpr CRGB(uint8_t ir, uint8_t ig, uint8_t ib) noexcept
106 : r(ir), g(ig), b(ib)
112 constexpr CRGB(uint32_t colorcode) noexcept
113 : r((colorcode >> 16) & 0xFF), g((colorcode >> 8) & 0xFF), b((colorcode >> 0) & 0xFF)
118 return uint32_t(0xff000000) |
119 (uint32_t{r} << 16) |
127 : r((colorcode >> 16) & 0xFF), g((colorcode >> 8) & 0xFF), b((colorcode >> 0) & 0xFF)
134 : r((colorcode >> 16) & 0xFF), g((colorcode >> 8) & 0xFF), b((colorcode >> 0) & 0xFF)
154 r = (colorcode >> 16) & 0xFF;
155 g = (colorcode >> 8) & 0xFF;
156 b = (colorcode >> 0) & 0xFF;
202 r = (colorcode >> 16) & 0xFF;
203 g = (colorcode >> 8) & 0xFF;
204 b = (colorcode >> 0) & 0xFF;
305 if( rhs.r > r) r = rhs.r;
306 if( rhs.g > g) g = rhs.g;
307 if( rhs.b > b) b = rhs.b;
323 if( rhs.r < r) r = rhs.r;
324 if( rhs.g < g) g = rhs.g;
325 if( rhs.b < b) b = rhs.b;
339 constexpr explicit operator bool()
const
345 constexpr explicit operator uint32_t()
const
347 return uint32_t(0xff000000) |
348 (uint32_t{r} << 16) |
356 return CRGB(255 - r, 255 - g, 255 - b);
359#if (defined SmartMatrix_h || defined SmartMatrix3_h)
362 operator rgb24()
const {
389 if( green > max) max = green;
390 if( blue > max) max = blue;
394 uint16_t factor = ((uint16_t)(limit) * 256) / max;
395 red = (red * factor) / 256;
396 green = (green * factor) / 256;
397 blue = (blue * factor) / 256;
416 uint8_t sum = r + g + b;
446 if( parity == curparity)
return;
450 if( (b > 0) && (b < 255)) {
451 if( r == g && g == b) {
456 }
else if( (r > 0) && (r < 255)) {
458 }
else if( (g > 0) && (g < 255)) {
461 if( r == g && g == b) {
470 if( r == g && g == b) {
480 if( r == g && g == b) {
656 return (lhs.r == rhs.r) && (lhs.g == rhs.g) && (lhs.b == rhs.b);
662 return !(lhs == rhs);
668 return (lhs.h == rhs.h) && (lhs.s == rhs.s) && (lhs.v == rhs.v);
674 return !(lhs == rhs);
681 sl = lhs.r + lhs.g + lhs.b;
682 sr = rhs.r + rhs.g + rhs.b;
690 sl = lhs.r + lhs.g + lhs.b;
691 sr = rhs.r + rhs.g + rhs.b;
699 sl = lhs.r + lhs.g + lhs.b;
700 sr = rhs.r + rhs.g + rhs.b;
708 sl = lhs.r + lhs.g + lhs.b;
709 sr = rhs.r + rhs.g + rhs.b;
718 return CRGB( p1.r/d, p1.g/d, p1.b/d);
725 return CRGB( p1.r < p2.r ? p1.r : p2.r,
726 p1.g < p2.g ? p1.g : p2.g,
727 p1.b < p2.b ? p1.b : p2.b);
733 return CRGB( p1.r > p2.r ? p1.r : p2.r,
734 p1.g > p2.g ? p1.g : p2.g,
735 p1.b > p2.b ? p1.b : p2.b);
UISlider scale("Scale", 4,.1, 4,.1)
Defines the hue, saturation, and value (HSV) pixel struct.
#define FASTLED_FORCE_INLINE
ColorTemperature
Color temperature values.
LEDColorCorrection
Color correction starting points.
uint8_t fract8
ANSI: unsigned short _Fract.
uint16_t fract16
ANSI: unsigned _Fract.
FASTLED_FORCE_INLINE bool operator!=(const CRGB &lhs, const CRGB &rhs)
Check if two CRGB objects do not have the same color data.
FASTLED_FORCE_INLINE bool operator<=(const CRGB &lhs, const CRGB &rhs)
Check if the sum of the color channels in one CRGB object is less than or equal to another.
FASTLED_FORCE_INLINE bool operator==(const CRGB &lhs, const CRGB &rhs)
Check if two CRGB objects have the same color data.
FASTLED_FORCE_INLINE CRGB operator/(const CRGB &p1, uint8_t d)
Divide each of the channels by a constant.
FASTLED_FORCE_INLINE CRGB operator%(const CRGB &p1, uint8_t d)
Scale using CRGB::nscale8_video()
FASTLED_FORCE_INLINE CRGB operator-(const CRGB &p1, const CRGB &p2)
Subtract one CRGB from another, saturating at 0x00 for each channel.
FASTLED_FORCE_INLINE bool operator<(const CRGB &lhs, const CRGB &rhs)
Check if the sum of the color channels in one CRGB object is less than another.
FASTLED_FORCE_INLINE CRGB operator|(const CRGB &p1, const CRGB &p2)
Combine two CRGB objects, taking the largest value of each channel.
FASTLED_FORCE_INLINE CRGB operator&(const CRGB &p1, const CRGB &p2)
Combine two CRGB objects, taking the smallest value of each channel.
FASTLED_FORCE_INLINE bool operator>(const CRGB &lhs, const CRGB &rhs)
Check if the sum of the color channels in one CRGB object is greater than another.
void hsv2rgb_rainbow(const struct CHSV &hsv, struct CRGB &rgb)
Forward declaration of hsv2rgb_rainbow here, to avoid circular dependencies.
FASTLED_FORCE_INLINE bool operator>=(const CRGB &lhs, const CRGB &rhs)
Check if the sum of the color channels in one CRGB object is greater than or equal to another.
FASTLED_FORCE_INLINE CRGB operator*(const CRGB &p1, uint8_t d)
Multiply each of the channels by a constant, saturating each channel at 0xFF.
FASTLED_FORCE_INLINE CRGB operator+(const CRGB &p1, const CRGB &p2)
Add one CRGB to another, saturating at 0xFF for each channel.
uint8_t r
Red channel value.
uint8_t b
Blue channel value.
uint8_t g
Green channel value.
Defines fractional types used for lib8tion functions.
#define FASTLED_NAMESPACE_END
Implements the FastLED namespace macros.
Implements a simple red square effect for 2D LED grids.
Contains definitions for color correction and temperature.
Representation of an HSV pixel (hue, saturation, value (aka brightness)).
FASTLED_FORCE_INLINE CRGB & nscale8_video(uint8_t scaledown)
Scale down a RGB to N/256ths of it's current brightness using "video" dimming rules.
FASTLED_FORCE_INLINE CRGB()=default
Default constructor.
uint8_t getLuma() const
Get the "luma" of a CRGB object.
FASTLED_FORCE_INLINE uint8_t getParity()
Returns 0 or 1, depending on the lowest bit of the sum of the color components.
FASTLED_FORCE_INLINE CRGB & operator/=(uint8_t d)
Divide each of the channels by a constant.
FASTLED_FORCE_INLINE CRGB & fadeLightBy(uint8_t fadefactor)
fadeLightBy is a synonym for nscale8_video(), as a fade instead of a scale
constexpr CRGB(ColorTemperature colorcode) noexcept
Allow construction from a ColorTemperature enum.
FASTLED_FORCE_INLINE CRGB(const CRGB &rhs)=default
Allow copy construction.
FASTLED_FORCE_INLINE CRGB & operator++()
Add a constant of '1' from each channel, saturating at 0xFF.
constexpr uint32_t as_uint32_t() const noexcept
constexpr CRGB(uint32_t colorcode) noexcept
Allow construction from 32-bit (really 24-bit) bit 0xRRGGBB color code.
FASTLED_FORCE_INLINE CRGB lerp16(const CRGB &other, fract16 frac) const
Return a new CRGB object after performing a linear interpolation between this object and the passed i...
FASTLED_FORCE_INLINE CRGB & operator-=(const CRGB &rhs)
Subtract one CRGB from another, saturating at 0x00 for each channel.
CRGB & nscale8(uint8_t scaledown)
Scale down a RGB to N/256ths of its current brightness, using "plain math" dimming rules.
FASTLED_FORCE_INLINE CRGB & setRGB(uint8_t nr, uint8_t ng, uint8_t nb)
Allow assignment from red, green, and blue.
FASTLED_FORCE_INLINE CRGB & setColorCode(uint32_t colorcode)
Allow assignment from 32-bit (really 24-bit) 0xRRGGBB color code.
static CRGB blend(const CRGB &p1, const CRGB &p2, fract8 amountOfP2)
FASTLED_FORCE_INLINE CRGB & operator=(const CRGB &rhs)=default
Allow assignment from one RGB struct to another.
FASTLED_FORCE_INLINE void setParity(uint8_t parity)
Adjusts the color in the smallest way possible so that the parity of the coloris now the desired valu...
static CRGB computeAdjustment(uint8_t scale, const CRGB &colorCorrection, const CRGB &colorTemperature)
Calculates the combined color adjustment to the LEDs at a given scale, color correction,...
FASTLED_FORCE_INLINE CRGB(const CHSV &rhs)
Allow construction from a CHSV color.
FASTLED_FORCE_INLINE CRGB & setHSV(uint8_t hue, uint8_t sat, uint8_t val)
Allow assignment from hue, saturation, and value.
FASTLED_FORCE_INLINE CRGB & operator--()
Subtract a constant of '1' from each channel, saturating at 0x00.
FASTLED_FORCE_INLINE CRGB lerp8(const CRGB &other, fract8 frac) const
Return a new CRGB object after performing a linear interpolation between this object and the passed i...
FASTLED_FORCE_INLINE CRGB & operator>>=(uint8_t d)
Right shift each of the channels by a constant.
constexpr CRGB operator-() const
Invert each channel.
FASTLED_FORCE_INLINE uint8_t & operator[](uint8_t x)
Array access operator to index into the CRGB object.
FASTLED_FORCE_INLINE CRGB & operator&=(const CRGB &rhs)
"and" operator brings each channel down to the lower of the two values
FASTLED_FORCE_INLINE uint8_t getAverageLight() const
Get the average of the R, G, and B values.
FASTLED_FORCE_INLINE CRGB & addToRGB(uint8_t d)
Add a constant to each channel, saturating at 0xFF.
FASTLED_FORCE_INLINE CRGB & subtractFromRGB(uint8_t d)
Subtract a constant from each channel, saturating at 0x00.
constexpr CRGB(uint8_t ir, uint8_t ig, uint8_t ib) noexcept
Allow construction from red, green, and blue.
FASTLED_FORCE_INLINE CRGB scale8(uint8_t scaledown) const
Return a CRGB object that is a scaled down version of this object.
FASTLED_FORCE_INLINE CRGB & operator*=(uint8_t d)
Multiply each of the channels by a constant, saturating each channel at 0xFF.
static CRGB blendAlphaMaxChannel(const CRGB &upper, const CRGB &lower)
FASTLED_FORCE_INLINE CRGB & setHue(uint8_t hue)
Allow assignment from just a hue.
FASTLED_FORCE_INLINE CRGB & operator%=(uint8_t scaledown)
%= is a synonym for nscale8_video().
FASTLED_FORCE_INLINE CRGB & operator+=(const CRGB &rhs)
Add one CRGB to another, saturating at 0xFF for each channel.
FASTLED_FORCE_INLINE void maximizeBrightness(uint8_t limit=255)
Maximize the brightness of this CRGB object.
constexpr CRGB(LEDColorCorrection colorcode) noexcept
Allow construction from a LEDColorCorrection enum.
HTMLColorCode
Predefined RGB colors.
@ DarkGray
<div style='background:#A9A9A9;width:4em;height:4em;'></div>
@ Sienna
<div style='background:#A0522D;width:4em;height:4em;'></div>
@ Plum
<div style='background:#DDA0DD;width:4em;height:4em;'></div>
@ GhostWhite
<div style='background:#F8F8FF;width:4em;height:4em;'></div>
@ Tan
<div style='background:#D2B48C;width:4em;height:4em;'></div>
@ Gold
<div style='background:#FFD700;width:4em;height:4em;'></div>
@ DarkRed
<div style='background:#8B0000;width:4em;height:4em;'></div>
@ DarkSlateGray
<div style='background:#2F4F4F;width:4em;height:4em;'></div>
@ OldLace
<div style='background:#FDF5E6;width:4em;height:4em;'></div>
@ Aquamarine
<div style='background:#7FFFD4;width:4em;height:4em;'></div>
@ Violet
<div style='background:#EE82EE;width:4em;height:4em;'></div>
@ Salmon
<div style='background:#FA8072;width:4em;height:4em;'></div>
@ Thistle
<div style='background:#D8BFD8;width:4em;height:4em;'></div>
@ Cornsilk
<div style='background:#FFF8DC;width:4em;height:4em;'></div>
@ MediumVioletRed
<div style='background:#C71585;width:4em;height:4em;'></div>
@ Coral
<div style='background:#FF7F50;width:4em;height:4em;'></div>
@ LightPink
<div style='background:#FFB6C1;width:4em;height:4em;'></div>
@ DarkGrey
<div style='background:#A9A9A9;width:4em;height:4em;'></div>
@ SlateGrey
<div style='background:#708090;width:4em;height:4em;'></div>
@ NavajoWhite
<div style='background:#FFDEAD;width:4em;height:4em;'></div>
@ PaleVioletRed
<div style='background:#DB7093;width:4em;height:4em;'></div>
@ HotPink
<div style='background:#FF69B4;width:4em;height:4em;'></div>
@ BlanchedAlmond
<div style='background:#FFEBCD;width:4em;height:4em;'></div>
@ RosyBrown
<div style='background:#BC8F8F;width:4em;height:4em;'></div>
@ White
<div style='background:#FFFFFF;width:4em;height:4em;'></div>
@ Moccasin
<div style='background:#FFE4B5;width:4em;height:4em;'></div>
@ LightYellow
<div style='background:#FFFFE0;width:4em;height:4em;'></div>
@ Bisque
<div style='background:#FFE4C4;width:4em;height:4em;'></div>
@ DeepPink
<div style='background:#FF1493;width:4em;height:4em;'></div>
@ Wheat
<div style='background:#F5DEB3;width:4em;height:4em;'></div>
@ MediumOrchid
<div style='background:#BA55D3;width:4em;height:4em;'></div>
@ Goldenrod
<div style='background:#DAA520;width:4em;height:4em;'></div>
@ Orange
<div style='background:#FFA500;width:4em;height:4em;'></div>
@ MediumSpringGreen
<div style='background:#00FA9A;width:4em;height:4em;'></div>
@ Seashell
<div style='background:#FFF5EE;width:4em;height:4em;'></div>
@ DarkViolet
<div style='background:#9400D3;width:4em;height:4em;'></div>
@ Ivory
<div style='background:#FFFFF0;width:4em;height:4em;'></div>
@ Teal
<div style='background:#008080;width:4em;height:4em;'></div>
@ Gray
<div style='background:#808080;width:4em;height:4em;'></div>
@ MistyRose
<div style='background:#FFE4E1;width:4em;height:4em;'></div>
@ SlateBlue
<div style='background:#6A5ACD;width:4em;height:4em;'></div>
@ Silver
<div style='background:#C0C0C0;width:4em;height:4em;'></div>
@ Purple
<div style='background:#800080;width:4em;height:4em;'></div>
@ DarkKhaki
<div style='background:#BDB76B;width:4em;height:4em;'></div>
@ SaddleBrown
<div style='background:#8B4513;width:4em;height:4em;'></div>
@ LemonChiffon
<div style='background:#FFFACD;width:4em;height:4em;'></div>
@ Magenta
<div style='background:#FF00FF;width:4em;height:4em;'></div>
@ Beige
<div style='background:#F5F5DC;width:4em;height:4em;'></div>
@ Crimson
<div style='background:#DC143C;width:4em;height:4em;'></div>
@ MediumAquamarine
<div style='background:#66CDAA;width:4em;height:4em;'></div>
@ LawnGreen
<div style='background:#7CFC00;width:4em;height:4em;'></div>
@ DodgerBlue
<div style='background:#1E90FF;width:4em;height:4em;'></div>
@ Tomato
<div style='background:#FF6347;width:4em;height:4em;'></div>
@ Fuchsia
<div style='background:#FF00FF;width:4em;height:4em;'></div>
@ Aqua
<div style='background:#00FFFF;width:4em;height:4em;'></div>
@ Brown
<div style='background:#A52A2A;width:4em;height:4em;'></div>
@ Pink
<div style='background:#FFC0CB;width:4em;height:4em;'></div>
@ Lavender
<div style='background:#E6E6FA;width:4em;height:4em;'></div>
@ YellowGreen
<div style='background:#9ACD32;width:4em;height:4em;'></div>
@ DeepSkyBlue
<div style='background:#00BFFF;width:4em;height:4em;'></div>
@ Turquoise
<div style='background:#40E0D0;width:4em;height:4em;'></div>
@ SandyBrown
<div style='background:#F4A460;width:4em;height:4em;'></div>
@ MediumSlateBlue
<div style='background:#7B68EE;width:4em;height:4em;'></div>
@ PeachPuff
<div style='background:#FFDAB9;width:4em;height:4em;'></div>
@ Orchid
<div style='background:#DA70D6;width:4em;height:4em;'></div>
@ Green
<div style='background:#008000;width:4em;height:4em;'></div>
@ SteelBlue
<div style='background:#4682B4;width:4em;height:4em;'></div>
@ CornflowerBlue
<div style='background:#6495ED;width:4em;height:4em;'></div>
@ DarkSalmon
<div style='background:#E9967A;width:4em;height:4em;'></div>
@ SkyBlue
<div style='background:#87CEEB;width:4em;height:4em;'></div>
@ LightSalmon
<div style='background:#FFA07A;width:4em;height:4em;'></div>
@ RoyalBlue
<div style='background:#4169E1;width:4em;height:4em;'></div>
@ DarkSlateGrey
<div style='background:#2F4F4F;width:4em;height:4em;'></div>
@ Navy
<div style='background:#000080;width:4em;height:4em;'></div>
@ Lime
<div style='background:#00FF00;width:4em;height:4em;'></div>
@ LightCoral
<div style='background:#F08080;width:4em;height:4em;'></div>
@ PaleTurquoise
<div style='background:#AFEEEE;width:4em;height:4em;'></div>
@ BurlyWood
<div style='background:#DEB887;width:4em;height:4em;'></div>
@ DarkTurquoise
<div style='background:#00CED1;width:4em;height:4em;'></div>
@ DarkMagenta
<div style='background:#8B008B;width:4em;height:4em;'></div>
@ LightSeaGreen
<div style='background:#20B2AA;width:4em;height:4em;'></div>
@ MidnightBlue
<div style='background:#191970;width:4em;height:4em;'></div>
@ LightSlateGray
<div style='background:#778899;width:4em;height:4em;'></div>
@ Chocolate
<div style='background:#D2691E;width:4em;height:4em;'></div>
@ Linen
<div style='background:#FAF0E6;width:4em;height:4em;'></div>
@ SeaGreen
<div style='background:#2E8B57;width:4em;height:4em;'></div>
@ Cyan
<div style='background:#00FFFF;width:4em;height:4em;'></div>
@ AntiqueWhite
<div style='background:#FAEBD7;width:4em;height:4em;'></div>
@ LimeGreen
<div style='background:#32CD32;width:4em;height:4em;'></div>
@ MediumTurquoise
<div style='background:#48D1CC;width:4em;height:4em;'></div>
@ LightGreen
<div style='background:#90EE90;width:4em;height:4em;'></div>
@ MediumSeaGreen
<div style='background:#3CB371;width:4em;height:4em;'></div>
@ PaleGreen
<div style='background:#98FB98;width:4em;height:4em;'></div>
@ FireBrick
<div style='background:#B22222;width:4em;height:4em;'></div>
@ Amethyst
<div style='background:#9966CC;width:4em;height:4em;'></div>
@ LightSteelBlue
<div style='background:#B0C4DE;width:4em;height:4em;'></div>
@ LightGrey
<div style='background:#D3D3D3;width:4em;height:4em;'></div>
@ BlueViolet
<div style='background:#8A2BE2;width:4em;height:4em;'></div>
@ Indigo
<div style='background:#4B0082;width:4em;height:4em;'></div>
@ LightCyan
<div style='background:#E0FFFF;width:4em;height:4em;'></div>
@ Olive
<div style='background:#808000;width:4em;height:4em;'></div>
@ PapayaWhip
<div style='background:#FFEFD5;width:4em;height:4em;'></div>
@ Azure
<div style='background:#F0FFFF;width:4em;height:4em;'></div>
@ Blue
<div style='background:#0000FF;width:4em;height:4em;'></div>
@ DarkOrchid
<div style='background:#9932CC;width:4em;height:4em;'></div>
@ Red
<div style='background:#FF0000;width:4em;height:4em;'></div>
@ PowderBlue
<div style='background:#B0E0E6;width:4em;height:4em;'></div>
@ IndianRed
<div style='background:#CD5C5C;width:4em;height:4em;'></div>
@ FairyLight
<div style='background:#FFE42D;width:4em;height:4em;'></div>
@ DarkGoldenrod
<div style='background:#B8860B;width:4em;height:4em;'></div>
@ LightSkyBlue
<div style='background:#87CEFA;width:4em;height:4em;'></div>
@ DarkSlateBlue
<div style='background:#483D8B;width:4em;height:4em;'></div>
@ MediumBlue
<div style='background:#0000CD;width:4em;height:4em;'></div>
@ Black
<div style='background:#000000;width:4em;height:4em;'></div>
@ LavenderBlush
<div style='background:#FFF0F5;width:4em;height:4em;'></div>
@ DarkOrange
<div style='background:#FF8C00;width:4em;height:4em;'></div>
@ CadetBlue
<div style='background:#5F9EA0;width:4em;height:4em;'></div>
@ SlateGray
<div style='background:#708090;width:4em;height:4em;'></div>
@ OliveDrab
<div style='background:#6B8E23;width:4em;height:4em;'></div>
@ Plaid
<div style='background:#CC5533;width:4em;height:4em;'></div>
@ SpringGreen
<div style='background:#00FF7F;width:4em;height:4em;'></div>
@ Honeydew
<div style='background:#F0FFF0;width:4em;height:4em;'></div>
@ Gainsboro
<div style='background:#DCDCDC;width:4em;height:4em;'></div>
@ MediumPurple
<div style='background:#9370DB;width:4em;height:4em;'></div>
@ Yellow
<div style='background:#FFFF00;width:4em;height:4em;'></div>
@ DimGrey
<div style='background:#696969;width:4em;height:4em;'></div>
@ FairyLightNCC
<div style='background:#FFE42D;width:4em;height:4em;'></div>
@ DarkOliveGreen
<div style='background:#556B2F;width:4em;height:4em;'></div>
@ LightGoldenrodYellow
<div style='background:#FAFAD2;width:4em;height:4em;'></div>
@ LightSlateGrey
<div style='background:#778899;width:4em;height:4em;'></div>
@ Peru
<div style='background:#CD853F;width:4em;height:4em;'></div>
@ AliceBlue
<div style='background:#F0F8FF;width:4em;height:4em;'></div>
@ PaleGoldenrod
<div style='background:#EEE8AA;width:4em;height:4em;'></div>
@ DarkSeaGreen
<div style='background:#8FBC8F;width:4em;height:4em;'></div>
@ LightBlue
<div style='background:#ADD8E6;width:4em;height:4em;'></div>
@ FloralWhite
<div style='background:#FFFAF0;width:4em;height:4em;'></div>
@ Chartreuse
<div style='background:#7FFF00;width:4em;height:4em;'></div>
@ DimGray
<div style='background:#696969;width:4em;height:4em;'></div>
@ OrangeRed
<div style='background:#FF4500;width:4em;height:4em;'></div>
@ ForestGreen
<div style='background:#228B22;width:4em;height:4em;'></div>
@ Khaki
<div style='background:#F0E68C;width:4em;height:4em;'></div>
@ MintCream
<div style='background:#F5FFFA;width:4em;height:4em;'></div>
@ DarkCyan
<div style='background:#008B8B;width:4em;height:4em;'></div>
@ Snow
<div style='background:#FFFAFA;width:4em;height:4em;'></div>
@ DarkGreen
<div style='background:#006400;width:4em;height:4em;'></div>
@ GreenYellow
<div style='background:#ADFF2F;width:4em;height:4em;'></div>
@ WhiteSmoke
<div style='background:#F5F5F5;width:4em;height:4em;'></div>
@ DarkBlue
<div style='background:#00008B;width:4em;height:4em;'></div>
@ Maroon
<div style='background:#800000;width:4em;height:4em;'></div>
@ Grey
<div style='background:#808080;width:4em;height:4em;'></div>
FASTLED_FORCE_INLINE CRGB & fadeToBlackBy(uint8_t fadefactor)
fadeToBlackBy is a synonym for nscale8(), as a fade instead of a scale
constexpr CRGB nscale8_constexpr(const CRGB scaledown) const
FASTLED_FORCE_INLINE CRGB & operator|=(const CRGB &rhs)
"or" operator brings each channel up to the higher of the two values
Representation of an RGB pixel (Red, Green, Blue)