Raxol.Terminal.ScreenBufferBehaviour behaviour (Raxol v0.5.0)
View SourceDefines 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()