freya_core/values/
sampling.rs

1use std::fmt;
2
3use crate::parsing::{
4    Parse,
5    ParseError,
6};
7
8#[derive(Clone, Debug, PartialEq, Default)]
9pub enum SamplingMode {
10    #[default]
11    Nearest,
12    Bilinear,
13    Trilinear,
14    Mitchell,
15    CatmullRom,
16}
17
18impl Parse for SamplingMode {
19    fn parse(value: &str) -> Result<Self, ParseError> {
20        Ok(match value {
21            "bilinear" => SamplingMode::Bilinear,
22            "trilinear" => SamplingMode::Trilinear,
23            "mitchell" => SamplingMode::Mitchell,
24            "catmull-rom" => SamplingMode::CatmullRom,
25            _ => SamplingMode::Nearest,
26        })
27    }
28}
29
30impl fmt::Display for SamplingMode {
31    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
32        f.write_str(match self {
33            SamplingMode::Nearest => "nearest",
34            SamplingMode::Bilinear => "bilinear",
35            SamplingMode::Trilinear => "trilinear",
36            SamplingMode::Mitchell => "mitchell",
37            SamplingMode::CatmullRom => "catmull-rom",
38        })
39    }
40}