scene.h raw
1 // SPDX-License-Identifier: Apache-2.0 OR MIT OR Unlicense
2
3 // Code auto-generated by piet-gpu-derive
4
5 struct LineSegRef {
6 uint offset;
7 };
8
9 struct QuadSegRef {
10 uint offset;
11 };
12
13 struct CubicSegRef {
14 uint offset;
15 };
16
17 struct FillColorRef {
18 uint offset;
19 };
20
21 struct FillImageRef {
22 uint offset;
23 };
24
25 struct SetLineWidthRef {
26 uint offset;
27 };
28
29 struct TransformRef {
30 uint offset;
31 };
32
33 struct ClipRef {
34 uint offset;
35 };
36
37 struct SetFillModeRef {
38 uint offset;
39 };
40
41 struct ElementRef {
42 uint offset;
43 };
44
45 struct LineSeg {
46 vec2 p0;
47 vec2 p1;
48 };
49
50 #define LineSeg_size 16
51
52 LineSegRef LineSeg_index(LineSegRef ref, uint index) {
53 return LineSegRef(ref.offset + index * LineSeg_size);
54 }
55
56 struct QuadSeg {
57 vec2 p0;
58 vec2 p1;
59 vec2 p2;
60 };
61
62 #define QuadSeg_size 24
63
64 QuadSegRef QuadSeg_index(QuadSegRef ref, uint index) {
65 return QuadSegRef(ref.offset + index * QuadSeg_size);
66 }
67
68 struct CubicSeg {
69 vec2 p0;
70 vec2 p1;
71 vec2 p2;
72 vec2 p3;
73 };
74
75 #define CubicSeg_size 32
76
77 CubicSegRef CubicSeg_index(CubicSegRef ref, uint index) {
78 return CubicSegRef(ref.offset + index * CubicSeg_size);
79 }
80
81 struct FillColor {
82 uint rgba_color;
83 };
84
85 #define FillColor_size 4
86
87 FillColorRef FillColor_index(FillColorRef ref, uint index) {
88 return FillColorRef(ref.offset + index * FillColor_size);
89 }
90
91 struct FillImage {
92 uint index;
93 ivec2 offset;
94 };
95
96 #define FillImage_size 8
97
98 FillImageRef FillImage_index(FillImageRef ref, uint index) {
99 return FillImageRef(ref.offset + index * FillImage_size);
100 }
101
102 struct SetLineWidth {
103 float width;
104 };
105
106 #define SetLineWidth_size 4
107
108 SetLineWidthRef SetLineWidth_index(SetLineWidthRef ref, uint index) {
109 return SetLineWidthRef(ref.offset + index * SetLineWidth_size);
110 }
111
112 struct Transform {
113 vec4 mat;
114 vec2 translate;
115 };
116
117 #define Transform_size 24
118
119 TransformRef Transform_index(TransformRef ref, uint index) {
120 return TransformRef(ref.offset + index * Transform_size);
121 }
122
123 struct Clip {
124 vec4 bbox;
125 };
126
127 #define Clip_size 16
128
129 ClipRef Clip_index(ClipRef ref, uint index) {
130 return ClipRef(ref.offset + index * Clip_size);
131 }
132
133 struct SetFillMode {
134 uint fill_mode;
135 };
136
137 #define SetFillMode_size 4
138
139 SetFillModeRef SetFillMode_index(SetFillModeRef ref, uint index) {
140 return SetFillModeRef(ref.offset + index * SetFillMode_size);
141 }
142
143 #define Element_Nop 0
144 #define Element_Line 1
145 #define Element_Quad 2
146 #define Element_Cubic 3
147 #define Element_FillColor 4
148 #define Element_SetLineWidth 5
149 #define Element_Transform 6
150 #define Element_BeginClip 7
151 #define Element_EndClip 8
152 #define Element_FillImage 9
153 #define Element_SetFillMode 10
154 #define Element_size 36
155
156 ElementRef Element_index(ElementRef ref, uint index) {
157 return ElementRef(ref.offset + index * Element_size);
158 }
159
160 struct ElementTag {
161 uint tag;
162 uint flags;
163 };
164
165 LineSeg LineSeg_read(LineSegRef ref) {
166 uint ix = ref.offset >> 2;
167 uint raw0 = scene[ix + 0];
168 uint raw1 = scene[ix + 1];
169 uint raw2 = scene[ix + 2];
170 uint raw3 = scene[ix + 3];
171 LineSeg s;
172 s.p0 = vec2(uintBitsToFloat(raw0), uintBitsToFloat(raw1));
173 s.p1 = vec2(uintBitsToFloat(raw2), uintBitsToFloat(raw3));
174 return s;
175 }
176
177 QuadSeg QuadSeg_read(QuadSegRef ref) {
178 uint ix = ref.offset >> 2;
179 uint raw0 = scene[ix + 0];
180 uint raw1 = scene[ix + 1];
181 uint raw2 = scene[ix + 2];
182 uint raw3 = scene[ix + 3];
183 uint raw4 = scene[ix + 4];
184 uint raw5 = scene[ix + 5];
185 QuadSeg s;
186 s.p0 = vec2(uintBitsToFloat(raw0), uintBitsToFloat(raw1));
187 s.p1 = vec2(uintBitsToFloat(raw2), uintBitsToFloat(raw3));
188 s.p2 = vec2(uintBitsToFloat(raw4), uintBitsToFloat(raw5));
189 return s;
190 }
191
192 CubicSeg CubicSeg_read(CubicSegRef ref) {
193 uint ix = ref.offset >> 2;
194 uint raw0 = scene[ix + 0];
195 uint raw1 = scene[ix + 1];
196 uint raw2 = scene[ix + 2];
197 uint raw3 = scene[ix + 3];
198 uint raw4 = scene[ix + 4];
199 uint raw5 = scene[ix + 5];
200 uint raw6 = scene[ix + 6];
201 uint raw7 = scene[ix + 7];
202 CubicSeg s;
203 s.p0 = vec2(uintBitsToFloat(raw0), uintBitsToFloat(raw1));
204 s.p1 = vec2(uintBitsToFloat(raw2), uintBitsToFloat(raw3));
205 s.p2 = vec2(uintBitsToFloat(raw4), uintBitsToFloat(raw5));
206 s.p3 = vec2(uintBitsToFloat(raw6), uintBitsToFloat(raw7));
207 return s;
208 }
209
210 FillColor FillColor_read(FillColorRef ref) {
211 uint ix = ref.offset >> 2;
212 uint raw0 = scene[ix + 0];
213 FillColor s;
214 s.rgba_color = raw0;
215 return s;
216 }
217
218 FillImage FillImage_read(FillImageRef ref) {
219 uint ix = ref.offset >> 2;
220 uint raw0 = scene[ix + 0];
221 uint raw1 = scene[ix + 1];
222 FillImage s;
223 s.index = raw0;
224 s.offset = ivec2(int(raw1 << 16) >> 16, int(raw1) >> 16);
225 return s;
226 }
227
228 SetLineWidth SetLineWidth_read(SetLineWidthRef ref) {
229 uint ix = ref.offset >> 2;
230 uint raw0 = scene[ix + 0];
231 SetLineWidth s;
232 s.width = uintBitsToFloat(raw0);
233 return s;
234 }
235
236 Transform Transform_read(TransformRef ref) {
237 uint ix = ref.offset >> 2;
238 uint raw0 = scene[ix + 0];
239 uint raw1 = scene[ix + 1];
240 uint raw2 = scene[ix + 2];
241 uint raw3 = scene[ix + 3];
242 uint raw4 = scene[ix + 4];
243 uint raw5 = scene[ix + 5];
244 Transform s;
245 s.mat = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3));
246 s.translate = vec2(uintBitsToFloat(raw4), uintBitsToFloat(raw5));
247 return s;
248 }
249
250 Clip Clip_read(ClipRef ref) {
251 uint ix = ref.offset >> 2;
252 uint raw0 = scene[ix + 0];
253 uint raw1 = scene[ix + 1];
254 uint raw2 = scene[ix + 2];
255 uint raw3 = scene[ix + 3];
256 Clip s;
257 s.bbox = vec4(uintBitsToFloat(raw0), uintBitsToFloat(raw1), uintBitsToFloat(raw2), uintBitsToFloat(raw3));
258 return s;
259 }
260
261 SetFillMode SetFillMode_read(SetFillModeRef ref) {
262 uint ix = ref.offset >> 2;
263 uint raw0 = scene[ix + 0];
264 SetFillMode s;
265 s.fill_mode = raw0;
266 return s;
267 }
268
269 ElementTag Element_tag(ElementRef ref) {
270 uint tag_and_flags = scene[ref.offset >> 2];
271 return ElementTag(tag_and_flags & 0xffff, tag_and_flags >> 16);
272 }
273
274 LineSeg Element_Line_read(ElementRef ref) {
275 return LineSeg_read(LineSegRef(ref.offset + 4));
276 }
277
278 QuadSeg Element_Quad_read(ElementRef ref) {
279 return QuadSeg_read(QuadSegRef(ref.offset + 4));
280 }
281
282 CubicSeg Element_Cubic_read(ElementRef ref) {
283 return CubicSeg_read(CubicSegRef(ref.offset + 4));
284 }
285
286 FillColor Element_FillColor_read(ElementRef ref) {
287 return FillColor_read(FillColorRef(ref.offset + 4));
288 }
289
290 SetLineWidth Element_SetLineWidth_read(ElementRef ref) {
291 return SetLineWidth_read(SetLineWidthRef(ref.offset + 4));
292 }
293
294 Transform Element_Transform_read(ElementRef ref) {
295 return Transform_read(TransformRef(ref.offset + 4));
296 }
297
298 Clip Element_BeginClip_read(ElementRef ref) {
299 return Clip_read(ClipRef(ref.offset + 4));
300 }
301
302 Clip Element_EndClip_read(ElementRef ref) {
303 return Clip_read(ClipRef(ref.offset + 4));
304 }
305
306 FillImage Element_FillImage_read(ElementRef ref) {
307 return FillImage_read(FillImageRef(ref.offset + 4));
308 }
309
310 SetFillMode Element_SetFillMode_read(ElementRef ref) {
311 return SetFillMode_read(SetFillModeRef(ref.offset + 4));
312 }
313
314