Updated aut-white calculation.
This commit is contained in:
parent
8ca298b299
commit
f55f803531
@ -124,21 +124,15 @@ class Bus {
|
|||||||
uint8_t _autoWhiteMode = 0;
|
uint8_t _autoWhiteMode = 0;
|
||||||
|
|
||||||
uint32_t autoWhiteCalc(uint32_t c) {
|
uint32_t autoWhiteCalc(uint32_t c) {
|
||||||
switch (_autoWhiteMode) {
|
if (_autoWhiteMode == RGBW_MODE_MANUAL_ONLY) return c;
|
||||||
case RGBW_MODE_MANUAL_ONLY:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
//white value is set to lowest RGB channel, thank you to @Def3nder!
|
|
||||||
uint8_t r = R(c);
|
uint8_t r = R(c);
|
||||||
uint8_t g = G(c);
|
uint8_t g = G(c);
|
||||||
uint8_t b = B(c);
|
uint8_t b = B(c);
|
||||||
uint8_t w = W(c);
|
uint8_t w = W(c);
|
||||||
if (_autoWhiteMode == RGBW_MODE_AUTO_BRIGHTER || w == 0) w = r < g ? (r < b ? r : b) : (g < b ? g : b);
|
// ignore auto-white calculation if w>0 and mode DUAL (DUAL behaves as BRIGHTER if w==0)
|
||||||
if (_autoWhiteMode == RGBW_MODE_AUTO_ACCURATE) { r -= w; g -= w; b -= w; }
|
if (!(w > 0 && _autoWhiteMode == RGBW_MODE_DUAL)) w = r < g ? (r < b ? r : b) : (g < b ? g : b);
|
||||||
c = RGBW32(r, g, b, w);
|
if (_autoWhiteMode == RGBW_MODE_AUTO_ACCURATE) { r -= w; g -= w; b -= w; } // subtract w in ACCURATE mode
|
||||||
break;
|
return RGBW32(r, g, b, w);
|
||||||
}
|
|
||||||
return c;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user