#pragma once #include #include #include #include #include #include class GfxRenderer; // Screen-lifetime thumbnail decoding and PSRAM region snapshots. class HomeCoverCache { public: static constexpr size_t MAX_COVERS = 7; explicit HomeCoverCache(GfxRenderer& renderer) : renderer(renderer) {} void begin(); void prepare(); void invalidate(); void invalidate(size_t index); bool paint(freeink::ui::Rect rect, size_t index, const std::string& path); private: struct CachedCover { freeink::ui::Rect rect{}; size_t offset = 0; size_t bytes = 0; bool valid = false; }; HalMemory::PsramBuffer coverCache; std::array cachedCovers{}; size_t coverCacheCapacity = 0; size_t coverCacheUsed = 0; int coverCacheOrientation = -1; HalFile coverFile; Bitmap coverBitmap{coverFile}; GfxRenderer& renderer; };