From b9570962cfc214bbac0f3fef1e6c1f9848f52658 Mon Sep 17 00:00:00 2001 From: Mica White Date: Wed, 17 Jun 2026 17:41:28 -0400 Subject: Basic renderer and framerate test --- src/main.rs | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index e7a11a9..e8c9f23 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,48 @@ +use std::time::Instant; + +use crossterm::{ + event::{Event, KeyCode}, + style::ContentStyle, +}; +use tortuise::buffer::{Buffer, Cell}; + fn main() { - println!("Hello, world!"); + 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(); } -- cgit v1.2.3