#pragma once #include "components/themes/BaseTheme.h" class GfxRenderer; // Lyra theme metrics (zero runtime cost) namespace LyraMetrics { constexpr ThemeMetrics values = {.batteryWidth = 16, .batteryHeight = 12, .topPadding = 5, .batteryBarHeight = 40, .headerHeight = 84, .verticalSpacing = 16, .contentSidePadding = 20, .listRowHeight = 40, .listWithSubtitleRowHeight = 60, .menuRowHeight = 64, .menuSpacing = 8, .tabSpacing = 8, .tabBarHeight = 40, .scrollBarWidth = 4, .scrollBarRightOffset = 5, .homeTopPadding = 56, .homeCoverHeight = 226, .homeCoverTileHeight = 287, .homeRecentBooksCount = 3, .buttonHintsHeight = 40, .sideButtonHintsWidth = 30, .versionTextRightX = 20, .versionTextY = 55, .bookProgressBarHeight = 4}; } class LyraTheme : public BaseTheme { public: // Component drawing methods // void drawProgressBar(const GfxRenderer& renderer, Rect rect, size_t current, size_t total) override; void drawBatteryLeft(const GfxRenderer& renderer, Rect rect, bool showPercentage = true) const override; void drawBatteryRight(const GfxRenderer& renderer, Rect rect, bool showPercentage = true) const override; void drawHeader(const GfxRenderer& renderer, Rect rect, const char* title) const override; void drawTabBar(const GfxRenderer& renderer, Rect rect, const std::vector& tabs, bool selected) const override; void drawList(const GfxRenderer& renderer, Rect rect, int itemCount, int selectedIndex, const std::function& rowTitle, const std::function& rowSubtitle, const std::function& rowIcon, const std::function& rowValue) const override; void drawButtonHints(GfxRenderer& renderer, const char* btn1, const char* btn2, const char* btn3, const char* btn4) const override; void drawSideButtonHints(const GfxRenderer& renderer, const char* topBtn, const char* bottomBtn) const override; void drawButtonMenu(GfxRenderer& renderer, Rect rect, int buttonCount, int selectedIndex, const std::function& buttonLabel, const std::function& rowIcon) const override; void drawRecentBookCover(GfxRenderer& renderer, Rect rect, const std::vector& recentBooks, const int selectorIndex, bool& coverRendered, bool& coverBufferStored, bool& bufferRestored, std::function storeCoverBuffer) const override; Rect drawPopup(const GfxRenderer& renderer, const char* message) const override; };