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 g = (SEGCOLOR(0) >> 8);
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);
for (int i = 0; i < SEGLEN; i++) {
byte flicker = random8(lum);
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 {
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);
} 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;
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
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);
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) {
color = SEGCOLOR(i % NUM_COLORS);
}
@@ -6245,7 +6245,7 @@ uint16_t mode_2Dfloatingblobs(void) {
if (blob->grow[i]) {
// 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;
if (blob->r[i] >= MIN(cols/4.f,2.f)) {
if (blob->r[i] >= min(cols/4.f,2.f)) {
blob->grow[i] = false;
}
} else {