Vielen Dank, Whandall. Phenomänaaal ^^
Bist ja echt der C++-Guru 
Habe das benötigt, um von einem riesigen Haufen Switches und Cases wegzukommen und um Platz im Flash zu sparen.
Falls es jemanden interessiert, hier der Code:
#define uintB uint8_t
#define uintW uint16_t
#define uintL uint32_t
//Mode 0 und cindex bis 1535
const PROGMEM uintB Palette1[]={
255,1,0, //rot -> gelb (grün+)
2,255,0, //gelb -> grün (rot-)
0,255,1, //grün -> cyan (blau+)
0,2,255, //cyan -> blau (grün-)
1,0,255, //blau -> magenta (rot+)
255,0,2 //magenta -> rot (blau-)
};
//Mode 1 und cindex bis 1791
const PROGMEM uintB Palette2[]={
255,1,0, //rot -> gelb (grün+)
2,255,0, //gelb -> grün (rot-)
0,255,1, //grün -> cyan (blau+)
0,2,255, //cyan -> blau (grün-)
1,0,255, //blau -> magenta (rot+)
255,1,255, //magenta -> weiß (grün+)
255,2,2 //weiß -> rot (grün- blau-)
};
//Mode 2 und cindex bis 1535
const PROGMEM uintB Palette3[]={
1,0,0, //schwarz -> rot (rot+)
2,0,0, //rot -> schwarz (rot-)
0,1,0, //schwarz -> grün (grün+)
0,2,0, //grün -> schwarz (grün-)
0,0,1, //schwarz -> blau (rot+)
0,0,2, //blau -> schwarz (rot-)
};
//Mode 3 und cindex bis 1535
const PROGMEM uintB Palette4[]={
255,2,2, //weiß -> rot
255,1,1, //rot -> weiß
2,255,2, //weiß -> grün
1,255,1, //grün -> weiß
2,2,255, //weiß -> blau
1,1,255 //blau -> weiß
};
//Mode 4 und cindex bis 3583
const PROGMEM uintB Palette5[]={
1,0,0, //schwarz -> rot
2,0,0, //rot -> schwarz
0,1,0, //schwarz -> grün
0,2,0, //grün -> schwarz
0,0,1, //schwarz -> blau
0,0,2, //blau -> schwarz
1,1,0, //schwarz -> gelb
2,2,0, //gelb -> schwarz
0,1,1, //schwarz -> cyan
0,2,2, //cyan -> schwarz
1,0,1, //schwarz -> magenta
2,0,2, //magenta -> schwarz
1,1,1, //schwarz -> weiß
2,2,2 //weiß -> schwarz
};
//Mode 5 und cindex bis 3583
const PROGMEM uintB Palette6[]={
255,2,2, //weiß -> rot
255,1,1, //rot -> weiß
2,255,2, //weiß -> grün
1,255,1, //grün -> weiß
2,2,255, //weiß -> blau
1,1,255, //blau -> weiß
255,255,2, //weiß -> gelb
255,255,1, //gelb -> weiß
2,255,255, //weiß -> cyan
1,255,255, //cyan -> weiß
255,2,255, //weiß -> magenta
255,1,255, //magenta -> weiß
2,2,2, //weiß -> schwarz
1,1,1 //schwarz -> weiß
};
//Mode 6 und cindex bis 1791
const PROGMEM uintB Palette7[]={
2,0,0, //rot -> schwarz
0,2,0, //grün -> schwarz
0,0,2, //blau -> schwarz
2,2,0, //gelb -> schwarz
0,2,2, //cyan -> schwarz
2,0,2, //magenta -> schwarz
2,2,2 //weiß -> schwarz
};
//Mode 7 und cindex bis 1791
const PROGMEM uintB Palette8[]={
255,0,0, //rot
0,255,0, //grün
0,0,255, //blau
255,255,0, //gelb
0,255,255, //cyan
255,0,255, //magenta
255,255,255 //weiß
};
const uintB* const PROGMEM Paletten[] = {
Palette1, Palette2, Palette3, Palette4, Palette5, Palette6, Palette7, Palette8
};
void Extra1Color(uintW cindex, uintB mode, uintW Pos){
uintB a=cindex;
byte* tab = (byte*)pgm_read_word(Paletten + mode)+((cindex>>8)*3);
uintB r=pgm_read_byte(tab++);
uintB g=pgm_read_byte(tab++);
uintB b=pgm_read_byte(tab);
if(r==1)r=a; else if(r==2)r=255-a;
if(g==1)g=a; else if(g==2)g=255-a;
if(b==1)b=a; else if(b==2)b=255-a;
strip.setPixelColor(Pos,r,g,b);
}
Die Funktion setzt mit einem "cindex" (Color-Index) von 0 bis n einen Pixel an der Position "Pos" aus dem Mode n (0-7).
MfG
Andi