acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
_payload.h
1// Created by camilo on 2025-12-07 21:57 <3ThomasBorregaardSørensen!!
2#pragma once
3
4
5template < prototype_number NUMBER >
6inline void copy_color(sequence_type < NUMBER, 4 > & sequence4, const ::payload & payload)
7{
8
9 if (payload.array_get_count() == 3)
10 {
11
12 payload[0].as(sequence4.r);
13 payload[1].as(sequence4.g);
14 payload[2].as(sequence4.b);
15
16 }
17 else if (payload.array_get_count() >= 4)
18 {
19
20 payload[0].as(sequence4.r);
21 payload[1].as(sequence4.g);
22 payload[2].as(sequence4.b);
23 payload[3].as(sequence4.a);
24
25 }
26 else
27 {
28
29 throw "too few elements for at least a r,g,b color";
30
31 }
32
33
34}
35
36
37template<prototype_number NUMBER, ::i32 t_iSize>
38inline auto defer_copy(sequence_type<NUMBER, t_iSize> &sequence, const ::payload &payload)
39{
40
41 auto iCopyCount = minimum(payload.array_get_count(), t_iSize);
42
43 for (decltype(iCopyCount) i = 0; i < iCopyCount; i++)
44 {
45
46 NUMBER n;
47
48 payload[i].as(n);
49
50 sequence.set_coordinate(i, n);
51
52 }
53
54 return iCopyCount;
55
56}
57
58
59template<prototype_number NUMBER, ::i32 t_iSize>
60inline void copy(sequence_type<NUMBER, t_iSize> & sequence, const ::payload & payload)
61{
62
63 auto iCopyCount = defer_copy(sequence, payload);
64
65 if (iCopyCount < t_iSize)
66 {
67
68 throw "too few items to create sequence";
69
70 }
71
72}
Definition payload.h:54
Definition sequence.h:236