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<uint32_t>(UINT8_MAX) * UINT8_MAX; +constexpr double DOUBLE_MAX_SQUARED = static_cast<double>(std::numeric_limits<unsigned char>::max()) * std::numeric_limits<unsigned char>::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<ColorRgb>& ledColors) uint32_t nr_g = static_cast<uint32_t>((UINT8_MAX - ored) * ogreen); uint32_t r_g = static_cast<uint32_t>(ored * ogreen); - uint8_t black = static_cast<uint8_t>(nr_ng * (UINT8_MAX - oblue) / UINT8_MAX_SQUARED); - uint8_t red = static_cast<uint8_t>(r_ng * (UINT8_MAX - oblue) / UINT8_MAX_SQUARED); - uint8_t green = static_cast<uint8_t>(nr_g * (UINT8_MAX - oblue) / UINT8_MAX_SQUARED); - uint8_t blue = static_cast<uint8_t>(nr_ng * (oblue) / UINT8_MAX_SQUARED); - uint8_t cyan = static_cast<uint8_t>(nr_g * (oblue) / UINT8_MAX_SQUARED); - uint8_t magenta = static_cast<uint8_t>(r_ng * (oblue) / UINT8_MAX_SQUARED); - uint8_t yellow = static_cast<uint8_t>(r_g * (UINT8_MAX - oblue) / UINT8_MAX_SQUARED); - uint8_t white = static_cast<uint8_t>(r_g * (oblue) / UINT8_MAX_SQUARED); + uint8_t black = static_cast<uint8_t>(nr_ng * (UINT8_MAX - oblue) / DOUBLE_MAX_SQUARED); + uint8_t red = static_cast<uint8_t>(r_ng * (UINT8_MAX - oblue) / DOUBLE_MAX_SQUARED); + uint8_t green = static_cast<uint8_t>(nr_g * (UINT8_MAX - oblue) / DOUBLE_MAX_SQUARED); + uint8_t blue = static_cast<uint8_t>(nr_ng * (oblue) / DOUBLE_MAX_SQUARED); + uint8_t cyan = static_cast<uint8_t>(nr_g * (oblue) / DOUBLE_MAX_SQUARED); + uint8_t magenta = static_cast<uint8_t>(r_ng * (oblue) / DOUBLE_MAX_SQUARED); + uint8_t yellow = static_cast<uint8_t>(r_g * (UINT8_MAX - oblue) / DOUBLE_MAX_SQUARED); + uint8_t white = static_cast<uint8_t>(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<int>(_brightness * input / UINT8_MAX_SQUARED); - _mapping.red[input] = static_cast<quint8>(qBound(0, _adjust.red * adjustedInput, static_cast<int>(UINT8_MAX))); - _mapping.green[input] = static_cast<quint8>(qBound(0 ,_adjust.green * adjustedInput, static_cast<int>(UINT8_MAX))); - _mapping.blue[input] = static_cast<quint8>(qBound(0, _adjust.blue * adjustedInput, static_cast<int>(UINT8_MAX))); + const double adjustedInput = _brightness * input / DOUBLE_MAX_SQUARED; + _mapping.red[input] = static_cast<quint8>(qBound(0, static_cast<int>(_adjust.red * adjustedInput), static_cast<int>(UINT8_MAX))); + _mapping.green[input] = static_cast<quint8>(qBound(0 ,static_cast<int>(_adjust.green * adjustedInput), static_cast<int>(UINT8_MAX))); + _mapping.blue[input] = static_cast<quint8>(qBound(0, static_cast<int>(_adjust.blue * adjustedInput), static_cast<int>(UINT8_MAX))); _initialized[input] = true; } red = _mapping.red[input];