rat_widget/layout/
layout_grid.rs1use crate::layout::GenericLayout;
2use ratatui::layout::{Constraint, Layout, Rect};
3
4pub fn layout_as_grid(
32 area: Rect,
33 horizontal: Layout,
34 vertical: Layout,
35) -> GenericLayout<(usize, usize)> {
36 let mut gen_layout = GenericLayout::new();
37 gen_layout.set_area(area);
38 gen_layout.set_page_size(area.as_size());
39
40 let hori = horizontal.split(Rect::new(area.x, 0, area.width, 0));
41 let vert = vertical.split(Rect::new(0, area.y, 0, area.height));
42
43 for x in 0..hori.len() {
44 for y in 0..vert.len() {
45 let grid_area = Rect::new(hori[x].x, vert[y].y, hori[x].width, vert[y].height);
46 gen_layout.add((x, y), grid_area, None, Rect::default());
47 }
48 }
49
50 gen_layout
51}
52
53pub fn simple_grid<const X: usize, const Y: usize>(
55 area: Rect,
56 horizontal: [Constraint; X],
57 vertical: [Constraint; Y],
58) -> [[Rect; Y]; X] {
59 let mut layout = [[Rect::default(); Y]; X];
60
61 let hori = Layout::horizontal(horizontal).split(Rect::new(area.x, 0, area.width, 0));
62 let vert = Layout::vertical(vertical).split(Rect::new(0, area.y, 0, area.height));
63
64 for x in 0..X {
65 for y in 0..Y {
66 let grid_area = Rect::new(hori[x].x, vert[y].y, hori[x].width, vert[y].height);
67 layout[x][y] = grid_area;
68 }
69 }
70
71 layout
72}