use std::fmt;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
pub enum GestureDirection {
Up,
Down,
Left,
Right,
Click,
}
impl GestureDirection {
pub const ALL: [GestureDirection; 5] = [
GestureDirection::Up,
GestureDirection::Down,
GestureDirection::Left,
GestureDirection::Right,
GestureDirection::Click,
];
#[must_use]
pub fn label(self) -> &'static str {
match self {
GestureDirection::Up => "Up",
GestureDirection::Down => "Down",
GestureDirection::Left => "Left",
GestureDirection::Right => "Right",
GestureDirection::Click => "Click",
}
}
#[must_use]
pub fn glyph(self) -> &'static str {
match self {
GestureDirection::Up => "↑",
GestureDirection::Down => "↓",
GestureDirection::Left => "←",
GestureDirection::Right => "→",
GestureDirection::Click => "·",
}
}
}
impl fmt::Display for GestureDirection {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.label())
}
}