Struct glyph_brush::GlyphCalculator
source · pub struct GlyphCalculator<'font, H = DefaultSectionHasher> { /* private fields */ }
Expand description
Cut down version of a GlyphBrush
that can calculate pixel bounds,
but is unable to actually render anything.
Build using a GlyphCalculatorBuilder
.
Example
extern crate glyph_brush;
use glyph_brush::{GlyphCalculatorBuilder, GlyphCruncher, Section};
let dejavu: &[u8] = include_bytes!("../../fonts/DejaVuSans.ttf");
let glyphs = GlyphCalculatorBuilder::using_font_bytes(dejavu).build();
let section = Section {
text: "Hello glyph_brush",
..Section::default()
};
// create the scope, equivalent to a lock on the cache when
// dropped will clean unused cached calculations like a draw call
let mut scope = glyphs.cache_scope();
let bounds = scope.pixel_bounds(section);
Caching behaviour
Calls to GlyphCalculatorGuard::pixel_bounds
,
GlyphCalculatorGuard::glyphs
calculate the positioned glyphs for a
section. This is cached so future calls to any of the methods for the same section are much
cheaper.
Unlike a GlyphBrush
there is no concept of actually drawing
the section to imply when a section is used / no longer used. Instead a GlyphCalculatorGuard
is created, that provides the calculation functionality. Dropping indicates the ‘cache frame’
is over, similar to when a GlyphBrush
draws. Section calculations are cached for the next
‘cache frame’, if not used then they will be dropped.
Implementations
sourceimpl<'font, H: BuildHasher + Clone> GlyphCalculator<'font, H>
impl<'font, H: BuildHasher + Clone> GlyphCalculator<'font, H>
pub fn cache_scope<'a>(&'a self) -> GlyphCalculatorGuard<'a, 'font, H>
Trait Implementations
Auto Trait Implementations
impl<'font, H> RefUnwindSafe for GlyphCalculator<'font, H>where
H: RefUnwindSafe,
impl<'font, H> Send for GlyphCalculator<'font, H>where
H: Send,
impl<'font, H> Sync for GlyphCalculator<'font, H>where
H: Sync,
impl<'font, H> Unpin for GlyphCalculator<'font, H>where
H: Unpin,
impl<'font, H> UnwindSafe for GlyphCalculator<'font, H>where
H: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more