pub struct GlyphCache {
cache: HashMap<GlyphKey, Glyph, RandomState>,
rasterizer: Rasterizer,
pub font_key: FontKey,
pub bold_key: FontKey,
pub italic_key: FontKey,
pub bold_italic_key: FontKey,
pub font_size: Size,
font_offset: Delta<i8>,
glyph_offset: Delta<i8>,
metrics: Metrics,
builtin_box_drawing: bool,
}
Expand description
Naïve glyph cache.
Currently only keyed by char
, and thus not possible to hold different
representations of the same code point.
Fields§
§cache: HashMap<GlyphKey, Glyph, RandomState>
Cache of buffered glyphs.
rasterizer: Rasterizer
Rasterizer for loading new glyphs.
font_key: FontKey
Regular font.
bold_key: FontKey
Bold font.
italic_key: FontKey
Italic font.
bold_italic_key: FontKey
Bold italic font.
font_size: Size
Font size.
font_offset: Delta<i8>
Font offset.
glyph_offset: Delta<i8>
Glyph offset.
metrics: Metrics
Font metrics.
builtin_box_drawing: bool
Whether to use the built-in font for box drawing characters.
Implementations§
Source§impl GlyphCache
impl GlyphCache
pub fn new(rasterizer: Rasterizer, font: &Font) -> Result<GlyphCache, Error>
fn load_glyphs_for_font<L: LoadGlyph>(&mut self, font: FontKey, loader: &mut L)
Sourcefn compute_font_keys(
font: &Font,
rasterizer: &mut Rasterizer,
) -> Result<(FontKey, FontKey, FontKey, FontKey), Error>
fn compute_font_keys( font: &Font, rasterizer: &mut Rasterizer, ) -> Result<(FontKey, FontKey, FontKey, FontKey), Error>
Computes font keys for (Regular, Bold, Italic, Bold Italic).
fn load_regular_font( rasterizer: &mut Rasterizer, description: &FontDesc, size: Size, ) -> Result<FontKey, Error>
fn make_desc(desc: &FontDescription, slant: Slant, weight: Weight) -> FontDesc
Sourcepub fn get<L>(
&mut self,
glyph_key: GlyphKey,
loader: &mut L,
show_missing: bool,
) -> Glyph
pub fn get<L>( &mut self, glyph_key: GlyphKey, loader: &mut L, show_missing: bool, ) -> Glyph
Get a glyph from the font.
If the glyph has never been loaded before, it will be rasterized and inserted into the cache.
§Errors
This will fail when the glyph could not be rasterized. Usually this is due to the glyph not being present in any font.
Sourcepub fn load_glyph<L>(&self, loader: &mut L, glyph: RasterizedGlyph) -> Glyph
pub fn load_glyph<L>(&self, loader: &mut L, glyph: RasterizedGlyph) -> Glyph
Load glyph into the atlas.
This will apply all transforms defined for the glyph cache to the rasterized glyph before
Sourcepub fn reset_glyph_cache<L: LoadGlyph>(&mut self, loader: &mut L)
pub fn reset_glyph_cache<L: LoadGlyph>(&mut self, loader: &mut L)
Reset currently cached data in both GL and the registry to default state.
Sourcepub fn update_font_size(&mut self, font: &Font) -> Result<(), Error>
pub fn update_font_size(&mut self, font: &Font) -> Result<(), Error>
Update the inner font size.
NOTE: To reload the renderers’s fonts Self::reset_glyph_cache
should be called
afterwards.
pub fn font_metrics(&self) -> Metrics
Sourcepub fn load_common_glyphs<L: LoadGlyph>(&mut self, loader: &mut L)
pub fn load_common_glyphs<L: LoadGlyph>(&mut self, loader: &mut L)
Prefetch glyphs that are almost guaranteed to be loaded anyways.
Auto Trait Implementations§
impl Freeze for GlyphCache
impl RefUnwindSafe for GlyphCache
impl Send for GlyphCache
impl !Sync for GlyphCache
impl Unpin for GlyphCache
impl UnwindSafe for GlyphCache
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.