aboutsummaryrefslogtreecommitdiffstats
path: root/src/cmd/play.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/play.rs')
-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)