copper3d 1.15.20 → 1.15.22
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/nrrd_tool.d.ts +3 -0
- package/dist/Utils/nrrd_tool.js +70 -68
- package/dist/Utils/nrrd_tool.js.map +1 -1
- package/dist/Utils/utils.d.ts +1 -0
- package/dist/Utils/utils.js +39 -0
- package/dist/Utils/utils.js.map +1 -1
- package/dist/bundle.esm.js +110 -69
- package/dist/bundle.umd.js +110 -69
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/types/Utils/nrrd_tool.d.ts +3 -0
- package/dist/types/Utils/utils.d.ts +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types/types.d.ts +1 -0
- package/dist/types/types.d.ts +1 -0
- package/package.json +1 -1
|
@@ -49,6 +49,7 @@ export declare class nrrd_tools {
|
|
|
49
49
|
private initState;
|
|
50
50
|
private preTimer;
|
|
51
51
|
private eraserUrls;
|
|
52
|
+
private pencilUrls;
|
|
52
53
|
private nrrd_states;
|
|
53
54
|
private cursorPage;
|
|
54
55
|
private gui_states;
|
|
@@ -74,6 +75,7 @@ export declare class nrrd_tools {
|
|
|
74
75
|
private loadingMaskByLabel;
|
|
75
76
|
setMasksData(masksData: storeExportPaintImageType, loadingBar?: loadingBarType): void;
|
|
76
77
|
setEraserUrls(urls: string[]): void;
|
|
78
|
+
setPencilIconUrls(urls: string[]): void;
|
|
77
79
|
getCurrentImageDimension(): never[];
|
|
78
80
|
getVoxelSpacing(): never[];
|
|
79
81
|
getSpaceOrigin(): never[];
|
|
@@ -155,6 +157,7 @@ export declare class nrrd_tools {
|
|
|
155
157
|
switchSliceFlag: boolean;
|
|
156
158
|
labels: string[];
|
|
157
159
|
getMask: (mask: ImageData, sliceId: number, label: string, width: number, height: number, clearAllFlag: boolean) => void;
|
|
160
|
+
getSphere: (sphereOrigin: number[], sphereRadius: number) => void;
|
|
158
161
|
defaultPaintCursor: string;
|
|
159
162
|
drawStartPos: THREE.Vector2;
|
|
160
163
|
};
|
package/dist/Utils/nrrd_tool.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as THREE from "three";
|
|
2
2
|
import { throttle } from "./utils";
|
|
3
|
-
import { switchEraserSize } from "./utils";
|
|
3
|
+
import { switchEraserSize, switchPencilIcon } from "./utils";
|
|
4
4
|
import { saveFileAsJson } from "./download";
|
|
5
5
|
import { restructData, convertReformatDataToBlob, } from "./workers/reformatSaveDataWorker";
|
|
6
6
|
export class nrrd_tools {
|
|
@@ -47,6 +47,7 @@ export class nrrd_tools {
|
|
|
47
47
|
this.undoArray = [];
|
|
48
48
|
this.initState = true;
|
|
49
49
|
this.eraserUrls = [];
|
|
50
|
+
this.pencilUrls = [];
|
|
50
51
|
this.nrrd_states = {
|
|
51
52
|
originWidth: 0,
|
|
52
53
|
originHeight: 0,
|
|
@@ -93,9 +94,8 @@ export class nrrd_tools {
|
|
|
93
94
|
switchSliceFlag: false,
|
|
94
95
|
labels: ["label1", "label2", "label3"],
|
|
95
96
|
getMask: (mask, sliceId, label, width, height, clearAllFlag) => { },
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
defaultPaintCursor: "url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/dot.svg) 12 12,auto",
|
|
97
|
+
getSphere: (sphereOrigin, sphereRadius) => { },
|
|
98
|
+
defaultPaintCursor: switchPencilIcon("dot"),
|
|
99
99
|
drawStartPos: new THREE.Vector2(1, 1),
|
|
100
100
|
};
|
|
101
101
|
this.cursorPage = {
|
|
@@ -344,6 +344,11 @@ export class nrrd_tools {
|
|
|
344
344
|
setEraserUrls(urls) {
|
|
345
345
|
this.eraserUrls = urls;
|
|
346
346
|
}
|
|
347
|
+
setPencilIconUrls(urls) {
|
|
348
|
+
this.pencilUrls = urls;
|
|
349
|
+
this.nrrd_states.defaultPaintCursor = switchPencilIcon("dot", this.pencilUrls);
|
|
350
|
+
this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
|
|
351
|
+
}
|
|
347
352
|
getCurrentImageDimension() {
|
|
348
353
|
return this.nrrd_states.dimensions;
|
|
349
354
|
}
|
|
@@ -1082,6 +1087,7 @@ export class nrrd_tools {
|
|
|
1082
1087
|
let subViewFolder;
|
|
1083
1088
|
if (!!opts) {
|
|
1084
1089
|
this.nrrd_states.getMask = opts === null || opts === void 0 ? void 0 : opts.getMaskData;
|
|
1090
|
+
this.nrrd_states.getSphere = opts === null || opts === void 0 ? void 0 : opts.getSphereData;
|
|
1085
1091
|
}
|
|
1086
1092
|
this.sceneIn = sceneIn;
|
|
1087
1093
|
sceneIn.controls.enabled = false;
|
|
@@ -1373,6 +1379,7 @@ export class nrrd_tools {
|
|
|
1373
1379
|
this.drawSphereOnEachViews(i, "z");
|
|
1374
1380
|
}
|
|
1375
1381
|
}
|
|
1382
|
+
!!this.nrrd_states.getSphere && this.nrrd_states.getSphere(this.nrrd_states.sphereOrigin.z, this.nrrd_states.sphereRadius);
|
|
1376
1383
|
this.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleSphereWheel, true);
|
|
1377
1384
|
}
|
|
1378
1385
|
}
|
|
@@ -1601,7 +1608,6 @@ export class nrrd_tools {
|
|
|
1601
1608
|
}
|
|
1602
1609
|
// limited the radius max and min
|
|
1603
1610
|
this.nrrd_states.sphereRadius = Math.max(1, Math.min(this.nrrd_states.sphereRadius, 50));
|
|
1604
|
-
console.log(this.nrrd_states.sphereOrigin[this.axis][0], this.nrrd_states.sphereOrigin[this.axis][1]);
|
|
1605
1611
|
// get mouse position
|
|
1606
1612
|
const mouseX = this.nrrd_states.sphereOrigin[this.axis][0];
|
|
1607
1613
|
const mouseY = this.nrrd_states.sphereOrigin[this.axis][1];
|
|
@@ -2299,54 +2305,10 @@ export class nrrd_tools {
|
|
|
2299
2305
|
if (modeFolder.__controllers.length > 0)
|
|
2300
2306
|
this.removeGuiFolderChilden(modeFolder);
|
|
2301
2307
|
modeFolder.open();
|
|
2302
|
-
const actionsFolder = modeFolder.addFolder("
|
|
2303
|
-
actionsFolder
|
|
2304
|
-
.add(this.gui_states, "label", ["label1", "label2", "label3"])
|
|
2305
|
-
.onChange((val) => {
|
|
2306
|
-
if (val === "label1") {
|
|
2307
|
-
this.gui_states.fillColor = "#00ff00";
|
|
2308
|
-
this.gui_states.brushColor = "#00ff00";
|
|
2309
|
-
}
|
|
2310
|
-
else if (val === "label2") {
|
|
2311
|
-
this.gui_states.fillColor = "#ff0000";
|
|
2312
|
-
this.gui_states.brushColor = "#ff0000";
|
|
2313
|
-
}
|
|
2314
|
-
else if (val === "label3") {
|
|
2315
|
-
this.gui_states.fillColor = "#0000ff";
|
|
2316
|
-
this.gui_states.brushColor = "#0000ff";
|
|
2317
|
-
}
|
|
2318
|
-
});
|
|
2319
|
-
actionsFolder
|
|
2320
|
-
.add(this.gui_states, "cursor", ["crosshair", "pencil", "dot"])
|
|
2321
|
-
.name("cursor icons")
|
|
2322
|
-
.onChange((value) => {
|
|
2323
|
-
if (value === "crosshair") {
|
|
2324
|
-
this.nrrd_states.defaultPaintCursor = "crosshair";
|
|
2325
|
-
}
|
|
2326
|
-
if (value === "pencil") {
|
|
2327
|
-
this.nrrd_states.defaultPaintCursor =
|
|
2328
|
-
"url(https://raw.githubusercontent.com/LinkunGao/copper3d_icons/main/icons/pencil-black.svg), auto";
|
|
2329
|
-
}
|
|
2330
|
-
if (value === "dot") {
|
|
2331
|
-
this.nrrd_states.defaultPaintCursor =
|
|
2332
|
-
"url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/dot.svg) 12 12,auto";
|
|
2333
|
-
}
|
|
2334
|
-
this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
|
|
2335
|
-
});
|
|
2336
|
-
actionsFolder
|
|
2337
|
-
.add(this.gui_states, "mainAreaSize")
|
|
2338
|
-
.name("zoom")
|
|
2339
|
-
.min(1)
|
|
2340
|
-
.max(8)
|
|
2341
|
-
.onFinishChange((factor) => {
|
|
2342
|
-
this.resetPaintArea();
|
|
2343
|
-
this.nrrd_states.sizeFoctor = factor;
|
|
2344
|
-
this.resizePaintArea(factor);
|
|
2345
|
-
});
|
|
2346
|
-
actionsFolder.add(this.gui_states, "resetZoom");
|
|
2308
|
+
const actionsFolder = modeFolder.addFolder("DefaultActions");
|
|
2347
2309
|
actionsFolder
|
|
2348
2310
|
.add(this.gui_states, "globalAlpha")
|
|
2349
|
-
.name("
|
|
2311
|
+
.name("Opacity")
|
|
2350
2312
|
.min(0.1)
|
|
2351
2313
|
.max(1)
|
|
2352
2314
|
.step(0.01);
|
|
@@ -2383,6 +2345,7 @@ export class nrrd_tools {
|
|
|
2383
2345
|
});
|
|
2384
2346
|
actionsFolder
|
|
2385
2347
|
.add(this.gui_states, "brushAndEraserSize")
|
|
2348
|
+
.name("BrushAndEraserSize")
|
|
2386
2349
|
.min(5)
|
|
2387
2350
|
.max(50)
|
|
2388
2351
|
.step(1)
|
|
@@ -2404,12 +2367,13 @@ export class nrrd_tools {
|
|
|
2404
2367
|
this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
|
|
2405
2368
|
}
|
|
2406
2369
|
});
|
|
2407
|
-
actionsFolder.add(this.gui_states, "clear");
|
|
2408
|
-
actionsFolder.add(this.gui_states, "clearAll");
|
|
2409
|
-
actionsFolder.add(this.gui_states, "undo");
|
|
2370
|
+
actionsFolder.add(this.gui_states, "clear").name("Clear");
|
|
2371
|
+
actionsFolder.add(this.gui_states, "clearAll").name("ClearAll");
|
|
2372
|
+
actionsFolder.add(this.gui_states, "undo").name("Undo");
|
|
2373
|
+
actionsFolder.add(this.gui_states, "resetZoom").name("ResetZoom");
|
|
2410
2374
|
actionsFolder
|
|
2411
2375
|
.add(this.mainPreSlice.volume, "windowHigh", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
|
|
2412
|
-
.name("
|
|
2376
|
+
.name("ImageContrast")
|
|
2413
2377
|
.onChange((value) => {
|
|
2414
2378
|
this.nrrd_states.readyToUpdate = false;
|
|
2415
2379
|
this.updateSlicesContrast(value, "windowHigh");
|
|
@@ -2418,30 +2382,68 @@ export class nrrd_tools {
|
|
|
2418
2382
|
this.repraintAllContrastSlices();
|
|
2419
2383
|
this.nrrd_states.readyToUpdate = true;
|
|
2420
2384
|
});
|
|
2421
|
-
|
|
2422
|
-
|
|
2385
|
+
const advanceFolder = modeFolder.addFolder("AdvanceSettings");
|
|
2386
|
+
advanceFolder
|
|
2387
|
+
.add(this.gui_states, "label", ["label1", "label2", "label3"])
|
|
2388
|
+
.name("Label")
|
|
2389
|
+
.onChange((val) => {
|
|
2390
|
+
if (val === "label1") {
|
|
2391
|
+
this.gui_states.fillColor = "#00ff00";
|
|
2392
|
+
this.gui_states.brushColor = "#00ff00";
|
|
2393
|
+
}
|
|
2394
|
+
else if (val === "label2") {
|
|
2395
|
+
this.gui_states.fillColor = "#ff0000";
|
|
2396
|
+
this.gui_states.brushColor = "#ff0000";
|
|
2397
|
+
}
|
|
2398
|
+
else if (val === "label3") {
|
|
2399
|
+
this.gui_states.fillColor = "#0000ff";
|
|
2400
|
+
this.gui_states.brushColor = "#0000ff";
|
|
2401
|
+
}
|
|
2402
|
+
});
|
|
2403
|
+
advanceFolder
|
|
2404
|
+
.add(this.gui_states, "cursor", ["crosshair", "pencil", "dot"])
|
|
2405
|
+
.name("CursorIcons")
|
|
2406
|
+
.onChange((value) => {
|
|
2407
|
+
this.nrrd_states.defaultPaintCursor = switchPencilIcon(value, this.pencilUrls);
|
|
2408
|
+
this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
|
|
2409
|
+
});
|
|
2410
|
+
advanceFolder
|
|
2411
|
+
.add(this.gui_states, "mainAreaSize")
|
|
2412
|
+
.name("Zoom")
|
|
2413
|
+
.min(1)
|
|
2414
|
+
.max(8)
|
|
2415
|
+
.onFinishChange((factor) => {
|
|
2416
|
+
this.resetPaintArea();
|
|
2417
|
+
this.nrrd_states.sizeFoctor = factor;
|
|
2418
|
+
this.resizePaintArea(factor);
|
|
2419
|
+
});
|
|
2423
2420
|
advanceFolder
|
|
2424
2421
|
.add(this.gui_states, "dragSensitivity")
|
|
2422
|
+
.name("DragSensitivity")
|
|
2425
2423
|
.min(1)
|
|
2426
2424
|
.max(this.nrrd_states.Max_sensitive)
|
|
2427
2425
|
.step(1);
|
|
2428
|
-
const segmentationFolder = advanceFolder.addFolder("
|
|
2426
|
+
const segmentationFolder = advanceFolder.addFolder("PencilSettings");
|
|
2429
2427
|
segmentationFolder
|
|
2430
2428
|
.add(this.gui_states, "lineWidth")
|
|
2431
|
-
.name("
|
|
2429
|
+
.name("OuterLineWidth")
|
|
2432
2430
|
.min(1.7)
|
|
2433
2431
|
.max(3)
|
|
2434
2432
|
.step(0.01);
|
|
2435
|
-
segmentationFolder.addColor(this.gui_states, "color");
|
|
2436
|
-
segmentationFolder.addColor(this.gui_states, "fillColor");
|
|
2437
|
-
const bushFolder = advanceFolder.addFolder("
|
|
2438
|
-
bushFolder.addColor(this.gui_states, "brushColor");
|
|
2433
|
+
segmentationFolder.addColor(this.gui_states, "color").name("Color");
|
|
2434
|
+
segmentationFolder.addColor(this.gui_states, "fillColor").name("FillColor");
|
|
2435
|
+
const bushFolder = advanceFolder.addFolder("BrushSettings");
|
|
2436
|
+
bushFolder.addColor(this.gui_states, "brushColor").name("BrushColor");
|
|
2439
2437
|
// modeFolder.add(this.stateMode, "EraserSize").min(1).max(50).step(1);
|
|
2440
|
-
advanceFolder.
|
|
2441
|
-
|
|
2438
|
+
const maskFolder = advanceFolder.addFolder("MaskDownload");
|
|
2439
|
+
maskFolder
|
|
2440
|
+
.add(this.gui_states, "downloadCurrentMask")
|
|
2441
|
+
.name("DownloadCurrentMask");
|
|
2442
|
+
maskFolder.add(this.gui_states, "exportMarks").name("ExportMask");
|
|
2443
|
+
const contrastFolder = advanceFolder.addFolder("ContrastAdvanceSettings");
|
|
2442
2444
|
contrastFolder
|
|
2443
2445
|
.add(this.mainPreSlice.volume, "lowerThreshold", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
|
|
2444
|
-
.name("
|
|
2446
|
+
.name("LowerThreshold")
|
|
2445
2447
|
.onChange((value) => {
|
|
2446
2448
|
this.nrrd_states.readyToUpdate = false;
|
|
2447
2449
|
this.updateSlicesContrast(value, "lowerThreshold");
|
|
@@ -2452,7 +2454,7 @@ export class nrrd_tools {
|
|
|
2452
2454
|
});
|
|
2453
2455
|
contrastFolder
|
|
2454
2456
|
.add(this.mainPreSlice.volume, "upperThreshold", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
|
|
2455
|
-
.name("
|
|
2457
|
+
.name("UpperThreshold")
|
|
2456
2458
|
.onChange((value) => {
|
|
2457
2459
|
this.nrrd_states.readyToUpdate = false;
|
|
2458
2460
|
this.updateSlicesContrast(value, "upperThreshold");
|
|
@@ -2463,7 +2465,7 @@ export class nrrd_tools {
|
|
|
2463
2465
|
});
|
|
2464
2466
|
contrastFolder
|
|
2465
2467
|
.add(this.mainPreSlice.volume, "windowLow", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
|
|
2466
|
-
.name("
|
|
2468
|
+
.name("WindowLow")
|
|
2467
2469
|
.onChange((value) => {
|
|
2468
2470
|
this.nrrd_states.readyToUpdate = false;
|
|
2469
2471
|
this.updateSlicesContrast(value, "windowLow");
|