#pragma once #include #include #include "../Activity.h" class SleepActivity final : public Activity { public: explicit SleepActivity(GfxRenderer& renderer, MappedInputManager& mappedInput) : Activity("Sleep", renderer, mappedInput) {} void onEnter() override; private: void renderPopup(const char* message) const; void renderDefaultSleepScreen() const; void renderCustomSleepScreen() const; void renderCoverSleepScreen() const; void renderBitmapSleepScreen(const Bitmap& bitmap, const std::string& bmpPath) const; void renderBlankSleepScreen() const; // Edge luminance caching helpers static std::string getEdgeCachePath(const std::string& bmpPath); EdgeLuminance getEdgeLuminance(const Bitmap& bitmap, const std::string& bmpPath) const; // Book-level edge cache helpers (for skipping book metadata loading) static std::string getBookEdgeCachePath(const std::string& bookPath); static std::string getCoverBmpPath(const std::string& cacheDir, const std::string& bookPath, bool cropped); bool tryRenderCachedCoverSleep(const std::string& bookPath, bool cropped) const; // Quantize luminance (0-255) to 4-level grayscale (0-3) static uint8_t quantizeGray(uint8_t lum); };