diff options
author | 2019-10-22 23:20:24 +0200 | |
---|---|---|
committer | 2019-10-22 23:20:24 +0200 | |
commit | f8a232c8af4c50557fbf0c2e0b2ba46fb63f6adc (patch) | |
tree | 7a02c619be824cdd5cae4c0573b41d4c2a8e6c08 | |
parent | 523736f08b1d452e4d3405a68b267c6f44adc22b (diff) | |
download | iced-f8a232c8af4c50557fbf0c2e0b2ba46fb63f6adc.tar.gz iced-f8a232c8af4c50557fbf0c2e0b2ba46fb63f6adc.tar.bz2 iced-f8a232c8af4c50557fbf0c2e0b2ba46fb63f6adc.zip |
Remove generic handle in `Image`
For now, we will simply assume images will be loaded from a given path.
-rw-r--r-- | core/src/widget/image.rs | 28 | ||||
-rw-r--r-- | native/src/widget/image.rs | 18 | ||||
-rw-r--r-- | web/src/widget/image.rs | 10 | ||||
-rw-r--r-- | wgpu/src/renderer/image.rs | 10 |
4 files changed, 25 insertions, 41 deletions
diff --git a/core/src/widget/image.rs b/core/src/widget/image.rs index 110ba99a..6e410dce 100644 --- a/core/src/widget/image.rs +++ b/core/src/widget/image.rs @@ -9,12 +9,12 @@ use crate::{Align, Length, Rectangle}; /// ``` /// use iced_core::Image; /// -/// # let my_handle = String::from("some_handle"); -/// let image = Image::new(my_handle); +/// let image = Image::new("resources/ferris.png"); /// ``` -pub struct Image<I> { - /// The image handle - pub handle: I, +#[derive(Debug)] +pub struct Image { + /// The image path + pub path: String, /// The part of the image to show pub clip: Option<Rectangle<u16>>, @@ -28,23 +28,13 @@ pub struct Image<I> { pub align_self: Option<Align>, } -impl<I> std::fmt::Debug for Image<I> { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("Image") - .field("clip", &self.clip) - .field("width", &self.width) - .field("height", &self.height) - .finish() - } -} - -impl<I> Image<I> { - /// Creates a new [`Image`] with given image handle. +impl Image { + /// Creates a new [`Image`] with the given path. /// /// [`Image`]: struct.Image.html - pub fn new(handle: I) -> Self { + pub fn new<T: Into<String>>(path: T) -> Self { Image { - handle, + path: path.into(), clip: None, width: Length::Shrink, height: Length::Shrink, diff --git a/native/src/widget/image.rs b/native/src/widget/image.rs index 178dd709..6255a7b5 100644 --- a/native/src/widget/image.rs +++ b/native/src/widget/image.rs @@ -6,10 +6,9 @@ use std::hash::Hash; pub use iced_core::Image; -impl<I, Message, Renderer> Widget<Message, Renderer> for Image<I> +impl<Message, Renderer> Widget<Message, Renderer> for Image where - Renderer: self::Renderer<I>, - I: Clone, + Renderer: self::Renderer, { fn node(&self, renderer: &Renderer) -> Node { renderer.node(&self) @@ -38,27 +37,26 @@ where /// /// [`Image`]: struct.Image.html /// [renderer]: ../../renderer/index.html -pub trait Renderer<I>: crate::Renderer { +pub trait Renderer: crate::Renderer { /// Creates a [`Node`] for the provided [`Image`]. /// /// You should probably keep the original aspect ratio, if possible. /// /// [`Node`]: ../../struct.Node.html /// [`Image`]: struct.Image.html - fn node(&self, image: &Image<I>) -> Node; + fn node(&self, image: &Image) -> Node; /// Draws an [`Image`]. /// /// [`Image`]: struct.Image.html - fn draw(&mut self, image: &Image<I>, layout: Layout<'_>) -> Self::Output; + fn draw(&mut self, image: &Image, layout: Layout<'_>) -> Self::Output; } -impl<'a, I, Message, Renderer> From<Image<I>> for Element<'a, Message, Renderer> +impl<'a, Message, Renderer> From<Image> for Element<'a, Message, Renderer> where - Renderer: self::Renderer<I>, - I: Clone + 'a, + Renderer: self::Renderer, { - fn from(image: Image<I>) -> Element<'a, Message, Renderer> { + fn from(image: Image) -> Element<'a, Message, Renderer> { Element::new(image) } } diff --git a/web/src/widget/image.rs b/web/src/widget/image.rs index fd4ff0df..bd3e5daf 100644 --- a/web/src/widget/image.rs +++ b/web/src/widget/image.rs @@ -2,9 +2,9 @@ use crate::{Bus, Element, Length, Widget}; use dodrio::bumpalo; -pub type Image<'a> = iced_core::Image<&'a str>; +pub use iced_core::Image; -impl<'a, Message> Widget<Message> for Image<'a> { +impl<Message> Widget<Message> for Image { fn node<'b>( &self, bump: &'b bumpalo::Bump, @@ -12,7 +12,7 @@ impl<'a, Message> Widget<Message> for Image<'a> { ) -> dodrio::Node<'b> { use dodrio::builder::*; - let src = bumpalo::format!(in bump, "{}", self.handle); + let src = bumpalo::format!(in bump, "{}", self.path); let mut image = img(bump).attr("src", src.into_bump_str()); @@ -35,8 +35,8 @@ impl<'a, Message> Widget<Message> for Image<'a> { } } -impl<'a, Message> From<Image<'a>> for Element<'a, Message> { - fn from(image: Image<'a>) -> Element<'a, Message> { +impl<'a, Message> From<Image> for Element<'a, Message> { + fn from(image: Image) -> Element<'a, Message> { Element::new(image) } } diff --git a/wgpu/src/renderer/image.rs b/wgpu/src/renderer/image.rs index a29a3d49..85ac3ad5 100644 --- a/wgpu/src/renderer/image.rs +++ b/wgpu/src/renderer/image.rs @@ -1,16 +1,12 @@ use crate::{Primitive, Renderer}; use iced_native::{image, Image, Layout, MouseCursor, Node, Style}; -impl image::Renderer<&str> for Renderer { - fn node(&self, _image: &Image<&str>) -> Node { +impl image::Renderer for Renderer { + fn node(&self, _image: &Image) -> Node { Node::new(Style::default()) } - fn draw( - &mut self, - _image: &Image<&str>, - _layout: Layout<'_>, - ) -> Self::Output { + fn draw(&mut self, _image: &Image, _layout: Layout<'_>) -> Self::Output { (Primitive::None, MouseCursor::OutOfBounds) } } |