pub struct GraphState { /* private fields */ }Expand description
View-owned native clock for a portable motion-value graph. Keep this state alive and notify after source/control changes.
Implementations§
Methods from Deref<Target = MotionGraph>§
Sourcepub fn source(&mut self, value: f64) -> ValueId
pub fn source(&mut self, value: f64) -> ValueId
Adds a finite scalar source. Panics for non-finite values.
Sourcepub fn derive(
&mut self,
inputs: &[ValueId],
map: impl Fn(&[f64]) -> f64 + 'static,
) -> Result<ValueId, GraphError>
pub fn derive( &mut self, inputs: &[ValueId], map: impl Fn(&[f64]) -> f64 + 'static, ) -> Result<ValueId, GraphError>
Sourcepub fn get(&self, id: ValueId) -> Result<f64, GraphError>
pub fn get(&self, id: ValueId) -> Result<f64, GraphError>
Last sampled presentation. Does not advance the graph.
Sourcepub fn velocity(&self, id: ValueId) -> Result<f64, GraphError>
pub fn velocity(&self, id: ValueId) -> Result<f64, GraphError>
Last sampled velocity, including finite-difference derived velocities.
Sourcepub fn animate(
&mut self,
id: ValueId,
target: f64,
transition: Transition,
now: Duration,
) -> Result<(), GraphError>
pub fn animate( &mut self, id: ValueId, target: f64, transition: Transition, now: Duration, ) -> Result<(), GraphError>
Retargets a source with the shared spring/tween solver. Identical declarations do not produce new start/cancel events. Panics for non-finite destinations.
Sourcepub fn set(
&mut self,
id: ValueId,
value: f64,
now: Duration,
) -> Result<(), GraphError>
pub fn set( &mut self, id: ValueId, value: f64, now: Duration, ) -> Result<(), GraphError>
Directly edits a source, with optional retained pointer velocity. This is
batched: dependants and listeners update on the next sample.
Sourcepub fn jump(
&mut self,
id: ValueId,
value: f64,
now: Duration,
) -> Result<(), GraphError>
pub fn jump( &mut self, id: ValueId, value: f64, now: Duration, ) -> Result<(), GraphError>
Cancels a source trajectory and clears momentum on the next sample.
Sourcepub fn subscribe(
&mut self,
id: ValueId,
callback: impl FnMut(MotionEvent) + 'static,
) -> Result<GraphSubscription, GraphError>
pub fn subscribe( &mut self, id: ValueId, callback: impl FnMut(MotionEvent) + 'static, ) -> Result<GraphSubscription, GraphError>
Listens to sampled changes and lifecycle events. Store the returned handle.
Sourcepub fn sample(&mut self, now: Duration, reduced_motion: bool)
pub fn sample(&mut self, now: Duration, reduced_motion: bool)
Advances sources, then derived dependencies, then dispatches listeners. Multiple writes coalesce to one change event per value and sample. Backward timestamps hold. Reduced motion settles sources using the shared policy.
Sourcepub fn is_animating(&self) -> bool
pub fn is_animating(&self) -> bool
Whether any source or dependant requires another frame.
Sourcepub fn target(
&self,
base: Target,
bindings: &[(Property, ValueId)],
) -> Result<Target, GraphError>
pub fn target( &self, base: Target, bindings: &[(Property, ValueId)], ) -> Result<Target, GraphError>
Binds sampled values to declared target properties. Values are saturated to drawable bounds; opacity is clamped and dimensions are non-negative.
Sourcepub fn typed_source<T, const N: usize>(&mut self, value: T) -> [ValueId; N]where
T: MotionData<N>,
pub fn typed_source<T, const N: usize>(&mut self, value: T) -> [ValueId; N]where
T: MotionData<N>,
Adds the numeric channels of a typed value, allocating only during setup.
Panics for invalid channels as source does.
Sourcepub fn typed_value<T, const N: usize>(
&self,
template: T,
ids: [ValueId; N],
) -> Result<T, GraphError>where
T: MotionData<N>,
pub fn typed_value<T, const N: usize>(
&self,
template: T,
ids: [ValueId; N],
) -> Result<T, GraphError>where
T: MotionData<N>,
Reconstructs a typed value from automatically sampled/derived channels.
Sourcepub fn animate_typed<T, const N: usize>(
&mut self,
ids: [ValueId; N],
target: T,
transition: Transition,
now: Duration,
) -> Result<(), GraphError>where
T: MotionData<N>,
pub fn animate_typed<T, const N: usize>(
&mut self,
ids: [ValueId; N],
target: T,
transition: Transition,
now: Duration,
) -> Result<(), GraphError>where
T: MotionData<N>,
Retargets typed source channels transactionally. Invalid or derived IDs leave all sources unchanged; values/velocities use the shared solver.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for GraphState
impl !Send for GraphState
impl !Sync for GraphState
impl !UnwindSafe for GraphState
impl Freeze for GraphState
impl Unpin for GraphState
impl UnsafeUnpin for GraphState
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
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>
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>
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)
&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)
&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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().