Defines the behaviour for screen buffer operations in the terminal. This module specifies the callbacks that must be implemented by any module that wants to act as a screen buffer.
Summary
Types
@type charset() :: atom()
@type color() :: {non_neg_integer(), non_neg_integer(), non_neg_integer()}
@type dimensions() :: {non_neg_integer(), non_neg_integer()}
@type metric() :: atom()
@type metric_tags() :: map()
@type metric_value() :: number()
@type position() :: {non_neg_integer(), non_neg_integer()}
@type style() :: map() | nil
@type t() :: term()
Callbacks
@callback clear_line(buffer :: t(), line :: non_neg_integer()) :: t()
@callback current_theme() :: map()
@callback get_cell( buffer :: t(), x :: non_neg_integer(), y :: non_neg_integer() ) :: map()
@callback get_char( buffer :: t(), x :: non_neg_integer(), y :: non_neg_integer() ) :: String.t()
@callback get_config() :: map()
@callback get_dimensions(buffer :: t()) :: dimensions()
@callback get_height(buffer :: t()) :: non_neg_integer()
@callback get_metric(buffer :: t(), metric :: metric(), tags :: metric_tags()) :: metric_value()
@callback get_metric_value(buffer :: t(), metric :: metric()) :: metric_value()
@callback get_preferences() :: map()
@callback get_saved_states_count(buffer :: t()) :: non_neg_integer()
@callback get_scroll_position(buffer :: t()) :: non_neg_integer()
@callback get_scroll_region_boundaries(buffer :: t()) :: {non_neg_integer(), non_neg_integer()}
@callback get_size(buffer :: t()) :: dimensions()
@callback get_update_settings() :: map()
@callback get_width(buffer :: t()) :: non_neg_integer()
@callback handle_debounced_events( buffer :: t(), events :: [map()], timeout :: non_neg_integer() ) :: t()
@callback light_theme() :: map()
@callback mark_damaged( buffer :: t(), x :: non_neg_integer(), y :: non_neg_integer(), width :: non_neg_integer(), height :: non_neg_integer() ) :: t()
@callback new(width :: non_neg_integer(), height :: non_neg_integer()) :: t()
@callback record_metric( buffer :: t(), metric :: metric(), value :: metric_value(), tags :: metric_tags() ) :: t()
@callback record_operation( buffer :: t(), operation :: atom(), value :: metric_value() ) :: t()
@callback record_performance( buffer :: t(), metric :: metric(), value :: metric_value() ) :: t()
@callback record_resource( buffer :: t(), resource :: atom(), value :: metric_value() ) :: t()
@callback scroll_down(buffer :: t(), lines :: non_neg_integer()) :: t()
@callback scroll_up(buffer :: t(), lines :: non_neg_integer()) :: t()
@callback set_config(config :: map()) :: :ok
@callback set_preferences(preferences :: map()) :: :ok
@callback set_scroll_region( buffer :: t(), start_line :: non_neg_integer(), end_line :: non_neg_integer() ) :: t()
@callback write_char( buffer :: t(), x :: non_neg_integer(), y :: non_neg_integer(), char :: String.t(), style :: style() ) :: t()
@callback write_string( buffer :: t(), x :: non_neg_integer(), y :: non_neg_integer(), string :: String.t(), style :: style() ) :: t()