Struct CellDynamic

Source
#[repr(C, align(4))]
pub struct CellDynamic { /* private fields */ }
Expand description

Dynamic instance data for terminal cell appearance.

CellDynamic contains the frequently-changing visual data for each terminal cell, including the character glyph and colors. This data is updated whenever cell content changes and is efficiently uploaded to the GPU using dynamic buffer updates.

§Memory Layout

The 8-byte data array is packed as follows:

  • Bytes 0-1: Glyph depth/layer index (u16, little-endian)
  • Bytes 2-4: Foreground color RGB (3 bytes)
  • Bytes 5-7: Background color RGB (3 bytes)

This compact layout minimizes GPU memory usage and allows efficient instanced rendering of the entire terminal grid.

§Color Format

Colors are stored as RGB bytes (no alpha channel in the instance data). The alpha channel is handled separately in the shader based on glyph transparency from the texture atlas.

§GPU Usage

Uploaded as instance attributes and accessed in both vertex and fragment shaders for character selection and color application.

§Buffer Upload

Uploaded to GPU using GL::DYNAMIC_DRAW for efficient updates.

Implementations§

Source§

impl CellDynamic

Source

pub fn new(glyph_id: u16, fg: u32, bg: u32) -> Self

Source

pub fn style(&mut self, style_bits: u16)

Overwrites the current cell style bits with the provided style bits.

Source

pub fn flip_colors(&mut self)

Sets the foreground color of the cell.

Source

pub fn fg_color(&mut self, fg: u32)

Sets the foreground color of the cell.

Source

pub fn bg_color(&mut self, bg: u32)

Sets the background color of the cell.

Source

pub fn get_fg_color(&self) -> u32

Returns foreground color as a packed RGB value.

Source

pub fn get_bg_color(&self) -> u32

Returns background color as a packed RGB value.

Source

pub fn get_style(&self) -> u16

Trait Implementations§

Source§

impl Clone for CellDynamic

Source§

fn clone(&self) -> CellDynamic

Returns a duplicate of the value. Read more
1.0.0 · Source§

const fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CellDynamic

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for CellDynamic

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.