1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module graphene.c.types;
26 
27 public import gobject.c.types;
28 
29 
30 /**
31  * Specify the order of the rotations on each axis.
32  *
33  * The %GRAPHENE_EULER_ORDER_DEFAULT value is special, and is used
34  * as an alias for one of the other orders.
35  *
36  * Since: 1.2
37  */
38 public enum graphene_euler_order_t
39 {
40 	/**
41 	 * Rotate in the default order; the
42 	 * default order is one of the following enumeration values
43 	 */
44 	DEFAULT = -1,
45 	/**
46 	 * Rotate in the X, Y, and Z order. Deprecated in
47 	 * Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SXYZ
48 	 */
49 	XYZ = 0,
50 	/**
51 	 * Rotate in the Y, Z, and X order. Deprecated in
52 	 * Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SYZX
53 	 */
54 	YZX = 1,
55 	/**
56 	 * Rotate in the Z, X, and Y order. Deprecated in
57 	 * Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SZXY
58 	 */
59 	ZXY = 2,
60 	/**
61 	 * Rotate in the X, Z, and Y order. Deprecated in
62 	 * Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SXZY
63 	 */
64 	XZY = 3,
65 	/**
66 	 * Rotate in the Y, X, and Z order. Deprecated in
67 	 * Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SYXZ
68 	 */
69 	YXZ = 4,
70 	/**
71 	 * Rotate in the Z, Y, and X order. Deprecated in
72 	 * Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SZYX
73 	 */
74 	ZYX = 5,
75 	/**
76 	 * Defines a static rotation along the X, Y, and Z axes (Since: 1.10)
77 	 */
78 	SXYZ = 6,
79 	/**
80 	 * Defines a static rotation along the X, Y, and X axes (Since: 1.10)
81 	 */
82 	SXYX = 7,
83 	/**
84 	 * Defines a static rotation along the X, Z, and Y axes (Since: 1.10)
85 	 */
86 	SXZY = 8,
87 	/**
88 	 * Defines a static rotation along the X, Z, and X axes (Since: 1.10)
89 	 */
90 	SXZX = 9,
91 	/**
92 	 * Defines a static rotation along the Y, Z, and X axes (Since: 1.10)
93 	 */
94 	SYZX = 10,
95 	/**
96 	 * Defines a static rotation along the Y, Z, and Y axes (Since: 1.10)
97 	 */
98 	SYZY = 11,
99 	/**
100 	 * Defines a static rotation along the Y, X, and Z axes (Since: 1.10)
101 	 */
102 	SYXZ = 12,
103 	/**
104 	 * Defines a static rotation along the Y, X, and Y axes (Since: 1.10)
105 	 */
106 	SYXY = 13,
107 	/**
108 	 * Defines a static rotation along the Z, X, and Y axes (Since: 1.10)
109 	 */
110 	SZXY = 14,
111 	/**
112 	 * Defines a static rotation along the Z, X, and Z axes (Since: 1.10)
113 	 */
114 	SZXZ = 15,
115 	/**
116 	 * Defines a static rotation along the Z, Y, and X axes (Since: 1.10)
117 	 */
118 	SZYX = 16,
119 	/**
120 	 * Defines a static rotation along the Z, Y, and Z axes (Since: 1.10)
121 	 */
122 	SZYZ = 17,
123 	/**
124 	 * Defines a relative rotation along the Z, Y, and X axes (Since: 1.10)
125 	 */
126 	RZYX = 18,
127 	/**
128 	 * Defines a relative rotation along the X, Y, and X axes (Since: 1.10)
129 	 */
130 	RXYX = 19,
131 	/**
132 	 * Defines a relative rotation along the Y, Z, and X axes (Since: 1.10)
133 	 */
134 	RYZX = 20,
135 	/**
136 	 * Defines a relative rotation along the X, Z, and X axes (Since: 1.10)
137 	 */
138 	RXZX = 21,
139 	/**
140 	 * Defines a relative rotation along the X, Z, and Y axes (Since: 1.10)
141 	 */
142 	RXZY = 22,
143 	/**
144 	 * Defines a relative rotation along the Y, Z, and Y axes (Since: 1.10)
145 	 */
146 	RYZY = 23,
147 	/**
148 	 * Defines a relative rotation along the Z, X, and Y axes (Since: 1.10)
149 	 */
150 	RZXY = 24,
151 	/**
152 	 * Defines a relative rotation along the Y, X, and Y axes (Since: 1.10)
153 	 */
154 	RYXY = 25,
155 	/**
156 	 * Defines a relative rotation along the Y, X, and Z axes (Since: 1.10)
157 	 */
158 	RYXZ = 26,
159 	/**
160 	 * Defines a relative rotation along the Z, X, and Z axes (Since: 1.10)
161 	 */
162 	RZXZ = 27,
163 	/**
164 	 * Defines a relative rotation along the X, Y, and Z axes (Since: 1.10)
165 	 */
166 	RXYZ = 28,
167 	/**
168 	 * Defines a relative rotation along the Z, Y, and Z axes (Since: 1.10)
169 	 */
170 	RZYZ = 29,
171 }
172 alias graphene_euler_order_t EulerOrder;
173 
174 /**
175  * The type of intersection.
176  *
177  * Since: 1.10
178  */
179 public enum graphene_ray_intersection_kind_t
180 {
181 	/**
182 	 * No intersection
183 	 */
184 	NONE = 0,
185 	/**
186 	 * The ray is entering the intersected
187 	 * object
188 	 */
189 	ENTER = 1,
190 	/**
191 	 * The ray is leaving the intersected
192 	 * object
193 	 */
194 	LEAVE = 2,
195 }
196 alias graphene_ray_intersection_kind_t RayIntersectionKind;
197 
198 struct graphene_box_t
199 {
200 	graphene_vec3_t min;
201 	graphene_vec3_t max;
202 }
203 
204 struct graphene_euler_t
205 {
206 	graphene_vec3_t angles;
207 	graphene_euler_order_t order;
208 }
209 
210 struct graphene_frustum_t
211 {
212 	graphene_plane_t[6] planes;
213 }
214 
215 struct graphene_matrix_t
216 {
217 	graphene_simd4x4f_t value;
218 }
219 
220 struct graphene_plane_t
221 {
222 	graphene_vec3_t normal;
223 	float constant;
224 }
225 
226 struct graphene_point_t
227 {
228 	/**
229 	 * the X coordinate of the point
230 	 */
231 	float x;
232 	/**
233 	 * the Y coordinate of the point
234 	 */
235 	float y;
236 }
237 
238 struct graphene_point3d_t
239 {
240 	/**
241 	 * the X coordinate
242 	 */
243 	float x;
244 	/**
245 	 * the Y coordinate
246 	 */
247 	float y;
248 	/**
249 	 * the Z coordinate
250 	 */
251 	float z;
252 }
253 
254 struct graphene_quad_t
255 {
256 	graphene_point_t[4] points;
257 }
258 
259 struct graphene_quaternion_t
260 {
261 	float x;
262 	float y;
263 	float z;
264 	float w;
265 }
266 
267 struct graphene_ray_t
268 {
269 	graphene_vec3_t origin;
270 	graphene_vec3_t direction;
271 }
272 
273 struct graphene_rect_t
274 {
275 	/**
276 	 * the coordinates of the origin of the rectangle
277 	 */
278 	graphene_point_t origin;
279 	/**
280 	 * the size of the rectangle
281 	 */
282 	graphene_size_t size;
283 }
284 
285 struct graphene_simd4f_t
286 {
287 	float x;
288 	float y;
289 	float z;
290 	float w;
291 }
292 
293 struct graphene_simd4x4f_t
294 {
295 	graphene_simd4f_t x;
296 	graphene_simd4f_t y;
297 	graphene_simd4f_t z;
298 	graphene_simd4f_t w;
299 }
300 
301 struct graphene_size_t
302 {
303 	/**
304 	 * the width
305 	 */
306 	float width;
307 	/**
308 	 * the height
309 	 */
310 	float height;
311 }
312 
313 struct graphene_sphere_t
314 {
315 	graphene_vec3_t center;
316 	float radius;
317 }
318 
319 struct graphene_triangle_t
320 {
321 	graphene_vec3_t a;
322 	graphene_vec3_t b;
323 	graphene_vec3_t c;
324 }
325 
326 struct graphene_vec2_t
327 {
328 	graphene_simd4f_t value;
329 }
330 
331 struct graphene_vec3_t
332 {
333 	graphene_simd4f_t value;
334 }
335 
336 struct graphene_vec4_t
337 {
338 	graphene_simd4f_t value;
339 }
340 
341 enum PI = 3.141593;
342 alias GRAPHENE_PI = PI;
343 
344 enum PI_2 = 1.570796;
345 alias GRAPHENE_PI_2 = PI_2;
346 
347 /**
348  * Evaluates to the number of components of a #graphene_vec2_t.
349  *
350  * This symbol is useful when declaring a C array of floating
351  * point values to be used with graphene_vec2_init_from_float() and
352  * graphene_vec2_to_float(), e.g.
353  *
354  * |[
355  * float v[GRAPHENE_VEC2_LEN];
356  *
357  * // vec is defined elsewhere
358  * graphene_vec2_to_float (&vec, v);
359  *
360  * for (int i = 0; i < GRAPHENE_VEC2_LEN; i++)
361  * fprintf (stdout, "component %d: %g\n", i, v[i]);
362  * ]|
363  */
364 enum VEC2_LEN = 2;
365 alias GRAPHENE_VEC2_LEN = VEC2_LEN;
366 
367 /**
368  * Evaluates to the number of components of a #graphene_vec3_t.
369  *
370  * This symbol is useful when declaring a C array of floating
371  * point values to be used with graphene_vec3_init_from_float() and
372  * graphene_vec3_to_float(), e.g.
373  *
374  * |[
375  * float v[GRAPHENE_VEC3_LEN];
376  *
377  * // vec is defined elsewhere
378  * graphene_vec3_to_float (&vec, v);
379  *
380  * for (int i = 0; i < GRAPHENE_VEC2_LEN; i++)
381  * fprintf (stdout, "component %d: %g\n", i, v[i]);
382  * ]|
383  */
384 enum VEC3_LEN = 3;
385 alias GRAPHENE_VEC3_LEN = VEC3_LEN;
386 
387 /**
388  * Evaluates to the number of components of a #graphene_vec4_t.
389  *
390  * This symbol is useful when declaring a C array of floating
391  * point values to be used with graphene_vec4_init_from_float() and
392  * graphene_vec4_to_float(), e.g.
393  *
394  * |[
395  * float v[GRAPHENE_VEC4_LEN];
396  *
397  * // vec is defined elsewhere
398  * graphene_vec4_to_float (&vec, v);
399  *
400  * for (int i = 0; i < GRAPHENE_VEC4_LEN; i++)
401  * fprintf (stdout, "component %d: %g\n", i, v[i]);
402  * ]|
403  */
404 enum VEC4_LEN = 4;
405 alias GRAPHENE_VEC4_LEN = VEC4_LEN;