#pragma once #include #include #include "CrossPointSettings.h" // Per-book settings stored in the book's cache directory. // Fields default to sentinel values (0xFF) meaning "use global setting". class BookSettings { public: // 0xFF = use global default; otherwise one of SLEEP_SCREEN_LETTERBOX_FILL values (0-2). uint8_t letterboxFillOverride = USE_GLOBAL; static constexpr uint8_t USE_GLOBAL = 0xFF; // Returns the effective letterbox fill mode: the per-book override if set, // otherwise the global setting from CrossPointSettings. uint8_t getEffectiveLetterboxFill() const { if (letterboxFillOverride != USE_GLOBAL && letterboxFillOverride < CrossPointSettings::SLEEP_SCREEN_LETTERBOX_FILL_COUNT) { return letterboxFillOverride; } return SETTINGS.sleepScreenLetterboxFill; } static BookSettings load(const std::string& cachePath); static bool save(const std::string& cachePath, const BookSettings& settings); private: static std::string filePath(const std::string& cachePath); };