kiroshi 0.1.0

An opinionated image diffusion server for Rust
Documentation
use std::fmt;

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default, Serialize, Deserialize)]
pub enum Quality {
    Low,
    Normal,
    #[default]
    High,
    Ultra,
    Insane,
}

impl Quality {
    pub const ALL: &'static [Self] = &[
        Self::Low,
        Self::Normal,
        Self::High,
        Self::Ultra,
        Self::Insane,
    ];

    pub fn scale_factor(self) -> f32 {
        match self {
            Quality::Low => 1.0,
            Quality::Normal => 1.25,
            Quality::High => 1.5,
            Quality::Ultra => 1.75,
            Quality::Insane => 2.0,
        }
    }
}

impl fmt::Display for Quality {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        f.write_str(match self {
            Quality::Low => "Low",
            Quality::Normal => "Normal",
            Quality::High => "High",
            Quality::Ultra => "Ultra",
            Quality::Insane => "Insane",
        })
    }
}