Struct titanium::desktop::gui::libdruid::TextLayout
pub struct TextLayout<T> { /* private fields */ }
Expand description
A component for displaying text on screen.
This is a type intended to be used by other widgets that display text. It allows for the text itself as well as font and other styling information to be set and modified. It wraps an inner layout object, and handles invalidating and rebuilding it as required.
This object is not valid until the rebuild_if_needed
method has been
called. You should generally do this in your widget’s layout
method.
Additionally, you should call needs_rebuild_after_update
as part of your widget’s update
method; if this returns true
, you will need
to call rebuild_if_needed
again, generally by scheduling another layout
pass.
Implementations§
§impl<T> TextLayout<T>
impl<T> TextLayout<T>
pub fn new() -> TextLayout<T>
pub fn new() -> TextLayout<T>
Create a new TextLayout
object.
You must set the text (set_text
) before using this object.
pub fn set_text_color(&mut self, color: impl Into<KeyOrValue<Color>>)
pub fn set_text_color(&mut self, color: impl Into<KeyOrValue<Color>>)
Set the default text color for this layout.
pub fn set_font(&mut self, font: impl Into<KeyOrValue<FontDescriptor>>)
pub fn set_font(&mut self, font: impl Into<KeyOrValue<FontDescriptor>>)
Set the default font.
The argument is a FontDescriptor
or a Key<FontDescriptor>
that
can be resolved from the Env
.
pub fn set_text_size(&mut self, size: impl Into<KeyOrValue<f64>>)
pub fn set_text_size(&mut self, size: impl Into<KeyOrValue<f64>>)
Set the font size.
This overrides the size in the FontDescriptor
provided to set_font
.
pub fn set_wrap_width(&mut self, width: f64)
pub fn set_wrap_width(&mut self, width: f64)
Set the width at which to wrap words.
You may pass f64::INFINITY
to disable word wrapping
(the default behaviour).
pub fn set_text_alignment(&mut self, alignment: TextAlignment)
pub fn set_text_alignment(&mut self, alignment: TextAlignment)
Set the TextAlignment
for this layout.
pub fn text_is_rtl(&self) -> bool
pub fn text_is_rtl(&self) -> bool
Returns true
if this layout’s text appears to be right-to-left.
See piet::util::first_strong_rtl
for more information.
§impl<T> TextLayout<T>where
T: TextStorage,
impl<T> TextLayout<T>where T: TextStorage,
pub fn from_text(text: impl Into<T>) -> TextLayout<T>
pub fn from_text(text: impl Into<T>) -> TextLayout<T>
Create a new TextLayout
with the provided text.
This is useful when the text is not tied to application data.
pub fn needs_rebuild(&self) -> bool
pub fn needs_rebuild(&self) -> bool
Returns true
if this layout needs to be rebuilt.
This happens (for instance) after style attributes are modified.
This does not account for things like the text changing, handling that is the responsibility of the user.
pub fn set_text(&mut self, text: T)
pub fn set_text(&mut self, text: T)
Set the text to display.
pub fn text(&self) -> Option<&T>
pub fn text(&self) -> Option<&T>
Returns the TextStorage
backing this layout, if it exists.
pub fn layout(&self) -> Option<&CairoTextLayout>
pub fn layout(&self) -> Option<&CairoTextLayout>
Returns the inner Piet TextLayout
type.
pub fn size(&self) -> Size
pub fn size(&self) -> Size
The size of the laid-out text.
This is not meaningful until rebuild_if_needed
has been called.
pub fn layout_metrics(&self) -> LayoutMetrics
pub fn layout_metrics(&self) -> LayoutMetrics
Return the text’s LayoutMetrics
.
This is not meaningful until rebuild_if_needed
has been called.
pub fn text_position_for_point(&self, point: Point) -> usize
pub fn text_position_for_point(&self, point: Point) -> usize
For a given Point
(relative to this object’s origin), returns index
into the underlying text of the nearest grapheme boundary.
pub fn point_for_text_position(&self, text_pos: usize) -> Point
pub fn point_for_text_position(&self, text_pos: usize) -> Point
Given the utf-8 position of a character boundary in the underlying text,
return the Point
(relative to this object’s origin) representing the
boundary of the containing grapheme.
Panics
Panics if text_pos
is not a character boundary.
pub fn rects_for_range(&self, range: Range<usize>) -> Vec<Rect, Global>
pub fn rects_for_range(&self, range: Range<usize>) -> Vec<Rect, Global>
Given a utf-8 range in the underlying text, return a Vec
of Rect
s
representing the nominal bounding boxes of the text in that range.
Panics
Panics if the range start or end is not a character boundary.
pub fn underline_for_range(&self, range: Range<usize>) -> Line
pub fn underline_for_range(&self, range: Range<usize>) -> Line
Return a line suitable for underlining a range of text.
This is really only intended to be used to indicate the composition range while IME is active.
range is expected to be on a single visual line.
pub fn cursor_line_for_text_position(&self, text_pos: usize) -> Line
pub fn cursor_line_for_text_position(&self, text_pos: usize) -> Line
Given the utf-8 position of a character boundary in the underlying text,
return a Line
suitable for drawing a vertical cursor at that boundary.
pub fn link_for_pos(&self, pos: Point) -> Option<&Link>
pub fn link_for_pos(&self, pos: Point) -> Option<&Link>
pub fn needs_rebuild_after_update(&mut self, ctx: &mut UpdateCtx<'_, '_>) -> bool
pub fn needs_rebuild_after_update(&mut self, ctx: &mut UpdateCtx<'_, '_>) -> bool
Called during the containing widget’s update
method; this text object
will check to see if any used environment items have changed,
and invalidate itself as needed.
Returns true
if the text item needs to be rebuilt.
pub fn rebuild_if_needed(&mut self, factory: &mut CairoText, env: &Env)
pub fn rebuild_if_needed(&mut self, factory: &mut CairoText, env: &Env)
Rebuild the inner layout as needed.
This TextLayout
object manages a lower-level layout object that may
need to be rebuilt in response to changes to the text or attributes
like the font.
This method should be called whenever any of these things may have changed.
A simple way to ensure this is correct is to always call this method
as part of your widget’s layout
method.
pub fn draw(&self, ctx: &mut PaintCtx<'_, '_, '_>, point: impl Into<Point>)
pub fn draw(&self, ctx: &mut PaintCtx<'_, '_, '_>, point: impl Into<Point>)
Draw the layout at the provided Point
.
The origin of the layout is the top-left corner.
You must call rebuild_if_needed
at some point before you first
call this method.
Trait Implementations§
§impl<T> Clone for TextLayout<T>where
T: Clone,
impl<T> Clone for TextLayout<T>where T: Clone,
§fn clone(&self) -> TextLayout<T>
fn clone(&self) -> TextLayout<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more