1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
use crate::state::UiState;
impl UiState {
pub fn show_central_panel(&mut self, ctx: &egui::Context) {
// main app panel
egui::CentralPanel::default().show(ctx, |ui| {
// current image
ui.vertical_centered(|ui| {
let available_size = ui.available_size();
let rect = if !self.show_original
&& let Some(texture) = &self.edited_texture
{
let res = ui.add(
egui::Image::from_texture(texture)
.max_size(available_size)
.fit_to_exact_size(available_size)
.corner_radius(10.0)
.sense(egui::Sense::click()),
);
if res.clicked() {
self.show_original = true;
}
res.rect
} else if let Some(texture) = &self.image_texture {
let res = ui.add(
egui::Image::from_texture(texture)
.max_size(available_size)
.fit_to_exact_size(available_size)
.corner_radius(10.0)
.sense(egui::Sense::click()),
);
if res.clicked() {
self.show_original = false;
}
res.rect
} else {
let (rect, _response) =
ui.allocate_exact_size(available_size, egui::Sense::hover());
ui.painter().text(
rect.center(),
egui::Align2::CENTER_CENTER,
"No image loaded",
egui::FontId::default(),
egui::Color32::GRAY,
);
rect
};
// paint border
ui.painter().rect_stroke(
rect,
10.0,
egui::Stroke::new(1.0, egui::Color32::GRAY),
egui::StrokeKind::Middle,
);
});
ui.with_layout(egui::Layout::bottom_up(egui::Align::RIGHT), |ui| {
egui::warn_if_debug_build(ui);
});
});
}
}