Skip to main content

TextSpan

Struct TextSpan 

Source
pub struct TextSpan { /* private fields */ }
Expand description

A rich-text tree: each node carries a fragment of text, partial style overrides — whatever is unspecified inherits from the parent, so a .bold() child keeps its parent’s size — and children of its own.

let span = TextSpan::new("Hello ")
    .child(TextSpan::new("bold").bold())
    .child(TextSpan::new(" world"));
let runs = span.flatten(TextStyle::new(20.0));
assert_eq!(runs.len(), 3);
assert_eq!(runs[1].1.size, 20.0); // the bold child inherits the size

Implementations§

Source§

impl TextSpan

Source

pub fn new(text: impl Into<String>) -> TextSpan

A text fragment with no overrides — it inherits everything.

Source

pub fn bold(self) -> TextSpan

Makes this subtree bold.

Source

pub fn weight(self, weight: FontWeight) -> TextSpan

Sets this subtree’s weight.

Source

pub fn italic(self) -> TextSpan

Makes this subtree italic.

Source

pub fn size(self, size: f32) -> TextSpan

Sets this subtree’s size.

Source

pub fn color(self, color: Color) -> TextSpan

Sets this subtree’s colour.

Source

pub fn underline(self) -> TextSpan

Underlines this subtree. It combines with the decoration already set on this node, but not with the parent’s.

Source

pub fn strikethrough(self) -> TextSpan

Strikes through this subtree.

Source

pub fn decoration(self, decoration: TextDecoration) -> TextSpan

Sets this subtree’s decoration lines.

Source

pub fn decoration_color(self, color: Color) -> TextSpan

Sets this subtree’s decoration colour.

Source

pub fn style(self, style: TextStyle) -> TextSpan

Applies a whole TextStyle as this subtree’s override, replacing whatever this span had said before.

It used to force every typographic field to answered, because a TextStyle could not say otherwise. It no longer has to: a style naming only a size now overrides only the size, and the weight goes on being inherited from the parent span.

Source

pub fn child(self, child: TextSpan) -> TextSpan

Adds a child, rendered after this node’s own text.

Source

pub fn flatten(&self, base: TextStyle) -> Vec<(String, ResolvedTextStyle)>

Flattens the tree into resolved runs (text, style), in reading order, cascading the overrides down from base, the paragraph’s default style. Nodes with no text of their own produce no empty run.

Source

pub fn measure_hash<H>(&self, hasher: &mut H)
where H: Hasher,

Mixes into hasher everything that affects the tree’s measurement: text, sizes, weights and italics. Colours and decorations are excluded, having no effect on geometry. This serves as the measurement fingerprint (measure_key) without having to flatten the tree.

Trait Implementations§

Source§

impl Clone for TextSpan

Source§

fn clone(&self) -> TextSpan

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TextSpan

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for TextSpan

Source§

fn default() -> TextSpan

Returns the “default value” for a type. Read more
Source§

impl PartialEq for TextSpan

Source§

fn eq(&self, other: &TextSpan) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for TextSpan

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<Msg> IntoMsg<Msg> for Msg

Source§

fn defer(work: impl Fn() -> Msg + 'static) -> Msg

The message that stands for work’s result.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.