Remove generic handle in Image
For now, we will simply assume images will be loaded from a given path.
This commit is contained in:
parent
523736f08b
commit
f8a232c8af
4 changed files with 25 additions and 41 deletions
|
|
@ -9,12 +9,12 @@ use crate::{Align, Length, Rectangle};
|
||||||
/// ```
|
/// ```
|
||||||
/// use iced_core::Image;
|
/// use iced_core::Image;
|
||||||
///
|
///
|
||||||
/// # let my_handle = String::from("some_handle");
|
/// let image = Image::new("resources/ferris.png");
|
||||||
/// let image = Image::new(my_handle);
|
|
||||||
/// ```
|
/// ```
|
||||||
pub struct Image<I> {
|
#[derive(Debug)]
|
||||||
/// The image handle
|
pub struct Image {
|
||||||
pub handle: I,
|
/// The image path
|
||||||
|
pub path: String,
|
||||||
|
|
||||||
/// The part of the image to show
|
/// The part of the image to show
|
||||||
pub clip: Option<Rectangle<u16>>,
|
pub clip: Option<Rectangle<u16>>,
|
||||||
|
|
@ -28,23 +28,13 @@ pub struct Image<I> {
|
||||||
pub align_self: Option<Align>,
|
pub align_self: Option<Align>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<I> std::fmt::Debug for Image<I> {
|
impl Image {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
/// Creates a new [`Image`] with the given path.
|
||||||
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.
|
|
||||||
///
|
///
|
||||||
/// [`Image`]: struct.Image.html
|
/// [`Image`]: struct.Image.html
|
||||||
pub fn new(handle: I) -> Self {
|
pub fn new<T: Into<String>>(path: T) -> Self {
|
||||||
Image {
|
Image {
|
||||||
handle,
|
path: path.into(),
|
||||||
clip: None,
|
clip: None,
|
||||||
width: Length::Shrink,
|
width: Length::Shrink,
|
||||||
height: Length::Shrink,
|
height: Length::Shrink,
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,9 @@ use std::hash::Hash;
|
||||||
|
|
||||||
pub use iced_core::Image;
|
pub use iced_core::Image;
|
||||||
|
|
||||||
impl<I, Message, Renderer> Widget<Message, Renderer> for Image<I>
|
impl<Message, Renderer> Widget<Message, Renderer> for Image
|
||||||
where
|
where
|
||||||
Renderer: self::Renderer<I>,
|
Renderer: self::Renderer,
|
||||||
I: Clone,
|
|
||||||
{
|
{
|
||||||
fn node(&self, renderer: &Renderer) -> Node {
|
fn node(&self, renderer: &Renderer) -> Node {
|
||||||
renderer.node(&self)
|
renderer.node(&self)
|
||||||
|
|
@ -38,27 +37,26 @@ where
|
||||||
///
|
///
|
||||||
/// [`Image`]: struct.Image.html
|
/// [`Image`]: struct.Image.html
|
||||||
/// [renderer]: ../../renderer/index.html
|
/// [renderer]: ../../renderer/index.html
|
||||||
pub trait Renderer<I>: crate::Renderer {
|
pub trait Renderer: crate::Renderer {
|
||||||
/// Creates a [`Node`] for the provided [`Image`].
|
/// Creates a [`Node`] for the provided [`Image`].
|
||||||
///
|
///
|
||||||
/// You should probably keep the original aspect ratio, if possible.
|
/// You should probably keep the original aspect ratio, if possible.
|
||||||
///
|
///
|
||||||
/// [`Node`]: ../../struct.Node.html
|
/// [`Node`]: ../../struct.Node.html
|
||||||
/// [`Image`]: struct.Image.html
|
/// [`Image`]: struct.Image.html
|
||||||
fn node(&self, image: &Image<I>) -> Node;
|
fn node(&self, image: &Image) -> Node;
|
||||||
|
|
||||||
/// Draws an [`Image`].
|
/// Draws an [`Image`].
|
||||||
///
|
///
|
||||||
/// [`Image`]: struct.Image.html
|
/// [`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
|
where
|
||||||
Renderer: self::Renderer<I>,
|
Renderer: self::Renderer,
|
||||||
I: Clone + 'a,
|
|
||||||
{
|
{
|
||||||
fn from(image: Image<I>) -> Element<'a, Message, Renderer> {
|
fn from(image: Image) -> Element<'a, Message, Renderer> {
|
||||||
Element::new(image)
|
Element::new(image)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@ use crate::{Bus, Element, Length, Widget};
|
||||||
|
|
||||||
use dodrio::bumpalo;
|
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>(
|
fn node<'b>(
|
||||||
&self,
|
&self,
|
||||||
bump: &'b bumpalo::Bump,
|
bump: &'b bumpalo::Bump,
|
||||||
|
|
@ -12,7 +12,7 @@ impl<'a, Message> Widget<Message> for Image<'a> {
|
||||||
) -> dodrio::Node<'b> {
|
) -> dodrio::Node<'b> {
|
||||||
use dodrio::builder::*;
|
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());
|
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> {
|
impl<'a, Message> From<Image> for Element<'a, Message> {
|
||||||
fn from(image: Image<'a>) -> Element<'a, Message> {
|
fn from(image: Image) -> Element<'a, Message> {
|
||||||
Element::new(image)
|
Element::new(image)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,12 @@
|
||||||
use crate::{Primitive, Renderer};
|
use crate::{Primitive, Renderer};
|
||||||
use iced_native::{image, Image, Layout, MouseCursor, Node, Style};
|
use iced_native::{image, Image, Layout, MouseCursor, Node, Style};
|
||||||
|
|
||||||
impl image::Renderer<&str> for Renderer {
|
impl image::Renderer for Renderer {
|
||||||
fn node(&self, _image: &Image<&str>) -> Node {
|
fn node(&self, _image: &Image) -> Node {
|
||||||
Node::new(Style::default())
|
Node::new(Style::default())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(
|
fn draw(&mut self, _image: &Image, _layout: Layout<'_>) -> Self::Output {
|
||||||
&mut self,
|
|
||||||
_image: &Image<&str>,
|
|
||||||
_layout: Layout<'_>,
|
|
||||||
) -> Self::Output {
|
|
||||||
(Primitive::None, MouseCursor::OutOfBounds)
|
(Primitive::None, MouseCursor::OutOfBounds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue