Skip to main content

TextLayout

Struct TextLayout 

Source
pub struct TextLayout(/* private fields */);
Expand description

The laid-out state of a text element, for mapping between byte indices and pixels.

Get one from StyledText::layout, or from the text state that other text elements keep. Clones share the same state. The query methods read the most recent layout, so a query made after a relayout returns the new result.

The text elements fill this in during layout and prepaint. The query methods panic if the element hasn’t been laid out yet, and the ones that need pixel positions panic if it hasn’t been prepainted.

Implementations§

Source§

impl TextLayout

Source

pub fn evaluate_wrap_width( white_space: &WhiteSpace, known_dimensions: Size<Option<Pixels>>, available_space: Size<AvailableSpace>, ) -> Option<Pixels>

Returns the width that text wraps at, or None when it doesn’t wrap.

Text does not wrap when white_space is WhiteSpace::Nowrap. Otherwise the width comes from TextLayout::evaluate_alignment_width.

Source

pub fn evaluate_alignment_width( known_dimensions: Size<Option<Pixels>>, available_space: Size<AvailableSpace>, ) -> Option<Pixels>

Returns the width that text aligns within, from the known or available width.

The known width wins. Otherwise a definite available width is used. Under min-content or max-content sizing, this returns None.

Source

pub fn evaluate_overflow( text_style: &TextStyle, known_dimensions: Size<Option<Pixels>>, available_space: Size<AvailableSpace>, ) -> TextLayoutTruncation

Returns how the text should be truncated, from the style’s text_overflow.

When the style has no text_overflow, the result has no width and an empty affix, so the text is never truncated.

Source

pub fn apply_truncation<'runs>( text: SharedString, text_style: &TextStyle, font_size: Pixels, line_height: Pixels, wrap_width: Option<Pixels>, truncation: &TextLayoutTruncation, runs: &'runs [TextRun], paragraph_direction: ParagraphDirection, unicode_bidi: UnicodeBidi, window: &mut Window, cx: &mut App, ) -> (SharedString, Cow<'runs, [TextRun]>)

Shortens text so that it fits truncation.width, and returns the text to display.

When truncation.width is None, the text and runs come back unchanged. Otherwise the removed part is replaced by truncation.affix, on the side given by truncation.source. Wrapping and line_clamp from text_style still apply. The returned runs match the returned text. They borrow runs when nothing changes.

Source

pub fn paint_background(&self, window: &mut Window, cx: &mut App) -> Result<()>

Paints the backgrounds of the text runs without the glyphs, so callers can paint content such as highlights between the backgrounds and text.

Source

pub fn paint_foreground(&self, window: &mut Window, cx: &mut App) -> Result<()>

Paints the glyphs and decorations without the run backgrounds.

Source

pub fn index_for_position( &self, pixel_point: Point<Pixels>, ) -> Result<usize, usize>

Returns the UTF-8 byte index of the character at pixel_point, in window coordinates.

Returns Ok with the index of the character under the point. Returns Err with 0 when the point is above the text. Points to the side of or below the text return Err with the closest index. Use this for hit testing, such as placing a caret on click.

§Panics

Panics if the element hasn’t been laid out or prepainted.

Source

pub fn position_for_index(&self, byte_index: usize) -> Option<Point<Pixels>>

Returns the top-left corner of the caret for byte_index, in window coordinates.

Returns None if the text has no shaped layout, or if byte_index is past the end of the text. Use this to place a caret or an overlay at a position in the text.

§Panics

Panics if the element hasn’t been laid out or prepainted.

Source

pub fn line_layout_for_index( &self, index: usize, ) -> Option<Arc<ShapedTextLayout>>

Returns the shaped layout of the text, or None if index is past the end or the text has not been shaped.

The layout covers the whole text, not one visual line or paragraph. Use TextLayout::line_layouts to get every layout in source order.

§Panics

Panics if the element hasn’t been laid out.

Source

pub fn line_layouts(&self) -> SmallVec<[Arc<ShapedTextLayout>; 1]>

Returns the shaped layout of the text as a collection with one entry.

This returns an empty collection if the text has not been shaped.

§Panics

Panics if the element hasn’t been laid out.

Source

pub fn bounds(&self) -> Bounds<Pixels>

Returns the window bounds of the element, as set during prepaint.

§Panics

Panics if the element hasn’t been prepainted.

Source

pub fn line_height(&self) -> Pixels

Returns the line height that the text is laid out with, in logical pixels.

§Panics

Panics if the element hasn’t been laid out.

Source

pub fn len(&self) -> usize

Returns the length of the shaped text in UTF-8 bytes.

This is the length after any text transform or truncation. It is 0 when the text has not been shaped.

§Panics

Panics if the element hasn’t been laid out.

Source

pub fn text(&self) -> String

Returns the text that was shaped, as a String.

This is the text after any TextTransform and truncation. A truncated text includes the affix, such as an ellipsis. It returns an empty string if the text has not been shaped.

§Panics

Panics if the element hasn’t been laid out.

Source

pub fn wrapped_text(&self) -> String

Returns the shaped text with each visual line followed by a \n, except the last.

Soft wraps therefore become \n. A hard line break keeps its own \n as part of its line, so it is followed by one more \n. Use this to copy wrapped text as it appears on screen.

§Panics

Panics if the element hasn’t been laid out.

Trait Implementations§

Source§

impl Clone for TextLayout

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 Default for TextLayout

Source§

fn default() -> Self

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

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

👎Deprecated since 0.7.7:

replaced by palette::chromatic_adaptation::AdaptIntoUnclamped

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

👎Deprecated since 0.7.7:

replaced by palette::chromatic_adaptation::AdaptIntoUnclamped

Convert the source color to the destination color using the bradford method by default.
Source§

impl<T, C> AdaptIntoUnclamped<T> for C
where T: AdaptFromUnclamped<C>,

Source§

type Scalar = <T as AdaptFromUnclamped<C>>::Scalar

The number type that’s used as the color’s components.
Source§

fn adapt_into_unclamped_with<M>(self) -> T

Adapt a color of type Self into a color of type T, using the custom matrix M. Read more
Source§

fn adapt_into_unclamped(self) -> T
where Bradford: LmsToXyz<Self::Scalar> + XyzToLms<Self::Scalar>,

Adapt a color of type Self into a color of type T, using the Bradford matrix. Read more
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, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T, C> ComponentsInto<C> for T

Source§

fn components_into(self) -> C

Cast this collection of color components into a collection of colors. Read more
Source§

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
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, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. 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.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more