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
 
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&

◆ 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: