tui-lipan 0.1.0

Opinionated, component-based TUI framework for Rust - declarative components, reconciliation, layout engine, focus, overlays, and rich widgets on top of ratatui.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use super::{GanttDiagram, measure_gantt_rows};

pub fn measure_gantt_diagram(diagram: &GanttDiagram) -> (u16, u16) {
    let rows = super::node::build_rows(&diagram.spec, diagram.max_timeline_width);
    let (content_w, content_h) = match rows.as_deref() {
        Ok(rows) => measure_gantt_rows(rows),
        Err(error) => measure_error(error),
    };

    (
        content_w.saturating_add(diagram.padding.horizontal()),
        content_h.saturating_add(diagram.padding.vertical()),
    )
}

fn measure_error(error: &str) -> (u16, u16) {
    (error.chars().count().min(usize::from(u16::MAX)) as u16, 1)
}