diff --git a/src/views/img.rs b/src/views/img.rs index aa5b81aa7..da595bced 100644 --- a/src/views/img.rs +++ b/src/views/img.rs @@ -1,3 +1,4 @@ +use std::path::PathBuf; use std::rc::Rc; use floem_reactive::create_effect; @@ -89,10 +90,23 @@ pub struct Img { content_node: Option, } +#[deprecated] pub fn img(image: impl Fn() -> Vec + 'static) -> Img { + img_from_bytes(image) +} + +pub fn img_from_bytes(image: impl Fn() -> Vec + 'static) -> Img { img_dynamic(move || image::load_from_memory(&image()).ok().map(Rc::new)) } +pub fn img_from_image(image: impl Fn() -> DynamicImage + 'static) -> Img { + img_dynamic(move || Some(Rc::new(image()))) +} + +pub fn img_from_path(image: impl Fn() -> PathBuf + 'static) -> Img { + img_dynamic(move || image::open(&image()).ok().map(Rc::new)) +} + pub(crate) fn img_dynamic(image: impl Fn() -> Option> + 'static) -> Img { let id = ViewId::new(); create_effect(move |_| {