1 use crate::alt::BGR;
2 use crate::alt::BGRA;
3 use crate::RGB;
4 use crate::RGBA;
5 use core::convert::*;
6 
7 impl<T> From<(T,T,T)> for RGB<T> {
8     #[inline]
from(other: (T,T,T)) -> Self9     fn from(other: (T,T,T)) -> Self {
10         Self {
11             r: other.0,
12             g: other.1,
13             b: other.2,
14         }
15     }
16 }
17 
18 impl<T> Into<(T,T,T)> for RGB<T> {
19     #[inline]
into(self) -> (T,T,T)20     fn into(self) -> (T,T,T) {
21         (self.r, self.g, self.b)
22     }
23 }
24 
25 impl<T,A> From<(T,T,T,A)> for RGBA<T,A> {
26     #[inline]
from(other: (T,T,T,A)) -> Self27     fn from(other: (T,T,T,A)) -> Self {
28         Self {
29             r: other.0,
30             g: other.1,
31             b: other.2,
32             a: other.3,
33         }
34     }
35 }
36 
37 impl<T,A> Into<(T,T,T,A)> for RGBA<T,A> {
38     #[inline]
into(self) -> (T,T,T,A)39     fn into(self) -> (T,T,T,A) {
40         (self.r, self.g, self.b, self.a)
41     }
42 }
43 
44 impl<T> From<(T,T,T)> for BGR<T> {
45     #[inline(always)]
from(other: (T,T,T)) -> Self46     fn from(other: (T,T,T)) -> Self {
47         Self {
48             b: other.0,
49             g: other.1,
50             r: other.2,
51         }
52     }
53 }
54 
55 impl<T> Into<(T,T,T)> for BGR<T> {
56     #[inline(always)]
into(self) -> (T,T,T)57     fn into(self) -> (T,T,T) {
58         (self.b, self.g, self.r)
59     }
60 }
61 
62 impl<T,A> From<(T,T,T,A)> for BGRA<T,A> {
63     #[inline(always)]
from(other: (T,T,T,A)) -> Self64     fn from(other: (T,T,T,A)) -> Self {
65         Self {
66             b: other.0,
67             g: other.1,
68             r: other.2,
69             a: other.3,
70         }
71     }
72 }
73 
74 impl<T,A> Into<(T,T,T,A)> for BGRA<T,A> {
75     #[inline(always)]
into(self) -> (T,T,T,A)76     fn into(self) -> (T,T,T,A) {
77         (self.b, self.g, self.r, self.a)
78     }
79 }
80 
81 #[test]
converts()82 fn converts() {
83     assert_eq!((1,2,3), RGB {r:1u8,g:2,b:3}.into());
84     assert_eq!(RGB {r:1u8,g:2,b:3}, (1,2,3).into());
85     assert_eq!((1,2,3,4), RGBA {r:1,g:2,b:3,a:4}.into());
86     assert_eq!(RGBA {r:1u8,g:2,b:3,a:4}, (1,2,3,4).into());
87     assert_eq!(BGRA {r:1u8,g:2,b:3,a:4}, (3,2,1,4).into());
88     assert_eq!(BGR {r:1u8,g:2,b:3}, (3,2,1).into());
89 }
90