pub trait ImageLoader {
// Required methods
fn id(&self) -> &str;
fn load(
&self,
ctx: &Context,
uri: &str,
size_hint: SizeHint,
) -> ImageLoadResult;
fn forget(&self, uri: &str);
fn forget_all(&self);
fn byte_size(&self) -> usize;
// Provided methods
fn end_pass(&self, pass_index: u64) { ... }
fn has_pending(&self) -> bool { ... }
}
Expand description
An ImageLoader
decodes raw bytes into a ColorImage
.
Implementations are expected to cache at least each URI
.
Required Methods§
Sourcefn id(&self) -> &str
fn id(&self) -> &str
Unique ID of this loader.
To reduce the chance of collisions, include module_path!()
as part of this ID.
For example: concat!(module_path!(), "::MyLoader")
for my_crate::my_loader::MyLoader
.
Sourcefn load(&self, ctx: &Context, uri: &str, size_hint: SizeHint) -> ImageLoadResult
fn load(&self, ctx: &Context, uri: &str, size_hint: SizeHint) -> ImageLoadResult
Try loading the image from the given uri.
Implementations should call ctx.request_repaint
to wake up the ui
once the image is ready.
The implementation should cache any result, so that calling this is immediate-mode safe.
§Errors
This may fail with:
LoadError::NotSupported
if the loader does not support loadinguri
.LoadError::Loading
if the loading process failed.
Sourcefn forget(&self, uri: &str)
fn forget(&self, uri: &str)
Forget the given uri
.
If uri
is cached, it should be evicted from cache,
so that it may be fully reloaded.
Sourcefn forget_all(&self)
fn forget_all(&self)
Forget all URIs ever given to this loader.
If the loader caches any URIs, the entire cache should be cleared, so that all of them may be fully reloaded.
Provided Methods§
Sourcefn end_pass(&self, pass_index: u64)
fn end_pass(&self, pass_index: u64)
Implementations may use this to perform work at the end of a pass, such as evicting unused entries from a cache.
Sourcefn has_pending(&self) -> bool
fn has_pending(&self) -> bool
Returns true
if some image is currently being loaded.
NOTE: You probably also want to check BytesLoader::has_pending
.