@@ -17,6 +17,10 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId)
1717
1818 uint16_t start = elem[" start" ] | seg.start ;
1919 int stop = elem[" stop" ] | -1 ;
20+ if (stop < 0 ) {
21+ uint16_t len = elem[F (" len" )];
22+ stop = (len > 0 ) ? start + len : seg.stop ;
23+ }
2024
2125 if (elem[" n" ]) {
2226 // name field exists
@@ -35,18 +39,14 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId)
3539 // but is empty (already deleted above)
3640 elem.remove (" n" );
3741 }
38- } else if (elem[ " start" ] || elem[ " stop" ] ) {
42+ } else if (start != seg. start || stop != seg. stop ) {
3943 // clearing or setting segment without name field
4044 if (seg.name ) {
4145 delete[] seg.name ;
4246 seg.name = nullptr ;
4347 }
4448 }
4549
46- if (stop < 0 ) {
47- uint16_t len = elem[F (" len" )];
48- stop = (len > 0 ) ? start + len : seg.stop ;
49- }
5050 uint16_t grp = elem[" grp" ] | seg.grouping ;
5151 uint16_t spc = elem[F (" spc" )] | seg.spacing ;
5252 strip.setSegment (id, start, stop, grp, spc);
@@ -364,7 +364,7 @@ void serializeSegment(JsonObject& root, WS2812FX::Segment& seg, byte id, bool fo
364364 byte segbri = seg.opacity ;
365365 root[" bri" ] = (segbri) ? segbri : 255 ;
366366
367- if (seg.name != nullptr ) root[" n" ] = reinterpret_cast <const char *>(seg.name ); // not good practice, but decreases required JSON buffer
367+ if (segmentBounds && seg.name != nullptr ) root[" n" ] = reinterpret_cast <const char *>(seg.name ); // not good practice, but decreases required JSON buffer
368368
369369 char colstr[70 ]; colstr[0 ] = ' [' ; colstr[1 ] = ' \0 ' ; // max len 68 (5 chan, all 255)
370370
0 commit comments