32 lines
1.0 KiB
C
32 lines
1.0 KiB
C
|
|
#pragma once
|
||
|
|
#include <cstdint>
|
||
|
|
#include <string>
|
||
|
|
|
||
|
|
#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);
|
||
|
|
};
|