Struct alacritty::renderer::text::atlas::Atlas

source ·
pub struct Atlas {
    id: c_uint,
    width: i32,
    height: i32,
    row_extent: i32,
    row_baseline: i32,
    row_tallest: i32,
    is_gles_context: bool,
}
Expand description

Manages a single texture atlas.

The strategy for filling an atlas looks roughly like this:

                          (width, height)
  ┌─────┬─────┬─────┬─────┬─────┐
  │ 10  │     │     │     │     │ <- Empty spaces; can be filled while
  │     │     │     │     │     │    glyph_height < height - row_baseline
  ├─────┼─────┼─────┼─────┼─────┤
  │ 5   │ 6   │ 7   │ 8   │ 9   │
  │     │     │     │     │     │
  ├─────┼─────┼─────┼─────┴─────┤ <- Row height is tallest glyph in row; this is
  │ 1   │ 2   │ 3   │ 4         │    used as the baseline for the following row.
  │     │     │     │           │ <- Row considered full when next glyph doesn't
  └─────┴─────┴─────┴───────────┘    fit in the row.
(0, 0)  x->

Fields§

§id: c_uint

Texture id for this atlas.

§width: i32

Width of atlas.

§height: i32

Height of atlas.

§row_extent: i32

Left-most free pixel in a row.

This is called the extent because it is the upper bound of used pixels in a row.

§row_baseline: i32

Baseline for glyphs in the current row.

§row_tallest: i32

Tallest glyph in current row.

This is used as the advance when end of row is reached.

§is_gles_context: bool

Gles context.

This affects the texture loading.

Implementations§

source§

impl Atlas

source

pub fn new(size: i32, is_gles_context: bool) -> Self

source

pub fn clear(&mut self)

source

pub fn insert( &mut self, glyph: &RasterizedGlyph, active_tex: &mut u32, ) -> Result<Glyph, AtlasInsertError>

Insert a RasterizedGlyph into the texture atlas.

source

fn insert_inner( &mut self, glyph: &RasterizedGlyph, active_tex: &mut u32, ) -> Glyph

Insert the glyph without checking for room.

Internal function for use once atlas has been checked for space. GL errors could still occur at this point if we were checking for them; hence, the Result.

source

pub fn room_in_row(&self, raw: &RasterizedGlyph) -> bool

Check if there’s room in the current row for given glyph.

source

pub fn advance_row(&mut self) -> Result<(), AtlasInsertError>

Mark current row as finished and prepare to insert into the next row.

source

pub fn load_glyph( active_tex: &mut c_uint, atlas: &mut Vec<Atlas>, current_atlas: &mut usize, rasterized: &RasterizedGlyph, ) -> Glyph

Load a glyph into a texture atlas.

If the current atlas is full, a new one will be created.

source

pub fn clear_atlas(atlas: &mut [Atlas], current_atlas: &mut usize)

Trait Implementations§

source§

impl Debug for Atlas

source§

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

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

impl Drop for Atlas

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for Atlas

§

impl RefUnwindSafe for Atlas

§

impl Send for Atlas

§

impl Sync for Atlas

§

impl Unpin for Atlas

§

impl UnwindSafe for Atlas

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> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more