Squash Odysseus development history

This commit is contained in:
pewdiepie-archdaemon
2026-09-11 06:04:19 +00:00
parent e5c99a5eee
commit 6ee6502010
2050 changed files with 538359 additions and 57745 deletions
+34 -3
View File
@@ -14,10 +14,18 @@
*/
import { state } from '../state.js';
import { canvasCoords } from '../canvas-coords.js';
import { buildLassoMask } from './lasso-mask.js';
export function createLassoTool({ composite, drawLassoOverlay, syncToolClearIndicators }) {
export function createLassoTool({
activeLayer, saveState, commitSelectionMask,
composite, drawLassoOverlay, syncToolClearIndicators,
}) {
let pendingMode = 'replace';
return {
begin(e) {
pendingMode = state.wandMode || 'replace';
if (e.shiftKey) pendingMode = 'add';
else if (e.altKey) pendingMode = 'subtract';
state.lassoPoints = [];
state.lassoActive = true;
const coords = canvasCoords(e, state.mainCanvas);
@@ -56,10 +64,33 @@ export function createLassoTool({ composite, drawLassoOverlay, syncToolClearIndi
syncToolClearIndicators();
return;
}
// Keep the selection drawn — the panel's action buttons use it.
const layer = activeLayer?.();
if (!layer) return;
saveState?.('Lasso selection');
const mask = buildLassoMask(
state.lassoPoints,
state.imgWidth,
state.imgHeight,
0,
0,
0,
0,
);
commitSelectionMask?.(mask, layer, pendingMode, 'lasso', { x: 0, y: 0 });
state.wandMaskVisible = true;
state.wandLastSeed = null;
state.lassoPoints = [];
composite();
drawLassoOverlay();
syncToolClearIndicators();
},
cancel() {
if (!state.lassoActive && !state.lassoPoints.length) return false;
state.lassoActive = false;
state.lassoPoints = [];
composite();
syncToolClearIndicators();
return true;
},
};
}