sized widgets!
This commit is contained in:
@@ -2,34 +2,23 @@ use crate::prelude::*;
|
||||
use image::DynamicImage;
|
||||
|
||||
pub struct Image {
|
||||
handle: Option<TextureHandle>,
|
||||
handle: TextureHandle,
|
||||
}
|
||||
|
||||
impl Widget for Image {
|
||||
fn draw(&self, painter: &mut Painter) {
|
||||
if let Some(handle) = &self.handle {
|
||||
painter.draw_texture(handle);
|
||||
} else {
|
||||
painter.write(RectPrimitive {
|
||||
color: Color::MAGENTA,
|
||||
inner_radius: 0.0,
|
||||
radius: 0.0,
|
||||
thickness: 0.0,
|
||||
});
|
||||
}
|
||||
fn draw(&mut self, painter: &mut Painter) {
|
||||
painter.draw_texture(&self.handle);
|
||||
}
|
||||
|
||||
fn size(&mut self, _: SizeCtx) -> Vec2 {
|
||||
self.handle.size()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn image(image: impl LoadableImage) -> WidgetFnRet!(Image) {
|
||||
let image = match image.get_image() {
|
||||
Ok(image) => Some(image),
|
||||
Err(e) => {
|
||||
println!("Failed to load image: {e}");
|
||||
None
|
||||
}
|
||||
};
|
||||
let image = image.get_image().expect("Failed to load image");
|
||||
move |ui| Image {
|
||||
handle: image.map(|image| ui.add_texture(image)),
|
||||
handle: ui.add_texture(image),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user