Implemented warm white (and added cool white) RGBW white algorithms

This commit is contained in:
penfold42
2018-12-31 16:10:25 +11:00
parent b77e7c4acd
commit bceb255b7a
2 changed files with 33 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ WhiteAlgorithm stringToWhiteAlgorithm(QString str)
{
if (str == "subtract_minimum") return SUBTRACT_MINIMUM;
if (str == "sub_min_warm_adjust") return SUB_MIN_WARM_ADJUST;
if (str == "sub_min_cool_adjust") return SUB_MIN_COOL_ADJUST;
if (str.isEmpty() || str == "white_off") return WHITE_OFF;
return INVALID;
}
@@ -28,7 +29,31 @@ void Rgb_to_Rgbw(ColorRgb input, ColorRgbw * output, const WhiteAlgorithm algori
case SUB_MIN_WARM_ADJUST:
{
Error(Logger::getInstance("RGBtoRGBW"), "white algorithm 'sub_min_warm_adjust' is not implemented yet." );
// http://forum.garagecube.com/viewtopic.php?t=10178
// warm white
float F1 = 0.274;
float F2 = 0.454;
float F3 = 2.333;
output->white = qMin(input.red*F1,qMin(input.green*F2,input.blue*F3));
output->red = input.red - output->white/F1;
output->green = input.green - output->white/F2;
output->blue = input.blue - output->white/F3;
break;
}
case SUB_MIN_COOL_ADJUST:
{
// http://forum.garagecube.com/viewtopic.php?t=10178
// cold white
float F1 = 0.299;
float F2 = 0.587;
float F3 = 0.114;
output->white = qMin(input.red*F1,qMin(input.green*F2,input.blue*F3));
output->red = input.red - output->white/F1;
output->green = input.green - output->white/F2;
output->blue = input.blue - output->white/F3;
break;
}