mirror of
https://github.com/danbulant/cushy
synced 2026-05-19 12:19:02 +00:00
33 lines
1 KiB
Rust
33 lines
1 KiB
Rust
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);
|