use crate::{ color::Color, layers::{style, Layer}, LayerId, }; use serde::{Deserialize, Serialize}; #[repr(C)] #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] pub enum Operation { AddEllipse { path: Vec, insert_index: isize, transform: [f64; 6], style: style::PathStyle, }, AddRect { path: Vec, insert_index: isize, transform: [f64; 6], style: style::PathStyle, }, AddLine { path: Vec, insert_index: isize, transform: [f64; 6], style: style::PathStyle, }, AddPen { path: Vec, transform: [f64; 6], insert_index: isize, points: Vec<(f64, f64)>, style: style::PathStyle, }, AddShape { path: Vec, insert_index: isize, transform: [f64; 6], equal_sides: bool, sides: u8, style: style::PathStyle, }, DeleteLayer { path: Vec, }, DuplicateLayer { path: Vec, }, PasteLayer { layer: Layer, path: Vec, }, AddFolder { path: Vec, }, MountWorkingFolder { path: Vec, }, TransformLayer { path: Vec, transform: [f64; 6], }, SetLayerTransform { path: Vec, transform: [f64; 6], }, DiscardWorkingFolder, ClearWorkingFolder, CommitTransaction, ToggleVisibility { path: Vec, }, FillLayer { path: Vec, color: Color, }, }