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}