Struct Rect
#[repr(C)]pub struct Rect<T, U> {
pub origin: Point2D<T, U>,
pub size: Size2D<T, U>,
}geometry only.Expand description
A 2d Rectangle optionally tagged with a unit.
§Representation
Rect is represented by an origin point and a size.
See Box2D for a rectangle represented by two endpoints.
§Empty rectangle
A rectangle is considered empty (see is_empty) if any of the following is true:
- it’s area is empty,
- it’s area is negative (
size.x < 0orsize.y < 0), - it contains NaNs.
Fields§
§origin: Point2D<T, U>§size: Size2D<T, U>Implementations§
§impl<T, U> Rect<T, U>
impl<T, U> Rect<T, U>
pub fn min(&self) -> Point2D<T, U>
canvas only.pub fn max(&self) -> Point2D<T, U>
canvas only.pub fn max_x(&self) -> T
canvas only.pub fn min_x(&self) -> T
canvas only.pub fn max_y(&self) -> T
canvas only.pub fn min_y(&self) -> T
canvas only.pub fn width(&self) -> T
canvas only.pub fn height(&self) -> T
canvas only.pub fn x_range(&self) -> Range<T>
canvas only.pub fn y_range(&self) -> Range<T>
canvas only.pub fn translate(&self, by: Vector2D<T, U>) -> Rect<T, U>
Available on crate feature canvas only.
pub fn translate(&self, by: Vector2D<T, U>) -> Rect<T, U>
canvas only.Returns the same rectangle, translated by a vector.
pub fn to_box2d(&self) -> Box2D<T, U>
canvas only.§impl<T, U> Rect<T, U>
impl<T, U> Rect<T, U>
pub fn contains(&self, p: Point2D<T, U>) -> bool
Available on crate feature canvas only.
pub fn contains(&self, p: Point2D<T, U>) -> bool
canvas only.Returns true if this rectangle contains the point. Points are considered
in the rectangle if they are on the left or top edge, but outside if they
are on the right or bottom edge.
pub fn intersects(&self, other: &Rect<T, U>) -> bool
canvas only.§impl<T, U> Rect<T, U>
impl<T, U> Rect<T, U>
pub fn intersection(&self, other: &Rect<T, U>) -> Option<Rect<T, U>>
canvas only.§impl<T, U> Rect<T, U>
impl<T, U> Rect<T, U>
pub fn contains_rect(&self, rect: &Rect<T, U>) -> bool
Available on crate feature canvas only.
pub fn contains_rect(&self, rect: &Rect<T, U>) -> bool
canvas only.Returns true if this rectangle contains the interior of rect. Always
returns true if rect is empty, and always returns false if rect is
nonempty but this rectangle is empty.
§impl<T, U> Rect<T, U>
impl<T, U> Rect<T, U>
pub fn inner_rect(&self, offsets: SideOffsets2D<T, U>) -> Rect<T, U>
Available on crate feature canvas only.
pub fn inner_rect(&self, offsets: SideOffsets2D<T, U>) -> Rect<T, U>
canvas only.Calculate the size and position of an inner rectangle.
Subtracts the side offsets from all sides. The horizontal and vertical offsets must not be larger than the original side length. This method assumes y oriented downward.
§impl<T, U> Rect<T, U>
impl<T, U> Rect<T, U>
pub fn outer_rect(&self, offsets: SideOffsets2D<T, U>) -> Rect<T, U>
Available on crate feature canvas only.
pub fn outer_rect(&self, offsets: SideOffsets2D<T, U>) -> Rect<T, U>
canvas only.Calculate the size and position of an outer rectangle.
Add the offsets to all sides. The expanded rectangle is returned. This method assumes y oriented downward.
§impl<T, U> Rect<T, U>
impl<T, U> Rect<T, U>
pub fn from_points<I>(points: I) -> Rect<T, U>
Available on crate feature canvas only.
pub fn from_points<I>(points: I) -> Rect<T, U>
canvas only.Returns the smallest rectangle defined by the top/bottom/left/right-most points provided as parameter.
Note: This function has a behavior that can be surprising because
the right-most and bottom-most points are exactly on the edge
of the rectangle while the Rect::contains function is has exclusive
semantic on these edges. This means that the right-most and bottom-most
points provided to Rect::from_points will count as not contained by the rect.
This behavior may change in the future.
See Box2D::from_points for more details.
§impl<T, U> Rect<T, U>
impl<T, U> Rect<T, U>
pub fn to_non_empty(&self) -> Option<Rect<T, U>>
canvas only.§impl<T, U> Rect<T, U>where
T: Copy,
impl<T, U> Rect<T, U>where
T: Copy,
pub fn to_untyped(&self) -> Rect<T, UnknownUnit>
Available on crate feature canvas only.
pub fn to_untyped(&self) -> Rect<T, UnknownUnit>
canvas only.Drop the units, preserving only the numeric value.
pub fn from_untyped(r: &Rect<T, UnknownUnit>) -> Rect<T, U>
Available on crate feature canvas only.
pub fn from_untyped(r: &Rect<T, UnknownUnit>) -> Rect<T, U>
canvas only.Tag a unitless value with units.
§impl<T, U> Rect<T, U>
impl<T, U> Rect<T, U>
pub fn cast<NewT>(&self) -> Rect<NewT, U>where
NewT: NumCast,
Available on crate feature canvas only.
pub fn cast<NewT>(&self) -> Rect<NewT, U>where
NewT: NumCast,
canvas only.Cast from one numeric representation to another, preserving the units.
When casting from floating point to integer coordinates, the decimals are truncated
as one would expect from a simple cast, but this behavior does not always make sense
geometrically. Consider using round, round_in or round_out before casting.
pub fn try_cast<NewT>(&self) -> Option<Rect<NewT, U>>where
NewT: NumCast,
Available on crate feature canvas only.
pub fn try_cast<NewT>(&self) -> Option<Rect<NewT, U>>where
NewT: NumCast,
canvas only.Fallible cast from one numeric representation to another, preserving the units.
When casting from floating point to integer coordinates, the decimals are truncated
as one would expect from a simple cast, but this behavior does not always make sense
geometrically. Consider using round, round_in or [round_out before casting.
pub fn to_f32(&self) -> Rect<f32, U>
Available on crate feature canvas only.
pub fn to_f32(&self) -> Rect<f32, U>
canvas only.Cast into an f32 rectangle.
pub fn to_f64(&self) -> Rect<f64, U>
Available on crate feature canvas only.
pub fn to_f64(&self) -> Rect<f64, U>
canvas only.Cast into an f64 rectangle.
pub fn to_usize(&self) -> Rect<usize, U>
Available on crate feature canvas only.
pub fn to_usize(&self) -> Rect<usize, U>
canvas only.Cast into an usize rectangle, truncating decimals if any.
When casting from floating point rectangles, it is worth considering whether
to round(), round_in() or round_out() before the cast in order to
obtain the desired conversion behavior.
pub fn to_u32(&self) -> Rect<u32, U>
Available on crate feature canvas only.
pub fn to_u32(&self) -> Rect<u32, U>
canvas only.Cast into an u32 rectangle, truncating decimals if any.
When casting from floating point rectangles, it is worth considering whether
to round(), round_in() or round_out() before the cast in order to
obtain the desired conversion behavior.
pub fn to_u64(&self) -> Rect<u64, U>
Available on crate feature canvas only.
pub fn to_u64(&self) -> Rect<u64, U>
canvas only.Cast into an u64 rectangle, truncating decimals if any.
When casting from floating point rectangles, it is worth considering whether
to round(), round_in() or round_out() before the cast in order to
obtain the desired conversion behavior.
pub fn to_i32(&self) -> Rect<i32, U>
Available on crate feature canvas only.
pub fn to_i32(&self) -> Rect<i32, U>
canvas only.Cast into an i32 rectangle, truncating decimals if any.
When casting from floating point rectangles, it is worth considering whether
to round(), round_in() or round_out() before the cast in order to
obtain the desired conversion behavior.
pub fn to_i64(&self) -> Rect<i64, U>
Available on crate feature canvas only.
pub fn to_i64(&self) -> Rect<i64, U>
canvas only.Cast into an i64 rectangle, truncating decimals if any.
When casting from floating point rectangles, it is worth considering whether
to round(), round_in() or round_out() before the cast in order to
obtain the desired conversion behavior.
§impl<T, U> Rect<T, U>
impl<T, U> Rect<T, U>
pub fn round(&self) -> Rect<T, U>
Available on crate feature canvas only.
pub fn round(&self) -> Rect<T, U>
canvas only.Return a rectangle with edges rounded to integer coordinates, such that the returned rectangle has the same set of pixel centers as the original one. Edges at offset 0.5 round up. Suitable for most places where integral device coordinates are needed, but note that any translation should be applied first to avoid pixel rounding errors. Note that this is not rounding to nearest integer if the values are negative. They are always rounding as floor(n + 0.5).
§Usage notes
Note, that when using with floating-point T types that method can significantly
lose precision for large values, so if you need to call this method very often it
is better to use Box2D.
pub fn round_in(&self) -> Rect<T, U>
Available on crate feature canvas only.
pub fn round_in(&self) -> Rect<T, U>
canvas only.Return a rectangle with edges rounded to integer coordinates, such that the original rectangle contains the resulting rectangle.
§Usage notes
Note, that when using with floating-point T types that method can significantly
lose precision for large values, so if you need to call this method very often it
is better to use Box2D.
pub fn round_out(&self) -> Rect<T, U>
Available on crate feature canvas only.
pub fn round_out(&self) -> Rect<T, U>
canvas only.Return a rectangle with edges rounded to integer coordinates, such that the original rectangle is contained in the resulting rectangle.
§Usage notes
Note, that when using with floating-point T types that method can significantly
lose precision for large values, so if you need to call this method very often it
is better to use Box2D.
Trait Implementations§
§impl<T, U> DivAssign<Scale<T, U, U>> for Rect<T, U>
impl<T, U> DivAssign<Scale<T, U, U>> for Rect<T, U>
§fn div_assign(&mut self, scale: Scale<T, U, U>)
fn div_assign(&mut self, scale: Scale<T, U, U>)
/= operation. Read more§impl<T, U> DivAssign<T> for Rect<T, U>
impl<T, U> DivAssign<T> for Rect<T, U>
§fn div_assign(&mut self, scale: T)
fn div_assign(&mut self, scale: T)
/= operation. Read more§impl<T, U> MulAssign<Scale<T, U, U>> for Rect<T, U>
impl<T, U> MulAssign<Scale<T, U, U>> for Rect<T, U>
§fn mul_assign(&mut self, scale: Scale<T, U, U>)
fn mul_assign(&mut self, scale: Scale<T, U, U>)
*= operation. Read more§impl<T, U> MulAssign<T> for Rect<T, U>
impl<T, U> MulAssign<T> for Rect<T, U>
§fn mul_assign(&mut self, scale: T)
fn mul_assign(&mut self, scale: T)
*= operation. Read moreimpl<T, U> Copy for Rect<T, U>where
T: Copy,
impl<T, U> Eq for Rect<T, U>where
T: Eq,
Auto Trait Implementations§
impl<T, U> Freeze for Rect<T, U>where
T: Freeze,
impl<T, U> RefUnwindSafe for Rect<T, U>where
T: RefUnwindSafe,
U: RefUnwindSafe,
impl<T, U> Send for Rect<T, U>
impl<T, U> Sync for Rect<T, U>
impl<T, U> Unpin for Rect<T, U>
impl<T, U> UnsafeUnpin for Rect<T, U>where
T: UnsafeUnpin,
impl<T, U> UnwindSafe for Rect<T, U>where
T: UnwindSafe,
U: UnwindSafe,
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
§impl<T> AnyEq for T
impl<T> AnyEq for T
§impl<T, Res> Apply<Res> for Twhere
T: ?Sized,
impl<T, Res> Apply<Res> for Twhere
T: ?Sized,
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.§impl<State, Message> IntoBoot<State, Message> for State
impl<State, Message> IntoBoot<State, Message> for State
§fn into_boot(self) -> (State, Task<Message>)
fn into_boot(self) -> (State, Task<Message>)
Application.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more