diff options
author | 2020-10-28 02:36:49 +0100 | |
---|---|---|
committer | 2020-10-28 15:33:38 +0100 | |
commit | 9090fa6a22afcc41d191ad35947ab312bf95918e (patch) | |
tree | 373f01af81558ccd5d3d9facb5dc5672f5fa444b /core | |
parent | d3b04bf892ce63d3129686968039c258945c5b02 (diff) | |
download | iced-9090fa6a22afcc41d191ad35947ab312bf95918e.tar.gz iced-9090fa6a22afcc41d191ad35947ab312bf95918e.tar.bz2 iced-9090fa6a22afcc41d191ad35947ab312bf95918e.zip |
Add conversion functions to Size and Vector
Diffstat (limited to 'core')
-rw-r--r-- | core/src/size.rs | 10 | ||||
-rw-r--r-- | core/src/vector.rs | 23 |
2 files changed, 33 insertions, 0 deletions
diff --git a/core/src/size.rs b/core/src/size.rs index 7c481935..060f8fa5 100644 --- a/core/src/size.rs +++ b/core/src/size.rs @@ -1,3 +1,4 @@ +use super::vector::Vector; use std::f32; /// An amount of space in 2 dimensions. @@ -57,6 +58,15 @@ impl From<[u16; 2]> for Size { } } +impl From<Vector<f32>> for Size { + fn from(vector: Vector<f32>) -> Self { + Size { + width: vector.x, + height: vector.y, + } + } +} + impl From<Size> for [f32; 2] { fn from(size: Size) -> [f32; 2] { [size.width, size.height] diff --git a/core/src/vector.rs b/core/src/vector.rs index def3f8c0..fd00b5ba 100644 --- a/core/src/vector.rs +++ b/core/src/vector.rs @@ -1,3 +1,5 @@ +use super::size::Size; + /// A 2D vector. #[derive(Debug, Clone, Copy, PartialEq)] pub struct Vector<T = f32> { @@ -65,3 +67,24 @@ where } } } + +impl<T> From<[T; 2]> for Vector<T> { + fn from([x, y]: [T; 2]) -> Self { + Self::new(x, y) + } +} + +impl<T> From<Vector<T>> for [T; 2] +where + T: Copy, +{ + fn from(other: Vector<T>) -> Self { + [other.x, other.y] + } +} + +impl From<Size> for Vector<f32> { + fn from(size: Size) -> Self { + Vector::new(size.width, size.height) + } +} |