pub enum Curve {
Linear,
EaseIn,
EaseOut,
EaseInOut,
Emphasized,
Cubic(f64, f64, f64, f64),
}Expand description
The animation vocabulary: the shell-fed frame clock (FrameTime)
plus the pure easing/interpolation/spring math a widget or app advances it
through, flat-re-exported from frust-core::anim. Time enters from the
shell during paint (PaintCtx::frame_time); nothing here reads a clock.
An easing curve mapping normalized time t ∈ [0, 1] to eased progress ∈ [0, 1].
The named variants are the CSS timing functions plus Material 3’s
Emphasized; Curve::Cubic is a general cubic-Bézier. t is clamped first.
Variants§
Linear
t unchanged.
EaseIn
CSS ease-in — cubic-bezier(0.42, 0, 1, 1).
EaseOut
CSS ease-out — cubic-bezier(0, 0, 0.58, 1).
EaseInOut
CSS ease-in-out — cubic-bezier(0.42, 0, 0.58, 1).
Emphasized
Material 3 emphasized easing — cubic-bezier(0.2, 0.0, 0.0, 1.0).
Cubic(f64, f64, f64, f64)
A cubic-Bézier with control points (x1, y1), (x2, y2) (endpoints fixed at
(0, 0)/(1, 1)), as CSS cubic-bezier().
Implementations§
Source§impl Curve
impl Curve
Sourcepub fn transform(self, t: f64) -> f64
pub fn transform(self, t: f64) -> f64
Evaluate the eased progress at normalized time t (clamped to [0, 1]).
Sourcepub fn interval(self, start: f64, end: f64) -> SegmentedCurve
pub fn interval(self, start: f64, end: f64) -> SegmentedCurve
Confine this curve to the [start, end] fraction of the timeline (Flutter’s
Interval): 0.0 before start, 1.0 from end, and self re-evaluated
at the rescaled local time between. An interval with end <= start is an
instantaneous step at start.
Returns a SegmentedCurve rather than Curve because an Interval
variant holding a Curve by value would be infinitely sized, and
AnimationController relies on Curve: Copy.
Trait Implementations§
impl Copy for Curve
impl StructuralPartialEq for Curve
Auto Trait Implementations§
impl Freeze for Curve
impl RefUnwindSafe for Curve
impl Send for Curve
impl Sync for Curve
impl Unpin for Curve
impl UnsafeUnpin for Curve
impl UnwindSafe for Curve
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.