Refactor some image traits a bit
- Use `Size<u32>` were applicable. - Rename `TextureStore` to `image::Storage`. - Rename `TextureStoreEntry` to `image::storage::Entry`. - Wire up `viewport_dimensions` to `iced_glow` for `Svg`.
This commit is contained in:
parent
5575e6ea08
commit
8ce8d374b1
20 changed files with 164 additions and 127 deletions
31
graphics/src/image/storage.rs
Normal file
31
graphics/src/image/storage.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
//! Store images.
|
||||
use crate::Size;
|
||||
|
||||
use std::fmt::Debug;
|
||||
|
||||
/// Stores cached image data for use in rendering
|
||||
pub trait Storage {
|
||||
/// The type of an [`Entry`] in the [`Storage`].
|
||||
type Entry: Entry;
|
||||
|
||||
/// State provided to upload or remove a [`Self::Entry`].
|
||||
type State<'a>;
|
||||
|
||||
/// Upload the image data of a [`Self::Entry`].
|
||||
fn upload(
|
||||
&mut self,
|
||||
width: u32,
|
||||
height: u32,
|
||||
data: &[u8],
|
||||
state: &mut Self::State<'_>,
|
||||
) -> Option<Self::Entry>;
|
||||
|
||||
/// Romve a [`Self::Entry`] from the [`Storage`].
|
||||
fn remove(&mut self, entry: &Self::Entry, state: &mut Self::State<'_>);
|
||||
}
|
||||
|
||||
/// An entry in some [`Storage`],
|
||||
pub trait Entry: Debug {
|
||||
/// The [`Size`] of the [`Entry`].
|
||||
fn size(&self) -> Size<u32>;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue