Struct embedded_graphics_core::geometry::Size
source · pub struct Size {
pub width: u32,
pub height: u32,
}
Expand description
2D size.
Size
is used to define the width and height of an object.
Nalgebra support can be enabled with the nalgebra_support
feature. This implements
From<Vector2<N>>
and From<&Vector2<N>>
where N
is Scalar + Into<u32>
. This allows use
of Nalgebra’s Vector2
with embedded-graphics where u32
, u16
or u8
is used for value
storage.
Examples
Create a Size
from two integers
use embedded_graphics::geometry::Size;
// Create a size using the `new` constructor method
let s = Size::new(10, 20);
Create a Size
from a Nalgebra Vector2
Be sure to enable the nalgebra_support
feature to get Nalgebra integration.
Any Vector2<N>
can be used where N: Into<u32> + nalgebra::Scalar
. This includes the primitive types u32
, u16
and u8
.
use embedded_graphics::geometry::Size;
use nalgebra::Vector2;
assert_eq!(Size::from(Vector2::new(10u32, 20)), Size::new(10u32, 20));
assert_eq!(Size::from(Vector2::new(10u16, 20)), Size::new(10u32, 20));
assert_eq!(Size::from(Vector2::new(10u8, 20)), Size::new(10u32, 20));
.into()
can also be used, but may require more type annotations:
use embedded_graphics::geometry::Size;
use nalgebra::Vector2;
let c: Size = Vector2::new(10u32, 20).into();
assert_eq!(c, Size::new(10u32, 20));
Fields§
§width: u32
The width.
height: u32
The height.
Implementations§
source§impl Size
impl Size
sourcepub const fn new_equal(value: u32) -> Self
pub const fn new_equal(value: u32) -> Self
Creates a size with width and height set to an equal value.
use embedded_graphics::geometry::Size;
let size = Size::new_equal(11);
assert_eq!(
size,
Size {
width: 11,
height: 11
}
);
sourcepub const fn x_axis(self) -> Self
pub const fn x_axis(self) -> Self
Returns a size with equal width
value and height
set to 0
.
Examples
Move a Point
along the X axis.
use embedded_graphics::geometry::{Point, Size};
let size = Size::new(20, 30);
let point = Point::new(10, 15);
let moved_x = point + size.x_axis();
assert_eq!(moved_x, Point::new(30, 15));
sourcepub const fn y_axis(self) -> Self
pub const fn y_axis(self) -> Self
Returns a size with equal height
value and width
set to 0
.
Examples
Move a Point
along the Y axis.
use embedded_graphics::geometry::{Point, Size};
let size = Size::new(20, 30);
let point = Point::new(10, 15);
let moved_y = point + size.y_axis();
assert_eq!(moved_y, Point::new(10, 45));
sourcepub const fn saturating_add(self, other: Self) -> Self
pub const fn saturating_add(self, other: Self) -> Self
Saturating addition.
Returns u32::max_value()
for width
and/or height
instead of overflowing.
sourcepub const fn saturating_sub(self, other: Self) -> Self
pub const fn saturating_sub(self, other: Self) -> Self
Saturating subtraction.
Returns 0
for width
and/or height
instead of overflowing, if the
value in other
is larger then in self
.
sourcepub fn component_min(self, other: Self) -> Self
pub fn component_min(self, other: Self) -> Self
Returns the componentwise minimum of two Size
s.
use embedded_graphics::geometry::Size;
let min = Size::new(20, 30).component_min(Size::new(15, 50));
assert_eq!(min, Size::new(15, 30));
sourcepub fn component_max(self, other: Self) -> Self
pub fn component_max(self, other: Self) -> Self
Returns the componentwise maximum of two Size
s.
use embedded_graphics::geometry::Size;
let min = Size::new(20, 30).component_max(Size::new(15, 50));
assert_eq!(min, Size::new(20, 50));
sourcepub const fn component_mul(self, other: Self) -> Self
pub const fn component_mul(self, other: Self) -> Self
Returns the componentwise multiplication of two Size
s.
use embedded_graphics::geometry::Size;
let result = Size::new(20, 30).component_mul(Size::new(2, 3));
assert_eq!(result, Size::new(40, 90));
sourcepub const fn component_div(self, other: Self) -> Self
pub const fn component_div(self, other: Self) -> Self
Returns the componentwise division of two Size
s.
Panics
Panics if one of the components of other
equals zero.
use embedded_graphics::geometry::Size;
let result = Size::new(20, 30).component_div(Size::new(5, 10));
assert_eq!(result, Size::new(4, 3));
Trait Implementations§
source§impl AddAssign<Size> for Point
impl AddAssign<Size> for Point
source§fn add_assign(&mut self, other: Size)
fn add_assign(&mut self, other: Size)
Offsets a point by adding a size.
Panics
This function will panic if width
or height
are too large to be represented as an i32
and debug assertions are enabled.
source§impl AddAssign<Size> for Size
impl AddAssign<Size> for Size
source§fn add_assign(&mut self, other: Size)
fn add_assign(&mut self, other: Size)
+=
operation. Read moresource§impl DivAssign<u32> for Size
impl DivAssign<u32> for Size
source§fn div_assign(&mut self, rhs: u32)
fn div_assign(&mut self, rhs: u32)
/=
operation. Read moresource§impl<N> From<&Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> for Sizewhere
N: Into<u32> + Scalar + Copy,
impl<N> From<&Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> for Sizewhere N: Into<u32> + Scalar + Copy,
source§impl<N> From<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> for Sizewhere
N: Into<u32> + Scalar + Copy,
impl<N> From<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> for Sizewhere N: Into<u32> + Scalar + Copy,
source§impl MulAssign<u32> for Size
impl MulAssign<u32> for Size
source§fn mul_assign(&mut self, rhs: u32)
fn mul_assign(&mut self, rhs: u32)
*=
operation. Read moresource§impl Ord for Size
impl Ord for Size
source§impl PartialEq<Size> for Size
impl PartialEq<Size> for Size
source§impl PartialOrd<Size> for Size
impl PartialOrd<Size> for Size
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl SubAssign<Size> for Point
impl SubAssign<Size> for Point
source§fn sub_assign(&mut self, other: Size)
fn sub_assign(&mut self, other: Size)
Offsets a point by subtracting a size.
Panics
This function will panic if width
or height
are too large to be represented as an i32
and debug assertions are enabled.
source§impl SubAssign<Size> for Size
impl SubAssign<Size> for Size
source§fn sub_assign(&mut self, other: Size)
fn sub_assign(&mut self, other: Size)
-=
operation. Read moreimpl Copy for Size
impl Eq for Size
impl StructuralEq for Size
impl StructuralPartialEq for Size
Auto Trait Implementations§
impl RefUnwindSafe for Size
impl Send for Size
impl Sync for Size
impl Unpin for Size
impl UnwindSafe for Size
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where T: OverflowingCast<Dst>,
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere T: SaturatingCast<Dst>,
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.