1use egui::{CornerRadius, Frame, Margin, Stroke, epaint::Shadow};
2
3use crate::{EguiProbe, num::non_negative};
4
5impl EguiProbe for Stroke {
6 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
7 ui.weak("Stroke")
8 }
9
10 #[inline(always)]
11 fn iterate_inner(
12 &mut self,
13 ui: &mut egui::Ui,
14 f: &mut dyn FnMut(&str, &mut egui::Ui, &mut dyn EguiProbe),
15 ) {
16 f("color", ui, &mut self.color);
17 f("width", ui, &mut non_negative(&mut self.width));
18 }
19}
20
21impl EguiProbe for Margin {
22 #[inline(always)]
23 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
24 ui.weak("Margin")
25 }
26
27 #[inline(always)]
28 fn iterate_inner(
29 &mut self,
30 ui: &mut egui::Ui,
31 f: &mut dyn FnMut(&str, &mut egui::Ui, &mut dyn EguiProbe),
32 ) {
33 f("top", ui, &mut non_negative(&mut self.top));
34 f("left", ui, &mut non_negative(&mut self.left));
35 f("bottom", ui, &mut non_negative(&mut self.bottom));
36 f("right", ui, &mut non_negative(&mut self.right));
37 }
38}
39
40impl EguiProbe for CornerRadius {
41 #[inline(always)]
42 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
43 ui.weak("Rounding")
44 }
45
46 #[inline(always)]
47 fn iterate_inner(
48 &mut self,
49 ui: &mut egui::Ui,
50 f: &mut dyn FnMut(&str, &mut egui::Ui, &mut dyn EguiProbe),
51 ) {
52 f("nw", ui, &mut non_negative(&mut self.nw));
53 f("ne", ui, &mut non_negative(&mut self.ne));
54 f("sw", ui, &mut non_negative(&mut self.sw));
55 f("se", ui, &mut non_negative(&mut self.se));
56 }
57}
58
59impl EguiProbe for Shadow {
60 #[inline(always)]
61 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
62 ui.weak("Shadow")
63 }
64
65 fn iterate_inner(
66 &mut self,
67 ui: &mut egui::Ui,
68 f: &mut dyn FnMut(&str, &mut egui::Ui, &mut dyn EguiProbe),
69 ) {
70 f("offset", ui, &mut self.offset);
71 f("blur", ui, &mut non_negative(&mut self.blur));
72 f("spread", ui, &mut non_negative(&mut self.spread));
73 f("color", ui, &mut self.color);
74 }
75}
76
77impl EguiProbe for Frame {
78 #[inline(always)]
79 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
80 ui.weak("Frame")
81 }
82
83 #[inline(always)]
84 fn iterate_inner(
85 &mut self,
86 ui: &mut egui::Ui,
87 f: &mut dyn FnMut(&str, &mut egui::Ui, &mut dyn EguiProbe),
88 ) {
89 f("inner_margin", ui, &mut self.inner_margin);
90 f("outer_margin", ui, &mut self.outer_margin);
91 f("rounding", ui, &mut self.corner_radius);
92 f("shadow", ui, &mut self.shadow);
93 f("fill", ui, &mut self.fill);
94 f("stroke", ui, &mut self.stroke);
95 }
96}