Skip to main content

FadeTrack

Struct FadeTrack 

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

Injected-clock fade tracker keyed by a small u64 id — the per-element hover / selection progress the immediate-mode form facets were missing. Each key holds a factor in [0,1] that eases toward 1 while the key is “lit” this frame (hovered / selected) and toward 0 once it isn’t; keys that settle back at 0 are dropped, so the map only ever holds the handful of elements that are currently mid-fade.

The per-frame protocol is three calls: begin (mark all keys un-lit), lit for each element that should glow this frame, then advance with your own dt once the frame is laid out. Read the eased value with factor when you paint each element.

Determinism (FC-7): no egui state, no wall-clock — the factors live in the caller’s component struct and advance by the dt you own (pass ui.input(|i| i.stable_dt)), so snapshots reproduce. duration <= 0 snaps instantly (honours Motion::duration == 0, the reduced-motion / Device setting).

Implementations§

Source§

impl FadeTrack

Source

pub fn begin(&mut self)

Start a frame: mark every tracked key as not lit. Re-light the ones that should glow with lit before advance.

Source

pub fn lit(&mut self, key: u64)

Mark key lit this frame (hovered / selected). Creates it at factor 0 (so it fades in) if it wasn’t tracked yet.

Source

pub fn factor(&self, key: u64) -> f32

The current eased factor ∈[0,1] for key (0 if untracked) — multiply your highlight alpha by this when painting the element.

Source

pub fn active(&self) -> usize

How many keys are currently tracked (lit or still fading out) — a host-readable “is motion live right now” signal for state_json proofs.

Source

pub fn is_animating(&self) -> bool

Whether any tracked key is mid-fade (factor strictly between fully-off and fully-on) — i.e. a cross-fade is visibly animating this frame.

Source

pub fn advance(&mut self, dt: f32, duration: f32) -> bool

Advance every key toward its target (lit → 1, else → 0) over duration seconds, dropping keys that have faded fully back to 0. Returns whether any key is still mid-fade (the caller requests a repaint while so). duration <= 0 snaps. Deterministic given the same factors + dt.

Source

pub fn key(id: impl Hash) -> u64

Hash any Hash id (a row &str, a row index, a repo name) into the u64 key space — the convenience bridge for facets whose element ids aren’t already u64. Stable within a run (uses the std hasher).

Trait Implementations§

Source§

impl Clone for FadeTrack

Source§

fn clone(&self) -> FadeTrack

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 Debug for FadeTrack

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for FadeTrack

Source§

fn default() -> FadeTrack

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

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> SerializableAny for T
where T: 'static + Any + Clone + for<'a> Send + Sync,

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(value: T, _simd: S) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

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