use ratatui::{
buffer::Buffer,
prelude::{Constraint, Direction, Layout, Rect},
};
pub(super) trait RectExt {
fn centered(self, percent_x: u16, percent_y: u16) -> Rect;
fn reset(&self, buf: &mut Buffer);
}
impl RectExt for Rect {
fn centered(self, percent_x: u16, percent_y: u16) -> Rect {
let layout = Layout::default()
.direction(Direction::Vertical)
.constraints([
Constraint::Percentage((100 - percent_y) / 2),
Constraint::Percentage(percent_y),
Constraint::Percentage((100 - percent_y) / 2),
])
.split(self);
Layout::default()
.direction(Direction::Horizontal)
.constraints([
Constraint::Percentage((100 - percent_x) / 2),
Constraint::Percentage(percent_x),
Constraint::Percentage((100 - percent_x) / 2),
])
.split(layout[1])[1]
}
fn reset(&self, buf: &mut Buffer) {
for x in self.x..(self.x + self.width) {
for y in self.y..(self.y + self.height) {
buf.cell_mut((x, y)).unwrap().reset();
}
}
}
}