parallel_disk_usage/
visualizer.rs

1pub mod bar_alignment;
2pub mod child_position;
3pub mod column_width_distribution;
4pub mod direction;
5pub mod parenthood;
6pub mod proportion_bar;
7pub mod tree;
8
9pub use bar_alignment::BarAlignment;
10pub use child_position::ChildPosition;
11pub use column_width_distribution::ColumnWidthDistribution;
12pub use direction::Direction;
13pub use parenthood::Parenthood;
14pub use proportion_bar::{ProportionBar, ProportionBarBlock};
15pub use tree::{TreeHorizontalSlice, TreeSkeletalComponent};
16
17use super::{data_tree::DataTree, size};
18use std::fmt::Display;
19
20/// Visualize a [`DataTree`].
21///
22/// The fields of the struct are the construction parameters of the ASCII chart.
23/// The [`Display`] trait can be used to create the ASCII chart.
24///
25/// **Example:**
26///
27/// ```no_run
28/// # use parallel_disk_usage::data_tree::DataTree;
29/// # use parallel_disk_usage::os_string_display::OsStringDisplay;
30/// # use parallel_disk_usage::size::Bytes;
31/// # use parallel_disk_usage::bytes_format::BytesFormat;
32/// # use parallel_disk_usage::visualizer::{Visualizer, Direction, BarAlignment, ColumnWidthDistribution};
33/// # fn _wrapper(create_data_tree: fn() -> DataTree<OsStringDisplay, Bytes>) {
34/// let data_tree: DataTree<OsStringDisplay, Bytes> = create_data_tree();
35/// let visualizer = Visualizer {
36///     data_tree: &data_tree,
37///     bytes_format: BytesFormat::MetricUnits,
38///     direction: Direction::BottomUp,
39///     bar_alignment: BarAlignment::Right,
40///     column_width_distribution: ColumnWidthDistribution::total(100),
41/// };
42/// println!("{visualizer}");
43/// # }
44/// ```
45#[derive(Debug)]
46pub struct Visualizer<'a, Name, Size>
47where
48    Name: Display,
49    Size: size::Size,
50{
51    /// The tree to visualize.
52    pub data_tree: &'a DataTree<Name, Size>,
53    /// Format to be used to [`display`](size::Size::display) the sizes.
54    pub bytes_format: Size::DisplayFormat,
55    /// The direction of the visualization of the tree.
56    pub direction: Direction,
57    /// The alignment of the bars.
58    pub bar_alignment: BarAlignment,
59    /// Distribution and total number of characters/blocks can be placed in a line.
60    pub column_width_distribution: ColumnWidthDistribution,
61}
62
63mod copy;
64mod display;
65mod methods;