use domain::{HAlign, VAlign}; #[allow(private_bounds)] pub fn align_offset(container: u16, content: u16, align: impl Into) -> 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 for AlignMode { fn from(a: HAlign) -> Self { match a { HAlign::Left => AlignMode::Start, HAlign::Center => AlignMode::Center, HAlign::Right => AlignMode::End, } } } impl From for AlignMode { fn from(a: VAlign) -> Self { match a { VAlign::Top => AlignMode::Start, VAlign::Middle => AlignMode::Center, VAlign::Bottom => AlignMode::End, } } }