@@ -2273,30 +2273,32 @@ void WS2812FX::loadCustomPalettes() {
22732273
22742274 if (readObjectFromFile (fileName, nullptr , &pDoc)) {
22752275 JsonArray pal = pDoc[F (" palette" )];
2276- if (!pal.isNull () && pal.size ()>4 ) { // not an empty palette (at least 2 entries)
2276+ if (!pal.isNull () && pal.size ()>3 ) { // not an empty palette (at least 2 entries)
22772277 if (pal[0 ].is <int >() && pal[1 ].is <const char *>()) {
22782278 // we have an array of index & hex strings
22792279 size_t palSize = min (pal.size (), (size_t )36 ); // WLEDMM use native min/max
22802280 palSize -= palSize % 2 ; // make sure size is multiple of 2
2281- for (size_t i=0 , j=0 ; i<palSize && pal[i].as <int >()<256 ; i+=2 , j+=4 ) {
2281+ for (unsigned i=0 , j=0 ; i<palSize && pal[i].as <int >()<256 ; i+=2 , j+=4 ) {
22822282 uint8_t rgbw[] = {0 ,0 ,0 ,0 };
22832283 tcp[ j ] = (uint8_t ) pal[ i ].as <int >(); // index
22842284 colorFromHexString (rgbw, pal[i+1 ].as <const char *>()); // will catch non-string entires
2285- for (size_t c=0 ; c<3 ; c++) tcp[j+1 +c] = rgbw[c]; // only use RGB component
2285+ for (unsigned c=0 ; c<3 ; c++) tcp[j+1 +c] = gamma8 ( rgbw[c]) ; // only use RGB component
22862286 DEBUG_PRINTF (" %d(%d) : %d %d %d\n " , i, int (tcp[j]), int (tcp[j+1 ]), int (tcp[j+2 ]), int (tcp[j+3 ]));
22872287 }
22882288 } else {
22892289 size_t palSize = min (pal.size (), (size_t )72 ); // WLEDMM use native min/max
22902290 palSize -= palSize % 4 ; // make sure size is multiple of 4
22912291 for (size_t i=0 ; i<palSize && pal[i].as <int >()<256 ; i+=4 ) {
22922292 tcp[ i ] = (uint8_t ) pal[ i ].as <int >(); // index
2293- tcp[i+1 ] = ( uint8_t ) pal[i+1 ].as <int >(); // R
2294- tcp[i+2 ] = ( uint8_t ) pal[i+2 ].as <int >(); // G
2295- tcp[i+3 ] = ( uint8_t ) pal[i+3 ].as <int >(); // B
2293+ tcp[i+1 ] = gamma8 (( uint8_t ) pal[i+1 ].as <int >() ); // R
2294+ tcp[i+2 ] = gamma8 (( uint8_t ) pal[i+2 ].as <int >() ); // G
2295+ tcp[i+3 ] = gamma8 (( uint8_t ) pal[i+3 ].as <int >() ); // B
22962296 DEBUG_PRINTF (" %d(%d) : %d %d %d\n " , i, int (tcp[i]), int (tcp[i+1 ]), int (tcp[i+2 ]), int (tcp[i+3 ]));
22972297 }
22982298 }
22992299 customPalettes.push_back (targetPalette.loadDynamicGradientPalette (tcp));
2300+ } else {
2301+ DEBUG_PRINTLN (F (" Wrong palette format." ));
23002302 }
23012303 }
23022304 } else {
0 commit comments