Raxol.Terminal.Buffer.Charset (Raxol v0.5.0)
View SourceManages character set state and operations for the screen buffer. This module handles character set designations, G-sets, and single shifts.
Summary
Functions
Applies a single shift to a specific G-set.
Designates a character set to a specific slot.
Gets the current G-set.
Gets the designated character set for a specific slot.
Gets the current single shift.
Initializes a new charset state with default values.
Invokes a G-set for the left or right side.
Resets the charset state to default values.
Translates a character according to the current charset state.
Types
Functions
@spec apply_single_shift(Raxol.Terminal.ScreenBuffer.t(), atom()) :: Raxol.Terminal.ScreenBuffer.t()
Applies a single shift to a specific G-set.
Parameters
buffer
- The screen buffer to modifyslot
- The G-set to shift to (:g0, :g1, :g2, or :g3)
Returns
The updated screen buffer with new single shift.
Examples
iex> buffer = ScreenBuffer.new(80, 24)
iex> buffer = Charset.apply_single_shift(buffer, :g1)
iex> Charset.get_single_shift(buffer)
:g1
@spec designate(Raxol.Terminal.ScreenBuffer.t(), atom(), atom()) :: Raxol.Terminal.ScreenBuffer.t()
Designates a character set to a specific slot.
Parameters
buffer
- The screen buffer to modifyslot
- The slot to designate (:g0, :g1, :g2, or :g3)charset
- The character set to designate
Returns
The updated screen buffer with new charset designation.
Examples
iex> buffer = ScreenBuffer.new(80, 24)
iex> buffer = Charset.designate(buffer, :g0, :us_ascii)
iex> Charset.get_designated(buffer, :g0)
:us_ascii
@spec get_current_g_set(Raxol.Terminal.ScreenBuffer.t()) :: atom()
Gets the current G-set.
Parameters
buffer
- The screen buffer to query
Returns
The current G-set.
Examples
iex> buffer = ScreenBuffer.new(80, 24)
iex> Charset.get_current_g_set(buffer)
:g0
@spec get_designated(Raxol.Terminal.ScreenBuffer.t(), atom()) :: atom()
Gets the designated character set for a specific slot.
Parameters
buffer
- The screen buffer to queryslot
- The slot to query (:g0, :g1, :g2, or :g3)
Returns
The designated character set for the slot.
Examples
iex> buffer = ScreenBuffer.new(80, 24)
iex> Charset.get_designated(buffer, :g0)
:us_ascii
@spec get_single_shift(Raxol.Terminal.ScreenBuffer.t()) :: atom() | nil
Gets the current single shift.
Parameters
buffer
- The screen buffer to query
Returns
The current single shift or nil if none is active.
Examples
iex> buffer = ScreenBuffer.new(80, 24)
iex> Charset.get_single_shift(buffer)
nil
@spec init() :: t()
Initializes a new charset state with default values.
@spec invoke_g_set(Raxol.Terminal.ScreenBuffer.t(), atom()) :: Raxol.Terminal.ScreenBuffer.t()
Invokes a G-set for the left or right side.
Parameters
buffer
- The screen buffer to modifyslot
- The G-set to invoke (:g0, :g1, :g2, or :g3)
Returns
The updated screen buffer with new G-set invocation.
Examples
iex> buffer = ScreenBuffer.new(80, 24)
iex> buffer = Charset.invoke_g_set(buffer, :g1)
iex> Charset.get_current_g_set(buffer)
:g1
@spec reset(Raxol.Terminal.ScreenBuffer.t()) :: Raxol.Terminal.ScreenBuffer.t()
Resets the charset state to default values.
Parameters
buffer
- The screen buffer to modify
Returns
The updated screen buffer with reset charset state.
Examples
iex> buffer = ScreenBuffer.new(80, 24)
iex> buffer = Charset.reset(buffer)
iex> Charset.get_current_g_set(buffer)
:g0
@spec translate_char(Raxol.Terminal.ScreenBuffer.t(), String.t()) :: String.t()
Translates a character according to the current charset state.
Parameters
buffer
- The screen buffer to use for translationchar
- The character to translate
Returns
The translated character.
Examples
iex> buffer = ScreenBuffer.new(80, 24)
iex> Charset.translate_char(buffer, "A")
"A"