Refactor some image traits a bit

- Use `Size<u32>` were applicable.
- Rename `TextureStore` to `image::Storage`.
- Rename `TextureStoreEntry` to `image::storage::Entry`.
- Wire up `viewport_dimensions` to `iced_glow` for `Svg`.
This commit is contained in:
Héctor Ramón Jiménez 2022-11-05 03:13:04 +01:00
parent 5575e6ea08
commit 8ce8d374b1
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
20 changed files with 164 additions and 127 deletions

View file

@ -4,9 +4,6 @@ mod allocation;
mod allocator;
mod layer;
use iced_graphics::image::TextureStore;
use std::num::NonZeroU32;
pub use allocation::Allocation;
pub use entry::Entry;
pub use layer::Layer;
@ -15,6 +12,11 @@ use allocator::Allocator;
pub const SIZE: u32 = 2048;
use iced_graphics::image;
use iced_graphics::Size;
use std::num::NonZeroU32;
#[derive(Debug)]
pub struct Atlas {
texture: wgpu::Texture,
@ -112,7 +114,7 @@ impl Atlas {
}
return Some(Entry::Fragmented {
size: (width, height),
size: Size::new(width, height),
fragments,
});
}
@ -192,7 +194,7 @@ impl Atlas {
encoder: &mut wgpu::CommandEncoder,
) {
let (x, y) = allocation.position();
let (width, height) = allocation.size();
let Size { width, height } = allocation.size();
let layer = allocation.layer();
let extent = wgpu::Extent3d {
@ -297,7 +299,7 @@ impl Atlas {
}
}
impl TextureStore for Atlas {
impl image::Storage for Atlas {
type Entry = Entry;
type State<'a> = (&'a wgpu::Device, &'a mut wgpu::CommandEncoder);

View file

@ -1,5 +1,7 @@
use crate::image::atlas::{self, allocator};
use iced_graphics::Size;
#[derive(Debug)]
pub enum Allocation {
Partial {
@ -19,10 +21,10 @@ impl Allocation {
}
}
pub fn size(&self) -> (u32, u32) {
pub fn size(&self) -> Size<u32> {
match self {
Allocation::Partial { region, .. } => region.size(),
Allocation::Full { .. } => (atlas::SIZE, atlas::SIZE),
Allocation::Full { .. } => Size::new(atlas::SIZE, atlas::SIZE),
}
}

View file

@ -46,10 +46,10 @@ impl Region {
(rectangle.min.x as u32, rectangle.min.y as u32)
}
pub fn size(&self) -> (u32, u32) {
pub fn size(&self) -> iced_graphics::Size<u32> {
let size = self.allocation.rectangle.size();
(size.width as u32, size.height as u32)
iced_graphics::Size::new(size.width as u32, size.height as u32)
}
}

View file

@ -1,17 +1,19 @@
use crate::image::atlas;
use iced_graphics::image::TextureStoreEntry;
use iced_graphics::image;
use iced_graphics::Size;
#[derive(Debug)]
pub enum Entry {
Contiguous(atlas::Allocation),
Fragmented {
size: (u32, u32),
size: Size<u32>,
fragments: Vec<Fragment>,
},
}
impl TextureStoreEntry for Entry {
fn size(&self) -> (u32, u32) {
impl image::storage::Entry for Entry {
fn size(&self) -> Size<u32> {
match self {
Entry::Contiguous(allocation) => allocation.size(),
Entry::Fragmented { size, .. } => *size,