Board is in a scrollable window

This commit is contained in:
2026-03-10 19:42:44 -05:00
parent f868120a5b
commit 59d66fe395
2 changed files with 24 additions and 20 deletions

2
Cargo.lock generated
View File

@@ -756,7 +756,7 @@ checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
[[package]]
name = "gamenite"
version = "0.1.0"
version = "0.1.1"
dependencies = [
"image",
"serde",

View File

@@ -102,25 +102,28 @@ impl eframe::App for BoardBuilderApp {
});
});
CentralPanel::default().show(ctx, |ui| {
if let Some(texture) = self.texture.as_ref() {
let size = ui.available_size();
let (response, painter) = ui.allocate_painter(size, Sense::click());
let image = widgets::Image::new(texture, size);
image.paint_at(ui, response.rect);
let view = View(response.rect);
self.draw_board(&painter, view);
if let Some(pos) = response.interact_pointer_pos() {
let btn = if response.clicked() {
PointerButton::Primary
} else if response.secondary_clicked() {
PointerButton::Secondary
} else {
PointerButton::Middle
};
let (x, y) = view.xform(pos);
self.dispatch_click(btn, x, y);
}
}
ScrollArea::both().show(ui, |ui| {
if let Some(texture) = self.texture.as_ref() {
let raw_image = self.image.as_ref().expect("Texture without an image");
let size = Vec2::new(raw_image.width() as f32, raw_image.height() as f32);
let (response, painter) = ui.allocate_painter(size, Sense::click());
let image = widgets::Image::new(texture, size);
image.paint_at(ui, response.rect);
let view = View(response.rect);
self.draw_board(&painter, view);
if let Some(pos) = response.interact_pointer_pos() {
let btn = if response.clicked() {
PointerButton::Primary
} else if response.secondary_clicked() {
PointerButton::Secondary
} else {
PointerButton::Middle
};
let (x, y) = view.xform(pos);
self.dispatch_click(btn, x, y);
}
}
})
});
self.create_node_dialog.ui(ctx);
@@ -140,6 +143,7 @@ impl BoardBuilderApp {
BoardBuilderApp::default()
}
fn load_image_file(&mut self, ctx: &Context, image_file: &Path) -> Result<(), image::ImageError> {
let image = image::io::Reader::open(image_file)?.decode()?;
self.load_image(ctx, image);