ttx 0.1.0
Loading...
Searching...
No Matches
ttx::terminal::RowGroup Class Reference

Represents a group of terminal rows. More...

#include <ttx/terminal/row_group.h>

Public Member Functions

 RowGroup ()
 
auto rows () -> di::Ring< Row > &
 
auto rows () const -> di::Ring< Row > const &
 
auto empty () const -> bool
 
auto total_rows () const
 
auto reflow (u64 absolute_row_start, u32 target_width) -> ReflowResult
 Adjust each row in the group according to the new target width.
 
void drop_graphics_id (u16 &id)
 
void drop_hyperlink_id (u16 &id)
 
void drop_multi_cell_id (u16 &id)
 
auto graphics_rendition (u16 id) const -> GraphicsRendition const &
 
auto hyperlink (u16 id) const -> Hyperlink const &
 
auto maybe_hyperlink (u16 id) const -> di::Optional< Hyperlink const & >
 
auto multi_cell_info (u16 id) const -> MultiCellInfo const &
 
auto graphics_id (GraphicsRendition const &rendition) -> di::Optional< u16 >
 
auto use_graphics_id (u16 id) -> u16
 
auto allocate_graphics_id (GraphicsRendition const &rendition) -> di::Optional< u16 >
 
auto maybe_allocate_graphics_id (GraphicsRendition const &rendition) -> di::Optional< u16 >
 
auto hyperlink_id (di::String const &hyperlink_id) -> di::Optional< u16 >
 
auto use_hyperlink_id (u16 id) -> u16
 
auto allocate_hyperlink_id (Hyperlink &&hyperlink) -> di::Optional< u16 >
 
auto maybe_allocate_hyperlink_id (Hyperlink const &hyperlink) -> di::Optional< u16 >
 
auto multi_cell_id (MultiCellInfo const &multi_cell_info) -> di::Optional< u16 >
 
auto use_multi_cell_id (u16 id) -> u16
 
auto allocate_multi_cell_id (MultiCellInfo const &multi_cell_info) -> di::Optional< u16 >
 
auto maybe_allocate_multi_cell_id (MultiCellInfo const &multi_cell_info) -> di::Optional< u16 >
 
auto transfer_from (RowGroup &from, usize from_index, usize to_index, usize row_count, di::Optional< u32 > desired_cols={}) -> usize
 
auto strip_trailing_empty_cells (usize row_index) -> usize
 
void drop_cell (Cell &cell)
 
auto iterate_row (u32 row) const
 

Detailed Description

Represents a group of terminal rows.

An invidual screen will have 1 active row group and potentially several additional row groups which store the scroll back history. Within a row group, attributes like the graphics rendition and hyperlink information are deduplicated using an IdMap.

Internally, rows are stored in a ring buffer to speed up certain operations during resizing (specifically inserting rows at the start of the group).

Constructor & Destructor Documentation

◆ RowGroup()

ttx::terminal::RowGroup::RowGroup ( )
inlineexplicit

Member Function Documentation

◆ allocate_graphics_id()

auto ttx::terminal::RowGroup::allocate_graphics_id ( GraphicsRendition const & rendition) -> di::Optional<u16>
inline

◆ allocate_hyperlink_id()

auto ttx::terminal::RowGroup::allocate_hyperlink_id ( Hyperlink && hyperlink) -> di::Optional<u16>
inline

◆ allocate_multi_cell_id()

auto ttx::terminal::RowGroup::allocate_multi_cell_id ( MultiCellInfo const & multi_cell_info) -> di::Optional<u16>
inline

◆ drop_cell()

void ttx::terminal::RowGroup::drop_cell ( Cell & cell)

This function does not remove the text associated with the cell, as the caller typically has enough context to do this more efficiently (because they are erasing multiple cells).

◆ drop_graphics_id()

void ttx::terminal::RowGroup::drop_graphics_id ( u16 & id)

◆ drop_hyperlink_id()

void ttx::terminal::RowGroup::drop_hyperlink_id ( u16 & id)

◆ drop_multi_cell_id()

void ttx::terminal::RowGroup::drop_multi_cell_id ( u16 & id)

◆ empty()

auto ttx::terminal::RowGroup::empty ( ) const -> bool
inline

◆ graphics_id()

auto ttx::terminal::RowGroup::graphics_id ( GraphicsRendition const & rendition) -> di::Optional<u16>
inline

◆ graphics_rendition()

auto ttx::terminal::RowGroup::graphics_rendition ( u16 id) const -> GraphicsRendition const&

◆ hyperlink()

auto ttx::terminal::RowGroup::hyperlink ( u16 id) const -> Hyperlink const&

◆ hyperlink_id()

auto ttx::terminal::RowGroup::hyperlink_id ( di::String const & hyperlink_id) -> di::Optional<u16>
inline

◆ iterate_row()

auto ttx::terminal::RowGroup::iterate_row ( u32 row) const
inline

◆ maybe_allocate_graphics_id()

auto ttx::terminal::RowGroup::maybe_allocate_graphics_id ( GraphicsRendition const & rendition) -> di::Optional<u16>

◆ maybe_allocate_hyperlink_id()

auto ttx::terminal::RowGroup::maybe_allocate_hyperlink_id ( Hyperlink const & hyperlink) -> di::Optional<u16>

◆ maybe_allocate_multi_cell_id()

auto ttx::terminal::RowGroup::maybe_allocate_multi_cell_id ( MultiCellInfo const & multi_cell_info) -> di::Optional<u16>

◆ maybe_hyperlink()

auto ttx::terminal::RowGroup::maybe_hyperlink ( u16 id) const -> di::Optional<Hyperlink const&>

◆ multi_cell_id()

auto ttx::terminal::RowGroup::multi_cell_id ( MultiCellInfo const & multi_cell_info) -> di::Optional<u16>
inline

◆ multi_cell_info()

auto ttx::terminal::RowGroup::multi_cell_info ( u16 id) const -> MultiCellInfo const&

◆ reflow()

auto ttx::terminal::RowGroup::reflow ( u64 absolute_row_start,
u32 target_width ) -> ReflowResult

Adjust each row in the group according to the new target width.

This function is likely to change the number of rows in the group. The return value should be used to adjust any coordinates referenced by the screen, as they are invalidated by this operation.

◆ rows() [1/2]

auto ttx::terminal::RowGroup::rows ( ) -> di::Ring<Row>&
inline

◆ rows() [2/2]

auto ttx::terminal::RowGroup::rows ( ) const -> di::Ring<Row> const&
inline

◆ strip_trailing_empty_cells()

auto ttx::terminal::RowGroup::strip_trailing_empty_cells ( usize row_index) -> usize

◆ total_rows()

auto ttx::terminal::RowGroup::total_rows ( ) const
inline

◆ transfer_from()

auto ttx::terminal::RowGroup::transfer_from ( RowGroup & from,
usize from_index,
usize to_index,
usize row_count,
di::Optional< u32 > desired_cols = {} ) -> usize

◆ use_graphics_id()

auto ttx::terminal::RowGroup::use_graphics_id ( u16 id) -> u16
inline

◆ use_hyperlink_id()

auto ttx::terminal::RowGroup::use_hyperlink_id ( u16 id) -> u16
inline

◆ use_multi_cell_id()

auto ttx::terminal::RowGroup::use_multi_cell_id ( u16 id) -> u16
inline

The documentation for this class was generated from the following files: