optimization

replacing MIN / MAX (arduino macros) by more efficient min/max (libc templates)
This commit is contained in:
Frank
2024-05-24 11:26:28 +02:00
parent a50e77db26
commit 21e6b4d62f
2 changed files with 7 additions and 7 deletions

View File

@@ -1333,12 +1333,12 @@ uint16_t mode_fire_flicker(void) {
byte r = (SEGCOLOR(0) >> 16); byte r = (SEGCOLOR(0) >> 16);
byte g = (SEGCOLOR(0) >> 8); byte g = (SEGCOLOR(0) >> 8);
byte b = (SEGCOLOR(0) ); byte b = (SEGCOLOR(0) );
byte lum = (SEGMENT.palette == 0) ? MAX(w, MAX(r, MAX(g, b))) : 255; byte lum = (SEGMENT.palette == 0) ? max(w, max(r, max(g, b))) : 255;
lum /= (((256-SEGMENT.intensity)/16)+1); lum /= (((256-SEGMENT.intensity)/16)+1);
for (int i = 0; i < SEGLEN; i++) { for (int i = 0; i < SEGLEN; i++) {
byte flicker = random8(lum); byte flicker = random8(lum);
if (SEGMENT.palette == 0) { if (SEGMENT.palette == 0) {
SEGMENT.setPixelColor(i, MAX(r - flicker, 0), MAX(g - flicker, 0), MAX(b - flicker, 0), MAX(w - flicker, 0)); SEGMENT.setPixelColor(i, max(r - flicker, 0), max(g - flicker, 0), max(b - flicker, 0), max(w - flicker, 0));
} else { } else {
SEGMENT.setPixelColor(i, SEGMENT.color_from_palette(i, true, PALETTE_SOLID_WRAP, 0, 255 - flicker)); SEGMENT.setPixelColor(i, SEGMENT.color_from_palette(i, true, PALETTE_SOLID_WRAP, 0, 255 - flicker));
} }
@@ -1369,7 +1369,7 @@ uint16_t gradient_base(bool loading) {
{ {
val = abs(((i>pp) ? p2:pp) -i); val = abs(((i>pp) ? p2:pp) -i);
} else { } else {
val = MIN(abs(pp-i),MIN(abs(p1-i),abs(p2-i))); val = min(abs(pp-i), min(abs(p1-i), abs(p2-i)));
} }
val = (brd > val) ? val/brd * 255 : 255; val = (brd > val) ? val/brd * 255 : 255;
SEGMENT.setPixelColor(i, color_blend(SEGCOLOR(0), SEGMENT.color_from_palette(i, true, PALETTE_SOLID_WRAP, 1), val)); SEGMENT.setPixelColor(i, color_blend(SEGCOLOR(0), SEGMENT.color_from_palette(i, true, PALETTE_SOLID_WRAP, 1), val));
@@ -2129,7 +2129,7 @@ uint16_t mode_fire_2012() {
// Step 4. Map from heat cells to LED colors // Step 4. Map from heat cells to LED colors
for (int j = 0; j < SEGLEN; j++) { for (int j = 0; j < SEGLEN; j++) {
SEGMENT.setPixelColor(indexToVStrip(j, stripNr), ColorFromPalette(SEGPALETTE, MIN(heat[j],240), 255, NOBLEND)); SEGMENT.setPixelColor(indexToVStrip(j, stripNr), ColorFromPalette(SEGPALETTE, min(heat[j],byte(240)), 255, NOBLEND));
} }
} }
}; };
@@ -2971,7 +2971,7 @@ uint16_t mode_bouncing_balls(void) {
uint32_t color = SEGCOLOR(0); uint32_t color = SEGCOLOR(0);
if (SEGMENT.palette) { if (SEGMENT.palette) {
color = SEGMENT.color_wheel(i*(256/MAX(numBalls, 8))); color = SEGMENT.color_wheel(i*(256/max(numBalls, uint16_t(8))));
} else if (hasCol2) { } else if (hasCol2) {
color = SEGCOLOR(i % NUM_COLORS); color = SEGCOLOR(i % NUM_COLORS);
} }
@@ -6245,7 +6245,7 @@ uint16_t mode_2Dfloatingblobs(void) {
if (blob->grow[i]) { if (blob->grow[i]) {
// enlarge radius until it is >= 4 // enlarge radius until it is >= 4
blob->r[i] += (fabsf(blob->sX[i]) > fabsf(blob->sY[i]) ? fabsf(blob->sX[i]) : fabsf(blob->sY[i])) * 0.05f; blob->r[i] += (fabsf(blob->sX[i]) > fabsf(blob->sY[i]) ? fabsf(blob->sX[i]) : fabsf(blob->sY[i])) * 0.05f;
if (blob->r[i] >= MIN(cols/4.f,2.f)) { if (blob->r[i] >= min(cols/4.f,2.f)) {
blob->grow[i] = false; blob->grow[i] = false;
} }
} else { } else {

View File

@@ -8,7 +8,7 @@
*/ */
// version code in format yymmddb (b = daily build) // version code in format yymmddb (b = daily build)
#define VERSION 2405220 #define VERSION 2405240
// WLEDMM - you can check for this define in usermods, to only enabled WLEDMM specific code in the "right" fork. Its not defined in AC WLED. // WLEDMM - you can check for this define in usermods, to only enabled WLEDMM specific code in the "right" fork. Its not defined in AC WLED.
#define _MoonModules_WLED_ #define _MoonModules_WLED_