diff options
author | 2022-11-05 04:37:59 +0100 | |
---|---|---|
committer | 2022-11-05 04:37:59 +0100 | |
commit | 370fa14efb8d41bcf81e4a0ead6a9ab7ab750bee (patch) | |
tree | 6a434e6bc8c3a95065faafa533cf1d5e2318cc06 /graphics/src/image/storage.rs | |
parent | 7b129917281baaa6688158c303922f94341ab69f (diff) | |
parent | 078cadfed0e67560d9047d84435e87b8671c5992 (diff) | |
download | iced-370fa14efb8d41bcf81e4a0ead6a9ab7ab750bee.tar.gz iced-370fa14efb8d41bcf81e4a0ead6a9ab7ab750bee.tar.bz2 iced-370fa14efb8d41bcf81e4a0ead6a9ab7ab750bee.zip |
Merge pull request #1485 from ids1024/glow-image
Glow image rendering support; move image/svg code to iced_graphics
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>; +} |