egui_macview/theme/
accessors.rs1use crate::theme::{MacBackgroundStyle, MacTheme};
4use crate::tokens::{
5 ButtonMetrics, ColorWellMetrics, ContextMenuMetrics, FocusRingMetrics, FooterMetrics,
6 LayoutMetrics, LevelIndicatorMetrics, MacControlMetrics, MacMotionTokens, MacTypographyTokens,
7 MenuBarMetrics, NavigationMetrics, OutlineViewMetrics, PaletteMetrics, PathControlMetrics,
8 PopUpButtonMetrics, PopoverMetrics, ProgressIndicatorMetrics, ScrollViewMetrics,
9 SearchFieldMetrics, SegmentedMetrics, SliderMetrics, SplitViewMetrics, StackViewMetrics,
10 StepperMetrics, TableViewMetrics, TextFieldMetrics, ThumbnailCellMetrics, ToastMetrics,
11 ToggleMetrics, TokenFieldMetrics, ToolbarMetrics, TrimScrubberMetrics,
12};
13use egui::Color32;
14
15impl MacTheme {
16 pub fn control_metrics(&self) -> &MacControlMetrics {
18 self.tokens().control_metrics()
19 }
20
21 pub fn focus_ring(&self) -> &FocusRingMetrics {
23 &self.control_metrics().focus_ring
24 }
25
26 pub fn text_field(&self) -> &TextFieldMetrics {
28 &self.control_metrics().text_field
29 }
30
31 pub fn button(&self) -> &ButtonMetrics {
33 &self.control_metrics().button
34 }
35
36 pub fn segmented(&self) -> &SegmentedMetrics {
38 &self.control_metrics().segmented
39 }
40
41 pub fn popover_metrics(&self) -> &PopoverMetrics {
43 self.tokens().popover_metrics()
44 }
45
46 pub fn toolbar_metrics(&self) -> &ToolbarMetrics {
48 self.tokens().toolbar_metrics()
49 }
50
51 pub fn slider(&self) -> &SliderMetrics {
53 self.tokens().slider_metrics()
54 }
55
56 pub fn thumbnail(&self) -> &ThumbnailCellMetrics {
58 self.tokens().thumbnail_metrics()
59 }
60
61 pub fn split_view(&self) -> &SplitViewMetrics {
63 self.tokens().split_view_metrics()
64 }
65
66 pub fn layout_metrics(&self) -> &LayoutMetrics {
68 self.tokens().layout_metrics()
69 }
70
71 pub fn scroll_view(&self) -> &ScrollViewMetrics {
73 self.tokens().scroll_view_metrics()
74 }
75
76 pub fn stack_view(&self) -> &StackViewMetrics {
78 self.tokens().stack_view_metrics()
79 }
80
81 pub fn outline_view(&self) -> &OutlineViewMetrics {
83 self.tokens().outline_view_metrics()
84 }
85
86 pub fn popup_button(&self) -> &PopUpButtonMetrics {
88 self.tokens().popup_button_metrics()
89 }
90
91 pub fn search_field(&self) -> &SearchFieldMetrics {
93 self.tokens().search_field_metrics()
94 }
95
96 pub fn stepper(&self) -> &StepperMetrics {
98 self.tokens().stepper_metrics()
99 }
100
101 pub fn color_well(&self) -> &ColorWellMetrics {
103 self.tokens().color_well_metrics()
104 }
105
106 pub fn toggle(&self) -> &ToggleMetrics {
108 self.tokens().toggle_metrics()
109 }
110
111 pub fn progress_indicator(&self) -> &ProgressIndicatorMetrics {
113 self.tokens().progress_indicator_metrics()
114 }
115
116 pub fn table_view(&self) -> &TableViewMetrics {
118 self.tokens().table_view_metrics()
119 }
120
121 pub fn token_field(&self) -> &TokenFieldMetrics {
123 self.tokens().token_field_metrics()
124 }
125
126 pub fn level_indicator(&self) -> &LevelIndicatorMetrics {
128 self.tokens().level_indicator_metrics()
129 }
130
131 pub fn trim_scrubber(&self) -> &TrimScrubberMetrics {
133 self.tokens().trim_scrubber_metrics()
134 }
135
136 pub fn path_control(&self) -> &PathControlMetrics {
138 self.tokens().path_control_metrics()
139 }
140
141 pub fn navigation_metrics(&self) -> &NavigationMetrics {
143 self.tokens().navigation_metrics()
144 }
145
146 pub fn menu_bar_metrics(&self) -> &MenuBarMetrics {
148 self.tokens().menu_bar_metrics()
149 }
150
151 pub fn footer_metrics(&self) -> &FooterMetrics {
153 self.tokens().footer_metrics()
154 }
155
156 pub fn palette_metrics(&self) -> &PaletteMetrics {
158 self.tokens().palette_metrics()
159 }
160
161 pub fn context_menu_metrics(&self) -> &ContextMenuMetrics {
163 self.tokens().context_menu_metrics()
164 }
165
166 pub fn toast_metrics(&self) -> &ToastMetrics {
168 self.tokens().toast_metrics()
169 }
170
171 pub fn motion(&self) -> &MacMotionTokens {
173 self.tokens().motion()
174 }
175
176 pub fn typography(&self) -> &MacTypographyTokens {
178 self.tokens().typography()
179 }
180
181 pub fn disabled_opacity(&self) -> f32 {
183 self.control_metrics().disabled_opacity.points()
184 }
185
186 pub fn background_style(&self, bg: Color32) -> MacBackgroundStyle {
188 MacBackgroundStyle::from_color(bg)
189 }
190
191 pub fn window_background_style(&self) -> MacBackgroundStyle {
193 MacBackgroundStyle::from_color(self.window_background())
194 }
195
196 pub fn control_background_style(&self) -> MacBackgroundStyle {
198 MacBackgroundStyle::from_color(self.control_background())
199 }
200
201 pub fn selected_control_background_style(&self) -> MacBackgroundStyle {
203 MacBackgroundStyle::from_color(self.selected_control())
204 }
205
206 pub fn paint_focus_ring(&self, painter: &egui::Painter, rect: egui::Rect, corner_radius: f32) {
208 let ring = self.focus_ring();
209 let focus_rect = rect.expand(ring.offset.points());
210 let focus_radius = corner_radius + ring.corner_radius_delta.points();
211 painter.rect_stroke(
212 focus_rect,
213 egui::CornerRadius::same(focus_radius as u8),
214 egui::Stroke::new(ring.stroke_width.points(), self.keyboard_focus_indicator()),
215 egui::StrokeKind::Outside,
216 );
217 }
218}