use crate::{
canvas::rough::{Op, OpSet, RoughOptions},
Point,
};
mod dashed;
mod dot;
mod hachure;
mod hatch;
mod scanline_hachure;
mod zigzag;
mod zigzag_line;
pub(crate) use dashed::DashedFiller;
pub(crate) use dot::DotFiller;
pub(crate) use hachure::HachureFiller;
pub(crate) use hatch::HatchFiller;
pub(crate) use scanline_hachure::*;
pub(crate) use zigzag::ZigZagFiller;
pub(crate) use zigzag_line::ZigZagLineFiller;
pub struct Line<T> {
pub start: Point<T>,
pub end: Point<T>,
}
pub trait PatternFiller {
fn fill_polygon(&self, points: Vec<Point<f64>>, options: &RoughOptions) -> OpSet;
}
pub trait RenderHelper {
fn rand_offset(&self, x: f64, options: &RoughOptions) -> f64;
fn rand_offset_with_range(&self, min: f64, max: f64, options: &RoughOptions) -> f64;
fn ellipse(&self, x: f64, y: f64, width: f64, height: f64, options: &RoughOptions) -> OpSet;
fn double_line_ops(&self, x1: f64, y1: f64, x2: f64, y2: f64, options: &RoughOptions) -> Vec<Op>;
}
pub fn get_filler(options: &RoughOptions, helper: impl RenderHelper) -> Box<dyn PatternFiller> {
unimplemented!()
}