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.
@@ -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
  };
@@ -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
- // defaultPaintCursor:
97
- // "url(https://raw.githubusercontent.com/LinkunGao/copper3d_icons/main/icons/pencil-black.svg), auto",
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("Default Actions");
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("opacity")
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("Image contrast")
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
- actionsFolder.add(this.gui_states, "exportMarks");
2422
- const advanceFolder = modeFolder.addFolder("Advance settings");
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("Pencil settings");
2426
+ const segmentationFolder = advanceFolder.addFolder("PencilSettings");
2429
2427
  segmentationFolder
2430
2428
  .add(this.gui_states, "lineWidth")
2431
- .name("outerLineWidth")
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("Brush settings");
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.add(this.gui_states, "downloadCurrentMask");
2441
- const contrastFolder = advanceFolder.addFolder("contrast advance settings");
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("Lower Threshold")
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("Upper Threshold")
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("Window Low")
2468
+ .name("WindowLow")
2467
2469
  .onChange((value) => {
2468
2470
  this.nrrd_states.readyToUpdate = false;
2469
2471
  this.updateSlicesContrast(value, "windowLow");