pub trait ImageLoader {
// Required methods
fn id(&self) -> &str;
fn load(
&self,
ctx: &Context,
uri: &str,
size_hint: SizeHint
) -> Result<ImagePoll, LoadError>;
fn forget(&self, uri: &str);
fn forget_all(&self);
fn byte_size(&self) -> usize;
// Provided method
fn end_pass(&self, frame_index: usize) { ... }
}
Expand description
An ImageLoader
decodes raw bytes into a ColorImage
.
Implementations are expected to cache at least each URI
.
Required Methods§
fn 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
.
fn load(
&self,
ctx: &Context,
uri: &str,
size_hint: SizeHint
) -> Result<ImagePoll, LoadError>
fn load( &self, ctx: &Context, uri: &str, size_hint: SizeHint ) -> Result<ImagePoll, LoadError>
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.
fn 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.
fn 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.