Skip to main content

TextRender

Trait TextRender 

Source
pub trait TextRender {
    // Required methods
    fn prepare(&mut self, text: &Text) -> TextBuffer;
    fn draw_text(&mut self, buffer: &mut TextBuffer, position: Vec2);
    fn render(&mut self, render_pass: &mut RenderPass<'_>);
    fn measure_text(&self, text: &Text) -> (f32, f32);
    fn set_viewport(&mut self, viewport: Viewport);
    fn buffer_bounds(&self, buffer: &TextBuffer) -> (f32, f32);
}
Expand description

Common trait for text renderers.

This trait defines the interface shared by all text renderer implementations. Use this trait for generic code that needs to work with any text renderer.

§Example

fn render_ui<R: TextRender>(renderer: &mut R, render_pass: &mut wgpu::RenderPass) {
    let text = Text::new("Hello").size(16.0);
    let mut buffer = renderer.prepare(&text);
    renderer.draw_text(&mut buffer, Vec2::new(10.0, 10.0));
    renderer.render(render_pass);
}

Required Methods§

Source

fn prepare(&mut self, text: &Text) -> TextBuffer

Prepare text for rendering.

Returns a TextBuffer that can be cached and reused for rendering the same text multiple times.

Source

fn draw_text(&mut self, buffer: &mut TextBuffer, position: Vec2)

Draw text at a position.

The position represents the top-left corner of the text’s bounding box.

Source

fn render(&mut self, render_pass: &mut RenderPass<'_>)

Render all queued text to the given render pass.

Source

fn measure_text(&self, text: &Text) -> (f32, f32)

Measure text dimensions without rendering.

Source

fn set_viewport(&mut self, viewport: Viewport)

Set the viewport for rendering.

Source

fn buffer_bounds(&self, buffer: &TextBuffer) -> (f32, f32)

Get the logical (unscaled) bounds of a prepared text buffer.

Implementors§