761 constexpr Color(
double r,
double g,
double b)
762 :
red(roundAndClamp(r)),
763 green(roundAndClamp(g)),
764 blue(roundAndClamp(b)) {}
773 constexpr Color(
int r,
int g,
int b)
774 :
Color(r / 255.0, g / 255.0, b / 255.0) {}
782 explicit constexpr Color(std::string_view hexString) {
783 if (hexString.length() != 7 || !hexString.starts_with(
"#") ||
787 throw std::invalid_argument(
788 fmt::format(
"Invalid hex string for Color \"{}\"", hexString));
821 int chroma = (s * v) >> 8;
824 int region = (h / 30) % 6;
827 int remainder =
static_cast<int>((h % 30) * (255 / 30.0));
833 int X = (chroma * remainder) >> 8;
837 return Color(v, X + m, m);
839 return Color(v - X, v, m);
841 return Color(m, v, X + m);
843 return Color(m, v - X, v);
845 return Color(X + m, m, v);
847 return Color(v, m, v - X);
857 const int r = 255.0 *
red;
858 const int g = 255.0 *
green;
859 const int b = 255.0 *
blue;
877 static constexpr double roundAndClamp(
double value) {
878 return std::clamp(
gcem::ceil(value * (1 << 12)) / (1 << 12), 0.0, 1.0);
885inline constexpr Color
Color::kDenim{0.0823529412, 0.376470589, 0.7411764706};
899inline constexpr Color
Color::kBeige{0.9607843f, 0.9607843f, 0.8627451f};
900inline constexpr Color
Color::kBisque{1.0f, 0.89411765f, 0.76862746f};
905inline constexpr Color
Color::kBrown{0.64705884f, 0.16470589f, 0.16470589f};
910inline constexpr Color
Color::kCoral{1.0f, 0.49803922f, 0.3137255f};
914inline constexpr Color
Color::kCrimson{0.8627451f, 0.078431375f, 0.23529412f};
940inline constexpr Color
Color::kDimGray{0.4117647f, 0.4117647f, 0.4117647f};
949inline constexpr Color
Color::kGold{1.0f, 0.84313726f, 0.0f};
951inline constexpr Color
Color::kGray{0.5019608f, 0.5019608f, 0.5019608f};
957inline constexpr Color
Color::kIndigo{0.29411766f, 0.0f, 0.50980395f};
959inline constexpr Color
Color::kKhaki{0.9411765f, 0.9019608f, 0.54901963f};
960inline constexpr Color
Color::kLavender{0.9019608f, 0.9019608f, 0.98039216f};
983inline constexpr Color
Color::kLinen{0.98039216f, 0.9411765f, 0.9019608f};
1005inline constexpr Color
Color::kNavy{0.0f, 0.0f, 0.5019608f};
1006inline constexpr Color
Color::kOldLace{0.99215686f, 0.9607843f, 0.9019608f};
1007inline constexpr Color
Color::kOlive{0.5019608f, 0.5019608f, 0.0f};
1011inline constexpr Color
Color::kOrchid{0.85490197f, 0.4392157f, 0.8392157f};
1021inline constexpr Color
Color::kPeru{0.8039216f, 0.52156866f, 0.24705882f};
1022inline constexpr Color
Color::kPink{1.0f, 0.7529412f, 0.79607844f};
1023inline constexpr Color
Color::kPlum{0.8666667f, 0.627451f, 0.8666667f};
1025inline constexpr Color
Color::kPurple{0.5019608f, 0.0f, 0.5019608f};
1026inline constexpr Color
Color::kRed{1.0f, 0.0f, 0.0f};
1031inline constexpr Color
Color::kSalmon{0.98039216f, 0.5019608f, 0.44705883f};
1033inline constexpr Color
Color::kSeaGreen{0.18039216f, 0.54509807f, 0.34117648f};
1035inline constexpr Color
Color::kSienna{0.627451f, 0.32156864f, 0.1764706f};
1036inline constexpr Color
Color::kSilver{0.7529412f, 0.7529412f, 0.7529412f};
1037inline constexpr Color
Color::kSkyBlue{0.5294118f, 0.80784315f, 0.92156863f};
1040inline constexpr Color
Color::kSnow{1.0f, 0.98039216f, 0.98039216f};
1043inline constexpr Color
Color::kTan{0.8235294f, 0.7058824f, 0.54901963f};
1044inline constexpr Color
Color::kTeal{0.0f, 0.5019608f, 0.5019608f};
1045inline constexpr Color
Color::kThistle{0.84705883f, 0.7490196f, 0.84705883f};
1046inline constexpr Color
Color::kTomato{1.0f, 0.3882353f, 0.2784314f};
1048inline constexpr Color
Color::kViolet{0.93333334f, 0.50980395f, 0.93333334f};
1049inline constexpr Color
Color::kWheat{0.9607843f, 0.87058824f, 0.7019608f};
Represents colors that can be used with Addressable LEDs.
Definition Color.h:24
static const Color kOrchid
0xDA70D6.
Definition Color.h:557
constexpr bool operator==(const Color &) const =default
static const Color kYellowGreen
0x9ACD32.
Definition Color.h:747
static const Color kViolet
0xEE82EE.
Definition Color.h:722
static const Color kOliveDrab
0x6B8E23.
Definition Color.h:542
static const Color kGreen
0x008000.
Definition Color.h:307
constexpr Color(int r, int g, int b)
Constructs a Color from ints (0-255).
Definition Color.h:773
static const Color kDarkTurquoise
0x00CED1.
Definition Color.h:232
static const Color kDenim
0x1560BD.
Definition Color.h:33
static const Color kMistyRose
0xFFE4E1.
Definition Color.h:512
static const Color kGold
0xFFD700.
Definition Color.h:292
static const Color kPaleVioletRed
0xDB7093.
Definition Color.h:577
static const Color kDodgerBlue
0x1E90FF.
Definition Color.h:257
static const Color kMoccasin
0xFFE4B5.
Definition Color.h:517
static const Color kDarkCyan
0x008B8B.
Definition Color.h:162
double green
Green component (0-1).
Definition Color.h:871
static const Color kAliceBlue
0xF0F8FF.
Definition Color.h:52
static const Color kDarkRed
0x8B0000.
Definition Color.h:207
constexpr Color()=default
Constructs a default color (black).
static const Color kBlanchedAlmond
0xFFEBCD.
Definition Color.h:92
static const Color kTeal
0x008080.
Definition Color.h:702
static const Color kOrangeRed
0xFF4500.
Definition Color.h:552
static const Color kFirebrick
0xB22222.
Definition Color.h:262
static const Color kMediumVioletRed
0xC71585.
Definition Color.h:497
static const Color kRosyBrown
0xBC8F8F.
Definition Color.h:622
static const Color kDarkViolet
0x9400D3.
Definition Color.h:237
static const Color kLightGreen
0x90EE90.
Definition Color.h:392
static const Color kDimGray
0x696969.
Definition Color.h:252
static const Color kPaleGreen
0x98FB98.
Definition Color.h:567
static const Color kDarkOrchid
0x9932CC.
Definition Color.h:202
static const Color kLightSkyBlue
0x87CEFA.
Definition Color.h:412
static const Color kOldLace
0xFDF5E6.
Definition Color.h:532
static const Color kLavenderBlush
0xFFF0F5.
Definition Color.h:352
static const Color kMediumPurple
0x9370DB.
Definition Color.h:472
static const Color kPurple
0x800080.
Definition Color.h:612
static const Color kSnow
0xFFFAFA.
Definition Color.h:682
static const Color kBlueViolet
0x8A2BE2.
Definition Color.h:102
static const Color kGray
0x808080.
Definition Color.h:302
static const Color kCoral
0xFF7F50.
Definition Color.h:132
static const Color kAntiqueWhite
0xFAEBD7.
Definition Color.h:57
static const Color kLightCoral
0xF08080.
Definition Color.h:372
static const Color kPlum
0xDDA0DD.
Definition Color.h:602
static const Color kTan
0xD2B48C.
Definition Color.h:697
constexpr Color(double r, double g, double b)
Constructs a Color from doubles (0-1).
Definition Color.h:761
static const Color kLightSalmon
0xFFA07A.
Definition Color.h:402
static constexpr Color FromHSV(int h, int s, int v)
Creates a Color from HSV values.
Definition Color.h:813
static const Color kMediumSpringGreen
0x00FA9A.
Definition Color.h:487
static const Color kRed
0xFF0000.
Definition Color.h:617
static const Color kBlack
0x000000.
Definition Color.h:87
static const Color kLightSlateGray
0x778899.
Definition Color.h:417
static const Color kKhaki
0xF0E68C.
Definition Color.h:342
static const Color kIvory
0xFFFFF0.
Definition Color.h:337
static const Color kDarkOrange
0xFF8C00.
Definition Color.h:197
static const Color kSeashell
0xFFF5EE.
Definition Color.h:652
static const Color kMediumAquamarine
0x66CDAA.
Definition Color.h:457
static const Color kAzure
0xF0FFFF.
Definition Color.h:72
static const Color kBlue
0x0000FF.
Definition Color.h:97
static const Color kMediumSlateBlue
0x7B68EE.
Definition Color.h:482
static const Color kMediumBlue
0x0000CD.
Definition Color.h:462
static const Color kLightSteelBlue
0xB0C4DE.
Definition Color.h:422
static const Color kPeachPuff
0xFFDAB9.
Definition Color.h:587
static const Color kSpringGreen
0x00FF7F.
Definition Color.h:687
static const Color kSalmon
0xFA8072.
Definition Color.h:637
static const Color kHoneydew
0xF0FFF0.
Definition Color.h:317
static const Color kTurquoise
0x40E0D0.
Definition Color.h:717
static const Color kSlateGray
0x708090.
Definition Color.h:677
double red
Red component (0-1).
Definition Color.h:868
static const Color kLemonChiffon
0xFFFACD.
Definition Color.h:362
static const Color kPaleGoldenrod
0xEEE8AA.
Definition Color.h:562
static const Color kDeepPink
0xFF1493.
Definition Color.h:242
static const Color kRoyalBlue
0x4169E1.
Definition Color.h:627
static const Color kForestGreen
0x228B22.
Definition Color.h:272
static const Color kLavender
0xE6E6FA.
Definition Color.h:347
double blue
Blue component (0-1).
Definition Color.h:874
static const Color kIndigo
0x4B0082.
Definition Color.h:332
static const Color kHotPink
0xFF69B4.
Definition Color.h:322
static const Color kFirstBlue
0x0066B3.
Definition Color.h:38
static const Color kLightSeaGreen
0x20B2AA.
Definition Color.h:407
static const Color kDarkGreen
0x006400.
Definition Color.h:177
static const Color kFuchsia
0xFF00FF.
Definition Color.h:277
static const Color kGreenYellow
0xADFF2F.
Definition Color.h:312
static const Color kTomato
0xFF6347.
Definition Color.h:712
static const Color kDarkSalmon
0xE9967A.
Definition Color.h:212
static const Color kMediumOrchid
0xBA55D3.
Definition Color.h:467
static const Color kDarkMagenta
0x8B008B.
Definition Color.h:187
static const Color kDarkGoldenrod
0xB8860B.
Definition Color.h:167
static const Color kDarkSlateGray
0x2F4F4F.
Definition Color.h:227
static const Color kMintcream
0xF5FFFA.
Definition Color.h:507
static const Color kMidnightBlue
0x191970.
Definition Color.h:502
static const Color kCrimson
0xDC143C.
Definition Color.h:147
static const Color kBisque
0xFFE4C4.
Definition Color.h:82
static const Color kLightBlue
0xADD8E6.
Definition Color.h:367
static const Color kBrown
0xA52A2A.
Definition Color.h:107
static const Color kPapayaWhip
0xFFEFD5.
Definition Color.h:582
static const Color kMediumSeaGreen
0x3CB371.
Definition Color.h:477
static const Color kWheat
0xF5DEB3.
Definition Color.h:727
static const Color kDarkSlateBlue
0x483D8B.
Definition Color.h:222
static const Color kSeaGreen
0x2E8B57.
Definition Color.h:647
static const Color kFloralWhite
0xFFFAF0.
Definition Color.h:267
static const Color kCornsilk
0xFFF8DC.
Definition Color.h:142
static const Color kSienna
0xA0522D.
Definition Color.h:657
static const Color kBurlywood
0xDEB887.
Definition Color.h:112
static const Color kPowderBlue
0xB0E0E6.
Definition Color.h:607
static const Color kLimeGreen
0x32CD32.
Definition Color.h:437
static const Color kChartreuse
0x7FFF00.
Definition Color.h:122
static const Color kLawnGreen
0x7CFC00.
Definition Color.h:357
static const Color kMediumTurquoise
0x48D1CC.
Definition Color.h:492
static const Color kLightYellow
0xFFFFE0.
Definition Color.h:427
static const Color kChocolate
0xD2691E.
Definition Color.h:127
static const Color kWhite
0xFFFFFF.
Definition Color.h:732
static const Color kDarkSeaGreen
0x8FBC8F.
Definition Color.h:217
static const Color kMagenta
0xFF00FF.
Definition Color.h:447
static const Color kDeepSkyBlue
0x00BFFF.
Definition Color.h:247
static const Color kFirstRed
0xED1C24.
Definition Color.h:43
static const Color kGoldenrod
0xDAA520.
Definition Color.h:297
static const Color kBeige
0xF5F5DC.
Definition Color.h:77
static const Color kSteelBlue
0x4682B4.
Definition Color.h:692
static const Color kDarkKhaki
0xBDB76B.
Definition Color.h:182
static const Color kNavajoWhite
0xFFDEAD.
Definition Color.h:522
static const Color kPink
0xFFC0CB.
Definition Color.h:597
static const Color kLinen
0xFAF0E6.
Definition Color.h:442
static const Color kAquamarine
0x7FFFD4.
Definition Color.h:67
constexpr Color(std::string_view hexString)
Constructs a Color from a hex string.
Definition Color.h:782
static const Color kSilver
0xC0C0C0.
Definition Color.h:662
static const Color kCyan
0x00FFFF.
Definition Color.h:152
static const Color kSandyBrown
0xF4A460.
Definition Color.h:642
static const Color kOlive
0x808000.
Definition Color.h:537
static const Color kDarkOliveGreen
0x556B2F.
Definition Color.h:192
static const Color kThistle
0xD8BFD8.
Definition Color.h:707
static const Color kMaroon
0x800000.
Definition Color.h:452
static const Color kAqua
0x00FFFF.
Definition Color.h:62
static const Color kDarkGray
0xA9A9A9.
Definition Color.h:172
static const Color kIndianRed
0xCD5C5C.
Definition Color.h:327
static const Color kPeru
0xCD853F.
Definition Color.h:592
static const Color kLightGoldenrodYellow
0xFAFAD2.
Definition Color.h:382
static const Color kYellow
0xFFFF00.
Definition Color.h:742
constexpr auto HexString() const
Return this color represented as a hex string.
Definition Color.h:856
static const Color kCornflowerBlue
0x6495ED.
Definition Color.h:137
static const Color kCadetBlue
0x5F9EA0.
Definition Color.h:117
static const Color kLightGray
0xD3D3D3.
Definition Color.h:387
static const Color kGainsboro
0xDCDCDC.
Definition Color.h:282
static const Color kDarkBlue
0x00008B.
Definition Color.h:157
static const Color kGhostWhite
0xF8F8FF.
Definition Color.h:287
static const Color kOrange
0xFFA500.
Definition Color.h:547
static const Color kWhiteSmoke
0xF5F5F5.
Definition Color.h:737
static const Color kNavy
0x000080.
Definition Color.h:527
static const Color kSkyBlue
0x87CEEB.
Definition Color.h:667
static const Color kLightCyan
0xE0FFFF.
Definition Color.h:377
static const Color kPaleTurquoise
0xAFEEEE.
Definition Color.h:572
static const Color kSaddleBrown
0x8B4513.
Definition Color.h:632
static const Color kSlateBlue
0x6A5ACD.
Definition Color.h:672
static const Color kLime
0x00FF00.
Definition Color.h:432
static const Color kLightPink
0xFFB6C1.
Definition Color.h:397
constexpr return_t< T > ceil(const T x) noexcept
Compile-time ceil function.
Definition ceil.hpp:130
constexpr char hexdigit(unsigned X, bool LowerCase=false) noexcept
hexdigit - Return the hexadecimal character for the given number X (which should be less than 16).
Definition StringExtras.h:37
constexpr bool isHexDigit(char C) noexcept
Checks if character C is a hexadecimal numeric character.
Definition StringExtras.h:65
constexpr unsigned hexDigitValue(char C) noexcept
Interpret the given character C as a hexadecimal digit and return its value.
Definition StringExtras.h:46
Fixed length string (array of character) for compile time use.
Definition ct_string.h:29