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}