copper3d 3.3.2 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Utils/segmentation/DrawToolCore.js +20 -3
- package/dist/Utils/segmentation/DrawToolCore.js.map +1 -1
- package/dist/Utils/segmentation/NrrdTools.d.ts +19 -0
- package/dist/Utils/segmentation/NrrdTools.js +40 -0
- package/dist/Utils/segmentation/NrrdTools.js.map +1 -1
- package/dist/Utils/segmentation/RenderingUtils.d.ts +9 -3
- package/dist/Utils/segmentation/RenderingUtils.js +35 -15
- package/dist/Utils/segmentation/RenderingUtils.js.map +1 -1
- package/dist/Utils/segmentation/core/MarchingSquares.d.ts +72 -0
- package/dist/Utils/segmentation/core/MarchingSquares.js +169 -0
- package/dist/Utils/segmentation/core/MarchingSquares.js.map +1 -0
- package/dist/Utils/segmentation/core/index.d.ts +2 -0
- package/dist/Utils/segmentation/core/index.js +1 -0
- package/dist/Utils/segmentation/core/index.js.map +1 -1
- package/dist/Utils/segmentation/eventRouter/EventRouter.js +14 -7
- package/dist/Utils/segmentation/eventRouter/EventRouter.js.map +1 -1
- package/dist/Utils/segmentation/tools/DrawingTool.d.ts +35 -10
- package/dist/Utils/segmentation/tools/DrawingTool.js +247 -36
- package/dist/Utils/segmentation/tools/DrawingTool.js.map +1 -1
- package/dist/Utils/segmentation/tools/SphereBrushTool.d.ts +83 -6
- package/dist/Utils/segmentation/tools/SphereBrushTool.js +283 -68
- package/dist/Utils/segmentation/tools/SphereBrushTool.js.map +1 -1
- package/dist/Utils/segmentation/tools/ToolHost.d.ts +1 -1
- package/dist/bundle.esm.js +808 -130
- package/dist/bundle.umd.js +808 -130
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/types/Utils/segmentation/NrrdTools.d.ts +19 -0
- package/dist/types/Utils/segmentation/RenderingUtils.d.ts +9 -3
- package/dist/types/Utils/segmentation/core/MarchingSquares.d.ts +72 -0
- package/dist/types/Utils/segmentation/core/index.d.ts +2 -0
- package/dist/types/Utils/segmentation/tools/DrawingTool.d.ts +35 -10
- package/dist/types/Utils/segmentation/tools/SphereBrushTool.d.ts +83 -6
- package/dist/types/Utils/segmentation/tools/ToolHost.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -19,7 +19,11 @@ import { CHANNEL_HEX_COLORS } from "../core";
|
|
|
19
19
|
export class SphereBrushTool extends BaseTool {
|
|
20
20
|
constructor(ctx, callbacks) {
|
|
21
21
|
super(ctx);
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Recorded sphere center in display (zoomed) coordinates.
|
|
24
|
+
* Used for both preview redraw and voxel calculation — the voxel conversion
|
|
25
|
+
* uses `changedWidth/Height` as the display scale, so no mm detour is needed.
|
|
26
|
+
*/
|
|
23
27
|
this.centerX = 0;
|
|
24
28
|
this.centerY = 0;
|
|
25
29
|
this.centerSlice = 0;
|
|
@@ -27,10 +31,24 @@ export class SphereBrushTool extends BaseTool {
|
|
|
27
31
|
this.active = false;
|
|
28
32
|
/** Current operation mode for the active placement */
|
|
29
33
|
this.mode = "brush";
|
|
30
|
-
/** Cumulative "before" snapshots for drag
|
|
34
|
+
/** Cumulative "before" snapshots for drag undo (z-index → slice data) — used by both brush and eraser drag */
|
|
31
35
|
this.dragBeforeSnapshots = new Map();
|
|
32
|
-
/** Whether a drag
|
|
36
|
+
/** Whether a drag has actually moved (vs. simple click-release) */
|
|
33
37
|
this.dragMoved = false;
|
|
38
|
+
/**
|
|
39
|
+
* Latest cursor position in display (zoomed) coords. Used by the wheel
|
|
40
|
+
* handler to redraw the preview at the cursor, not the original mousedown
|
|
41
|
+
* point, during mid-drag radius changes.
|
|
42
|
+
*/
|
|
43
|
+
this.lastDisplayX = 0;
|
|
44
|
+
this.lastDisplayY = 0;
|
|
45
|
+
this.lastSliceIndex = 0;
|
|
46
|
+
/**
|
|
47
|
+
* All sphere centers written during the current stroke. The wheel handler
|
|
48
|
+
* retroactively re-renders the entire stroke at the new radius by restoring
|
|
49
|
+
* `dragBeforeSnapshots` and replaying every entry here.
|
|
50
|
+
*/
|
|
51
|
+
this.strokeCenters = [];
|
|
34
52
|
this.callbacks = callbacks;
|
|
35
53
|
}
|
|
36
54
|
setCallbacks(callbacks) {
|
|
@@ -38,41 +56,66 @@ export class SphereBrushTool extends BaseTool {
|
|
|
38
56
|
}
|
|
39
57
|
// ── Geometry (ported from SphereTool) ──────────────────────────
|
|
40
58
|
/**
|
|
41
|
-
* Convert
|
|
59
|
+
* Convert display (zoomed) coordinates to 3D voxel coordinates.
|
|
60
|
+
*
|
|
61
|
+
* Uses `changedWidth/Height` as the display scale directly (instead of
|
|
62
|
+
* going through mm via `/sizeFactor`). This keeps the write pixel-exact
|
|
63
|
+
* with the preview circle, which is drawn on a `changedWidth x changedHeight`
|
|
64
|
+
* sized sphere canvas — avoiding floating-point drift at high zoom levels.
|
|
42
65
|
*/
|
|
43
|
-
canvasToVoxelCenter(
|
|
66
|
+
canvasToVoxelCenter(displayX, displayY, sliceIndex, axis) {
|
|
44
67
|
const nrrd = this.ctx.nrrd_states;
|
|
68
|
+
const cw = nrrd.view.changedWidth;
|
|
69
|
+
const ch = nrrd.view.changedHeight;
|
|
45
70
|
switch (axis) {
|
|
46
71
|
case 'z':
|
|
47
72
|
return {
|
|
48
|
-
x:
|
|
49
|
-
y:
|
|
73
|
+
x: displayX * nrrd.image.nrrd_x_pixel / cw,
|
|
74
|
+
y: displayY * nrrd.image.nrrd_y_pixel / ch,
|
|
50
75
|
z: sliceIndex,
|
|
51
76
|
};
|
|
52
77
|
case 'y':
|
|
53
78
|
return {
|
|
54
|
-
x:
|
|
79
|
+
x: displayX * nrrd.image.nrrd_x_pixel / cw,
|
|
55
80
|
y: sliceIndex,
|
|
56
|
-
|
|
81
|
+
// Coronal vertical flip: display Y=0 is top, voxel Z increases downward in mm-space
|
|
82
|
+
z: (ch - displayY) * nrrd.image.nrrd_z_pixel / ch,
|
|
57
83
|
};
|
|
58
84
|
case 'x':
|
|
59
85
|
return {
|
|
60
86
|
x: sliceIndex,
|
|
61
|
-
y:
|
|
62
|
-
z:
|
|
87
|
+
y: displayY * nrrd.image.nrrd_y_pixel / ch,
|
|
88
|
+
z: displayX * nrrd.image.nrrd_z_pixel / cw,
|
|
63
89
|
};
|
|
64
90
|
}
|
|
65
91
|
}
|
|
66
92
|
/**
|
|
67
93
|
* Convert mm radius to per-axis voxel radii.
|
|
94
|
+
*
|
|
95
|
+
* For the two axes visible in the current view, scale via
|
|
96
|
+
* `changedWidth/Height` so the rendered ellipsoid cross-section matches
|
|
97
|
+
* the preview pixel radius exactly. The third (slice-direction) axis is
|
|
98
|
+
* not visible, so it uses the plain mm-based ratio.
|
|
68
99
|
*/
|
|
69
|
-
getVoxelRadii(radius) {
|
|
100
|
+
getVoxelRadii(radius, axis) {
|
|
70
101
|
const nrrd = this.ctx.nrrd_states;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
102
|
+
const sf = nrrd.view.sizeFactor;
|
|
103
|
+
const cw = nrrd.view.changedWidth;
|
|
104
|
+
const ch = nrrd.view.changedHeight;
|
|
105
|
+
// pixel-exact voxel radius for the visible horizontal/vertical dims
|
|
106
|
+
const rxView = radius * sf * nrrd.image.nrrd_x_pixel / cw;
|
|
107
|
+
const ryView = radius * sf * nrrd.image.nrrd_y_pixel / ch;
|
|
108
|
+
const rzHoriz = radius * sf * nrrd.image.nrrd_z_pixel / cw;
|
|
109
|
+
const rzVert = radius * sf * nrrd.image.nrrd_z_pixel / ch;
|
|
110
|
+
// mm-based fallback for the slice-direction (perpendicular) dim
|
|
111
|
+
const rxMm = radius * nrrd.image.nrrd_x_pixel / nrrd.image.nrrd_x_mm;
|
|
112
|
+
const ryMm = radius * nrrd.image.nrrd_y_pixel / nrrd.image.nrrd_y_mm;
|
|
113
|
+
const rzMm = radius * nrrd.image.nrrd_z_pixel / nrrd.image.nrrd_z_mm;
|
|
114
|
+
switch (axis) {
|
|
115
|
+
case 'z': return { rx: rxView, ry: ryView, rz: rzMm };
|
|
116
|
+
case 'y': return { rx: rxView, ry: ryMm, rz: rzVert };
|
|
117
|
+
case 'x': return { rx: rxMm, ry: ryView, rz: rzHoriz };
|
|
118
|
+
}
|
|
76
119
|
}
|
|
77
120
|
/**
|
|
78
121
|
* Compute clamped bounding box for an ellipsoid in voxel space.
|
|
@@ -177,11 +220,15 @@ export class SphereBrushTool extends BaseTool {
|
|
|
177
220
|
drawPreview(mouseX, mouseY, radius, isEraser) {
|
|
178
221
|
const sphereCanvas = this.ctx.protectedData.canvases.drawingSphereCanvas;
|
|
179
222
|
const sphereCtx = this.ctx.protectedData.ctxes.drawingSphereCtx;
|
|
180
|
-
//
|
|
181
|
-
|
|
182
|
-
|
|
223
|
+
// Size sphere canvas to the zoomed display size so start() draws it 1:1 —
|
|
224
|
+
// no scaling step, eliminating any zoom-dependent positioning error.
|
|
225
|
+
const sf = this.ctx.nrrd_states.view.sizeFactor;
|
|
226
|
+
sphereCanvas.width = this.ctx.nrrd_states.view.changedWidth;
|
|
227
|
+
sphereCanvas.height = this.ctx.nrrd_states.view.changedHeight;
|
|
228
|
+
// mouseX/mouseY are already in zoomed display coords; scale radius to match.
|
|
229
|
+
const scaledRadius = radius * sf;
|
|
183
230
|
sphereCtx.beginPath();
|
|
184
|
-
sphereCtx.arc(mouseX, mouseY,
|
|
231
|
+
sphereCtx.arc(mouseX, mouseY, scaledRadius, 0, 2 * Math.PI);
|
|
185
232
|
if (isEraser) {
|
|
186
233
|
// Eraser preview: dashed outline
|
|
187
234
|
sphereCtx.strokeStyle = "#ff4444";
|
|
@@ -234,38 +281,135 @@ export class SphereBrushTool extends BaseTool {
|
|
|
234
281
|
return (e) => {
|
|
235
282
|
e.preventDefault();
|
|
236
283
|
const sphere = this.ctx.nrrd_states.sphere;
|
|
237
|
-
|
|
238
|
-
|
|
284
|
+
sphere.sphereBrushRadius = Math.max(1, Math.min(sphere.sphereBrushRadius + (e.deltaY < 0 ? 1 : -1), 50));
|
|
285
|
+
// 3D Slicer-style retroactive resize: if the user has already started
|
|
286
|
+
// painting/erasing a stroke, re-render the entire stroke at the new
|
|
287
|
+
// radius so the whole pipe/erase-path resizes together.
|
|
288
|
+
if (this.active && this.dragMoved && this.strokeCenters.length > 0) {
|
|
289
|
+
this.replayStrokeWithCurrentRadius();
|
|
239
290
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
sphere.sphereBrushRadius = Math.max(1, Math.min(sphere.sphereBrushRadius, 50));
|
|
244
|
-
// Redraw preview
|
|
291
|
+
// Preview always follows the latest cursor position, not the mousedown
|
|
292
|
+
// point — otherwise the preview circle appears stuck on click-down when
|
|
293
|
+
// the user scrolls after dragging elsewhere.
|
|
245
294
|
if (this.active) {
|
|
246
|
-
this.drawPreview(this.
|
|
295
|
+
this.drawPreview(this.lastDisplayX, this.lastDisplayY, sphere.sphereBrushRadius, this.mode === "eraser");
|
|
247
296
|
}
|
|
248
297
|
};
|
|
249
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Retroactively re-render the current stroke at the current radius.
|
|
301
|
+
*
|
|
302
|
+
* Step 1: walk every recorded stroke center and expand
|
|
303
|
+
* `dragBeforeSnapshots` to cover the new (larger) bounding box. Slices
|
|
304
|
+
* newly included here are still pristine because the original stroke
|
|
305
|
+
* never touched them.
|
|
306
|
+
* Step 2: restore every snapshotted slice from its pristine backup.
|
|
307
|
+
* Step 3: replay every stroke center at the new radius.
|
|
308
|
+
*
|
|
309
|
+
* Step 3 produces the same final state as if the user had used the new
|
|
310
|
+
* radius from the start. Undo still captures the full stroke as one group
|
|
311
|
+
* at pointerup.
|
|
312
|
+
*/
|
|
313
|
+
replayStrokeWithCurrentRadius() {
|
|
314
|
+
if (this.strokeCenters.length === 0)
|
|
315
|
+
return;
|
|
316
|
+
const layer = this.ctx.gui_states.layerChannel.layer;
|
|
317
|
+
const channel = this.ctx.gui_states.layerChannel.activeChannel || 1;
|
|
318
|
+
const axis = this.ctx.protectedData.axis;
|
|
319
|
+
const radius = this.ctx.nrrd_states.sphere.sphereBrushRadius;
|
|
320
|
+
let vol;
|
|
321
|
+
try {
|
|
322
|
+
vol = this.callbacks.getVolumeForLayer(layer);
|
|
323
|
+
}
|
|
324
|
+
catch (_a) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
const dims = vol.getDimensions();
|
|
328
|
+
// 1. Expand snapshot coverage using the new radius so any newly-exposed
|
|
329
|
+
// Z slices are captured while still pristine.
|
|
330
|
+
for (const sc of this.strokeCenters) {
|
|
331
|
+
const center = this.canvasToVoxelCenter(sc.x, sc.y, sc.sliceIndex, axis);
|
|
332
|
+
const radii = this.getVoxelRadii(radius, axis);
|
|
333
|
+
const bb = this.getBoundingBox(center, radii, dims);
|
|
334
|
+
this.expandDragBeforeSnapshots(vol, bb.minZ, bb.maxZ);
|
|
335
|
+
}
|
|
336
|
+
// 2. Restore every snapshotted slice from pristine backup.
|
|
337
|
+
for (const [z, pristine] of this.dragBeforeSnapshots) {
|
|
338
|
+
try {
|
|
339
|
+
vol.setSliceUint8(z, pristine, 'z');
|
|
340
|
+
}
|
|
341
|
+
catch (_b) {
|
|
342
|
+
// Slice write failed — skip silently so a single bad slice doesn't break the replay.
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// 3. Replay every stroke center with the new radius.
|
|
346
|
+
for (const sc of this.strokeCenters) {
|
|
347
|
+
const center = this.canvasToVoxelCenter(sc.x, sc.y, sc.sliceIndex, axis);
|
|
348
|
+
const radii = this.getVoxelRadii(radius, axis);
|
|
349
|
+
const bb = this.getBoundingBox(center, radii, dims);
|
|
350
|
+
if (this.mode === "brush") {
|
|
351
|
+
this.write3DSphereToBrush(vol, center, radii, bb, channel);
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
this.erase3DSphereFromVolume(vol, center, radii, bb, channel);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
this.refreshDisplay(layer, undefined, false);
|
|
358
|
+
}
|
|
250
359
|
// ── Sphere Brush Click/PointerUp ───────────────────────────────
|
|
251
360
|
/**
|
|
252
|
-
* Handle pointer-down in sphereBrush mode (
|
|
361
|
+
* Handle pointer-down in sphereBrush mode (3D Slicer-style).
|
|
362
|
+
*
|
|
363
|
+
* Captures pristine snapshots at the mousedown location but does NOT
|
|
364
|
+
* write any voxels yet — the user may wheel-adjust the radius before
|
|
365
|
+
* dragging. The first sphere is written either by the first pointermove
|
|
366
|
+
* or by pointerup (single-click fallback).
|
|
253
367
|
*/
|
|
254
368
|
onSphereBrushClick(e) {
|
|
255
|
-
this.centerX = e.offsetX
|
|
256
|
-
this.centerY = e.offsetY
|
|
369
|
+
this.centerX = e.offsetX;
|
|
370
|
+
this.centerY = e.offsetY;
|
|
257
371
|
this.centerSlice = this.ctx.nrrd_states.view.currentSliceIndex;
|
|
372
|
+
this.lastDisplayX = this.centerX;
|
|
373
|
+
this.lastDisplayY = this.centerY;
|
|
374
|
+
this.lastSliceIndex = this.centerSlice;
|
|
258
375
|
this.active = true;
|
|
259
376
|
this.mode = "brush";
|
|
260
|
-
this.
|
|
377
|
+
this.dragMoved = false;
|
|
378
|
+
this.dragBeforeSnapshots.clear();
|
|
379
|
+
this.strokeCenters = [{ x: this.centerX, y: this.centerY, sliceIndex: this.centerSlice }];
|
|
380
|
+
const layer = this.ctx.gui_states.layerChannel.layer;
|
|
381
|
+
const axis = this.ctx.protectedData.axis;
|
|
382
|
+
const radius = this.ctx.nrrd_states.sphere.sphereBrushRadius;
|
|
383
|
+
try {
|
|
384
|
+
const vol = this.callbacks.getVolumeForLayer(layer);
|
|
385
|
+
const dims = vol.getDimensions();
|
|
386
|
+
const center = this.canvasToVoxelCenter(this.centerX, this.centerY, this.centerSlice, axis);
|
|
387
|
+
const radii = this.getVoxelRadii(radius, axis);
|
|
388
|
+
const bb = this.getBoundingBox(center, radii, dims);
|
|
389
|
+
this.expandDragBeforeSnapshots(vol, bb.minZ, bb.maxZ);
|
|
390
|
+
}
|
|
391
|
+
catch (_a) {
|
|
392
|
+
// Volume not ready — preview still shown so user gets visual feedback
|
|
393
|
+
}
|
|
394
|
+
this.drawPreview(this.centerX, this.centerY, radius, false);
|
|
261
395
|
}
|
|
262
396
|
/**
|
|
263
|
-
* Handle pointer-
|
|
397
|
+
* Handle pointer-move in sphereBrush mode — drag to continuously paint.
|
|
398
|
+
*
|
|
399
|
+
* Mirrors sphereEraser drag: writes a new sphere at each move position,
|
|
400
|
+
* extends the cumulative before-snapshot to cover any newly-touched Z
|
|
401
|
+
* slices, and repaints the preview. Never notifies the backend; pointerup
|
|
402
|
+
* does that once for the whole stroke.
|
|
264
403
|
*/
|
|
265
|
-
|
|
404
|
+
onSphereBrushMove(e) {
|
|
266
405
|
if (!this.active || this.mode !== "brush")
|
|
267
406
|
return;
|
|
268
|
-
this.
|
|
407
|
+
this.dragMoved = true;
|
|
408
|
+
const sliceIndex = this.ctx.nrrd_states.view.currentSliceIndex;
|
|
409
|
+
this.lastDisplayX = e.offsetX;
|
|
410
|
+
this.lastDisplayY = e.offsetY;
|
|
411
|
+
this.lastSliceIndex = sliceIndex;
|
|
412
|
+
this.strokeCenters.push({ x: e.offsetX, y: e.offsetY, sliceIndex });
|
|
269
413
|
const layer = this.ctx.gui_states.layerChannel.layer;
|
|
270
414
|
const channel = this.ctx.gui_states.layerChannel.activeChannel || 1;
|
|
271
415
|
const axis = this.ctx.protectedData.axis;
|
|
@@ -275,26 +419,56 @@ export class SphereBrushTool extends BaseTool {
|
|
|
275
419
|
vol = this.callbacks.getVolumeForLayer(layer);
|
|
276
420
|
}
|
|
277
421
|
catch (_a) {
|
|
278
|
-
this.clearPreview();
|
|
279
422
|
return;
|
|
280
423
|
}
|
|
281
424
|
const dims = vol.getDimensions();
|
|
282
|
-
const center = this.canvasToVoxelCenter(
|
|
283
|
-
const radii = this.getVoxelRadii(radius);
|
|
425
|
+
const center = this.canvasToVoxelCenter(e.offsetX, e.offsetY, sliceIndex, axis);
|
|
426
|
+
const radii = this.getVoxelRadii(radius, axis);
|
|
284
427
|
const bb = this.getBoundingBox(center, radii, dims);
|
|
285
|
-
|
|
286
|
-
const before = this.captureSliceSnapshots(vol, bb.minZ, bb.maxZ);
|
|
287
|
-
// Write sphere
|
|
428
|
+
this.expandDragBeforeSnapshots(vol, bb.minZ, bb.maxZ);
|
|
288
429
|
this.write3DSphereToBrush(vol, center, radii, bb, channel);
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
430
|
+
this.drawPreview(e.offsetX, e.offsetY, radius, false);
|
|
431
|
+
this.refreshDisplay(layer, undefined, false);
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Handle pointer-up in sphereBrush mode — finalize stroke + push undo group
|
|
435
|
+
* + single batched backend notify for all Z slices touched during the drag.
|
|
436
|
+
*/
|
|
437
|
+
onSphereBrushPointerUp() {
|
|
438
|
+
if (!this.active || this.mode !== "brush")
|
|
439
|
+
return;
|
|
440
|
+
this.active = false;
|
|
441
|
+
const layer = this.ctx.gui_states.layerChannel.layer;
|
|
442
|
+
const channel = this.ctx.gui_states.layerChannel.activeChannel || 1;
|
|
443
|
+
const axis = this.ctx.protectedData.axis;
|
|
444
|
+
const radius = this.ctx.nrrd_states.sphere.sphereBrushRadius;
|
|
445
|
+
let vol;
|
|
446
|
+
try {
|
|
447
|
+
vol = this.callbacks.getVolumeForLayer(layer);
|
|
448
|
+
}
|
|
449
|
+
catch (_a) {
|
|
450
|
+
this.finalizeStrokeState();
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
// Click-without-drag: write the single sphere now so a plain click still
|
|
454
|
+
// paints something. onSphereBrushClick intentionally skipped this so the
|
|
455
|
+
// user could wheel-adjust radius first.
|
|
456
|
+
if (!this.dragMoved && this.strokeCenters.length > 0) {
|
|
457
|
+
const sc = this.strokeCenters[0];
|
|
458
|
+
const dims = vol.getDimensions();
|
|
459
|
+
const center = this.canvasToVoxelCenter(sc.x, sc.y, sc.sliceIndex, axis);
|
|
460
|
+
const radii = this.getVoxelRadii(radius, axis);
|
|
461
|
+
const bb = this.getBoundingBox(center, radii, dims);
|
|
462
|
+
this.expandDragBeforeSnapshots(vol, bb.minZ, bb.maxZ);
|
|
463
|
+
this.write3DSphereToBrush(vol, center, radii, bb, channel);
|
|
464
|
+
}
|
|
465
|
+
const after = this.captureSliceSnapshots(vol, this.dragMinZ(), this.dragMaxZ());
|
|
466
|
+
const deltas = this.buildUndoGroup(layer, this.dragBeforeSnapshots, after);
|
|
292
467
|
if (deltas.length > 0) {
|
|
293
468
|
this.callbacks.pushUndoGroup(deltas);
|
|
294
469
|
}
|
|
295
|
-
|
|
296
|
-
this.
|
|
297
|
-
this.clearPreview();
|
|
470
|
+
this.refreshDisplay(layer, deltas, true);
|
|
471
|
+
this.finalizeStrokeState();
|
|
298
472
|
}
|
|
299
473
|
// ── Sphere Eraser Click/PointerUp ──────────────────────────────
|
|
300
474
|
/**
|
|
@@ -302,13 +476,17 @@ export class SphereBrushTool extends BaseTool {
|
|
|
302
476
|
* Initializes drag tracking for cumulative undo.
|
|
303
477
|
*/
|
|
304
478
|
onSphereEraserClick(e) {
|
|
305
|
-
this.centerX = e.offsetX
|
|
306
|
-
this.centerY = e.offsetY
|
|
479
|
+
this.centerX = e.offsetX;
|
|
480
|
+
this.centerY = e.offsetY;
|
|
307
481
|
this.centerSlice = this.ctx.nrrd_states.view.currentSliceIndex;
|
|
482
|
+
this.lastDisplayX = this.centerX;
|
|
483
|
+
this.lastDisplayY = this.centerY;
|
|
484
|
+
this.lastSliceIndex = this.centerSlice;
|
|
308
485
|
this.active = true;
|
|
309
486
|
this.mode = "eraser";
|
|
310
487
|
this.dragMoved = false;
|
|
311
488
|
this.dragBeforeSnapshots.clear();
|
|
489
|
+
this.strokeCenters = [{ x: this.centerX, y: this.centerY, sliceIndex: this.centerSlice }];
|
|
312
490
|
// Capture initial "before" snapshots for the first sphere position
|
|
313
491
|
const layer = this.ctx.gui_states.layerChannel.layer;
|
|
314
492
|
const radius = this.ctx.nrrd_states.sphere.sphereBrushRadius;
|
|
@@ -317,7 +495,7 @@ export class SphereBrushTool extends BaseTool {
|
|
|
317
495
|
const dims = vol.getDimensions();
|
|
318
496
|
const axis = this.ctx.protectedData.axis;
|
|
319
497
|
const center = this.canvasToVoxelCenter(this.centerX, this.centerY, this.centerSlice, axis);
|
|
320
|
-
const radii = this.getVoxelRadii(radius);
|
|
498
|
+
const radii = this.getVoxelRadii(radius, axis);
|
|
321
499
|
const bb = this.getBoundingBox(center, radii, dims);
|
|
322
500
|
this.expandDragBeforeSnapshots(vol, bb.minZ, bb.maxZ);
|
|
323
501
|
}
|
|
@@ -333,9 +511,11 @@ export class SphereBrushTool extends BaseTool {
|
|
|
333
511
|
if (!this.active || this.mode !== "eraser")
|
|
334
512
|
return;
|
|
335
513
|
this.dragMoved = true;
|
|
336
|
-
const mouseX = e.offsetX / this.ctx.nrrd_states.view.sizeFactor;
|
|
337
|
-
const mouseY = e.offsetY / this.ctx.nrrd_states.view.sizeFactor;
|
|
338
514
|
const sliceIndex = this.ctx.nrrd_states.view.currentSliceIndex;
|
|
515
|
+
this.lastDisplayX = e.offsetX;
|
|
516
|
+
this.lastDisplayY = e.offsetY;
|
|
517
|
+
this.lastSliceIndex = sliceIndex;
|
|
518
|
+
this.strokeCenters.push({ x: e.offsetX, y: e.offsetY, sliceIndex });
|
|
339
519
|
const layer = this.ctx.gui_states.layerChannel.layer;
|
|
340
520
|
const channel = this.ctx.gui_states.layerChannel.activeChannel || 1;
|
|
341
521
|
const axis = this.ctx.protectedData.axis;
|
|
@@ -348,17 +528,18 @@ export class SphereBrushTool extends BaseTool {
|
|
|
348
528
|
return;
|
|
349
529
|
}
|
|
350
530
|
const dims = vol.getDimensions();
|
|
351
|
-
const center = this.canvasToVoxelCenter(
|
|
352
|
-
const radii = this.getVoxelRadii(radius);
|
|
531
|
+
const center = this.canvasToVoxelCenter(e.offsetX, e.offsetY, sliceIndex, axis);
|
|
532
|
+
const radii = this.getVoxelRadii(radius, axis);
|
|
353
533
|
const bb = this.getBoundingBox(center, radii, dims);
|
|
354
534
|
// Expand "before" snapshots to cover any new Z slices
|
|
355
535
|
this.expandDragBeforeSnapshots(vol, bb.minZ, bb.maxZ);
|
|
356
536
|
// Erase sphere at current position
|
|
357
537
|
this.erase3DSphereFromVolume(vol, center, radii, bb, channel);
|
|
358
|
-
// Update preview position
|
|
359
|
-
this.drawPreview(
|
|
360
|
-
// Refresh display
|
|
361
|
-
|
|
538
|
+
// Update preview position (pass display/zoomed coords)
|
|
539
|
+
this.drawPreview(e.offsetX, e.offsetY, radius, true);
|
|
540
|
+
// Refresh display locally — skip backend notify to avoid per-frame HTTP.
|
|
541
|
+
// onSphereEraserPointerUp batches all deltas into a single notify.
|
|
542
|
+
this.refreshDisplay(layer, undefined, false);
|
|
362
543
|
}
|
|
363
544
|
/**
|
|
364
545
|
* Handle pointer-up in sphereEraser mode — finalize erase + push undo group.
|
|
@@ -377,16 +558,17 @@ export class SphereBrushTool extends BaseTool {
|
|
|
377
558
|
vol = this.callbacks.getVolumeForLayer(layer);
|
|
378
559
|
}
|
|
379
560
|
catch (_a) {
|
|
380
|
-
this.
|
|
381
|
-
this.dragBeforeSnapshots.clear();
|
|
561
|
+
this.finalizeStrokeState();
|
|
382
562
|
return;
|
|
383
563
|
}
|
|
384
|
-
//
|
|
385
|
-
if (!this.dragMoved) {
|
|
564
|
+
// Click-without-drag: erase at the click position (click-release behavior).
|
|
565
|
+
if (!this.dragMoved && this.strokeCenters.length > 0) {
|
|
566
|
+
const sc = this.strokeCenters[0];
|
|
386
567
|
const dims = vol.getDimensions();
|
|
387
|
-
const center = this.canvasToVoxelCenter(
|
|
388
|
-
const radii = this.getVoxelRadii(radius);
|
|
568
|
+
const center = this.canvasToVoxelCenter(sc.x, sc.y, sc.sliceIndex, axis);
|
|
569
|
+
const radii = this.getVoxelRadii(radius, axis);
|
|
389
570
|
const bb = this.getBoundingBox(center, radii, dims);
|
|
571
|
+
this.expandDragBeforeSnapshots(vol, bb.minZ, bb.maxZ);
|
|
390
572
|
this.erase3DSphereFromVolume(vol, center, radii, bb, channel);
|
|
391
573
|
}
|
|
392
574
|
// Build undo group from cumulative "before" snapshots vs current state
|
|
@@ -395,10 +577,20 @@ export class SphereBrushTool extends BaseTool {
|
|
|
395
577
|
if (deltas.length > 0) {
|
|
396
578
|
this.callbacks.pushUndoGroup(deltas);
|
|
397
579
|
}
|
|
398
|
-
// Refresh display and notify backend of ALL changed slices
|
|
399
|
-
this.refreshDisplay(layer, deltas);
|
|
580
|
+
// Refresh display and notify backend of ALL changed slices — single HTTP batch
|
|
581
|
+
this.refreshDisplay(layer, deltas, true);
|
|
582
|
+
this.finalizeStrokeState();
|
|
583
|
+
}
|
|
584
|
+
/**
|
|
585
|
+
* Clear per-stroke state after pointerup or cancel. Kept as a helper so
|
|
586
|
+
* brush/eraser pointerup and cancelActivePlacement all reset the same set
|
|
587
|
+
* of fields — if a new drag-state field is added, only one place to update.
|
|
588
|
+
*/
|
|
589
|
+
finalizeStrokeState() {
|
|
400
590
|
this.clearPreview();
|
|
401
591
|
this.dragBeforeSnapshots.clear();
|
|
592
|
+
this.strokeCenters = [];
|
|
593
|
+
this.dragMoved = false;
|
|
402
594
|
}
|
|
403
595
|
/**
|
|
404
596
|
* Expand cumulative "before" snapshots to cover z range [minZ, maxZ].
|
|
@@ -443,8 +635,11 @@ export class SphereBrushTool extends BaseTool {
|
|
|
443
635
|
* @param changedDeltas - If provided, fire onMaskChanged for ALL changed
|
|
444
636
|
* slices (not just the current view slice) so the backend receives the
|
|
445
637
|
* full 3D sphere data for NII/GLTF export.
|
|
638
|
+
* @param notifyBackend - When false, only refresh the local canvas and skip
|
|
639
|
+
* the onMaskChanged callback. Used during drag to avoid per-frame HTTP;
|
|
640
|
+
* pointerup then calls with `true` to send a single batched update.
|
|
446
641
|
*/
|
|
447
|
-
refreshDisplay(layerId, changedDeltas) {
|
|
642
|
+
refreshDisplay(layerId, changedDeltas, notifyBackend = true) {
|
|
448
643
|
// Re-render layer canvas from volume for the current slice
|
|
449
644
|
const target = this.ctx.protectedData.layerTargets.get(layerId);
|
|
450
645
|
if (target) {
|
|
@@ -457,6 +652,9 @@ export class SphereBrushTool extends BaseTool {
|
|
|
457
652
|
}
|
|
458
653
|
// Composite all layers to master canvas
|
|
459
654
|
this.callbacks.compositeAllLayers();
|
|
655
|
+
// Skip backend notify during drag — pointerup batches a single notify for the whole stroke.
|
|
656
|
+
if (!notifyBackend)
|
|
657
|
+
return;
|
|
460
658
|
// Fire onMaskChanged for ALL changed slices (not just the current view slice)
|
|
461
659
|
// This ensures the backend receives the full 3D sphere data for export.
|
|
462
660
|
try {
|
|
@@ -485,5 +683,22 @@ export class SphereBrushTool extends BaseTool {
|
|
|
485
683
|
get isActive() {
|
|
486
684
|
return this.active;
|
|
487
685
|
}
|
|
686
|
+
/**
|
|
687
|
+
* Defensively cancel any in-progress sphere placement and clear the preview.
|
|
688
|
+
*
|
|
689
|
+
* Called when crosshair mode is entered so any lingering sphere preview
|
|
690
|
+
* (e.g. red dashed eraser outline) is wiped immediately. In normal flow
|
|
691
|
+
* `leftButtonDown === true` blocks crosshair toggle, so this shouldn't
|
|
692
|
+
* fire mid-stroke — but if it ever does, we drop the drag snapshot
|
|
693
|
+
* rather than committing a partial undo entry.
|
|
694
|
+
*/
|
|
695
|
+
cancelActivePlacement() {
|
|
696
|
+
if (!this.active) {
|
|
697
|
+
this.clearPreview();
|
|
698
|
+
return;
|
|
699
|
+
}
|
|
700
|
+
this.active = false;
|
|
701
|
+
this.finalizeStrokeState();
|
|
702
|
+
}
|
|
488
703
|
}
|
|
489
704
|
//# sourceMappingURL=SphereBrushTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SphereBrushTool.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/tools/SphereBrushTool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SphereBrushTool.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/tools/SphereBrushTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,7 +64,7 @@ export type ZoomHostDeps = Pick<ToolHost, 'resetPaintAreaUIPosition' | 'resizePa
|
|
|
64
64
|
/** SphereTool host dependencies */
|
|
65
65
|
export type SphereHostDeps = Pick<ToolHost, 'setEmptyCanvasSize' | 'drawImageOnEmptyImage' | 'enableCrosshair' | 'setUpSphereOrigins'>;
|
|
66
66
|
/** DrawingTool host dependencies */
|
|
67
|
-
export type DrawingHostDeps = Pick<ToolHost, 'setCurrentLayer' | 'compositeAllLayers' | 'syncLayerSliceData' | 'filterDrawedImage' | 'getVolumeForLayer' | 'pushUndoDelta' | 'getEraserUrls'>;
|
|
67
|
+
export type DrawingHostDeps = Pick<ToolHost, 'setCurrentLayer' | 'compositeAllLayers' | 'syncLayerSliceData' | 'filterDrawedImage' | 'getVolumeForLayer' | 'pushUndoDelta' | 'getEraserUrls' | 'renderSliceToCanvas' | 'getOrCreateSliceBuffer'>;
|
|
68
68
|
/** DragSliceTool host dependencies */
|
|
69
69
|
export type DragSliceHostDeps = Pick<ToolHost, 'setSyncsliceNum' | 'setIsDrawFalse' | 'flipDisplayImageByAxis' | 'setEmptyCanvasSize' | 'getOrCreateSliceBuffer' | 'renderSliceToCanvas' | 'refreshSphereOverlay' | 'compositeAllLayers'>;
|
|
70
70
|
/** LayerChannelManager host dependencies */
|