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>) -> Self

A text fragment with no overrides — it inherits everything.

Source

pub fn bold(self) -> Self

Makes this subtree bold.

Source

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

Sets this subtree’s weight.

Source

pub fn italic(self) -> Self

Makes this subtree italic.

Source

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

Sets this subtree’s size.

Source

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

Sets this subtree’s colour.

Source

pub fn underline(self) -> Self

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

Source

pub fn strikethrough(self) -> Self

Strikes through this subtree.

Source

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

Sets this subtree’s decoration lines.

Source

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

Sets this subtree’s decoration colour.

Source

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

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) -> Self

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: Hasher>(&self, hasher: &mut H)

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) -> Self

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

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

impl Default for TextSpan

Source§

fn default() -> Self

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

impl PartialEq for TextSpan

Source§

fn eq(&self, other: &Self) -> 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<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.