pub struct Rect {
pub x: u16,
pub y: u16,
pub width: u16,
pub height: u16,
}Expand description
A Rectangular area.
A simple rectangle used in the computation of the layout and to give widgets a hint about the area they are supposed to render to.
Fields§
§x: u16The x coordinate of the top left corner of the Rect.
y: u16The y coordinate of the top left corner of the Rect.
width: u16The width of the Rect.
height: u16The height of the Rect.
Implementations§
Source§impl Rect
impl Rect
Sourcepub const fn new(x: u16, y: u16, width: u16, height: u16) -> Rect
pub const fn new(x: u16, y: u16, width: u16, height: u16) -> Rect
Creates a new Rect, with width and height limited to keep both bounds within u16.
If the width or height would cause the right or bottom coordinate to be larger than the
maximum value of u16, the width or height will be clamped to keep the right or bottom
coordinate within u16.
§Examples
use ratatui_core::layout::Rect;
let rect = Rect::new(1, 2, 3, 4);Sourcepub const fn area(self) -> u32
pub const fn area(self) -> u32
The area of the Rect. If the area is larger than the maximum value of u16, it will be
clamped to u16::MAX.
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 const fn inner(self, margin: Margin) -> Rect
pub const fn inner(self, margin: Margin) -> Rect
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: Rect) -> Rect
pub fn union(self, other: Rect) -> Rect
Returns a new Rect that contains both the current one and the given one.
Sourcepub fn intersection(self, other: Rect) -> Rect
pub fn intersection(self, other: Rect) -> Rect
Returns a new Rect that is the intersection of the current one and the given one.
If the two Rects do not intersect, the returned Rect will have no area.
Sourcepub const fn intersects(self, other: Rect) -> bool
pub const fn intersects(self, other: Rect) -> bool
Returns true if the two Rects intersect.
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
use ratatui_core::layout::{Position, Rect};
let rect = Rect::new(1, 2, 3, 4);
assert!(rect.contains(Position { x: 1, y: 2 }));Sourcepub fn clamp(self, other: Rect) -> Rect
pub fn clamp(self, other: Rect) -> Rect
Clamp this Rect to fit inside the other Rect.
If the width or height of this Rect is larger than the other Rect, it will be clamped to
the other Rect’s width or height.
If the left or top coordinate of this Rect is smaller than the other Rect, it will be
clamped to the other Rect’s left or top coordinate.
If the right or bottom coordinate of this Rect is larger than the other Rect, it will be
clamped to the other Rect’s right or bottom coordinate.
This is different from Rect::intersection because it will move this Rect to fit inside
the other Rect, while Rect::intersection instead would keep this Rect’s position and
truncate its size to only that which is inside the other Rect.
§Examples
use ratatui_core::layout::Rect;
let area = Rect::new(0, 0, 100, 100);
let rect = Rect::new(80, 80, 30, 30).clamp(area);
assert_eq!(rect, Rect::new(70, 70, 30, 30));Sourcepub const fn rows(self) -> Rows ⓘ
pub const fn rows(self) -> Rows ⓘ
An iterator over rows within the Rect.
§Example
use ratatui_core::buffer::Buffer;
use ratatui_core::layout::Rect;
use ratatui_core::text::Line;
use ratatui_core::widgets::Widget;
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
use ratatui_core::buffer::Buffer;
use ratatui_core::layout::Rect;
use ratatui_core::text::Text;
use ratatui_core::widgets::Widget;
fn render(area: Rect, buf: &mut Buffer) {
for (i, column) in area.columns().enumerate() {
Text::from(format!("{}", i)).render(column, 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
use ratatui_core::buffer::Buffer;
use ratatui_core::layout::Rect;
fn render(area: Rect, buf: &mut Buffer) {
for position in area.positions() {
buf[(position.x, position.y)].set_symbol("x");
}
}Sourcepub const fn as_position(self) -> Position
pub const fn as_position(self) -> Position
Sourcepub fn centered_horizontally(self, constraint: Constraint) -> Rect
pub fn centered_horizontally(self, constraint: Constraint) -> Rect
Returns a new Rect, centered horizontally based on the provided constraint.
§Examples
use ratatui_core::layout::Constraint;
use ratatui_core::terminal::Frame;
fn render(frame: &mut Frame) {
let area = frame.area().centered_horizontally(Constraint::Ratio(1, 2));
}Sourcepub fn centered_vertically(self, constraint: Constraint) -> Rect
pub fn centered_vertically(self, constraint: Constraint) -> Rect
Returns a new Rect, centered vertically based on the provided constraint.
§Examples
use ratatui_core::layout::Constraint;
use ratatui_core::terminal::Frame;
fn render(frame: &mut Frame) {
let area = frame.area().centered_vertically(Constraint::Ratio(1, 2));
}Sourcepub fn centered(
self,
horizontal_constraint: Constraint,
vertical_constraint: Constraint,
) -> Rect
pub fn centered( self, horizontal_constraint: Constraint, vertical_constraint: Constraint, ) -> Rect
Returns a new Rect, centered horizontally and vertically based on the provided constraints.
§Examples
use ratatui_core::layout::Constraint;
use ratatui_core::terminal::Frame;
fn render(frame: &mut Frame) {
let area = frame
.area()
.centered(Constraint::Ratio(1, 2), Constraint::Ratio(1, 3));
}Trait Implementations§
Source§impl<'de> Deserialize<'de> for Rect
impl<'de> Deserialize<'de> for Rect
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Rect, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Rect, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for Rect
impl Serialize for Rect
Source§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 Copy for Rect
impl Eq for Rect
impl StructuralPartialEq for Rect
Auto Trait Implementations§
impl Freeze for Rect
impl RefUnwindSafe for Rect
impl Send for Rect
impl Sync for Rect
impl Unpin for Rect
impl UnwindSafe for Rect
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
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
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> 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.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.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> 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 moreSource§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.Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read moreSource§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