10#include <unordered_map>
115 const std::vector<std::string>&
font_fallback()
const {
return font_fallback_; }
144 return max_file_bytes_;
182 struct EmbeddedEntry {
186 std::unordered_map<std::string, EmbeddedEntry> embedded_;
190 enum class Type { image, font, shader, blob };
194 ShaderData shader_data;
196 size_t byte_size = 0;
197 uint64_t access_time = 0;
199 mutable std::unordered_map<std::string, CacheEntry> cache_;
200 mutable uint64_t access_counter_ = 0;
201 size_t cache_bytes_ = 0;
202 size_t max_cache_bytes_ = 64 * 1024 * 1024;
204 float display_scale_ = 1.0f;
207 std::unordered_map<std::string, std::string> font_registry_;
208 std::vector<std::string> font_fallback_;
210 mutable std::mutex mutex_;
212 void touch(CacheEntry& entry)
const;
213 void add_to_cache(
const std::string& key, CacheEntry entry);
214 CacheEntry* find_cached(
const std::string& key)
const;
215 std::string resolve_path(
const std::string&
path)
const;
218 static ImageData decode_png(
const uint8_t* data,
size_t size);
219 BlobData read_file_bytes(
const std::string&
path)
const;
void set_font_fallback(std::vector< std::string > families)
Set the font fallback chain.
FontData font_for_family(const std::string &family) const
Get font data for a family name (walks fallback chain).
void set_max_file_bytes(size_t bytes)
static constexpr size_t kDefaultMaxFileBytes
Ceiling for one file read through load_blob / load_image / load_font / load_shader.
Definition asset_manager.hpp:141
void register_embedded(const std::string &name, const uint8_t *data, size_t size)
Register an embedded resource (called by generated code from pulp_add_binary_data).
void register_shader(const std::string &name, std::string source)
Register a shader string directly.
BlobData load_blob_embedded(const std::string &name)
Load raw bytes from embedded resource.
ShaderData load_shader(const std::string &path)
Load shader source from file path.
ShaderData shader(const std::string &name) const
Get a registered/loaded shader by name.
size_t max_file_bytes() const
Definition asset_manager.hpp:143
void set_max_cache_size(size_t bytes)
Set maximum cache size in bytes. Default: 64 MB.
FontData load_font(const std::string &path)
Load font from file path.
bool has_embedded(const std::string &name) const
Check if an embedded resource exists.
BlobData load_blob(const std::string &path)
Load raw bytes from file path.
const std::vector< std::string > & font_fallback() const
Definition asset_manager.hpp:115
ImageData load_image_from_data_uri(const std::string &uri)
Load image from data: URI (base64-encoded PNG/JPEG).
float display_scale() const
Definition asset_manager.hpp:179
void register_font_family(const std::string &family, const std::string &path_or_name)
Register a font in the font fallback chain.
FontData load_font_embedded(const std::string &name)
Load font from embedded resource.
size_t cache_usage() const
Current cache usage in bytes.
Definition asset_manager.hpp:163
static std::vector< uint8_t > decode_data_uri_bytes(std::string_view uri)
The payload of a data: URI as encoded bytes, whatever their format; dimensions are left to a decoder.
size_t cache_count() const
Number of cached entries.
static AssetManager & instance()
Get the singleton instance.
void clear_cache()
Clear all cached assets.
void load_image_async(const std::string &path, std::function< void(ImageData)> callback)
Load an image asynchronously.
size_t max_cache_size() const
Definition asset_manager.hpp:160
void evict_lru()
Evict least-recently-used entries until cache fits within max size.
ImageData load_image_embedded(const std::string &name)
Load image from embedded resource by name.
void set_display_scale(float scale)
Set display scale for retina-aware asset resolution.
Definition asset_manager.hpp:178
ImageData load_image_from_memory(const uint8_t *data, size_t size)
Load image from memory buffer (PNG/JPEG bytes).
ImageData load_image(const std::string &path)
Load image from file path. Returns cached if available.
ShaderData load_shader_embedded(const std::string &name)
Load shader from embedded resource.
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
@ path
Definition anchor_strategy.hpp:42
@ scale
Definition css_animation.hpp:126
Raw binary data for any resource.
Definition asset_manager.hpp:44
std::vector< uint8_t > data
Definition asset_manager.hpp:45
bool valid() const
Definition asset_manager.hpp:46
size_t byte_size() const
Definition asset_manager.hpp:47
Font data loaded from TTF/OTF.
Definition asset_manager.hpp:28
std::string family_name
Definition asset_manager.hpp:30
bool valid() const
Definition asset_manager.hpp:31
std::vector< uint8_t > data
Definition asset_manager.hpp:29
size_t byte_size() const
Definition asset_manager.hpp:32
Raw pixel data (RGBA 8-bit per channel).
Definition asset_manager.hpp:18
size_t byte_size() const
Definition asset_manager.hpp:24
uint32_t width
Definition asset_manager.hpp:20
std::vector< uint8_t > pixels
Definition asset_manager.hpp:19
bool valid() const
Definition asset_manager.hpp:23
uint32_t height
Definition asset_manager.hpp:21
Shader source with optional compilation error.
Definition asset_manager.hpp:36
size_t byte_size() const
Definition asset_manager.hpp:40
bool valid() const
Definition asset_manager.hpp:39
std::string error
Definition asset_manager.hpp:38
std::string source
Definition asset_manager.hpp:37