use std::time::Instant;
use crossterm::{
event::{Event, KeyCode},
style::ContentStyle,
};
use tortuise::buffer::{Buffer, Cell};
fn main() {
let mut stdout = std::io::stdout().lock();
let mut buffer = Buffer::new(&mut stdout).unwrap();
let mut last_frame_start = Instant::now();
buffer
.render_loop(
|renderer, event| {
if let Event::Key(event) = event
&& event.code == KeyCode::Esc
{
let _ = renderer.finish();
std::process::exit(0);
}
},
|renderer| {
renderer.cells.clear();
let end = Instant::now();
let frame_time = (end - last_frame_start).as_micros();
let digits = [
frame_time % 1_000_000 / 100_000,
frame_time % 100_000 / 10_000,
frame_time % 10_000 / 1_000,
frame_time % 1_000 / 100,
frame_time % 100 / 10,
frame_time % 10,
];
for (x, digit) in digits.into_iter().enumerate() {
renderer.cells.push(Cell {
character: char::from_digit(digit as u32, 10).unwrap(),
x: x as u16,
y: 0,
z: 0,
style: ContentStyle::new(),
});
}
last_frame_start = Instant::now();
},
)
.unwrap();
}
|