Struct masonry::BoxConstraints
source · pub struct BoxConstraints { /* private fields */ }
Expand description
Constraints for layout.
The layout strategy for Masonry is strongly inspired by Flutter, and this struct is similar to the Flutter BoxConstraints class.
At the moment, it represents simply a minimum and maximum size.
A widget’s layout
method should choose an appropriate size that
meets these constraints.
Further, a container widget should compute appropriate constraints for each of its child widgets, and pass those down when recursing.
The constraints are always rounded away from zero to integers to enable pixel perfect layout.
Implementations§
source§impl BoxConstraints
impl BoxConstraints
sourcepub const UNBOUNDED: BoxConstraints = _
pub const UNBOUNDED: BoxConstraints = _
An unbounded box constraints object.
Can be satisfied by any nonnegative size.
sourcepub fn new(min: Size, max: Size) -> BoxConstraints
pub fn new(min: Size, max: Size) -> BoxConstraints
Create a new box constraints object.
Create constraints based on minimum and maximum size.
The given sizes are also rounded away from zero, so that the layout is aligned to integers.
sourcepub fn tight(size: Size) -> BoxConstraints
pub fn tight(size: Size) -> BoxConstraints
Create a “tight” box constraints object.
A “tight” constraint can only be satisfied by a single size.
The given size is also rounded away from zero, so that the layout is aligned to integers.
sourcepub fn loosen(&self) -> BoxConstraints
pub fn loosen(&self) -> BoxConstraints
Create a “loose” version of the constraints.
Make a version with zero minimum size, but the same maximum size.
sourcepub fn constrain(&self, size: impl Into<Size>) -> Size
pub fn constrain(&self, size: impl Into<Size>) -> Size
Clamp a given size so that it fits within the constraints.
The given size is also rounded away from zero, so that the layout is aligned to integers.
sourcepub fn is_width_bounded(&self) -> bool
pub fn is_width_bounded(&self) -> bool
Whether there is an upper bound on the width.
sourcepub fn is_height_bounded(&self) -> bool
pub fn is_height_bounded(&self) -> bool
Whether there is an upper bound on the height.
sourcepub fn debug_check(&self, name: &str)
pub fn debug_check(&self, name: &str)
Check to see if these constraints are legit.
In Debug mode, logs a warning if BoxConstraints
are invalid.
sourcepub fn shrink(&self, diff: impl Into<Size>) -> BoxConstraints
pub fn shrink(&self, diff: impl Into<Size>) -> BoxConstraints
Shrink min and max constraints by size
The given size is also rounded away from zero, so that the layout is aligned to integers.
sourcepub fn contains(&self, size: impl Into<Size>) -> bool
pub fn contains(&self, size: impl Into<Size>) -> bool
Test whether these constraints contain the given Size
.
sourcepub fn constrain_aspect_ratio(&self, aspect_ratio: f64, width: f64) -> Size
pub fn constrain_aspect_ratio(&self, aspect_ratio: f64, width: f64) -> Size
Find the Size
within these BoxConstraint
s that minimises the difference between the
returned Size
’s aspect ratio and aspect_ratio
, where aspect ratio is defined as
height / width
.
If multiple Size
s give the optimal aspect_ratio
, then the one with the width
nearest
the supplied width will be used. Specifically, if width == 0.0
then the smallest possible
Size
will be chosen, and likewise if width == f64::INFINITY
, then the largest Size
will be chosen.
Use this function when maintaining an aspect ratio is more important than minimizing the distance between input and output size width and height.
Trait Implementations§
source§impl Clone for BoxConstraints
impl Clone for BoxConstraints
source§fn clone(&self) -> BoxConstraints
fn clone(&self) -> BoxConstraints
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for BoxConstraints
impl Debug for BoxConstraints
impl Copy for BoxConstraints
Auto Trait Implementations§
impl Freeze for BoxConstraints
impl RefUnwindSafe for BoxConstraints
impl Send for BoxConstraints
impl Sync for BoxConstraints
impl Unpin for BoxConstraints
impl UnwindSafe for BoxConstraints
Blanket Implementations§
source§impl<T> AsAny for Twhere
T: Any,
impl<T> AsAny for Twhere
T: Any,
source§fn as_dyn_any(&self) -> &(dyn Any + 'static)
fn as_dyn_any(&self) -> &(dyn Any + 'static)
source§fn as_mut_dyn_any(&mut self) -> &mut (dyn Any + 'static)
fn as_mut_dyn_any(&mut self) -> &mut (dyn Any + 'static)
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§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
.source§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
.source§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.source§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.