Raxol.Terminal.Buffer.DamageTracker (Raxol v2.0.1)

View Source

Tracks damage regions in a terminal buffer for efficient rendering. Damage regions indicate areas that have changed and need to be redrawn.

Summary

Functions

Adds a damage region to the tracker.

Adds multiple damage regions at once.

Clears all damage regions.

Returns the count of damage regions.

Gets all damage regions.

Checks if there are any damage regions.

Merges overlapping or adjacent regions to reduce redundancy.

Creates a new damage tracker with a maximum region limit.

Types

region()

t()

@type t() :: %Raxol.Terminal.Buffer.DamageTracker{
  max_regions: non_neg_integer(),
  regions: [region()]
}

Functions

add_damage_region(tracker, x, y, width, height)

@spec add_damage_region(
  t(),
  non_neg_integer(),
  non_neg_integer(),
  non_neg_integer(),
  non_neg_integer()
) :: t()

Adds a damage region to the tracker.

add_damage_regions(tracker, new_regions)

@spec add_damage_regions(t(), [region()]) :: t()

Adds multiple damage regions at once.

clear_damage(tracker)

@spec clear_damage(t()) :: t()

Clears all damage regions.

damage_count(tracker)

@spec damage_count(t()) :: non_neg_integer()

Returns the count of damage regions.

get_damage_regions(tracker)

@spec get_damage_regions(t()) :: [region()]

Gets all damage regions.

has_damage?(tracker)

@spec has_damage?(t()) :: boolean()

Checks if there are any damage regions.

merge_regions(tracker)

@spec merge_regions(t()) :: t()

Merges overlapping or adjacent regions to reduce redundancy.

new(max_regions \\ 100)

@spec new(non_neg_integer()) :: t()

Creates a new damage tracker with a maximum region limit.