Raxol.Terminal.Buffer.Charset (Raxol v0.5.0)

View Source

Manages 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

t()

@type t() :: %Raxol.Terminal.Buffer.Charset{
  g0: atom(),
  g1: atom(),
  g2: atom(),
  g3: atom(),
  gl: atom(),
  gr: atom(),
  single_shift: atom() | nil
}

Functions

apply_single_shift(buffer, slot)

Applies a single shift to a specific G-set.

Parameters

  • buffer - The screen buffer to modify
  • slot - 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

designate(buffer, slot, charset)

Designates a character set to a specific slot.

Parameters

  • buffer - The screen buffer to modify
  • slot - 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

get_current_g_set(buffer)

@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

get_designated(buffer, slot)

@spec get_designated(Raxol.Terminal.ScreenBuffer.t(), atom()) :: atom()

Gets the designated character set for a specific slot.

Parameters

  • buffer - The screen buffer to query
  • slot - 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

get_single_shift(buffer)

@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

init()

@spec init() :: t()

Initializes a new charset state with default values.

invoke_g_set(buffer, slot)

Invokes a G-set for the left or right side.

Parameters

  • buffer - The screen buffer to modify
  • slot - 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

reset(buffer)

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

translate_char(buffer, char)

@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 translation
  • char - The character to translate

Returns

The translated character.

Examples

iex> buffer = ScreenBuffer.new(80, 24)
iex> Charset.translate_char(buffer, "A")
"A"