diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-04-09 21:36:19 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-04-09 23:42:01 +0400 |
| commit | 209492e7005bd9e58b216ff7f3a0ea39670f3a5d (patch) | |
| tree | 78135876fb5540cadfd08441d865f892363d8ca7 | |
| parent | 7e0d3d31f719615a3da99325d5797a96ae1fa5d2 (diff) | |
| download | niri-209492e7005bd9e58b216ff7f3a0ea39670f3a5d.tar.gz niri-209492e7005bd9e58b216ff7f3a0ea39670f3a5d.tar.bz2 niri-209492e7005bd9e58b216ff7f3a0ea39670f3a5d.zip | |
Add ease-out-quad curve
| -rw-r--r-- | niri-config/src/lib.rs | 1 | ||||
| -rw-r--r-- | src/animation/mod.rs | 5 | ||||
| -rw-r--r-- | wiki/Configuration:-Animations.md | 7 |
3 files changed, 11 insertions, 2 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index bb453ce3..e51602cc 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -611,6 +611,7 @@ impl EasingParams { #[derive(knuffel::DecodeScalar, Debug, Clone, Copy, PartialEq)] pub enum AnimationCurve { + EaseOutQuad, EaseOutCubic, EaseOutExpo, } diff --git a/src/animation/mod.rs b/src/animation/mod.rs index d8e8cbd5..073b0ae3 100644 --- a/src/animation/mod.rs +++ b/src/animation/mod.rs @@ -1,6 +1,6 @@ use std::time::Duration; -use keyframe::functions::EaseOutCubic; +use keyframe::functions::{EaseOutCubic, EaseOutQuad}; use keyframe::EasingFunction; use portable_atomic::{AtomicF64, Ordering}; @@ -35,6 +35,7 @@ enum Kind { #[derive(Debug, Clone, Copy)] pub enum Curve { + EaseOutQuad, EaseOutCubic, EaseOutExpo, } @@ -276,6 +277,7 @@ impl Animation { impl Curve { pub fn y(self, x: f64) -> f64 { match self { + Curve::EaseOutQuad => EaseOutQuad.y(x), Curve::EaseOutCubic => EaseOutCubic.y(x), Curve::EaseOutExpo => 1. - 2f64.powf(-10. * x), } @@ -285,6 +287,7 @@ impl Curve { impl From<niri_config::AnimationCurve> for Curve { fn from(value: niri_config::AnimationCurve) -> Self { match value { + niri_config::AnimationCurve::EaseOutQuad => Curve::EaseOutQuad, niri_config::AnimationCurve::EaseOutCubic => Curve::EaseOutCubic, niri_config::AnimationCurve::EaseOutExpo => Curve::EaseOutExpo, } diff --git a/wiki/Configuration:-Animations.md b/wiki/Configuration:-Animations.md index 12ba3b7f..ada9c9ca 100644 --- a/wiki/Configuration:-Animations.md +++ b/wiki/Configuration:-Animations.md @@ -62,7 +62,12 @@ animations { } ``` -Currently, niri only supports two curves: `ease-out-cubic` and `ease-out-expo`. +Currently, niri only supports three curves: + +- `ease-out-quad` <sup>Since: 0.1.5</sup> +- `ease-out-cubic` +- `ease-out-expo` + You can get a feel for them on pages like [easings.net](https://easings.net/). #### Spring |
