use serde::{Serialize, Deserialize};
use crate::glif::{MFEKOutline, MFEKContour};
use crate::PointData;
use super::ContourOperation;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum PatternCopies {
Single,
Repeated,
Fixed(usize) }
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum PatternSubdivide {
Off,
Simple(usize), }
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum PatternHandleDiscontinuity {
Off,
Split(f64)
}
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub enum PatternStretch {
Off,
On,
Spacing,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PAPContour<PD: PointData> {
pub pattern: MFEKOutline<PD>,
pub copies: PatternCopies,
pub subdivide: PatternSubdivide,
pub is_vertical: bool, pub stretch: PatternStretch,
pub spacing: f64,
pub simplify: bool,
pub normal_offset: f64,
pub tangent_offset: f64,
pub pattern_scale: (f64, f64),
pub center_pattern: bool,
pub prevent_overdraw: f64,
pub two_pass_culling: bool,
pub reverse_path: bool,
pub reverse_culling: bool,
}
impl<PD: PointData> ContourOperation<PD> for PAPContour<PD> {
fn sub(&mut self, _begin: usize, _end: usize) {}
fn append(&mut self,_append: &MFEKContour<PD>) {}
fn insert_op(&mut self, _point_idx: usize) {}
fn remove_op(&mut self, _point_idx: usize) {}
}