13 uint8_t first_color, second_color, third_color;
14 uint8_t first_bits = 0;
15 uint8_t second_bits = 0;
16 uint8_t third_bits = 0;
18 switch (color_bitness) {
36 first_color = right_bit_aligned ? esp_scale(((colorcode >> (second_bits + third_bits)) & ((1 << first_bits) - 1)),
37 ((1 << first_bits) - 1))
38 : esp_scale(((colorcode >> 16) & 0xFF), (1 << first_bits) - 1);
40 second_color = right_bit_aligned
41 ? esp_scale(((colorcode >> third_bits) & ((1 << second_bits) - 1)), ((1 << second_bits) - 1))
42 : esp_scale(((colorcode >> 8) & 0xFF), ((1 << second_bits) - 1));
44 third_color = (right_bit_aligned ? esp_scale(((colorcode >> 0) & ((1 << third_bits) - 1)), ((1 << third_bits) - 1))
45 : esp_scale(((colorcode >> 0) & 0xFF), (1 << third_bits) - 1));
49 switch (color_order) {
51 color_return.
r = first_color;
52 color_return.
g = second_color;
53 color_return.
b = third_color;
56 color_return.
b = first_color;
57 color_return.
g = second_color;
58 color_return.
r = third_color;
61 color_return.
g = first_color;
62 color_return.
r = second_color;
63 color_return.
b = third_color;
72 uint16_t red_color, green_color, blue_color;
74 red_color = esp_scale8(color.
red, ((1 << 3) - 1));
75 green_color = esp_scale8(color.
green, ((1 << 3) - 1));
76 blue_color = esp_scale8(color.
blue, (1 << 2) - 1);
78 switch (color_order) {
80 return red_color << 5 | green_color << 2 | blue_color;
82 return blue_color << 6 | green_color << 3 | red_color;
84 return green_color << 5 | red_color << 2 | blue_color;
89 uint16_t red_color, green_color, blue_color;
91 red_color = esp_scale8(color.
red, ((1 << 5) - 1));
92 green_color = esp_scale8(color.
green, ((1 << 6) - 1));
93 blue_color = esp_scale8(color.
blue, (1 << 5) - 1);
95 switch (color_order) {
97 return red_color << 11 | green_color << 5 | blue_color;
99 return blue_color << 11 | green_color << 5 | red_color;
101 return green_color << 10 | red_color << 5 | blue_color;
120 uint8_t closest_index = 0;
121 uint32_t minimum_dist2 = UINT32_MAX;
124 int16_t tgt_r = color.
r;
125 int16_t tgt_g = color.
g;
126 int16_t tgt_b = color.
b;
129 for (uint16_t i = 0; i < 256; i++) {
131 int16_t plt_r = (int16_t) palette[i * 3 + 0];
132 int16_t plt_g = (int16_t) palette[i * 3 + 1];
133 int16_t plt_b = (int16_t) palette[i * 3 + 2];
139 if (dist2 < minimum_dist2) {
140 minimum_dist2 = dist2;
141 closest_index = (uint8_t) i;
144 return closest_index;