760 constexpr Color(
double r,
double g,
double b)
761 :
red(roundAndClamp(r)),
762 green(roundAndClamp(g)),
763 blue(roundAndClamp(
b)) {}
773 :
Color(r / 255.0, g / 255.0,
b / 255.0) {}
782 if (hexString.length() != 7 || !hexString.starts_with(
"#") ||
786 throw std::invalid_argument(
787 fmt::format(
"Invalid hex string for Color \"{}\"", hexString));
820 int chroma = (s * v) >> 8;
823 int region = (
h / 30) % 6;
826 int remainder =
static_cast<int>((
h % 30) * (255 / 30.0));
832 int X = (chroma * remainder) >> 8;
836 return Color(v, X + m, m);
838 return Color(v - X, v, m);
840 return Color(m, v, X + m);
842 return Color(m, v - X, v);
844 return Color(X + m, m, v);
846 return Color(v, m, v - X);
856 const int r = 255.0 *
red;
857 const int g = 255.0 *
green;
858 const int b = 255.0 *
blue;
871 static constexpr double kPrecision = 1.0 / (1 << 12);
873 static constexpr double roundAndClamp(
double value) {
875 (
static_cast<int>(value / kPrecision) + 0.5) * kPrecision;
876 return std::clamp(rounded, 0.0, 1.0);
883inline constexpr Color
Color::kDenim{0.0823529412, 0.376470589, 0.7411764706};
897inline constexpr Color
Color::kBeige{0.9607843f, 0.9607843f, 0.8627451f};
898inline constexpr Color
Color::kBisque{1.0f, 0.89411765f, 0.76862746f};
903inline constexpr Color
Color::kBrown{0.64705884f, 0.16470589f, 0.16470589f};
908inline constexpr Color
Color::kCoral{1.0f, 0.49803922f, 0.3137255f};
912inline constexpr Color
Color::kCrimson{0.8627451f, 0.078431375f, 0.23529412f};
938inline constexpr Color
Color::kDimGray{0.4117647f, 0.4117647f, 0.4117647f};
947inline constexpr Color
Color::kGold{1.0f, 0.84313726f, 0.0f};
949inline constexpr Color
Color::kGray{0.5019608f, 0.5019608f, 0.5019608f};
955inline constexpr Color
Color::kIndigo{0.29411766f, 0.0f, 0.50980395f};
957inline constexpr Color
Color::kKhaki{0.9411765f, 0.9019608f, 0.54901963f};
958inline constexpr Color
Color::kLavender{0.9019608f, 0.9019608f, 0.98039216f};
981inline constexpr Color
Color::kLinen{0.98039216f, 0.9411765f, 0.9019608f};
1003inline constexpr Color
Color::kNavy{0.0f, 0.0f, 0.5019608f};
1004inline constexpr Color
Color::kOldLace{0.99215686f, 0.9607843f, 0.9019608f};
1005inline constexpr Color
Color::kOlive{0.5019608f, 0.5019608f, 0.0f};
1009inline constexpr Color
Color::kOrchid{0.85490197f, 0.4392157f, 0.8392157f};
1019inline constexpr Color
Color::kPeru{0.8039216f, 0.52156866f, 0.24705882f};
1020inline constexpr Color
Color::kPink{1.0f, 0.7529412f, 0.79607844f};
1021inline constexpr Color
Color::kPlum{0.8666667f, 0.627451f, 0.8666667f};
1023inline constexpr Color
Color::kPurple{0.5019608f, 0.0f, 0.5019608f};
1024inline constexpr Color
Color::kRed{1.0f, 0.0f, 0.0f};
1029inline constexpr Color
Color::kSalmon{0.98039216f, 0.5019608f, 0.44705883f};
1031inline constexpr Color
Color::kSeaGreen{0.18039216f, 0.54509807f, 0.34117648f};
1033inline constexpr Color
Color::kSienna{0.627451f, 0.32156864f, 0.1764706f};
1034inline constexpr Color
Color::kSilver{0.7529412f, 0.7529412f, 0.7529412f};
1035inline constexpr Color
Color::kSkyBlue{0.5294118f, 0.80784315f, 0.92156863f};
1038inline constexpr Color
Color::kSnow{1.0f, 0.98039216f, 0.98039216f};
1041inline constexpr Color
Color::kTan{0.8235294f, 0.7058824f, 0.54901963f};
1042inline constexpr Color
Color::kTeal{0.0f, 0.5019608f, 0.5019608f};
1043inline constexpr Color
Color::kThistle{0.84705883f, 0.7490196f, 0.84705883f};
1044inline constexpr Color
Color::kTomato{1.0f, 0.3882353f, 0.2784314f};
1046inline constexpr Color
Color::kViolet{0.93333334f, 0.50980395f, 0.93333334f};
1047inline constexpr Color
Color::kWheat{0.9607843f, 0.87058824f, 0.7019608f};
Represents colors that can be used with Addressable LEDs.
Definition: Color.h:23
static const Color kOrchid
0xDA70D6.
Definition: Color.h:556
constexpr bool operator==(const Color &) const =default
static const Color kYellowGreen
0x9ACD32.
Definition: Color.h:746
static const Color kViolet
0xEE82EE.
Definition: Color.h:721
static const Color kOliveDrab
0x6B8E23.
Definition: Color.h:541
static const Color kGreen
0x008000.
Definition: Color.h:306
constexpr Color(int r, int g, int b)
Constructs a Color from ints (0-255).
Definition: Color.h:772
static const Color kDarkTurquoise
0x00CED1.
Definition: Color.h:231
static const Color kDenim
0x1560BD.
Definition: Color.h:32
static const Color kMistyRose
0xFFE4E1.
Definition: Color.h:511
static const Color kGold
0xFFD700.
Definition: Color.h:291
static const Color kPaleVioletRed
0xDB7093.
Definition: Color.h:576
static const Color kDodgerBlue
0x1E90FF.
Definition: Color.h:256
static const Color kMoccasin
0xFFE4B5.
Definition: Color.h:516
static const Color kDarkCyan
0x008B8B.
Definition: Color.h:161
double green
Definition: Color.h:867
static const Color kAliceBlue
0xF0F8FF.
Definition: Color.h:51
static const Color kDarkRed
0x8B0000.
Definition: Color.h:206
constexpr Color()=default
Constructs a default color (black).
static const Color kBlanchedAlmond
0xFFEBCD.
Definition: Color.h:91
static const Color kTeal
0x008080.
Definition: Color.h:701
static const Color kOrangeRed
0xFF4500.
Definition: Color.h:551
static const Color kFirebrick
0xB22222.
Definition: Color.h:261
static const Color kMediumVioletRed
0xC71585.
Definition: Color.h:496
static const Color kRosyBrown
0xBC8F8F.
Definition: Color.h:621
static const Color kDarkViolet
0x9400D3.
Definition: Color.h:236
static const Color kLightGreen
0x90EE90.
Definition: Color.h:391
static const Color kDimGray
0x696969.
Definition: Color.h:251
static const Color kPaleGreen
0x98FB98.
Definition: Color.h:566
static const Color kDarkOrchid
0x9932CC.
Definition: Color.h:201
static const Color kLightSkyBlue
0x87CEFA.
Definition: Color.h:411
static const Color kOldLace
0xFDF5E6.
Definition: Color.h:531
static const Color kLavenderBlush
0xFFF0F5.
Definition: Color.h:351
static const Color kMediumPurple
0x9370DB.
Definition: Color.h:471
static const Color kPurple
0x800080.
Definition: Color.h:611
static const Color kSnow
0xFFFAFA.
Definition: Color.h:681
static const Color kBlueViolet
0x8A2BE2.
Definition: Color.h:101
static const Color kGray
0x808080.
Definition: Color.h:301
static const Color kCoral
0xFF7F50.
Definition: Color.h:131
static const Color kAntiqueWhite
0xFAEBD7.
Definition: Color.h:56
static const Color kLightCoral
0xF08080.
Definition: Color.h:371
static const Color kPlum
0xDDA0DD.
Definition: Color.h:601
static const Color kTan
0xD2B48C.
Definition: Color.h:696
constexpr Color(double r, double g, double b)
Constructs a Color from doubles (0-1).
Definition: Color.h:760
static const Color kLightSalmon
0xFFA07A.
Definition: Color.h:401
static constexpr Color FromHSV(int h, int s, int v)
Creates a Color from HSV values.
Definition: Color.h:812
static const Color kMediumSpringGreen
0x00FA9A.
Definition: Color.h:486
static const Color kRed
0xFF0000.
Definition: Color.h:616
static const Color kBlack
0x000000.
Definition: Color.h:86
static const Color kLightSlateGray
0x778899.
Definition: Color.h:416
static const Color kKhaki
0xF0E68C.
Definition: Color.h:341
static const Color kIvory
0xFFFFF0.
Definition: Color.h:336
static const Color kDarkOrange
0xFF8C00.
Definition: Color.h:196
static const Color kSeashell
0xFFF5EE.
Definition: Color.h:651
static const Color kMediumAquamarine
0x66CDAA.
Definition: Color.h:456
static const Color kAzure
0xF0FFFF.
Definition: Color.h:71
static const Color kBlue
0x0000FF.
Definition: Color.h:96
static const Color kMediumSlateBlue
0x7B68EE.
Definition: Color.h:481
static const Color kMediumBlue
0x0000CD.
Definition: Color.h:461
static const Color kLightSteelBlue
0xB0C4DE.
Definition: Color.h:421
static const Color kPeachPuff
0xFFDAB9.
Definition: Color.h:586
static const Color kSpringGreen
0x00FF7F.
Definition: Color.h:686
static const Color kSalmon
0xFA8072.
Definition: Color.h:636
static const Color kHoneydew
0xF0FFF0.
Definition: Color.h:316
static const Color kTurquoise
0x40E0D0.
Definition: Color.h:716
static const Color kSlateGray
0x708090.
Definition: Color.h:676
double red
Definition: Color.h:866
static const Color kLemonChiffon
0xFFFACD.
Definition: Color.h:361
static const Color kPaleGoldenrod
0xEEE8AA.
Definition: Color.h:561
static const Color kDeepPink
0xFF1493.
Definition: Color.h:241
static const Color kRoyalBlue
0x4169E1.
Definition: Color.h:626
static const Color kForestGreen
0x228B22.
Definition: Color.h:271
static const Color kLavender
0xE6E6FA.
Definition: Color.h:346
double blue
Definition: Color.h:868
static const Color kIndigo
0x4B0082.
Definition: Color.h:331
static const Color kHotPink
0xFF69B4.
Definition: Color.h:321
static const Color kFirstBlue
0x0066B3.
Definition: Color.h:37
static const Color kLightSeaGreen
0x20B2AA.
Definition: Color.h:406
static const Color kDarkGreen
0x006400.
Definition: Color.h:176
static const Color kFuchsia
0xFF00FF.
Definition: Color.h:276
static const Color kGreenYellow
0xADFF2F.
Definition: Color.h:311
static const Color kTomato
0xFF6347.
Definition: Color.h:711
static const Color kDarkSalmon
0xE9967A.
Definition: Color.h:211
static const Color kMediumOrchid
0xBA55D3.
Definition: Color.h:466
static const Color kDarkMagenta
0x8B008B.
Definition: Color.h:186
static const Color kDarkGoldenrod
0xB8860B.
Definition: Color.h:166
static const Color kDarkSlateGray
0x2F4F4F.
Definition: Color.h:226
static const Color kMintcream
0xF5FFFA.
Definition: Color.h:506
static const Color kMidnightBlue
0x191970.
Definition: Color.h:501
static const Color kCrimson
0xDC143C.
Definition: Color.h:146
static const Color kBisque
0xFFE4C4.
Definition: Color.h:81
static const Color kLightBlue
0xADD8E6.
Definition: Color.h:366
static const Color kBrown
0xA52A2A.
Definition: Color.h:106
static const Color kPapayaWhip
0xFFEFD5.
Definition: Color.h:581
static const Color kMediumSeaGreen
0x3CB371.
Definition: Color.h:476
static const Color kWheat
0xF5DEB3.
Definition: Color.h:726
static const Color kDarkSlateBlue
0x483D8B.
Definition: Color.h:221
static const Color kSeaGreen
0x2E8B57.
Definition: Color.h:646
static const Color kFloralWhite
0xFFFAF0.
Definition: Color.h:266
static const Color kCornsilk
0xFFF8DC.
Definition: Color.h:141
static const Color kSienna
0xA0522D.
Definition: Color.h:656
static const Color kBurlywood
0xDEB887.
Definition: Color.h:111
static const Color kPowderBlue
0xB0E0E6.
Definition: Color.h:606
static const Color kLimeGreen
0x32CD32.
Definition: Color.h:436
static const Color kChartreuse
0x7FFF00.
Definition: Color.h:121
static const Color kLawnGreen
0x7CFC00.
Definition: Color.h:356
static const Color kMediumTurquoise
0x48D1CC.
Definition: Color.h:491
static const Color kLightYellow
0xFFFFE0.
Definition: Color.h:426
static const Color kChocolate
0xD2691E.
Definition: Color.h:126
static const Color kWhite
0xFFFFFF.
Definition: Color.h:731
static const Color kDarkSeaGreen
0x8FBC8F.
Definition: Color.h:216
static const Color kMagenta
0xFF00FF.
Definition: Color.h:446
static const Color kDeepSkyBlue
0x00BFFF.
Definition: Color.h:246
static const Color kFirstRed
0xED1C24.
Definition: Color.h:42
static const Color kGoldenrod
0xDAA520.
Definition: Color.h:296
static const Color kBeige
0xF5F5DC.
Definition: Color.h:76
static const Color kSteelBlue
0x4682B4.
Definition: Color.h:691
static const Color kDarkKhaki
0xBDB76B.
Definition: Color.h:181
static const Color kNavajoWhite
0xFFDEAD.
Definition: Color.h:521
static const Color kPink
0xFFC0CB.
Definition: Color.h:596
static const Color kLinen
0xFAF0E6.
Definition: Color.h:441
static const Color kAquamarine
0x7FFFD4.
Definition: Color.h:66
constexpr Color(std::string_view hexString)
Constructs a Color from a hex string.
Definition: Color.h:781
static const Color kSilver
0xC0C0C0.
Definition: Color.h:661
static const Color kCyan
0x00FFFF.
Definition: Color.h:151
static const Color kSandyBrown
0xF4A460.
Definition: Color.h:641
static const Color kOlive
0x808000.
Definition: Color.h:536
static const Color kDarkOliveGreen
0x556B2F.
Definition: Color.h:191
static const Color kThistle
0xD8BFD8.
Definition: Color.h:706
static const Color kMaroon
0x800000.
Definition: Color.h:451
static const Color kAqua
0x00FFFF.
Definition: Color.h:61
static const Color kDarkGray
0xA9A9A9.
Definition: Color.h:171
static const Color kIndianRed
0xCD5C5C.
Definition: Color.h:326
static const Color kPeru
0xCD853F.
Definition: Color.h:591
static const Color kLightGoldenrodYellow
0xFAFAD2.
Definition: Color.h:381
static const Color kYellow
0xFFFF00.
Definition: Color.h:741
constexpr auto HexString() const
Return this color represented as a hex string.
Definition: Color.h:855
static const Color kCornflowerBlue
0x6495ED.
Definition: Color.h:136
static const Color kCadetBlue
0x5F9EA0.
Definition: Color.h:116
static const Color kLightGray
0xD3D3D3.
Definition: Color.h:386
static const Color kGainsboro
0xDCDCDC.
Definition: Color.h:281
static const Color kDarkBlue
0x00008B.
Definition: Color.h:156
static const Color kGhostWhite
0xF8F8FF.
Definition: Color.h:286
static const Color kOrange
0xFFA500.
Definition: Color.h:546
static const Color kWhiteSmoke
0xF5F5F5.
Definition: Color.h:736
static const Color kNavy
0x000080.
Definition: Color.h:526
static const Color kSkyBlue
0x87CEEB.
Definition: Color.h:666
static const Color kLightCyan
0xE0FFFF.
Definition: Color.h:376
static const Color kPaleTurquoise
0xAFEEEE.
Definition: Color.h:571
static const Color kSaddleBrown
0x8B4513.
Definition: Color.h:631
static const Color kSlateBlue
0x6A5ACD.
Definition: Color.h:671
static const Color kLime
0x00FF00.
Definition: Color.h:431
static const Color kLightPink
0xFFB6C1.
Definition: Color.h:396
basic_string_view< char > string_view
Definition: core.h:501
Definition: AprilTagPoseEstimator.h:15
static constexpr const unit_t< compound_unit< energy::joule, time::seconds > > h(6.626070040e-34)
Planck constant.
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
std::basic_string< Char > format(const text_style &ts, const S &format_str, const Args &... args)
\rst Formats arguments and returns the result as a string using ANSI escape sequences to specify text...
Definition: color.h:534