| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #include "display.h"
- #include "config.h"
- #include "logo.h"
- // ---------------------------------------------------------------------------
- // Helpers
- // ---------------------------------------------------------------------------
- static void drawStatusScreen(TFT_eSPI &tft,
- uint16_t bgColour,
- uint16_t letterColour,
- const char *letter) {
- TFT_eSprite spr = TFT_eSprite(&tft);
- spr.createSprite(DISPLAY_W, DISPLAY_H);
- spr.fillSprite(bgColour);
- // Outer ring
- spr.drawCircle(DISPLAY_CX, DISPLAY_CY, DISPLAY_RADIUS, COL_RING);
- spr.drawCircle(DISPLAY_CX, DISPLAY_CY, DISPLAY_RADIUS - 1, COL_RING);
- // "SYSTEM" label
- spr.setTextDatum(MC_DATUM);
- spr.setTextFont(2);
- spr.setTextColor(COL_LABEL, bgColour);
- spr.drawString("SYSTEM", DISPLAY_CX, 72);
- // Separator line under label
- spr.drawFastHLine(DISPLAY_CX - 55, 88, 110, COL_LABEL);
- // Large system letter (A or B)
- spr.setTextFont(8); // large built-in font
- spr.setTextColor(letterColour, bgColour);
- spr.setTextDatum(MC_DATUM);
- spr.drawString(letter, DISPLAY_CX, 138);
- // Separator line above ACTIVE
- spr.drawFastHLine(DISPLAY_CX - 55, 164, 110, COL_LABEL);
- // "ACTIVE" label
- spr.setTextFont(2);
- spr.setTextColor(COL_LABEL, bgColour);
- spr.drawString("ACTIVE", DISPLAY_CX, 180);
- spr.pushSprite(0, 0);
- spr.deleteSprite();
- }
- // ---------------------------------------------------------------------------
- // Public API
- // ---------------------------------------------------------------------------
- void displayInit(TFT_eSPI &tft) {
- tft.init();
- tft.setRotation(0);
- tft.fillScreen(TFT_BLACK);
- }
- void displayShowLogo(TFT_eSPI &tft) {
- drawLogo(tft);
- }
- void displayShowSystemA(TFT_eSPI &tft) {
- drawStatusScreen(tft, COL_BG_SYS_A, COL_LETTER_A, "A");
- }
- void displayShowSystemB(TFT_eSPI &tft) {
- drawStatusScreen(tft, COL_BG_SYS_B, COL_LETTER_B, "B");
- }
|