Raxol.Terminal.Buffer.Scroll (Raxol v2.0.1)
View SourceTerminal scroll buffer module.
This module handles the management of terminal scrollback buffers, including:
- Virtual scrolling implementation
- Memory-efficient buffer management
- Scroll position tracking
- Buffer compression
Summary
Functions
Adds content (multiple lines) to the scroll buffer.
Adds a line to the scroll buffer.
Cleans up the scroll buffer.
Clears the scroll buffer.
Clears the scroll region.
Gets the total height of the scroll buffer.
Gets the memory usage of the scroll buffer.
Gets the current scroll position.
Gets the size of the scroll buffer.
Gets a view of the scroll buffer at the current position.
Gets the visible region of the scroll buffer.
Creates a new scroll buffer with the given dimensions.
Resizes the scroll buffer to the new height.
Scrolls the buffer by the given amount.
Scrolls the buffer in the specified direction by the given amount.
Updates the maximum height of the scroll buffer. Trims the buffer if the new max height is smaller than the current content.
Sets the scroll region.
Types
@type t() :: %Raxol.Terminal.Buffer.Scroll{ buffer: [[Raxol.Terminal.Cell.t()]], compression_ratio: float(), height: non_neg_integer(), max_height: non_neg_integer(), memory_limit: non_neg_integer(), memory_usage: non_neg_integer(), position: non_neg_integer(), scroll_region: {non_neg_integer(), non_neg_integer()} | nil }
Functions
Adds content (multiple lines) to the scroll buffer.
Adds a line to the scroll buffer.
Examples
iex> scroll = Scroll.new(1000)
iex> line = [Cell.new("A"), Cell.new("B")]
iex> scroll = Scroll.add_line(scroll, line)
iex> scroll.height
1
Cleans up the scroll buffer.
Clears the scroll buffer.
Examples
iex> scroll = Scroll.new(1000)
iex> line = [Cell.new("A"), Cell.new("B")]
iex> scroll = Scroll.add_line(scroll, line)
iex> scroll = Scroll.clear(scroll)
iex> scroll.height
0
Clears the scroll region.
Examples
iex> scroll = Scroll.new(1000)
iex> scroll = Scroll.set_scroll_region(scroll, 1, 5)
iex> scroll = Scroll.clear_scroll_region(scroll)
iex> scroll.scroll_region
nil
Gets the total height of the scroll buffer.
Examples
iex> scroll = Scroll.new(1000)
iex> line = [Cell.new("A"), Cell.new("B")]
iex> scroll = Scroll.add_line(scroll, line)
iex> Scroll.get_height(scroll)
1
Gets the memory usage of the scroll buffer.
Gets the current scroll position.
Examples
iex> scroll = Scroll.new(1000)
iex> Scroll.get_position(scroll)
0
Gets the size of the scroll buffer.
Gets a view of the scroll buffer at the current position.
Examples
iex> scroll = Scroll.new(1000)
iex> line = [Cell.new("A"), Cell.new("B")]
iex> scroll = Scroll.add_line(scroll, line)
iex> view = Scroll.get_view(scroll, 10)
iex> length(view)
1
Gets the visible region of the scroll buffer.
Creates a new scroll buffer with the given dimensions.
Examples
iex> scroll = Scroll.new(1000)
iex> scroll.max_height
1000
iex> scroll.position
0
Resizes the scroll buffer to the new height.
Scrolls the buffer by the given amount.
Examples
iex> scroll = Scroll.new(1000)
iex> line = [Cell.new("A"), Cell.new("B")]
iex> scroll = Scroll.add_line(scroll, line)
iex> scroll = Scroll.scroll(scroll, 5)
iex> scroll.position
5
Scrolls the buffer in the specified direction by the given amount.
Updates the maximum height of the scroll buffer. Trims the buffer if the new max height is smaller than the current content.
Sets the scroll region.
Parameters
- scroll: The scroll buffer
- top: Top boundary of the scroll region
- bottom: Bottom boundary of the scroll region
Examples
iex> scroll = Scroll.new(1000)
iex> scroll = Scroll.set_scroll_region(scroll, 1, 5)
iex> scroll.scroll_region
{1, 5}