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 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 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 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 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 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 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 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 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 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 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 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 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 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}