75 lines
1.5 KiB
Rust
75 lines
1.5 KiB
Rust
/// An amount of space to pad for each side of a box
|
|
#[derive(Debug, Hash, Copy, Clone)]
|
|
pub struct Padding {
|
|
/// Top padding
|
|
pub top: u16,
|
|
/// Right padding
|
|
pub right: u16,
|
|
/// Bottom padding
|
|
pub bottom: u16,
|
|
/// Left padding
|
|
pub left: u16,
|
|
}
|
|
|
|
impl Padding {
|
|
/// Padding of zero
|
|
pub const ZERO: Padding = Padding {
|
|
top: 0,
|
|
right: 0,
|
|
bottom: 0,
|
|
left: 0,
|
|
};
|
|
|
|
/// Create a Padding that is equal on all sides
|
|
pub const fn new(padding: u16) -> Padding {
|
|
Padding {
|
|
top: padding,
|
|
right: padding,
|
|
bottom: padding,
|
|
left: padding,
|
|
}
|
|
}
|
|
|
|
/// Returns the total amount of vertical [`Padding`].
|
|
pub fn vertical(self) -> u16 {
|
|
self.top + self.bottom
|
|
}
|
|
|
|
/// Returns the total amount of horizontal [`Padding`].
|
|
pub fn horizontal(self) -> u16 {
|
|
self.left + self.right
|
|
}
|
|
}
|
|
|
|
impl std::convert::From<u16> for Padding {
|
|
fn from(p: u16) -> Self {
|
|
Padding {
|
|
top: p,
|
|
right: p,
|
|
bottom: p,
|
|
left: p,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl std::convert::From<[u16; 2]> for Padding {
|
|
fn from(p: [u16; 2]) -> Self {
|
|
Padding {
|
|
top: p[0],
|
|
right: p[1],
|
|
bottom: p[0],
|
|
left: p[1],
|
|
}
|
|
}
|
|
}
|
|
|
|
impl std::convert::From<[u16; 4]> for Padding {
|
|
fn from(p: [u16; 4]) -> Self {
|
|
Padding {
|
|
top: p[0],
|
|
right: p[1],
|
|
bottom: p[2],
|
|
left: p[3],
|
|
}
|
|
}
|
|
}
|