Feature Request: Separate Node Editing Tools by Operation Class
-
VectorStyler's Node Tool combines a large number of operations that affect fundamentally different properties of an object. This makes its behavior difficult to predict and can result in unintended modifications.
I suggest separating its functionality into five classes of tools, according to the properties each is permitted to modify.
1. Selection Tool
- Select nodes — individually or in groups.
2. Geometric Transformation Tool
- Translate selected nodes, including moving an endpoint of a line.
- Snap nodes to guides or other geometry.
- Align or distribute nodes.
These operations should preserve the object's topology, segment types, and node constraints.
3. Object Transformation Tool
- Deform Bézier curves.
- Convert text to paths.
4. Topological Editing Tool
- Insert nodes.
- Delete nodes.
- Join or separate paths.
- Close or open paths.
- Convert straight segments to Bézier curves.
- Change node types — smooth, corner, or symmetric.
These operations explicitly modify the structure of the path, including its connectivity, segment representations, degrees of freedom, or node constraints.
5. Curve Editing Tool
- Reshape existing curve segments directly.
- Adjust Bézier control handles.
These operations modify curve geometry while preserving the existing segment types and node constraints.
Motivation
A recurring problem illustrates the need for this separation.
Suppose I have a 20-inch straight line and want to reposition one endpoint. I select the endpoint using the Node Tool and move it. Sometimes this converts the straight segment into a Bézier curve whose control points are collinear with the line.
The conversion is not visually apparent because the line remains straight and the control points may lie outside the visible region at the current magnification.
I can detect the conversion by moving a node until a Bézier control point and its guide line become visible, but this requires modifying the geometry merely to determine its representation.
The intended operation was a geometric transformation. Instead, the tool also performed a structural modification, introducing additional degrees of freedom.
Proposed Behavior
Each tool should be restricted to its designated class of operations:
- Selection: Changes only the selection state.
- Geometric Transformation: Changes coordinates without modifying topology, segment representations, or node constraints.
- Object Transformation: Changes the geometry or representation of an entire object.
- Topological Editing: Changes connectivity, segment representations, degrees of freedom, or node constraints.
- Curve Editing: Changes curve geometry without modifying the underlying representation.
The existing multipurpose Node Tool could remain available for users who prefer it. The separate tools would provide predictable, constrained operations for precision drawing.
Design Principle
An operation should modify only the class of properties that its tool is intended to control.
Separating geometric transformations from structural modifications would eliminate an important source of unintended changes while making VectorStyler's editing behavior more predictable.
-
@jpsimmons Would there be a need to swap between these tools frequently?