From e54a2e2fc64a9cfc10c38c29dfc599c0dfeae3b6 Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Sat, 4 Nov 2023 03:01:44 -0700 Subject: [PATCH] Remove the Frame tool --- document-legacy/src/document.rs | 1 + document-legacy/src/operation.rs | 1 + .../messages/input_mapper/default_mapping.rs | 7 - editor/src/messages/prelude.rs | 1 - editor/src/messages/tool/tool_message.rs | 5 - .../messages/tool/tool_messages/frame_tool.rs | 185 ------------------ editor/src/messages/tool/tool_messages/mod.rs | 1 - editor/src/messages/tool/utility_types.rs | 3 - .../icon-24px-two-tone/raster-frame-tool.svg | 4 - frontend/src/utility-functions/icons.ts | 2 - 10 files changed, 2 insertions(+), 208 deletions(-) delete mode 100644 editor/src/messages/tool/tool_messages/frame_tool.rs delete mode 100644 frontend/assets/icon-24px-two-tone/raster-frame-tool.svg diff --git a/document-legacy/src/document.rs b/document-legacy/src/document.rs index ae6ede3f..4d522c85 100644 --- a/document-legacy/src/document.rs +++ b/document-legacy/src/document.rs @@ -590,6 +590,7 @@ impl Document { Some(responses) } + // TODO: Remove Operation::AddFrame { path, insert_index, diff --git a/document-legacy/src/operation.rs b/document-legacy/src/operation.rs index 79c718d0..f9754ccb 100644 --- a/document-legacy/src/operation.rs +++ b/document-legacy/src/operation.rs @@ -14,6 +14,7 @@ use std::hash::{Hash, Hasher}; // TODO: Rename all instances of `path` to `layer_path` /// Operations that can be performed to mutate the document. pub enum Operation { + // TODO: Remove AddFrame { path: Vec, insert_index: isize, diff --git a/editor/src/messages/input_mapper/default_mapping.rs b/editor/src/messages/input_mapper/default_mapping.rs index e65458a6..3ba1a9dc 100644 --- a/editor/src/messages/input_mapper/default_mapping.rs +++ b/editor/src/messages/input_mapper/default_mapping.rs @@ -150,13 +150,6 @@ pub fn default_mapping() -> Mapping { entry!(KeyDown(Escape); action_dispatch=ImaginateToolMessage::Abort), entry!(PointerMove; refresh_keys=[Alt, Shift], action_dispatch=ImaginateToolMessage::Resize { center: Alt, lock_ratio: Shift }), // - // FrameToolMessage - entry!(KeyDown(Lmb); action_dispatch=FrameToolMessage::DragStart), - entry!(KeyUp(Lmb); action_dispatch=FrameToolMessage::DragStop), - entry!(KeyDown(Rmb); action_dispatch=FrameToolMessage::Abort), - entry!(KeyDown(Escape); action_dispatch=FrameToolMessage::Abort), - entry!(PointerMove; refresh_keys=[Alt, Shift], action_dispatch=FrameToolMessage::Resize { center: Alt, lock_ratio: Shift }), - // // EllipseToolMessage entry!(KeyDown(Lmb); action_dispatch=EllipseToolMessage::DragStart), entry!(KeyUp(Lmb); action_dispatch=EllipseToolMessage::DragStop), diff --git a/editor/src/messages/prelude.rs b/editor/src/messages/prelude.rs index 01f6f799..f014a650 100644 --- a/editor/src/messages/prelude.rs +++ b/editor/src/messages/prelude.rs @@ -35,7 +35,6 @@ pub use crate::messages::tool::tool_messages::brush_tool::{BrushToolMessage, Bru pub use crate::messages::tool::tool_messages::ellipse_tool::{EllipseToolMessage, EllipseToolMessageDiscriminant}; pub use crate::messages::tool::tool_messages::eyedropper_tool::{EyedropperToolMessage, EyedropperToolMessageDiscriminant}; pub use crate::messages::tool::tool_messages::fill_tool::{FillToolMessage, FillToolMessageDiscriminant}; -pub use crate::messages::tool::tool_messages::frame_tool::{FrameToolMessage, FrameToolMessageDiscriminant}; pub use crate::messages::tool::tool_messages::freehand_tool::{FreehandToolMessage, FreehandToolMessageDiscriminant}; pub use crate::messages::tool::tool_messages::gradient_tool::{GradientToolMessage, GradientToolMessageDiscriminant}; pub use crate::messages::tool::tool_messages::imaginate_tool::{ImaginateToolMessage, ImaginateToolMessageDiscriminant}; diff --git a/editor/src/messages/tool/tool_message.rs b/editor/src/messages/tool/tool_message.rs index 4603bbf4..f945de8f 100644 --- a/editor/src/messages/tool/tool_message.rs +++ b/editor/src/messages/tool/tool_message.rs @@ -82,9 +82,6 @@ pub enum ToolMessage { #[remain::unsorted] #[child] Imaginate(ImaginateToolMessage), - #[remain::unsorted] - #[child] - Frame(FrameToolMessage), // Messages #[remain::unsorted] @@ -123,8 +120,6 @@ pub enum ToolMessage { ActivateToolBrush, #[remain::unsorted] ActivateToolImaginate, - #[remain::unsorted] - ActivateToolFrame, ActivateTool { tool_type: ToolType, diff --git a/editor/src/messages/tool/tool_messages/frame_tool.rs b/editor/src/messages/tool/tool_messages/frame_tool.rs deleted file mode 100644 index 28396263..00000000 --- a/editor/src/messages/tool/tool_messages/frame_tool.rs +++ /dev/null @@ -1,185 +0,0 @@ -use super::tool_prelude::*; -use crate::messages::portfolio::document::node_graph; -use crate::messages::tool::common_functionality::path_outline::PathOutline; -use crate::messages::tool::common_functionality::resize::Resize; - -use document_legacy::Operation; - -#[derive(Default)] -pub struct FrameTool { - fsm_state: NodeGraphToolFsmState, - tool_data: NodeGraphToolData, -} - -#[remain::sorted] -#[impl_message(Message, ToolMessage, Frame)] -#[derive(PartialEq, Eq, Clone, Debug, Hash, Serialize, Deserialize, specta::Type)] -pub enum FrameToolMessage { - // Standard messages - #[remain::unsorted] - Abort, - #[remain::unsorted] - DocumentIsDirty, - #[remain::unsorted] - SelectionChanged, - - // Tool-specific messages - DragStart, - DragStop, - Resize { - center: Key, - lock_ratio: Key, - }, -} - -impl LayoutHolder for FrameTool { - fn layout(&self) -> Layout { - Layout::WidgetLayout(WidgetLayout::default()) - } -} - -impl<'a> MessageHandler> for FrameTool { - fn process_message(&mut self, message: ToolMessage, responses: &mut VecDeque, tool_data: &mut ToolActionHandlerData<'a>) { - self.fsm_state.process_event(message, &mut self.tool_data, tool_data, &(), responses, true); - } - - fn actions(&self) -> ActionList { - use NodeGraphToolFsmState::*; - - match self.fsm_state { - Ready => actions!(FrameToolMessageDiscriminant; - DragStart, - ), - Drawing => actions!(FrameToolMessageDiscriminant; - DragStop, - Abort, - Resize, - ), - } - } -} - -impl ToolMetadata for FrameTool { - fn icon_name(&self) -> String { - "RasterFrameTool".into() - } - fn tooltip(&self) -> String { - "Frame Tool".into() - } - fn tool_type(&self) -> crate::messages::tool::utility_types::ToolType { - ToolType::Frame - } -} - -impl ToolTransition for FrameTool { - fn event_to_message_map(&self) -> EventToMessageMap { - EventToMessageMap { - document_dirty: Some(FrameToolMessage::DocumentIsDirty.into()), - tool_abort: Some(FrameToolMessage::Abort.into()), - selection_changed: Some(FrameToolMessage::SelectionChanged.into()), - ..Default::default() - } - } -} - -#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)] -enum NodeGraphToolFsmState { - #[default] - Ready, - Drawing, -} - -#[derive(Clone, Debug, Default)] -struct NodeGraphToolData { - data: Resize, - path_outlines: PathOutline, -} - -impl Fsm for NodeGraphToolFsmState { - type ToolData = NodeGraphToolData; - type ToolOptions = (); - - fn transition(self, event: ToolMessage, tool_data: &mut Self::ToolData, tool_action_data: &mut ToolActionHandlerData, _tool_options: &(), responses: &mut VecDeque) -> Self { - let ToolActionHandlerData { document, input, render_data, .. } = tool_action_data; - - let shape_data = &mut tool_data.data; - - let ToolMessage::Frame(event) = event else { - return self; - }; - match (self, event) { - (_, FrameToolMessage::DocumentIsDirty | FrameToolMessage::SelectionChanged) => { - tool_data.path_outlines.clear_selected(responses); - //tool_data.path_outlines.update_selected(document.selected_visible_layers(), document, responses, render_data); - - self - } - (NodeGraphToolFsmState::Ready, FrameToolMessage::DragStart) => { - tool_data.path_outlines.clear_selected(responses); - - shape_data.start(responses, document, input, render_data); - responses.add(DocumentMessage::StartTransaction); - shape_data.path = Some(document.get_path_for_new_layer()); - responses.add(DocumentMessage::DeselectAllLayers); - - let network = node_graph::new_image_network(8, 0); - - responses.add(Operation::AddFrame { - path: shape_data.path.clone().unwrap(), - insert_index: -1, - transform: DAffine2::ZERO.to_cols_array(), - network, - }); - - NodeGraphToolFsmState::Drawing - } - (state, FrameToolMessage::Resize { center, lock_ratio }) => { - let message = shape_data.calculate_transform(responses, document, input, center, lock_ratio, true); - responses.try_add(message); - - state - } - (NodeGraphToolFsmState::Drawing, FrameToolMessage::DragStop) => { - if let Some(layer_path) = &shape_data.path { - responses.add(DocumentMessage::InputFrameRasterizeRegionBelowLayer { layer_path: layer_path.to_vec() }); - } - - input.mouse.finish_transaction(shape_data.viewport_drag_start(document), responses); - shape_data.cleanup(responses); - - NodeGraphToolFsmState::Ready - } - (NodeGraphToolFsmState::Drawing, FrameToolMessage::Abort) => { - responses.add(DocumentMessage::AbortTransaction); - - shape_data.cleanup(responses); - tool_data.path_outlines.clear_selected(responses); - - NodeGraphToolFsmState::Ready - } - (_, FrameToolMessage::Abort) => { - tool_data.path_outlines.clear_selected(responses); - - NodeGraphToolFsmState::Ready - } - _ => self, - } - } - - fn update_hints(&self, responses: &mut VecDeque) { - let hint_data = match self { - NodeGraphToolFsmState::Ready => HintData(vec![HintGroup(vec![ - HintInfo::mouse(MouseMotion::LmbDrag, "Draw Repaint Frame"), - HintInfo::keys([Key::Shift], "Constrain Square").prepend_plus(), - HintInfo::keys([Key::Alt], "From Center").prepend_plus(), - ])]), - NodeGraphToolFsmState::Drawing => HintData(vec![HintGroup(vec![HintInfo::keys([Key::Shift], "Constrain Square"), HintInfo::keys([Key::Alt], "From Center")])]), - }; - - responses.add(FrontendMessage::UpdateInputHints { hint_data }); - } - - fn update_cursor(&self, responses: &mut VecDeque) { - responses.add(FrontendMessage::UpdateMouseCursor { cursor: MouseCursorIcon::Crosshair }); - } -} diff --git a/editor/src/messages/tool/tool_messages/mod.rs b/editor/src/messages/tool/tool_messages/mod.rs index 9e06d4ae..e83059dc 100644 --- a/editor/src/messages/tool/tool_messages/mod.rs +++ b/editor/src/messages/tool/tool_messages/mod.rs @@ -3,7 +3,6 @@ pub mod brush_tool; pub mod ellipse_tool; pub mod eyedropper_tool; pub mod fill_tool; -pub mod frame_tool; pub mod freehand_tool; pub mod gradient_tool; pub mod imaginate_tool; diff --git a/editor/src/messages/tool/utility_types.rs b/editor/src/messages/tool/utility_types.rs index 7624d15c..62199017 100644 --- a/editor/src/messages/tool/utility_types.rs +++ b/editor/src/messages/tool/utility_types.rs @@ -396,7 +396,6 @@ fn list_tools_in_groups() -> Vec> { ], vec![ // Raster tool group - ToolAvailability::Available(Box::::default()), ToolAvailability::Available(Box::::default()), ToolAvailability::Available(Box::::default()), ToolAvailability::ComingSoon(ToolEntry::new(ToolType::Heal, "RasterHealTool").tooltip("Coming Soon: Heal Tool (J)")), @@ -437,7 +436,6 @@ pub fn tool_message_to_tool_type(tool_message: &ToolMessage) -> ToolType { // ToolMessage::Detail(_) => ToolType::Detail, // ToolMessage::Relight(_) => ToolType::Relight, ToolMessage::Imaginate(_) => ToolType::Imaginate, - ToolMessage::Frame(_) => ToolType::Frame, _ => panic!("Conversion from ToolMessage to ToolType impossible because the given ToolMessage does not have a matching ToolType. Got: {tool_message:?}"), } } @@ -471,7 +469,6 @@ pub fn tool_type_to_activate_tool_message(tool_type: ToolType) -> ToolMessageDis // ToolType::Detail => ToolMessageDiscriminant::ActivateToolDetail, // ToolType::Relight => ToolMessageDiscriminant::ActivateToolRelight, ToolType::Imaginate => ToolMessageDiscriminant::ActivateToolImaginate, - ToolType::Frame => ToolMessageDiscriminant::ActivateToolFrame, _ => panic!("Conversion from ToolType to ToolMessage impossible because the given ToolType does not have a matching ToolMessage. Got: {tool_type:?}"), } } diff --git a/frontend/assets/icon-24px-two-tone/raster-frame-tool.svg b/frontend/assets/icon-24px-two-tone/raster-frame-tool.svg deleted file mode 100644 index 2b33e74f..00000000 --- a/frontend/assets/icon-24px-two-tone/raster-frame-tool.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/frontend/src/utility-functions/icons.ts b/frontend/src/utility-functions/icons.ts index ef0a9394..08237a7b 100644 --- a/frontend/src/utility-functions/icons.ts +++ b/frontend/src/utility-functions/icons.ts @@ -260,7 +260,6 @@ import GeneralSelectTool from "@graphite-frontend/assets/icon-24px-two-tone/gene import RasterBrushTool from "@graphite-frontend/assets/icon-24px-two-tone/raster-brush-tool.svg"; import RasterCloneTool from "@graphite-frontend/assets/icon-24px-two-tone/raster-clone-tool.svg"; import RasterDetailTool from "@graphite-frontend/assets/icon-24px-two-tone/raster-detail-tool.svg"; -import RasterFrameTool from "@graphite-frontend/assets/icon-24px-two-tone/raster-frame-tool.svg"; import RasterHealTool from "@graphite-frontend/assets/icon-24px-two-tone/raster-heal-tool.svg"; import RasterImaginateTool from "@graphite-frontend/assets/icon-24px-two-tone/raster-imaginate-tool.svg"; import RasterPatchTool from "@graphite-frontend/assets/icon-24px-two-tone/raster-patch-tool.svg"; @@ -285,7 +284,6 @@ const TWO_TONE_24PX = { RasterBrushTool: { svg: RasterBrushTool, size: 24 }, RasterCloneTool: { svg: RasterCloneTool, size: 24 }, RasterDetailTool: { svg: RasterDetailTool, size: 24 }, - RasterFrameTool: { svg: RasterFrameTool, size: 24 }, RasterHealTool: { svg: RasterHealTool, size: 24 }, RasterImaginateTool: { svg: RasterImaginateTool, size: 24 }, RasterPatchTool: { svg: RasterPatchTool, size: 24 },