58 static_assert(data.count == 7 || data.count == 9,
"Invalid Color, wrong length");
59 static_assert(data.data[0] ==
'#',
"Invalid Color, must begin with '#'");
61 static_assert(char_is_hex(data.data[1]),
"Invalid char (1), must be hexadecimal");
62 static_assert(char_is_hex(data.data[2]),
"Invalid char (2), must be hexadecimal");
63 static_assert(char_is_hex(data.data[3]),
"Invalid char (3), must be hexadecimal");
64 static_assert(char_is_hex(data.data[4]),
"Invalid char (4), must be hexadecimal");
65 static_assert(char_is_hex(data.data[5]),
"Invalid char (5), must be hexadecimal");
66 static_assert(char_is_hex(data.data[6]),
"Invalid char (6), must be hexadecimal");
67 if constexpr (data.count == 9) {
68 static_assert(char_is_hex(data.data[7]),
"Invalid char (7), must be hexadecimal");
69 static_assert(char_is_hex(data.data[8]),
"Invalid char (8), must be hexadecimal");
73 (void) std::from_chars(&data.data[1], &data.data[3], r, 16);
75 (void) std::from_chars(&data.data[3], &data.data[5], g, 16);
77 (void) std::from_chars(&data.data[5], &data.data[7], b, 16);
78 if (data.count == 9) {
80 (void) std::from_chars(&data.data[7], &data.data[9], a, 16);
81 return {(double) r / 255.0, (
double) g / 255.0, (double) b / 255.0, (
double) a / 255.0};
83 return {(double) r / 255.0, (
double) g / 255.0, (double) b / 255.0, 1.0};