Raxol.Terminal.Buffer.Scroll (Raxol v0.5.0)
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 a line to the scroll buffer.
Clears the scroll buffer.
Gets the total height of the scroll buffer.
Gets the current scroll position.
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.
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() }
Functions
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
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
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 current scroll position.
Examples
iex> scroll = Scroll.new(1000)
iex> Scroll.get_position(scroll)
0
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.