pub enum Easing {
}Expand description
A named easing curve, storable on builders (Copy). apply maps
normalized time; animation builds a ready gpui Animation.
Variants§
Linear
EaseIn
EaseOut
EaseInOut
EaseInCubic
EaseOutCubic
EaseInOutCubic
EaseOutQuint
EaseOutExpo
EaseOutBack
EaseOutElastic
EaseOutBounce
In(Curve)
A curve accelerating out of rest: In(Curve::Quad) is anime.js’s
inQuad.
Out(Curve)
A curve decelerating into rest — the one most UI motion wants.
InOut(Curve)
Accelerate, then decelerate.
Steps(u32)
n equal jumps instead of a smooth ramp (CSS steps(n, end)).
CubicBezier(f32, f32, f32, f32)
CSS cubic-bezier(x1, y1, x2, y2).
Spring(Spring)
Physical spring; its duration comes from the spring itself.
Implementations§
Source§impl Easing
impl Easing
pub fn apply(self, t: f32) -> f32
Sourcepub fn animation(self, duration_ms: u64) -> Animation
pub fn animation(self, duration_ms: u64) -> Animation
A gpui Animation running this curve, clamped into 0..=1.
duration_ms is ignored for springs — they settle on their own clock.
gpui debug-asserts that an animation’s easing output stays within
0..=1, which overshooting curves (Spring, EaseOutBack,
EaseOutElastic, wide cubic-beziers) violate by design — unclamped
they abort any debug build. The clamp flattens the overshoot peaks;
to keep them, run clock and apply the curve inside
the animator closure, where any value is legal:
el.with_animation(id, easing.clock(200), move |el, t| {
let delta = easing.apply(t); // may overshoot past 1.0
el.ml(px((1.0 - delta) * 8.0))
})Trait Implementations§
impl Copy for Easing
impl StructuralPartialEq for Easing
Auto Trait Implementations§
impl Freeze for Easing
impl RefUnwindSafe for Easing
impl Send for Easing
impl Sync for Easing
impl Unpin for Easing
impl UnsafeUnpin for Easing
impl UnwindSafe for Easing
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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().