#include "ui/Device.h" #include #include #include "MenuOptions.h" #include "common/InactivityTracker.h" #include "hal_native/PersistenceManager.h" #include "ui/ScreenSaver.h" #include "ui/SplashScreen.h" #include "ui/widgets/Button.h" #include "ui/widgets/D_Pad.h" u8g2_t u8g2; menu_options_t options; std::unique_ptr m_inactivityTracker; static void set_pixel_rgba(const SDL_Surface *surface, const int x, const int y, const uint32_t pixel_color) { if (!surface || x < 0 || x >= surface->w || y < 0 || y >= surface->h) { return; } const auto p = static_cast(surface->pixels) + y * surface->pitch + x * sizeof(uint32_t); *reinterpret_cast(p) = pixel_color; } Device::Device(void *appstate) : UIWidget(appstate) { auto dpad_callback = [](const D_Pad::Direction direction) { SDL_Keycode key = 0; switch (direction) { case D_Pad::Direction::UP: key = SDLK_UP; break; case D_Pad::Direction::DOWN: key = SDLK_DOWN; break; case D_Pad::Direction::LEFT: key = SDLK_LEFT; break; case D_Pad::Direction::RIGHT: key = SDLK_RIGHT; break; case D_Pad::Direction::NONE: // Fallthrough oder keine Aktion default: break; } if (key != 0) { PushKey(key); } }; m_children.push_back(std::make_shared