Screensavers (#462)
Adds screensavers in addition to the backlight idle off.
More info in screensavers.md
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
* **New Features**
* Added a screensaver system with multiple styles (Bouncing Balls, Mystify, Matrix Rain) and a common screensaver interface; auto-starts after inactivity, dismisses on interaction, and supports auto-off/backlight behavior.
* New Display setting and UI dropdown to choose and persist the screensaver.
* **Documentation**
* Added comprehensive screensaver docs covering usage, extension, and configuration.
* **Chores**
* Registered the display-idle service.
* **Bug Fixes**
* Updated LVGL API calls to match renamed functions.
<sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
#pragma once
|
||||
#ifdef ESP_PLATFORM
|
||||
|
||||
#include <lvgl.h>
|
||||
|
||||
namespace tt::service::displayidle {
|
||||
|
||||
/**
|
||||
* Base class for screensaver implementations.
|
||||
* Screensavers are responsible for creating their visual elements
|
||||
* on the provided overlay and updating them each tick.
|
||||
*/
|
||||
class Screensaver {
|
||||
public:
|
||||
Screensaver() = default;
|
||||
virtual ~Screensaver() = default;
|
||||
Screensaver(const Screensaver&) = delete;
|
||||
Screensaver& operator=(const Screensaver&) = delete;
|
||||
Screensaver(Screensaver&&) = delete;
|
||||
Screensaver& operator=(Screensaver&&) = delete;
|
||||
|
||||
/**
|
||||
* Start the screensaver, creating visual elements on the overlay.
|
||||
* @param overlay The parent LVGL object to create elements on
|
||||
* @param screenW Screen width in pixels
|
||||
* @param screenH Screen height in pixels
|
||||
*/
|
||||
virtual void start(lv_obj_t* overlay, lv_coord_t screenW, lv_coord_t screenH) = 0;
|
||||
|
||||
/**
|
||||
* Stop the screensaver, cleaning up any internal state.
|
||||
* Note: LVGL objects are deleted by the parent overlay, but any
|
||||
* internal references should be cleared here.
|
||||
*/
|
||||
virtual void stop() = 0;
|
||||
|
||||
/**
|
||||
* Update the screensaver animation for one frame.
|
||||
* Called periodically while the screensaver is active.
|
||||
* @param screenW Screen width in pixels
|
||||
* @param screenH Screen height in pixels
|
||||
*/
|
||||
virtual void update(lv_coord_t screenW, lv_coord_t screenH) = 0;
|
||||
};
|
||||
|
||||
} // namespace tt::service::displayidle
|
||||
|
||||
#endif // ESP_PLATFORM
|
||||
Reference in New Issue
Block a user