pub struct TextItem { /* private fields */ }Expand description
Text in a local-coord rectangle, with optional alignment and rotation.
Text wraps within the local_bounds rectangle; the caller is responsible
for sizing the rect so all text is visible. Content is either a static
localized string (see TextItem::new) or a reactive Signal<String>
(see TextItem::with_signal_text). Both sources trigger a repaint on
change without rebuilding the scene.
Implementations§
Source§impl TextItem
impl TextItem
Sourcepub fn new(text: impl Into<LocalizedString>, local_bounds: Rect) -> Self
pub fn new(text: impl Into<LocalizedString>, local_bounds: Rect) -> Self
A static-text item in local coordinates. The text is
resolved eagerly via LocalizedString::resolve_now at
construction; locale changes rebuild the composite parent,
which re-creates this TextItem with a fresh translation.
Sourcepub fn with_signal_text(text: Signal<String>, local_bounds: Rect) -> Self
pub fn with_signal_text(text: Signal<String>, local_bounds: Rect) -> Self
A text item whose content is driven by a Signal<String>.
register_bindings ties the signal to the SceneView at
BindingLevel::RepaintOnly so changes dirty paint and the
next walk reads the current value.
Sourcepub fn color(self, color: impl Into<ColorProp>) -> Self
pub fn color(self, color: impl Into<ColorProp>) -> Self
Override the foreground colour. Accepts a plain [Color], a theme role,
a Signal<Color>, or a Signal<Role> — resolved against the active
theme at paint time.
Sourcepub fn align(self, align: TextAlign) -> Self
pub fn align(self, align: TextAlign) -> Self
Horizontal alignment within local_bounds. Default
TextAlign::Leading. Needs a text backend to measure the text width;
a headless canvas with no backend renders leading-aligned.
Sourcepub fn rotation(self, radians: f32) -> Self
pub fn rotation(self, radians: f32) -> Self
Rotate the text about the item’s centre by radians. Default 0.0
(upright). Pair with Signal::animate_to on a driving signal for
animated rotation, or set a fixed angle for a vertical axis title.
Sourcepub fn follow_text_scale(self, follow: bool) -> Self
pub fn follow_text_scale(self, follow: bool) -> Self
Opt this text into the global accessibility text scale, so it grows with the app-wide “grow all text” setting. Off by default — the scene’s own pan/zoom usually governs scene text size.
Sourcepub fn label(self, label: impl Into<LocalizedString>) -> Self
pub fn label(self, label: impl Into<LocalizedString>) -> Self
Override the AT label (defaults to the current text content).
Sourcepub fn measure(&self, backend: &mut dyn TextBackend) -> Size
pub fn measure(&self, backend: &mut dyn TextBackend) -> Size
Measure the current text’s single-line intrinsic size against backend
at the authored TextStyle. Lets a
consumer size a slot around a label (axis labels, value tags) before
placing it. Does not apply the global text scale — measure at the
authored size.
Sourcepub fn access_label(self, label: impl Into<LocalizedString>) -> Self
pub fn access_label(self, label: impl Into<LocalizedString>) -> Self
Override the AT name announced for this item. Accepts
anything convertible into LocalizedString — most
commonly tr!(...) for translated labels, or any plain
string (which auto-converts via From<String>).
Sourcepub fn access_description(self, description: impl Into<LocalizedString>) -> Self
pub fn access_description(self, description: impl Into<LocalizedString>) -> Self
Long-form context appended to the item’s announcement.
Sourcepub fn access_role(self, role: Role) -> Self
pub fn access_role(self, role: Role) -> Self
Override the AccessKit role for this item.
Hide this item from the AT tree.
Sourcepub fn access_subtree(self, mode: AccessSubtreeMode) -> Self
pub fn access_subtree(self, mode: AccessSubtreeMode) -> Self
Set the AT subtree mode. Merge collapses descendants
into this item’s AT node; Exclude prunes them; the
default Inherit lets them emit normally.
Sourcepub fn access_merge_subtree(self) -> Self
pub fn access_merge_subtree(self) -> Self
Convenience: collapse all descendants into this item’s AT node so the subtree reads as one element.
Sourcepub fn access_exclude_subtree(self) -> Self
pub fn access_exclude_subtree(self) -> Self
Convenience: prune all descendants from the AT tree.
Sourcepub fn access_value(self, value: impl Into<LocalizedString>) -> Self
pub fn access_value(self, value: impl Into<LocalizedString>) -> Self
Announce a string value for this item (e.g. a formatted data
reading like "42 %"). Mirrors the widget-tier .access_value.
Sourcepub fn access_numeric_value(self, value: f64) -> Self
pub fn access_numeric_value(self, value: f64) -> Self
Announce a numeric value for this item, for slider/gauge-like data
marks whose magnitude assistive tech should describe. Pair with
access_numeric_range /
access_numeric_step for full
range semantics.
Sourcepub fn access_numeric_range(self, min: f64, max: f64) -> Self
pub fn access_numeric_range(self, min: f64, max: f64) -> Self
Announce the numeric min/max bounds for this item.
Sourcepub fn access_numeric_step(self, step: f64) -> Self
pub fn access_numeric_step(self, step: f64) -> Self
Announce the numeric step (per-arrow increment) for this item.
Trait Implementations§
Source§impl SceneItem for TextItem
impl SceneItem for TextItem
Source§fn local_bounds(&self) -> Rect
fn local_bounds(&self) -> Rect
scene_transform to compute its scene-space AABB for the
spatial index.Source§fn set_local_bounds(&mut self, bounds: Rect)
fn set_local_bounds(&mut self, bounds: Rect)
Scene::set_local_bounds
when the bounds change. Implementations update their stored
bounds field; geometry-bearing items (e.g. crate::PathItem)
must keep their geometry consistent with the new bounds.Source§fn paint(&self, canvas: &mut Canvas, ctx: &SceneItemPaintContext<'_>)
fn paint(&self, canvas: &mut Canvas, ctx: &SceneItemPaintContext<'_>)
scene_transform (parent chain × view) pushed, so
coordinates are in local item space — (0, 0) is the
item’s anchor. Read moreSource§fn set_fill(&mut self, fill: Option<ColorProp>) -> bool
fn set_fill(&mut self, fill: Option<ColorProp>) -> bool
true if this item kind has
a fill slot that accepted the change. Backs
SceneModel::set_item_fill /
clear_item_fill. Rectangles,
paths, and groups set their fill; text items map it onto their
foreground colour (so a None is rejected — text always has a colour);
image items have no fill and return false. Default: no-op.Source§fn label(&self) -> Option<String>
fn label(&self) -> Option<String>
SceneItem::accessibility impl as
the AT name when an item author hasn’t overridden it via the
per-item .access_label(...) chain.Source§fn initial_flags(&self) -> ItemFlags
fn initial_flags(&self) -> ItemFlags
ItemFlags::default() — visible, enabled,
selectable. Built-ins read their accumulated builder state
(e.g. .draggable(true) flips IS_DRAGGABLE); custom items
override this to opt into hover acceptance, focus, clipping,
or IGNORES_TRANSFORMATIONS. Read moreSource§fn access_subtree_mode(&self) -> AccessSubtreeMode
fn access_subtree_mode(&self) -> AccessSubtreeMode
Source§fn accessibility(
&self,
builder: &mut AccessNodeBuilder,
_ctx: &SceneItemA11yContext,
)
fn accessibility( &self, builder: &mut AccessNodeBuilder, _ctx: &SceneItemA11yContext, )
Role::GraphicsObject] plus the SceneItem::label as the
AT name if set. The per-item .access_* builder chain layers
overrides on top of whatever this method writes.Source§fn register_bindings(&self, ctx: &mut BuildContext<'_>, view_id: WidgetId)
fn register_bindings(&self, ctx: &mut BuildContext<'_>, view_id: WidgetId)
SceneView::build for every item in
the scene, with the SceneView’s WidgetId as view_id. Items
with signal-bound state bind their signals here at the
appropriate BindingLevel.Source§fn set_stroke(&mut self, stroke: Option<(ColorProp, StrokeStyle)>) -> bool
fn set_stroke(&mut self, stroke: Option<(ColorProp, StrokeStyle)>) -> bool
StrokeStyle]), returning true if this
item kind has a stroke slot that accepted the change. Backs
SceneModel::set_item_stroke /
clear_item_stroke. Rectangles,
paths, and groups accept it; text and image items return false.
Default: no-op.Source§fn shape_contains(&self, local_pt: Point) -> bool
fn shape_contains(&self, local_pt: Point) -> bool
SceneItem::local_bounds. Path-based items
override this to do per-segment distance checks so users can
click along a stroke even when the AABB is huge.Source§fn clone_shape_test(&self) -> Box<dyn Fn(Point, f32) -> bool + 'static>
fn clone_shape_test(&self) -> Box<dyn Fn(Point, f32) -> bool + 'static>
Fn(Point, f32) -> bool that closes over
whatever state this item needs to answer shape_contains
without retaining a borrow on self. The
SceneView snapshots one of these for
every item at layout time and consults it on every pointer
event — direct calls to shape_contains(&self, ...) can’t
be cached because &dyn SceneItem is not Clone. Read moreSource§fn thumbnail_color(&self) -> Color
fn thumbnail_color(&self) -> Color
RectItem
returns its fill, PathItem
returns stroke or fill, ImageItem
returns the image’s dominant tint placeholder. Read moreSource§fn cache_mode(&self) -> CacheMode
fn cache_mode(&self) -> CacheMode
CacheMode::None: the
item’s paint runs every frame. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for TextItem
impl !Send for TextItem
impl !Sync for TextItem
impl !UnwindSafe for TextItem
impl Freeze for TextItem
impl Unpin for TextItem
impl UnsafeUnpin for TextItem
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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