use embedded_graphics::{prelude::Point, primitives::Rectangle};
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub struct EdgeInsets {
pub top: u32,
pub left: u32,
pub bottom: u32,
pub right: u32,
}
impl EdgeInsets {
pub const fn new(top: u32, left: u32, bottom: u32, right: u32) -> Self {
Self {
top,
left,
bottom,
right,
}
}
pub const fn all(value: u32) -> Self {
Self::new(value, value, value, value)
}
pub fn inset_rect(self, rect: Rectangle) -> Rectangle {
let horizontal = self.left.saturating_add(self.right);
let vertical = self.top.saturating_add(self.bottom);
Rectangle::new(
rect.top_left + Point::new(self.left as i32, self.top as i32),
embedded_graphics::geometry::Size::new(
rect.size.width.saturating_sub(horizontal),
rect.size.height.saturating_sub(vertical),
),
)
}
}