Crate glyph_brush

source ·
Expand description
extern crate glyph_brush;

use glyph_brush::{BrushAction, BrushError, GlyphBrushBuilder, Section};

let dejavu: &[u8] = include_bytes!("../../fonts/DejaVuSans.ttf");
let mut glyph_brush = GlyphBrushBuilder::using_font_bytes(dejavu).build();

glyph_brush.queue(Section {
    text: "Hello glyph_brush",
    ..Section::default()
});
glyph_brush.queue(some_other_section);

match glyph_brush.process_queued(
    screen_dimensions,
    |rect, tex_data| update_texture(rect, tex_data),
    |vertex_data| into_vertex(vertex_data),
) {
    Ok(BrushAction::Draw(vertices)) => {
        // Draw new vertices.
    }
    Ok(BrushAction::ReDraw) => {
        // Re-draw last frame's vertices unmodified.
    }
    Err(BrushError::TextureTooSmall { suggested }) => {
        // Enlarge texture + glyph_brush texture cache and retry.
    }
}

Modules

Re-exported rusttype types.

Macros

Macro to delegate builder methods to an inner glyph_brush::GlyphBrushBuilder

Structs

Id for a font
Object allowing glyph drawing, containing cache state. Manages glyph positioning cacheing, glyph draw caching & efficient GPU texture cache updating.
Cut down version of a GlyphBrush that can calculate pixel bounds, but is unable to actually render anything.
Data used to generate vertex information for a single glyph
An object that contains all the info to render a section of text.
An object that contains all the info to render a varied section of text. That is one including many parts with differing fonts/scales/colors bowing to a single layout.

Enums

Actions that should be taken after processing queue data
Built-in linebreaking logic.
Describes horizontal alignment preference for positioning & bounds.
Built-in GlyphPositioner implementations.
Indicator that a character is a line break, soft or hard. Includes the offset (byte-index) position.
Describes vertical alignment preference for positioning & bounds. Currently a placeholder for future functionality.

Traits

Mapper of FontId -> Font
Common glyph layout logic.
Logic to calculate glyph positioning using Font, SectionGeometry and SectionText.
Producer of a LineBreak iterator. Used to allow to the Layout to be line break aware in a generic way.

Type Definitions

RGBA [0, 1] color data.
A “practically collision free” Section hasher