summaryrefslogtreecommitdiffstats
path: root/graphics/src/image/storage.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2022-11-05 04:37:59 +0100
committerLibravatar GitHub <noreply@github.com>2022-11-05 04:37:59 +0100
commit370fa14efb8d41bcf81e4a0ead6a9ab7ab750bee (patch)
tree6a434e6bc8c3a95065faafa533cf1d5e2318cc06 /graphics/src/image/storage.rs
parent7b129917281baaa6688158c303922f94341ab69f (diff)
parent078cadfed0e67560d9047d84435e87b8671c5992 (diff)
downloadiced-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.rs31
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>;
+}