summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-22 23:20:24 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-22 23:20:24 +0200
commitf8a232c8af4c50557fbf0c2e0b2ba46fb63f6adc (patch)
tree7a02c619be824cdd5cae4c0573b41d4c2a8e6c08
parent523736f08b1d452e4d3405a68b267c6f44adc22b (diff)
downloadiced-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.rs28
-rw-r--r--native/src/widget/image.rs18
-rw-r--r--web/src/widget/image.rs10
-rw-r--r--wgpu/src/renderer/image.rs10
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)
}
}