mirror of
https://github.com/wled/WLED.git
synced 2025-04-24 14:57:18 +00:00
Bugfix for color_blend
This commit is contained in:
parent
7be460e8b1
commit
05cd7d753e
@ -16,7 +16,7 @@ uint32_t color_blend(uint32_t color1, uint32_t color2, uint8_t blend) {
|
||||
uint32_t rb2 = color2 & mask;
|
||||
uint32_t wg2 = (color2 >> 8) & mask;
|
||||
uint32_t rb3 = ((((rb1 << 8) | rb2) + (rb2 * blend) - (rb1 * blend)) >> 8) & mask;
|
||||
uint32_t wg3 = ((((wg1 << 8) | wg2) + (wg2 * blend) - (wg1 * blend))) & mask;
|
||||
uint32_t wg3 = ((((wg1 << 8) | wg2) + (wg2 * blend) - (wg1 * blend))) & ~mask;
|
||||
return rb3 | wg3;
|
||||
}
|
||||
|
||||
@ -48,7 +48,7 @@ uint32_t color_add(uint32_t c1, uint32_t c2, bool preserveCR)
|
||||
if (max > 255) {
|
||||
const uint32_t scale = (uint32_t(255)<<8) / max; // division of two 8bit (shifted) values does not work -> use bit shifts and multiplaction instead
|
||||
rb = ((rb * scale) >> 8) & mask; //
|
||||
wg = (wg * scale) & mask;
|
||||
wg = (wg * scale) & ~mask;
|
||||
} else wg = wg << 8; //shift white and green back to correct position
|
||||
return rb | wg;
|
||||
} else {
|
||||
@ -81,7 +81,7 @@ uint32_t color_fade(uint32_t c1, uint8_t amount, bool video)
|
||||
}
|
||||
const uint32_t mask = 0x00FF00FF;
|
||||
uint32_t rb = (((c1 & mask) * scale) >> 8) & mask; // scale red and blue
|
||||
uint32_t wg = (((c1 >> 8) & mask) * scale) & (mask << 8); // scale white and green
|
||||
uint32_t wg = (((c1 >> 8) & mask) * scale) & ~mask; // scale white and green
|
||||
scaledcolor = (rb | wg) + addRemains;
|
||||
return scaledcolor;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user