42 lines
933 B
Rust
42 lines
933 B
Rust
use domain::{HAlign, VAlign};
|
|
|
|
#[allow(private_bounds)]
|
|
pub fn align_offset(container: u16, content: u16, align: impl Into<AlignMode>) -> u16 {
|
|
let mode = align.into();
|
|
if content >= container {
|
|
return 0;
|
|
}
|
|
let space = container - content;
|
|
match mode {
|
|
AlignMode::Start => 0,
|
|
AlignMode::Center => space / 2,
|
|
AlignMode::End => space,
|
|
}
|
|
}
|
|
|
|
enum AlignMode {
|
|
Start,
|
|
Center,
|
|
End,
|
|
}
|
|
|
|
impl From<HAlign> for AlignMode {
|
|
fn from(a: HAlign) -> Self {
|
|
match a {
|
|
HAlign::Left => AlignMode::Start,
|
|
HAlign::Center => AlignMode::Center,
|
|
HAlign::Right => AlignMode::End,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl From<VAlign> for AlignMode {
|
|
fn from(a: VAlign) -> Self {
|
|
match a {
|
|
VAlign::Top => AlignMode::Start,
|
|
VAlign::Middle => AlignMode::Center,
|
|
VAlign::Bottom => AlignMode::End,
|
|
}
|
|
}
|
|
}
|