tuix_core/layout/
cache.rs

1
2
3use morphorm::{Cache, GeometryChanged};
4
5use crate::{CachedData, Entity, Visibility};
6
7impl Cache for CachedData {
8
9    type Item = Entity;
10
11    fn visible(&self, node: Self::Item) -> bool {
12        self.visibility.get(node.index_unchecked()).cloned().map_or(true, |visibility| visibility == Visibility::Visible)
13    }
14
15    fn set_visible(&mut self, node: Self::Item, value: bool) {
16        self.set_visibility(node, if value {Visibility::Visible} else {Visibility::Invisible});
17    }
18
19    fn geometry_changed(&self, node: Self::Item) -> GeometryChanged {
20        self.geometry_changed.get(node.index_unchecked()).cloned().unwrap_or_default()
21    }
22
23    fn set_geo_changed(&mut self, node: Self::Item, flag: GeometryChanged, value: bool) {
24        if let Some(geometry_changed) = self.geometry_changed.get_mut(node.index_unchecked()) {
25            geometry_changed.set(flag, value);
26        }
27    }
28
29    fn new_width(&self, node: Self::Item) -> f32 {
30        self.size.get(node.index_unchecked()).cloned().unwrap_or_default().width
31    }
32
33    fn new_height(&self, node: Self::Item) -> f32 {
34        self.size.get(node.index_unchecked()).cloned().unwrap_or_default().height
35    }
36
37    fn set_new_width(&mut self, node: Self::Item, value: f32) {
38        if let Some(size) = self.size.get_mut(node.index_unchecked()) {
39            size.width = value;
40        }
41    }
42
43    fn set_new_height(&mut self, node: Self::Item, value: f32) {
44        if let Some(size) = self.size.get_mut(node.index_unchecked()) {
45            size.height = value;
46        }
47    }
48
49    // Width
50    fn width(&self, node: Self::Item) -> f32 {
51        self.get_width(node)
52    }
53
54    fn set_width(&mut self, node: Self::Item, value: f32) {
55        self.set_width(node, value);
56    }
57
58    // Height
59    fn height(&self, node: Self::Item) -> f32 {
60        self.get_height(node)
61    }
62
63    fn set_height(&mut self, node: Self::Item, value: f32) {
64        self.set_height(node, value);
65    }
66
67    // Posx
68    fn posx(&self, node: Self::Item) -> f32 {
69        self.get_posx(node)
70    }
71
72    fn set_posx(&mut self, node: Self::Item, value: f32) {
73        self.set_posx(node, value)
74    }
75
76    // Posy
77    fn posy(&self, node: Self::Item) -> f32 {
78        self.get_posy(node)
79    }
80
81    fn set_posy(&mut self, node: Self::Item, value: f32) {
82        self.set_posy(node, value)
83    }
84
85    // Left
86    fn left(&self, node: Self::Item) -> f32 {
87        self.get_space_left(node)
88    }
89
90    fn set_left(&mut self, node: Self::Item, value: f32) {
91        self.set_space_left(node, value);
92    }
93
94    // Right
95    fn right(&self, node: Self::Item) -> f32 {
96        self.get_space_right(node)
97    }
98
99    fn set_right(&mut self, node: Self::Item, value: f32) {
100        self.set_space_right(node, value);
101    }
102
103    // Top
104
105    fn top(&self, node: Self::Item) -> f32 {
106        self.get_space_top(node)
107    }
108
109    fn set_top(&mut self, node: Self::Item, value: f32) {
110        self.set_space_top(node, value)
111    }
112
113    // Bottom
114
115    fn bottom(&self, node: Self::Item) -> f32 {
116        self.get_space_bottom(node)
117    }
118
119    fn set_bottom(&mut self, node: Self::Item, value: f32) {
120        self.set_space_bottom(node, value)
121    }
122
123    // Child Width Max
124
125    fn child_width_max(&self, node: Self::Item) -> f32 {
126        self.get_child_width_max(node)
127    }
128
129    fn set_child_width_max(&mut self, node: Self::Item, value: f32) {
130        self.set_child_width_max(node, value)
131    }
132
133    // Child Width Sum
134    fn child_width_sum(&self, node: Self::Item) -> f32 {
135        self.get_child_width_sum(node)
136    }
137
138    fn set_child_width_sum(&mut self, node: Self::Item, value: f32) {
139        self.set_child_width_sum(node, value)
140    }
141
142    // Child Height Max
143    fn child_height_max(&self, node: Self::Item) -> f32 {
144        self.get_child_height_max(node)
145    }
146
147    fn set_child_height_max(&mut self, node: Self::Item, value: f32) {
148        self.set_child_height_max(node, value);
149    }
150
151    // Child Height Sum
152    fn child_height_sum(&self, node: Self::Item) -> f32 {
153        self.get_child_height_sum(node)
154    }
155
156    fn set_child_height_sum(&mut self, node: Self::Item, value: f32) {
157        self.set_child_height_sum(node, value)
158    }
159
160    //
161
162    fn stack_first_child(&self, node: Self::Item) -> bool {
163        self.get_stack_child(node).0
164    }
165
166    fn stack_last_child(&self, node: Self::Item) -> bool {
167        self.get_stack_child(node).1
168    }
169
170    fn set_stack_first_child(&mut self, node: Self::Item, value: bool) {
171        self.set_stack_first_child(node, value)
172    }
173
174    fn set_stack_last_child(&mut self, node: Self::Item, value: bool) {
175        self.set_stack_last_child(node, value)
176    }
177
178    fn horizontal_free_space(&self, node: Self::Item) -> f32 {
179        self.get_horizontal_free_space(node)
180    }
181
182    fn set_horizontal_free_space(&mut self, node: Self::Item, value: f32) {
183        self.set_horizontal_free_space(node, value);
184    }
185
186    fn vertical_free_space(&self, node: Self::Item) -> f32 {
187        self.get_vertical_free_space(node)
188    }
189
190    fn set_vertical_free_space(&mut self, node: Self::Item, value: f32) {
191        self.set_vertical_free_space(node, value);
192    }
193
194    fn horizontal_stretch_sum(&self, node: Self::Item) -> f32 {
195        self.get_horizontal_stretch_sum(node)
196    }
197
198    fn set_horizontal_stretch_sum(&mut self, node: Self::Item, value: f32) {
199        self.set_horizontal_stretch_sum(node, value);
200    }
201
202    fn vertical_stretch_sum(&self, node: Self::Item) -> f32 {
203        self.get_vertical_stretch_sum(node)
204    }
205
206    fn set_vertical_stretch_sum(&mut self, node: Self::Item, value: f32) {
207        self.set_vertical_stretch_sum(node, value);
208    }
209
210    fn grid_row_max(&self, node: Self::Item) -> f32 {
211        self.get_grid_row_max(node)
212    }
213
214    fn grid_col_max(&self, node: Self::Item) -> f32 {
215        self.get_grid_col_max(node)
216    }
217
218
219}