37 lines
1.1 KiB
Rust
37 lines
1.1 KiB
Rust
use core_types::BlendMode;
|
|
use vello::peniko;
|
|
|
|
pub trait BlendModeExt {
|
|
fn to_peniko(&self) -> peniko::Mix;
|
|
}
|
|
|
|
impl BlendModeExt for BlendMode {
|
|
fn to_peniko(&self) -> peniko::Mix {
|
|
match self {
|
|
// Normal group
|
|
BlendMode::Normal => peniko::Mix::Normal,
|
|
// Darken group
|
|
BlendMode::Darken => peniko::Mix::Darken,
|
|
BlendMode::Multiply => peniko::Mix::Multiply,
|
|
BlendMode::ColorBurn => peniko::Mix::ColorBurn,
|
|
// Lighten group
|
|
BlendMode::Lighten => peniko::Mix::Lighten,
|
|
BlendMode::Screen => peniko::Mix::Screen,
|
|
BlendMode::ColorDodge => peniko::Mix::ColorDodge,
|
|
// Contrast group
|
|
BlendMode::Overlay => peniko::Mix::Overlay,
|
|
BlendMode::SoftLight => peniko::Mix::SoftLight,
|
|
BlendMode::HardLight => peniko::Mix::HardLight,
|
|
// Inversion group
|
|
BlendMode::Difference => peniko::Mix::Difference,
|
|
BlendMode::Exclusion => peniko::Mix::Exclusion,
|
|
// Component group
|
|
BlendMode::Hue => peniko::Mix::Hue,
|
|
BlendMode::Saturation => peniko::Mix::Saturation,
|
|
BlendMode::Color => peniko::Mix::Color,
|
|
BlendMode::Luminosity => peniko::Mix::Luminosity,
|
|
_ => todo!(),
|
|
}
|
|
}
|
|
}
|