use crate::dynamic::dynamic_color::DynamicColor;
use std::fmt::Debug;
use std::sync::Arc;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DeltaConstraint {
Exact,
Nearer,
Farther,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum TonePolarity {
Darker,
Lighter,
RelativeDarker,
RelativeLighter,
}
#[derive(Clone, Debug)]
pub struct ToneDeltaPair {
pub role_a: Arc<DynamicColor>,
pub role_b: Arc<DynamicColor>,
pub delta: f64,
pub polarity: TonePolarity,
pub stay_together: bool,
pub constraint: DeltaConstraint,
}
impl ToneDeltaPair {
#[must_use]
pub const fn new(
role_a: Arc<DynamicColor>,
role_b: Arc<DynamicColor>,
delta: f64,
polarity: TonePolarity,
stay_together: bool,
constraint: DeltaConstraint,
) -> Self {
Self {
role_a,
role_b,
delta,
polarity,
stay_together,
constraint,
}
}
}