use crate::range::ParamRange;
#[derive(Clone, Copy, Debug)]
pub struct ParamInfo {
pub id: u32,
pub name: &'static str,
pub short_name: &'static str,
pub group: &'static str,
pub range: ParamRange,
pub default_plain: f64,
pub flags: ParamFlags,
pub unit: ParamUnit,
pub kind: ParamValueKind,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum ParamValueKind {
Float,
Int,
Bool,
Enum,
}
bitflags::bitflags! {
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct ParamFlags: u32 {
const AUTOMATABLE = 0b0001;
const HIDDEN = 0b0010;
const READONLY = 0b0100;
const IS_BYPASS = 0b1000;
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum ParamUnit {
None,
Db,
Hz,
Milliseconds,
Seconds,
Percent,
Semitones,
Pan,
}
impl ParamUnit {
#[must_use]
pub fn as_str(&self) -> &'static str {
match self {
Self::Db => "dB",
Self::Hz => "Hz",
Self::Milliseconds => "ms",
Self::Seconds => "s",
Self::Percent => "%",
Self::Semitones => "st",
Self::Pan | Self::None => "",
}
}
}