Struct embedded_graphics_core::geometry::Point
source · pub struct Point {
pub x: i32,
pub y: i32,
}
Expand description
2D point.
A point can be used to define the position of a graphics object. For example, a Rectangle
may be defined that has its top left corner at (-1, -2)
. To specify the size of an object
Size
should be used instead.
Nalgebra support can be enabled with the nalgebra_support
feature. This implements
From<Vector2<N>>
and From<&Vector2<N>>
where N
is Scalar + Into<i32>
. This allows use
of Nalgebra’s Vector2
with embedded-graphics where i8
, i16
, i32
, u16
or u8
is used
for value storage.
Examples
Create a Point
from two integers
use embedded_graphics::geometry::Point;
// Create a coord using the `new` constructor method
let p = Point::new(10, 20);
Create a Point
from a Nalgebra Vector2
Be sure to enable the nalgebra_support
feature to get Nalgebra integration.
use embedded_graphics::geometry::Point;
use nalgebra::Vector2;
let n_coord = Vector2::new(10i32, 20);
assert_eq!(Point::from(n_coord), Point::new(10, 20));
Convert a Vector2<u8>
into a Point
Be sure to enable the nalgebra_support
feature to get Nalgebra integration.
Smaller unsigned types that can be converted to i32
are also supported in conversions.
use embedded_graphics::geometry::Point;
use nalgebra::Vector2;
let n_coord = Vector2::new(10u8, 20);
assert_eq!(Point::from(n_coord), Point::new(10, 20));
Fields§
§x: i32
The x coordinate.
y: i32
The y coordinate.
Implementations§
source§impl Point
impl Point
sourcepub const fn new_equal(value: i32) -> Self
pub const fn new_equal(value: i32) -> Self
Creates a point with X and Y values set to an equal value.
Examples
use embedded_graphics::geometry::Point;
let point = Point::new_equal(11);
assert_eq!(point, Point { x: 11, y: 11 });
sourcepub const fn x_axis(self) -> Self
pub const fn x_axis(self) -> Self
Returns a point with equal x
value and y
set to 0
.
Examples
Move a Point
along the X axis.
use embedded_graphics::geometry::Point;
let translate = Point::new(20, 30);
let point = Point::new(10, 15);
let moved_x = point + translate.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 point with equal y
value and x
set to 0
.
Examples
Move a Point
along the Y axis.
use embedded_graphics::geometry::Point;
let translate = Point::new(20, 30);
let point = Point::new(10, 15);
let moved_y = point + translate.y_axis();
assert_eq!(moved_y, Point::new(10, 45));
sourcepub const fn abs(self) -> Self
pub const fn abs(self) -> Self
Remove the sign from a coordinate
Examples
let point = Point::new(-5, -10);
assert_eq!(point.abs(), Point::new(5, 10));
sourcepub fn component_min(self, other: Self) -> Self
pub fn component_min(self, other: Self) -> Self
Returns the componentwise minimum of two Point
s
Examples
use embedded_graphics::geometry::Point;
let min = Point::new(20, 30).component_min(Point::new(15, 50));
assert_eq!(min, Point::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 Point
s
Examples
use embedded_graphics::geometry::Point;
let min = Point::new(20, 30).component_max(Point::new(15, 50));
assert_eq!(min, Point::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 Point
s.
use embedded_graphics::geometry::Point;
let result = Point::new(20, 30).component_mul(Point::new(-2, 3));
assert_eq!(result, Point::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 Points
s.
Panics
Panics if one of the components of other
equals zero.
use embedded_graphics::geometry::Point;
let result = Point::new(20, 30).component_div(Point::new(10, -3));
assert_eq!(result, Point::new(2, -10));
Trait Implementations§
source§impl AddAssign<Point> for Point
impl AddAssign<Point> for Point
source§fn add_assign(&mut self, other: Point)
fn add_assign(&mut self, other: Point)
+=
operation. Read moresource§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 DivAssign<i32> for Point
impl DivAssign<i32> for Point
source§fn div_assign(&mut self, rhs: i32)
fn div_assign(&mut self, rhs: i32)
/=
operation. Read moresource§impl<N> From<&Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> for Pointwhere
N: Into<i32> + Scalar + Copy,
impl<N> From<&Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> for Pointwhere N: Into<i32> + Scalar + Copy,
source§impl<N> From<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> for Pointwhere
N: Into<i32> + Scalar + Copy,
impl<N> From<Matrix<N, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<N, 2, 1>>> for Pointwhere N: Into<i32> + Scalar + Copy,
source§impl MulAssign<i32> for Point
impl MulAssign<i32> for Point
source§fn mul_assign(&mut self, rhs: i32)
fn mul_assign(&mut self, rhs: i32)
*=
operation. Read moresource§impl Ord for Point
impl Ord for Point
source§impl PartialEq<Point> for Point
impl PartialEq<Point> for Point
source§impl PartialOrd<Point> for Point
impl PartialOrd<Point> for Point
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<Point> for Point
impl SubAssign<Point> for Point
source§fn sub_assign(&mut self, other: Point)
fn sub_assign(&mut self, other: Point)
-=
operation. 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.
impl Copy for Point
impl Eq for Point
impl StructuralEq for Point
impl StructuralPartialEq for Point
Auto Trait Implementations§
impl RefUnwindSafe for Point
impl Send for Point
impl Sync for Point
impl Unpin for Point
impl UnwindSafe for Point
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.