Do gamma correction elsewhere

Instead of doing gamma correction when setting a LED color, do it elsewhere,
when talking to the LED hardware. This way, both the programmer, and the
end-user will deal with the unaltered, raw RGB values, and neither has to care
about when and how gamma correction is applied.

The counterpart of this will be in KeyboardioScanner, that re-introduces gamma
correction on that end.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
pull/365/head
Gergely Nagy 8 years ago
parent 12603e09b6
commit ca74d9b6b7

@ -12,25 +12,6 @@ static constexpr uint8_t key_led_map[4][16] = {
{0,7, 8,15,16,23,31,30, 33,32,40,47,48,55,56,63}, {0,7, 8,15,16,23,31,30, 33,32,40,47,48,55,56,63},
}; };
const uint8_t PROGMEM gamma8[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5,
5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10,
10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16,
17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25,
25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36,
37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50,
51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68,
69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89,
90, 92, 93, 95, 96, 98, 99,101,102,104,105,107,109,110,112,114,
115,117,119,120,122,124,126,127,129,131,133,135,137,138,140,142,
144,146,148,150,152,154,156,158,160,162,164,167,169,171,173,175,
177,180,182,184,186,189,191,193,196,198,200,203,205,208,210,213,
215,218,220,223,225,228,231,233,236,239,241,244,247,249,252,255
};
Model01::Model01(void) { Model01::Model01(void) {
} }
@ -79,13 +60,7 @@ void Model01::setup(void) {
} }
void Model01::led_set_crgb_at(uint8_t i, cRGB crgb_) { void Model01::led_set_crgb_at(uint8_t i, cRGB crgb) {
cRGB crgb;
crgb.r = pgm_read_byte(&gamma8[crgb_.r]);
crgb.g = pgm_read_byte(&gamma8[crgb_.g]);
crgb.b = pgm_read_byte(&gamma8[crgb_.b]);
if(i<32) { if(i<32) {
cRGB oldColor = led_get_crgb_at(i); cRGB oldColor = led_get_crgb_at(i);
isLEDChanged |= !(oldColor.r == crgb.r && oldColor.g == crgb.g && oldColor.b == crgb.b); isLEDChanged |= !(oldColor.r == crgb.r && oldColor.g == crgb.g && oldColor.b == crgb.b);

Loading…
Cancel
Save