From 5ef7cd7bddaafd5ed5de3533574d9b3f7d070bb1 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Tue, 18 Jul 2023 11:29:08 +0200 Subject: [PATCH] blur bugfix turns out that fastLED 3.6.0 has an explicit uint32_t operator that returns RGBA, however 3.5.0 does not have this and the conversion returned only the "red" component". --- wled00/FX_2Dfcn.cpp | 8 ++++---- wled00/FX_fcn.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index 417d0484..71000e90 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -340,7 +340,7 @@ void Segment::blurRow(uint16_t row, fract8 blur_amount) { CRGB carryover = CRGB::Black; for (uint_fast16_t x = 0; x < cols; x++) { CRGB cur = getPixelColorXY(x, row); - uint32_t before = uint32_t(cur); // remember color before blur + CRGB before = cur; // remember color before blur CRGB part = cur; part.nscale8(seep); cur.nscale8(keep); @@ -349,7 +349,7 @@ void Segment::blurRow(uint16_t row, fract8 blur_amount) { CRGB prev = CRGB(getPixelColorXY(x-1, row)) + part; setPixelColorXY(x-1, row, prev); } - if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + if (before != cur) // optimization: only set pixel if color has changed setPixelColorXY(x, row, cur); carryover = part; } @@ -369,7 +369,7 @@ void Segment::blurCol(uint16_t col, fract8 blur_amount) { for (uint_fast16_t y = 0; y < rows; y++) { CRGB cur = getPixelColorXY(col, y); CRGB part = cur; - uint32_t before = uint32_t(cur); // remember color before blur + CRGB before = cur; // remember color before blur part.nscale8(seep); cur.nscale8(keep); cur += carryover; @@ -377,7 +377,7 @@ void Segment::blurCol(uint16_t col, fract8 blur_amount) { CRGB prev = CRGB(getPixelColorXY(col, y-1)) + part; setPixelColorXY(col, y-1, prev); } - if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + if (before != cur) // optimization: only set pixel if color has changed setPixelColorXY(col, y, cur); carryover = part; } diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 43d2aa4e..e23051a4 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -911,7 +911,7 @@ void Segment::blur(uint8_t blur_amount) { CRGB cur = CRGB(getPixelColor(i)); CRGB part = cur; - uint32_t before = uint32_t(cur); // remember color before blur + CRGB before = cur; // remember color before blur part.nscale8(seep); cur.nscale8(keep); cur += carryover; @@ -922,7 +922,7 @@ void Segment::blur(uint8_t blur_amount) uint8_t b = B(c); setPixelColor((uint16_t)(i-1), qadd8(r, part.red), qadd8(g, part.green), qadd8(b, part.blue)); } - if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + if (before != cur) // optimization: only set pixel if color has changed setPixelColor((uint16_t)i,cur.red, cur.green, cur.blue); carryover = part; }