From 726fc4418c204ec6339f2453f7e8603435d9e729 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 4 Nov 2019 14:15:18 -0500 Subject: allow adjusting the playback speed from within the player --- src/cmd/play.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/cmd/play.rs b/src/cmd/play.rs index e4cf9c1..acc0673 100644 --- a/src/cmd/play.rs +++ b/src/cmd/play.rs @@ -1,6 +1,8 @@ use crate::prelude::*; use std::io::Write as _; +const PLAYBACK_RATIO_INCR: f32 = 1.5; + #[derive(serde::Deserialize, Debug, Default)] pub struct Config { #[serde(default)] @@ -124,6 +126,21 @@ impl Player { } } + fn playback_ratio_incr(&mut self) { + self.playback_ratio *= PLAYBACK_RATIO_INCR; + self.set_timer(); + } + + fn playback_ratio_decr(&mut self) { + self.playback_ratio /= PLAYBACK_RATIO_INCR; + self.set_timer(); + } + + fn playback_ratio_reset(&mut self) { + self.playback_ratio = 1.0; + self.set_timer(); + } + fn set_timer(&mut self) { if let Some(frame) = self.ttyrec.frame(self.idx) { self.timer = Some(tokio::timer::Delay::new( @@ -220,6 +237,21 @@ impl PlaySession { self.paused = Some(std::time::Instant::now()); } } + crossterm::InputEvent::Keyboard(crossterm::KeyEvent::Char( + '+', + )) => { + self.player.playback_ratio_incr(); + } + crossterm::InputEvent::Keyboard(crossterm::KeyEvent::Char( + '-', + )) => { + self.player.playback_ratio_decr(); + } + crossterm::InputEvent::Keyboard(crossterm::KeyEvent::Char( + '=', + )) => { + self.player.playback_ratio_reset(); + } _ => {} } Ok(false) -- cgit v1.2.3-54-g00ecf