From db38f51046b8ca152146e266bb6ce7fa83fb2632 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Wed, 30 Sep 2026 06:29:52 -0400 Subject: [PATCH] Prepare module hooks for parallel tool/effect work Co-Authored-By: Claude Opus 5.5 --- crates/engine/src/cmd/draw2.rs | 7 +++++++ crates/engine/src/cmd/effectcmd.rs | 7 +++++++ crates/engine/src/cmd/mod.rs | 6 ++++++ crates/engine/src/cmd/xform.rs | 7 +++++++ crates/tools/src/draw2.rs | 8 ++++++++ crates/tools/src/lib.rs | 4 +++- crates/tools/src/xform.rs | 9 +++++++++ 7 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 crates/engine/src/cmd/draw2.rs create mode 100644 crates/engine/src/cmd/effectcmd.rs create mode 100644 crates/engine/src/cmd/xform.rs create mode 100644 crates/tools/src/draw2.rs create mode 100644 crates/tools/src/xform.rs diff --git a/crates/engine/src/cmd/draw2.rs b/crates/engine/src/cmd/draw2.rs new file mode 100644 index 00000000..30e619eb --- /dev/null +++ b/crates/engine/src/cmd/draw2.rs @@ -0,0 +1,7 @@ +//! Commands backing the drawing tools (pencil, scissors, knife…). + +use super::CommandSpec; + +pub fn specs() -> Vec { + vec![] +} diff --git a/crates/engine/src/cmd/effectcmd.rs b/crates/engine/src/cmd/effectcmd.rs new file mode 100644 index 00000000..ada59b92 --- /dev/null +++ b/crates/engine/src/cmd/effectcmd.rs @@ -0,0 +1,7 @@ +//! Effect menu commands (live effects). + +use super::CommandSpec; + +pub fn specs() -> Vec { + vec![] +} diff --git a/crates/engine/src/cmd/mod.rs b/crates/engine/src/cmd/mod.rs index 607e06bf..b7c21db9 100644 --- a/crates/engine/src/cmd/mod.rs +++ b/crates/engine/src/cmd/mod.rs @@ -1,6 +1,9 @@ //! The command registry. Ids follow Illustrator's menu structure. mod create; +mod draw2; +mod effectcmd; +mod xform; mod edit; mod layer; mod object; @@ -113,6 +116,9 @@ pub fn command_specs() -> &'static [CommandSpec] { v.extend(select::specs()); v.extend(paint::specs()); v.extend(layer::specs()); + v.extend(draw2::specs()); + v.extend(xform::specs()); + v.extend(effectcmd::specs()); v.extend(pathops::specs()); v.extend(typecmd::specs()); v diff --git a/crates/engine/src/cmd/xform.rs b/crates/engine/src/cmd/xform.rs new file mode 100644 index 00000000..aedbf66b --- /dev/null +++ b/crates/engine/src/cmd/xform.rs @@ -0,0 +1,7 @@ +//! Commands backing transform/utility tools (eyedropper, gradient, artboard…). + +use super::CommandSpec; + +pub fn specs() -> Vec { + vec![] +} diff --git a/crates/tools/src/draw2.rs b/crates/tools/src/draw2.rs new file mode 100644 index 00000000..f0e16305 --- /dev/null +++ b/crates/tools/src/draw2.rs @@ -0,0 +1,8 @@ +//! Drawing and path-editing tools (pencil, curvature, anchor tools, scissors, knife, line family…). + +use crate::Tool; + +/// Create a drawing tool by id (None = not one of ours). +pub fn create(_id: &str) -> Option> { + None +} diff --git a/crates/tools/src/lib.rs b/crates/tools/src/lib.rs index f5bcab4f..c23c4c6c 100644 --- a/crates/tools/src/lib.rs +++ b/crates/tools/src/lib.rs @@ -10,6 +10,8 @@ pub mod bbox; pub mod catalog; pub mod direct; +pub mod draw2; +pub mod xform; pub mod guides; pub mod pen; pub mod select; @@ -241,7 +243,7 @@ pub fn create(id: &str) -> Box { "pen" => Box::new(pen::PenTool::default()), "type" => Box::new(text::TypeTool::default()), "rectangle" | "roundedRectangle" | "ellipse" | "polygon" | "star" | "lineSegment" => Box::new(shape::ShapeTool::new(id)), - other => Box::new(NoopTool(tool_info(other).map(|t| t.id).unwrap_or("selection"))), + other => draw2::create(other).or_else(|| xform::create(other)).unwrap_or_else(|| Box::new(NoopTool(tool_info(other).map(|t| t.id).unwrap_or("selection")))), } } diff --git a/crates/tools/src/xform.rs b/crates/tools/src/xform.rs new file mode 100644 index 00000000..a87ba39d --- /dev/null +++ b/crates/tools/src/xform.rs @@ -0,0 +1,9 @@ +//! Transform and utility tools (rotate/reflect/scale/shear, free transform, eyedropper, gradient, +//! artboard, magic wand, lasso, measure). + +use crate::Tool; + +/// Create a transform/utility tool by id (None = not one of ours). +pub fn create(_id: &str) -> Option> { + None +}