aboutsummaryrefslogtreecommitdiff
path: root/src/cube_transform_with_switch.h
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2024-06-09 12:43:49 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2024-06-09 12:43:49 +0200
commitc5c5017a335208881e27fc8f72c1d0145a04622a (patch)
tree7a1518e5b05f3fbde810fa3080c41099ba7d5ae8 /src/cube_transform_with_switch.h
parent28ad019d62583b7e89b4e76922aa73857d5876eb (diff)
downloadnissy-core-c5c5017a335208881e27fc8f72c1d0145a04622a.tar.gz
nissy-core-c5c5017a335208881e27fc8f72c1d0145a04622a.zip
Remvoed cube_fast_t and more. More cleaning up to do.
Diffstat (limited to 'src/cube_transform_with_switch.h')
-rw-r--r--src/cube_transform_with_switch.h336
1 files changed, 336 insertions, 0 deletions
diff --git a/src/cube_transform_with_switch.h b/src/cube_transform_with_switch.h
new file mode 100644
index 0000000..de62bf5
--- /dev/null
+++ b/src/cube_transform_with_switch.h
@@ -0,0 +1,336 @@
1#define _trans_edges_rotation(T, c) \
2 compose_edges(compose_edges(_trans_cube_ ## T, c), \
3 _trans_cube_ ## T ## _inverse)
4#define _trans_edges_mirrored(T, c) _trans_edges_rotation(T, c)
5
6#define _trans_corners_rotation(T, c) \
7 compose_corners(compose_corners(_trans_cube_ ## T, c), \
8 _trans_cube_ ## T ## _inverse)
9#define _trans_corners_mirrored(T, c) \
10 invertco(compose_corners( \
11 compose_corners(_trans_cube_ ## T, c), _trans_cube_ ## T ## _inverse))
12
13#define _trans_rotation(T, c) \
14 compose(compose(_trans_cube_ ## T, c), \
15 _trans_cube_ ## T ## _inverse)
16#define _trans_mirrored(T, c) \
17 invertco(compose(compose(_trans_cube_ ## T, c), \
18 _trans_cube_ ## T ## _inverse))
19
20_static cube_t
21transform_edges(cube_t c, uint8_t t)
22{
23 switch (t) {
24 case _trans_UFr:
25 return _trans_edges_rotation(UFr, c);
26 case _trans_ULr:
27 return _trans_edges_rotation(ULr, c);
28 case _trans_UBr:
29 return _trans_edges_rotation(UBr, c);
30 case _trans_URr:
31 return _trans_edges_rotation(URr, c);
32 case _trans_DFr:
33 return _trans_edges_rotation(DFr, c);
34 case _trans_DLr:
35 return _trans_edges_rotation(DLr, c);
36 case _trans_DBr:
37 return _trans_edges_rotation(DBr, c);
38 case _trans_DRr:
39 return _trans_edges_rotation(DRr, c);
40 case _trans_RUr:
41 return _trans_edges_rotation(RUr, c);
42 case _trans_RFr:
43 return _trans_edges_rotation(RFr, c);
44 case _trans_RDr:
45 return _trans_edges_rotation(RDr, c);
46 case _trans_RBr:
47 return _trans_edges_rotation(RBr, c);
48 case _trans_LUr:
49 return _trans_edges_rotation(LUr, c);
50 case _trans_LFr:
51 return _trans_edges_rotation(LFr, c);
52 case _trans_LDr:
53 return _trans_edges_rotation(LDr, c);
54 case _trans_LBr:
55 return _trans_edges_rotation(LBr, c);
56 case _trans_FUr:
57 return _trans_edges_rotation(FUr, c);
58 case _trans_FRr:
59 return _trans_edges_rotation(FRr, c);
60 case _trans_FDr:
61 return _trans_edges_rotation(FDr, c);
62 case _trans_FLr:
63 return _trans_edges_rotation(FLr, c);
64 case _trans_BUr:
65 return _trans_edges_rotation(BUr, c);
66 case _trans_BRr:
67 return _trans_edges_rotation(BRr, c);
68 case _trans_BDr:
69 return _trans_edges_rotation(BDr, c);
70 case _trans_BLr:
71 return _trans_edges_rotation(BLr, c);
72 case _trans_UFm:
73 return _trans_edges_mirrored(UFm, c);
74 case _trans_ULm:
75 return _trans_edges_mirrored(ULm, c);
76 case _trans_UBm:
77 return _trans_edges_mirrored(UBm, c);
78 case _trans_URm:
79 return _trans_edges_mirrored(URm, c);
80 case _trans_DFm:
81 return _trans_edges_mirrored(DFm, c);
82 case _trans_DLm:
83 return _trans_edges_mirrored(DLm, c);
84 case _trans_DBm:
85 return _trans_edges_mirrored(DBm, c);
86 case _trans_DRm:
87 return _trans_edges_mirrored(DRm, c);
88 case _trans_RUm:
89 return _trans_edges_mirrored(RUm, c);
90 case _trans_RFm:
91 return _trans_edges_mirrored(RFm, c);
92 case _trans_RDm:
93 return _trans_edges_mirrored(RDm, c);
94 case _trans_RBm:
95 return _trans_edges_mirrored(RBm, c);
96 case _trans_LUm:
97 return _trans_edges_mirrored(LUm, c);
98 case _trans_LFm:
99 return _trans_edges_mirrored(LFm, c);
100 case _trans_LDm:
101 return _trans_edges_mirrored(LDm, c);
102 case _trans_LBm:
103 return _trans_edges_mirrored(LBm, c);
104 case _trans_FUm:
105 return _trans_edges_mirrored(FUm, c);
106 case _trans_FRm:
107 return _trans_edges_mirrored(FRm, c);
108 case _trans_FDm:
109 return _trans_edges_mirrored(FDm, c);
110 case _trans_FLm:
111 return _trans_edges_mirrored(FLm, c);
112 case _trans_BUm:
113 return _trans_edges_mirrored(BUm, c);
114 case _trans_BRm:
115 return _trans_edges_mirrored(BRm, c);
116 case _trans_BDm:
117 return _trans_edges_mirrored(BDm, c);
118 case _trans_BLm:
119 return _trans_edges_mirrored(BLm, c);
120 default:
121 DBG_LOG("transform error, unknown transformation\n");
122 return zero;
123 }
124}
125
126_static cube_t
127transform_corners(cube_t c, uint8_t t)
128{
129 switch (t) {
130 case _trans_UFr:
131 return _trans_corners_rotation(UFr, c);
132 case _trans_ULr:
133 return _trans_corners_rotation(ULr, c);
134 case _trans_UBr:
135 return _trans_corners_rotation(UBr, c);
136 case _trans_URr:
137 return _trans_corners_rotation(URr, c);
138 case _trans_DFr:
139 return _trans_corners_rotation(DFr, c);
140 case _trans_DLr:
141 return _trans_corners_rotation(DLr, c);
142 case _trans_DBr:
143 return _trans_corners_rotation(DBr, c);
144 case _trans_DRr:
145 return _trans_corners_rotation(DRr, c);
146 case _trans_RUr:
147 return _trans_corners_rotation(RUr, c);
148 case _trans_RFr:
149 return _trans_corners_rotation(RFr, c);
150 case _trans_RDr:
151 return _trans_corners_rotation(RDr, c);
152 case _trans_RBr:
153 return _trans_corners_rotation(RBr, c);
154 case _trans_LUr:
155 return _trans_corners_rotation(LUr, c);
156 case _trans_LFr:
157 return _trans_corners_rotation(LFr, c);
158 case _trans_LDr:
159 return _trans_corners_rotation(LDr, c);
160 case _trans_LBr:
161 return _trans_corners_rotation(LBr, c);
162 case _trans_FUr:
163 return _trans_corners_rotation(FUr, c);
164 case _trans_FRr:
165 return _trans_corners_rotation(FRr, c);
166 case _trans_FDr:
167 return _trans_corners_rotation(FDr, c);
168 case _trans_FLr:
169 return _trans_corners_rotation(FLr, c);
170 case _trans_BUr:
171 return _trans_corners_rotation(BUr, c);
172 case _trans_BRr:
173 return _trans_corners_rotation(BRr, c);
174 case _trans_BDr:
175 return _trans_corners_rotation(BDr, c);
176 case _trans_BLr:
177 return _trans_corners_rotation(BLr, c);
178 case _trans_UFm:
179 return _trans_corners_mirrored(UFm, c);
180 case _trans_ULm:
181 return _trans_corners_mirrored(ULm, c);
182 case _trans_UBm:
183 return _trans_corners_mirrored(UBm, c);
184 case _trans_URm:
185 return _trans_corners_mirrored(URm, c);
186 case _trans_DFm:
187 return _trans_corners_mirrored(DFm, c);
188 case _trans_DLm:
189 return _trans_corners_mirrored(DLm, c);
190 case _trans_DBm:
191 return _trans_corners_mirrored(DBm, c);
192 case _trans_DRm:
193 return _trans_corners_mirrored(DRm, c);
194 case _trans_RUm:
195 return _trans_corners_mirrored(RUm, c);
196 case _trans_RFm:
197 return _trans_corners_mirrored(RFm, c);
198 case _trans_RDm:
199 return _trans_corners_mirrored(RDm, c);
200 case _trans_RBm:
201 return _trans_corners_mirrored(RBm, c);
202 case _trans_LUm:
203 return _trans_corners_mirrored(LUm, c);
204 case _trans_LFm:
205 return _trans_corners_mirrored(LFm, c);
206 case _trans_LDm:
207 return _trans_corners_mirrored(LDm, c);
208 case _trans_LBm:
209 return _trans_corners_mirrored(LBm, c);
210 case _trans_FUm:
211 return _trans_corners_mirrored(FUm, c);
212 case _trans_FRm:
213 return _trans_corners_mirrored(FRm, c);
214 case _trans_FDm:
215 return _trans_corners_mirrored(FDm, c);
216 case _trans_FLm:
217 return _trans_corners_mirrored(FLm, c);
218 case _trans_BUm:
219 return _trans_corners_mirrored(BUm, c);
220 case _trans_BRm:
221 return _trans_corners_mirrored(BRm, c);
222 case _trans_BDm:
223 return _trans_corners_mirrored(BDm, c);
224 case _trans_BLm:
225 return _trans_corners_mirrored(BLm, c);
226 default:
227 DBG_LOG("transform error, unknown transformation\n");
228 return zero;
229 }
230}
231
232_static cube_t
233transform(cube_t c, uint8_t t)
234{
235 switch (t) {
236 case _trans_UFr:
237 return _trans_rotation(UFr, c);
238 case _trans_ULr:
239 return _trans_rotation(ULr, c);
240 case _trans_UBr:
241 return _trans_rotation(UBr, c);
242 case _trans_URr:
243 return _trans_rotation(URr, c);
244 case _trans_DFr:
245 return _trans_rotation(DFr, c);
246 case _trans_DLr:
247 return _trans_rotation(DLr, c);
248 case _trans_DBr:
249 return _trans_rotation(DBr, c);
250 case _trans_DRr:
251 return _trans_rotation(DRr, c);
252 case _trans_RUr:
253 return _trans_rotation(RUr, c);
254 case _trans_RFr:
255 return _trans_rotation(RFr, c);
256 case _trans_RDr:
257 return _trans_rotation(RDr, c);
258 case _trans_RBr:
259 return _trans_rotation(RBr, c);
260 case _trans_LUr:
261 return _trans_rotation(LUr, c);
262 case _trans_LFr:
263 return _trans_rotation(LFr, c);
264 case _trans_LDr:
265 return _trans_rotation(LDr, c);
266 case _trans_LBr:
267 return _trans_rotation(LBr, c);
268 case _trans_FUr:
269 return _trans_rotation(FUr, c);
270 case _trans_FRr:
271 return _trans_rotation(FRr, c);
272 case _trans_FDr:
273 return _trans_rotation(FDr, c);
274 case _trans_FLr:
275 return _trans_rotation(FLr, c);
276 case _trans_BUr:
277 return _trans_rotation(BUr, c);
278 case _trans_BRr:
279 return _trans_rotation(BRr, c);
280 case _trans_BDr:
281 return _trans_rotation(BDr, c);
282 case _trans_BLr:
283 return _trans_rotation(BLr, c);
284 case _trans_UFm:
285 return _trans_mirrored(UFm, c);
286 case _trans_ULm:
287 return _trans_mirrored(ULm, c);
288 case _trans_UBm:
289 return _trans_mirrored(UBm, c);
290 case _trans_URm:
291 return _trans_mirrored(URm, c);
292 case _trans_DFm:
293 return _trans_mirrored(DFm, c);
294 case _trans_DLm:
295 return _trans_mirrored(DLm, c);
296 case _trans_DBm:
297 return _trans_mirrored(DBm, c);
298 case _trans_DRm:
299 return _trans_mirrored(DRm, c);
300 case _trans_RUm:
301 return _trans_mirrored(RUm, c);
302 case _trans_RFm:
303 return _trans_mirrored(RFm, c);
304 case _trans_RDm:
305 return _trans_mirrored(RDm, c);
306 case _trans_RBm:
307 return _trans_mirrored(RBm, c);
308 case _trans_LUm:
309 return _trans_mirrored(LUm, c);
310 case _trans_LFm:
311 return _trans_mirrored(LFm, c);
312 case _trans_LDm:
313 return _trans_mirrored(LDm, c);
314 case _trans_LBm:
315 return _trans_mirrored(LBm, c);
316 case _trans_FUm:
317 return _trans_mirrored(FUm, c);
318 case _trans_FRm:
319 return _trans_mirrored(FRm, c);
320 case _trans_FDm:
321 return _trans_mirrored(FDm, c);
322 case _trans_FLm:
323 return _trans_mirrored(FLm, c);
324 case _trans_BUm:
325 return _trans_mirrored(BUm, c);
326 case _trans_BRm:
327 return _trans_mirrored(BRm, c);
328 case _trans_BDm:
329 return _trans_mirrored(BDm, c);
330 case _trans_BLm:
331 return _trans_mirrored(BLm, c);
332 default:
333 DBG_LOG("transform error, unknown transformation\n");
334 return zero;
335 }
336}

Generated with cgit - Back to sebastiano.tronto.net