#[derive(Clone, Debug, PartialEq)]
pub enum ShadowQuality {
Off,
Low,
High,
}
#[derive(Clone, Debug, PartialEq)]
pub enum TextQuality {
Grayscale,
Subpixel,
Sdf,
}
#[derive(Clone, Debug)]
pub struct RenderQuality {
pub msaa: u32,
pub shadow: ShadowQuality,
pub text: TextQuality,
}
impl RenderQuality {
pub fn low() -> Self {
Self {
msaa: 1,
shadow: ShadowQuality::Off,
text: TextQuality::Grayscale,
}
}
pub fn balanced() -> Self {
Self {
msaa: 4,
shadow: ShadowQuality::Low,
text: TextQuality::Sdf,
}
}
pub fn high() -> Self {
Self {
msaa: 8,
shadow: ShadowQuality::High,
text: TextQuality::Sdf,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn quality_presets_correct_values() {
let low = RenderQuality::low();
assert_eq!(low.msaa, 1);
assert_eq!(low.shadow, ShadowQuality::Off);
assert_eq!(low.text, TextQuality::Grayscale);
let balanced = RenderQuality::balanced();
assert_eq!(balanced.msaa, 4);
assert_eq!(balanced.shadow, ShadowQuality::Low);
assert_eq!(balanced.text, TextQuality::Sdf);
let high = RenderQuality::high();
assert_eq!(high.msaa, 8);
assert_eq!(high.shadow, ShadowQuality::High);
assert_eq!(high.text, TextQuality::Sdf);
}
}