mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Adjustment merge + new brightness settings (#359)
* add new rgbtransform * activate rgbtransform * integrate new transform and gamma in adjustment, disable transform * fix brighness limit * advance upper and lower thresholds * start removing color transform * adjust configs/schema * implement json for new color adjustment * finish hyperion-remote extension for new adjustment settings * fix typos * rename luminance to brightness fix jsonapi for new adjustment * fix some bugs in adjustments * fix i18n * fix gamma via json * now brighness values goes from 0-1 with 0.5 is the default for all brighness is equal between the channels. less 0.5 all channels scaled down to new brighness, above 0.5 if possible channel gets brighter - but brighness is not equal between the channels anymore brighness value curve is now exponential instead of linear - this feels more natural * hslv cleanup
This commit is contained in:
@@ -43,11 +43,19 @@ bool MultiColorAdjustment::verifyAdjustments() const
|
||||
{
|
||||
for (unsigned iLed=0; iLed<_ledAdjustments.size(); ++iLed)
|
||||
{
|
||||
if (_ledAdjustments[iLed] == nullptr)
|
||||
ColorAdjustment * adjustment = _ledAdjustments[iLed];
|
||||
|
||||
if (adjustment == nullptr)
|
||||
{
|
||||
Warning(Logger::getInstance("ColorAdjust"), "No adjustment set for %d", iLed);
|
||||
Error(Logger::getInstance("ColorAdjust"), "No adjustment set for %d", iLed);
|
||||
return false;
|
||||
}
|
||||
if (adjustment->_rgbTransform.getBrightness() <= adjustment->_rgbTransform.getBrightnessMin() )
|
||||
{
|
||||
adjustment->_rgbTransform.setBrightnessMin(0);
|
||||
adjustment->_rgbTransform.setBrightness(0.5);
|
||||
Warning(Logger::getInstance("ColorAdjust"), "Adjustment for %d has invalid Brightness values, values set to default. (brightnessMin is bigger then brightness)", iLed);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -84,20 +92,26 @@ void MultiColorAdjustment::applyAdjustment(std::vector<ColorRgb>& ledColors)
|
||||
continue;
|
||||
}
|
||||
ColorRgb& color = ledColors[i];
|
||||
|
||||
uint8_t ored = color.red;
|
||||
uint8_t ogreen = color.green;
|
||||
uint8_t oblue = color.blue;
|
||||
|
||||
uint32_t nrng = (uint32_t) (255-color.red)*(255-color.green);
|
||||
uint32_t rng = (uint32_t) (color.red) *(255-color.green);
|
||||
uint32_t nrg = (uint32_t) (255-color.red)*(color.green);
|
||||
uint32_t rg = (uint32_t) (color.red) *(color.green);
|
||||
adjustment->_rgbTransform.transform(ored,ogreen,oblue);
|
||||
|
||||
uint32_t nrng = (uint32_t) (255-ored)*(255-ogreen);
|
||||
uint32_t rng = (uint32_t) (ored) *(255-ogreen);
|
||||
uint32_t nrg = (uint32_t) (255-ored)*(ogreen);
|
||||
uint32_t rg = (uint32_t) (ored) *(ogreen);
|
||||
|
||||
uint8_t black = nrng*(255-color.blue)/65025;
|
||||
uint8_t red = rng *(255-color.blue)/65025;
|
||||
uint8_t green = nrg *(255-color.blue)/65025;
|
||||
uint8_t blue = nrng*(color.blue) /65025;
|
||||
uint8_t cyan = nrg *(color.blue) /65025;
|
||||
uint8_t magenta = rng *(color.blue) /65025;
|
||||
uint8_t yellow = rg *(255-color.blue)/65025;
|
||||
uint8_t white = rg *(color.blue) /65025;
|
||||
uint8_t black = nrng*(255-oblue)/65025;
|
||||
uint8_t red = rng *(255-oblue)/65025;
|
||||
uint8_t green = nrg *(255-oblue)/65025;
|
||||
uint8_t blue = nrng*(oblue) /65025;
|
||||
uint8_t cyan = nrg *(oblue) /65025;
|
||||
uint8_t magenta = rng *(oblue) /65025;
|
||||
uint8_t yellow = rg *(255-oblue)/65025;
|
||||
uint8_t white = rg *(oblue) /65025;
|
||||
|
||||
uint8_t OR = adjustment->_rgbBlackAdjustment.getAdjustmentR(black);
|
||||
uint8_t OG = adjustment->_rgbBlackAdjustment.getAdjustmentG(black);
|
||||
|
Reference in New Issue
Block a user