diff options
Diffstat (limited to 'rust/crates/compositor/src/texture_store.rs')
| -rw-r--r-- | rust/crates/compositor/src/texture_store.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/rust/crates/compositor/src/texture_store.rs b/rust/crates/compositor/src/texture_store.rs new file mode 100644 index 00000000..ac905739 --- /dev/null +++ b/rust/crates/compositor/src/texture_store.rs @@ -0,0 +1,36 @@ +use std::collections::HashMap; + +use gpu::wgpu; + +pub struct StoredTexture { + texture: wgpu::Texture, +} + +impl StoredTexture { + pub fn new(texture: wgpu::Texture) -> Self { + Self { texture } + } + + pub fn texture(&self) -> &wgpu::Texture { + &self.texture + } +} + +#[derive(Default)] +pub struct TextureStore { + textures: HashMap<String, StoredTexture>, +} + +impl TextureStore { + pub fn upsert(&mut self, id: String, texture: wgpu::Texture) { + self.textures.insert(id, StoredTexture::new(texture)); + } + + pub fn get(&self, id: &str) -> Option<&StoredTexture> { + self.textures.get(id) + } + + pub fn remove(&mut self, id: &str) { + self.textures.remove(id); + } +} |
