mirror of
https://github.com/wled/WLED.git
synced 2025-07-19 08:46:34 +00:00
Merge pull request #4712 from willmmiles/2d-expansion-fadeout-fix
Fix Segment::fade_out for 2d expansion
This commit is contained in:
commit
c0875b36bb
@ -723,6 +723,13 @@ class Segment {
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
inline unsigned rawLength() const { // returns length of used raw pixel buffer (eg. get/setPixelColorRaw())
|
||||
#ifndef WLED_DISABLE_2D
|
||||
if (is2D()) return virtualWidth() * virtualHeight();
|
||||
#endif
|
||||
return virtualLength();
|
||||
}
|
||||
|
||||
#ifndef WLED_DISABLE_2D
|
||||
inline bool is2D() const { return (width()>1 && height()>1); }
|
||||
[[gnu::hot]] void setPixelColorXY(int x, int y, uint32_t c) const; // set relative pixel within segment with color
|
||||
|
@ -987,7 +987,8 @@ void Segment::fade_out(uint8_t rate) const {
|
||||
if (!isActive()) return; // not active
|
||||
rate = (256-rate) >> 1;
|
||||
const int mappedRate = 256 / (rate + 1);
|
||||
for (unsigned j = 0; j < vLength(); j++) {
|
||||
const size_t rlength = rawLength(); // calculate only once
|
||||
for (unsigned j = 0; j < rlength; j++) {
|
||||
uint32_t color = getPixelColorRaw(j);
|
||||
if (color == colors[1]) continue; // already at target color
|
||||
for (int i = 0; i < 32; i += 8) {
|
||||
@ -1008,13 +1009,15 @@ void Segment::fade_out(uint8_t rate) const {
|
||||
// fades all pixels to secondary color
|
||||
void Segment::fadeToSecondaryBy(uint8_t fadeBy) const {
|
||||
if (!isActive() || fadeBy == 0) return; // optimization - no scaling to apply
|
||||
for (unsigned i = 0; i < vLength(); i++) setPixelColorRaw(i, color_blend(getPixelColorRaw(i), colors[1], fadeBy));
|
||||
const size_t rlength = rawLength(); // calculate only once
|
||||
for (unsigned i = 0; i < rlength; i++) setPixelColorRaw(i, color_blend(getPixelColorRaw(i), colors[1], fadeBy));
|
||||
}
|
||||
|
||||
// fades all pixels to black using nscale8()
|
||||
void Segment::fadeToBlackBy(uint8_t fadeBy) const {
|
||||
if (!isActive() || fadeBy == 0) return; // optimization - no scaling to apply
|
||||
for (unsigned i = 0; i < vLength(); i++) setPixelColorRaw(i, color_fade(getPixelColorRaw(i), 255-fadeBy));
|
||||
const size_t rlength = rawLength(); // calculate only once
|
||||
for (unsigned i = 0; i < rlength; i++) setPixelColorRaw(i, color_fade(getPixelColorRaw(i), 255-fadeBy));
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user