Move image/svg handling into iced_graphics
The `TextureStore` trait is implemented by the atlas, and can also be implemented in the glow renderer or in a software renderer. The API here may be improved in the future, but API stability is presumably not a huge issue since these types will only be used by renderer backends.
This commit is contained in:
parent
7b12991728
commit
2c7c42ee93
10 changed files with 281 additions and 191 deletions
34
graphics/src/image.rs
Normal file
34
graphics/src/image.rs
Normal file
|
|
@ -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<'_>);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue