Add FSM and related tool plumbing (Fix #54) (#62)

- Added FSM trait
- Added FSM to select and ellipse tools
- Moved circle stamping code to ellipse tool
This commit is contained in:
George Atkinson
2021-04-05 15:57:33 -07:00
committed by GitHub
parent 7c6ab1f327
commit b88c246c87
20 changed files with 272 additions and 199 deletions
+13
View File
@@ -27,4 +27,17 @@ impl Document {
pub fn render(&self) -> String {
self.svg.iter().map(|element| element.render()).collect::<Vec<_>>().join("\n")
}
pub fn handle_operation<F: Fn(String)>(&mut self, operation: &Operation, update_frontend: F) {
match *operation {
Operation::AddCircle { cx, cy, r } => {
self.svg.push(SvgElement::Circle(Circle {
center: Point { x: cx, y: cy },
radius: r,
}));
update_frontend(self.render());
}
}
}
}
+1 -1
View File
@@ -1,3 +1,3 @@
pub enum Operation {
AddCircle((f64, f64), f64),
AddCircle { cx: f64, cy: f64, r: f64 },
}