grafix_toolbox/kit/policies/math/
tuple.rs1pub use {apply::*, math::*, swizzle::s::*};
2
3pub trait TupleAllAny {
4 fn all(&self) -> bool;
5 fn any(&self) -> bool;
6}
7pub trait TupleIdentity: Default + Copy {
8 fn one() -> Self;
9 #[inline(always)]
10 fn zero() -> Self {
11 Self::default()
12 }
13}
14
15impl TupleAllAny for (bool, bool) {
16 #[inline(always)]
17 fn all(&self) -> bool {
18 self.0 && self.1
19 }
20 #[inline(always)]
21 fn any(&self) -> bool {
22 self.0 || self.1
23 }
24}
25impl TupleAllAny for (bool, bool, bool) {
26 #[inline(always)]
27 fn all(&self) -> bool {
28 self.0 && self.1 && self.2
29 }
30 #[inline(always)]
31 fn any(&self) -> bool {
32 self.0 || self.1 || self.2
33 }
34}
35impl TupleAllAny for (bool, bool, bool, bool) {
36 #[inline(always)]
37 fn all(&self) -> bool {
38 self.0 && self.1 && self.2 && self.3
39 }
40 #[inline(always)]
41 fn any(&self) -> bool {
42 self.0 || self.1 || self.2 || self.3
43 }
44}
45
46impl<T: ToZero> TupleIdentity for vec2<T> {
47 #[inline(always)]
48 fn one() -> Self {
49 Self::to(1)
50 }
51}
52impl<T: ToZero> TupleIdentity for vec3<T> {
53 #[inline(always)]
54 fn one() -> Self {
55 Self::to(1)
56 }
57}
58impl<T: ToZero> TupleIdentity for vec4<T> {
59 #[inline(always)]
60 fn one() -> Self {
61 Self::to(1)
62 }
63}
64impl<T: ToZero, const N: usize> TupleIdentity for [T; N]
65where
66 Self: Default,
67{
68 #[inline(always)]
69 fn one() -> Self {
70 [T::to(1); N]
71 }
72}
73
74trait_alias!(ToZero, Cast<u32> + Default + Copy);
75
76mod apply;
77mod math;
78mod swizzle;
79
80use super::pre::*;