pub struct Terminal {
pub size: (u16, u16),
pub screen: Vec<Vec<Char>>,
}
Expand description
Struct that represents a terminal
Fields§
§size: (u16, u16)
§screen: Vec<Vec<Char>>
Implementations§
Source§impl Terminal
impl Terminal
pub fn new(cfg: &Config) -> Self
Sourcepub fn reinit(&mut self, cfg: &Config)
pub fn reinit(&mut self, cfg: &Config)
Reload terminal to adapt new window size
Examples found in repository?
examples/heart.rs (line 49)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_heart_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}
More examples
examples/vortex.rs (line 48)
22fn main() -> Result<()> {
23 let mut stdout = stdout();
24 let (_width, _height) = terminal::size()?;
25 let mut is_running = true;
26 let cfg = Config::default();
27
28 terminal::enable_raw_mode()?;
29 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
30
31 let mut time = SystemTime::now();
32 let mut term = Terminal::default();
33 let mut fm = FireworkManager::default().with_firework(gen_vortex_firework(Vec2::new(
34 _width as f32 / 4.,
35 _height as f32 / 2.,
36 )));
37
38 while is_running {
39 if event::poll(Duration::ZERO)? {
40 match event::read()? {
41 event::Event::Key(e) => {
42 if e.code == KeyCode::Esc {
43 is_running = false;
44 }
45 }
46 event::Event::Resize(_, _) => {
47 fm.reset();
48 term.reinit(&cfg);
49 }
50 _ => {}
51 };
52 }
53
54 let delta_time = SystemTime::now().duration_since(time).unwrap();
55 fm.update(time, delta_time);
56 time = SystemTime::now();
57
58 term.render(&fm, &cfg);
59 term.print(&mut stdout, &cfg);
60
61 if delta_time < Duration::from_secs_f32(0.05) {
62 let rem = Duration::from_secs_f32(0.05) - delta_time;
63 sleep(rem);
64 }
65 }
66
67 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
68 terminal::disable_raw_mode()?;
69
70 Ok(())
71}
examples/fountain.rs (line 49)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_fountain_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2. + 13.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}
Sourcepub fn clear_screen(&mut self)
pub fn clear_screen(&mut self)
Clear the terminal screen by setting all the characters in terminal to space
Sourcepub fn print(&self, w: &mut Stdout, cfg: &Config)
pub fn print(&self, w: &mut Stdout, cfg: &Config)
Print the data out to terminal
Examples found in repository?
examples/heart.rs (line 60)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_heart_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}
More examples
examples/vortex.rs (line 59)
22fn main() -> Result<()> {
23 let mut stdout = stdout();
24 let (_width, _height) = terminal::size()?;
25 let mut is_running = true;
26 let cfg = Config::default();
27
28 terminal::enable_raw_mode()?;
29 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
30
31 let mut time = SystemTime::now();
32 let mut term = Terminal::default();
33 let mut fm = FireworkManager::default().with_firework(gen_vortex_firework(Vec2::new(
34 _width as f32 / 4.,
35 _height as f32 / 2.,
36 )));
37
38 while is_running {
39 if event::poll(Duration::ZERO)? {
40 match event::read()? {
41 event::Event::Key(e) => {
42 if e.code == KeyCode::Esc {
43 is_running = false;
44 }
45 }
46 event::Event::Resize(_, _) => {
47 fm.reset();
48 term.reinit(&cfg);
49 }
50 _ => {}
51 };
52 }
53
54 let delta_time = SystemTime::now().duration_since(time).unwrap();
55 fm.update(time, delta_time);
56 time = SystemTime::now();
57
58 term.render(&fm, &cfg);
59 term.print(&mut stdout, &cfg);
60
61 if delta_time < Duration::from_secs_f32(0.05) {
62 let rem = Duration::from_secs_f32(0.05) - delta_time;
63 sleep(rem);
64 }
65 }
66
67 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
68 terminal::disable_raw_mode()?;
69
70 Ok(())
71}
examples/fountain.rs (line 60)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_fountain_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2. + 13.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}
Sourcepub fn render(&mut self, fm: &FireworkManager, cfg: &Config)
pub fn render(&mut self, fm: &FireworkManager, cfg: &Config)
Write the rendering data of all Fireworks
and Particles
to Terminal
Examples found in repository?
examples/heart.rs (line 59)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_heart_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}
More examples
examples/vortex.rs (line 58)
22fn main() -> Result<()> {
23 let mut stdout = stdout();
24 let (_width, _height) = terminal::size()?;
25 let mut is_running = true;
26 let cfg = Config::default();
27
28 terminal::enable_raw_mode()?;
29 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
30
31 let mut time = SystemTime::now();
32 let mut term = Terminal::default();
33 let mut fm = FireworkManager::default().with_firework(gen_vortex_firework(Vec2::new(
34 _width as f32 / 4.,
35 _height as f32 / 2.,
36 )));
37
38 while is_running {
39 if event::poll(Duration::ZERO)? {
40 match event::read()? {
41 event::Event::Key(e) => {
42 if e.code == KeyCode::Esc {
43 is_running = false;
44 }
45 }
46 event::Event::Resize(_, _) => {
47 fm.reset();
48 term.reinit(&cfg);
49 }
50 _ => {}
51 };
52 }
53
54 let delta_time = SystemTime::now().duration_since(time).unwrap();
55 fm.update(time, delta_time);
56 time = SystemTime::now();
57
58 term.render(&fm, &cfg);
59 term.print(&mut stdout, &cfg);
60
61 if delta_time < Duration::from_secs_f32(0.05) {
62 let rem = Duration::from_secs_f32(0.05) - delta_time;
63 sleep(rem);
64 }
65 }
66
67 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
68 terminal::disable_raw_mode()?;
69
70 Ok(())
71}
examples/fountain.rs (line 59)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_fountain_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2. + 13.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Terminal
impl RefUnwindSafe for Terminal
impl Send for Terminal
impl Sync for Terminal
impl Unpin for Terminal
impl UnwindSafe for Terminal
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more