ttx 0.1.0
|
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 |
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).
|
inlineexplicit |
|
inline |
|
inline |
|
inline |
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).
void ttx::terminal::RowGroup::drop_graphics_id | ( | u16 & | id | ) |
void ttx::terminal::RowGroup::drop_hyperlink_id | ( | u16 & | id | ) |
void ttx::terminal::RowGroup::drop_multi_cell_id | ( | u16 & | id | ) |
|
inline |
|
inline |
auto ttx::terminal::RowGroup::graphics_rendition | ( | u16 | id | ) | const -> GraphicsRendition const& |
auto ttx::terminal::RowGroup::hyperlink | ( | u16 | id | ) | const -> Hyperlink const& |
|
inline |
|
inline |
auto ttx::terminal::RowGroup::maybe_allocate_graphics_id | ( | GraphicsRendition const & | rendition | ) | -> di::Optional<u16> |
auto ttx::terminal::RowGroup::maybe_allocate_hyperlink_id | ( | Hyperlink const & | hyperlink | ) | -> di::Optional<u16> |
auto ttx::terminal::RowGroup::maybe_allocate_multi_cell_id | ( | MultiCellInfo const & | multi_cell_info | ) | -> di::Optional<u16> |
auto ttx::terminal::RowGroup::maybe_hyperlink | ( | u16 | id | ) | const -> di::Optional<Hyperlink const&> |
|
inline |
auto ttx::terminal::RowGroup::multi_cell_info | ( | u16 | id | ) | const -> MultiCellInfo const& |
|
inline |
|
inline |
auto ttx::terminal::RowGroup::strip_trailing_empty_cells | ( | usize | row_index | ) | -> usize |
|
inline |
auto ttx::terminal::RowGroup::transfer_from | ( | RowGroup & | from, |
usize | from_index, | ||
usize | to_index, | ||
usize | row_count, | ||
di::Optional< u32 > | desired_cols = {} ) -> usize |
|
inline |
|
inline |
|
inline |