1#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
6#![allow(
7 clippy::approx_constant,
8 clippy::type_complexity,
9 clippy::unreadable_literal,
10 clippy::upper_case_acronyms
11)]
12#![cfg_attr(docsrs, feature(doc_cfg))]
13
14use glib_sys as glib;
15
16#[cfg(unix)]
17#[allow(unused_imports)]
18use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
19#[allow(unused_imports)]
20use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
21#[allow(unused_imports)]
22use std::ffi::{
23 c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
24};
25
26#[allow(unused_imports)]
27use glib::{gboolean, gconstpointer, gpointer, GType};
28
29pub type graphene_euler_order_t = c_int;
31pub const GRAPHENE_EULER_ORDER_DEFAULT: graphene_euler_order_t = -1;
32pub const GRAPHENE_EULER_ORDER_XYZ: graphene_euler_order_t = 0;
33pub const GRAPHENE_EULER_ORDER_YZX: graphene_euler_order_t = 1;
34pub const GRAPHENE_EULER_ORDER_ZXY: graphene_euler_order_t = 2;
35pub const GRAPHENE_EULER_ORDER_XZY: graphene_euler_order_t = 3;
36pub const GRAPHENE_EULER_ORDER_YXZ: graphene_euler_order_t = 4;
37pub const GRAPHENE_EULER_ORDER_ZYX: graphene_euler_order_t = 5;
38pub const GRAPHENE_EULER_ORDER_SXYZ: graphene_euler_order_t = 6;
39pub const GRAPHENE_EULER_ORDER_SXYX: graphene_euler_order_t = 7;
40pub const GRAPHENE_EULER_ORDER_SXZY: graphene_euler_order_t = 8;
41pub const GRAPHENE_EULER_ORDER_SXZX: graphene_euler_order_t = 9;
42pub const GRAPHENE_EULER_ORDER_SYZX: graphene_euler_order_t = 10;
43pub const GRAPHENE_EULER_ORDER_SYZY: graphene_euler_order_t = 11;
44pub const GRAPHENE_EULER_ORDER_SYXZ: graphene_euler_order_t = 12;
45pub const GRAPHENE_EULER_ORDER_SYXY: graphene_euler_order_t = 13;
46pub const GRAPHENE_EULER_ORDER_SZXY: graphene_euler_order_t = 14;
47pub const GRAPHENE_EULER_ORDER_SZXZ: graphene_euler_order_t = 15;
48pub const GRAPHENE_EULER_ORDER_SZYX: graphene_euler_order_t = 16;
49pub const GRAPHENE_EULER_ORDER_SZYZ: graphene_euler_order_t = 17;
50pub const GRAPHENE_EULER_ORDER_RZYX: graphene_euler_order_t = 18;
51pub const GRAPHENE_EULER_ORDER_RXYX: graphene_euler_order_t = 19;
52pub const GRAPHENE_EULER_ORDER_RYZX: graphene_euler_order_t = 20;
53pub const GRAPHENE_EULER_ORDER_RXZX: graphene_euler_order_t = 21;
54pub const GRAPHENE_EULER_ORDER_RXZY: graphene_euler_order_t = 22;
55pub const GRAPHENE_EULER_ORDER_RYZY: graphene_euler_order_t = 23;
56pub const GRAPHENE_EULER_ORDER_RZXY: graphene_euler_order_t = 24;
57pub const GRAPHENE_EULER_ORDER_RYXY: graphene_euler_order_t = 25;
58pub const GRAPHENE_EULER_ORDER_RYXZ: graphene_euler_order_t = 26;
59pub const GRAPHENE_EULER_ORDER_RZXZ: graphene_euler_order_t = 27;
60pub const GRAPHENE_EULER_ORDER_RXYZ: graphene_euler_order_t = 28;
61pub const GRAPHENE_EULER_ORDER_RZYZ: graphene_euler_order_t = 29;
62
63pub type graphene_ray_intersection_kind_t = c_int;
64pub const GRAPHENE_RAY_INTERSECTION_KIND_NONE: graphene_ray_intersection_kind_t = 0;
65pub const GRAPHENE_RAY_INTERSECTION_KIND_ENTER: graphene_ray_intersection_kind_t = 1;
66pub const GRAPHENE_RAY_INTERSECTION_KIND_LEAVE: graphene_ray_intersection_kind_t = 2;
67
68pub const GRAPHENE_VEC2_LEN: c_int = 2;
70pub const GRAPHENE_VEC3_LEN: c_int = 3;
71pub const GRAPHENE_VEC4_LEN: c_int = 4;
72
73#[derive(Copy, Clone)]
75#[repr(C)]
76pub struct graphene_box_t {
77 pub min: graphene_vec3_t,
78 pub max: graphene_vec3_t,
79}
80
81impl ::std::fmt::Debug for graphene_box_t {
82 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
83 f.debug_struct(&format!("graphene_box_t @ {self:p}"))
84 .finish()
85 }
86}
87
88#[derive(Copy, Clone)]
89#[repr(C)]
90pub struct graphene_euler_t {
91 pub angles: graphene_vec3_t,
92 pub order: graphene_euler_order_t,
93}
94
95impl ::std::fmt::Debug for graphene_euler_t {
96 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
97 f.debug_struct(&format!("graphene_euler_t @ {self:p}"))
98 .finish()
99 }
100}
101
102#[derive(Copy, Clone)]
103#[repr(C)]
104pub struct graphene_frustum_t {
105 pub planes: [graphene_plane_t; 6],
106}
107
108impl ::std::fmt::Debug for graphene_frustum_t {
109 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
110 f.debug_struct(&format!("graphene_frustum_t @ {self:p}"))
111 .finish()
112 }
113}
114
115#[repr(align(16))]
116#[derive(Copy, Clone)]
117#[repr(C)]
118pub struct graphene_matrix_t {
119 pub value: graphene_simd4x4f_t,
120}
121
122impl ::std::fmt::Debug for graphene_matrix_t {
123 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
124 f.debug_struct(&format!("graphene_matrix_t @ {self:p}"))
125 .finish()
126 }
127}
128
129#[derive(Copy, Clone)]
130#[repr(C)]
131pub struct graphene_plane_t {
132 pub normal: graphene_vec3_t,
133 pub constant: c_float,
134}
135
136impl ::std::fmt::Debug for graphene_plane_t {
137 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
138 f.debug_struct(&format!("graphene_plane_t @ {self:p}"))
139 .finish()
140 }
141}
142
143#[derive(Copy, Clone)]
144#[repr(C)]
145pub struct graphene_point3d_t {
146 pub x: c_float,
147 pub y: c_float,
148 pub z: c_float,
149}
150
151impl ::std::fmt::Debug for graphene_point3d_t {
152 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
153 f.debug_struct(&format!("graphene_point3d_t @ {self:p}"))
154 .field("x", &self.x)
155 .field("y", &self.y)
156 .field("z", &self.z)
157 .finish()
158 }
159}
160
161#[derive(Copy, Clone)]
162#[repr(C)]
163pub struct graphene_point_t {
164 pub x: c_float,
165 pub y: c_float,
166}
167
168impl ::std::fmt::Debug for graphene_point_t {
169 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
170 f.debug_struct(&format!("graphene_point_t @ {self:p}"))
171 .field("x", &self.x)
172 .field("y", &self.y)
173 .finish()
174 }
175}
176
177#[derive(Copy, Clone)]
178#[repr(C)]
179pub struct graphene_quad_t {
180 pub points: [graphene_point_t; 4],
181}
182
183impl ::std::fmt::Debug for graphene_quad_t {
184 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
185 f.debug_struct(&format!("graphene_quad_t @ {self:p}"))
186 .finish()
187 }
188}
189
190#[derive(Copy, Clone)]
191#[repr(C)]
192pub struct graphene_quaternion_t {
193 pub x: c_float,
194 pub y: c_float,
195 pub z: c_float,
196 pub w: c_float,
197}
198
199impl ::std::fmt::Debug for graphene_quaternion_t {
200 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
201 f.debug_struct(&format!("graphene_quaternion_t @ {self:p}"))
202 .finish()
203 }
204}
205
206#[derive(Copy, Clone)]
207#[repr(C)]
208pub struct graphene_ray_t {
209 pub origin: graphene_vec3_t,
210 pub direction: graphene_vec3_t,
211}
212
213impl ::std::fmt::Debug for graphene_ray_t {
214 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
215 f.debug_struct(&format!("graphene_ray_t @ {self:p}"))
216 .finish()
217 }
218}
219
220#[derive(Copy, Clone)]
221#[repr(C)]
222pub struct graphene_rect_t {
223 pub origin: graphene_point_t,
224 pub size: graphene_size_t,
225}
226
227impl ::std::fmt::Debug for graphene_rect_t {
228 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
229 f.debug_struct(&format!("graphene_rect_t @ {self:p}"))
230 .field("origin", &self.origin)
231 .field("size", &self.size)
232 .finish()
233 }
234}
235
236#[repr(align(16))]
237#[derive(Copy, Clone)]
238#[repr(C)]
239pub struct graphene_simd4f_t {
240 pub x: c_float,
241 pub y: c_float,
242 pub z: c_float,
243 pub w: c_float,
244}
245
246impl ::std::fmt::Debug for graphene_simd4f_t {
247 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
248 f.debug_struct(&format!("graphene_simd4f_t @ {self:p}"))
249 .finish()
250 }
251}
252
253#[repr(align(16))]
254#[derive(Copy, Clone)]
255#[repr(C)]
256pub struct graphene_simd4x4f_t {
257 pub x: graphene_simd4f_t,
258 pub y: graphene_simd4f_t,
259 pub z: graphene_simd4f_t,
260 pub w: graphene_simd4f_t,
261}
262
263impl ::std::fmt::Debug for graphene_simd4x4f_t {
264 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
265 f.debug_struct(&format!("graphene_simd4x4f_t @ {self:p}"))
266 .finish()
267 }
268}
269
270#[derive(Copy, Clone)]
271#[repr(C)]
272pub struct graphene_size_t {
273 pub width: c_float,
274 pub height: c_float,
275}
276
277impl ::std::fmt::Debug for graphene_size_t {
278 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
279 f.debug_struct(&format!("graphene_size_t @ {self:p}"))
280 .field("width", &self.width)
281 .field("height", &self.height)
282 .finish()
283 }
284}
285
286#[derive(Copy, Clone)]
287#[repr(C)]
288pub struct graphene_sphere_t {
289 pub center: graphene_vec3_t,
290 pub radius: c_float,
291}
292
293impl ::std::fmt::Debug for graphene_sphere_t {
294 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
295 f.debug_struct(&format!("graphene_sphere_t @ {self:p}"))
296 .finish()
297 }
298}
299
300#[derive(Copy, Clone)]
301#[repr(C)]
302pub struct graphene_triangle_t {
303 pub a: graphene_vec3_t,
304 pub b: graphene_vec3_t,
305 pub c: graphene_vec3_t,
306}
307
308impl ::std::fmt::Debug for graphene_triangle_t {
309 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
310 f.debug_struct(&format!("graphene_triangle_t @ {self:p}"))
311 .finish()
312 }
313}
314
315#[repr(align(16))]
316#[derive(Copy, Clone)]
317#[repr(C)]
318pub struct graphene_vec2_t {
319 pub value: graphene_simd4f_t,
320}
321
322impl ::std::fmt::Debug for graphene_vec2_t {
323 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
324 f.debug_struct(&format!("graphene_vec2_t @ {self:p}"))
325 .finish()
326 }
327}
328
329#[repr(align(16))]
330#[derive(Copy, Clone)]
331#[repr(C)]
332pub struct graphene_vec3_t {
333 pub value: graphene_simd4f_t,
334}
335
336impl ::std::fmt::Debug for graphene_vec3_t {
337 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
338 f.debug_struct(&format!("graphene_vec3_t @ {self:p}"))
339 .finish()
340 }
341}
342
343#[repr(align(16))]
344#[derive(Copy, Clone)]
345#[repr(C)]
346pub struct graphene_vec4_t {
347 pub value: graphene_simd4f_t,
348}
349
350impl ::std::fmt::Debug for graphene_vec4_t {
351 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
352 f.debug_struct(&format!("graphene_vec4_t @ {self:p}"))
353 .finish()
354 }
355}
356
357extern "C" {
358
359 pub fn graphene_box_get_type() -> GType;
363 pub fn graphene_box_alloc() -> *mut graphene_box_t;
364 pub fn graphene_box_contains_box(a: *const graphene_box_t, b: *const graphene_box_t) -> bool;
365 pub fn graphene_box_contains_point(
366 box_: *const graphene_box_t,
367 point: *const graphene_point3d_t,
368 ) -> bool;
369 pub fn graphene_box_equal(a: *const graphene_box_t, b: *const graphene_box_t) -> bool;
370 pub fn graphene_box_expand(
371 box_: *const graphene_box_t,
372 point: *const graphene_point3d_t,
373 res: *mut graphene_box_t,
374 );
375 pub fn graphene_box_expand_scalar(
376 box_: *const graphene_box_t,
377 scalar: c_float,
378 res: *mut graphene_box_t,
379 );
380 pub fn graphene_box_expand_vec3(
381 box_: *const graphene_box_t,
382 vec: *const graphene_vec3_t,
383 res: *mut graphene_box_t,
384 );
385 pub fn graphene_box_free(box_: *mut graphene_box_t);
386 pub fn graphene_box_get_bounding_sphere(
387 box_: *const graphene_box_t,
388 sphere: *mut graphene_sphere_t,
389 );
390 pub fn graphene_box_get_center(box_: *const graphene_box_t, center: *mut graphene_point3d_t);
391 pub fn graphene_box_get_depth(box_: *const graphene_box_t) -> c_float;
392 pub fn graphene_box_get_height(box_: *const graphene_box_t) -> c_float;
393 pub fn graphene_box_get_max(box_: *const graphene_box_t, max: *mut graphene_point3d_t);
394 pub fn graphene_box_get_min(box_: *const graphene_box_t, min: *mut graphene_point3d_t);
395 pub fn graphene_box_get_size(box_: *const graphene_box_t, size: *mut graphene_vec3_t);
396 pub fn graphene_box_get_vertices(
397 box_: *const graphene_box_t,
398 vertices: *mut [graphene_vec3_t; 8],
399 );
400 pub fn graphene_box_get_width(box_: *const graphene_box_t) -> c_float;
401 pub fn graphene_box_init(
402 box_: *mut graphene_box_t,
403 min: *const graphene_point3d_t,
404 max: *const graphene_point3d_t,
405 ) -> *mut graphene_box_t;
406 pub fn graphene_box_init_from_box(
407 box_: *mut graphene_box_t,
408 src: *const graphene_box_t,
409 ) -> *mut graphene_box_t;
410 pub fn graphene_box_init_from_points(
411 box_: *mut graphene_box_t,
412 n_points: c_uint,
413 points: *const graphene_point3d_t,
414 ) -> *mut graphene_box_t;
415 pub fn graphene_box_init_from_vec3(
416 box_: *mut graphene_box_t,
417 min: *const graphene_vec3_t,
418 max: *const graphene_vec3_t,
419 ) -> *mut graphene_box_t;
420 pub fn graphene_box_init_from_vectors(
421 box_: *mut graphene_box_t,
422 n_vectors: c_uint,
423 vectors: *const graphene_vec3_t,
424 ) -> *mut graphene_box_t;
425 pub fn graphene_box_intersection(
426 a: *const graphene_box_t,
427 b: *const graphene_box_t,
428 res: *mut graphene_box_t,
429 ) -> bool;
430 pub fn graphene_box_union(
431 a: *const graphene_box_t,
432 b: *const graphene_box_t,
433 res: *mut graphene_box_t,
434 );
435 pub fn graphene_box_empty() -> *const graphene_box_t;
436 pub fn graphene_box_infinite() -> *const graphene_box_t;
437 pub fn graphene_box_minus_one() -> *const graphene_box_t;
438 pub fn graphene_box_one() -> *const graphene_box_t;
439 pub fn graphene_box_one_minus_one() -> *const graphene_box_t;
440 pub fn graphene_box_zero() -> *const graphene_box_t;
441
442 pub fn graphene_euler_get_type() -> GType;
446 pub fn graphene_euler_alloc() -> *mut graphene_euler_t;
447 pub fn graphene_euler_equal(a: *const graphene_euler_t, b: *const graphene_euler_t) -> bool;
448 pub fn graphene_euler_free(e: *mut graphene_euler_t);
449 pub fn graphene_euler_get_alpha(e: *const graphene_euler_t) -> c_float;
450 pub fn graphene_euler_get_beta(e: *const graphene_euler_t) -> c_float;
451 pub fn graphene_euler_get_gamma(e: *const graphene_euler_t) -> c_float;
452 pub fn graphene_euler_get_order(e: *const graphene_euler_t) -> graphene_euler_order_t;
453 pub fn graphene_euler_get_x(e: *const graphene_euler_t) -> c_float;
454 pub fn graphene_euler_get_y(e: *const graphene_euler_t) -> c_float;
455 pub fn graphene_euler_get_z(e: *const graphene_euler_t) -> c_float;
456 pub fn graphene_euler_init(
457 e: *mut graphene_euler_t,
458 x: c_float,
459 y: c_float,
460 z: c_float,
461 ) -> *mut graphene_euler_t;
462 pub fn graphene_euler_init_from_euler(
463 e: *mut graphene_euler_t,
464 src: *const graphene_euler_t,
465 ) -> *mut graphene_euler_t;
466 pub fn graphene_euler_init_from_matrix(
467 e: *mut graphene_euler_t,
468 m: *const graphene_matrix_t,
469 order: graphene_euler_order_t,
470 ) -> *mut graphene_euler_t;
471 pub fn graphene_euler_init_from_quaternion(
472 e: *mut graphene_euler_t,
473 q: *const graphene_quaternion_t,
474 order: graphene_euler_order_t,
475 ) -> *mut graphene_euler_t;
476 pub fn graphene_euler_init_from_radians(
477 e: *mut graphene_euler_t,
478 x: c_float,
479 y: c_float,
480 z: c_float,
481 order: graphene_euler_order_t,
482 ) -> *mut graphene_euler_t;
483 pub fn graphene_euler_init_from_vec3(
484 e: *mut graphene_euler_t,
485 v: *const graphene_vec3_t,
486 order: graphene_euler_order_t,
487 ) -> *mut graphene_euler_t;
488 pub fn graphene_euler_init_with_order(
489 e: *mut graphene_euler_t,
490 x: c_float,
491 y: c_float,
492 z: c_float,
493 order: graphene_euler_order_t,
494 ) -> *mut graphene_euler_t;
495 pub fn graphene_euler_reorder(
496 e: *const graphene_euler_t,
497 order: graphene_euler_order_t,
498 res: *mut graphene_euler_t,
499 );
500 pub fn graphene_euler_to_matrix(e: *const graphene_euler_t, res: *mut graphene_matrix_t);
501 pub fn graphene_euler_to_quaternion(
502 e: *const graphene_euler_t,
503 res: *mut graphene_quaternion_t,
504 );
505 pub fn graphene_euler_to_vec3(e: *const graphene_euler_t, res: *mut graphene_vec3_t);
506
507 pub fn graphene_frustum_get_type() -> GType;
511 pub fn graphene_frustum_alloc() -> *mut graphene_frustum_t;
512 pub fn graphene_frustum_contains_point(
513 f: *const graphene_frustum_t,
514 point: *const graphene_point3d_t,
515 ) -> bool;
516 pub fn graphene_frustum_equal(
517 a: *const graphene_frustum_t,
518 b: *const graphene_frustum_t,
519 ) -> bool;
520 pub fn graphene_frustum_free(f: *mut graphene_frustum_t);
521 pub fn graphene_frustum_get_planes(
522 f: *const graphene_frustum_t,
523 planes: *mut [graphene_plane_t; 6],
524 );
525 pub fn graphene_frustum_init(
526 f: *mut graphene_frustum_t,
527 p0: *const graphene_plane_t,
528 p1: *const graphene_plane_t,
529 p2: *const graphene_plane_t,
530 p3: *const graphene_plane_t,
531 p4: *const graphene_plane_t,
532 p5: *const graphene_plane_t,
533 ) -> *mut graphene_frustum_t;
534 pub fn graphene_frustum_init_from_frustum(
535 f: *mut graphene_frustum_t,
536 src: *const graphene_frustum_t,
537 ) -> *mut graphene_frustum_t;
538 pub fn graphene_frustum_init_from_matrix(
539 f: *mut graphene_frustum_t,
540 matrix: *const graphene_matrix_t,
541 ) -> *mut graphene_frustum_t;
542 pub fn graphene_frustum_intersects_box(
543 f: *const graphene_frustum_t,
544 box_: *const graphene_box_t,
545 ) -> bool;
546 pub fn graphene_frustum_intersects_sphere(
547 f: *const graphene_frustum_t,
548 sphere: *const graphene_sphere_t,
549 ) -> bool;
550
551 pub fn graphene_matrix_get_type() -> GType;
555 pub fn graphene_matrix_alloc() -> *mut graphene_matrix_t;
556 pub fn graphene_matrix_decompose(
557 m: *const graphene_matrix_t,
558 translate: *mut graphene_vec3_t,
559 scale: *mut graphene_vec3_t,
560 rotate: *mut graphene_quaternion_t,
561 shear: *mut graphene_vec3_t,
562 perspective: *mut graphene_vec4_t,
563 ) -> bool;
564 pub fn graphene_matrix_determinant(m: *const graphene_matrix_t) -> c_float;
565 pub fn graphene_matrix_equal(a: *const graphene_matrix_t, b: *const graphene_matrix_t) -> bool;
566 pub fn graphene_matrix_equal_fast(
567 a: *const graphene_matrix_t,
568 b: *const graphene_matrix_t,
569 ) -> bool;
570 pub fn graphene_matrix_free(m: *mut graphene_matrix_t);
571 pub fn graphene_matrix_get_row(
572 m: *const graphene_matrix_t,
573 index_: c_uint,
574 res: *mut graphene_vec4_t,
575 );
576 pub fn graphene_matrix_get_value(
577 m: *const graphene_matrix_t,
578 row: c_uint,
579 col: c_uint,
580 ) -> c_float;
581 pub fn graphene_matrix_get_x_scale(m: *const graphene_matrix_t) -> c_float;
582 pub fn graphene_matrix_get_x_translation(m: *const graphene_matrix_t) -> c_float;
583 pub fn graphene_matrix_get_y_scale(m: *const graphene_matrix_t) -> c_float;
584 pub fn graphene_matrix_get_y_translation(m: *const graphene_matrix_t) -> c_float;
585 pub fn graphene_matrix_get_z_scale(m: *const graphene_matrix_t) -> c_float;
586 pub fn graphene_matrix_get_z_translation(m: *const graphene_matrix_t) -> c_float;
587 pub fn graphene_matrix_init_from_2d(
588 m: *mut graphene_matrix_t,
589 xx: c_double,
590 yx: c_double,
591 xy: c_double,
592 yy: c_double,
593 x_0: c_double,
594 y_0: c_double,
595 ) -> *mut graphene_matrix_t;
596 pub fn graphene_matrix_init_from_float(
597 m: *mut graphene_matrix_t,
598 v: *const [c_float; 16],
599 ) -> *mut graphene_matrix_t;
600 pub fn graphene_matrix_init_from_matrix(
601 m: *mut graphene_matrix_t,
602 src: *const graphene_matrix_t,
603 ) -> *mut graphene_matrix_t;
604 pub fn graphene_matrix_init_from_vec4(
605 m: *mut graphene_matrix_t,
606 v0: *const graphene_vec4_t,
607 v1: *const graphene_vec4_t,
608 v2: *const graphene_vec4_t,
609 v3: *const graphene_vec4_t,
610 ) -> *mut graphene_matrix_t;
611 pub fn graphene_matrix_init_frustum(
612 m: *mut graphene_matrix_t,
613 left: c_float,
614 right: c_float,
615 bottom: c_float,
616 top: c_float,
617 z_near: c_float,
618 z_far: c_float,
619 ) -> *mut graphene_matrix_t;
620 pub fn graphene_matrix_init_identity(m: *mut graphene_matrix_t) -> *mut graphene_matrix_t;
621 pub fn graphene_matrix_init_look_at(
622 m: *mut graphene_matrix_t,
623 eye: *const graphene_vec3_t,
624 center: *const graphene_vec3_t,
625 up: *const graphene_vec3_t,
626 ) -> *mut graphene_matrix_t;
627 pub fn graphene_matrix_init_ortho(
628 m: *mut graphene_matrix_t,
629 left: c_float,
630 right: c_float,
631 top: c_float,
632 bottom: c_float,
633 z_near: c_float,
634 z_far: c_float,
635 ) -> *mut graphene_matrix_t;
636 pub fn graphene_matrix_init_perspective(
637 m: *mut graphene_matrix_t,
638 fovy: c_float,
639 aspect: c_float,
640 z_near: c_float,
641 z_far: c_float,
642 ) -> *mut graphene_matrix_t;
643 pub fn graphene_matrix_init_rotate(
644 m: *mut graphene_matrix_t,
645 angle: c_float,
646 axis: *const graphene_vec3_t,
647 ) -> *mut graphene_matrix_t;
648 pub fn graphene_matrix_init_scale(
649 m: *mut graphene_matrix_t,
650 x: c_float,
651 y: c_float,
652 z: c_float,
653 ) -> *mut graphene_matrix_t;
654 pub fn graphene_matrix_init_skew(
655 m: *mut graphene_matrix_t,
656 x_skew: c_float,
657 y_skew: c_float,
658 ) -> *mut graphene_matrix_t;
659 pub fn graphene_matrix_init_translate(
660 m: *mut graphene_matrix_t,
661 p: *const graphene_point3d_t,
662 ) -> *mut graphene_matrix_t;
663 pub fn graphene_matrix_interpolate(
664 a: *const graphene_matrix_t,
665 b: *const graphene_matrix_t,
666 factor: c_double,
667 res: *mut graphene_matrix_t,
668 );
669 pub fn graphene_matrix_inverse(
670 m: *const graphene_matrix_t,
671 res: *mut graphene_matrix_t,
672 ) -> bool;
673 pub fn graphene_matrix_is_2d(m: *const graphene_matrix_t) -> bool;
674 pub fn graphene_matrix_is_backface_visible(m: *const graphene_matrix_t) -> bool;
675 pub fn graphene_matrix_is_identity(m: *const graphene_matrix_t) -> bool;
676 pub fn graphene_matrix_is_singular(m: *const graphene_matrix_t) -> bool;
677 pub fn graphene_matrix_multiply(
678 a: *const graphene_matrix_t,
679 b: *const graphene_matrix_t,
680 res: *mut graphene_matrix_t,
681 );
682 pub fn graphene_matrix_near(
683 a: *const graphene_matrix_t,
684 b: *const graphene_matrix_t,
685 epsilon: c_float,
686 ) -> bool;
687 pub fn graphene_matrix_normalize(m: *const graphene_matrix_t, res: *mut graphene_matrix_t);
688 pub fn graphene_matrix_perspective(
689 m: *const graphene_matrix_t,
690 depth: c_float,
691 res: *mut graphene_matrix_t,
692 );
693 pub fn graphene_matrix_print(m: *const graphene_matrix_t);
694 pub fn graphene_matrix_project_point(
695 m: *const graphene_matrix_t,
696 p: *const graphene_point_t,
697 res: *mut graphene_point_t,
698 );
699 pub fn graphene_matrix_project_rect(
700 m: *const graphene_matrix_t,
701 r: *const graphene_rect_t,
702 res: *mut graphene_quad_t,
703 );
704 pub fn graphene_matrix_project_rect_bounds(
705 m: *const graphene_matrix_t,
706 r: *const graphene_rect_t,
707 res: *mut graphene_rect_t,
708 );
709 pub fn graphene_matrix_rotate(
710 m: *mut graphene_matrix_t,
711 angle: c_float,
712 axis: *const graphene_vec3_t,
713 );
714 pub fn graphene_matrix_rotate_euler(m: *mut graphene_matrix_t, e: *const graphene_euler_t);
715 pub fn graphene_matrix_rotate_quaternion(
716 m: *mut graphene_matrix_t,
717 q: *const graphene_quaternion_t,
718 );
719 pub fn graphene_matrix_rotate_x(m: *mut graphene_matrix_t, angle: c_float);
720 pub fn graphene_matrix_rotate_y(m: *mut graphene_matrix_t, angle: c_float);
721 pub fn graphene_matrix_rotate_z(m: *mut graphene_matrix_t, angle: c_float);
722 pub fn graphene_matrix_scale(
723 m: *mut graphene_matrix_t,
724 factor_x: c_float,
725 factor_y: c_float,
726 factor_z: c_float,
727 );
728 pub fn graphene_matrix_skew_xy(m: *mut graphene_matrix_t, factor: c_float);
729 pub fn graphene_matrix_skew_xz(m: *mut graphene_matrix_t, factor: c_float);
730 pub fn graphene_matrix_skew_yz(m: *mut graphene_matrix_t, factor: c_float);
731 pub fn graphene_matrix_to_2d(
732 m: *const graphene_matrix_t,
733 xx: *mut c_double,
734 yx: *mut c_double,
735 xy: *mut c_double,
736 yy: *mut c_double,
737 x_0: *mut c_double,
738 y_0: *mut c_double,
739 ) -> bool;
740 pub fn graphene_matrix_to_float(m: *const graphene_matrix_t, v: *mut [c_float; 16]);
741 pub fn graphene_matrix_transform_bounds(
742 m: *const graphene_matrix_t,
743 r: *const graphene_rect_t,
744 res: *mut graphene_rect_t,
745 );
746 pub fn graphene_matrix_transform_box(
747 m: *const graphene_matrix_t,
748 b: *const graphene_box_t,
749 res: *mut graphene_box_t,
750 );
751 pub fn graphene_matrix_transform_point(
752 m: *const graphene_matrix_t,
753 p: *const graphene_point_t,
754 res: *mut graphene_point_t,
755 );
756 pub fn graphene_matrix_transform_point3d(
757 m: *const graphene_matrix_t,
758 p: *const graphene_point3d_t,
759 res: *mut graphene_point3d_t,
760 );
761 pub fn graphene_matrix_transform_ray(
762 m: *const graphene_matrix_t,
763 r: *const graphene_ray_t,
764 res: *mut graphene_ray_t,
765 );
766 pub fn graphene_matrix_transform_rect(
767 m: *const graphene_matrix_t,
768 r: *const graphene_rect_t,
769 res: *mut graphene_quad_t,
770 );
771 pub fn graphene_matrix_transform_sphere(
772 m: *const graphene_matrix_t,
773 s: *const graphene_sphere_t,
774 res: *mut graphene_sphere_t,
775 );
776 pub fn graphene_matrix_transform_vec3(
777 m: *const graphene_matrix_t,
778 v: *const graphene_vec3_t,
779 res: *mut graphene_vec3_t,
780 );
781 pub fn graphene_matrix_transform_vec4(
782 m: *const graphene_matrix_t,
783 v: *const graphene_vec4_t,
784 res: *mut graphene_vec4_t,
785 );
786 pub fn graphene_matrix_translate(m: *mut graphene_matrix_t, pos: *const graphene_point3d_t);
787 pub fn graphene_matrix_transpose(m: *const graphene_matrix_t, res: *mut graphene_matrix_t);
788 pub fn graphene_matrix_unproject_point3d(
789 projection: *const graphene_matrix_t,
790 modelview: *const graphene_matrix_t,
791 point: *const graphene_point3d_t,
792 res: *mut graphene_point3d_t,
793 );
794 pub fn graphene_matrix_untransform_bounds(
795 m: *const graphene_matrix_t,
796 r: *const graphene_rect_t,
797 bounds: *const graphene_rect_t,
798 res: *mut graphene_rect_t,
799 );
800 pub fn graphene_matrix_untransform_point(
801 m: *const graphene_matrix_t,
802 p: *const graphene_point_t,
803 bounds: *const graphene_rect_t,
804 res: *mut graphene_point_t,
805 ) -> bool;
806
807 pub fn graphene_plane_get_type() -> GType;
811 pub fn graphene_plane_alloc() -> *mut graphene_plane_t;
812 pub fn graphene_plane_distance(
813 p: *const graphene_plane_t,
814 point: *const graphene_point3d_t,
815 ) -> c_float;
816 pub fn graphene_plane_equal(a: *const graphene_plane_t, b: *const graphene_plane_t) -> bool;
817 pub fn graphene_plane_free(p: *mut graphene_plane_t);
818 pub fn graphene_plane_get_constant(p: *const graphene_plane_t) -> c_float;
819 pub fn graphene_plane_get_normal(p: *const graphene_plane_t, normal: *mut graphene_vec3_t);
820 pub fn graphene_plane_init(
821 p: *mut graphene_plane_t,
822 normal: *const graphene_vec3_t,
823 constant: c_float,
824 ) -> *mut graphene_plane_t;
825 pub fn graphene_plane_init_from_plane(
826 p: *mut graphene_plane_t,
827 src: *const graphene_plane_t,
828 ) -> *mut graphene_plane_t;
829 pub fn graphene_plane_init_from_point(
830 p: *mut graphene_plane_t,
831 normal: *const graphene_vec3_t,
832 point: *const graphene_point3d_t,
833 ) -> *mut graphene_plane_t;
834 pub fn graphene_plane_init_from_points(
835 p: *mut graphene_plane_t,
836 a: *const graphene_point3d_t,
837 b: *const graphene_point3d_t,
838 c: *const graphene_point3d_t,
839 ) -> *mut graphene_plane_t;
840 pub fn graphene_plane_init_from_vec4(
841 p: *mut graphene_plane_t,
842 src: *const graphene_vec4_t,
843 ) -> *mut graphene_plane_t;
844 pub fn graphene_plane_negate(p: *const graphene_plane_t, res: *mut graphene_plane_t);
845 pub fn graphene_plane_normalize(p: *const graphene_plane_t, res: *mut graphene_plane_t);
846 pub fn graphene_plane_transform(
847 p: *const graphene_plane_t,
848 matrix: *const graphene_matrix_t,
849 normal_matrix: *const graphene_matrix_t,
850 res: *mut graphene_plane_t,
851 );
852
853 pub fn graphene_point3d_get_type() -> GType;
857 pub fn graphene_point3d_alloc() -> *mut graphene_point3d_t;
858 pub fn graphene_point3d_cross(
859 a: *const graphene_point3d_t,
860 b: *const graphene_point3d_t,
861 res: *mut graphene_point3d_t,
862 );
863 pub fn graphene_point3d_distance(
864 a: *const graphene_point3d_t,
865 b: *const graphene_point3d_t,
866 delta: *mut graphene_vec3_t,
867 ) -> c_float;
868 pub fn graphene_point3d_dot(
869 a: *const graphene_point3d_t,
870 b: *const graphene_point3d_t,
871 ) -> c_float;
872 pub fn graphene_point3d_equal(
873 a: *const graphene_point3d_t,
874 b: *const graphene_point3d_t,
875 ) -> bool;
876 pub fn graphene_point3d_free(p: *mut graphene_point3d_t);
877 pub fn graphene_point3d_init(
878 p: *mut graphene_point3d_t,
879 x: c_float,
880 y: c_float,
881 z: c_float,
882 ) -> *mut graphene_point3d_t;
883 pub fn graphene_point3d_init_from_point(
884 p: *mut graphene_point3d_t,
885 src: *const graphene_point3d_t,
886 ) -> *mut graphene_point3d_t;
887 pub fn graphene_point3d_init_from_vec3(
888 p: *mut graphene_point3d_t,
889 v: *const graphene_vec3_t,
890 ) -> *mut graphene_point3d_t;
891 pub fn graphene_point3d_interpolate(
892 a: *const graphene_point3d_t,
893 b: *const graphene_point3d_t,
894 factor: c_double,
895 res: *mut graphene_point3d_t,
896 );
897 pub fn graphene_point3d_length(p: *const graphene_point3d_t) -> c_float;
898 pub fn graphene_point3d_near(
899 a: *const graphene_point3d_t,
900 b: *const graphene_point3d_t,
901 epsilon: c_float,
902 ) -> bool;
903 pub fn graphene_point3d_normalize(p: *const graphene_point3d_t, res: *mut graphene_point3d_t);
904 pub fn graphene_point3d_normalize_viewport(
905 p: *const graphene_point3d_t,
906 viewport: *const graphene_rect_t,
907 z_near: c_float,
908 z_far: c_float,
909 res: *mut graphene_point3d_t,
910 );
911 pub fn graphene_point3d_scale(
912 p: *const graphene_point3d_t,
913 factor: c_float,
914 res: *mut graphene_point3d_t,
915 );
916 pub fn graphene_point3d_to_vec3(p: *const graphene_point3d_t, v: *mut graphene_vec3_t);
917 pub fn graphene_point3d_zero() -> *const graphene_point3d_t;
918
919 pub fn graphene_point_get_type() -> GType;
923 pub fn graphene_point_alloc() -> *mut graphene_point_t;
924 pub fn graphene_point_distance(
925 a: *const graphene_point_t,
926 b: *const graphene_point_t,
927 d_x: *mut c_float,
928 d_y: *mut c_float,
929 ) -> c_float;
930 pub fn graphene_point_equal(a: *const graphene_point_t, b: *const graphene_point_t) -> bool;
931 pub fn graphene_point_free(p: *mut graphene_point_t);
932 pub fn graphene_point_init(
933 p: *mut graphene_point_t,
934 x: c_float,
935 y: c_float,
936 ) -> *mut graphene_point_t;
937 pub fn graphene_point_init_from_point(
938 p: *mut graphene_point_t,
939 src: *const graphene_point_t,
940 ) -> *mut graphene_point_t;
941 pub fn graphene_point_init_from_vec2(
942 p: *mut graphene_point_t,
943 src: *const graphene_vec2_t,
944 ) -> *mut graphene_point_t;
945 pub fn graphene_point_interpolate(
946 a: *const graphene_point_t,
947 b: *const graphene_point_t,
948 factor: c_double,
949 res: *mut graphene_point_t,
950 );
951 pub fn graphene_point_near(
952 a: *const graphene_point_t,
953 b: *const graphene_point_t,
954 epsilon: c_float,
955 ) -> bool;
956 pub fn graphene_point_to_vec2(p: *const graphene_point_t, v: *mut graphene_vec2_t);
957 pub fn graphene_point_zero() -> *const graphene_point_t;
958
959 pub fn graphene_quad_get_type() -> GType;
963 pub fn graphene_quad_alloc() -> *mut graphene_quad_t;
964 pub fn graphene_quad_bounds(q: *const graphene_quad_t, r: *mut graphene_rect_t);
965 pub fn graphene_quad_contains(q: *const graphene_quad_t, p: *const graphene_point_t) -> bool;
966 pub fn graphene_quad_free(q: *mut graphene_quad_t);
967 pub fn graphene_quad_get_point(
968 q: *const graphene_quad_t,
969 index_: c_uint,
970 ) -> *const graphene_point_t;
971 pub fn graphene_quad_init(
972 q: *mut graphene_quad_t,
973 p1: *const graphene_point_t,
974 p2: *const graphene_point_t,
975 p3: *const graphene_point_t,
976 p4: *const graphene_point_t,
977 ) -> *mut graphene_quad_t;
978 pub fn graphene_quad_init_from_points(
979 q: *mut graphene_quad_t,
980 points: *const [graphene_point_t; 4],
981 ) -> *mut graphene_quad_t;
982 pub fn graphene_quad_init_from_rect(
983 q: *mut graphene_quad_t,
984 r: *const graphene_rect_t,
985 ) -> *mut graphene_quad_t;
986
987 pub fn graphene_quaternion_get_type() -> GType;
991 pub fn graphene_quaternion_alloc() -> *mut graphene_quaternion_t;
992 pub fn graphene_quaternion_add(
993 a: *const graphene_quaternion_t,
994 b: *const graphene_quaternion_t,
995 res: *mut graphene_quaternion_t,
996 );
997 pub fn graphene_quaternion_dot(
998 a: *const graphene_quaternion_t,
999 b: *const graphene_quaternion_t,
1000 ) -> c_float;
1001 pub fn graphene_quaternion_equal(
1002 a: *const graphene_quaternion_t,
1003 b: *const graphene_quaternion_t,
1004 ) -> bool;
1005 pub fn graphene_quaternion_free(q: *mut graphene_quaternion_t);
1006 pub fn graphene_quaternion_init(
1007 q: *mut graphene_quaternion_t,
1008 x: c_float,
1009 y: c_float,
1010 z: c_float,
1011 w: c_float,
1012 ) -> *mut graphene_quaternion_t;
1013 pub fn graphene_quaternion_init_from_angle_vec3(
1014 q: *mut graphene_quaternion_t,
1015 angle: c_float,
1016 axis: *const graphene_vec3_t,
1017 ) -> *mut graphene_quaternion_t;
1018 pub fn graphene_quaternion_init_from_angles(
1019 q: *mut graphene_quaternion_t,
1020 deg_x: c_float,
1021 deg_y: c_float,
1022 deg_z: c_float,
1023 ) -> *mut graphene_quaternion_t;
1024 pub fn graphene_quaternion_init_from_euler(
1025 q: *mut graphene_quaternion_t,
1026 e: *const graphene_euler_t,
1027 ) -> *mut graphene_quaternion_t;
1028 pub fn graphene_quaternion_init_from_matrix(
1029 q: *mut graphene_quaternion_t,
1030 m: *const graphene_matrix_t,
1031 ) -> *mut graphene_quaternion_t;
1032 pub fn graphene_quaternion_init_from_quaternion(
1033 q: *mut graphene_quaternion_t,
1034 src: *const graphene_quaternion_t,
1035 ) -> *mut graphene_quaternion_t;
1036 pub fn graphene_quaternion_init_from_radians(
1037 q: *mut graphene_quaternion_t,
1038 rad_x: c_float,
1039 rad_y: c_float,
1040 rad_z: c_float,
1041 ) -> *mut graphene_quaternion_t;
1042 pub fn graphene_quaternion_init_from_vec4(
1043 q: *mut graphene_quaternion_t,
1044 src: *const graphene_vec4_t,
1045 ) -> *mut graphene_quaternion_t;
1046 pub fn graphene_quaternion_init_identity(
1047 q: *mut graphene_quaternion_t,
1048 ) -> *mut graphene_quaternion_t;
1049 pub fn graphene_quaternion_invert(
1050 q: *const graphene_quaternion_t,
1051 res: *mut graphene_quaternion_t,
1052 );
1053 pub fn graphene_quaternion_multiply(
1054 a: *const graphene_quaternion_t,
1055 b: *const graphene_quaternion_t,
1056 res: *mut graphene_quaternion_t,
1057 );
1058 pub fn graphene_quaternion_normalize(
1059 q: *const graphene_quaternion_t,
1060 res: *mut graphene_quaternion_t,
1061 );
1062 pub fn graphene_quaternion_scale(
1063 q: *const graphene_quaternion_t,
1064 factor: c_float,
1065 res: *mut graphene_quaternion_t,
1066 );
1067 pub fn graphene_quaternion_slerp(
1068 a: *const graphene_quaternion_t,
1069 b: *const graphene_quaternion_t,
1070 factor: c_float,
1071 res: *mut graphene_quaternion_t,
1072 );
1073 pub fn graphene_quaternion_to_angle_vec3(
1074 q: *const graphene_quaternion_t,
1075 angle: *mut c_float,
1076 axis: *mut graphene_vec3_t,
1077 );
1078 pub fn graphene_quaternion_to_angles(
1079 q: *const graphene_quaternion_t,
1080 deg_x: *mut c_float,
1081 deg_y: *mut c_float,
1082 deg_z: *mut c_float,
1083 );
1084 pub fn graphene_quaternion_to_matrix(
1085 q: *const graphene_quaternion_t,
1086 m: *mut graphene_matrix_t,
1087 );
1088 pub fn graphene_quaternion_to_radians(
1089 q: *const graphene_quaternion_t,
1090 rad_x: *mut c_float,
1091 rad_y: *mut c_float,
1092 rad_z: *mut c_float,
1093 );
1094 pub fn graphene_quaternion_to_vec4(q: *const graphene_quaternion_t, res: *mut graphene_vec4_t);
1095
1096 pub fn graphene_ray_get_type() -> GType;
1100 pub fn graphene_ray_alloc() -> *mut graphene_ray_t;
1101 pub fn graphene_ray_equal(a: *const graphene_ray_t, b: *const graphene_ray_t) -> bool;
1102 pub fn graphene_ray_free(r: *mut graphene_ray_t);
1103 pub fn graphene_ray_get_closest_point_to_point(
1104 r: *const graphene_ray_t,
1105 p: *const graphene_point3d_t,
1106 res: *mut graphene_point3d_t,
1107 );
1108 pub fn graphene_ray_get_direction(r: *const graphene_ray_t, direction: *mut graphene_vec3_t);
1109 pub fn graphene_ray_get_distance_to_plane(
1110 r: *const graphene_ray_t,
1111 p: *const graphene_plane_t,
1112 ) -> c_float;
1113 pub fn graphene_ray_get_distance_to_point(
1114 r: *const graphene_ray_t,
1115 p: *const graphene_point3d_t,
1116 ) -> c_float;
1117 pub fn graphene_ray_get_origin(r: *const graphene_ray_t, origin: *mut graphene_point3d_t);
1118 pub fn graphene_ray_get_position_at(
1119 r: *const graphene_ray_t,
1120 t: c_float,
1121 position: *mut graphene_point3d_t,
1122 );
1123 pub fn graphene_ray_init(
1124 r: *mut graphene_ray_t,
1125 origin: *const graphene_point3d_t,
1126 direction: *const graphene_vec3_t,
1127 ) -> *mut graphene_ray_t;
1128 pub fn graphene_ray_init_from_ray(
1129 r: *mut graphene_ray_t,
1130 src: *const graphene_ray_t,
1131 ) -> *mut graphene_ray_t;
1132 pub fn graphene_ray_init_from_vec3(
1133 r: *mut graphene_ray_t,
1134 origin: *const graphene_vec3_t,
1135 direction: *const graphene_vec3_t,
1136 ) -> *mut graphene_ray_t;
1137 pub fn graphene_ray_intersect_box(
1138 r: *const graphene_ray_t,
1139 b: *const graphene_box_t,
1140 t_out: *mut c_float,
1141 ) -> graphene_ray_intersection_kind_t;
1142 pub fn graphene_ray_intersect_sphere(
1143 r: *const graphene_ray_t,
1144 s: *const graphene_sphere_t,
1145 t_out: *mut c_float,
1146 ) -> graphene_ray_intersection_kind_t;
1147 pub fn graphene_ray_intersect_triangle(
1148 r: *const graphene_ray_t,
1149 t: *const graphene_triangle_t,
1150 t_out: *mut c_float,
1151 ) -> graphene_ray_intersection_kind_t;
1152 pub fn graphene_ray_intersects_box(r: *const graphene_ray_t, b: *const graphene_box_t) -> bool;
1153 pub fn graphene_ray_intersects_sphere(
1154 r: *const graphene_ray_t,
1155 s: *const graphene_sphere_t,
1156 ) -> bool;
1157 pub fn graphene_ray_intersects_triangle(
1158 r: *const graphene_ray_t,
1159 t: *const graphene_triangle_t,
1160 ) -> bool;
1161
1162 pub fn graphene_rect_get_type() -> GType;
1166 pub fn graphene_rect_contains_point(
1167 r: *const graphene_rect_t,
1168 p: *const graphene_point_t,
1169 ) -> bool;
1170 pub fn graphene_rect_contains_rect(
1171 a: *const graphene_rect_t,
1172 b: *const graphene_rect_t,
1173 ) -> bool;
1174 pub fn graphene_rect_equal(a: *const graphene_rect_t, b: *const graphene_rect_t) -> bool;
1175 pub fn graphene_rect_expand(
1176 r: *const graphene_rect_t,
1177 p: *const graphene_point_t,
1178 res: *mut graphene_rect_t,
1179 );
1180 pub fn graphene_rect_free(r: *mut graphene_rect_t);
1181 pub fn graphene_rect_get_area(r: *const graphene_rect_t) -> c_float;
1182 pub fn graphene_rect_get_bottom_left(r: *const graphene_rect_t, p: *mut graphene_point_t);
1183 pub fn graphene_rect_get_bottom_right(r: *const graphene_rect_t, p: *mut graphene_point_t);
1184 pub fn graphene_rect_get_center(r: *const graphene_rect_t, p: *mut graphene_point_t);
1185 pub fn graphene_rect_get_height(r: *const graphene_rect_t) -> c_float;
1186 pub fn graphene_rect_get_top_left(r: *const graphene_rect_t, p: *mut graphene_point_t);
1187 pub fn graphene_rect_get_top_right(r: *const graphene_rect_t, p: *mut graphene_point_t);
1188 pub fn graphene_rect_get_vertices(
1189 r: *const graphene_rect_t,
1190 vertices: *mut [graphene_vec2_t; 4],
1191 );
1192 pub fn graphene_rect_get_width(r: *const graphene_rect_t) -> c_float;
1193 pub fn graphene_rect_get_x(r: *const graphene_rect_t) -> c_float;
1194 pub fn graphene_rect_get_y(r: *const graphene_rect_t) -> c_float;
1195 pub fn graphene_rect_init(
1196 r: *mut graphene_rect_t,
1197 x: c_float,
1198 y: c_float,
1199 width: c_float,
1200 height: c_float,
1201 ) -> *mut graphene_rect_t;
1202 pub fn graphene_rect_init_from_rect(
1203 r: *mut graphene_rect_t,
1204 src: *const graphene_rect_t,
1205 ) -> *mut graphene_rect_t;
1206 pub fn graphene_rect_inset(
1207 r: *mut graphene_rect_t,
1208 d_x: c_float,
1209 d_y: c_float,
1210 ) -> *mut graphene_rect_t;
1211 pub fn graphene_rect_inset_r(
1212 r: *const graphene_rect_t,
1213 d_x: c_float,
1214 d_y: c_float,
1215 res: *mut graphene_rect_t,
1216 );
1217 pub fn graphene_rect_interpolate(
1218 a: *const graphene_rect_t,
1219 b: *const graphene_rect_t,
1220 factor: c_double,
1221 res: *mut graphene_rect_t,
1222 );
1223 pub fn graphene_rect_intersection(
1224 a: *const graphene_rect_t,
1225 b: *const graphene_rect_t,
1226 res: *mut graphene_rect_t,
1227 ) -> bool;
1228 pub fn graphene_rect_normalize(r: *mut graphene_rect_t) -> *mut graphene_rect_t;
1229 pub fn graphene_rect_normalize_r(r: *const graphene_rect_t, res: *mut graphene_rect_t);
1230 pub fn graphene_rect_offset(
1231 r: *mut graphene_rect_t,
1232 d_x: c_float,
1233 d_y: c_float,
1234 ) -> *mut graphene_rect_t;
1235 pub fn graphene_rect_offset_r(
1236 r: *const graphene_rect_t,
1237 d_x: c_float,
1238 d_y: c_float,
1239 res: *mut graphene_rect_t,
1240 );
1241 pub fn graphene_rect_round(r: *const graphene_rect_t, res: *mut graphene_rect_t);
1242 pub fn graphene_rect_round_extents(r: *const graphene_rect_t, res: *mut graphene_rect_t);
1243 pub fn graphene_rect_round_to_pixel(r: *mut graphene_rect_t) -> *mut graphene_rect_t;
1244 pub fn graphene_rect_scale(
1245 r: *const graphene_rect_t,
1246 s_h: c_float,
1247 s_v: c_float,
1248 res: *mut graphene_rect_t,
1249 );
1250 pub fn graphene_rect_union(
1251 a: *const graphene_rect_t,
1252 b: *const graphene_rect_t,
1253 res: *mut graphene_rect_t,
1254 );
1255 pub fn graphene_rect_alloc() -> *mut graphene_rect_t;
1256 pub fn graphene_rect_zero() -> *const graphene_rect_t;
1257
1258 pub fn graphene_size_get_type() -> GType;
1262 pub fn graphene_size_alloc() -> *mut graphene_size_t;
1263 pub fn graphene_size_equal(a: *const graphene_size_t, b: *const graphene_size_t) -> bool;
1264 pub fn graphene_size_free(s: *mut graphene_size_t);
1265 pub fn graphene_size_init(
1266 s: *mut graphene_size_t,
1267 width: c_float,
1268 height: c_float,
1269 ) -> *mut graphene_size_t;
1270 pub fn graphene_size_init_from_size(
1271 s: *mut graphene_size_t,
1272 src: *const graphene_size_t,
1273 ) -> *mut graphene_size_t;
1274 pub fn graphene_size_interpolate(
1275 a: *const graphene_size_t,
1276 b: *const graphene_size_t,
1277 factor: c_double,
1278 res: *mut graphene_size_t,
1279 );
1280 pub fn graphene_size_scale(
1281 s: *const graphene_size_t,
1282 factor: c_float,
1283 res: *mut graphene_size_t,
1284 );
1285 pub fn graphene_size_zero() -> *const graphene_size_t;
1286
1287 pub fn graphene_sphere_get_type() -> GType;
1291 pub fn graphene_sphere_alloc() -> *mut graphene_sphere_t;
1292 pub fn graphene_sphere_contains_point(
1293 s: *const graphene_sphere_t,
1294 point: *const graphene_point3d_t,
1295 ) -> bool;
1296 pub fn graphene_sphere_distance(
1297 s: *const graphene_sphere_t,
1298 point: *const graphene_point3d_t,
1299 ) -> c_float;
1300 pub fn graphene_sphere_equal(a: *const graphene_sphere_t, b: *const graphene_sphere_t) -> bool;
1301 pub fn graphene_sphere_free(s: *mut graphene_sphere_t);
1302 pub fn graphene_sphere_get_bounding_box(s: *const graphene_sphere_t, box_: *mut graphene_box_t);
1303 pub fn graphene_sphere_get_center(s: *const graphene_sphere_t, center: *mut graphene_point3d_t);
1304 pub fn graphene_sphere_get_radius(s: *const graphene_sphere_t) -> c_float;
1305 pub fn graphene_sphere_init(
1306 s: *mut graphene_sphere_t,
1307 center: *const graphene_point3d_t,
1308 radius: c_float,
1309 ) -> *mut graphene_sphere_t;
1310 pub fn graphene_sphere_init_from_points(
1311 s: *mut graphene_sphere_t,
1312 n_points: c_uint,
1313 points: *const graphene_point3d_t,
1314 center: *const graphene_point3d_t,
1315 ) -> *mut graphene_sphere_t;
1316 pub fn graphene_sphere_init_from_vectors(
1317 s: *mut graphene_sphere_t,
1318 n_vectors: c_uint,
1319 vectors: *const graphene_vec3_t,
1320 center: *const graphene_point3d_t,
1321 ) -> *mut graphene_sphere_t;
1322 pub fn graphene_sphere_is_empty(s: *const graphene_sphere_t) -> bool;
1323 pub fn graphene_sphere_translate(
1324 s: *const graphene_sphere_t,
1325 point: *const graphene_point3d_t,
1326 res: *mut graphene_sphere_t,
1327 );
1328
1329 pub fn graphene_triangle_get_type() -> GType;
1333 pub fn graphene_triangle_alloc() -> *mut graphene_triangle_t;
1334 pub fn graphene_triangle_contains_point(
1335 t: *const graphene_triangle_t,
1336 p: *const graphene_point3d_t,
1337 ) -> bool;
1338 pub fn graphene_triangle_equal(
1339 a: *const graphene_triangle_t,
1340 b: *const graphene_triangle_t,
1341 ) -> bool;
1342 pub fn graphene_triangle_free(t: *mut graphene_triangle_t);
1343 pub fn graphene_triangle_get_area(t: *const graphene_triangle_t) -> c_float;
1344 pub fn graphene_triangle_get_barycoords(
1345 t: *const graphene_triangle_t,
1346 p: *const graphene_point3d_t,
1347 res: *mut graphene_vec2_t,
1348 ) -> bool;
1349 pub fn graphene_triangle_get_bounding_box(
1350 t: *const graphene_triangle_t,
1351 res: *mut graphene_box_t,
1352 );
1353 pub fn graphene_triangle_get_midpoint(
1354 t: *const graphene_triangle_t,
1355 res: *mut graphene_point3d_t,
1356 );
1357 pub fn graphene_triangle_get_normal(t: *const graphene_triangle_t, res: *mut graphene_vec3_t);
1358 pub fn graphene_triangle_get_plane(t: *const graphene_triangle_t, res: *mut graphene_plane_t);
1359 pub fn graphene_triangle_get_points(
1360 t: *const graphene_triangle_t,
1361 a: *mut graphene_point3d_t,
1362 b: *mut graphene_point3d_t,
1363 c: *mut graphene_point3d_t,
1364 );
1365 pub fn graphene_triangle_get_uv(
1366 t: *const graphene_triangle_t,
1367 p: *const graphene_point3d_t,
1368 uv_a: *const graphene_vec2_t,
1369 uv_b: *const graphene_vec2_t,
1370 uv_c: *const graphene_vec2_t,
1371 res: *mut graphene_vec2_t,
1372 ) -> bool;
1373 pub fn graphene_triangle_get_vertices(
1374 t: *const graphene_triangle_t,
1375 a: *mut graphene_vec3_t,
1376 b: *mut graphene_vec3_t,
1377 c: *mut graphene_vec3_t,
1378 );
1379 pub fn graphene_triangle_init_from_float(
1380 t: *mut graphene_triangle_t,
1381 a: *const [c_float; 3],
1382 b: *const [c_float; 3],
1383 c: *const [c_float; 3],
1384 ) -> *mut graphene_triangle_t;
1385 pub fn graphene_triangle_init_from_point3d(
1386 t: *mut graphene_triangle_t,
1387 a: *const graphene_point3d_t,
1388 b: *const graphene_point3d_t,
1389 c: *const graphene_point3d_t,
1390 ) -> *mut graphene_triangle_t;
1391 pub fn graphene_triangle_init_from_vec3(
1392 t: *mut graphene_triangle_t,
1393 a: *const graphene_vec3_t,
1394 b: *const graphene_vec3_t,
1395 c: *const graphene_vec3_t,
1396 ) -> *mut graphene_triangle_t;
1397
1398 pub fn graphene_vec2_get_type() -> GType;
1402 pub fn graphene_vec2_alloc() -> *mut graphene_vec2_t;
1403 pub fn graphene_vec2_add(
1404 a: *const graphene_vec2_t,
1405 b: *const graphene_vec2_t,
1406 res: *mut graphene_vec2_t,
1407 );
1408 pub fn graphene_vec2_divide(
1409 a: *const graphene_vec2_t,
1410 b: *const graphene_vec2_t,
1411 res: *mut graphene_vec2_t,
1412 );
1413 pub fn graphene_vec2_dot(a: *const graphene_vec2_t, b: *const graphene_vec2_t) -> c_float;
1414 pub fn graphene_vec2_equal(v1: *const graphene_vec2_t, v2: *const graphene_vec2_t) -> bool;
1415 pub fn graphene_vec2_free(v: *mut graphene_vec2_t);
1416 pub fn graphene_vec2_get_x(v: *const graphene_vec2_t) -> c_float;
1417 pub fn graphene_vec2_get_y(v: *const graphene_vec2_t) -> c_float;
1418 pub fn graphene_vec2_init(
1419 v: *mut graphene_vec2_t,
1420 x: c_float,
1421 y: c_float,
1422 ) -> *mut graphene_vec2_t;
1423 pub fn graphene_vec2_init_from_float(
1424 v: *mut graphene_vec2_t,
1425 src: *const [c_float; 2],
1426 ) -> *mut graphene_vec2_t;
1427 pub fn graphene_vec2_init_from_vec2(
1428 v: *mut graphene_vec2_t,
1429 src: *const graphene_vec2_t,
1430 ) -> *mut graphene_vec2_t;
1431 pub fn graphene_vec2_interpolate(
1432 v1: *const graphene_vec2_t,
1433 v2: *const graphene_vec2_t,
1434 factor: c_double,
1435 res: *mut graphene_vec2_t,
1436 );
1437 pub fn graphene_vec2_length(v: *const graphene_vec2_t) -> c_float;
1438 pub fn graphene_vec2_max(
1439 a: *const graphene_vec2_t,
1440 b: *const graphene_vec2_t,
1441 res: *mut graphene_vec2_t,
1442 );
1443 pub fn graphene_vec2_min(
1444 a: *const graphene_vec2_t,
1445 b: *const graphene_vec2_t,
1446 res: *mut graphene_vec2_t,
1447 );
1448 pub fn graphene_vec2_multiply(
1449 a: *const graphene_vec2_t,
1450 b: *const graphene_vec2_t,
1451 res: *mut graphene_vec2_t,
1452 );
1453 pub fn graphene_vec2_near(
1454 v1: *const graphene_vec2_t,
1455 v2: *const graphene_vec2_t,
1456 epsilon: c_float,
1457 ) -> bool;
1458 pub fn graphene_vec2_negate(v: *const graphene_vec2_t, res: *mut graphene_vec2_t);
1459 pub fn graphene_vec2_normalize(v: *const graphene_vec2_t, res: *mut graphene_vec2_t);
1460 pub fn graphene_vec2_scale(
1461 v: *const graphene_vec2_t,
1462 factor: c_float,
1463 res: *mut graphene_vec2_t,
1464 );
1465 pub fn graphene_vec2_subtract(
1466 a: *const graphene_vec2_t,
1467 b: *const graphene_vec2_t,
1468 res: *mut graphene_vec2_t,
1469 );
1470 pub fn graphene_vec2_to_float(v: *const graphene_vec2_t, dest: *mut [c_float; 2]);
1471 pub fn graphene_vec2_one() -> *const graphene_vec2_t;
1472 pub fn graphene_vec2_x_axis() -> *const graphene_vec2_t;
1473 pub fn graphene_vec2_y_axis() -> *const graphene_vec2_t;
1474 pub fn graphene_vec2_zero() -> *const graphene_vec2_t;
1475
1476 pub fn graphene_vec3_get_type() -> GType;
1480 pub fn graphene_vec3_alloc() -> *mut graphene_vec3_t;
1481 pub fn graphene_vec3_add(
1482 a: *const graphene_vec3_t,
1483 b: *const graphene_vec3_t,
1484 res: *mut graphene_vec3_t,
1485 );
1486 pub fn graphene_vec3_cross(
1487 a: *const graphene_vec3_t,
1488 b: *const graphene_vec3_t,
1489 res: *mut graphene_vec3_t,
1490 );
1491 pub fn graphene_vec3_divide(
1492 a: *const graphene_vec3_t,
1493 b: *const graphene_vec3_t,
1494 res: *mut graphene_vec3_t,
1495 );
1496 pub fn graphene_vec3_dot(a: *const graphene_vec3_t, b: *const graphene_vec3_t) -> c_float;
1497 pub fn graphene_vec3_equal(v1: *const graphene_vec3_t, v2: *const graphene_vec3_t) -> bool;
1498 pub fn graphene_vec3_free(v: *mut graphene_vec3_t);
1499 pub fn graphene_vec3_get_x(v: *const graphene_vec3_t) -> c_float;
1500 pub fn graphene_vec3_get_xy(v: *const graphene_vec3_t, res: *mut graphene_vec2_t);
1501 pub fn graphene_vec3_get_xy0(v: *const graphene_vec3_t, res: *mut graphene_vec3_t);
1502 pub fn graphene_vec3_get_xyz0(v: *const graphene_vec3_t, res: *mut graphene_vec4_t);
1503 pub fn graphene_vec3_get_xyz1(v: *const graphene_vec3_t, res: *mut graphene_vec4_t);
1504 pub fn graphene_vec3_get_xyzw(v: *const graphene_vec3_t, w: c_float, res: *mut graphene_vec4_t);
1505 pub fn graphene_vec3_get_y(v: *const graphene_vec3_t) -> c_float;
1506 pub fn graphene_vec3_get_z(v: *const graphene_vec3_t) -> c_float;
1507 pub fn graphene_vec3_init(
1508 v: *mut graphene_vec3_t,
1509 x: c_float,
1510 y: c_float,
1511 z: c_float,
1512 ) -> *mut graphene_vec3_t;
1513 pub fn graphene_vec3_init_from_float(
1514 v: *mut graphene_vec3_t,
1515 src: *const [c_float; 3],
1516 ) -> *mut graphene_vec3_t;
1517 pub fn graphene_vec3_init_from_vec3(
1518 v: *mut graphene_vec3_t,
1519 src: *const graphene_vec3_t,
1520 ) -> *mut graphene_vec3_t;
1521 pub fn graphene_vec3_interpolate(
1522 v1: *const graphene_vec3_t,
1523 v2: *const graphene_vec3_t,
1524 factor: c_double,
1525 res: *mut graphene_vec3_t,
1526 );
1527 pub fn graphene_vec3_length(v: *const graphene_vec3_t) -> c_float;
1528 pub fn graphene_vec3_max(
1529 a: *const graphene_vec3_t,
1530 b: *const graphene_vec3_t,
1531 res: *mut graphene_vec3_t,
1532 );
1533 pub fn graphene_vec3_min(
1534 a: *const graphene_vec3_t,
1535 b: *const graphene_vec3_t,
1536 res: *mut graphene_vec3_t,
1537 );
1538 pub fn graphene_vec3_multiply(
1539 a: *const graphene_vec3_t,
1540 b: *const graphene_vec3_t,
1541 res: *mut graphene_vec3_t,
1542 );
1543 pub fn graphene_vec3_near(
1544 v1: *const graphene_vec3_t,
1545 v2: *const graphene_vec3_t,
1546 epsilon: c_float,
1547 ) -> bool;
1548 pub fn graphene_vec3_negate(v: *const graphene_vec3_t, res: *mut graphene_vec3_t);
1549 pub fn graphene_vec3_normalize(v: *const graphene_vec3_t, res: *mut graphene_vec3_t);
1550 pub fn graphene_vec3_scale(
1551 v: *const graphene_vec3_t,
1552 factor: c_float,
1553 res: *mut graphene_vec3_t,
1554 );
1555 pub fn graphene_vec3_subtract(
1556 a: *const graphene_vec3_t,
1557 b: *const graphene_vec3_t,
1558 res: *mut graphene_vec3_t,
1559 );
1560 pub fn graphene_vec3_to_float(v: *const graphene_vec3_t, dest: *mut [c_float; 3]);
1561 pub fn graphene_vec3_one() -> *const graphene_vec3_t;
1562 pub fn graphene_vec3_x_axis() -> *const graphene_vec3_t;
1563 pub fn graphene_vec3_y_axis() -> *const graphene_vec3_t;
1564 pub fn graphene_vec3_z_axis() -> *const graphene_vec3_t;
1565 pub fn graphene_vec3_zero() -> *const graphene_vec3_t;
1566
1567 pub fn graphene_vec4_get_type() -> GType;
1571 pub fn graphene_vec4_alloc() -> *mut graphene_vec4_t;
1572 pub fn graphene_vec4_add(
1573 a: *const graphene_vec4_t,
1574 b: *const graphene_vec4_t,
1575 res: *mut graphene_vec4_t,
1576 );
1577 pub fn graphene_vec4_divide(
1578 a: *const graphene_vec4_t,
1579 b: *const graphene_vec4_t,
1580 res: *mut graphene_vec4_t,
1581 );
1582 pub fn graphene_vec4_dot(a: *const graphene_vec4_t, b: *const graphene_vec4_t) -> c_float;
1583 pub fn graphene_vec4_equal(v1: *const graphene_vec4_t, v2: *const graphene_vec4_t) -> bool;
1584 pub fn graphene_vec4_free(v: *mut graphene_vec4_t);
1585 pub fn graphene_vec4_get_w(v: *const graphene_vec4_t) -> c_float;
1586 pub fn graphene_vec4_get_x(v: *const graphene_vec4_t) -> c_float;
1587 pub fn graphene_vec4_get_xy(v: *const graphene_vec4_t, res: *mut graphene_vec2_t);
1588 pub fn graphene_vec4_get_xyz(v: *const graphene_vec4_t, res: *mut graphene_vec3_t);
1589 pub fn graphene_vec4_get_y(v: *const graphene_vec4_t) -> c_float;
1590 pub fn graphene_vec4_get_z(v: *const graphene_vec4_t) -> c_float;
1591 pub fn graphene_vec4_init(
1592 v: *mut graphene_vec4_t,
1593 x: c_float,
1594 y: c_float,
1595 z: c_float,
1596 w: c_float,
1597 ) -> *mut graphene_vec4_t;
1598 pub fn graphene_vec4_init_from_float(
1599 v: *mut graphene_vec4_t,
1600 src: *const [c_float; 4],
1601 ) -> *mut graphene_vec4_t;
1602 pub fn graphene_vec4_init_from_vec2(
1603 v: *mut graphene_vec4_t,
1604 src: *const graphene_vec2_t,
1605 z: c_float,
1606 w: c_float,
1607 ) -> *mut graphene_vec4_t;
1608 pub fn graphene_vec4_init_from_vec3(
1609 v: *mut graphene_vec4_t,
1610 src: *const graphene_vec3_t,
1611 w: c_float,
1612 ) -> *mut graphene_vec4_t;
1613 pub fn graphene_vec4_init_from_vec4(
1614 v: *mut graphene_vec4_t,
1615 src: *const graphene_vec4_t,
1616 ) -> *mut graphene_vec4_t;
1617 pub fn graphene_vec4_interpolate(
1618 v1: *const graphene_vec4_t,
1619 v2: *const graphene_vec4_t,
1620 factor: c_double,
1621 res: *mut graphene_vec4_t,
1622 );
1623 pub fn graphene_vec4_length(v: *const graphene_vec4_t) -> c_float;
1624 pub fn graphene_vec4_max(
1625 a: *const graphene_vec4_t,
1626 b: *const graphene_vec4_t,
1627 res: *mut graphene_vec4_t,
1628 );
1629 pub fn graphene_vec4_min(
1630 a: *const graphene_vec4_t,
1631 b: *const graphene_vec4_t,
1632 res: *mut graphene_vec4_t,
1633 );
1634 pub fn graphene_vec4_multiply(
1635 a: *const graphene_vec4_t,
1636 b: *const graphene_vec4_t,
1637 res: *mut graphene_vec4_t,
1638 );
1639 pub fn graphene_vec4_near(
1640 v1: *const graphene_vec4_t,
1641 v2: *const graphene_vec4_t,
1642 epsilon: c_float,
1643 ) -> bool;
1644 pub fn graphene_vec4_negate(v: *const graphene_vec4_t, res: *mut graphene_vec4_t);
1645 pub fn graphene_vec4_normalize(v: *const graphene_vec4_t, res: *mut graphene_vec4_t);
1646 pub fn graphene_vec4_scale(
1647 v: *const graphene_vec4_t,
1648 factor: c_float,
1649 res: *mut graphene_vec4_t,
1650 );
1651 pub fn graphene_vec4_subtract(
1652 a: *const graphene_vec4_t,
1653 b: *const graphene_vec4_t,
1654 res: *mut graphene_vec4_t,
1655 );
1656 pub fn graphene_vec4_to_float(v: *const graphene_vec4_t, dest: *mut [c_float; 4]);
1657 pub fn graphene_vec4_one() -> *const graphene_vec4_t;
1658 pub fn graphene_vec4_w_axis() -> *const graphene_vec4_t;
1659 pub fn graphene_vec4_x_axis() -> *const graphene_vec4_t;
1660 pub fn graphene_vec4_y_axis() -> *const graphene_vec4_t;
1661 pub fn graphene_vec4_z_axis() -> *const graphene_vec4_t;
1662 pub fn graphene_vec4_zero() -> *const graphene_vec4_t;
1663
1664}