allkeyframe/
allkeyframe.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        ("easein", KeyFrameFunction::EaseIn),
13        ("easeout", KeyFrameFunction::EaseOut),
14        ("easeinout", KeyFrameFunction::EaseInOut),
15        (
16            "cubic",
17            KeyFrameFunction::new_cubic_bezier_f32(0., 1.26, 1., -0.79),
18        ),
19        ("step", KeyFrameFunction::Steps(5)),
20    ]);
21
22    kramaframe.framelist.extend([
23        ("linear", KeyList::new(1, TRES16Bits::from_millis(1000))),
24        ("easein", KeyList::new(1, TRES16Bits::from_millis(1000))),
25        ("easeout", KeyList::new(1, TRES16Bits::from_millis(1000))),
26        ("easeinout", KeyList::new(1, TRES16Bits::from_millis(1000))),
27        ("easeinout", KeyList::new(1, TRES16Bits::from_millis(1000))),
28        ("cubic", KeyList::new(1, TRES16Bits::from_millis(1000))),
29        ("step", KeyList::new(1, TRES16Bits::from_millis(1000))),
30    ]);
31
32    // Linear
33    for _ in 0..=60 {
34        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 60));
35        let linear =
36            kramaframe.animate_by_closure_range("linear", 1, |x| !x, |ongoing| !ongoing, 0..90u32);
37        println!("linear : {} : {}", linear, "█".repeat(linear as usize));
38    }
39    // EaseIn
40    for _ in 0..=90 {
41        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 90));
42        let easein =
43            kramaframe.animate_by_closure_range("easein", 1, |x| !x, |ongoing| !ongoing, 0..90u32);
44        println!("easein : {} : {}", easein, "█".repeat(easein as usize));
45    }
46    // EaseOut
47    for _ in 0..=90 {
48        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 90));
49        let easeout =
50            kramaframe.animate_by_closure_range("easeout", 1, |x| !x, |ongoing| !ongoing, 0..90u32);
51        println!("easeout : {} : {}", easeout, "█".repeat(easeout as usize));
52    }
53    // EaseInOut
54    for _ in 0..=90 {
55        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 90));
56        let easeinout = kramaframe.animate_by_closure_range(
57            "easeinout",
58            1,
59            |x| !x,
60            |ongoing| !ongoing,
61            0..90u32,
62        );
63        println!(
64            "easeinout : {} : {}",
65            easeinout,
66            "█".repeat(easeinout as usize)
67        );
68    }
69    // Cubic
70    for _ in 0..=90 {
71        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 90));
72        let cubic =
73            kramaframe.animate_by_closure_range("cubic", 1, |x| !x, |ongoing| !ongoing, 0..90u32);
74        println!("cubic : {} : {}", cubic, "█".repeat(cubic as usize));
75    }
76    // Steps
77    for _ in 0..=90 {
78        kramaframe.update_progress(TRES16Bits::from_millis(1000 / 90));
79        let steps =
80            kramaframe.animate_by_closure_range("step", 1, |x| !x, |ongoing| !ongoing, 0..90u32);
81        println!("steps : {} : {}", steps, "█".repeat(steps as usize));
82    }
83}