optimization
replacing MIN / MAX (arduino macros) by more efficient min/max (libc templates)
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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_
|
||||||
|
|||||||
Reference in New Issue
Block a user