egui_probe/
color.rs

1use egui::{Color32, Rgba, epaint::Hsva};
2
3use crate::EguiProbe;
4
5/// Modifier to edit color as rgb.
6pub struct EguiProbeRgb<'a, T> {
7    pub value: &'a mut T,
8}
9
10/// Modifier to edit color as rgba.
11pub struct EguiProbeRgba<'a, T> {
12    pub value: &'a mut T,
13}
14
15/// Modifier to edit color as rgba.
16pub struct EguiProbeRgbaPremultiplied<'a, T> {
17    pub value: &'a mut T,
18}
19
20/// Modifier to edit color as rgba.
21pub 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}