pretext-egui 0.1.0

egui renderer and widget helpers for Pretext paragraph layouts.
Documentation

pretext-egui

egui painting helpers for layouts produced by pretext.

pretext-egui provides an EguiPretextRenderer, paragraph paint options, a paragraph widget, glyph atlas-backed painting, and texture rasterization utilities. It is designed for apps that want to measure text with pretext and paint the resulting glyph runs inside egui.

Install

[dependencies]
pretext = "0.1.0"
pretext-egui = "0.1.0"

Paint a paragraph in an egui::Ui

use pretext::{PretextEngine, PretextParagraphOptions, PretextStyle};
use pretext_egui::{EguiPretextPaintOptions, EguiPretextRenderer};

fn draw_pretext(ui: &mut egui::Ui, renderer: &mut EguiPretextRenderer) {
    let engine = PretextEngine::builder().build();
    let style = PretextStyle {
        families: vec!["Arial".to_owned()],
        size_px: 18.0,
        weight: 400,
        italic: false,
    };
    let prepared = engine.prepare_paragraph(
        "Hello from pretext-egui.",
        &style,
        &PretextParagraphOptions::default(),
    );
    let layout = engine.layout_paragraph(&prepared, ui.available_width(), 24.0);
    let paint = EguiPretextPaintOptions::new(&style, 24.0).color(egui::Color32::WHITE);

    renderer.paint_paragraph(ui.painter(), ui.min_rect().min, &layout, &paint, ui.ctx(), &engine);
}

Use the widget adapter

# use pretext::{PretextEngine, PretextParagraphOptions, PretextStyle};
# use pretext_egui::EguiPretextRenderer;
# fn show(ui: &mut egui::Ui, renderer: &mut EguiPretextRenderer) {
# let engine = PretextEngine::builder().build();
# let style = PretextStyle { families: vec!["Arial".to_owned()], size_px: 18.0, weight: 400, italic: false };
# let prepared = engine.prepare_paragraph("Widget text", &style, &PretextParagraphOptions::default());
# let layout = engine.layout_paragraph(&prepared, ui.available_width(), 24.0);
ui.add(
    renderer
        .paragraph(&layout, &style, 24.0, &engine)
        .desired_width(ui.available_width())
        .color(egui::Color32::WHITE),
);
# }

Fonts and assets

pretext-egui includes a small sample font/SVG asset set under experimental::demo_assets for examples and tests. Production apps should normally provide their own fonts to PretextEngine and configure their own egui font stack.

Advanced rendering

Use pretext_egui::advanced only when you need glyph-scene batching, atlas warmup, positioned run painting, or SVG emoji overlay helpers. The stable path is EguiPretextRenderer plus EguiPretextPaintOptions.