roughr 0.12.0

Generate Hand Sketched 2D Drawings
Documentation
use std::borrow::BorrowMut;

use euclid::default::Point2D;
use euclid::Trig;
use num_traits::{Float, FromPrimitive};

use self::dashed_filler::DashedFiller;
use self::dot_filler::DotFiller;
use self::hatch_filler::HatchFiller;
use self::scan_line_hachure::ScanlineHachureFiller;
use self::traits::PatternFiller;
use self::zig_zag_filler::ZigZagFiller;
use self::zig_zag_line_filler::ZigZagLineFiller;

pub mod dashed_filler;
pub mod dot_filler;
pub mod hatch_filler;
pub mod scan_line_hachure;
pub mod traits;
pub mod zig_zag_filler;
pub mod zig_zag_line_filler;

pub enum FillerType {
    ScanLineHachure,
    DashedFiller,
    DotFiller,
    HatchFiller,
    ZigZagFiller,
    ZigZagLineFiller,
}

pub fn get_filler<'a, F, P>(f: FillerType) -> Box<dyn PatternFiller<F, P> + 'a>
where
    F: Float + Trig + FromPrimitive + 'a,
    P: BorrowMut<Vec<Vec<Point2D<F>>>>,
{
    match f {
        FillerType::ScanLineHachure => Box::new(ScanlineHachureFiller::new()),
        FillerType::DashedFiller => Box::new(DashedFiller::new()),
        FillerType::DotFiller => Box::new(DotFiller::new()),
        FillerType::HatchFiller => Box::new(HatchFiller::new()),
        FillerType::ZigZagFiller => Box::new(ZigZagFiller::new()),
        FillerType::ZigZagLineFiller => Box::new(ZigZagLineFiller::new()),
    }
}