gpui_component/
animation.rs

1/// A cubic bezier function like CSS `cubic-bezier`.
2///
3/// Builder:
4///
5/// https://cubic-bezier.com
6pub fn cubic_bezier(x1: f32, y1: f32, x2: f32, y2: f32) -> impl Fn(f32) -> f32 {
7    move |t: f32| {
8        let one_t = 1.0 - t;
9        let one_t2 = one_t * one_t;
10        let t2 = t * t;
11        let t3 = t2 * t;
12
13        // The Bezier curve function for x and y, where x0 = 0, y0 = 0, x3 = 1, y3 = 1
14        let _x = 3.0 * x1 * one_t2 * t + 3.0 * x2 * one_t * t2 + t3;
15        let y = 3.0 * y1 * one_t2 * t + 3.0 * y2 * one_t * t2 + t3;
16
17        y
18    }
19}