aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-04 14:15:18 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-04 14:15:18 -0500
commit726fc4418c204ec6339f2453f7e8603435d9e729 (patch)
treec8a83db2da7aa82728510f7a2c780d91718ff5ba
parent5033f122cf47437767d9e9f4e8b2f7c0c37aa316 (diff)
downloadteleterm-726fc4418c204ec6339f2453f7e8603435d9e729.tar.gz
teleterm-726fc4418c204ec6339f2453f7e8603435d9e729.zip
allow adjusting the playback speed from within the player
-rw-r--r--src/cmd/play.rs32
1 files changed, 32 insertions, 0 deletions
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)