#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Compose {
Clear,
Copy,
Dest,
SrcOver,
DestOver,
SrcIn,
DestIn,
SrcOut,
DestOut,
SrcAtop,
DestAtop,
Xor,
Plus,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Mix {
Normal,
Multiply,
Screen,
Overlay,
Darken,
Lighten,
ColorDodge,
ColorBurn,
HardLight,
SoftLight,
Difference,
Exclusion,
Hue,
Saturation,
Color,
Luminosity,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct BlendMode {
pub mix: Mix,
pub compose: Compose,
}
impl BlendMode {
pub const fn new(mix: Mix, compose: Compose) -> Self {
Self { mix, compose }
}
pub const NORMAL: Self = Self::new(Mix::Normal, Compose::SrcOver);
}
impl Default for BlendMode {
fn default() -> Self {
Self::NORMAL
}
}