Struct Resizer

Source
pub struct Resizer {
    pub table_width: i32,
    pub table_height: i32,
    pub headers: Vec<String>,
    pub all_rows: Vec<Vec<String>>,
    pub row_heights: Vec<usize>,
    pub columns: Vec<ResizerColumn>,
    pub wrap: bool,
    pub border_column: bool,
    pub y_paddings: Vec<Vec<usize>>,
}
Expand description

A comprehensive table resizing engine that calculates optimal layouts.

The Resizer analyzes table content, applies constraints, and computes the best possible layout for tables within specified dimensions. It handles content analysis, width distribution, padding calculations, and height management to create well-formatted tables.

Fields§

§table_width: i32

Target width for the entire table in characters.

§table_height: i32

Target height for the table (used for height constraints).

§headers: Vec<String>

Column headers as strings (empty if no headers).

§all_rows: Vec<Vec<String>>

All table rows including headers, organized as vectors of cell content.

§row_heights: Vec<usize>

Calculated height for each row in the table.

§columns: Vec<ResizerColumn>

Column analysis data with width statistics and content.

§wrap: bool

Whether text wrapping is enabled for content that exceeds column width.

§border_column: bool

Whether column separators/borders are enabled between columns.

§y_paddings: Vec<Vec<usize>>

Vertical padding requirements for each cell, organized by row.

Implementations§

Source§

impl Resizer

Source

pub fn new( table_width: i32, table_height: i32, headers: Vec<String>, rows: Vec<Vec<String>>, ) -> Self

Creates a new table resizer with the specified dimensions and content.

This constructor initializes a complete resizing system that analyzes the provided table content to determine optimal column widths and row heights. It processes both headers and data rows, calculating statistical information (min, max, median) for each column to enable intelligent resizing decisions.

The resizer automatically:

  • Combines headers and data rows into a unified structure
  • Creates ResizerColumn instances for each column in the content
  • Calculates width statistics (min, max, median) for each column
  • Prepares the foundation for width optimization algorithms
§Arguments
  • table_width - Target width for the entire table in characters
  • table_height - Target height for the table (used for future height constraints)
  • headers - Column headers as strings (can be empty if no headers)
  • rows - Data rows, where each row is a vector of cell content strings
§Returns

Returns a new Resizer instance ready for width optimization, with:

  • All content processed and stored in all_rows
  • Column analysis completed with width statistics
  • Default settings for wrapping and borders enabled
§Examples
use lipgloss_table::resizing::Resizer;

let headers = vec!["Name".to_string(), "Age".to_string()];
let rows = vec![
    vec!["Alice".to_string(), "30".to_string()],
    vec!["Bob".to_string(), "25".to_string()],
];

let resizer = Resizer::new(80, 24, headers, rows);
assert_eq!(resizer.table_width, 80);
assert_eq!(resizer.columns.len(), 2);
assert_eq!(resizer.all_rows.len(), 3); // headers + 2 data rows
§Notes
  • If headers is empty, only data rows will be processed
  • The number of columns is determined by the row with the most cells
  • Column width calculations use Unicode-aware width detection
  • The resizer defaults to enabling text wrapping and column borders
Source

pub fn default_row_heights(&self) -> Vec<usize>

Returns the default row heights (all 1).

Source

pub fn detect_table_width(&self) -> i32

Detects the table width automatically based on content.

Source

pub fn max_total(&self) -> usize

Returns the total width with maximum column widths.

Source

pub fn max_column_widths(&self) -> Vec<usize>

Returns the maximum column widths.

Source

pub fn total_horizontal_border(&self) -> usize

Calculates total horizontal border width.

Source

pub fn optimized_widths(&mut self) -> (Vec<usize>, Vec<usize>)

Main method to get optimized column widths and row heights.

Trait Implementations§

Source§

impl Debug for Resizer

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.