before <img width="1161" height="836" alt="Screenshot 2025-10-06 at 3 06 52 PM" src="https://github.com/user-attachments/assets/7622fd6b-9d37-402f-8651-61c2c55dcbc6" /> after <img width="1161" height="858" alt="Screenshot 2025-10-06 at 3 07 02 PM" src="https://github.com/user-attachments/assets/1498f327-1d1a-4630-951f-7ca371ab0139" />
51 lines
1.1 KiB
Rust
51 lines
1.1 KiB
Rust
use ratatui::layout::Rect;
|
|
|
|
pub mod highlight;
|
|
pub mod line_utils;
|
|
pub mod renderable;
|
|
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
|
pub struct Insets {
|
|
pub left: u16,
|
|
pub top: u16,
|
|
pub right: u16,
|
|
pub bottom: u16,
|
|
}
|
|
|
|
impl Insets {
|
|
pub fn tlbr(top: u16, left: u16, bottom: u16, right: u16) -> Self {
|
|
Self {
|
|
top,
|
|
left,
|
|
bottom,
|
|
right,
|
|
}
|
|
}
|
|
|
|
pub fn vh(v: u16, h: u16) -> Self {
|
|
Self {
|
|
top: v,
|
|
left: h,
|
|
bottom: v,
|
|
right: h,
|
|
}
|
|
}
|
|
}
|
|
|
|
pub trait RectExt {
|
|
fn inset(&self, insets: Insets) -> Rect;
|
|
}
|
|
|
|
impl RectExt for Rect {
|
|
fn inset(&self, insets: Insets) -> Rect {
|
|
let horizontal = insets.left.saturating_add(insets.right);
|
|
let vertical = insets.top.saturating_add(insets.bottom);
|
|
Rect {
|
|
x: self.x.saturating_add(insets.left),
|
|
y: self.y.saturating_add(insets.top),
|
|
width: self.width.saturating_sub(horizontal),
|
|
height: self.height.saturating_sub(vertical),
|
|
}
|
|
}
|
|
}
|