Files
product-vamp/include/vamp_zero/score.hpp
T
khodowany 1d1bd3e871
ci / checks (push) Successful in 43m19s
Music Notation
2026-09-15 01:30:42 -05:00

35 lines
972 B
C++

#pragma once
#include <expected>
#include <functional>
#include <memory>
#include <string>
#include <vector>
#include <luma.hpp>
#include <vamp_zero/types.hpp>
namespace vamp_zero {
class score_page_cache {
public:
explicit score_page_cache(std::function<std::expected<std::shared_ptr<luma::texture>, modulus::error>(std::string const &)> loader);
auto get(std::string path) -> std::expected<std::shared_ptr<luma::texture>, modulus::error>;
auto clear() -> void;
auto size() const -> std::size_t;
private:
struct entry {
std::string path{};
std::shared_ptr<luma::texture> texture{};
};
std::function<std::expected<std::shared_ptr<luma::texture>, modulus::error>(std::string const &)> loader_{};
std::vector<entry> 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<std::string, modulus::error>;
}