[][src]Struct glyph_brush::GlyphCalculator

pub struct GlyphCalculator<F = FontArc, X = Extra, H = DefaultSectionHasher> { /* fields omitted */ }

Cut down version of a GlyphBrush that can calculate pixel bounds, but is unable to actually render anything.

Build using a GlyphCalculatorBuilder.

Example

use glyph_brush::{ab_glyph::FontArc, GlyphCalculatorBuilder, GlyphCruncher, Section, Text};

let dejavu = FontArc::try_from_slice(include_bytes!("../../fonts/DejaVuSans.ttf")).unwrap();
let glyphs = GlyphCalculatorBuilder::using_font(dejavu).build();

let section = Section::default()
    .add_text(Text::new("Hello glyph_brush"));

// 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.glyph_bounds(section);

Caching behaviour

Calls to GlyphCalculatorGuard::glyph_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

impl<F: Font, X, H: BuildHasher + Clone> GlyphCalculator<F, X, H>[src]

pub fn cache_scope(&self) -> GlyphCalculatorGuard<'_, F, X, H>[src]

pub fn fonts(&self) -> &[F][src]

Returns the available fonts.

The FontId corresponds to the index of the font data.

Trait Implementations

impl<F, X, H> Debug for GlyphCalculator<F, X, H>[src]

Auto Trait Implementations

impl<F, X, H> RefUnwindSafe for GlyphCalculator<F, X, H> where
    F: RefUnwindSafe,
    H: RefUnwindSafe
[src]

impl<F, X, H> Send for GlyphCalculator<F, X, H> where
    F: Send,
    H: Send,
    X: Send
[src]

impl<F, X, H> Sync for GlyphCalculator<F, X, H> where
    F: Sync,
    H: Sync,
    X: Send
[src]

impl<F, X, H> Unpin for GlyphCalculator<F, X, H> where
    F: Unpin,
    H: Unpin,
    X: Unpin
[src]

impl<F, X, H> UnwindSafe for GlyphCalculator<F, X, H> where
    F: UnwindSafe,
    H: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T

type Init = T

The type for initializers.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,