egui_probe/
algebra.rs

1use egui::{Pos2, Rect, Vec2};
2
3use crate::EguiProbe;
4
5impl EguiProbe for Vec2 {
6    fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
7        let mut changed = false;
8
9        let mut r = ui
10            .horizontal(|ui| {
11                changed |= ui.add(egui::DragValue::new(&mut self.x)).changed();
12                changed |= ui.add(egui::DragValue::new(&mut self.y)).changed();
13            })
14            .response;
15
16        if changed {
17            r.mark_changed();
18        }
19
20        r
21    }
22}
23
24impl EguiProbe for Pos2 {
25    fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
26        let mut changed = false;
27
28        let mut r = ui
29            .horizontal(|ui| {
30                changed |= ui.add(egui::DragValue::new(&mut self.x)).changed();
31                changed |= ui.add(egui::DragValue::new(&mut self.y)).changed();
32            })
33            .response;
34
35        if changed {
36            r.mark_changed();
37        }
38
39        r
40    }
41}
42
43impl EguiProbe for Rect {
44    fn probe(&mut self, ui: &mut egui::Ui, style: &crate::Style) -> egui::Response {
45        let mut changed = false;
46
47        let mut r = ui
48            .horizontal(|ui| {
49                let top = ui.label("top");
50                changed |= self.min.y.probe(ui, style).labelled_by(top.id).changed();
51                let left = ui.label("left");
52                changed |= self.min.x.probe(ui, style).labelled_by(left.id).changed();
53                let bottom = ui.label("bottom");
54                changed |= self.max.y.probe(ui, style).labelled_by(bottom.id).changed();
55                let right = ui.label("right");
56                changed |= self.max.x.probe(ui, style).labelled_by(right.id).changed();
57            })
58            .response;
59
60        if changed {
61            r.mark_changed();
62        }
63
64        r
65    }
66}