diff options
author | 2022-11-05 03:13:04 +0100 | |
---|---|---|
committer | 2022-11-05 03:19:38 +0100 | |
commit | 8ce8d374b1e8d1d394a42a5ee2bca8af790f0b71 (patch) | |
tree | 40cf3587e2a08f845c9a8d89108b1b3d8cd86213 /graphics/src/image/storage.rs | |
parent | 5575e6ea0897e406674e7e4239808fbf9daa07c3 (diff) | |
download | iced-8ce8d374b1e8d1d394a42a5ee2bca8af790f0b71.tar.gz iced-8ce8d374b1e8d1d394a42a5ee2bca8af790f0b71.tar.bz2 iced-8ce8d374b1e8d1d394a42a5ee2bca8af790f0b71.zip |
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`.
Diffstat (limited to 'graphics/src/image/storage.rs')
-rw-r--r-- | graphics/src/image/storage.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/graphics/src/image/storage.rs b/graphics/src/image/storage.rs new file mode 100644 index 00000000..2098c7b2 --- /dev/null +++ b/graphics/src/image/storage.rs @@ -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>; +} |