mirror of
https://github.com/justcallmekoko/ESP32Marauder.git
synced 2025-12-12 15:50:36 -08:00
Scrolling text
This commit is contained in:
@@ -474,6 +474,53 @@ void Display::listDir(fs::FS &fs, const char * dirname, uint8_t levels) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void Display::updateBanner(String msg)
|
||||||
|
{
|
||||||
|
this->img.deleteSprite();
|
||||||
|
|
||||||
|
this->img.setColorDepth(8);
|
||||||
|
|
||||||
|
this->img.createSprite(SCREEN_WIDTH, TEXT_HEIGHT);
|
||||||
|
|
||||||
|
this->buildBanner(msg, current_banner_pos);
|
||||||
|
|
||||||
|
this->img.pushSprite(0, 0);
|
||||||
|
|
||||||
|
current_banner_pos--;
|
||||||
|
|
||||||
|
if (current_banner_pos <= 0)
|
||||||
|
current_banner_pos = SCREEN_WIDTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Display::buildBanner(String msg, int xpos)
|
||||||
|
{
|
||||||
|
int h = TEXT_HEIGHT;
|
||||||
|
|
||||||
|
// We could just use fillSprite(color) but lets be a bit more creative...
|
||||||
|
|
||||||
|
// Fill with rainbow stripes
|
||||||
|
//while (h--) img.drawFastHLine(0, h, SCREEN_WIDTH, 255);
|
||||||
|
|
||||||
|
// Draw some graphics, the text will apear to scroll over these
|
||||||
|
//img.fillRect (SCREEN_WIDTH / 2 - 20, TEXT_HEIGHT / 2 - 10, 40, 20, TFT_YELLOW);
|
||||||
|
//img.fillCircle(SCREEN_WIDTH / 2, TEXT_HEIGHT / 2, 10, TFT_ORANGE);
|
||||||
|
|
||||||
|
// Now print text on top of the graphics
|
||||||
|
img.setTextSize(2); // Font size scaling is x1
|
||||||
|
img.setTextFont(0); // Font 4 selected
|
||||||
|
img.setTextColor(TFT_WHITE); // Black text, no background colour
|
||||||
|
img.setTextWrap(false); // Turn of wrap so we can print past end of sprite
|
||||||
|
|
||||||
|
// Need to print twice so text appears to wrap around at left and right edges
|
||||||
|
img.setCursor(xpos, 2); // Print text at xpos
|
||||||
|
img.print(msg);
|
||||||
|
|
||||||
|
img.setCursor(xpos - SCREEN_WIDTH, 2); // Print text at xpos - sprite width
|
||||||
|
img.print(msg);
|
||||||
|
}
|
||||||
|
|
||||||
void Display::main()
|
void Display::main()
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ class Display
|
|||||||
public:
|
public:
|
||||||
Display();
|
Display();
|
||||||
TFT_eSPI tft = TFT_eSPI();
|
TFT_eSPI tft = TFT_eSPI();
|
||||||
|
TFT_eSprite img = TFT_eSprite(&tft);
|
||||||
String version_number = "v0.2";
|
String version_number = "v0.2";
|
||||||
|
|
||||||
bool printing = false;
|
bool printing = false;
|
||||||
@@ -56,6 +57,7 @@ class Display
|
|||||||
|
|
||||||
int TOP_FIXED_AREA_2 = 32;
|
int TOP_FIXED_AREA_2 = 32;
|
||||||
int print_delay_1, print_delay_2 = 10;
|
int print_delay_1, print_delay_2 = 10;
|
||||||
|
int current_banner_pos = SCREEN_WIDTH;
|
||||||
|
|
||||||
//Menu* current_menu;
|
//Menu* current_menu;
|
||||||
|
|
||||||
@@ -81,6 +83,7 @@ class Display
|
|||||||
// We can speed up scrolling of short text lines by just blanking the character we drew
|
// We can speed up scrolling of short text lines by just blanking the character we drew
|
||||||
int blank[19]; // We keep all the strings pixel lengths to optimise the speed of the top line blanking
|
int blank[19]; // We keep all the strings pixel lengths to optimise the speed of the top line blanking
|
||||||
|
|
||||||
|
void buildBanner(String msg, int xpos);
|
||||||
void clearScreen();
|
void clearScreen();
|
||||||
void displayBuffer(bool do_clear = false);
|
void displayBuffer(bool do_clear = false);
|
||||||
void drawJpeg(const char *filename, int xpos, int ypos);
|
void drawJpeg(const char *filename, int xpos, int ypos);
|
||||||
@@ -99,5 +102,6 @@ class Display
|
|||||||
void showCenterText(String text, int y);
|
void showCenterText(String text, int y);
|
||||||
void touchToExit();
|
void touchToExit();
|
||||||
void twoPartDisplay(String center_text);
|
void twoPartDisplay(String center_text);
|
||||||
|
void updateBanner(String msg);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -8,6 +8,11 @@ MenuFunctions::MenuFunctions()
|
|||||||
// Function to check menu input
|
// Function to check menu input
|
||||||
void MenuFunctions::main()
|
void MenuFunctions::main()
|
||||||
{
|
{
|
||||||
|
if (wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF)
|
||||||
|
display_obj.updateBanner(current_menu->name);
|
||||||
|
|
||||||
|
//this->displayCurrentMenu();
|
||||||
|
|
||||||
boolean pressed = false;
|
boolean pressed = false;
|
||||||
// This is code from bodmer's keypad example
|
// This is code from bodmer's keypad example
|
||||||
uint16_t t_x = 0, t_y = 0; // To store the touch coordinates
|
uint16_t t_x = 0, t_y = 0; // To store the touch coordinates
|
||||||
@@ -256,7 +261,7 @@ void MenuFunctions::displayCurrentMenu()
|
|||||||
Serial.println("Displaying current menu...");
|
Serial.println("Displaying current menu...");
|
||||||
display_obj.clearScreen();
|
display_obj.clearScreen();
|
||||||
display_obj.tft.setTextColor(TFT_LIGHTGREY, TFT_DARKGREY);
|
display_obj.tft.setTextColor(TFT_LIGHTGREY, TFT_DARKGREY);
|
||||||
display_obj.tft.fillRect(0,0,240,16, TFT_DARKGREY);
|
//display_obj.tft.fillRect(0,0,240,16, TFT_DARKGREY);
|
||||||
//display_obj.tft.drawCentreString(" ESP32 Marauder ",120,0,2);
|
//display_obj.tft.drawCentreString(" ESP32 Marauder ",120,0,2);
|
||||||
//Serial.println("Getting size...");
|
//Serial.println("Getting size...");
|
||||||
//char buf[¤t_menu->parentMenu->name.length() + 1] = {};
|
//char buf[¤t_menu->parentMenu->name.length() + 1] = {};
|
||||||
@@ -264,7 +269,7 @@ void MenuFunctions::displayCurrentMenu()
|
|||||||
//current_menu->parentMenu->name.toCharArray(buf, current_menu->parentMenu->name.length() + 1);
|
//current_menu->parentMenu->name.toCharArray(buf, current_menu->parentMenu->name.length() + 1);
|
||||||
//String current_name = ¤t_menu->parentMenu->name;
|
//String current_name = ¤t_menu->parentMenu->name;
|
||||||
//Serial.println("gottem");
|
//Serial.println("gottem");
|
||||||
display_obj.tft.drawCentreString(current_menu->name,120,0,2);
|
//display_obj.tft.drawCentreString(current_menu->name,120,0,2);
|
||||||
if (current_menu->list != NULL)
|
if (current_menu->list != NULL)
|
||||||
{
|
{
|
||||||
display_obj.tft.setFreeFont(MENU_FONT);
|
display_obj.tft.setFreeFont(MENU_FONT);
|
||||||
|
|||||||
Reference in New Issue
Block a user