ferroui_base/layout/
layout_extensions.rs1use super::{HorizontalAlignment, VerticalAlignment};
2use crate::Rect;
3
4pub struct LayoutExtensions;
6
7impl LayoutExtensions {
8 pub fn align(
11 mut rect: Rect,
12 constraint: Rect,
13 horizontal_alignment: HorizontalAlignment,
14 vertical_alignment: VerticalAlignment,
15 ) -> Rect {
16 match horizontal_alignment {
17 HorizontalAlignment::Center => rect = rect.with_x((constraint.width - rect.width) / 2.0),
18 HorizontalAlignment::Right => rect = rect.with_x(constraint.width - rect.width),
19 HorizontalAlignment::Stretch => {
20 rect = Rect::new(0.0, rect.y, constraint.width.max(rect.width), rect.height)
21 }
22 HorizontalAlignment::Left => {}
23 }
24
25 match vertical_alignment {
26 VerticalAlignment::Center => rect = rect.with_y((constraint.height - rect.height) / 2.0),
27 VerticalAlignment::Bottom => rect = rect.with_y(constraint.height - rect.height),
28 VerticalAlignment::Stretch => {
29 rect = Rect::new(rect.x, 0.0, rect.width, constraint.height.max(rect.height))
30 }
31 VerticalAlignment::Top => {}
32 }
33
34 rect
35 }
36}