deckster/src/model/position.rs
2024-01-31 01:23:56 +01:00

56 lines
1.4 KiB
Rust

use std::fmt::{Display, Formatter};
use enum_map::Enum;
use serde::Deserialize;
use loupedeck_serial::characteristics::LoupedeckButton;
#[derive(Debug, Eq, PartialEq, Hash, Clone, Copy, Deserialize, Enum)]
pub enum ButtonPosition {
#[serde(rename = "0")]
N0,
#[serde(rename = "1")]
N1,
#[serde(rename = "2")]
N2,
#[serde(rename = "3")]
N3,
#[serde(rename = "4")]
N4,
#[serde(rename = "5")]
N5,
#[serde(rename = "6")]
N6,
#[serde(rename = "7")]
N7,
}
impl ButtonPosition {
pub fn of(button: &LoupedeckButton) -> Self {
match button {
LoupedeckButton::N0 => Self::N0,
LoupedeckButton::N1 => Self::N1,
LoupedeckButton::N2 => Self::N2,
LoupedeckButton::N3 => Self::N3,
LoupedeckButton::N4 => Self::N4,
LoupedeckButton::N5 => Self::N5,
LoupedeckButton::N6 => Self::N6,
LoupedeckButton::N7 => Self::N7,
}
}
}
impl Display for ButtonPosition {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
ButtonPosition::N0 => "0",
ButtonPosition::N1 => "1",
ButtonPosition::N2 => "2",
ButtonPosition::N3 => "3",
ButtonPosition::N4 => "4",
ButtonPosition::N5 => "5",
ButtonPosition::N6 => "6",
ButtonPosition::N7 => "7",
})
}
}