pub trait FormattableText: Debug {
    type FontTokenIter<'a>: Iterator<Item = FontToken>
       where Self: 'a;

    // Required methods
    fn as_str(&self) -> &str;
    fn font_tokens<'a>(&'a self, dpem: f32) -> Self::FontTokenIter<'a>;
    fn effect_tokens(&self) -> &[Effect<()>];

    // Provided method
    fn str_len(&self) -> usize { ... }
}
Expand description

Text, optionally with formatting data

Any F: FormattableText automatically support FormattableTextDyn. Implement either this or FormattableTextDyn, not both.

Required Associated Types§

type FontTokenIter<'a>: Iterator<Item = FontToken> where Self: 'a

Required Methods§

fn as_str(&self) -> &str

Access whole text as contiguous str

fn font_tokens<'a>(&'a self, dpem: f32) -> Self::FontTokenIter<'a>

Construct an iterator over formatting items

It is expected that FontToken::start of yielded items is strictly increasing; if not, formatting may not be applied correctly.

The dpem parameter is font size as in crate::Environment.

For plain text this iterator will be empty.

fn effect_tokens(&self) -> &[Effect<()>]

Get the sequence of effect tokens

This method has some limitations: (1) it may only return a reference to an existing sequence, (2) effect tokens cannot be generated dependent on input state, and (3) it does not incorporate color information. For most uses it should still be sufficient, but for other cases it may be preferable not to use this method (use a dummy implementation returning &[] and use inherent methods on the text object via Text::text).

Provided Methods§

fn str_len(&self) -> usize

Length of text

Default implementation uses FormattableText::as_str.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

§

impl FormattableText for String

§

type FontTokenIter<'a> = Empty<FontToken>

§

fn as_str(&self) -> &str

§

fn font_tokens<'a>( &'a self, _: f32 ) -> <String as FormattableText>::FontTokenIter<'a>

§

fn effect_tokens(&self) -> &[Effect<()>]

§

impl<'t> FormattableText for &'t str

§

type FontTokenIter<'a> = Empty<FontToken> where &'t str: 'a

§

fn as_str(&self) -> &str

§

fn font_tokens<'a>( &'a self, _: f32 ) -> <&'t str as FormattableText>::FontTokenIter<'a>

§

fn effect_tokens(&self) -> &[Effect<()>]

Implementors§