1use egui::{Color32, Rgba, epaint::Hsva};
2
3use crate::EguiProbe;
4
5pub struct EguiProbeRgb<'a, T> {
7 pub value: &'a mut T,
8}
9
10pub struct EguiProbeRgba<'a, T> {
12 pub value: &'a mut T,
13}
14
15pub struct EguiProbeRgbaPremultiplied<'a, T> {
17 pub value: &'a mut T,
18}
19
20pub struct EguiProbeRgbaUnmultiplied<'a, T> {
22 pub value: &'a mut T,
23}
24
25impl EguiProbe for Color32 {
26 #[inline(always)]
27 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
28 ui.color_edit_button_srgba(self)
29 }
30}
31
32impl EguiProbe for EguiProbeRgb<'_, Color32> {
33 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
34 egui::color_picker::color_edit_button_srgba(
35 ui,
36 self.value,
37 egui::color_picker::Alpha::Opaque,
38 )
39 }
40}
41
42impl EguiProbe for EguiProbeRgba<'_, Color32> {
43 #[inline(always)]
44 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
45 ui.color_edit_button_srgba(self.value)
46 }
47}
48
49impl EguiProbe for EguiProbeRgbaPremultiplied<'_, Color32> {
50 #[inline(always)]
51 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
52 ui.color_edit_button_srgba(self.value)
53 }
54}
55
56impl EguiProbe for Rgba {
57 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
58 egui::color_picker::color_edit_button_rgba(
59 ui,
60 self,
61 egui::color_picker::Alpha::BlendOrAdditive,
62 )
63 }
64}
65
66impl EguiProbe for EguiProbeRgb<'_, Rgba> {
67 #[inline(always)]
68 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
69 egui::color_picker::color_edit_button_rgba(
70 ui,
71 self.value,
72 egui::color_picker::Alpha::Opaque,
73 )
74 }
75}
76
77impl EguiProbe for EguiProbeRgba<'_, Rgba> {
78 #[inline(always)]
79 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
80 egui::color_picker::color_edit_button_rgba(
81 ui,
82 self.value,
83 egui::color_picker::Alpha::BlendOrAdditive,
84 )
85 }
86}
87
88impl EguiProbe for EguiProbeRgbaPremultiplied<'_, Rgba> {
89 #[inline(always)]
90 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
91 egui::color_picker::color_edit_button_rgba(
92 ui,
93 self.value,
94 egui::color_picker::Alpha::BlendOrAdditive,
95 )
96 }
97}
98
99impl EguiProbe for EguiProbeRgb<'_, [u8; 3]> {
100 #[inline(always)]
101 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
102 ui.color_edit_button_srgb(self.value)
103 }
104}
105
106impl EguiProbe for EguiProbeRgbaPremultiplied<'_, [u8; 4]> {
107 #[inline(always)]
108 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
109 ui.color_edit_button_srgba_premultiplied(self.value)
110 }
111}
112
113impl EguiProbe for EguiProbeRgbaUnmultiplied<'_, [u8; 4]> {
114 #[inline(always)]
115 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
116 ui.color_edit_button_srgba_unmultiplied(self.value)
117 }
118}
119
120impl EguiProbe for EguiProbeRgb<'_, [f32; 3]> {
121 #[inline(always)]
122 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
123 ui.color_edit_button_rgb(self.value)
124 }
125}
126
127impl EguiProbe for EguiProbeRgbaPremultiplied<'_, [f32; 4]> {
128 #[inline(always)]
129 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
130 ui.color_edit_button_rgba_premultiplied(self.value)
131 }
132}
133
134impl EguiProbe for EguiProbeRgbaUnmultiplied<'_, [f32; 4]> {
135 #[inline(always)]
136 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
137 ui.color_edit_button_rgba_unmultiplied(self.value)
138 }
139}
140
141impl EguiProbe for Hsva {
142 fn probe(&mut self, ui: &mut egui::Ui, _style: &crate::Style) -> egui::Response {
143 egui::color_picker::color_edit_button_hsva(
144 ui,
145 self,
146 egui::color_picker::Alpha::BlendOrAdditive,
147 )
148 }
149}