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