Pen: Path Operations menu, as in Photoshop (#1397)

The Pen, Freeform Pen and Curvature Pen options bar gets Photoshop's Path
Operations button: New Layer (Shape mode), Combine Shapes, Subtract Front
Shape, Intersect Shape Areas, Exclude Overlapping Shapes and Merge Shape
Components. In Shape mode a new path is added to the selected shape layer
with the chosen operation, so a hole can be cut in a shape (#7533); in Path
mode the operation applies to the subpath added to a targeted vector mask,
the selected path or the Work Path.

- engine: path.mergeShapeComponents for work, saved and layer paths, sharing
  bake_path with the shape-layer command
- control/MCP: ui.set penMode and penPathOp
- original path-op icons, tooltip translated in every catalog

Closes #1397. Closes #7533.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Khawar Zamman Wani
2026-10-19 11:30:53 +05:30
parent d95fdf3181
commit 750c67e20e
39 changed files with 567 additions and 20 deletions
+13
View File
@@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3 3h12v6h6v12H9v-6H3z" fill="currentColor" />
</svg>

After

Width:  |  Height:  |  Size: 266 B

+13
View File
@@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3 3h12v12H3zM9 9h12v12H9z" fill="currentColor" fill-rule="evenodd" />
</svg>

After

Width:  |  Height:  |  Size: 290 B

+15
View File
@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="3" y="3" width="12" height="12" />
<rect x="9" y="9" width="12" height="12" />
<path d="M9 9h6v6H9z" fill="currentColor" />
</svg>

After

Width:  |  Height:  |  Size: 347 B

+13
View File
@@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3 3h12v6h6v12H9v-6H3z" />
</svg>

After

Width:  |  Height:  |  Size: 246 B

+13
View File
@@ -0,0 +1,13 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<rect x="4" y="4" width="16" height="16" rx="1" fill="currentColor" />
</svg>

After

Width:  |  Height:  |  Size: 281 B

+14
View File
@@ -0,0 +1,14 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3 3h12v6H9v6H3z" fill="currentColor" />
<rect x="9" y="9" width="12" height="12" />
</svg>

After

Width:  |  Height:  |  Size: 306 B