use super::element_id::*;
use super::super::raw_point::*;
use super::super::brush_properties::*;
use super::super::brush_definition::*;
use super::super::brush_drawing_style::*;
use std::sync::*;
#[derive(Clone, PartialEq, Debug)]
pub enum PaintEdit {
SelectBrush(ElementId, BrushDefinition, BrushDrawingStyle),
BrushProperties(ElementId, BrushProperties),
BrushStroke(ElementId, Arc<Vec<RawPoint>>)
}
impl PaintEdit {
pub fn assign_element_id<AssignFn: FnOnce() -> i64>(self, assign_element_id: AssignFn) -> PaintEdit {
use self::PaintEdit::*;
use self::ElementId::*;
match self {
SelectBrush(Unassigned, brush_def, brush_style) => SelectBrush(Assigned(assign_element_id()), brush_def, brush_style),
BrushProperties(Unassigned, brush_props) => BrushProperties(Assigned(assign_element_id()), brush_props),
BrushStroke(Unassigned, points) => BrushStroke(Assigned(assign_element_id()), points),
assigned => assigned
}
}
}