#pragma once #include "program.h" #include "shell.h" #include "tft_handler.h" #include // Example Program 1: Simple counter class CounterProgram : public Program { private: int counter = 0; public: void run() override { Serial.println("Counter program started!"); while (_running) { counter++; Serial.printf("Counter: %d\n", counter); // You can modify the window title if (_window) { _window->title = "Counter: " + std::to_string(counter); if (!_window->minimized) _display_state->update_display.store(true); } vTaskDelay(pdMS_TO_TICKS(1000)); } } }; // Example Program 2: Text editor class TextEditorProgram : public Program { public: void run() override { Serial.println("Text editor started!"); // You have full access to the window and can draw to it while (_running) { // Handle text editing logic here // Draw to the window content area using _tft vTaskDelay(pdMS_TO_TICKS(100)); } } }; // Example Program 3: Calculator class CalculatorProgram : public Program { public: void run() override { Serial.println("Calculator started!"); while (_running) { // Calculator logic here vTaskDelay(pdMS_TO_TICKS(100)); } } }; // Example Program 4: Game class GameProgram : public Program { public: void run() override { Serial.println("Game started!"); while (_running) { // Game logic and rendering vTaskDelay(pdMS_TO_TICKS(50)); // 20 FPS } } }; // Example Program 5: Settings class SettingsProgram : public Program { public: void run() override { Serial.println("Settings started!"); while (_running) { // Settings UI logic vTaskDelay(pdMS_TO_TICKS(100)); } } };