#pragma once #include #include #include #include #include #include #include namespace vamp_zero { class score_page_cache { public: explicit score_page_cache(std::function, modulus::error>(std::string const &)> loader); auto get(std::string path) -> std::expected, modulus::error>; auto clear() -> void; auto size() const -> std::size_t; private: struct entry { std::string path{}; std::shared_ptr texture{}; }; std::function, modulus::error>(std::string const &)> loader_{}; std::vector entries_{}; }; auto score_page_count(vamp_zero::score_document const &score) -> std::size_t; auto validated_page_path(vamp_zero::score_document const &score, std::size_t index) -> std::expected; auto validate_score_page(vamp_zero::score_document const &score, std::size_t index) -> std::expected; }