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