sized widgets!

This commit is contained in:
2025-08-28 01:35:43 -04:00
parent d4d0b3b580
commit 834182ffe8
14 changed files with 313 additions and 106 deletions

View File

@@ -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),
}
}