Bisher nutzt die MenuLib Class Lib eine (public) Methode zur zeilenweisen Ausgabe der menü-Einträge:
Nicht alle Display Libs (für LCD1602, ILI9341,...)unterstützen aber diese Syntax.Code:// Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET); // display.setColor(BLACK); display.setCursor(FONTWI, line); display.print(list[i]);
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(); } //... };







Zitieren

Lesezeichen