Skip to main content

aura_anim_core/
timeline.rs

1//! Sequential, parallel, and fixed-duration animation composition.
2
3mod hold;
4mod parallel;
5mod sequence;
6
7pub use hold::Hold;
8pub use parallel::Parallel;
9pub use sequence::Sequence;
10
11/// A sequential animation timeline.
12pub type Timeline<T> = Sequence<T>;
13
14fn normalized(progress: f32) -> f32 {
15    if progress.is_nan() {
16        0.0
17    } else {
18        progress.clamp(0.0, 1.0)
19    }
20}
21
22#[cfg(test)]
23mod tests {
24    use super::normalized;
25    use float_cmp::assert_approx_eq;
26
27    #[test]
28    fn normalized_clamps_and_sanitizes_progress() {
29        assert_approx_eq!(f32, normalized(f32::NAN), 0.0);
30        assert_approx_eq!(f32, normalized(-1.0), 0.0);
31        assert_approx_eq!(f32, normalized(0.4), 0.4);
32        assert_approx_eq!(f32, normalized(2.0), 1.0);
33    }
34}