copper3d 1.15.23 → 2.0.1
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 +2 -2
- package/dist/Loader/copperNrrdLoader.d.ts +1 -1
- package/dist/Renderer/baseRenderer.d.ts +2 -2
- package/dist/Renderer/baseRenderer.js +2 -2
- package/dist/Renderer/baseRenderer.js.map +1 -1
- package/dist/Renderer/copperMSceneRenderer.d.ts +2 -2
- package/dist/Renderer/copperMSceneRenderer.js +2 -2
- package/dist/Renderer/copperMSceneRenderer.js.map +1 -1
- package/dist/Renderer/copperRenderer.d.ts +4 -4
- package/dist/Renderer/copperRenderer.js +3 -3
- package/dist/Renderer/copperRenderer.js.map +1 -1
- package/dist/Renderer/copperRendererOnDemond.d.ts +4 -5
- package/dist/Renderer/copperRendererOnDemond.js +3 -3
- package/dist/Renderer/copperRendererOnDemond.js.map +1 -1
- package/dist/Scene/baseScene.d.ts +2 -2
- package/dist/Scene/baseScene.js +2 -2
- package/dist/Scene/baseScene.js.map +1 -1
- package/dist/Scene/commonSceneMethod.d.ts +1 -1
- package/dist/Scene/commonSceneMethod.js +1 -1
- package/dist/Scene/commonSceneMethod.js.map +1 -1
- package/dist/Scene/copperMScene.d.ts +2 -2
- package/dist/Scene/copperMScene.js +2 -2
- package/dist/Scene/copperMScene.js.map +1 -1
- package/dist/Scene/copperScene.d.ts +2 -2
- package/dist/Scene/copperScene.js +2 -2
- package/dist/Scene/copperScene.js.map +1 -1
- package/dist/Scene/copperSceneOnDemond.d.ts +2 -2
- package/dist/Scene/copperSceneOnDemond.js +2 -2
- package/dist/Scene/copperSceneOnDemond.js.map +1 -1
- package/dist/Utils/add3DLabel.d.ts +2 -2
- package/dist/Utils/segmentation/CommToolsData.d.ts +71 -0
- package/dist/Utils/segmentation/CommToolsData.js +267 -0
- package/dist/Utils/segmentation/CommToolsData.js.map +1 -0
- package/dist/Utils/segmentation/DragOperator.d.ts +30 -0
- package/dist/Utils/segmentation/DragOperator.js +243 -0
- package/dist/Utils/segmentation/DragOperator.js.map +1 -0
- package/dist/Utils/segmentation/DrawToolCore.d.ts +78 -0
- package/dist/Utils/segmentation/DrawToolCore.js +1083 -0
- package/dist/Utils/segmentation/DrawToolCore.js.map +1 -0
- package/dist/Utils/segmentation/NrrdTools.d.ts +178 -0
- package/dist/Utils/segmentation/NrrdTools.js +965 -0
- package/dist/Utils/segmentation/NrrdTools.js.map +1 -0
- package/dist/Utils/segmentation/coreTools/archive.d.ts +1 -0
- package/dist/Utils/segmentation/coreTools/archive.js +23 -0
- package/dist/Utils/segmentation/coreTools/archive.js.map +1 -0
- package/dist/Utils/segmentation/coreTools/coreType.d.ts +206 -0
- package/dist/Utils/segmentation/coreTools/coreType.js +2 -0
- package/dist/Utils/segmentation/coreTools/coreType.js.map +1 -0
- package/dist/Utils/segmentation/coreTools/divControlTools.d.ts +19 -0
- package/dist/Utils/segmentation/coreTools/divControlTools.js +48 -0
- package/dist/Utils/segmentation/coreTools/divControlTools.js.map +1 -0
- package/dist/Utils/segmentation/coreTools/gui.d.ts +123 -0
- package/dist/Utils/segmentation/coreTools/gui.js +306 -0
- package/dist/Utils/segmentation/coreTools/gui.js.map +1 -0
- package/dist/Utils/utils.d.ts +1 -1
- package/dist/Utils/utils.js +25 -10
- package/dist/Utils/utils.js.map +1 -1
- package/dist/Utils/workers/reformatSaveDataWorker.d.ts +3 -3
- package/dist/Utils/workers/reformatSaveDataWorker.js.map +1 -1
- package/dist/bundle.esm.js +2576 -2228
- package/dist/bundle.umd.js +2577 -2228
- package/dist/css/style.css +2 -18
- package/dist/index.d.ts +13 -11
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/types/Loader/copperNrrdLoader.d.ts +1 -1
- package/dist/types/Renderer/baseRenderer.d.ts +2 -2
- package/dist/types/Renderer/copperMSceneRenderer.d.ts +2 -2
- package/dist/types/Renderer/copperRenderer.d.ts +4 -4
- package/dist/types/Renderer/copperRendererOnDemond.d.ts +4 -5
- package/dist/types/Scene/baseScene.d.ts +2 -2
- package/dist/types/Scene/commonSceneMethod.d.ts +1 -1
- package/dist/types/Scene/copperMScene.d.ts +2 -2
- package/dist/types/Scene/copperScene.d.ts +2 -2
- package/dist/types/Scene/copperSceneOnDemond.d.ts +2 -2
- package/dist/types/Utils/add3DLabel.d.ts +2 -2
- package/dist/types/Utils/segmentation/CommToolsData.d.ts +71 -0
- package/dist/types/Utils/segmentation/DragOperator.d.ts +30 -0
- package/dist/types/Utils/segmentation/DrawToolCore.d.ts +78 -0
- package/dist/types/Utils/segmentation/NrrdTools.d.ts +178 -0
- package/dist/types/Utils/segmentation/coreTools/archive.d.ts +1 -0
- package/dist/types/Utils/segmentation/coreTools/coreType.d.ts +206 -0
- package/dist/types/Utils/segmentation/coreTools/divControlTools.d.ts +19 -0
- package/dist/types/Utils/segmentation/coreTools/gui.d.ts +123 -0
- package/dist/types/Utils/utils.d.ts +1 -1
- package/dist/types/Utils/workers/reformatSaveDataWorker.d.ts +3 -3
- package/dist/types/index.d.ts +13 -11
- package/dist/types/types/types.d.ts +4 -38
- package/dist/types/types.d.ts +4 -38
- package/package.json +1 -1
- package/dist/Utils/nrrd_tool.d.ts +0 -269
- package/dist/Utils/nrrd_tool.js +0 -2480
- package/dist/Utils/nrrd_tool.js.map +0 -1
- package/dist/types/Utils/nrrd_tool.d.ts +0 -269
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { IProtected, IGUIStates, INrrdStates, ICursorPage, IPaintImages, IConvertObjType } from "./coreTools/coreType";
|
|
2
|
+
export declare class CommToolsData {
|
|
3
|
+
baseCanvasesSize: number;
|
|
4
|
+
nrrd_states: INrrdStates;
|
|
5
|
+
cursorPage: ICursorPage;
|
|
6
|
+
gui_states: IGUIStates;
|
|
7
|
+
protectedData: IProtected;
|
|
8
|
+
constructor(container: HTMLElement, mainAreaContainer: HTMLElement);
|
|
9
|
+
private generateCanvases;
|
|
10
|
+
/**
|
|
11
|
+
* Rewrite this {clearPaint} function under DrawToolCore
|
|
12
|
+
*/
|
|
13
|
+
clearPaint(): void;
|
|
14
|
+
/**
|
|
15
|
+
* Rewrite this {undoLastPainting} function under DrawToolCore
|
|
16
|
+
*/
|
|
17
|
+
undoLastPainting(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Rewrite this {clearStoreImages} function under NrrdTools
|
|
20
|
+
*/
|
|
21
|
+
clearStoreImages(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Rewrite this {resizePaintArea} function under NrrdTools
|
|
24
|
+
*/
|
|
25
|
+
resizePaintArea(factor: number): void;
|
|
26
|
+
/**
|
|
27
|
+
* Rewrite this {setIsDrawFalse} function under NrrdTools
|
|
28
|
+
*/
|
|
29
|
+
setIsDrawFalse(target: number): void;
|
|
30
|
+
/**
|
|
31
|
+
* Rewrite this {updateOriginAndChangedWH} function under NrrdTools
|
|
32
|
+
*/
|
|
33
|
+
updateOriginAndChangedWH(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Rewrite this {flipDisplayImageByAxis} function under NrrdTools
|
|
36
|
+
*/
|
|
37
|
+
flipDisplayImageByAxis(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Rewrite this {resetPaintAreaUIPosition} function under NrrdTools
|
|
40
|
+
*/
|
|
41
|
+
resetPaintAreaUIPosition(l?: number, t?: number): void;
|
|
42
|
+
/**
|
|
43
|
+
* Rewrite this {resetPaintAreaUIPosition} function under NrrdTools
|
|
44
|
+
*/
|
|
45
|
+
setEmptyCanvasSize(axis?: "x" | "y" | "z"): void;
|
|
46
|
+
/**
|
|
47
|
+
* Rewrite this {convertCursorPoint} function under NrrdTools
|
|
48
|
+
*/
|
|
49
|
+
convertCursorPoint(from: "x" | "y" | "z", to: "x" | "y" | "z", cursorNumX: number, cursorNumY: number, currentSliceIndex: number): IConvertObjType | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Rewrite this {resetLayerCanvas} function under NrrdTools
|
|
52
|
+
*/
|
|
53
|
+
resetLayerCanvas(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Rewrite this {setSyncsliceNum} function under NrrdTools
|
|
56
|
+
*/
|
|
57
|
+
setSyncsliceNum(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Rewrite this {redrawDisplayCanvas} function under NrrdTools
|
|
60
|
+
*/
|
|
61
|
+
redrawDisplayCanvas(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Get a painted mask image (IPaintImage) based on current axis and input slice index.
|
|
64
|
+
*
|
|
65
|
+
* @param axis "x" | "y" | "z"
|
|
66
|
+
* @param sliceIndex number
|
|
67
|
+
* @param paintedImages IPaintImages, All painted mask images.
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
filterDrawedImage(axis: "x" | "y" | "z", sliceIndex: number, paintedImages: IPaintImages): import("./coreTools/coreType").IPaintImage;
|
|
71
|
+
}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { switchPencilIcon } from "../utils";
|
|
2
|
+
import { enableDownload } from "./coreTools/divControlTools";
|
|
3
|
+
export class CommToolsData {
|
|
4
|
+
constructor(container, mainAreaContainer) {
|
|
5
|
+
this.baseCanvasesSize = 1;
|
|
6
|
+
this.nrrd_states = {
|
|
7
|
+
originWidth: 0,
|
|
8
|
+
originHeight: 0,
|
|
9
|
+
nrrd_x_mm: 0,
|
|
10
|
+
nrrd_y_mm: 0,
|
|
11
|
+
nrrd_z_mm: 0,
|
|
12
|
+
nrrd_x_pixel: 0,
|
|
13
|
+
nrrd_y_pixel: 0,
|
|
14
|
+
nrrd_z_pixel: 0,
|
|
15
|
+
changedWidth: 0,
|
|
16
|
+
changedHeight: 0,
|
|
17
|
+
oldIndex: 0,
|
|
18
|
+
currentIndex: 0,
|
|
19
|
+
maxIndex: 0,
|
|
20
|
+
minIndex: 0,
|
|
21
|
+
RSARatio: 0,
|
|
22
|
+
voxelSpacing: [],
|
|
23
|
+
spaceOrigin: [],
|
|
24
|
+
dimensions: [],
|
|
25
|
+
loadMaskJson: false,
|
|
26
|
+
ratios: { x: 1, y: 1, z: 1 },
|
|
27
|
+
sharedPlace: { x: [-1], y: [-1], z: [-1] },
|
|
28
|
+
contrastNum: 0,
|
|
29
|
+
showContrast: false,
|
|
30
|
+
enableCursorChoose: false,
|
|
31
|
+
isCursorSelect: false,
|
|
32
|
+
cursorPageX: 0,
|
|
33
|
+
cursorPageY: 0,
|
|
34
|
+
sphereOrigin: { x: [0, 0, 0], y: [0, 0, 0], z: [0, 0, 0] },
|
|
35
|
+
spherePlanB: true,
|
|
36
|
+
sphereRadius: 10,
|
|
37
|
+
Mouse_Over_x: 0,
|
|
38
|
+
Mouse_Over_y: 0,
|
|
39
|
+
Mouse_Over: false,
|
|
40
|
+
stepClear: 1,
|
|
41
|
+
sizeFoctor: this.baseCanvasesSize,
|
|
42
|
+
clearAllFlag: false,
|
|
43
|
+
previousPanelL: -99999,
|
|
44
|
+
previousPanelT: -99999,
|
|
45
|
+
switchSliceFlag: false,
|
|
46
|
+
labels: ["label1", "label2", "label3"],
|
|
47
|
+
getMask: (mask, sliceId, label, width, height, clearAllFlag) => { },
|
|
48
|
+
getSphere: (sphereOrigin, sphereRadius) => { },
|
|
49
|
+
drawStartPos: { x: 1, y: 1 },
|
|
50
|
+
};
|
|
51
|
+
this.cursorPage = {
|
|
52
|
+
x: {
|
|
53
|
+
cursorPageX: 0,
|
|
54
|
+
cursorPageY: 0,
|
|
55
|
+
index: 0,
|
|
56
|
+
updated: false,
|
|
57
|
+
},
|
|
58
|
+
y: {
|
|
59
|
+
cursorPageX: 0,
|
|
60
|
+
cursorPageY: 0,
|
|
61
|
+
index: 0,
|
|
62
|
+
updated: false,
|
|
63
|
+
},
|
|
64
|
+
z: {
|
|
65
|
+
cursorPageX: 0,
|
|
66
|
+
cursorPageY: 0,
|
|
67
|
+
index: 0,
|
|
68
|
+
updated: false,
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
this.gui_states = {
|
|
72
|
+
mainAreaSize: 3,
|
|
73
|
+
dragSensitivity: 75,
|
|
74
|
+
Eraser: false,
|
|
75
|
+
globalAlpha: 0.7,
|
|
76
|
+
lineWidth: 2,
|
|
77
|
+
color: "#f50a33",
|
|
78
|
+
segmentation: true,
|
|
79
|
+
fillColor: "#00ff00",
|
|
80
|
+
brushColor: "#00ff00",
|
|
81
|
+
brushAndEraserSize: 15,
|
|
82
|
+
cursor: "dot",
|
|
83
|
+
label: "label1",
|
|
84
|
+
sphere: false,
|
|
85
|
+
readyToUpdate: true,
|
|
86
|
+
defaultPaintCursor: switchPencilIcon("dot"),
|
|
87
|
+
max_sensitive: 100,
|
|
88
|
+
// EraserSize: 25,
|
|
89
|
+
clear: () => {
|
|
90
|
+
this.clearPaint();
|
|
91
|
+
},
|
|
92
|
+
clearAll: () => {
|
|
93
|
+
const text = "Are you sure remove annotations on All slice?";
|
|
94
|
+
if (confirm(text) === true) {
|
|
95
|
+
this.nrrd_states.clearAllFlag = true;
|
|
96
|
+
this.clearPaint();
|
|
97
|
+
this.clearStoreImages();
|
|
98
|
+
}
|
|
99
|
+
this.nrrd_states.clearAllFlag = false;
|
|
100
|
+
},
|
|
101
|
+
undo: () => {
|
|
102
|
+
this.undoLastPainting();
|
|
103
|
+
},
|
|
104
|
+
downloadCurrentMask: () => {
|
|
105
|
+
const config = {
|
|
106
|
+
axis: this.protectedData.axis,
|
|
107
|
+
currentIndex: this.nrrd_states.currentIndex,
|
|
108
|
+
drawingCanvas: this.protectedData.canvases.drawingCanvas,
|
|
109
|
+
originWidth: this.nrrd_states.originWidth,
|
|
110
|
+
originHeight: this.nrrd_states.originHeight,
|
|
111
|
+
};
|
|
112
|
+
enableDownload(config);
|
|
113
|
+
},
|
|
114
|
+
resetZoom: () => {
|
|
115
|
+
this.nrrd_states.sizeFoctor = this.baseCanvasesSize;
|
|
116
|
+
this.gui_states.mainAreaSize = this.baseCanvasesSize;
|
|
117
|
+
this.resizePaintArea(this.nrrd_states.sizeFoctor);
|
|
118
|
+
this.resetPaintAreaUIPosition();
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
const canvases = this.generateCanvases();
|
|
122
|
+
this.protectedData = {
|
|
123
|
+
container,
|
|
124
|
+
mainAreaContainer,
|
|
125
|
+
allSlicesArray: [],
|
|
126
|
+
displaySlices: [],
|
|
127
|
+
backUpDisplaySlices: [],
|
|
128
|
+
skipSlicesDic: {},
|
|
129
|
+
currentShowingSlice: undefined,
|
|
130
|
+
mainPreSlices: undefined,
|
|
131
|
+
Is_Shift_Pressed: false,
|
|
132
|
+
Is_Draw: false,
|
|
133
|
+
axis: "z",
|
|
134
|
+
maskData: {
|
|
135
|
+
// used to store one label all marks
|
|
136
|
+
paintImagesLabel1: { x: [], y: [], z: [] },
|
|
137
|
+
paintImagesLabel2: { x: [], y: [], z: [] },
|
|
138
|
+
paintImagesLabel3: { x: [], y: [], z: [] },
|
|
139
|
+
// used to store display marks with multiple labels
|
|
140
|
+
paintImages: { x: [], y: [], z: [] },
|
|
141
|
+
},
|
|
142
|
+
canvases: {
|
|
143
|
+
originCanvas: null,
|
|
144
|
+
drawingCanvas: canvases[0],
|
|
145
|
+
displayCanvas: canvases[1],
|
|
146
|
+
drawingCanvasLayerMaster: canvases[2],
|
|
147
|
+
drawingCanvasLayerOne: canvases[3],
|
|
148
|
+
drawingCanvasLayerTwo: canvases[4],
|
|
149
|
+
drawingCanvasLayerThree: canvases[5],
|
|
150
|
+
drawingSphereCanvas: canvases[6],
|
|
151
|
+
emptyCanvas: canvases[7],
|
|
152
|
+
},
|
|
153
|
+
ctxes: {
|
|
154
|
+
drawingCtx: canvases[0].getContext("2d"),
|
|
155
|
+
displayCtx: canvases[1].getContext("2d"),
|
|
156
|
+
drawingLayerMasterCtx: canvases[2].getContext("2d"),
|
|
157
|
+
drawingLayerOneCtx: canvases[3].getContext("2d"),
|
|
158
|
+
drawingLayerTwoCtx: canvases[4].getContext("2d"),
|
|
159
|
+
drawingLayerThreeCtx: canvases[5].getContext("2d"),
|
|
160
|
+
drawingSphereCtx: canvases[6].getContext("2d"),
|
|
161
|
+
emptyCtx: canvases[7].getContext("2d", {
|
|
162
|
+
willReadFrequently: true,
|
|
163
|
+
}),
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
generateCanvases() {
|
|
168
|
+
const canvasArr = [];
|
|
169
|
+
for (let i = 0; i < 8; i++) {
|
|
170
|
+
const canvas = document.createElement("canvas");
|
|
171
|
+
canvasArr.push(canvas);
|
|
172
|
+
}
|
|
173
|
+
return canvasArr;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Rewrite this {clearPaint} function under DrawToolCore
|
|
177
|
+
*/
|
|
178
|
+
clearPaint() {
|
|
179
|
+
throw new Error("Child class must implement abstract clearPaint, currently you can find it in DrawToolCore.");
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Rewrite this {undoLastPainting} function under DrawToolCore
|
|
183
|
+
*/
|
|
184
|
+
undoLastPainting() {
|
|
185
|
+
throw new Error("Child class must implement abstract undoLastPainting, currently you can find it in DrawToolCore.");
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Rewrite this {clearStoreImages} function under NrrdTools
|
|
189
|
+
*/
|
|
190
|
+
clearStoreImages() {
|
|
191
|
+
throw new Error("Child class must implement abstract clearStoreImages, currently you can find it in NrrdTools.");
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Rewrite this {resizePaintArea} function under NrrdTools
|
|
195
|
+
*/
|
|
196
|
+
resizePaintArea(factor) {
|
|
197
|
+
throw new Error("Child class must implement abstract resizePaintArea, currently you can find it in NrrdTools.");
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Rewrite this {setIsDrawFalse} function under NrrdTools
|
|
201
|
+
*/
|
|
202
|
+
setIsDrawFalse(target) {
|
|
203
|
+
throw new Error("Child class must implement abstract setIsDrawFalse, currently you can find it in NrrdTools.");
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Rewrite this {updateOriginAndChangedWH} function under NrrdTools
|
|
207
|
+
*/
|
|
208
|
+
updateOriginAndChangedWH() {
|
|
209
|
+
throw new Error("Child class must implement abstract updateOriginAndChangedWH, currently you can find it in NrrdTools.");
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Rewrite this {flipDisplayImageByAxis} function under NrrdTools
|
|
213
|
+
*/
|
|
214
|
+
flipDisplayImageByAxis() {
|
|
215
|
+
throw new Error("Child class must implement abstract flipDisplayImageByAxis, currently you can find it in NrrdTools.");
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Rewrite this {resetPaintAreaUIPosition} function under NrrdTools
|
|
219
|
+
*/
|
|
220
|
+
resetPaintAreaUIPosition(l, t) {
|
|
221
|
+
throw new Error("Child class must implement abstract resetPaintAreaUIPosition, currently you can find it in NrrdTools.");
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Rewrite this {resetPaintAreaUIPosition} function under NrrdTools
|
|
225
|
+
*/
|
|
226
|
+
setEmptyCanvasSize(axis) {
|
|
227
|
+
throw new Error("Child class must implement abstract setEmptyCanvasSize, currently you can find it in NrrdTools.");
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Rewrite this {convertCursorPoint} function under NrrdTools
|
|
231
|
+
*/
|
|
232
|
+
convertCursorPoint(from, to, cursorNumX, cursorNumY, currentSliceIndex) {
|
|
233
|
+
throw new Error("Child class must implement abstract convertCursorPoint, currently you can find it in NrrdTools.");
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Rewrite this {resetLayerCanvas} function under NrrdTools
|
|
237
|
+
*/
|
|
238
|
+
resetLayerCanvas() {
|
|
239
|
+
throw new Error("Child class must implement abstract resetLayerCanvas, currently you can find it in NrrdTools.");
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Rewrite this {setSyncsliceNum} function under NrrdTools
|
|
243
|
+
*/
|
|
244
|
+
setSyncsliceNum() {
|
|
245
|
+
throw new Error("Child class must implement abstract setSyncsliceNum, currently you can find it in NrrdTools.");
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Rewrite this {redrawDisplayCanvas} function under NrrdTools
|
|
249
|
+
*/
|
|
250
|
+
redrawDisplayCanvas() {
|
|
251
|
+
throw new Error("Child class must implement abstract redrawDisplayCanvas, currently you can find it in NrrdTools.");
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get a painted mask image (IPaintImage) based on current axis and input slice index.
|
|
255
|
+
*
|
|
256
|
+
* @param axis "x" | "y" | "z"
|
|
257
|
+
* @param sliceIndex number
|
|
258
|
+
* @param paintedImages IPaintImages, All painted mask images.
|
|
259
|
+
* @returns
|
|
260
|
+
*/
|
|
261
|
+
filterDrawedImage(axis, sliceIndex, paintedImages) {
|
|
262
|
+
return paintedImages[axis].filter((item) => {
|
|
263
|
+
return item.index === sliceIndex;
|
|
264
|
+
})[0];
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=CommToolsData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommToolsData.js","sourceRoot":"","sources":["../../../src/Utils/segmentation/CommToolsData.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IDragOpts, IDrawingEvents, IProtected, IGUIStates, INrrdStates, IPaintImage, IPaintImages } from "./coreTools/coreType";
|
|
2
|
+
export declare class DragOperator {
|
|
3
|
+
container: HTMLElement;
|
|
4
|
+
private dragPrameters;
|
|
5
|
+
private drawingPrameters;
|
|
6
|
+
private sensitiveArray;
|
|
7
|
+
private showDragNumberDiv;
|
|
8
|
+
private nrrd_states;
|
|
9
|
+
private gui_states;
|
|
10
|
+
private protectedData;
|
|
11
|
+
private dragEffectCanvases;
|
|
12
|
+
private setSyncsliceNum;
|
|
13
|
+
private setIsDrawFalse;
|
|
14
|
+
private flipDisplayImageByAxis;
|
|
15
|
+
private setEmptyCanvasSize;
|
|
16
|
+
private filterDrawedImage;
|
|
17
|
+
constructor(container: HTMLElement, nrrd_sates: INrrdStates, gui_states: IGUIStates, protectedData: IProtected, drawingPrameters: IDrawingEvents, setSyncsliceNum: () => void, setIsDrawFalse: (target: number) => void, flipDisplayImageByAxis: () => void, setEmptyCanvasSize: (axis?: "x" | "y" | "z") => void, filterDrawedImage: (axis: "x" | "y" | "z", sliceIndex: number, paintedImages: IPaintImages) => IPaintImage);
|
|
18
|
+
private init;
|
|
19
|
+
setShowDragNumberDiv(sliceIndexContainer: HTMLDivElement): void;
|
|
20
|
+
drag(opts?: IDragOpts): void;
|
|
21
|
+
updateIndex(move: number): void;
|
|
22
|
+
private drawDragSlice;
|
|
23
|
+
private drawMaskToLabelCtx;
|
|
24
|
+
private cleanCanvases;
|
|
25
|
+
updateShowNumDiv(contrastNum: number): void;
|
|
26
|
+
updateCurrentContrastSlice(): any;
|
|
27
|
+
configDragMode: () => void;
|
|
28
|
+
removeDragMode: () => void;
|
|
29
|
+
updateMainSlice(mainPreSlices: any): void;
|
|
30
|
+
}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { throttle } from "../utils";
|
|
2
|
+
import { createShowSliceNumberDiv } from "./coreTools/divControlTools";
|
|
3
|
+
export class DragOperator {
|
|
4
|
+
constructor(container, nrrd_sates, gui_states, protectedData, drawingPrameters, setSyncsliceNum, setIsDrawFalse, flipDisplayImageByAxis, setEmptyCanvasSize, filterDrawedImage) {
|
|
5
|
+
this.dragPrameters = {
|
|
6
|
+
move: 0,
|
|
7
|
+
y: 0,
|
|
8
|
+
h: 0,
|
|
9
|
+
sensivity: 1,
|
|
10
|
+
handleOnDragMouseUp: (ev) => { },
|
|
11
|
+
handleOnDragMouseDown: (ev) => { },
|
|
12
|
+
handleOnDragMouseMove: (ev) => { },
|
|
13
|
+
};
|
|
14
|
+
this.sensitiveArray = [];
|
|
15
|
+
this.configDragMode = () => {
|
|
16
|
+
this.container.style.cursor = "pointer";
|
|
17
|
+
this.container.addEventListener("pointerdown", this.dragPrameters.handleOnDragMouseDown, true);
|
|
18
|
+
this.container.addEventListener("pointerup", this.dragPrameters.handleOnDragMouseUp, true);
|
|
19
|
+
};
|
|
20
|
+
this.removeDragMode = () => {
|
|
21
|
+
this.container.style.cursor = "";
|
|
22
|
+
this.container.removeEventListener("pointerdown", this.dragPrameters.handleOnDragMouseDown, true);
|
|
23
|
+
this.container.removeEventListener("pointerup", this.dragPrameters.handleOnDragMouseUp, true);
|
|
24
|
+
this.setIsDrawFalse(1000);
|
|
25
|
+
};
|
|
26
|
+
this.container = container;
|
|
27
|
+
this.drawingPrameters = drawingPrameters;
|
|
28
|
+
this.nrrd_states = nrrd_sates;
|
|
29
|
+
this.gui_states = gui_states;
|
|
30
|
+
this.protectedData = protectedData;
|
|
31
|
+
this.setSyncsliceNum = setSyncsliceNum;
|
|
32
|
+
this.setIsDrawFalse = setIsDrawFalse;
|
|
33
|
+
this.flipDisplayImageByAxis = flipDisplayImageByAxis;
|
|
34
|
+
this.setEmptyCanvasSize = setEmptyCanvasSize;
|
|
35
|
+
this.filterDrawedImage = filterDrawedImage;
|
|
36
|
+
this.showDragNumberDiv = createShowSliceNumberDiv();
|
|
37
|
+
this.init();
|
|
38
|
+
}
|
|
39
|
+
init() {
|
|
40
|
+
for (let i = 0; i < this.gui_states.max_sensitive; i++) {
|
|
41
|
+
this.sensitiveArray.push((i + 1) / 20);
|
|
42
|
+
}
|
|
43
|
+
this.dragEffectCanvases = {
|
|
44
|
+
drawingCanvasLayerMaster: this.protectedData.canvases.drawingCanvasLayerMaster,
|
|
45
|
+
drawingCanvasLayerOne: this.protectedData.canvases.drawingCanvasLayerOne,
|
|
46
|
+
drawingCanvasLayerTwo: this.protectedData.canvases.drawingCanvasLayerTwo,
|
|
47
|
+
drawingCanvasLayerThree: this.protectedData.canvases.drawingCanvasLayerThree,
|
|
48
|
+
displayCanvas: this.protectedData.canvases.displayCanvas,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
setShowDragNumberDiv(sliceIndexContainer) {
|
|
52
|
+
this.showDragNumberDiv = sliceIndexContainer;
|
|
53
|
+
}
|
|
54
|
+
drag(opts) {
|
|
55
|
+
this.dragPrameters.h = this.container.offsetHeight;
|
|
56
|
+
this.sensitiveArray.reverse();
|
|
57
|
+
if (opts === null || opts === void 0 ? void 0 : opts.showNumber) {
|
|
58
|
+
this.container.appendChild(this.showDragNumberDiv);
|
|
59
|
+
}
|
|
60
|
+
this.dragPrameters.handleOnDragMouseDown = (ev) => {
|
|
61
|
+
// before start drag event, remove wheel event.
|
|
62
|
+
this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
|
|
63
|
+
if (ev.button === 0) {
|
|
64
|
+
this.dragPrameters.y = ev.offsetY / this.dragPrameters.h;
|
|
65
|
+
this.container.addEventListener("pointermove", this.dragPrameters.handleOnDragMouseMove, false);
|
|
66
|
+
this.dragPrameters.sensivity =
|
|
67
|
+
this.sensitiveArray[this.gui_states.dragSensitivity - 1];
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
this.dragPrameters.handleOnDragMouseMove = throttle((ev) => {
|
|
71
|
+
if (this.dragPrameters.y - ev.offsetY / this.dragPrameters.h >= 0) {
|
|
72
|
+
this.dragPrameters.move = -Math.ceil(((this.dragPrameters.y - ev.offsetY / this.dragPrameters.h) * 10) /
|
|
73
|
+
this.dragPrameters.sensivity);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.dragPrameters.move = -Math.floor(((this.dragPrameters.y - ev.offsetY / this.dragPrameters.h) * 10) /
|
|
77
|
+
this.dragPrameters.sensivity);
|
|
78
|
+
}
|
|
79
|
+
this.updateIndex(this.dragPrameters.move);
|
|
80
|
+
(opts === null || opts === void 0 ? void 0 : opts.getSliceNum) &&
|
|
81
|
+
opts.getSliceNum(this.nrrd_states.currentIndex, this.nrrd_states.contrastNum);
|
|
82
|
+
this.dragPrameters.y = ev.offsetY / this.dragPrameters.h;
|
|
83
|
+
}, this.dragPrameters.sensivity * 200);
|
|
84
|
+
this.dragPrameters.handleOnDragMouseUp = (ev) => {
|
|
85
|
+
// after drag, add the wheel event
|
|
86
|
+
this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
|
|
87
|
+
this.setSyncsliceNum();
|
|
88
|
+
this.container.removeEventListener("pointermove", this.dragPrameters.handleOnDragMouseMove, false);
|
|
89
|
+
};
|
|
90
|
+
this.configDragMode();
|
|
91
|
+
this.container.addEventListener("keydown", (ev) => {
|
|
92
|
+
if (ev.key === "Shift") {
|
|
93
|
+
this.removeDragMode();
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
this.container.addEventListener("keyup", (ev) => {
|
|
97
|
+
if (ev.key === "Shift" && !this.gui_states.sphere) {
|
|
98
|
+
this.configDragMode();
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
updateIndex(move) {
|
|
103
|
+
let sliceModifyNum = 0;
|
|
104
|
+
let contrastModifyNum = 0;
|
|
105
|
+
if (this.nrrd_states.showContrast) {
|
|
106
|
+
contrastModifyNum = move % this.protectedData.displaySlices.length;
|
|
107
|
+
this.nrrd_states.contrastNum += contrastModifyNum;
|
|
108
|
+
if (move > 0) {
|
|
109
|
+
// move forward
|
|
110
|
+
if (this.nrrd_states.currentIndex <= this.nrrd_states.maxIndex) {
|
|
111
|
+
sliceModifyNum = Math.floor(move / this.protectedData.displaySlices.length);
|
|
112
|
+
if (this.nrrd_states.contrastNum >
|
|
113
|
+
this.protectedData.displaySlices.length - 1) {
|
|
114
|
+
sliceModifyNum += 1;
|
|
115
|
+
this.nrrd_states.contrastNum -=
|
|
116
|
+
this.protectedData.displaySlices.length;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
sliceModifyNum = 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// move back
|
|
125
|
+
sliceModifyNum = Math.ceil(move / this.protectedData.displaySlices.length);
|
|
126
|
+
if (this.nrrd_states.contrastNum < 0) {
|
|
127
|
+
this.nrrd_states.contrastNum +=
|
|
128
|
+
this.protectedData.displaySlices.length;
|
|
129
|
+
sliceModifyNum -= 1;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
sliceModifyNum = move;
|
|
135
|
+
}
|
|
136
|
+
// let newIndex = this.nrrd_states.oldIndex + sliceModifyNum;
|
|
137
|
+
let newIndex = this.nrrd_states.currentIndex + sliceModifyNum;
|
|
138
|
+
if (newIndex != this.nrrd_states.currentIndex ||
|
|
139
|
+
this.nrrd_states.showContrast) {
|
|
140
|
+
if (newIndex > this.nrrd_states.maxIndex) {
|
|
141
|
+
newIndex = this.nrrd_states.maxIndex;
|
|
142
|
+
this.nrrd_states.contrastNum =
|
|
143
|
+
this.protectedData.displaySlices.length - 1;
|
|
144
|
+
}
|
|
145
|
+
else if (newIndex < this.nrrd_states.minIndex) {
|
|
146
|
+
newIndex = this.nrrd_states.minIndex;
|
|
147
|
+
this.nrrd_states.contrastNum = 0;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.protectedData.mainPreSlices.index =
|
|
151
|
+
newIndex * this.nrrd_states.RSARatio;
|
|
152
|
+
// clear drawing canvas, and display next slicez
|
|
153
|
+
this.setSyncsliceNum();
|
|
154
|
+
let isSameIndex = true;
|
|
155
|
+
if (newIndex != this.nrrd_states.currentIndex) {
|
|
156
|
+
this.nrrd_states.switchSliceFlag = true;
|
|
157
|
+
isSameIndex = false;
|
|
158
|
+
}
|
|
159
|
+
this.cleanCanvases(isSameIndex);
|
|
160
|
+
if (this.nrrd_states.changedWidth === 0) {
|
|
161
|
+
this.nrrd_states.changedWidth = this.nrrd_states.originWidth;
|
|
162
|
+
this.nrrd_states.changedHeight = this.nrrd_states.originHeight;
|
|
163
|
+
}
|
|
164
|
+
// get the slice that need to be updated on displayCanvas
|
|
165
|
+
let needToUpdateSlice = this.updateCurrentContrastSlice();
|
|
166
|
+
needToUpdateSlice.repaint.call(needToUpdateSlice);
|
|
167
|
+
this.nrrd_states.currentIndex = newIndex;
|
|
168
|
+
this.drawDragSlice(needToUpdateSlice.canvas);
|
|
169
|
+
}
|
|
170
|
+
this.nrrd_states.oldIndex = newIndex * this.nrrd_states.RSARatio;
|
|
171
|
+
this.updateShowNumDiv(this.nrrd_states.contrastNum);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
drawDragSlice(canvas) {
|
|
175
|
+
this.protectedData.ctxes.displayCtx.save();
|
|
176
|
+
// flip images
|
|
177
|
+
this.flipDisplayImageByAxis();
|
|
178
|
+
this.protectedData.ctxes.displayCtx.drawImage(canvas, 0, 0, this.nrrd_states.changedWidth, this.nrrd_states.changedHeight);
|
|
179
|
+
this.protectedData.ctxes.displayCtx.restore();
|
|
180
|
+
if (this.protectedData.maskData.paintImages.x.length > 0 ||
|
|
181
|
+
this.protectedData.maskData.paintImages.y.length > 0 ||
|
|
182
|
+
this.protectedData.maskData.paintImages.z.length > 0) {
|
|
183
|
+
if (this.nrrd_states.switchSliceFlag) {
|
|
184
|
+
// 0929
|
|
185
|
+
// this.paintedImage = this.filterDrawedImage(
|
|
186
|
+
// this.protectedData.axis,
|
|
187
|
+
// this.nrrd_states.currentIndex,
|
|
188
|
+
// this.protectedData.maskData.paintImages
|
|
189
|
+
// );
|
|
190
|
+
this.drawMaskToLabelCtx(this.protectedData.maskData.paintImages, this.protectedData.ctxes.drawingLayerMasterCtx);
|
|
191
|
+
this.drawMaskToLabelCtx(this.protectedData.maskData.paintImagesLabel1, this.protectedData.ctxes.drawingLayerOneCtx);
|
|
192
|
+
this.drawMaskToLabelCtx(this.protectedData.maskData.paintImagesLabel2, this.protectedData.ctxes.drawingLayerTwoCtx);
|
|
193
|
+
this.drawMaskToLabelCtx(this.protectedData.maskData.paintImagesLabel3, this.protectedData.ctxes.drawingLayerThreeCtx);
|
|
194
|
+
this.nrrd_states.switchSliceFlag = false;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
drawMaskToLabelCtx(paintedImages, ctx) {
|
|
199
|
+
const paintedImage = this.filterDrawedImage(this.protectedData.axis, this.nrrd_states.currentIndex, paintedImages);
|
|
200
|
+
if (paintedImage === null || paintedImage === void 0 ? void 0 : paintedImage.image) {
|
|
201
|
+
// redraw the stored data to empty point 2
|
|
202
|
+
this.setEmptyCanvasSize();
|
|
203
|
+
this.protectedData.ctxes.emptyCtx.putImageData(paintedImage.image, 0, 0);
|
|
204
|
+
ctx.drawImage(this.protectedData.canvases.emptyCanvas, 0, 0, this.nrrd_states.changedWidth, this.nrrd_states.changedHeight);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
cleanCanvases(flag) {
|
|
208
|
+
for (const name in this.dragEffectCanvases) {
|
|
209
|
+
if (flag) {
|
|
210
|
+
if (name === "displayCanvas") {
|
|
211
|
+
this.dragEffectCanvases.displayCanvas.width =
|
|
212
|
+
this.dragEffectCanvases.displayCanvas.width;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
this.dragEffectCanvases[name].width =
|
|
217
|
+
this.dragEffectCanvases[name].width;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
updateShowNumDiv(contrastNum) {
|
|
222
|
+
if (this.protectedData.mainPreSlices) {
|
|
223
|
+
if (this.nrrd_states.currentIndex > this.nrrd_states.maxIndex) {
|
|
224
|
+
this.nrrd_states.currentIndex = this.nrrd_states.maxIndex;
|
|
225
|
+
}
|
|
226
|
+
if (this.nrrd_states.showContrast) {
|
|
227
|
+
this.showDragNumberDiv.innerHTML = `ContrastNum: ${contrastNum}/${this.protectedData.displaySlices.length - 1} SliceNum: ${this.nrrd_states.currentIndex}/${this.nrrd_states.maxIndex}`;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
this.showDragNumberDiv.innerHTML = `SliceNum: ${this.nrrd_states.currentIndex}/${this.nrrd_states.maxIndex}`;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
updateCurrentContrastSlice() {
|
|
235
|
+
this.protectedData.currentShowingSlice =
|
|
236
|
+
this.protectedData.displaySlices[this.nrrd_states.contrastNum];
|
|
237
|
+
return this.protectedData.currentShowingSlice;
|
|
238
|
+
}
|
|
239
|
+
updateMainSlice(mainPreSlices) {
|
|
240
|
+
this.protectedData.mainPreSlices = mainPreSlices;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=DragOperator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DragOperator.js","sourceRoot":"","sources":["../../../src/Utils/segmentation/DragOperator.ts"],"names":[],"mappings":"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"}
|