egui_macview/theme/
accessors.rs1use crate::theme::{MacBackgroundStyle, MacTheme};
4use crate::tokens::{
5 BoxViewMetrics, ButtonMetrics, CollectionViewMetrics, ColorWellMetrics, ComboBoxMetrics,
6 ContextMenuMetrics, DatePickerMetrics, DisclosureGroupMetrics, FocusRingMetrics, FooterMetrics,
7 LayoutMetrics, LevelIndicatorMetrics, MacControlMetrics, MacMotionTokens, MacTypographyTokens,
8 MenuBarMetrics, NavigationMetrics, OutlineViewMetrics, PaletteMetrics, PathControlMetrics,
9 PlayerViewMetrics, PopUpButtonMetrics, PopoverMetrics, ProgressIndicatorMetrics,
10 ScrollViewMetrics, SearchFieldMetrics, SegmentedMetrics, SliderMetrics, SplitViewMetrics,
11 StackViewMetrics, StepperMetrics, TableViewMetrics, TabViewMetrics, TextFieldMetrics,
12 ThumbnailCellMetrics, ToastMetrics, ToggleMetrics, TokenFieldMetrics, ToolbarMetrics,
13 TrimScrubberMetrics,
14};
15use egui::Color32;
16
17impl MacTheme {
18 pub fn control_metrics(&self) -> &MacControlMetrics {
20 self.tokens().control_metrics()
21 }
22
23 pub fn focus_ring(&self) -> &FocusRingMetrics {
25 &self.control_metrics().focus_ring
26 }
27
28 pub fn text_field(&self) -> &TextFieldMetrics {
30 &self.control_metrics().text_field
31 }
32
33 pub fn button(&self) -> &ButtonMetrics {
35 &self.control_metrics().button
36 }
37
38 pub fn segmented(&self) -> &SegmentedMetrics {
40 &self.control_metrics().segmented
41 }
42
43 pub fn popover_metrics(&self) -> &PopoverMetrics {
45 self.tokens().popover_metrics()
46 }
47
48 pub fn toolbar_metrics(&self) -> &ToolbarMetrics {
50 self.tokens().toolbar_metrics()
51 }
52
53 pub fn slider(&self) -> &SliderMetrics {
55 self.tokens().slider_metrics()
56 }
57
58 pub fn thumbnail(&self) -> &ThumbnailCellMetrics {
60 self.tokens().thumbnail_metrics()
61 }
62
63 pub fn split_view(&self) -> &SplitViewMetrics {
65 self.tokens().split_view_metrics()
66 }
67
68 pub fn layout_metrics(&self) -> &LayoutMetrics {
70 self.tokens().layout_metrics()
71 }
72
73 pub fn scroll_view(&self) -> &ScrollViewMetrics {
75 self.tokens().scroll_view_metrics()
76 }
77
78 pub fn stack_view(&self) -> &StackViewMetrics {
80 self.tokens().stack_view_metrics()
81 }
82
83 pub fn outline_view(&self) -> &OutlineViewMetrics {
85 self.tokens().outline_view_metrics()
86 }
87
88 pub fn popup_button(&self) -> &PopUpButtonMetrics {
90 self.tokens().popup_button_metrics()
91 }
92
93 pub fn search_field(&self) -> &SearchFieldMetrics {
95 self.tokens().search_field_metrics()
96 }
97
98 pub fn stepper(&self) -> &StepperMetrics {
100 self.tokens().stepper_metrics()
101 }
102
103 pub fn color_well(&self) -> &ColorWellMetrics {
105 self.tokens().color_well_metrics()
106 }
107
108 pub fn toggle(&self) -> &ToggleMetrics {
110 self.tokens().toggle_metrics()
111 }
112
113 pub fn progress_indicator(&self) -> &ProgressIndicatorMetrics {
115 self.tokens().progress_indicator_metrics()
116 }
117
118 pub fn table_view(&self) -> &TableViewMetrics {
120 self.tokens().table_view_metrics()
121 }
122
123 pub fn token_field(&self) -> &TokenFieldMetrics {
125 self.tokens().token_field_metrics()
126 }
127
128 pub fn level_indicator(&self) -> &LevelIndicatorMetrics {
130 self.tokens().level_indicator_metrics()
131 }
132
133 pub fn trim_scrubber(&self) -> &TrimScrubberMetrics {
135 self.tokens().trim_scrubber_metrics()
136 }
137
138 pub fn path_control(&self) -> &PathControlMetrics {
140 self.tokens().path_control_metrics()
141 }
142
143 pub fn disclosure_group(&self) -> &DisclosureGroupMetrics {
145 self.tokens().disclosure_group_metrics()
146 }
147
148 pub fn combo_box(&self) -> &ComboBoxMetrics {
150 self.tokens().combo_box_metrics()
151 }
152
153 pub fn tab_view(&self) -> &TabViewMetrics {
155 self.tokens().tab_view_metrics()
156 }
157
158 pub fn date_picker(&self) -> &DatePickerMetrics {
160 self.tokens().date_picker_metrics()
161 }
162
163 pub fn collection_view(&self) -> &CollectionViewMetrics {
165 self.tokens().collection_view_metrics()
166 }
167
168 pub fn player_view(&self) -> &PlayerViewMetrics {
170 self.tokens().player_view_metrics()
171 }
172
173 pub fn box_view(&self) -> &BoxViewMetrics {
175 self.tokens().box_view_metrics()
176 }
177
178 pub fn navigation_metrics(&self) -> &NavigationMetrics {
180 self.tokens().navigation_metrics()
181 }
182
183 pub fn menu_bar_metrics(&self) -> &MenuBarMetrics {
185 self.tokens().menu_bar_metrics()
186 }
187
188 pub fn footer_metrics(&self) -> &FooterMetrics {
190 self.tokens().footer_metrics()
191 }
192
193 pub fn palette_metrics(&self) -> &PaletteMetrics {
195 self.tokens().palette_metrics()
196 }
197
198 pub fn context_menu_metrics(&self) -> &ContextMenuMetrics {
200 self.tokens().context_menu_metrics()
201 }
202
203 pub fn toast_metrics(&self) -> &ToastMetrics {
205 self.tokens().toast_metrics()
206 }
207
208 pub fn motion(&self) -> &MacMotionTokens {
210 self.tokens().motion()
211 }
212
213 pub fn typography(&self) -> &MacTypographyTokens {
215 self.tokens().typography()
216 }
217
218 pub fn disabled_opacity(&self) -> f32 {
220 self.control_metrics().disabled_opacity.points()
221 }
222
223 pub fn background_style(&self, bg: Color32) -> MacBackgroundStyle {
225 MacBackgroundStyle::from_color(bg)
226 }
227
228 pub fn window_background_style(&self) -> MacBackgroundStyle {
230 MacBackgroundStyle::from_color(self.window_background())
231 }
232
233 pub fn control_background_style(&self) -> MacBackgroundStyle {
235 MacBackgroundStyle::from_color(self.control_background())
236 }
237
238 pub fn selected_control_background_style(&self) -> MacBackgroundStyle {
240 MacBackgroundStyle::from_color(self.selected_control())
241 }
242
243 pub fn paint_focus_ring(&self, painter: &egui::Painter, rect: egui::Rect, corner_radius: f32) {
245 let ring = self.focus_ring();
246 let focus_rect = rect.expand(ring.offset.points());
247 let focus_radius = corner_radius + ring.corner_radius_delta.points();
248 painter.rect_stroke(
249 focus_rect,
250 egui::CornerRadius::same(focus_radius as u8),
251 egui::Stroke::new(ring.stroke_width.points(), self.keyboard_focus_indicator()),
252 egui::StrokeKind::Outside,
253 );
254 }
255}