add screensaver and optimize performance
Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
20
components/insa/include/common/InactivityTracker.h
Normal file
20
components/insa/include/common/InactivityTracker.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
|
||||
class InactivityTracker
|
||||
{
|
||||
public:
|
||||
InactivityTracker(uint64_t timeoutMs, std::function<void()> onTimeout);
|
||||
|
||||
void update(uint64_t dt);
|
||||
void reset();
|
||||
void setEnabled(bool enabled);
|
||||
|
||||
private:
|
||||
uint64_t m_timeoutMs;
|
||||
uint64_t m_elapsedTime;
|
||||
bool m_enabled;
|
||||
std::function<void()> m_onTimeout;
|
||||
};
|
@@ -72,6 +72,8 @@ class Menu : public Widget
|
||||
*/
|
||||
void addText(uint8_t id, const std::string &text);
|
||||
|
||||
void addTextCounter(uint8_t id, const std::string &text, const uint8_t value);
|
||||
|
||||
/**
|
||||
* @brief Adds a selection menu item (dropdown/list selection) to the menu
|
||||
* @param id Unique identifier for this menu item (must be unique within the menu)
|
||||
|
37
components/insa/include/ui/ScreenSaver.h
Normal file
37
components/insa/include/ui/ScreenSaver.h
Normal file
@@ -0,0 +1,37 @@
|
||||
#pragma once
|
||||
|
||||
#include "MenuOptions.h"
|
||||
#include "common/Widget.h"
|
||||
#include <cstdlib>
|
||||
#include <vector>
|
||||
|
||||
class ScreenSaver final : public Widget
|
||||
{
|
||||
public:
|
||||
explicit ScreenSaver(menu_options_t *options);
|
||||
|
||||
void update(uint64_t dt) override;
|
||||
void render() override;
|
||||
void onButtonClicked(ButtonType button) override;
|
||||
|
||||
private:
|
||||
struct Star
|
||||
{
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
float speed;
|
||||
};
|
||||
|
||||
menu_options_t *m_options;
|
||||
uint64_t m_animationCounter;
|
||||
std::vector<Star> m_stars;
|
||||
|
||||
static constexpr int NUM_STARS = 10;
|
||||
static constexpr float SPEED_MULTIPLIER = 0.02f;
|
||||
static constexpr float Z_NEAR = 0.1f;
|
||||
static constexpr float Z_FAR = 10.0f;
|
||||
|
||||
void initStars();
|
||||
void resetStar(Star &star);
|
||||
};
|
Reference in New Issue
Block a user