pub struct ZRect {
pub x: u16,
pub y: u16,
pub z: u16,
pub width: u16,
pub height: u16,
}Expand description
Extension of Rect.
Adds a z value for stacking overlaying areas.
This is useful when handling mouse events for widgets with overlays/popups.
Fields§
§x: u16Coordinates
y: u16§z: u16§width: u16§height: u16Implementations§
Source§impl ZRect
impl ZRect
pub const ZERO: Self = _
pub const fn new(x: u16, y: u16, width: u16, height: u16, z: u16) -> Self
pub const fn as_rect(self) -> Rect
Sourcepub const fn right(self) -> u16
pub const fn right(self) -> u16
Returns the right coordinate of the Rect. This is the first coordinate outside of the
Rect.
If the right coordinate is larger than the maximum value of u16, it will be clamped to
u16::MAX.
Sourcepub const fn bottom(self) -> u16
pub const fn bottom(self) -> u16
Returns the bottom coordinate of the Rect. This is the first coordinate outside of the
Rect.
If the bottom coordinate is larger than the maximum value of u16, it will be clamped to
u16::MAX.
Sourcepub fn inner(self, margin: Margin) -> Self
pub fn inner(self, margin: Margin) -> Self
Returns a new Rect inside the current one, with the given margin on each side.
If the margin is larger than the Rect, the returned Rect will have no area.
Sourcepub fn union(self, other: Self) -> Self
pub fn union(self, other: Self) -> Self
Returns a new Rect that contains both the current one and the given one.
The z-value is set to max(self.z, other.z).
Sourcepub const fn contains(self, position: Position) -> bool
pub const fn contains(self, position: Position) -> bool
Returns true if the given position is inside the Rect.
The position is considered inside the Rect if it is on the Rect’s border.
§Examples
let rect = Rect::new(1, 2, 3, 4);
assert!(rect.contains(Position { x: 1, y: 2 }));Sourcepub const fn rows(self) -> Rows
pub const fn rows(self) -> Rows
An iterator over rows within the Rect.
§Example
fn render(area: Rect, buf: &mut Buffer) {
for row in area.rows() {
Line::raw("Hello, world!").render(row, buf);
}
}Sourcepub const fn columns(self) -> Columns
pub const fn columns(self) -> Columns
An iterator over columns within the Rect.
§Example
fn render(area: Rect, buf: &mut Buffer) {
if let Some(left) = area.columns().next() {
Block::new().borders(Borders::LEFT).render(left, buf);
}
}Sourcepub const fn positions(self) -> Positions
pub const fn positions(self) -> Positions
An iterator over the positions within the Rect.
The positions are returned in a row-major order (left-to-right, top-to-bottom).
§Example
fn render(area: Rect, buf: &mut Buffer) {
for position in area.positions() {
buf.get_mut(position.x, position.y).set_symbol("x");
}
}Sourcepub const fn as_position(self) -> Position
pub const fn as_position(self) -> Position
Trait Implementations§
impl Copy for ZRect
impl Eq for ZRect
impl StructuralPartialEq for ZRect
Auto Trait Implementations§
impl Freeze for ZRect
impl RefUnwindSafe for ZRect
impl Send for ZRect
impl Sync for ZRect
impl Unpin for ZRect
impl UnwindSafe for ZRect
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more