copper3d 2.2.3 → 3.0.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/README.md +1056 -5
- package/dist/Scene/copperScene.d.ts +3 -0
- package/dist/Scene/copperScene.js +13 -0
- package/dist/Scene/copperScene.js.map +1 -1
- package/dist/Utils/segmentation/CommToolsData.d.ts +109 -6
- package/dist/Utils/segmentation/CommToolsData.js +314 -50
- package/dist/Utils/segmentation/CommToolsData.js.map +1 -1
- package/dist/Utils/segmentation/DragOperator.d.ts +13 -7
- package/dist/Utils/segmentation/DragOperator.js +51 -165
- package/dist/Utils/segmentation/DragOperator.js.map +1 -1
- package/dist/Utils/segmentation/DrawToolCore.d.ts +57 -76
- package/dist/Utils/segmentation/DrawToolCore.js +368 -878
- package/dist/Utils/segmentation/DrawToolCore.js.map +1 -1
- package/dist/Utils/segmentation/NrrdTools.d.ts +277 -15
- package/dist/Utils/segmentation/NrrdTools.js +594 -232
- package/dist/Utils/segmentation/NrrdTools.js.map +1 -1
- package/dist/Utils/segmentation/core/MaskVolume.d.ts +477 -0
- package/dist/Utils/segmentation/core/MaskVolume.js +1238 -0
- package/dist/Utils/segmentation/core/MaskVolume.js.map +1 -0
- package/dist/Utils/segmentation/core/MigrationUtils.d.ts +97 -0
- package/dist/Utils/segmentation/core/MigrationUtils.js +163 -0
- package/dist/Utils/segmentation/core/MigrationUtils.js.map +1 -0
- package/dist/Utils/segmentation/core/UndoManager.d.ts +47 -0
- package/dist/Utils/segmentation/core/UndoManager.js +86 -0
- package/dist/Utils/segmentation/core/UndoManager.js.map +1 -0
- package/dist/Utils/segmentation/core/index.d.ts +76 -0
- package/dist/Utils/segmentation/core/index.js +75 -0
- package/dist/Utils/segmentation/core/index.js.map +1 -0
- package/dist/Utils/segmentation/core/types.d.ts +106 -0
- package/dist/Utils/segmentation/core/types.js +98 -0
- package/dist/Utils/segmentation/core/types.js.map +1 -0
- package/dist/Utils/segmentation/coreTools/coreType.d.ts +55 -36
- package/dist/Utils/segmentation/coreTools/coreType.js.map +1 -1
- package/dist/Utils/segmentation/coreTools/gui.d.ts +6 -16
- package/dist/Utils/segmentation/coreTools/gui.js +23 -27
- package/dist/Utils/segmentation/coreTools/gui.js.map +1 -1
- package/dist/Utils/segmentation/eventRouter/EventRouter.d.ts +144 -0
- package/dist/Utils/segmentation/eventRouter/EventRouter.js +369 -0
- package/dist/Utils/segmentation/eventRouter/EventRouter.js.map +1 -0
- package/dist/Utils/segmentation/eventRouter/index.d.ts +7 -0
- package/dist/Utils/segmentation/eventRouter/index.js +7 -0
- package/dist/Utils/segmentation/eventRouter/index.js.map +1 -0
- package/dist/Utils/segmentation/eventRouter/types.d.ts +70 -0
- package/dist/Utils/segmentation/eventRouter/types.js +7 -0
- package/dist/Utils/segmentation/eventRouter/types.js.map +1 -0
- package/dist/Utils/segmentation/tools/BaseTool.d.ts +25 -0
- package/dist/Utils/segmentation/tools/BaseTool.js +18 -0
- package/dist/Utils/segmentation/tools/BaseTool.js.map +1 -0
- package/dist/Utils/segmentation/tools/ContrastTool.d.ts +26 -0
- package/dist/Utils/segmentation/tools/ContrastTool.js +118 -0
- package/dist/Utils/segmentation/tools/ContrastTool.js.map +1 -0
- package/dist/Utils/segmentation/tools/CrosshairTool.d.ts +30 -0
- package/dist/Utils/segmentation/tools/CrosshairTool.js +157 -0
- package/dist/Utils/segmentation/tools/CrosshairTool.js.map +1 -0
- package/dist/Utils/segmentation/tools/DragSliceTool.d.ts +44 -0
- package/dist/Utils/segmentation/tools/DragSliceTool.js +170 -0
- package/dist/Utils/segmentation/tools/DragSliceTool.js.map +1 -0
- package/dist/Utils/segmentation/tools/EraserTool.d.ts +16 -0
- package/dist/Utils/segmentation/tools/EraserTool.js +92 -0
- package/dist/Utils/segmentation/tools/EraserTool.js.map +1 -0
- package/dist/Utils/segmentation/tools/ImageStoreHelper.d.ts +65 -0
- package/dist/Utils/segmentation/tools/ImageStoreHelper.js +174 -0
- package/dist/Utils/segmentation/tools/ImageStoreHelper.js.map +1 -0
- package/dist/Utils/segmentation/tools/SphereTool.d.ts +38 -0
- package/dist/Utils/segmentation/tools/SphereTool.js +193 -0
- package/dist/Utils/segmentation/tools/SphereTool.js.map +1 -0
- package/dist/Utils/segmentation/tools/ZoomTool.d.ts +20 -0
- package/dist/Utils/segmentation/tools/ZoomTool.js +59 -0
- package/dist/Utils/segmentation/tools/ZoomTool.js.map +1 -0
- package/dist/Utils/segmentation/tools/index.d.ts +22 -0
- package/dist/Utils/segmentation/tools/index.js +23 -0
- package/dist/Utils/segmentation/tools/index.js.map +1 -0
- package/dist/bundle.esm.js +4740 -1979
- package/dist/bundle.umd.js +4743 -1978
- package/dist/index.d.ts +5 -3
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/types/Renderer/copperRenderer.d.ts +1 -1
- package/dist/types/Renderer/copperRendererOnDemond.d.ts +1 -1
- package/dist/types/Scene/copperScene.d.ts +3 -0
- package/dist/types/Utils/segmentation/CommToolsData.d.ts +109 -6
- package/dist/types/Utils/segmentation/DragOperator.d.ts +13 -7
- package/dist/types/Utils/segmentation/DrawToolCore.d.ts +57 -76
- package/dist/types/Utils/segmentation/NrrdTools.d.ts +277 -15
- package/dist/types/Utils/segmentation/core/MaskVolume.d.ts +477 -0
- package/dist/types/Utils/segmentation/core/MigrationUtils.d.ts +97 -0
- package/dist/types/Utils/segmentation/core/UndoManager.d.ts +47 -0
- package/dist/types/Utils/segmentation/core/index.d.ts +76 -0
- package/dist/types/Utils/segmentation/core/types.d.ts +106 -0
- package/dist/types/Utils/segmentation/coreTools/coreType.d.ts +55 -36
- package/dist/types/Utils/segmentation/coreTools/gui.d.ts +6 -16
- package/dist/types/Utils/segmentation/eventRouter/EventRouter.d.ts +144 -0
- package/dist/types/Utils/segmentation/eventRouter/index.d.ts +7 -0
- package/dist/types/Utils/segmentation/eventRouter/types.d.ts +70 -0
- package/dist/types/Utils/segmentation/tools/BaseTool.d.ts +25 -0
- package/dist/types/Utils/segmentation/tools/ContrastTool.d.ts +26 -0
- package/dist/types/Utils/segmentation/tools/CrosshairTool.d.ts +30 -0
- package/dist/types/Utils/segmentation/tools/DragSliceTool.d.ts +44 -0
- package/dist/types/Utils/segmentation/tools/EraserTool.d.ts +16 -0
- package/dist/types/Utils/segmentation/tools/ImageStoreHelper.d.ts +65 -0
- package/dist/types/Utils/segmentation/tools/SphereTool.d.ts +38 -0
- package/dist/types/Utils/segmentation/tools/ZoomTool.d.ts +20 -0
- package/dist/types/Utils/segmentation/tools/index.d.ts +22 -0
- package/dist/types/index.d.ts +5 -3
- package/dist/types/types/types.d.ts +3 -3
- package/dist/types/types.d.ts +3 -3
- package/package.json +1 -1
- package/dist/Utils/segmentation/coreTools/archive.d.ts +0 -1
- package/dist/Utils/segmentation/coreTools/archive.js +0 -23
- package/dist/Utils/segmentation/coreTools/archive.js.map +0 -1
- package/dist/types/Utils/segmentation/coreTools/archive.d.ts +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { throttle } from "../utils";
|
|
2
2
|
import { createShowSliceNumberDiv } from "./coreTools/divControlTools";
|
|
3
|
+
import { DragSliceTool } from "./tools/DragSliceTool";
|
|
3
4
|
export class DragOperator {
|
|
4
|
-
constructor(container, nrrd_sates, gui_states, protectedData, drawingPrameters, setSyncsliceNum, setIsDrawFalse, flipDisplayImageByAxis, setEmptyCanvasSize,
|
|
5
|
+
constructor(container, nrrd_sates, gui_states, protectedData, drawingPrameters, setSyncsliceNum, setIsDrawFalse, flipDisplayImageByAxis, setEmptyCanvasSize, getOrCreateSliceBuffer, renderSliceToCanvas) {
|
|
5
6
|
this.dragPrameters = {
|
|
6
7
|
move: 0,
|
|
7
8
|
y: 0,
|
|
@@ -12,6 +13,8 @@ export class DragOperator {
|
|
|
12
13
|
handleOnDragMouseMove: (ev) => { },
|
|
13
14
|
};
|
|
14
15
|
this.sensitiveArray = [];
|
|
16
|
+
// EventRouter for centralized event handling
|
|
17
|
+
this.eventRouter = null;
|
|
15
18
|
this.configDragMode = () => {
|
|
16
19
|
this.container.style.cursor = "pointer";
|
|
17
20
|
this.container.addEventListener("pointerdown", this.dragPrameters.handleOnDragMouseDown, true);
|
|
@@ -32,7 +35,8 @@ export class DragOperator {
|
|
|
32
35
|
this.setIsDrawFalse = setIsDrawFalse;
|
|
33
36
|
this.flipDisplayImageByAxis = flipDisplayImageByAxis;
|
|
34
37
|
this.setEmptyCanvasSize = setEmptyCanvasSize;
|
|
35
|
-
this.
|
|
38
|
+
this.getOrCreateSliceBuffer = getOrCreateSliceBuffer;
|
|
39
|
+
this.renderSliceToCanvas = renderSliceToCanvas;
|
|
36
40
|
this.showDragNumberDiv = createShowSliceNumberDiv();
|
|
37
41
|
this.init();
|
|
38
42
|
}
|
|
@@ -40,16 +44,52 @@ export class DragOperator {
|
|
|
40
44
|
for (let i = 0; i < this.gui_states.max_sensitive; i++) {
|
|
41
45
|
this.sensitiveArray.push((i + 1) / 20);
|
|
42
46
|
}
|
|
43
|
-
|
|
47
|
+
const dragEffectCanvases = {
|
|
44
48
|
drawingCanvasLayerMaster: this.protectedData.canvases.drawingCanvasLayerMaster,
|
|
45
|
-
drawingCanvasLayerOne: this.protectedData.canvases.drawingCanvasLayerOne,
|
|
46
|
-
drawingCanvasLayerTwo: this.protectedData.canvases.drawingCanvasLayerTwo,
|
|
47
|
-
drawingCanvasLayerThree: this.protectedData.canvases.drawingCanvasLayerThree,
|
|
48
49
|
displayCanvas: this.protectedData.canvases.displayCanvas,
|
|
50
|
+
layerTargets: this.protectedData.layerTargets,
|
|
49
51
|
};
|
|
52
|
+
const toolCtx = {
|
|
53
|
+
nrrd_states: this.nrrd_states,
|
|
54
|
+
gui_states: this.gui_states,
|
|
55
|
+
protectedData: this.protectedData,
|
|
56
|
+
cursorPage: {},
|
|
57
|
+
};
|
|
58
|
+
this.dragSliceTool = new DragSliceTool(toolCtx, {
|
|
59
|
+
setSyncsliceNum: () => this.setSyncsliceNum(),
|
|
60
|
+
setIsDrawFalse: (target) => this.setIsDrawFalse(target),
|
|
61
|
+
flipDisplayImageByAxis: () => this.flipDisplayImageByAxis(),
|
|
62
|
+
setEmptyCanvasSize: (axis) => this.setEmptyCanvasSize(axis),
|
|
63
|
+
getOrCreateSliceBuffer: (axis) => this.getOrCreateSliceBuffer(axis),
|
|
64
|
+
renderSliceToCanvas: (layer, axis, sliceIndex, buffer, targetCtx, w, h) => this.renderSliceToCanvas(layer, axis, sliceIndex, buffer, targetCtx, w, h),
|
|
65
|
+
}, this.showDragNumberDiv, dragEffectCanvases);
|
|
50
66
|
}
|
|
51
67
|
setShowDragNumberDiv(sliceIndexContainer) {
|
|
52
68
|
this.showDragNumberDiv = sliceIndexContainer;
|
|
69
|
+
this.dragSliceTool.setShowDragNumberDiv(sliceIndexContainer);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Set the EventRouter reference for centralized event handling.
|
|
73
|
+
* Called by NrrdTools/DrawToolCore after EventRouter is initialized.
|
|
74
|
+
* Subscribes to mode changes to control drag mode.
|
|
75
|
+
*/
|
|
76
|
+
setEventRouter(eventRouter) {
|
|
77
|
+
this.eventRouter = eventRouter;
|
|
78
|
+
// Subscribe to mode changes to control drag/contrast modes
|
|
79
|
+
this.eventRouter.subscribeModeChange((prevMode, newMode) => {
|
|
80
|
+
const prev = prevMode;
|
|
81
|
+
const next = newMode;
|
|
82
|
+
// When entering draw or contrast mode, remove drag mode
|
|
83
|
+
if (next === 'draw' || next === 'contrast') {
|
|
84
|
+
this.removeDragMode();
|
|
85
|
+
}
|
|
86
|
+
// When leaving draw or contrast mode (returning to idle), restore drag mode
|
|
87
|
+
if ((prev === 'draw' || prev === 'contrast') && next === 'idle') {
|
|
88
|
+
if (!this.gui_states.sphere) {
|
|
89
|
+
this.configDragMode();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
});
|
|
53
93
|
}
|
|
54
94
|
drag(opts) {
|
|
55
95
|
this.dragPrameters.h = this.container.offsetHeight;
|
|
@@ -88,171 +128,17 @@ export class DragOperator {
|
|
|
88
128
|
this.container.removeEventListener("pointermove", this.dragPrameters.handleOnDragMouseMove, false);
|
|
89
129
|
};
|
|
90
130
|
this.configDragMode();
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return;
|
|
94
|
-
if (ev.key === this.nrrd_states.keyboardSettings.draw) {
|
|
95
|
-
this.removeDragMode();
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
this.container.addEventListener("keyup", (ev) => {
|
|
99
|
-
if (this.nrrd_states.configKeyBoard)
|
|
100
|
-
return;
|
|
101
|
-
if (this.nrrd_states.keyboardSettings.contrast.includes(ev.key)) {
|
|
102
|
-
/**
|
|
103
|
-
* if ctrl pressed remove the drag mode
|
|
104
|
-
*/
|
|
105
|
-
if (this.protectedData.Is_Ctrl_Pressed) {
|
|
106
|
-
this.removeDragMode();
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this.configDragMode();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
if (ev.key === this.nrrd_states.keyboardSettings.draw && !this.gui_states.sphere) {
|
|
113
|
-
if (this.protectedData.Is_Ctrl_Pressed) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
this.configDragMode();
|
|
117
|
-
}
|
|
118
|
-
});
|
|
131
|
+
// Keyboard handling is fully managed by EventRouter (injected via setEventRouter).
|
|
132
|
+
// Mode changes (draw/contrast) are routed through the onModeChange callback in DrawToolCore.
|
|
119
133
|
}
|
|
120
134
|
updateIndex(move) {
|
|
121
|
-
|
|
122
|
-
let contrastModifyNum = 0;
|
|
123
|
-
if (this.nrrd_states.showContrast) {
|
|
124
|
-
contrastModifyNum = move % this.protectedData.displaySlices.length;
|
|
125
|
-
this.nrrd_states.contrastNum += contrastModifyNum;
|
|
126
|
-
if (move > 0) {
|
|
127
|
-
// move forward
|
|
128
|
-
if (this.nrrd_states.currentIndex <= this.nrrd_states.maxIndex) {
|
|
129
|
-
sliceModifyNum = Math.floor(move / this.protectedData.displaySlices.length);
|
|
130
|
-
if (this.nrrd_states.contrastNum >
|
|
131
|
-
this.protectedData.displaySlices.length - 1) {
|
|
132
|
-
sliceModifyNum += 1;
|
|
133
|
-
this.nrrd_states.contrastNum -=
|
|
134
|
-
this.protectedData.displaySlices.length;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
sliceModifyNum = 0;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
// move back
|
|
143
|
-
sliceModifyNum = Math.ceil(move / this.protectedData.displaySlices.length);
|
|
144
|
-
if (this.nrrd_states.contrastNum < 0) {
|
|
145
|
-
this.nrrd_states.contrastNum +=
|
|
146
|
-
this.protectedData.displaySlices.length;
|
|
147
|
-
sliceModifyNum -= 1;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
sliceModifyNum = move;
|
|
153
|
-
}
|
|
154
|
-
// let newIndex = this.nrrd_states.oldIndex + sliceModifyNum;
|
|
155
|
-
let newIndex = this.nrrd_states.currentIndex + sliceModifyNum;
|
|
156
|
-
if (newIndex != this.nrrd_states.currentIndex ||
|
|
157
|
-
this.nrrd_states.showContrast) {
|
|
158
|
-
if (newIndex > this.nrrd_states.maxIndex) {
|
|
159
|
-
newIndex = this.nrrd_states.maxIndex;
|
|
160
|
-
this.nrrd_states.contrastNum =
|
|
161
|
-
this.protectedData.displaySlices.length - 1;
|
|
162
|
-
}
|
|
163
|
-
else if (newIndex < this.nrrd_states.minIndex) {
|
|
164
|
-
newIndex = this.nrrd_states.minIndex;
|
|
165
|
-
this.nrrd_states.contrastNum = 0;
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
this.protectedData.mainPreSlices.index =
|
|
169
|
-
newIndex * this.nrrd_states.RSARatio;
|
|
170
|
-
// clear drawing canvas, and display next slicez
|
|
171
|
-
this.setSyncsliceNum();
|
|
172
|
-
let isSameIndex = true;
|
|
173
|
-
if (newIndex != this.nrrd_states.currentIndex) {
|
|
174
|
-
this.nrrd_states.switchSliceFlag = true;
|
|
175
|
-
isSameIndex = false;
|
|
176
|
-
}
|
|
177
|
-
this.cleanCanvases(isSameIndex);
|
|
178
|
-
if (this.nrrd_states.changedWidth === 0) {
|
|
179
|
-
this.nrrd_states.changedWidth = this.nrrd_states.originWidth;
|
|
180
|
-
this.nrrd_states.changedHeight = this.nrrd_states.originHeight;
|
|
181
|
-
}
|
|
182
|
-
// get the slice that need to be updated on displayCanvas
|
|
183
|
-
let needToUpdateSlice = this.updateCurrentContrastSlice();
|
|
184
|
-
needToUpdateSlice.repaint.call(needToUpdateSlice);
|
|
185
|
-
this.nrrd_states.currentIndex = newIndex;
|
|
186
|
-
this.drawDragSlice(needToUpdateSlice.canvas);
|
|
187
|
-
}
|
|
188
|
-
this.nrrd_states.oldIndex = newIndex * this.nrrd_states.RSARatio;
|
|
189
|
-
this.updateShowNumDiv(this.nrrd_states.contrastNum);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
drawDragSlice(canvas) {
|
|
193
|
-
this.protectedData.ctxes.displayCtx.save();
|
|
194
|
-
// flip images
|
|
195
|
-
this.flipDisplayImageByAxis();
|
|
196
|
-
this.protectedData.ctxes.displayCtx.drawImage(canvas, 0, 0, this.nrrd_states.changedWidth, this.nrrd_states.changedHeight);
|
|
197
|
-
this.protectedData.ctxes.displayCtx.restore();
|
|
198
|
-
if (this.protectedData.maskData.paintImages.x.length > 0 ||
|
|
199
|
-
this.protectedData.maskData.paintImages.y.length > 0 ||
|
|
200
|
-
this.protectedData.maskData.paintImages.z.length > 0) {
|
|
201
|
-
if (this.nrrd_states.switchSliceFlag) {
|
|
202
|
-
// 0929
|
|
203
|
-
// this.paintedImage = this.filterDrawedImage(
|
|
204
|
-
// this.protectedData.axis,
|
|
205
|
-
// this.nrrd_states.currentIndex,
|
|
206
|
-
// this.protectedData.maskData.paintImages
|
|
207
|
-
// );
|
|
208
|
-
this.drawMaskToLabelCtx(this.protectedData.maskData.paintImages, this.protectedData.ctxes.drawingLayerMasterCtx);
|
|
209
|
-
this.drawMaskToLabelCtx(this.protectedData.maskData.paintImagesLabel1, this.protectedData.ctxes.drawingLayerOneCtx);
|
|
210
|
-
this.drawMaskToLabelCtx(this.protectedData.maskData.paintImagesLabel2, this.protectedData.ctxes.drawingLayerTwoCtx);
|
|
211
|
-
this.drawMaskToLabelCtx(this.protectedData.maskData.paintImagesLabel3, this.protectedData.ctxes.drawingLayerThreeCtx);
|
|
212
|
-
this.nrrd_states.switchSliceFlag = false;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
drawMaskToLabelCtx(paintedImages, ctx) {
|
|
217
|
-
const paintedImage = this.filterDrawedImage(this.protectedData.axis, this.nrrd_states.currentIndex, paintedImages);
|
|
218
|
-
if (paintedImage === null || paintedImage === void 0 ? void 0 : paintedImage.image) {
|
|
219
|
-
// redraw the stored data to empty point 2
|
|
220
|
-
this.setEmptyCanvasSize();
|
|
221
|
-
this.protectedData.ctxes.emptyCtx.putImageData(paintedImage.image, 0, 0);
|
|
222
|
-
ctx.drawImage(this.protectedData.canvases.emptyCanvas, 0, 0, this.nrrd_states.changedWidth, this.nrrd_states.changedHeight);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
cleanCanvases(flag) {
|
|
226
|
-
for (const name in this.dragEffectCanvases) {
|
|
227
|
-
if (flag) {
|
|
228
|
-
if (name === "displayCanvas") {
|
|
229
|
-
this.dragEffectCanvases.displayCanvas.width =
|
|
230
|
-
this.dragEffectCanvases.displayCanvas.width;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
this.dragEffectCanvases[name].width =
|
|
235
|
-
this.dragEffectCanvases[name].width;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
135
|
+
this.dragSliceTool.updateIndex(move);
|
|
238
136
|
}
|
|
239
137
|
updateShowNumDiv(contrastNum) {
|
|
240
|
-
|
|
241
|
-
if (this.nrrd_states.currentIndex > this.nrrd_states.maxIndex) {
|
|
242
|
-
this.nrrd_states.currentIndex = this.nrrd_states.maxIndex;
|
|
243
|
-
}
|
|
244
|
-
if (this.nrrd_states.showContrast) {
|
|
245
|
-
this.showDragNumberDiv.innerHTML = `ContrastNum: ${contrastNum}/${this.protectedData.displaySlices.length - 1} SliceNum: ${this.nrrd_states.currentIndex}/${this.nrrd_states.maxIndex}`;
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
this.showDragNumberDiv.innerHTML = `SliceNum: ${this.nrrd_states.currentIndex}/${this.nrrd_states.maxIndex}`;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
138
|
+
this.dragSliceTool.updateShowNumDiv(contrastNum);
|
|
251
139
|
}
|
|
252
140
|
updateCurrentContrastSlice() {
|
|
253
|
-
this.
|
|
254
|
-
this.protectedData.displaySlices[this.nrrd_states.contrastNum];
|
|
255
|
-
return this.protectedData.currentShowingSlice;
|
|
141
|
+
return this.dragSliceTool.updateCurrentContrastSlice();
|
|
256
142
|
}
|
|
257
143
|
updateMainSlice(mainPreSlices) {
|
|
258
144
|
this.protectedData.mainPreSlices = mainPreSlices;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragOperator.js","sourceRoot":"","sources":["../../../src/Utils/segmentation/DragOperator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DragOperator.js","sourceRoot":"","sources":["../../../src/Utils/segmentation/DragOperator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
import { IDrawingEvents, IContrastEvents, IDrawOpts,
|
|
1
|
+
import { IConvertObjType, IDrawingEvents, IContrastEvents, IDrawOpts, IPaintImages } from "./coreTools/coreType";
|
|
2
2
|
import { CommToolsData } from "./CommToolsData";
|
|
3
|
+
import { EventRouter } from "./eventRouter";
|
|
4
|
+
import { SphereTool } from "./tools/SphereTool";
|
|
5
|
+
import { CrosshairTool } from "./tools/CrosshairTool";
|
|
6
|
+
import { ContrastTool } from "./tools/ContrastTool";
|
|
7
|
+
import { ZoomTool } from "./tools/ZoomTool";
|
|
8
|
+
import { EraserTool } from "./tools/EraserTool";
|
|
9
|
+
import { ImageStoreHelper } from "./tools/ImageStoreHelper";
|
|
10
|
+
import { UndoManager } from "./core";
|
|
3
11
|
export declare class DrawToolCore extends CommToolsData {
|
|
4
12
|
container: HTMLElement;
|
|
5
13
|
mainAreaContainer: HTMLDivElement;
|
|
@@ -7,9 +15,23 @@ export declare class DrawToolCore extends CommToolsData {
|
|
|
7
15
|
contrastEventPrameters: IContrastEvents;
|
|
8
16
|
eraserUrls: string[];
|
|
9
17
|
pencilUrls: string[];
|
|
10
|
-
|
|
18
|
+
undoManager: UndoManager;
|
|
19
|
+
/** Snapshot of the active layer's slice captured on mouse-down (before drawing). */
|
|
20
|
+
private preDrawSlice;
|
|
21
|
+
private preDrawAxis;
|
|
22
|
+
private preDrawSliceIndex;
|
|
23
|
+
protected eventRouter: EventRouter | null;
|
|
24
|
+
protected sphereTool: SphereTool;
|
|
25
|
+
protected crosshairTool: CrosshairTool;
|
|
26
|
+
protected contrastTool: ContrastTool;
|
|
27
|
+
protected zoomTool: ZoomTool;
|
|
28
|
+
protected eraserTool: EraserTool;
|
|
29
|
+
protected imageStoreHelper: ImageStoreHelper;
|
|
11
30
|
start: () => void;
|
|
12
|
-
constructor(container: HTMLElement
|
|
31
|
+
constructor(container: HTMLElement, options?: {
|
|
32
|
+
layers?: string[];
|
|
33
|
+
});
|
|
34
|
+
private initTools;
|
|
13
35
|
private initDrawToolCore;
|
|
14
36
|
setEraserUrls(urls: string[]): void;
|
|
15
37
|
setPencilIconUrls(urls: string[]): void;
|
|
@@ -30,96 +52,55 @@ export declare class DrawToolCore extends CommToolsData {
|
|
|
30
52
|
configMouseSliceWheel(): void;
|
|
31
53
|
private enableCrosshair;
|
|
32
54
|
drawImageOnEmptyImage(canvas: HTMLCanvasElement): void;
|
|
33
|
-
/****************************Sphere
|
|
34
|
-
private getSpherePosition;
|
|
55
|
+
/****************************Sphere functions (delegated to SphereTool)****************************************************/
|
|
35
56
|
drawCalculatorSphereOnEachViews(axis: "x" | "y" | "z"): void;
|
|
36
|
-
/****************************Sphere functions****************************************************/
|
|
37
|
-
private storeSphereImages;
|
|
38
57
|
private drawSphereOnEachViews;
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
|
-
* @param ctx draw sphere canvas ctx
|
|
42
|
-
* @param x width must be match the origin size, size factor 1, ignore the size factor
|
|
43
|
-
* @param y height must be match the origin size, size factor 1, ignore the size factor
|
|
44
|
-
* @param radius radius must be match the origin size, size factor 1, ignore the size factor
|
|
45
|
-
* @param color sphere color
|
|
46
|
-
*/
|
|
47
|
-
private drawSphereCore;
|
|
48
|
-
private setSphereCanvasSize;
|
|
49
58
|
private configMouseSphereWheel;
|
|
50
59
|
drawCalculatorSphere(radius: number): void;
|
|
51
60
|
drawSphere(mouseX: number, mouseY: number, radius: number): void;
|
|
52
|
-
private clearSphereCanvas;
|
|
53
61
|
/**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
*
|
|
59
|
-
* Then as for the crosshair (Cursor Inspector), we also need to convert the cursor point (x, y, z) to other views' (x, y, z).
|
|
60
|
-
*
|
|
61
|
-
* @param from "x" | "y" | "z", current view axis, "x: sagittle, y: coronal, z: axial".
|
|
62
|
-
* @param to "x" | "y" | "z", target view axis (where you want jump to), "x: sagittle, y: coronal, z: axial".
|
|
63
|
-
* @param cursorNumX number, cursor point x on current axis's slice. (pixel distance)
|
|
64
|
-
* @param cursorNumY number, cursor point y on current axis's slice. (pixel distance)
|
|
65
|
-
* @param currentSliceIndex number, current axis's slice's index/depth. (mm distance)
|
|
66
|
-
* @returns
|
|
67
|
-
*/
|
|
68
|
-
convertCursorPoint(from: "x" | "y" | "z", to: "x" | "y" | "z", cursorNumX: number, cursorNumY: number, currentSliceIndex: number): {
|
|
69
|
-
currentIndex: number;
|
|
70
|
-
oldIndex: number;
|
|
71
|
-
convertCursorNumX: number;
|
|
72
|
-
convertCursorNumY: number;
|
|
73
|
-
} | undefined;
|
|
62
|
+
* Convert cursor point between axis views.
|
|
63
|
+
* Delegated to CrosshairTool.
|
|
64
|
+
*/
|
|
65
|
+
convertCursorPoint(from: "x" | "y" | "z", to: "x" | "y" | "z", cursorNumX: number, cursorNumY: number, currentSliceIndex: number): IConvertObjType | undefined;
|
|
74
66
|
private setUpSphereOrigins;
|
|
75
|
-
/****************************
|
|
76
|
-
|
|
77
|
-
/**************************** Undo
|
|
78
|
-
private getCurrentUndo;
|
|
67
|
+
/****************************layer div controls****************************************************/
|
|
68
|
+
getRestLayer(): string[];
|
|
69
|
+
/**************************** Undo/Redo functions (Phase 6 — Delta-based) ****************************/
|
|
79
70
|
/**
|
|
80
|
-
* Clear mask on current slice canvas
|
|
71
|
+
* Clear mask on current slice canvas.
|
|
72
|
+
*
|
|
73
|
+
* Phase 2: Clears the MaskVolume slice for all three layers,
|
|
74
|
+
* re-stores, and notifies external via getMask callback with clearFlag=true.
|
|
75
|
+
* Phase 6: Also records a MaskDelta for undo support.
|
|
81
76
|
*/
|
|
82
77
|
clearPaint(): void;
|
|
83
|
-
undoLastPainting(): void;
|
|
84
|
-
/****************************Store images****************************************************/
|
|
85
|
-
storeImageToAxis(index: number, paintedImages: IPaintImages, imageData: ImageData, axis?: "x" | "y" | "z"): void;
|
|
86
|
-
storeAllImages(index: number, label: string): void;
|
|
87
|
-
storeImageToLabel(index: number, canvas: HTMLCanvasElement, paintedImages: IPaintImages): ImageData;
|
|
88
|
-
storeEachLayerImage(index: number, label: string): void;
|
|
89
|
-
sliceArrayH(arr: Uint8ClampedArray, row: number, col: number): Uint8ClampedArray[];
|
|
90
|
-
sliceArrayV(arr: Uint8ClampedArray, row: number, col: number): number[][];
|
|
91
78
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* @param ratio : the target slice image's width/height ratio of its dimention length
|
|
96
|
-
* @param markedArr : current painted image's vertical 2d Array
|
|
97
|
-
* @param targetWidth : the target image width
|
|
98
|
-
* @param convertIndex : Mapping current image's index to target slice image's width/height pixel start point
|
|
79
|
+
* Undo the last drawing operation on the active layer.
|
|
80
|
+
* Restores the MaskVolume slice to its pre-draw state, re-renders
|
|
81
|
+
* the canvas, and notifies the backend.
|
|
99
82
|
*/
|
|
100
|
-
|
|
83
|
+
undoLastPainting(): void;
|
|
101
84
|
/**
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* @param ratio : the target slice image's width/height ratio of its dimention length
|
|
106
|
-
* @param markedArr : current painted image's horizontal 2d Array
|
|
107
|
-
* @param targetWidth : the target image width
|
|
108
|
-
* @param convertIndex : Mapping current image's index to target slice image's width/height pixel start point
|
|
85
|
+
* Redo the last undone operation on the active layer.
|
|
86
|
+
* Reapplies the MaskVolume slice to its post-draw state, re-renders
|
|
87
|
+
* the canvas, and notifies the backend.
|
|
109
88
|
*/
|
|
110
|
-
|
|
111
|
-
/****************************** Utils for store image and itksnap core **************************************/
|
|
112
|
-
checkSharedPlaceSlice(width: number, height: number, imageData: ImageData): Uint8ClampedArray;
|
|
113
|
-
replaceArray(mainArr: number[] | Uint8ClampedArray, replaceArr: number[] | Uint8ClampedArray): void;
|
|
114
|
-
findSliceInSharedPlace(): ImageData[];
|
|
115
|
-
/******************************** Utils gui related functions ***************************************/
|
|
89
|
+
redoLastPainting(): void;
|
|
116
90
|
/**
|
|
117
|
-
*
|
|
118
|
-
*
|
|
91
|
+
* Re-render a layer canvas from MaskVolume and composite to master.
|
|
92
|
+
* Called after writing oldSlice/newSlice back to the volume during undo/redo.
|
|
119
93
|
*/
|
|
94
|
+
private applyUndoRedoToCanvas;
|
|
95
|
+
/****************************Store images (delegated to ImageStoreHelper)****************************************************/
|
|
96
|
+
storeImageToAxis(index: number, paintedImages: IPaintImages, imageData: ImageData, axis?: "x" | "y" | "z"): void;
|
|
97
|
+
storeAllImages(index: number, layer: string): void;
|
|
98
|
+
storeImageToLayer(index: number, canvas: HTMLCanvasElement, paintedImages: IPaintImages): ImageData;
|
|
99
|
+
storeEachLayerImage(index: number, layer: string): void;
|
|
100
|
+
/******************************** Utils gui related functions (delegated to ContrastTool) ***************************************/
|
|
120
101
|
setupConrastEvents(callback: (step: number, towards: "horizental" | "vertical") => void): void;
|
|
121
102
|
configContrastDragMode: () => void;
|
|
122
103
|
removeContrastDragMode: () => void;
|
|
123
|
-
updateSlicesContrast(value: number, flag: string)
|
|
124
|
-
repraintCurrentContrastSlice()
|
|
104
|
+
updateSlicesContrast: (value: number, flag: string) => void;
|
|
105
|
+
repraintCurrentContrastSlice: () => void;
|
|
125
106
|
}
|