aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/config/bell.rs
diff options
context:
space:
mode:
authorChristian Duerr <contact@christianduerr.com>2021-01-24 21:45:36 +0000
committerGitHub <noreply@github.com>2021-01-24 21:45:36 +0000
commit530de00049c2afcc562d36ccdb3e6afa2fe396a5 (patch)
tree3dabbcef3fc4a2041f9027d82243aa0d70928153 /alacritty/src/config/bell.rs
parent7291702f6b4fff10f2470f084abe0785b95659a0 (diff)
downloadr-alacritty-530de00049c2afcc562d36ccdb3e6afa2fe396a5.tar.gz
r-alacritty-530de00049c2afcc562d36ccdb3e6afa2fe396a5.tar.bz2
r-alacritty-530de00049c2afcc562d36ccdb3e6afa2fe396a5.zip
Move renderable cell transformation to alacritty
This refactors a large chunk of the alacritty_terminal API to expose all data necessary for rendering uniformly through the `renderable_content` call. This also no longer transforms the cells for rendering by a GUI but instead just reports the content from a terminal emulation perspective. The transformation into renderable cells is now done inside the alacritty crate. Since the terminal itself only ever needs to know about modified color RGB values, the configuration for colors was moved to the alacritty UI code.
Diffstat (limited to 'alacritty/src/config/bell.rs')
-rw-r--r--alacritty/src/config/bell.rs70
1 files changed, 70 insertions, 0 deletions
diff --git a/alacritty/src/config/bell.rs b/alacritty/src/config/bell.rs
new file mode 100644
index 00000000..2516e2b3
--- /dev/null
+++ b/alacritty/src/config/bell.rs
@@ -0,0 +1,70 @@
+use std::time::Duration;
+
+use alacritty_config_derive::ConfigDeserialize;
+
+use alacritty_terminal::config::Program;
+use alacritty_terminal::term::color::Rgb;
+
+#[derive(ConfigDeserialize, Clone, Debug, PartialEq, Eq)]
+pub struct BellConfig {
+ /// Visual bell animation function.
+ pub animation: BellAnimation,
+
+ /// Command to run on bell.
+ pub command: Option<Program>,
+
+ /// Visual bell flash color.
+ pub color: Rgb,
+
+ /// Visual bell duration in milliseconds.
+ duration: u16,
+}
+
+impl Default for BellConfig {
+ fn default() -> Self {
+ Self {
+ color: Rgb { r: 255, g: 255, b: 255 },
+ animation: Default::default(),
+ command: Default::default(),
+ duration: Default::default(),
+ }
+ }
+}
+
+impl BellConfig {
+ pub fn duration(&self) -> Duration {
+ Duration::from_millis(self.duration as u64)
+ }
+}
+
+/// `VisualBellAnimations` are modeled after a subset of CSS transitions and Robert
+/// Penner's Easing Functions.
+#[derive(ConfigDeserialize, Clone, Copy, Debug, PartialEq, Eq)]
+pub enum BellAnimation {
+ // CSS animation.
+ Ease,
+ // CSS animation.
+ EaseOut,
+ // Penner animation.
+ EaseOutSine,
+ // Penner animation.
+ EaseOutQuad,
+ // Penner animation.
+ EaseOutCubic,
+ // Penner animation.
+ EaseOutQuart,
+ // Penner animation.
+ EaseOutQuint,
+ // Penner animation.
+ EaseOutExpo,
+ // Penner animation.
+ EaseOutCirc,
+ // Penner animation.
+ Linear,
+}
+
+impl Default for BellAnimation {
+ fn default() -> Self {
+ BellAnimation::EaseOutExpo
+ }
+}