Skip to main content

Curve

Enum Curve 

Source
pub enum Curve {
    Linear,
    Decelerate,
    Cubic {
        x1: f32,
        y1: f32,
        x2: f32,
        y2: f32,
    },
    CriticalSpring {
        omega: f32,
    },
    Interval {
        begin: f32,
        end: f32,
        inner: Box<Curve>,
    },
    Flipped(Box<Curve>),
    ThreePointCubic {
        a1: [f32; 2],
        b1: [f32; 2],
        midpoint: [f32; 2],
        a2: [f32; 2],
        b2: [f32; 2],
    },
}
Expand description

The shared animation layer — physics, curves, driver — see frus_core::animation. Re-exported here so applications can reach it through frus_widgets without depending on frus-core directly. An easing curve remapping [0,1] → [0,1].

f(0) = 0 and f(1) = 1 hold for every variant.

Variants§

§

Linear

The identity: f(t) = t.

§

Decelerate

A quadratic ease-out, f(t) = 1 − (1 − t)²: fast at once, then coasting to a stop. It is the shape of something arriving — a glow flaring at an edge, a value settling — where the interesting part is the start.

§

Cubic

A cubic Bézier defined by its two control points (x1,y1) and (x2,y2) — the same parameterisation as CSS’s cubic-bezier().

Fields

§x1: f32

The first control point’s x coordinate.

§y1: f32

The first control point’s y coordinate.

§x2: f32

The second control point’s x coordinate.

§y2: f32

The second control point’s y coordinate.

§

CriticalSpring

The step response of a critically damped spring: starts at rest, settles gently with no overshoot, renormalised so that f(1) = 1. omega sets how lively it feels.

Fields

§omega: f32

The spring’s natural frequency, in radians per second: higher settles faster.

§

Interval

Applies inner only over the sub-window [begin, end]: 0 before, 1 after. This is what unlocks staggered animations.

Fields

§begin: f32

The progress at which inner starts, as a fraction of [0,1].

§end: f32

The progress at which inner reaches 1, as a fraction of [0,1].

§inner: Box<Curve>

The curve applied within [begin, end].

§

Flipped(Box<Curve>)

Mirrored: f(t) = 1 − inner(1 − t), which turns an ease-in into an ease-out.

§

ThreePointCubic

Two cubic Béziers joined at midpoint, each scaled into its own part of the unit square: the first runs from (0, 0) to midpoint with control points a1 and b1, the second from midpoint to (1, 1) with a2 and b2 (milestone 619). The shape of the reference’s emphasized motion, which one cubic cannot draw: a slow start, a fast middle and a long settle.

Fields

§a1: [f32; 2]

The first segment’s first control point.

§b1: [f32; 2]

The first segment’s second control point.

§midpoint: [f32; 2]

Where the two segments meet.

§a2: [f32; 2]

The second segment’s first control point.

§b2: [f32; 2]

The second segment’s second control point.

Implementations§

Source§

impl Curve

Source

pub fn ease() -> Curve

The web’s ease (cubic-bezier(0.25, 0.1, 0.25, 1.0)).

Source

pub fn ease_in() -> Curve

ease-in: starts slowly.

Source

pub fn ease_out() -> Curve

ease-out: finishes slowly.

Source

pub fn ease_in_out() -> Curve

ease-in-out: slow at both ends.

Source

pub fn ease_in_out_cubic_emphasized() -> Curve

The reference’s emphasized easing, easeInOutCubicEmphasized: Material 3’s motion for things that move across the screen — a page arriving, a sheet rising.

Source

pub fn fast_ease_in_to_slow_ease_out() -> Curve

The reference’s fastEaseInToSlowEaseOut: an iOS page sliding in.

Source

pub fn linear_to_ease_out() -> Curve

The reference’s linearToEaseOut, cubic-bezier(0.35, 0.91, 0.33, 0.97): an iOS page leaving under the one that arrives.

Source

pub fn ease_in_to_linear() -> Curve

The reference’s easeInToLinear, cubic-bezier(0.67, 0.03, 0.65, 0.09): the same page coming back.

Source

pub fn critical_spring() -> Curve

The framework’s default spring curve (omega = 8): the feel of screen and sheet transitions, in closed form.

Source

pub fn transform(&self, t: f32) -> f32

Evaluates the curve at t, clamped to [0,1].

Trait Implementations§

Source§

impl Clone for Curve

Source§

fn clone(&self) -> Curve

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 Curve

Source§

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

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

impl PartialEq for Curve

Source§

fn eq(&self, other: &Curve) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

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> 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<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<Msg> IntoMsg<Msg> for Msg

Source§

fn defer(work: impl Fn() -> Msg + 'static) -> Msg

The message that stands for work’s result.
Source§

impl<T> MaybeSend for T
where T: Send,

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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.