reverse/
reverse.rs

1use kramaframe::{
2    BTframelist, KramaFrame,
3    keyframe::KeyFrameFunction,
4    keylist::{KeyList, TRES16Bits},
5};
6
7fn main() {
8    let mut kramaframe: KramaFrame<_, BTframelist<TRES16Bits, i32>> = KramaFrame::default();
9
10    kramaframe.extend_iter_classlist([
11        ("linear", KeyFrameFunction::Linear),
12        ("ease", KeyFrameFunction::Ease),
13        (
14            "cubic",
15            KeyFrameFunction::new_cubic_bezier_f32(0., 0.5, 1., -0.35),
16        ),
17    ]);
18
19    kramaframe.framelist.extend([
20        ("linear", KeyList::new(1, TRES16Bits::from_millis(1000))),
21        ("ease", KeyList::new(1, TRES16Bits::from_millis(1000))),
22        ("cubic", KeyList::new(1, TRES16Bits::from_millis(1000))),
23    ]);
24
25    // Linear
26    kramaframe.restart_progress("linear", 1);
27    for _ in 0..=61 {
28        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 60));
29        let linear = kramaframe.get_value_byrange("linear", 1, 0..90u32);
30        println!("linear : {} : {}", linear, "█".repeat(linear as usize));
31    }
32    kramaframe.reverse_animate("linear", 1);
33    for _ in 0..=61 {
34        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 60));
35        let linear = kramaframe.get_value_byrange("linear", 1, 0..90u32);
36        println!("linear : {} : {}", linear, "█".repeat(linear as usize));
37    }
38
39    // Ease
40    kramaframe.restart_progress("ease", 1);
41    for _ in 0..=61 {
42        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 60));
43        let ease = kramaframe.get_value_byrange("ease", 1, 0..90u32);
44        println!("ease : {} : {}", ease, "█".repeat(ease as usize));
45    }
46    kramaframe.reverse_animate("ease", 1);
47    for _ in 0..=61 {
48        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 60));
49        let ease = kramaframe.get_value_byrange("ease", 1, 0..90u32);
50        println!("ease : {} : {}", ease, "█".repeat(ease as usize));
51    }
52
53    // Cubic
54    kramaframe.restart_progress("cubic", 1);
55    for _ in 0..=62 {
56        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 60));
57        let cubic = kramaframe.get_value_byrange("cubic", 1, 0..90u32);
58        println!("cubic : {} : {}", cubic, "█".repeat(cubic as usize));
59    }
60    kramaframe.reverse_animate("cubic", 1);
61    for _ in 0..=62 {
62        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 60));
63        let cubic = kramaframe.get_value_byrange("cubic", 1, 0..90u32);
64        println!("cubic : {} : {}", cubic, "█".repeat(cubic as usize));
65    }
66
67    // Or call reverse_start to jump to the end.
68    kramaframe.reverse_start("linear", 1);
69    for _ in 0..=62 {
70        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 60));
71        let linear = kramaframe.get_value_byrange("linear", 1, 0..90u32);
72        println!("linear : {} : {}", linear, "█".repeat(linear as usize));
73    }
74    kramaframe.reverse_start("ease", 1);
75    for _ in 0..=62 {
76        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 60));
77        let ease = kramaframe.get_value_byrange("ease", 1, 0..90u32);
78        println!("ease : {} : {}", ease, "█".repeat(ease as usize));
79    }
80    kramaframe.reverse_start("cubic", 1);
81    for _ in 0..=62 {
82        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 60));
83        let cubic = kramaframe.get_value_byrange("cubic", 1, 0..90u32);
84        println!("cubic : {} : {}", cubic, "█".repeat(cubic as usize));
85    }
86}