Add custom shape mask menu with expansion and feathering

Introduces a CustomShapeMenu UI component for managing custom output area shape masks, including options for auto-applying the mask, expansion/contraction, and feathering. Updates Canvas and MaskTool to support these new mask operations, and ensures the menu is shown or hidden based on shape presence. Adds distance transform-based algorithms for accurate mask expansion and feathering.
This commit is contained in:
Dariusz L
2025-07-25 18:40:21 +02:00
parent 764e802311
commit 24ef702f16
9 changed files with 1797 additions and 0 deletions

View File

@@ -86,6 +86,14 @@ export class CanvasRenderer {
this.renderInteractionElements(ctx);
this.canvas.shapeTool.render(ctx);
this.renderLayerInfo(ctx);
// Update custom shape menu position and visibility
if (this.canvas.outputAreaShape) {
this.canvas.customShapeMenu.show();
this.canvas.customShapeMenu.updateScreenPosition();
}
else {
this.canvas.customShapeMenu.hide();
}
ctx.restore();
if (this.canvas.canvas.width !== this.canvas.offscreenCanvas.width ||
this.canvas.canvas.height !== this.canvas.offscreenCanvas.height) {