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: MotionData<N>, const N: usize>(
&mut self,
value: T,
) -> [ValueId; N]
pub fn typed_source<T: MotionData<N>, const N: usize>( &mut self, value: T, ) -> [ValueId; 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: MotionData<N>, const N: usize>(
&self,
template: T,
ids: [ValueId; N],
) -> Result<T, GraphError>
pub fn typed_value<T: MotionData<N>, const N: usize>( &self, template: T, ids: [ValueId; N], ) -> Result<T, GraphError>
Reconstructs a typed value from automatically sampled/derived channels.
Sourcepub fn animate_typed<T: MotionData<N>, const N: usize>(
&mut self,
ids: [ValueId; N],
target: T,
transition: Transition,
now: Duration,
) -> Result<(), GraphError>
pub fn animate_typed<T: MotionData<N>, const N: usize>( &mut self, ids: [ValueId; N], target: T, transition: Transition, now: Duration, ) -> Result<(), GraphError>
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<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
Source§type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
Source§fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T, C> ComponentsInto<C> for T
impl<T, C> ComponentsInto<C> for T
Source§fn components_into(self) -> C
fn components_into(self) -> C
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.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, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
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> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§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().Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more