Display gaps in peek, fix segment overflow bug (#5105)
- display gaps in peek - fix segment overflow bug when loading preset with larger bounds than current setup
This commit is contained in:
parent
32b104e1a9
commit
9094b3130d
@ -172,7 +172,7 @@ uint16_t mode_copy_segment(void) {
|
|||||||
} else { // 1D source, source can be expanded into 2D
|
} else { // 1D source, source can be expanded into 2D
|
||||||
for (unsigned i = 0; i < SEGMENT.vLength(); i++) {
|
for (unsigned i = 0; i < SEGMENT.vLength(); i++) {
|
||||||
if(SEGMENT.check2) {
|
if(SEGMENT.check2) {
|
||||||
sourcecolor = strip.getPixelColor(i + sourcesegment.start); // read from global buffer (reads the last rendered frame)
|
sourcecolor = strip.getPixelColorNoMap(i + sourcesegment.start); // read from global buffer (reads the last rendered frame)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sourcesegment.setDrawDimensions(); // set to source segment dimensions
|
sourcesegment.setDrawDimensions(); // set to source segment dimensions
|
||||||
|
|||||||
@ -965,7 +965,8 @@ class WS2812FX {
|
|||||||
};
|
};
|
||||||
|
|
||||||
unsigned long now, timebase;
|
unsigned long now, timebase;
|
||||||
inline uint32_t getPixelColor(unsigned n) const { return (n < getLengthTotal()) ? _pixels[n] : 0; } // returns color of pixel n
|
inline uint32_t getPixelColor(unsigned n) const { return (getMappedPixelIndex(n) < getLengthTotal()) ? _pixels[n] : 0; } // returns color of pixel n, black if out of (mapped) bounds
|
||||||
|
inline uint32_t getPixelColorNoMap(unsigned n) const { return (n < getLengthTotal()) ? _pixels[n] : 0; } // ignores mapping table
|
||||||
inline uint32_t getLastShow() const { return _lastShow; } // returns millis() timestamp of last strip.show() call
|
inline uint32_t getLastShow() const { return _lastShow; } // returns millis() timestamp of last strip.show() call
|
||||||
|
|
||||||
const char *getModeData(unsigned id = 0) const { return (id && id < _modeCount) ? _modeData[id] : PSTR("Solid"); }
|
const char *getModeData(unsigned id = 0) const { return (id && id < _modeCount) ? _modeData[id] : PSTR("Solid"); }
|
||||||
|
|||||||
@ -458,7 +458,7 @@ void Segment::setGeometry(uint16_t i1, uint16_t i2, uint8_t grp, uint8_t spc, ui
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (i1 < Segment::maxWidth || (i1 >= Segment::maxWidth*Segment::maxHeight && i1 < strip.getLengthTotal())) start = i1; // Segment::maxWidth equals strip.getLengthTotal() for 1D
|
if (i1 < Segment::maxWidth || (i1 >= Segment::maxWidth*Segment::maxHeight && i1 < strip.getLengthTotal())) start = i1; // Segment::maxWidth equals strip.getLengthTotal() for 1D
|
||||||
stop = i2 > Segment::maxWidth*Segment::maxHeight ? MIN(i2,strip.getLengthTotal()) : constrain(i2, 1, Segment::maxWidth);
|
stop = i2 > Segment::maxWidth*Segment::maxHeight && i1 >= Segment::maxWidth*Segment::maxHeight ? MIN(i2,strip.getLengthTotal()) : constrain(i2, 1, Segment::maxWidth); // check for 2D trailing strip
|
||||||
startY = 0;
|
startY = 0;
|
||||||
stopY = 1;
|
stopY = 1;
|
||||||
#ifndef WLED_DISABLE_2D
|
#ifndef WLED_DISABLE_2D
|
||||||
|
|||||||
@ -230,7 +230,7 @@ bool sendLiveLedsWs(uint32_t wsClient)
|
|||||||
#ifndef WLED_DISABLE_2D
|
#ifndef WLED_DISABLE_2D
|
||||||
if (strip.isMatrix && n>1 && (i/Segment::maxWidth)%n) i += Segment::maxWidth * (n-1);
|
if (strip.isMatrix && n>1 && (i/Segment::maxWidth)%n) i += Segment::maxWidth * (n-1);
|
||||||
#endif
|
#endif
|
||||||
uint32_t c = strip.getPixelColor(i);
|
uint32_t c = strip.getPixelColor(i); // note: LEDs mapped outside of valid range are set to black
|
||||||
uint8_t r = R(c);
|
uint8_t r = R(c);
|
||||||
uint8_t g = G(c);
|
uint8_t g = G(c);
|
||||||
uint8_t b = B(c);
|
uint8_t b = B(c);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user