Start building a text renderer
This commit is contained in:
parent
152144671d
commit
77dca1afab
1 changed files with 32 additions and 4 deletions
36
src/main.cpp
36
src/main.cpp
|
@ -9,16 +9,16 @@
|
||||||
class App {
|
class App {
|
||||||
public:
|
public:
|
||||||
virtual void loop() = 0;
|
virtual void loop() = 0;
|
||||||
enum Choices {Clock, OTA};
|
enum Choices {Clock, OTA, Text};
|
||||||
};
|
};
|
||||||
|
|
||||||
class OTA: public App {
|
class OTA: public App {
|
||||||
public:
|
public:
|
||||||
OTA() {
|
OTA() {
|
||||||
|
M5.Display.setEpdMode(epd_text);
|
||||||
M5.Display.startWrite();
|
M5.Display.startWrite();
|
||||||
M5.Display.clearDisplay(TFT_WHITE);
|
M5.Display.clearDisplay(TFT_WHITE);
|
||||||
M5.Display.setFont(&fonts::Font0);
|
M5.Display.setFont(&fonts::Font0);
|
||||||
M5.Display.setEpdMode(epd_text);
|
|
||||||
M5.Display.setCursor(0, 10);
|
M5.Display.setCursor(0, 10);
|
||||||
M5.Display.printf("SSID: %s\n", WIFI_SSID);
|
M5.Display.printf("SSID: %s\n", WIFI_SSID);
|
||||||
M5.Display.printf("IP Address: %s\n", WiFi.localIP().toString());
|
M5.Display.printf("IP Address: %s\n", WiFi.localIP().toString());
|
||||||
|
@ -56,9 +56,9 @@ protected:
|
||||||
class Clock: public App {
|
class Clock: public App {
|
||||||
public:
|
public:
|
||||||
Clock() {
|
Clock() {
|
||||||
|
M5.Display.setEpdMode(epd_fast);
|
||||||
M5.Display.clearDisplay(TFT_WHITE);
|
M5.Display.clearDisplay(TFT_WHITE);
|
||||||
M5.Display.setFont(&fonts::Orbitron_Light_32);
|
M5.Display.setFont(&fonts::Orbitron_Light_32);
|
||||||
M5.Display.setEpdMode(epd_fast);
|
|
||||||
}
|
}
|
||||||
void loop() {
|
void loop() {
|
||||||
static constexpr const char* const wd[7] = {"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};
|
static constexpr const char* const wd[7] = {"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};
|
||||||
|
@ -84,6 +84,29 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Text: public App {
|
||||||
|
public:
|
||||||
|
Text() {
|
||||||
|
M5.Display.setEpdMode(epd_quality);
|
||||||
|
M5.Display.clearDisplay(TFT_WHITE);
|
||||||
|
auto font = &fonts::FreeSans9pt7b;
|
||||||
|
lgfx::v1::FontMetrics metrics;
|
||||||
|
font->getDefaultMetric(&metrics);
|
||||||
|
M5.Display.setFont(font);
|
||||||
|
M5.Display.setTextSize(3);
|
||||||
|
auto t_x = M5.Display.getTextSizeX();
|
||||||
|
auto t_y = M5.Display.getTextSizeY();
|
||||||
|
auto t_p = M5.Display.getTextPadding();
|
||||||
|
M5.Display.setCursor(0, 0);
|
||||||
|
M5.Display.printf("FreeSans9pt7b\n");
|
||||||
|
auto c_y = M5.Display.getCursorY();
|
||||||
|
M5.Display.printf("Y: %d\nH: %2.2f\nW:%2.2f\nPadding: %d\n", c_y, t_y, t_x, t_p);
|
||||||
|
M5.Display.printf("Y Advance: %d\n", metrics.y_advance); // This here, this is the actual Y height of the text
|
||||||
|
}
|
||||||
|
void loop() {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
AsyncWebServer server(80);
|
AsyncWebServer server(80);
|
||||||
App* app;
|
App* app;
|
||||||
App::Choices current_app;
|
App::Choices current_app;
|
||||||
|
@ -141,6 +164,9 @@ void switch_app(App::Choices next) {
|
||||||
case App::Clock:
|
case App::Clock:
|
||||||
app = new Clock;
|
app = new Clock;
|
||||||
break;
|
break;
|
||||||
|
case App::Text:
|
||||||
|
app = new Text;
|
||||||
|
break;
|
||||||
case App::OTA:
|
case App::OTA:
|
||||||
default:
|
default:
|
||||||
app = new OTA;
|
app = new OTA;
|
||||||
|
@ -155,8 +181,10 @@ void loop()
|
||||||
App::Choices next = current_app;
|
App::Choices next = current_app;
|
||||||
if (M5.BtnA.wasClicked()) {
|
if (M5.BtnA.wasClicked()) {
|
||||||
next = App::Clock;
|
next = App::Clock;
|
||||||
} else if (M5.BtnC.wasClicked()) {
|
} else if (M5.BtnB.wasClicked()) {
|
||||||
next = App::OTA;
|
next = App::OTA;
|
||||||
|
} else if (M5.BtnC.wasClicked()) {
|
||||||
|
next = App::Text;
|
||||||
}
|
}
|
||||||
if (next != current_app) {
|
if (next != current_app) {
|
||||||
switch_app(next);
|
switch_app(next);
|
||||||
|
|
Loading…
Reference in a new issue