summaryrefslogtreecommitdiffstats
path: root/graphics/src/image.rs
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/src/image.rs')
-rw-r--r--graphics/src/image.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/graphics/src/image.rs b/graphics/src/image.rs
new file mode 100644
index 00000000..f1153882
--- /dev/null
+++ b/graphics/src/image.rs
@@ -0,0 +1,34 @@
+//! Image loading and caching
+
+use std::fmt::Debug;
+
+#[cfg(feature = "image_rs")]
+pub mod raster;
+
+#[cfg(feature = "svg")]
+pub mod vector;
+
+/// Entry in the texture store
+pub trait TextureStoreEntry: Debug {
+ /// Width and height of the entry
+ fn size(&self) -> (u32, u32);
+}
+
+/// Stores cached image data for use in rendering
+pub trait TextureStore {
+ /// Entry in the texture store
+ type Entry: TextureStoreEntry;
+ /// State passed to upload/remove
+ type State<'a>;
+
+ /// Upload image data
+ fn upload(
+ &mut self,
+ width: u32,
+ height: u32,
+ data: &[u8],
+ state: &mut Self::State<'_>,
+ ) -> Option<Self::Entry>;
+ /// Remome image from store
+ fn remove(&mut self, entry: &Self::Entry, state: &mut Self::State<'_>);
+}