#[repr(C)]pub struct URect {
pub min: UVec2,
pub max: UVec2,
}
Expand description
A rectangle defined by two opposite corners.
The rectangle is axis aligned, and defined by its minimum and maximum coordinates,
stored in URect::min
and URect::max
, respectively. The minimum/maximum invariant
must be upheld by the user when directly assigning the fields, otherwise some methods
produce invalid results. It is generally recommended to use one of the constructor
methods instead, which will ensure this invariant is met, unless you already have
the minimum and maximum corners.
Fields§
§min: UVec2
The minimum corner point of the rect.
max: UVec2
The maximum corner point of the rect.
Implementations§
§impl URect
impl URect
pub fn new(x0: u32, y0: u32, x1: u32, y1: u32) -> URect
pub fn new(x0: u32, y0: u32, x1: u32, y1: u32) -> URect
Create a new rectangle from two corner points.
The two points do not need to be the minimum and/or maximum corners. They only need to be two opposite corners.
Examples
let r = URect::new(0, 4, 10, 6); // w=10 h=2
let r = URect::new(2, 4, 5, 0); // w=3 h=4
pub fn from_corners(p0: UVec2, p1: UVec2) -> URect
pub fn from_corners(p0: UVec2, p1: UVec2) -> URect
Create a new rectangle from two corner points.
The two points do not need to be the minimum and/or maximum corners. They only need to be two opposite corners.
Examples
// Unit rect from [0,0] to [1,1]
let r = URect::from_corners(UVec2::ZERO, UVec2::ONE); // w=1 h=1
// Same; the points do not need to be ordered
let r = URect::from_corners(UVec2::ONE, UVec2::ZERO); // w=1 h=1
pub fn from_center_size(origin: UVec2, size: UVec2) -> URect
pub fn from_center_size(origin: UVec2, size: UVec2) -> URect
Create a new rectangle from its center and size.
Rounding Behaviour
If the size contains odd numbers they will be rounded down to the nearest whole number.
Panics
This method panics if any of the components of the size is negative or if origin - (size / 2)
results in any negatives.
Examples
let r = URect::from_center_size(UVec2::ONE, UVec2::splat(2)); // w=2 h=2
assert_eq!(r.min, UVec2::splat(0));
assert_eq!(r.max, UVec2::splat(2));
pub fn from_center_half_size(origin: UVec2, half_size: UVec2) -> URect
pub fn from_center_half_size(origin: UVec2, half_size: UVec2) -> URect
Create a new rectangle from its center and half-size.
Panics
This method panics if any of the components of the half-size is negative or if origin - half_size
results in any negatives.
Examples
let r = URect::from_center_half_size(UVec2::ONE, UVec2::ONE); // w=2 h=2
assert_eq!(r.min, UVec2::splat(0));
assert_eq!(r.max, UVec2::splat(2));
pub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Check if the rectangle is empty.
Examples
let r = URect::from_corners(UVec2::ZERO, UVec2::new(0, 1)); // w=0 h=1
assert!(r.is_empty());
pub const fn width(&self) -> u32
pub const fn width(&self) -> u32
Rectangle width (max.x - min.x).
Examples
let r = URect::new(0, 0, 5, 1); // w=5 h=1
assert_eq!(r.width(), 5);
pub const fn height(&self) -> u32
pub const fn height(&self) -> u32
Rectangle height (max.y - min.y).
Examples
let r = URect::new(0, 0, 5, 1); // w=5 h=1
assert_eq!(r.height(), 1);
pub fn size(&self) -> UVec2
pub fn size(&self) -> UVec2
Rectangle size.
Examples
let r = URect::new(0, 0, 5, 1); // w=5 h=1
assert_eq!(r.size(), UVec2::new(5, 1));
pub fn half_size(&self) -> UVec2
pub fn half_size(&self) -> UVec2
Rectangle half-size.
Rounding Behaviour
If the full size contains odd numbers they will be rounded down to the nearest whole number when calculating the half size.
Examples
let r = URect::new(0, 0, 4, 2); // w=4 h=2
assert_eq!(r.half_size(), UVec2::new(2, 1));
pub fn center(&self) -> UVec2
pub fn center(&self) -> UVec2
The center point of the rectangle.
Rounding Behaviour
If the (min + max) contains odd numbers they will be rounded down to the nearest whole number when calculating the center.
Examples
let r = URect::new(0, 0, 4, 2); // w=4 h=2
assert_eq!(r.center(), UVec2::new(2, 1));
pub fn contains(&self, point: UVec2) -> bool
pub fn contains(&self, point: UVec2) -> bool
Check if a point lies within this rectangle, inclusive of its edges.
Examples
let r = URect::new(0, 0, 5, 1); // w=5 h=1
assert!(r.contains(r.center()));
assert!(r.contains(r.min));
assert!(r.contains(r.max));
pub fn union(&self, other: URect) -> URect
pub fn union(&self, other: URect) -> URect
Build a new rectangle formed of the union of this rectangle and another rectangle.
The union is the smallest rectangle enclosing both rectangles.
Examples
let r1 = URect::new(0, 0, 5, 1); // w=5 h=1
let r2 = URect::new(1, 0, 3, 8); // w=2 h=4
let r = r1.union(r2);
assert_eq!(r.min, UVec2::new(0, 0));
assert_eq!(r.max, UVec2::new(5, 8));
pub fn union_point(&self, other: UVec2) -> URect
pub fn union_point(&self, other: UVec2) -> URect
Build a new rectangle formed of the union of this rectangle and a point.
The union is the smallest rectangle enclosing both the rectangle and the point. If the point is already inside the rectangle, this method returns a copy of the rectangle.
Examples
let r = URect::new(0, 0, 5, 1); // w=5 h=1
let u = r.union_point(UVec2::new(3, 6));
assert_eq!(u.min, UVec2::ZERO);
assert_eq!(u.max, UVec2::new(5, 6));
pub fn intersect(&self, other: URect) -> URect
pub fn intersect(&self, other: URect) -> URect
Build a new rectangle formed of the intersection of this rectangle and another rectangle.
The intersection is the largest rectangle enclosed in both rectangles. If the intersection
is empty, this method returns an empty rectangle (URect::is_empty()
returns true
), but
the actual values of URect::min
and URect::max
are implementation-dependent.
Examples
let r1 = URect::new(0, 0, 2, 2); // w=2 h=2
let r2 = URect::new(1, 1, 3, 3); // w=2 h=2
let r = r1.intersect(r2);
assert_eq!(r.min, UVec2::new(1, 1));
assert_eq!(r.max, UVec2::new(2, 2));
pub fn inset(&self, inset: i32) -> URect
pub fn inset(&self, inset: i32) -> URect
Create a new rectangle with a constant inset.
The inset is the extra border on all sides. A positive inset produces a larger rectangle, while a negative inset is allowed and produces a smaller rectangle. If the inset is negative and its absolute value is larger than the rectangle half-size, the created rectangle is empty.
Examples
let r = URect::new(4, 4, 6, 6); // w=2 h=2
let r2 = r.inset(1); // w=4 h=4
assert_eq!(r2.min, UVec2::splat(3));
assert_eq!(r2.max, UVec2::splat(7));
let r = URect::new(4, 4, 8, 8); // w=4 h=4
let r2 = r.inset(-1); // w=2 h=2
assert_eq!(r2.min, UVec2::splat(5));
assert_eq!(r2.max, UVec2::splat(7));
Trait Implementations§
§impl<'de> Deserialize<'de> for URect
impl<'de> Deserialize<'de> for URect
§fn deserialize<__D>(
__deserializer: __D
) -> Result<URect, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>( __deserializer: __D ) -> Result<URect, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,
§impl FromReflect for URectwhere
UVec2: FromReflect,
impl FromReflect for URectwhere UVec2: FromReflect,
§fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<URect>
fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<URect>
Self
from a reflected value.§impl GetTypeRegistration for URectwhere
UVec2: FromReflect,
impl GetTypeRegistration for URectwhere UVec2: FromReflect,
§impl Reflect for URectwhere
UVec2: FromReflect,
impl Reflect for URectwhere UVec2: FromReflect,
§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any
.§fn into_reflect(self: Box<URect, Global>) -> Box<dyn Reflect, Global>
fn into_reflect(self: Box<URect, Global>) -> Box<dyn Reflect, Global>
§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
§fn clone_value(&self) -> Box<dyn Reflect, Global>
fn clone_value(&self) -> Box<dyn Reflect, Global>
Reflect
trait object. Read more§fn set(
&mut self,
value: Box<dyn Reflect, Global>
) -> Result<(), Box<dyn Reflect, Global>>
fn set( &mut self, value: Box<dyn Reflect, Global> ) -> Result<(), Box<dyn Reflect, Global>>
§fn apply(&mut self, value: &(dyn Reflect + 'static))
fn apply(&mut self, value: &(dyn Reflect + 'static))
§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
§fn reflect_owned(self: Box<URect, Global>) -> ReflectOwned
fn reflect_owned(self: Box<URect, Global>) -> ReflectOwned
§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
§fn reflect_partial_eq(&self, value: &(dyn Reflect + 'static)) -> Option<bool>
fn reflect_partial_eq(&self, value: &(dyn Reflect + 'static)) -> Option<bool>
§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
§impl Serialize for URect
impl Serialize for URect
§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,
§impl Struct for URectwhere
UVec2: FromReflect,
impl Struct for URectwhere UVec2: FromReflect,
§fn field(&self, name: &str) -> Option<&(dyn Reflect + 'static)>
fn field(&self, name: &str) -> Option<&(dyn Reflect + 'static)>
name
as a &dyn Reflect
.§fn field_mut(&mut self, name: &str) -> Option<&mut (dyn Reflect + 'static)>
fn field_mut(&mut self, name: &str) -> Option<&mut (dyn Reflect + 'static)>
name
as a
&mut dyn Reflect
.§fn field_at(&self, index: usize) -> Option<&(dyn Reflect + 'static)>
fn field_at(&self, index: usize) -> Option<&(dyn Reflect + 'static)>
index
as a
&dyn Reflect
.§fn field_at_mut(&mut self, index: usize) -> Option<&mut (dyn Reflect + 'static)>
fn field_at_mut(&mut self, index: usize) -> Option<&mut (dyn Reflect + 'static)>
index
as a &mut dyn Reflect
.§fn iter_fields(&self) -> FieldIter<'_> ⓘ
fn iter_fields(&self) -> FieldIter<'_> ⓘ
§fn clone_dynamic(&self) -> DynamicStruct
fn clone_dynamic(&self) -> DynamicStruct
DynamicStruct
.§impl TypePath for URectwhere
UVec2: FromReflect,
impl TypePath for URectwhere UVec2: FromReflect,
§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
§impl Typed for URectwhere
UVec2: FromReflect,
impl Typed for URectwhere UVec2: FromReflect,
impl Copy for URect
impl Eq for URect
impl StructuralEq for URect
impl StructuralPartialEq for URect
Auto Trait Implementations§
impl RefUnwindSafe for URect
impl Send for URect
impl Sync for URect
impl Unpin for URect
impl UnwindSafe for URect
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
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, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
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> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere T: TypePath,
§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World
.§impl<T> GetPath for Twhere
T: Reflect + ?Sized,
impl<T> GetPath for Twhere T: Reflect + ?Sized,
§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>
) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p> ) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read more§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>
) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p> ) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read more§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>( &self, path: impl ReflectPath<'p> ) -> Result<&T, ReflectPathError<'p>>where T: Reflect,
path
. Read more§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>( &mut self, path: impl ReflectPath<'p> ) -> Result<&mut T, ReflectPathError<'p>>where T: Reflect,
path
. Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere T: FromSample<F>,
fn into_sample(self) -> T
§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
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<R, P> ReadPrimitive<R> for Pwhere
R: Read + ReadEndian<P>,
P: Default,
impl<R, P> ReadPrimitive<R> for Pwhere R: Read + ReadEndian<P>, P: Default,
source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.