use std::time::Duration; use cushy::animation::easings::EaseInOutSine; use cushy::figures::{Point, Px2D, Size}; use cushy::widget::MakeWidget; use cushy::window::VirtualRecorderError; #[macro_use] mod shared; fn ui() -> impl MakeWidget { "Hello World".into_button().centered() } fn main() -> Result<(), VirtualRecorderError> { let mut recorder = ui().build_recorder().size(Size::new(320, 240)).finish()?; let initial_point = Point::px(140, 150); recorder.set_cursor_position(initial_point); recorder.set_cursor_visible(true); recorder.refresh()?; let mut animation = recorder.record_animated_png(60); animation.animate_cursor_to( Point::px(160, 120), Duration::from_millis(250), EaseInOutSine, )?; animation.wait_for(Duration::from_millis(500))?; animation.animate_cursor_to(initial_point, Duration::from_millis(250), EaseInOutSine)?; animation.wait_for(Duration::from_millis(500))?; animation.write_to("examples/offscreen-apng.png") } adapter_required_test!(main);