From 926441549e3314c7b5876a4541b484b36ab68268 Mon Sep 17 00:00:00 2001 From: LordGrey <48840279+Lord-Grey@users.noreply.github.com> Date: Fri, 13 Dec 2024 10:13:22 +0100 Subject: [PATCH] Fix adjustments calculation --- include/utils/global_defines.h | 2 +- libsrc/hyperion/MultiColorAdjustment.cpp | 16 ++++++++-------- libsrc/utils/RgbChannelAdjustment.cpp | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/utils/global_defines.h b/include/utils/global_defines.h index e250f456..e901deb3 100644 --- a/include/utils/global_defines.h +++ b/include/utils/global_defines.h @@ -8,4 +8,4 @@ #define QSTRING_CSTR(str) str.toUtf8().constData() typedef QList< int > QIntList; -constexpr uint32_t UINT8_MAX_SQUARED = static_cast(UINT8_MAX) * UINT8_MAX; +constexpr double DOUBLE_MAX_SQUARED = static_cast(std::numeric_limits::max()) * std::numeric_limits::max(); diff --git a/libsrc/hyperion/MultiColorAdjustment.cpp b/libsrc/hyperion/MultiColorAdjustment.cpp index 3f2d3412..b2ea28d7 100644 --- a/libsrc/hyperion/MultiColorAdjustment.cpp +++ b/libsrc/hyperion/MultiColorAdjustment.cpp @@ -125,14 +125,14 @@ void MultiColorAdjustment::applyAdjustment(std::vector& ledColors) uint32_t nr_g = static_cast((UINT8_MAX - ored) * ogreen); uint32_t r_g = static_cast(ored * ogreen); - uint8_t black = static_cast(nr_ng * (UINT8_MAX - oblue) / UINT8_MAX_SQUARED); - uint8_t red = static_cast(r_ng * (UINT8_MAX - oblue) / UINT8_MAX_SQUARED); - uint8_t green = static_cast(nr_g * (UINT8_MAX - oblue) / UINT8_MAX_SQUARED); - uint8_t blue = static_cast(nr_ng * (oblue) / UINT8_MAX_SQUARED); - uint8_t cyan = static_cast(nr_g * (oblue) / UINT8_MAX_SQUARED); - uint8_t magenta = static_cast(r_ng * (oblue) / UINT8_MAX_SQUARED); - uint8_t yellow = static_cast(r_g * (UINT8_MAX - oblue) / UINT8_MAX_SQUARED); - uint8_t white = static_cast(r_g * (oblue) / UINT8_MAX_SQUARED); + uint8_t black = static_cast(nr_ng * (UINT8_MAX - oblue) / DOUBLE_MAX_SQUARED); + uint8_t red = static_cast(r_ng * (UINT8_MAX - oblue) / DOUBLE_MAX_SQUARED); + uint8_t green = static_cast(nr_g * (UINT8_MAX - oblue) / DOUBLE_MAX_SQUARED); + uint8_t blue = static_cast(nr_ng * (oblue) / DOUBLE_MAX_SQUARED); + uint8_t cyan = static_cast(nr_g * (oblue) / DOUBLE_MAX_SQUARED); + uint8_t magenta = static_cast(r_ng * (oblue) / DOUBLE_MAX_SQUARED); + uint8_t yellow = static_cast(r_g * (UINT8_MAX - oblue) / DOUBLE_MAX_SQUARED); + uint8_t white = static_cast(r_g * (oblue) / DOUBLE_MAX_SQUARED); uint8_t OR, OG, OB; // Original Colors uint8_t RR, RG, RB; // Red Adjustments diff --git a/libsrc/utils/RgbChannelAdjustment.cpp b/libsrc/utils/RgbChannelAdjustment.cpp index 8b222832..96647adf 100644 --- a/libsrc/utils/RgbChannelAdjustment.cpp +++ b/libsrc/utils/RgbChannelAdjustment.cpp @@ -61,10 +61,10 @@ void RgbChannelAdjustment::apply(uint8_t input, uint8_t brightness, uint8_t & re if (!_initialized[input]) { - const int adjustedInput = static_cast(_brightness * input / UINT8_MAX_SQUARED); - _mapping.red[input] = static_cast(qBound(0, _adjust.red * adjustedInput, static_cast(UINT8_MAX))); - _mapping.green[input] = static_cast(qBound(0 ,_adjust.green * adjustedInput, static_cast(UINT8_MAX))); - _mapping.blue[input] = static_cast(qBound(0, _adjust.blue * adjustedInput, static_cast(UINT8_MAX))); + const double adjustedInput = _brightness * input / DOUBLE_MAX_SQUARED; + _mapping.red[input] = static_cast(qBound(0, static_cast(_adjust.red * adjustedInput), static_cast(UINT8_MAX))); + _mapping.green[input] = static_cast(qBound(0 ,static_cast(_adjust.green * adjustedInput), static_cast(UINT8_MAX))); + _mapping.blue[input] = static_cast(qBound(0, static_cast(_adjust.blue * adjustedInput), static_cast(UINT8_MAX))); _initialized[input] = true; } red = _mapping.red[input];