aboutsummaryrefslogtreecommitdiff
path: root/alacritty_terminal/src/config/visual_bell.rs
diff options
context:
space:
mode:
authorChristian Duerr <chrisduerr@users.noreply.github.com>2019-05-10 11:36:16 +0000
committerGitHub <noreply@github.com>2019-05-10 11:36:16 +0000
commit5d173f6df3b20308eb318cef4b58147b2197d5f9 (patch)
tree05638837bef25d65a818253814331a4f429f57ac /alacritty_terminal/src/config/visual_bell.rs
parent7738c52ed4eb177ead9f43d14207ecb129cfe617 (diff)
downloadr-alacritty-5d173f6df3b20308eb318cef4b58147b2197d5f9.tar.gz
r-alacritty-5d173f6df3b20308eb318cef4b58147b2197d5f9.tar.bz2
r-alacritty-5d173f6df3b20308eb318cef4b58147b2197d5f9.zip
Refactor config parsing files
This is a large refactor of the config parsing structure, attempting to reduce the size of the file a bit by splitting it up into different modules with more specific purposes. This also fixes #2279.
Diffstat (limited to 'alacritty_terminal/src/config/visual_bell.rs')
-rw-r--r--alacritty_terminal/src/config/visual_bell.rs64
1 files changed, 64 insertions, 0 deletions
diff --git a/alacritty_terminal/src/config/visual_bell.rs b/alacritty_terminal/src/config/visual_bell.rs
new file mode 100644
index 00000000..3a31b24a
--- /dev/null
+++ b/alacritty_terminal/src/config/visual_bell.rs
@@ -0,0 +1,64 @@
+use std::time::Duration;
+
+use crate::config::failure_default;
+use crate::term::color::Rgb;
+
+#[serde(default)]
+#[derive(Debug, Deserialize, PartialEq, Eq)]
+pub struct VisualBellConfig {
+ /// Visual bell animation function
+ #[serde(deserialize_with = "failure_default")]
+ pub animation: VisualBellAnimation,
+
+ /// Visual bell duration in milliseconds
+ #[serde(deserialize_with = "failure_default")]
+ pub duration: u16,
+
+ /// Visual bell flash color
+ #[serde(deserialize_with = "failure_default")]
+ pub color: Rgb,
+}
+
+impl Default for VisualBellConfig {
+ fn default() -> VisualBellConfig {
+ VisualBellConfig {
+ animation: Default::default(),
+ duration: Default::default(),
+ color: default_visual_bell_color(),
+ }
+ }
+}
+
+impl VisualBellConfig {
+ /// Visual bell duration in milliseconds
+ #[inline]
+ pub fn duration(&self) -> Duration {
+ Duration::from_millis(u64::from(self.duration))
+ }
+}
+
+/// `VisualBellAnimations` are modeled after a subset of CSS transitions and Robert
+/// Penner's Easing Functions.
+#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq)]
+pub enum VisualBellAnimation {
+ Ease, // CSS
+ EaseOut, // CSS
+ EaseOutSine, // Penner
+ EaseOutQuad, // Penner
+ EaseOutCubic, // Penner
+ EaseOutQuart, // Penner
+ EaseOutQuint, // Penner
+ EaseOutExpo, // Penner
+ EaseOutCirc, // Penner
+ Linear,
+}
+
+impl Default for VisualBellAnimation {
+ fn default() -> Self {
+ VisualBellAnimation::EaseOutExpo
+ }
+}
+
+fn default_visual_bell_color() -> Rgb {
+ Rgb { r: 255, g: 255, b: 255 }
+}