x-graphics 0.2.1

Graphics framework for X
Documentation
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
    }
}