use fltk::{app, enums, frame::Frame, image::Pixmap, prelude::*, window::Window}; const PXM: &[&str] = &[ "50 34 4 1", " c #000000", "o c #ff9900", "@ c #ffffff", "# c None", "##################################################", "### ############################## ####", "### ooooo ########################### ooooo ####", "### oo oo ######################### oo oo ####", "### oo oo ####################### oo oo ####", "### oo oo ##################### oo oo ####", "### oo oo ################### oo oo ####", "### oo oo oo oo ####", "### oo oo ooooooooooooooo oo oo ####", "### oo ooooooooooooooooooooo oo ####", "### oo ooooooooooooooooooooooooooo ooo ####", "#### oo ooooooo ooooooooooooo ooooooo oo #####", "#### oo oooooooo ooooooooooooo oooooooo oo #####", "##### oo oooooooo ooooooooooooo oooooooo oo ######", "##### o ooooooooooooooooooooooooooooooo o ######", "###### ooooooooooooooooooooooooooooooooooo #######", "##### ooooooooo ooooooooo ooooooooo ######", "##### oooooooo @@@ ooooooo @@@ oooooooo ######", "##### oooooooo @@@@@ ooooooo @@@@@ oooooooo ######", "##### oooooooo @@@@@ ooooooo @@@@@ oooooooo ######", "##### oooooooo @@@ ooooooo @@@ oooooooo ######", "##### ooooooooo ooooooooo ooooooooo ######", "###### oooooooooooooo oooooooooooooo #######", "###### oooooooo@@@@@@@ @@@@@@@oooooooo #######", "###### ooooooo@@@@@@@@@ @@@@@@@@@ooooooo #######", "####### ooooo@@@@@@@@@@@ @@@@@@@@@@@ooooo ########", "######### oo@@@@@@@@@@@@ @@@@@@@@@@@@oo ##########", "########## o@@@@@@ @@@@@ @@@@@ @@@@@@o ###########", "########### @@@@@@@ @ @@@@@@@ ############", "############ @@@@@@@@@@@@@@@@@@@@@ #############", "############## @@@@@@@@@@@@@@@@@ ###############", "################ @@@@@@@@@ #################", "#################### #####################", "##################################################", ]; fn move_image(mut frm: Frame, handle: app::TimeoutHandle) { let (x, y) = (frm.x(), frm.y()); frm.set_pos(x + 5, y); app::redraw(); if frm.x() > 260 { app::remove_timeout3(handle) } else { app::repeat_timeout3(0.016, handle); } } fn main() { let app = app::App::default(); let mut wind = Window::default() .with_label("timeout") .with_size(720, 486) .center_screen(); let mut frame = Frame::new(-200, 150, 200, 200, ""); let mut pxm = Pixmap::new(PXM).unwrap(); pxm.scale(200, 200, true, true); frame.set_image_scaled(Some(pxm)); wind.set_color(enums::Color::White); wind.end(); wind.show_with_env_args(); app::add_timeout3(0.016, move |handle| { let frame = frame.clone(); move_image(frame, handle); }); app.run().unwrap(); }