rusvid_core 0.2.1

Core library for rusvid
Documentation
use std::rc::Rc;

use crate::holder::gradient::base::BaseGradient;
use crate::holder::utils::TranslateIntoResvgGeneric;
use crate::point::Point;

#[derive(Debug, Clone)]
pub struct LinearGradient {
    point_1: Point,
    point_2: Point,

    base: BaseGradient,
}

impl LinearGradient {
    pub fn new(base: BaseGradient) -> LinearGradient {
        LinearGradient {
            point_1: Point::ZERO,
            point_2: Point::new(1.0, 0.0),
            base,
        }
    }
}

impl TranslateIntoResvgGeneric<resvg::usvg::LinearGradient> for LinearGradient {
    fn translate(&self) -> resvg::usvg::LinearGradient {
        resvg::usvg::LinearGradient {
            id: "".to_string(),
            x1: self.point_1.x(),
            y1: self.point_1.y(),
            x2: self.point_2.x(),
            y2: self.point_2.y(),
            base: self.base.translate(),
        }
    }
}

impl TranslateIntoResvgGeneric<resvg::usvg::Paint> for LinearGradient {
    fn translate(&self) -> resvg::usvg::Paint {
        resvg::usvg::Paint::LinearGradient(Rc::new(self.translate()))
    }
}