Rename "state" to "fsm_state" to avoid confusion
This commit is contained in:
parent
0d6d6fb81b
commit
fafea371ab
|
|
@ -20,11 +20,11 @@ pub use dispatcher::Callback;
|
||||||
|
|
||||||
use dispatcher::Dispatcher;
|
use dispatcher::Dispatcher;
|
||||||
use document_core::Document;
|
use document_core::Document;
|
||||||
use tools::ToolState;
|
use tools::ToolFsmState;
|
||||||
use workspace::Workspace;
|
use workspace::Workspace;
|
||||||
|
|
||||||
pub struct EditorState {
|
pub struct EditorState {
|
||||||
tool_state: ToolState,
|
tool_state: ToolFsmState,
|
||||||
workspace: Workspace,
|
workspace: Workspace,
|
||||||
document: Document,
|
document: Document,
|
||||||
}
|
}
|
||||||
|
|
@ -39,7 +39,7 @@ impl Editor {
|
||||||
pub fn new(callback: Callback) -> Self {
|
pub fn new(callback: Callback) -> Self {
|
||||||
Self {
|
Self {
|
||||||
state: EditorState {
|
state: EditorState {
|
||||||
tool_state: ToolState::new(),
|
tool_state: ToolFsmState::new(),
|
||||||
workspace: Workspace::new(),
|
workspace: Workspace::new(),
|
||||||
document: Document::default(),
|
document: Document::default(),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -6,46 +6,46 @@ use document_core::Operation;
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct Ellipse {
|
pub struct Ellipse {
|
||||||
state: EllipseToolState,
|
fsm_state: EllipseToolFsmState,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Tool for Ellipse {
|
impl Tool for Ellipse {
|
||||||
fn handle_input(&mut self, event: &Event, document: &Document) -> (Vec<Response>, Vec<Operation>) {
|
fn handle_input(&mut self, event: &Event, document: &Document) -> (Vec<Response>, Vec<Operation>) {
|
||||||
let mut responses = Vec::new();
|
let mut responses = Vec::new();
|
||||||
let mut operations = Vec::new();
|
let mut operations = Vec::new();
|
||||||
self.state = self.state.transition(event, document, &mut responses, &mut operations);
|
self.fsm_state = self.fsm_state.transition(event, document, &mut responses, &mut operations);
|
||||||
|
|
||||||
(responses, operations)
|
(responses, operations)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||||
enum EllipseToolState {
|
enum EllipseToolFsmState {
|
||||||
Ready,
|
Ready,
|
||||||
LmbDown,
|
LmbDown,
|
||||||
TransformSelected,
|
TransformSelected,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for EllipseToolState {
|
impl Default for EllipseToolFsmState {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
EllipseToolState::Ready
|
EllipseToolFsmState::Ready
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Fsm for EllipseToolState {
|
impl Fsm for EllipseToolFsmState {
|
||||||
fn transition(self, event: &Event, document: &Document, responses: &mut Vec<Response>, operations: &mut Vec<Operation>) -> Self {
|
fn transition(self, event: &Event, document: &Document, responses: &mut Vec<Response>, operations: &mut Vec<Operation>) -> Self {
|
||||||
match (self, event) {
|
match (self, event) {
|
||||||
(EllipseToolState::Ready, Event::MouseDown(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => EllipseToolState::LmbDown,
|
(EllipseToolFsmState::Ready, Event::MouseDown(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => EllipseToolFsmState::LmbDown,
|
||||||
|
|
||||||
// TODO - Check for left mouse button
|
// TODO - Check for left mouse button
|
||||||
(EllipseToolState::LmbDown, Event::MouseUp(mouse_state)) => {
|
(EllipseToolFsmState::LmbDown, Event::MouseUp(mouse_state)) => {
|
||||||
operations.push(Operation::AddCircle {
|
operations.push(Operation::AddCircle {
|
||||||
cx: mouse_state.position.x as f64,
|
cx: mouse_state.position.x as f64,
|
||||||
cy: mouse_state.position.y as f64,
|
cy: mouse_state.position.y as f64,
|
||||||
r: 10.0,
|
r: 10.0,
|
||||||
});
|
});
|
||||||
|
|
||||||
EllipseToolState::Ready
|
EllipseToolFsmState::Ready
|
||||||
}
|
}
|
||||||
|
|
||||||
_ => self,
|
_ => self,
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ pub trait Fsm {
|
||||||
fn transition(self, event: &Event, document: &Document, responses: &mut Vec<Response>, operations: &mut Vec<Operation>) -> Self;
|
fn transition(self, event: &Event, document: &Document, responses: &mut Vec<Response>, operations: &mut Vec<Operation>) -> Self;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct ToolState {
|
pub struct ToolFsmState {
|
||||||
pub mouse_state: MouseState,
|
pub mouse_state: MouseState,
|
||||||
pub mod_keys: ModKeys,
|
pub mod_keys: ModKeys,
|
||||||
pub trace: Trace,
|
pub trace: Trace,
|
||||||
|
|
@ -35,9 +35,9 @@ pub struct ToolState {
|
||||||
tool_settings: HashMap<ToolType, ToolSettings>,
|
tool_settings: HashMap<ToolType, ToolSettings>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for ToolState {
|
impl Default for ToolFsmState {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
ToolState {
|
ToolFsmState {
|
||||||
mouse_state: MouseState::default(),
|
mouse_state: MouseState::default(),
|
||||||
mod_keys: ModKeys::default(),
|
mod_keys: ModKeys::default(),
|
||||||
trace: Trace::new(),
|
trace: Trace::new(),
|
||||||
|
|
@ -61,7 +61,7 @@ impl Default for ToolState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ToolState {
|
impl ToolFsmState {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self::default()
|
Self::default()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ impl Tool for Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum RectangleToolState {
|
enum RectangleToolFsmState {
|
||||||
Ready,
|
Ready,
|
||||||
Dragging,
|
Dragging,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,44 +6,44 @@ use document_core::Operation;
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct Select {
|
pub struct Select {
|
||||||
state: SelectToolState,
|
fsm_state: SelectToolFsmState,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Tool for Select {
|
impl Tool for Select {
|
||||||
fn handle_input(&mut self, event: &Event, document: &Document) -> (Vec<Response>, Vec<Operation>) {
|
fn handle_input(&mut self, event: &Event, document: &Document) -> (Vec<Response>, Vec<Operation>) {
|
||||||
let mut responses = Vec::new();
|
let mut responses = Vec::new();
|
||||||
let mut operations = Vec::new();
|
let mut operations = Vec::new();
|
||||||
self.state = self.state.transition(event, document, &mut responses, &mut operations);
|
self.fsm_state = self.fsm_state.transition(event, document, &mut responses, &mut operations);
|
||||||
|
|
||||||
(responses, operations)
|
(responses, operations)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||||
enum SelectToolState {
|
enum SelectToolFsmState {
|
||||||
Ready,
|
Ready,
|
||||||
LmbDown,
|
LmbDown,
|
||||||
TransformSelected,
|
TransformSelected,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for SelectToolState {
|
impl Default for SelectToolFsmState {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
SelectToolState::Ready
|
SelectToolFsmState::Ready
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Fsm for SelectToolState {
|
impl Fsm for SelectToolFsmState {
|
||||||
fn transition(self, event: &Event, document: &Document, responses: &mut Vec<Response>, operations: &mut Vec<Operation>) -> Self {
|
fn transition(self, event: &Event, document: &Document, responses: &mut Vec<Response>, operations: &mut Vec<Operation>) -> Self {
|
||||||
match (self, event) {
|
match (self, event) {
|
||||||
(SelectToolState::Ready, Event::MouseDown(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolState::LmbDown,
|
(SelectToolFsmState::Ready, Event::MouseDown(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolFsmState::LmbDown,
|
||||||
|
|
||||||
(SelectToolState::LmbDown, Event::MouseUp(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolState::Ready,
|
(SelectToolFsmState::LmbDown, Event::MouseUp(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolFsmState::Ready,
|
||||||
|
|
||||||
(SelectToolState::LmbDown, Event::MouseMove(mouse_state)) => SelectToolState::TransformSelected,
|
(SelectToolFsmState::LmbDown, Event::MouseMove(mouse_state)) => SelectToolFsmState::TransformSelected,
|
||||||
|
|
||||||
(SelectToolState::TransformSelected, Event::MouseMove(mouse_state)) => self,
|
(SelectToolFsmState::TransformSelected, Event::MouseMove(mouse_state)) => self,
|
||||||
|
|
||||||
(SelectToolState::TransformSelected, Event::MouseUp(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolState::Ready,
|
(SelectToolFsmState::TransformSelected, Event::MouseUp(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolFsmState::Ready,
|
||||||
|
|
||||||
_ => self,
|
_ => self,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue