Skip to main content

WindowTextSystem

Struct WindowTextSystem 

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

The GPUI text layout subsystem.

Implementations§

Source§

impl WindowTextSystem

Source

pub fn new(text_system: Arc<TextSystem>) -> Self

Create a new WindowTextSystem with the given TextSystem.

Source

pub fn shape_line( &self, text: SharedString, font_size: Pixels, runs: &[TextRun], force_width: Option<Pixels>, ) -> ShapedLine

Shape the given line, at the given font_size, for painting to the screen. Subsets of the line can be styled independently with the runs parameter.

Note that this method can only shape a single line of text. It will panic if the text contains newlines. If you need to shape multiple lines of text, use Self::shape_text instead.

Source

pub fn shape_line_by_hash( &self, text_hash: u64, text_len: usize, font_size: Pixels, runs: &[TextRun], force_width: Option<Pixels>, materialize_text: impl FnOnce() -> SharedString, ) -> ShapedLine

Shape the given line using a caller-provided content hash as the cache key.

This enables cache hits without materializing a contiguous SharedString for the text. If the cache misses, materialize_text is invoked to produce the SharedString for shaping.

Contract (caller enforced):

  • Same text_hash implies identical text content (collision risk accepted by caller).
  • text_len should be the UTF-8 byte length of the text (helps reduce accidental collisions).

Like Self::shape_line, this must be used only for single-line text (no \n).

Source

pub fn shape_text( &self, text: SharedString, font_size: Pixels, runs: &[TextRun], wrap_width: Option<Pixels>, line_clamp: Option<usize>, ) -> Result<SmallVec<[WrappedLine; 1]>>

Shape a multi line string of text, at the given font_size, for painting to the screen. Subsets of the text can be styled independently with the runs parameter. If wrap_width is provided, the line breaks will be adjusted to fit within the given width.

Source

pub fn layout_line( &self, text: &str, font_size: Pixels, runs: &[TextRun], force_width: Option<Pixels>, ) -> Arc<LineLayout>

Layout the given line of text, at the given font_size. Subsets of the line can be styled independently with the runs parameter. Generally, you should prefer to use Self::shape_line instead, which can be painted directly.

Source

pub fn try_layout_line_by_hash( &self, text_hash: u64, text_len: usize, font_size: Pixels, runs: &[TextRun], force_width: Option<Pixels>, ) -> Option<Arc<LineLayout>>

Probe the line layout cache using a caller-provided content hash, without allocating.

Returns Some(layout) if the layout is already cached in either the current frame or the previous frame. Returns None if it is not cached.

Contract (caller enforced):

  • Same text_hash implies identical text content (collision risk accepted by caller).
  • text_len should be the UTF-8 byte length of the text (helps reduce accidental collisions).
Source

pub fn layout_line_by_hash( &self, text_hash: u64, text_len: usize, font_size: Pixels, runs: &[TextRun], force_width: Option<Pixels>, materialize_text: impl FnOnce() -> SharedString, ) -> Arc<LineLayout>

Layout the given line of text using a caller-provided content hash as the cache key.

This enables cache hits without materializing a contiguous SharedString for the text. If the cache misses, materialize_text is invoked to produce the SharedString for shaping.

Contract (caller enforced):

  • Same text_hash implies identical text content (collision risk accepted by caller).
  • text_len should be the UTF-8 byte length of the text (helps reduce accidental collisions).

Trait Implementations§

Source§

impl Deref for WindowTextSystem

Source§

type Target = Arc<TextSystem>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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> 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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