use super::gradient::WebGradient;
use crate::{
brush::BrushBackend,
paint::{Color, BLACK},
};
#[derive(Clone, Debug)]
pub(super) enum BrushData {
Solid(Color),
Gradient(WebGradient),
}
impl Default for BrushData {
fn default() -> Self {
Self::Solid(BLACK)
}
}
#[derive(Clone, Debug, Default)]
pub struct WebBrush {
data: BrushData,
}
impl BrushBackend for WebBrush {
type GradientType = WebGradient;
fn new_solid(color: Color) -> Self {
Self {
data: BrushData::Solid(color),
}
}
fn new_gradient(gradient: Self::GradientType) -> Self {
Self {
data: BrushData::Gradient(gradient),
}
}
}
impl WebBrush {
pub(super) fn data(&self) -> &BrushData {
&self.data
}
}