pub struct Spinner { /* private fields */ }Expand description
An animated one-cell spinner with an optional trailing label.
The reference consumer of the animation clock: it paints the
[Frames] glyph for PaintCtx::now and requests its next repaint
with PaintCtx::wake, so it animates only while presented and stops
costing anything the moment it leaves the tree.
Implementations§
Source§impl Spinner
impl Spinner
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a bare spinner.
Examples found in repository?
examples/gallery/anim.rs (line 34)
28pub(crate) fn pane() -> Box<dyn Component> {
29 let (_, mood_bg, mood_text) = MOODS[0];
30 dom! {
31 <col gap=1 pad="1 2">
32 <row gap=2>
33 <text bold fg="#f953c6..#43e97b" spin="4s">{"ANIMATION LAB"}</text>
34 {Spinner::new()}
35 <text dim>{"anim · ease · spin as plain props"}</text>
36 </row>
37 <box title="Easing race" border=round bc=muted pad="0 1">
38 <col>
39 for (id, ease) in BARS {
40 <row gap=1>
41 <text w=7 dim>{*ease}</text>
42 <col id={*id} w=12% h=1 bg=accent anim="900ms" ease={*ease}/>
43 </row>
44 }
45 </col>
46 </box>
47 <row gap=1>
48 <box id=mood grow title="Mood" border=round bleed anim="450ms" bc=ok bg={mood_bg}>
49 <text id="mood-text" fg=ok anim="450ms">{mood_text}</text>
50 </box>
51 <box id=hero grow title="Gradient morph" border=round bleed anim="900ms"
52 ease="in-out" bg={PALETTES[0]} angle=25 spin="6s">
53 <text bold>{"endpoints tween"}</text>
54 <text dim>{"angle spins forever"}</text>
55 </box>
56 </row>
57 <row gap=1>
58 <col id=sidebar w=14 anim="500ms" ease="in-out" bg="#1b2735" pad="0 1">
59 <text bold>{"sidebar"}</text>
60 <text dim>{"w tweens"}</text>
61 </col>
62 <box id=drawer grow h=4 anim="600ms" ease="in-out" border=round bc=muted
63 title="Drawer">
64 <md>{"Height tweens through **layout wakes**: every row below shifts \
65 smoothly.\n\n- retarget mid-flight: it resumes from the screen\n- \
66 first paint never animates\n- settled components request no frames"}</md>
67 </box>
68 </row>
69 <text dim>
70 {"space race · m mood · g gradient · s sidebar · d drawer · a autoplay"}
71 </text>
72 </col>
73 }
74 .into_component()
75}Trait Implementations§
Source§impl Component for Spinner
impl Component for Spinner
Source§fn measure(&mut self, _ctx: &UiContext) -> (u16, u16)
fn measure(&mut self, _ctx: &UiContext) -> (u16, u16)
Content width bounds, exclusive of this component’s chrome.
Source§fn height(&mut self, _ctx: &UiContext, _width: u16) -> u16
fn height(&mut self, _ctx: &UiContext, _width: u16) -> u16
Content height at the supplied content width.
Source§fn paint(&mut self, pc: &mut PaintCtx<'_>, rect: Rect)
fn paint(&mut self, pc: &mut PaintCtx<'_>, rect: Rect)
Paints content inside the supplied content rectangle.
Source§fn set_text(&mut self, _ctx: &UiContext, text: Str) -> bool
fn set_text(&mut self, _ctx: &UiContext, text: Str) -> bool
Replaces text content where supported.
Source§fn kind(&self) -> &'static str
fn kind(&self) -> &'static str
Concrete implementation name for debug tooling; defaults to the
type’s full path via
std::any::type_name. The OMP_TUI_DEBUG
tree dump trims it to the trailing path segment.Source§fn children_mut(&mut self) -> &mut [Cached]
fn children_mut(&mut self) -> &mut [Cached]
Every owned child, including embedded inactive subtrees.
Source§fn place(&mut self, ctx: &UiContext, content: Rect)
fn place(&mut self, ctx: &UiContext, content: Rect)
Places children inside the supplied content rectangle.
Source§fn paints_border(&self) -> bool
fn paints_border(&self) -> bool
Whether
Cached should paint this component’s border property as
chrome.Source§fn paints_background(&self) -> bool
fn paints_background(&self) -> bool
Whether
Cached should paint this component’s background property
across its rectangle. Components that own a partial background fill opt
out and paint it themselves.Source§fn gradient_bounds(&self, content: Rect) -> Option<Rect>
fn gradient_bounds(&self, content: Rect) -> Option<Rect>
A narrowed projection frame for two-stop
fg=/bg= ramps, given the
painted content rectangle. None projects across the full chrome;
content-sized leaves (crate::components::Pre) return their authored
extent so the ramp completes across the glyphs instead of the
stretched layout width.Source§fn resize_tail(&mut self) -> Option<ResizeTail<'_>>
fn resize_tail(&mut self) -> Option<ResizeTail<'_>>
Opt-in viewport-tail provider for resize drags: children a drag
frame may compose bottom-up, with the vertical gap between them.
None — the default — renders this component whole. Read moreSource§fn validation_error(&self) -> Option<String>
fn validation_error(&self) -> Option<String>
A validation error blocking submission — an unmet
required or
match= constraint owned by this component’s internal records;
None when valid. Component-level props are checked by the caller.Source§fn stretch_in_row(&self) -> bool
fn stretch_in_row(&self) -> bool
Whether a row should stretch this component across its cross axis.
Source§fn focusable(&self) -> bool
fn focusable(&self) -> bool
Whether this component contributes its own slot to the focus ring.
The default honors the
focus flag, so any container can opt into
keyboard navigation from markup.Source§fn enter(&mut self, forward: bool)
fn enter(&mut self, forward: bool)
Positions internal selection when focus enters from either direction.
Source§fn mouse(
&mut self,
ec: &mut EventCtx<'_>,
tag: HitTag,
at: (u16, u16),
rect: Rect,
mouse: Mouse,
) -> Flow
fn mouse( &mut self, ec: &mut EventCtx<'_>, tag: HitTag, at: (u16, u16), rect: Rect, mouse: Mouse, ) -> Flow
Handles a mouse gesture over one of this component’s hit regions.
Source§fn paste(&mut self, ec: &mut EventCtx<'_>, text: &str) -> Flow
fn paste(&mut self, ec: &mut EventCtx<'_>, text: &str) -> Flow
Pastes text into this component:
Flow::Consumed repaints,
Flow::Event additionally surfaces a crate::UiEvent, and
Flow::Skip leaves the paste unhandled.Source§fn paste_raw(&mut self, ec: &mut EventCtx<'_>, text: &str) -> Flow
fn paste_raw(&mut self, ec: &mut EventCtx<'_>, text: &str) -> Flow
Pastes text verbatim, bypassing any smart-paste interpretation the
component applies in
Component::paste (drop classification,
large-paste collapse). Defaults to Component::paste for
components without such interpretation.Auto Trait Implementations§
impl !Freeze for Spinner
impl RefUnwindSafe for Spinner
impl Send for Spinner
impl Sync for Spinner
impl Unpin for Spinner
impl UnsafeUnpin for Spinner
impl UnwindSafe for Spinner
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
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoChildren for Twhere
T: IntoComponent,
impl<T> IntoChildren for Twhere
T: IntoComponent,
Source§fn extend_children(self, out: &mut Vec<Cached>)
fn extend_children(self, out: &mut Vec<Cached>)
Appends all represented children to
out.Source§impl<T> IntoComponent for Twhere
T: Component + 'static,
impl<T> IntoComponent for Twhere
T: Component + 'static,
Source§fn into_component(self) -> Box<dyn Component>
fn into_component(self) -> Box<dyn Component>
Performs the conversion.
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> ⓘ
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 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> ⓘ
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