Bisher nutzt die MenuLib Class Lib eine (public) Methode zur zeilenweisen Ausgabe der menü-Einträge:
Code:
// Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
//
display.setColor(BLACK);
display.setCursor(FONTWI, line);
display.print(list[i]);
Nicht alle Display Libs (für LCD1602, ILI9341,...)unterstützen aber diese Syntax.
Es wäre nun eine schöne Erweiterung, wenn die MenuLib Class auch verschiedene Displays nutzen könnte, indem man eine interne, "allgemein gehaltene" ("virtuelle" ?) Schreibmethode verwendet, die erst bei der Instanziierung mit einer bestimmten TFT Lib mit der jeweiligen speziellen Syntax "assoziiert" wird.
Diese könnte dann gezwungen sein, z.B.
statt
display.setColor(BLACK);
display.setCursor(x,y);
display.print(cstring);
display.display();
etwas in dieser Form aufrufen:
TextOut(x,y, cstring, TFT_BLACK);
// schreibt uU sofort, ohne ein zusätzliches display.display(); zu benötigen
Sieht jemand eine Möglichkeit, so etwas umzusetzen?
Code:
class tMenu {
//...
public:
tMenu (...) : {
//...
void mdisplay() {
if(actln>VISLNUM-1) firstvln=_min(actln-1, MENULEN-VISLNUM);
else firstvln=0;
lastvln=min(firstvln+VISLNUM-1, firstvln+MENULEN-1) ;
display.clearDisplay();
for(int i=firstvln; i<=lastvln; i++) {
displn=(FONTHI-3) + (i-firstvln)*FONTHI;
display.setCursor(0, displn);
if(i!=actln && i==tagged) {
display.print('*');
}
else
if(i==actln && i==tagged) {
display.print('#');
}
else
if(i==actln && i!=tagged) {
display.print('>');
}
else {
display.print(' ');
}
display.setCursor(FONTWI, displn);
display.print(list[i]);
}
display.display();
}
//...
};
Lesezeichen