17static constexpr uint8_t COLORCONV_GRAY_THRESHOLD = 50;
30template<
typename NATIVE_COLOR>
31constexpr NATIVE_COLOR
color_to_bwyr(
Color color, NATIVE_COLOR hw_black, NATIVE_COLOR hw_white, NATIVE_COLOR hw_yellow,
32 NATIVE_COLOR hw_red) {
37 const auto [min_rgb, max_rgb] = std::minmax({color.
r, color.
g, color.
b});
39 if ((max_rgb - min_rgb) < COLORCONV_GRAY_THRESHOLD) {
42 if ((
static_cast<int>(color.
r) + color.
g + color.
b) > 382) {
51 const bool r_on = (color.
r > 128);
52 const bool g_on = (color.
g > 128);
53 const bool b_on = (color.
b > 128);
57 return g_on ? hw_yellow : hw_red;
63 return (b_on && g_on) ? hw_white : hw_black;
79template<
typename NATIVE_COLOR>
80constexpr NATIVE_COLOR
color_to_bwr(
Color color, NATIVE_COLOR hw_black, NATIVE_COLOR hw_white, NATIVE_COLOR hw_red) {
101template<
typename NATIVE_COLOR>
103 NATIVE_COLOR hw_yellow, NATIVE_COLOR hw_red, NATIVE_COLOR hw_green,
104 NATIVE_COLOR hw_blue) {
105 const auto [min_rgb, max_rgb] = std::minmax({color.
r, color.
g, color.
b});
107 if ((max_rgb - min_rgb) < COLORCONV_GRAY_THRESHOLD) {
108 if ((
static_cast<int>(color.
r) + color.
g + color.
b) > 382) {
114 const bool r_on = (color.
r > 128);
115 const bool g_on = (color.
g > 128);
116 const bool b_on = (color.
b > 128);
118 if (r_on && g_on && !b_on) {
121 if (r_on && !g_on && !b_on) {
124 if (!r_on && g_on && !b_on) {
127 if (!r_on && !g_on && b_on) {
131 if (!r_on && g_on && b_on) {
163template<
typename NATIVE_COLOR>
165 NATIVE_COLOR hw_yellow, NATIVE_COLOR hw_red, NATIVE_COLOR hw_green,
166 NATIVE_COLOR hw_blue, NATIVE_COLOR hw_orange) {
167 const auto [min_rgb, max_rgb] = std::minmax({color.
r, color.
g, color.
b});
169 if ((max_rgb - min_rgb) < COLORCONV_GRAY_THRESHOLD) {
170 if ((
static_cast<int>(color.
r) + color.
g + color.
b) > 382) {
176 const bool r_on = (color.
r > 128);
177 const bool g_on = (color.
g > 128);
178 const bool b_on = (color.
b > 128);
192 if (!r_on && g_on && !b_on) {
195 if (!r_on && !g_on && b_on) {
199 if (!r_on && g_on && b_on) {
constexpr NATIVE_COLOR color_to_bwyrgbo(Color color, NATIVE_COLOR hw_black, NATIVE_COLOR hw_white, NATIVE_COLOR hw_yellow, NATIVE_COLOR hw_red, NATIVE_COLOR hw_green, NATIVE_COLOR hw_blue, NATIVE_COLOR hw_orange)
Map RGB color to discrete BWYRGBO hex 7 color key.
constexpr NATIVE_COLOR color_to_bwr(Color color, NATIVE_COLOR hw_black, NATIVE_COLOR hw_white, NATIVE_COLOR hw_red)
Map RGB color to discrete BWR (black/white/red) 3 color key.
constexpr NATIVE_COLOR color_to_bwyrgb(Color color, NATIVE_COLOR hw_black, NATIVE_COLOR hw_white, NATIVE_COLOR hw_yellow, NATIVE_COLOR hw_red, NATIVE_COLOR hw_green, NATIVE_COLOR hw_blue)
Map RGB color to discrete BWYRGB hex 6 color key.
constexpr NATIVE_COLOR color_to_bwyr(Color color, NATIVE_COLOR hw_black, NATIVE_COLOR hw_white, NATIVE_COLOR hw_yellow, NATIVE_COLOR hw_red)
Map RGB color to discrete BWYR hex 4 color key.