peridot_math/linarg/
bedrock_interop.rs1use super::*;
4use bedrock as br;
5
6impl<T: Into<u32> + Copy> br::ImageSize for Vector2<T> {
7 const DIMENSION: br::vk::VkImageType = br::vk::VK_IMAGE_TYPE_2D;
8
9 #[inline(always)]
10 fn conv(self) -> br::vk::VkExtent3D {
11 br::vk::VkExtent2D::from(self).with_depth(1)
12 }
13}
14impl<T: Into<u32> + Copy> br::ImageSize for Vector3<T> {
15 const DIMENSION: br::vk::VkImageType = br::vk::VK_IMAGE_TYPE_3D;
16
17 #[inline(always)]
18 fn conv(self) -> br::vk::VkExtent3D {
19 br::vk::VkExtent3D::from(self)
20 }
21}
22
23impl<T: Into<u32>> From<Vector2<T>> for br::vk::VkExtent2D {
24 #[inline(always)]
25 fn from(v: Vector2<T>) -> Self {
26 Self {
27 width: v.0.into(),
28 height: v.1.into(),
29 }
30 }
31}
32impl<T: Into<u32> + Copy> From<&'_ Vector2<T>> for br::vk::VkExtent2D {
33 #[inline(always)]
34 fn from(v: &Vector2<T>) -> Self {
35 Self {
36 width: v.0.into(),
37 height: v.1.into(),
38 }
39 }
40}
41impl<T> From<br::vk::VkExtent2D> for Vector2<T>
42where
43 u32: Into<T>,
44{
45 #[inline(always)]
46 fn from(value: br::vk::VkExtent2D) -> Self {
47 Self(value.width.into(), value.height.into())
48 }
49}
50impl<T: Into<u32>> From<Vector3<T>> for br::vk::VkExtent3D {
51 #[inline(always)]
52 fn from(v: Vector3<T>) -> Self {
53 Self {
54 width: v.0.into(),
55 height: v.1.into(),
56 depth: v.2.into(),
57 }
58 }
59}
60impl<T: Into<u32> + Copy> From<&'_ Vector3<T>> for br::vk::VkExtent3D {
61 #[inline(always)]
62 fn from(v: &Vector3<T>) -> Self {
63 Self {
64 width: v.0.into(),
65 height: v.1.into(),
66 depth: v.2.into(),
67 }
68 }
69}
70impl<T> From<br::vk::VkExtent3D> for Vector3<T>
71where
72 u32: Into<T>,
73{
74 #[inline(always)]
75 fn from(value: br::vk::VkExtent3D) -> Self {
76 Self(value.width.into(), value.height.into(), value.depth.into())
77 }
78}
79
80impl<T: Into<i32>> From<Vector2<T>> for br::vk::VkOffset2D {
81 #[inline(always)]
82 fn from(v: Vector2<T>) -> Self {
83 Self {
84 x: v.0.into(),
85 y: v.1.into(),
86 }
87 }
88}
89impl<T: Into<i32> + Copy> From<&'_ Vector2<T>> for br::vk::VkOffset2D {
90 #[inline(always)]
91 fn from(v: &Vector2<T>) -> Self {
92 Self {
93 x: v.0.into(),
94 y: v.1.into(),
95 }
96 }
97}
98impl<T> From<br::vk::VkOffset2D> for Vector2<T>
99where
100 i32: Into<T>,
101{
102 #[inline(always)]
103 fn from(value: br::vk::VkOffset2D) -> Self {
104 Self(value.x.into(), value.y.into())
105 }
106}
107impl<T: Into<i32>> From<Vector3<T>> for br::vk::VkOffset3D {
108 #[inline(always)]
109 fn from(v: Vector3<T>) -> Self {
110 Self {
111 x: v.0.into(),
112 y: v.1.into(),
113 z: v.2.into(),
114 }
115 }
116}
117impl<T: Into<i32> + Copy> From<&'_ Vector3<T>> for br::vk::VkOffset3D {
118 #[inline(always)]
119 fn from(v: &Vector3<T>) -> Self {
120 Self {
121 x: v.0.into(),
122 y: v.1.into(),
123 z: v.2.into(),
124 }
125 }
126}
127impl<T> From<br::vk::VkOffset3D> for Vector3<T>
128where
129 i32: Into<T>,
130{
131 #[inline(always)]
132 fn from(value: br::vk::VkOffset3D) -> Self {
133 Self(value.x.into(), value.y.into(), value.z.into())
134 }
135}