From 117dd52ce4695913081515126ac289bf71a9d9c4 Mon Sep 17 00:00:00 2001 From: Ewoud Date: Thu, 15 Jun 2023 11:29:41 +0200 Subject: [PATCH 1/3] Ledmap 1D / no width/height --- wled00/FX_2Dfcn.cpp | 2 ++ wled00/FX_fcn.cpp | 40 ++++++++++++++++++++++++---------------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index 6c31db11..8669644e 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -63,6 +63,8 @@ void WS2812FX::setUpMatrix() { return; } + USER_PRINTF("setUpMatrix %d x %d\n", Segment::maxWidth, Segment::maxHeight); + //WLEDMM recreate customMappingTable if more space needed if (Segment::maxWidth * Segment::maxHeight > customMappingTableSize) { uint32_t size = MAX(ledmapMaxSize, Segment::maxWidth * Segment::maxHeight);//TroyHack diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 6e6fa5ed..54ba920e 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1421,7 +1421,11 @@ void WS2812FX::enumerateLedmaps() { uint16_t maxHeight = atoi(cleanUpName(dim)); ledmapMaxSize = MAX(ledmapMaxSize, maxWidth * maxHeight); - USER_PRINTF("enumerateLedmaps %s \"%s\" (%dx%d -> %d)\n", fileName, name, maxWidth, maxHeight, ledmapMaxSize); + USER_PRINTF("enumerateLedmaps %s \"%s\"", fileName, name); + if (maxWidth*ledmapMaxSize>0) + USER_PRINTF(" (%dx%d -> %d)\n", maxWidth, maxHeight, ledmapMaxSize); + else + USER_PRINTLN(); } f.close(); USER_FLUSH(); @@ -2204,24 +2208,28 @@ bool WS2812FX::deserializeMap(uint8_t n) { USER_PRINT(F("Reading LED map from ")); //WLEDMM use USER_PRINT USER_PRINTLN(fileName); - //WLEDMM: read width and height - f.find("\"width\":"); - f.readBytesUntil('\n', fileName, sizeof(fileName)); //hack: use fileName as we have this allocated already - uint16_t maxWidth = atoi(fileName); + if (isMatrix) { + //WLEDMM: read width and height + f.find("\"width\":"); + f.readBytesUntil('\n', fileName, sizeof(fileName)); //hack: use fileName as we have this allocated already + uint16_t maxWidth = atoi(fileName); - f.find("\"height\":"); - f.readBytesUntil('\n', fileName, sizeof(fileName)); - uint16_t maxHeight = atoi(fileName); + f.find("\"height\":"); + f.readBytesUntil('\n', fileName, sizeof(fileName)); + uint16_t maxHeight = atoi(fileName); - USER_PRINTF("deserializeMap %d x %d\n", maxWidth, maxHeight); - - //WLEDMM: support ledmap file properties width and height: if found change segment - if (maxWidth * maxHeight > 0) { - Segment::maxWidth = maxWidth; - Segment::maxHeight = maxHeight; - resetSegments(true); //WLEDMM not makeAutoSegments() as we only want to change bounds + //WLEDMM: support ledmap file properties width and height: if found change segment + if (maxWidth * maxHeight > 0) { + Segment::maxWidth = maxWidth; + Segment::maxHeight = maxHeight; + resetSegments(true); //WLEDMM not makeAutoSegments() as we only want to change bounds + } + else + setUpMatrix(); //reset segment sizes to panels } + USER_PRINTF("deserializeMap %d x %d\n", Segment::maxWidth, Segment::maxHeight); + //WLEDMM recreate customMappingTable if more space needed if (Segment::maxWidth * Segment::maxHeight > customMappingTableSize) { uint32_t size = MAX(ledmapMaxSize, Segment::maxWidth * Segment::maxHeight);//TroyHack @@ -2232,7 +2240,7 @@ bool WS2812FX::deserializeMap(uint8_t n) { } if (customMappingTable != nullptr) { - customMappingSize = maxWidth * maxHeight; + customMappingSize = Segment::maxWidth * Segment::maxHeight; //WLEDMM: find the map values f.find("\"map\":["); From 3195606ca8c2f86a289217b5b6b83a770cefa1f8 Mon Sep 17 00:00:00 2001 From: Ewoud Date: Thu, 15 Jun 2023 11:41:19 +0200 Subject: [PATCH 2/3] Part 2 --- wled00/FX_fcn.cpp | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 54ba920e..1feb6212 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1410,20 +1410,24 @@ void WS2812FX::enumerateLedmaps() { if (ledmapNames[i-1]) strlcpy(ledmapNames[i-1], tmp, 33); } - //WLEDMM calc ledmapMaxSize (TroyHack) - char dim[34] = { '\0' }; - f.find("\"width\":"); - f.readBytesUntil('\n', dim, sizeof(dim)-1); //hack: use fileName as we have this allocated already - uint16_t maxWidth = atoi(cleanUpName(dim)); - f.find("\"height\":"); - memset(dim, 0, sizeof(dim)); // clear buffer before reading - f.readBytesUntil('\n', dim, sizeof(dim)-1); - uint16_t maxHeight = atoi(cleanUpName(dim)); - ledmapMaxSize = MAX(ledmapMaxSize, maxWidth * maxHeight); - USER_PRINTF("enumerateLedmaps %s \"%s\"", fileName, name); - if (maxWidth*ledmapMaxSize>0) - USER_PRINTF(" (%dx%d -> %d)\n", maxWidth, maxHeight, ledmapMaxSize); + if (isMatrix) { + //WLEDMM calc ledmapMaxSize (TroyHack) + char dim[34] = { '\0' }; + f.find("\"width\":"); + f.readBytesUntil('\n', dim, sizeof(dim)-1); //hack: use fileName as we have this allocated already + uint16_t maxWidth = atoi(cleanUpName(dim)); + f.find("\"height\":"); + memset(dim, 0, sizeof(dim)); // clear buffer before reading + f.readBytesUntil('\n', dim, sizeof(dim)-1); + uint16_t maxHeight = atoi(cleanUpName(dim)); + ledmapMaxSize = MAX(ledmapMaxSize, maxWidth * maxHeight); + + if (maxWidth*ledmapMaxSize>0) + USER_PRINTF(" (%dx%d -> %d)\n", maxWidth, maxHeight, ledmapMaxSize); + else + USER_PRINTLN(); + } else USER_PRINTLN(); } From a450334e46da74d92ab4003161b3681692305a0d Mon Sep 17 00:00:00 2001 From: Ewoud Date: Thu, 15 Jun 2023 11:51:22 +0200 Subject: [PATCH 3/3] Part 3 --- wled00/FX_fcn.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 1feb6212..ea6e96f9 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1423,10 +1423,11 @@ void WS2812FX::enumerateLedmaps() { uint16_t maxHeight = atoi(cleanUpName(dim)); ledmapMaxSize = MAX(ledmapMaxSize, maxWidth * maxHeight); - if (maxWidth*ledmapMaxSize>0) + if (maxWidth*maxHeight>0) { USER_PRINTF(" (%dx%d -> %d)\n", maxWidth, maxHeight, ledmapMaxSize); - else + } else { USER_PRINTLN(); + } } else USER_PRINTLN();