kiroshi 0.1.0

An opinionated image diffusion server for Rust
Documentation
use crate::{Padding, Strength};

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct Detail {
    pub strength: Strength,
    pub padding: Padding,
    pub max_area: Option<Area>,
}

impl Default for Detail {
    fn default() -> Self {
        Self {
            strength: Strength::default(),
            padding: Padding::from(16),
            max_area: None,
        }
    }
}

#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct Area(u32);

impl Area {
    pub fn parse(value: u32) -> Option<Area> {
        if value > 0 { Some(Self(value)) } else { None }
    }

    pub fn value(self) -> u32 {
        self.0
    }
}