Skip to content

Commit 546bb16

Browse files
henryksloanKeavon
authored andcommitted
Pass layer metadata to tools (#277)
1 parent 3a14b38 commit 546bb16

File tree

10 files changed

+28
-28
lines changed

10 files changed

+28
-28
lines changed

core/editor/src/communication/dispatcher.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ impl Dispatcher {
4040
Global(message) => self.global_message_handler.process_action(message, (), &mut self.messages),
4141
Tool(message) => self
4242
.tool_message_handler
43-
.process_action(message, (&self.document_message_handler.active_document().document, &self.input_preprocessor), &mut self.messages),
43+
.process_action(message, (&self.document_message_handler.active_document(), &self.input_preprocessor), &mut self.messages),
4444
Frontend(message) => self.frontend_message_handler.process_action(message, (), &mut self.messages),
4545
InputPreprocessor(message) => self.input_preprocessor.process_action(message, (), &mut self.messages),
4646
InputMapper(message) => {

core/editor/src/tool/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ pub mod tool_message_handler;
22
pub mod tool_settings;
33
pub mod tools;
44

5+
use crate::document::Document;
56
use crate::input::InputPreprocessor;
67
use crate::message_prelude::*;
7-
use crate::SvgDocument;
88
use crate::{
99
communication::{message::Message, MessageHandler},
1010
Color,
@@ -25,12 +25,12 @@ pub mod tool_messages {
2525
pub use super::tools::rectangle::{RectangleMessage, RectangleMessageDiscriminant};
2626
}
2727

28-
pub type ToolActionHandlerData<'a> = (&'a SvgDocument, &'a DocumentToolData, &'a InputPreprocessor);
28+
pub type ToolActionHandlerData<'a> = (&'a Document, &'a DocumentToolData, &'a InputPreprocessor);
2929

3030
pub trait Fsm {
3131
type ToolData;
3232

33-
fn transition(self, message: ToolMessage, document: &SvgDocument, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, messages: &mut VecDeque<Message>) -> Self;
33+
fn transition(self, message: ToolMessage, document: &Document, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, messages: &mut VecDeque<Message>) -> Self;
3434
}
3535

3636
#[derive(Debug, Clone)]

core/editor/src/tool/tool_message_handler.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ use document_core::color::Color;
33

44
use crate::input::InputPreprocessor;
55
use crate::{
6+
document::Document,
67
tool::{ToolFsmState, ToolType},
7-
SvgDocument,
88
};
99
use std::collections::VecDeque;
1010

@@ -44,8 +44,8 @@ pub enum ToolMessage {
4444
pub struct ToolMessageHandler {
4545
tool_state: ToolFsmState,
4646
}
47-
impl MessageHandler<ToolMessage, (&SvgDocument, &InputPreprocessor)> for ToolMessageHandler {
48-
fn process_action(&mut self, message: ToolMessage, data: (&SvgDocument, &InputPreprocessor), responses: &mut VecDeque<Message>) {
47+
impl MessageHandler<ToolMessage, (&Document, &InputPreprocessor)> for ToolMessageHandler {
48+
fn process_action(&mut self, message: ToolMessage, data: (&Document, &InputPreprocessor), responses: &mut VecDeque<Message>) {
4949
let (document, input) = data;
5050
use ToolMessage::*;
5151
match message {

core/editor/src/tool/tools/ellipse.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::input::{mouse::ViewportPosition, InputPreprocessor};
22
use crate::tool::{DocumentToolData, Fsm, ToolActionHandlerData};
3-
use crate::{message_prelude::*, SvgDocument};
3+
use crate::{document::Document, message_prelude::*};
44
use document_core::{layers::style, Operation};
55
use glam::{DAffine2, DVec2};
66

@@ -59,8 +59,8 @@ struct EllipseToolData {
5959
impl Fsm for EllipseToolFsmState {
6060
type ToolData = EllipseToolData;
6161

62-
fn transition(self, event: ToolMessage, document: &SvgDocument, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
63-
let transform = document.root.transform;
62+
fn transition(self, event: ToolMessage, document: &Document, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
63+
let transform = document.document.root.transform;
6464
use EllipseMessage::*;
6565
use EllipseToolFsmState::*;
6666
if let ToolMessage::Ellipse(event) = event {

core/editor/src/tool/tools/fill.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ impl<'a> MessageHandler<ToolMessage, ToolActionHandlerData<'a>> for Fill {
2929
DVec2::new(point_1.x, point_2.y),
3030
];
3131

32-
if let Some(path) = data.0.intersects_quad_root(quad).last() {
32+
if let Some(path) = data.0.document.intersects_quad_root(quad).last() {
3333
responses.push_back(
3434
Operation::FillLayer {
3535
path: path.to_vec(),

core/editor/src/tool/tools/line.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::input::{mouse::ViewportPosition, InputPreprocessor};
22
use crate::tool::{DocumentToolData, Fsm, ToolActionHandlerData};
3-
use crate::{message_prelude::*, SvgDocument};
3+
use crate::{document::Document, message_prelude::*};
44
use document_core::{layers::style, Operation};
55
use glam::{DAffine2, DVec2};
66

@@ -64,8 +64,8 @@ struct LineToolData {
6464
impl Fsm for LineToolFsmState {
6565
type ToolData = LineToolData;
6666

67-
fn transition(self, event: ToolMessage, document: &SvgDocument, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
68-
let transform = document.root.transform;
67+
fn transition(self, event: ToolMessage, document: &Document, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
68+
let transform = document.document.root.transform;
6969
use LineMessage::*;
7070
use LineToolFsmState::*;
7171
if let ToolMessage::Line(event) = event {

core/editor/src/tool/tools/pen.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::input::InputPreprocessor;
22
use crate::tool::{DocumentToolData, Fsm, ToolActionHandlerData};
3-
use crate::{message_prelude::*, SvgDocument};
3+
use crate::{document::Document, message_prelude::*};
44
use document_core::{layers::style, Operation};
55
use glam::DAffine2;
66

@@ -54,8 +54,8 @@ struct PenToolData {
5454
impl Fsm for PenToolFsmState {
5555
type ToolData = PenToolData;
5656

57-
fn transition(self, event: ToolMessage, document: &SvgDocument, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
58-
let transform = document.root.transform;
57+
fn transition(self, event: ToolMessage, document: &Document, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
58+
let transform = document.document.root.transform;
5959
let pos = transform.inverse() * DAffine2::from_translation(input.mouse.position.to_dvec2());
6060

6161
use PenMessage::*;

core/editor/src/tool/tools/rectangle.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::input::{mouse::ViewportPosition, InputPreprocessor};
22
use crate::tool::{DocumentToolData, Fsm, ToolActionHandlerData};
3-
use crate::{message_prelude::*, SvgDocument};
3+
use crate::{document::Document, message_prelude::*};
44
use document_core::{layers::style, Operation};
55
use glam::{DAffine2, DVec2};
66

@@ -58,8 +58,8 @@ struct RectangleToolData {
5858
impl Fsm for RectangleToolFsmState {
5959
type ToolData = RectangleToolData;
6060

61-
fn transition(self, event: ToolMessage, document: &SvgDocument, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
62-
let transform = document.root.transform;
61+
fn transition(self, event: ToolMessage, document: &Document, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
62+
let transform = document.document.root.transform;
6363
use RectangleMessage::*;
6464
use RectangleToolFsmState::*;
6565
if let ToolMessage::Rectangle(event) = event {

core/editor/src/tool/tools/select.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use glam::{DAffine2, DVec2};
77

88
use crate::input::{mouse::ViewportPosition, InputPreprocessor};
99
use crate::tool::{DocumentToolData, Fsm, ToolActionHandlerData};
10-
use crate::{consts::SELECTION_TOLERANCE, message_prelude::*, SvgDocument};
10+
use crate::{consts::SELECTION_TOLERANCE, document::Document, message_prelude::*};
1111

1212
#[derive(Default)]
1313
pub struct Select {
@@ -58,8 +58,8 @@ struct SelectToolData {
5858
impl Fsm for SelectToolFsmState {
5959
type ToolData = SelectToolData;
6060

61-
fn transition(self, event: ToolMessage, document: &SvgDocument, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
62-
let transform = document.root.transform;
61+
fn transition(self, event: ToolMessage, document: &Document, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
62+
let transform = document.document.root.transform;
6363
use SelectMessage::*;
6464
use SelectToolFsmState::*;
6565
if let ToolMessage::Select(event) = event {
@@ -105,13 +105,13 @@ impl Fsm for SelectToolFsmState {
105105

106106
responses.push_back(Operation::DiscardWorkingFolder.into());
107107
if data.drag_start == data.drag_current {
108-
if let Some(intersection) = document.intersects_quad_root(quad).last() {
108+
if let Some(intersection) = document.document.intersects_quad_root(quad).last() {
109109
responses.push_back(DocumentMessage::SelectLayers(vec![intersection.clone()]).into());
110110
} else {
111111
responses.push_back(DocumentMessage::SelectLayers(vec![]).into());
112112
}
113113
} else {
114-
responses.push_back(DocumentMessage::SelectLayers(document.intersects_quad_root(quad)).into());
114+
responses.push_back(DocumentMessage::SelectLayers(document.document.intersects_quad_root(quad)).into());
115115
}
116116

117117
Ready

core/editor/src/tool/tools/shape.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::input::{mouse::ViewportPosition, InputPreprocessor};
22
use crate::tool::{DocumentToolData, Fsm, ToolActionHandlerData};
3-
use crate::{message_prelude::*, SvgDocument};
3+
use crate::{document::Document, message_prelude::*};
44
use document_core::{layers::style, Operation};
55
use glam::{DAffine2, DVec2};
66

@@ -60,8 +60,8 @@ struct ShapeToolData {
6060
impl Fsm for ShapeToolFsmState {
6161
type ToolData = ShapeToolData;
6262

63-
fn transition(self, event: ToolMessage, document: &SvgDocument, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
64-
let transform = document.root.transform;
63+
fn transition(self, event: ToolMessage, document: &Document, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
64+
let transform = document.document.root.transform;
6565
use ShapeMessage::*;
6666
use ShapeToolFsmState::*;
6767
if let ToolMessage::Shape(event) = event {

0 commit comments

Comments
 (0)