animations/
animations.rs

1use fltk::{app, enums, frame::Frame, image::Pixmap, prelude::*, window::Window};
2
3const PXM: &[&str] = &[
4    "50 34 4 1",
5    "  c #000000",
6    "o c #ff9900",
7    "@ c #ffffff",
8    "# c None",
9    "##################################################",
10    "###      ##############################       ####",
11    "### ooooo  ###########################  ooooo ####",
12    "### oo  oo  #########################  oo  oo ####",
13    "### oo   oo  #######################  oo   oo ####",
14    "### oo    oo  #####################  oo    oo ####",
15    "### oo     oo  ###################  oo     oo ####",
16    "### oo      oo                     oo      oo ####",
17    "### oo       oo  ooooooooooooooo  oo       oo ####",
18    "### oo        ooooooooooooooooooooo        oo ####",
19    "### oo     ooooooooooooooooooooooooooo    ooo ####",
20    "#### oo   ooooooo ooooooooooooo ooooooo   oo #####",
21    "####  oo oooooooo ooooooooooooo oooooooo oo  #####",
22    "##### oo oooooooo ooooooooooooo oooooooo oo ######",
23    "#####  o ooooooooooooooooooooooooooooooo o  ######",
24    "###### ooooooooooooooooooooooooooooooooooo #######",
25    "##### ooooooooo     ooooooooo     ooooooooo ######",
26    "##### oooooooo  @@@  ooooooo  @@@  oooooooo ######",
27    "##### oooooooo @@@@@ ooooooo @@@@@ oooooooo ######",
28    "##### oooooooo @@@@@ ooooooo @@@@@ oooooooo ######",
29    "##### oooooooo  @@@  ooooooo  @@@  oooooooo ######",
30    "##### ooooooooo     ooooooooo     ooooooooo ######",
31    "###### oooooooooooooo       oooooooooooooo #######",
32    "###### oooooooo@@@@@@@     @@@@@@@oooooooo #######",
33    "###### ooooooo@@@@@@@@@   @@@@@@@@@ooooooo #######",
34    "####### ooooo@@@@@@@@@@@ @@@@@@@@@@@ooooo ########",
35    "######### oo@@@@@@@@@@@@ @@@@@@@@@@@@oo ##########",
36    "########## o@@@@@@ @@@@@ @@@@@ @@@@@@o ###########",
37    "########### @@@@@@@     @     @@@@@@@ ############",
38    "############  @@@@@@@@@@@@@@@@@@@@@  #############",
39    "##############  @@@@@@@@@@@@@@@@@  ###############",
40    "################    @@@@@@@@@    #################",
41    "####################         #####################",
42    "##################################################",
43];
44
45fn move_image(mut frm: Frame, handle: app::TimeoutHandle) {
46    let (x, y) = (frm.x(), frm.y());
47    frm.resize(x + 5, y, frm.w(), frm.h());
48    app::redraw();
49    if frm.x() > 260 {
50        app::remove_timeout(handle)
51    } else {
52        app::repeat_timeout(0.016, handle);
53    }
54}
55
56fn main() {
57    let app = app::App::default();
58    let mut wind = Window::default().with_label("timeout").with_size(720, 486);
59    wind.set_center_screen();
60    let mut frame = Frame::new(-200, 150, 200, 200, "");
61    let mut pxm = Pixmap::new(PXM).unwrap();
62    pxm.scale(200, 200, true, true);
63    frame.set_image_scaled(Some(pxm));
64    wind.set_color(enums::Color::White);
65    wind.end();
66    wind.show_with_env_args();
67
68    app::add_timeout(0.016, move |handle| {
69        let frame = frame.clone();
70        move_image(frame, handle);
71    });
72    app.run().unwrap();
73}