diff options
Diffstat (limited to 'wgpu/src/renderer/widget/image.rs')
-rw-r--r-- | wgpu/src/renderer/widget/image.rs | 29 |
1 files changed, 5 insertions, 24 deletions
diff --git a/wgpu/src/renderer/widget/image.rs b/wgpu/src/renderer/widget/image.rs index 0afb11e3..0006dde1 100644 --- a/wgpu/src/renderer/widget/image.rs +++ b/wgpu/src/renderer/widget/image.rs @@ -1,34 +1,15 @@ use crate::{Primitive, Renderer}; -use iced_native::{image, layout, Image, Layout, Length, MouseCursor, Size}; +use iced_native::{image, Layout, MouseCursor}; impl image::Renderer for Renderer { - fn layout(&self, image: &Image, limits: &layout::Limits) -> layout::Node { - let (width, height) = self.image_pipeline.dimensions(&image.path); - - let aspect_ratio = width as f32 / height as f32; - - // TODO: Deal with additional cases - let (width, height) = match (image.width, image.height) { - (Length::Units(width), _) => ( - image.width, - Length::Units((width as f32 / aspect_ratio).round() as u16), - ), - (_, _) => { - (Length::Units(width as u16), Length::Units(height as u16)) - } - }; - - let mut size = limits.width(width).height(height).resolve(Size::ZERO); - - size.height = size.width / aspect_ratio; - - layout::Node::new(size) + fn dimensions(&self, path: &str) -> (u32, u32) { + self.image_pipeline.dimensions(path) } - fn draw(&mut self, image: &Image, layout: Layout<'_>) -> Self::Output { + fn draw(&mut self, path: &str, layout: Layout<'_>) -> Self::Output { ( Primitive::Image { - path: image.path.clone(), + path: String::from(path), bounds: layout.bounds(), }, MouseCursor::OutOfBounds, |