fltk-richtext

A small crate providing simpler RichText formatting for fltk-rs.

```rust use fltk::{enums::, prelude::, *}; use fltk_richtext::{RichTextBuilder, RichTextDisplay, Style};

fn main() { let a = app::App::default(); let mut w = window::Window::default().withsize(400, 300); let mut disp = text::TextDisplay::defaultfill(); w.end(); w.show();

let mut buf = RichTextBuilder::new();
buf.append("Lorem ipsum text", None);
buf.append(
    "::\n",
    Style {
        color: Color::DarkYellow,
        ..Default::default()
    },
);
buf.append(
    "Lorem ipsum, dolor sit amet\n",
    Style {
        color: Color::Red,
        font: Font::Times,
        ..Default::default()
    },
);
buf.append(
    " consectetur adipisicing elit.\n",
    Style {
        color: Color::Blue,
        ..Default::default()
    },
);
buf.append(
    "Aliquam expedita odio dignissimos\n",
    Style {
        color: Color::Green.darker(),
        ..Default::default()
    },
);
buf.append(
    "ducimus perspiciatis dolorum,\n",
    Style {
        font: Font::Courier,
        size: 14,
        ..Default::default()
    },
);
buf.append(
    "itaque dolorem similique velit doloribus,\n",
    Style {
        color: Color::White,
        bgcolor: Color::Magenta,
        attr: text::TextAttr::BgColor,
        ..Default::default()
    },
);
buf.append(
    "debitis ea ex necessitatibus quia,\n",
    Style {
        attr: text::TextAttr::Grammar,
        ..Default::default()
    },
);
buf.append(
    "optio maiores a voluptates. Animi.\n",
    Style {
        attr: text::TextAttr::Spelling,
        ..Default::default()
    },
);
disp.set_rich_text(buf);

a.run().unwrap();

} ```

image

```rust use fltk::{enums::, prelude::, *}; use fltk_richtext::{RichTextBuilder, RichTextDisplay, Style}; use regex::Regex;

const MARKUP: &str = r#"# The important points are: - Point 1 - Point 2 - Point 3 "#;

fn handlemarkup(s: &str) -> RichTextBuilder { let re = Regex::new(r"(^# .*)").unwrap(); let mut buf = RichTextBuilder::new(); buf.append(s, None); for caps in re.capturesiter(s) { buf.replaceall( caps.get(1).unwrap().asstr(), &caps.get(1).unwrap().asstr()[2..], Style { font: Font::HelveticaBold, size: app::fontsize() + 2, ..Default::default() }, ); } buf.replace_all( "-", " •", Style { color: Color::Red, ..Default::default() }, ); buf }

fn main() { let a = app::App::default(); let mut w = window::Window::default().withsize(400, 300); let mut disp = text::TextDisplay::defaultfill(); w.end(); w.show();

disp.set_rich_text(handle_markup(MARKUP));

a.run().unwrap();

} ```

image