pub struct TextAtlas {
texture: Texture,
view: TextureView,
sampler: Sampler,
width: u32,
height: u32,
cpu_pixels: Vec<u8>,
cursor_x: u32,
cursor_y: u32,
row_h: u32,
glyphs: HashMap<GlyphKey, GlyphSlot>,
fonts: Vec<FontArc>,
dirty: bool,
}Expand description
GPU + CPU text atlas. Owned by TextPipeline.
Fields§
§texture: Texture§view: TextureView§sampler: Sampler§width: u32§height: u32§cpu_pixels: Vec<u8>CPU-side shadow of the atlas pixels — keeps the atlas
resident as a single Rgba8 buffer so partial updates don’t
require GPU-side readback. Alpha lands in .r, other channels
stay zero.
cursor_x: u32Next free pixel inside the current row.
cursor_y: u32Top of the current row.
row_h: u32Height of the tallest glyph placed in the current row — used
to advance cursor_y when the row fills up.
glyphs: HashMap<GlyphKey, GlyphSlot>§fonts: Vec<FontArc>§dirty: boolSet when Self::ensure_glyph grew the CPU pixel buffer.
Drives the queue.write_texture call on the next render.
Implementations§
Source§impl TextAtlas
impl TextAtlas
pub fn new(device: &Device, queue: &Queue) -> Self
Sourcefn ensure_glyph(
&mut self,
font: u32,
size_px: f32,
glyph_id: u16,
ch: char,
) -> Option<GlyphSlot>
fn ensure_glyph( &mut self, font: u32, size_px: f32, glyph_id: u16, ch: char, ) -> Option<GlyphSlot>
Rasterise a glyph into the atlas if not already cached. Returns
the cached slot — or None if rasterising failed (out-of-atlas
or zero-extent glyph like a space).
Sourcefn flush(&mut self, queue: &Queue)
fn flush(&mut self, queue: &Queue)
Push any pending atlas-pixel updates to the GPU. Cheap when
dirty == false (no-op, common case after warm-up).
Sourcepub fn glyph_count(&self) -> usize
pub fn glyph_count(&self) -> usize
Number of glyphs currently cached. Test surface.
Auto Trait Implementations§
impl Freeze for TextAtlas
impl !RefUnwindSafe for TextAtlas
impl Send for TextAtlas
impl Sync for TextAtlas
impl Unpin for TextAtlas
impl !UnwindSafe for TextAtlas
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more