copper3d 1.15.20 → 1.15.21

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[];
@@ -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,7 @@ 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
+ defaultPaintCursor: switchPencilIcon("dot"),
99
98
  drawStartPos: new THREE.Vector2(1, 1),
100
99
  };
101
100
  this.cursorPage = {
@@ -344,6 +343,11 @@ export class nrrd_tools {
344
343
  setEraserUrls(urls) {
345
344
  this.eraserUrls = urls;
346
345
  }
346
+ setPencilIconUrls(urls) {
347
+ this.pencilUrls = urls;
348
+ this.nrrd_states.defaultPaintCursor = switchPencilIcon("dot", this.pencilUrls);
349
+ this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
350
+ }
347
351
  getCurrentImageDimension() {
348
352
  return this.nrrd_states.dimensions;
349
353
  }
@@ -2299,54 +2303,10 @@ export class nrrd_tools {
2299
2303
  if (modeFolder.__controllers.length > 0)
2300
2304
  this.removeGuiFolderChilden(modeFolder);
2301
2305
  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");
2306
+ const actionsFolder = modeFolder.addFolder("DefaultActions");
2347
2307
  actionsFolder
2348
2308
  .add(this.gui_states, "globalAlpha")
2349
- .name("opacity")
2309
+ .name("Opacity")
2350
2310
  .min(0.1)
2351
2311
  .max(1)
2352
2312
  .step(0.01);
@@ -2383,6 +2343,7 @@ export class nrrd_tools {
2383
2343
  });
2384
2344
  actionsFolder
2385
2345
  .add(this.gui_states, "brushAndEraserSize")
2346
+ .name("BrushAndEraserSize")
2386
2347
  .min(5)
2387
2348
  .max(50)
2388
2349
  .step(1)
@@ -2404,12 +2365,13 @@ export class nrrd_tools {
2404
2365
  this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
2405
2366
  }
2406
2367
  });
2407
- actionsFolder.add(this.gui_states, "clear");
2408
- actionsFolder.add(this.gui_states, "clearAll");
2409
- actionsFolder.add(this.gui_states, "undo");
2368
+ actionsFolder.add(this.gui_states, "clear").name("Clear");
2369
+ actionsFolder.add(this.gui_states, "clearAll").name("ClearAll");
2370
+ actionsFolder.add(this.gui_states, "undo").name("Undo");
2371
+ actionsFolder.add(this.gui_states, "resetZoom").name("ResetZoom");
2410
2372
  actionsFolder
2411
2373
  .add(this.mainPreSlice.volume, "windowHigh", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
2412
- .name("Image contrast")
2374
+ .name("ImageContrast")
2413
2375
  .onChange((value) => {
2414
2376
  this.nrrd_states.readyToUpdate = false;
2415
2377
  this.updateSlicesContrast(value, "windowHigh");
@@ -2418,30 +2380,68 @@ export class nrrd_tools {
2418
2380
  this.repraintAllContrastSlices();
2419
2381
  this.nrrd_states.readyToUpdate = true;
2420
2382
  });
2421
- actionsFolder.add(this.gui_states, "exportMarks");
2422
- const advanceFolder = modeFolder.addFolder("Advance settings");
2383
+ const advanceFolder = modeFolder.addFolder("AdvanceSettings");
2384
+ advanceFolder
2385
+ .add(this.gui_states, "label", ["label1", "label2", "label3"])
2386
+ .name("Label")
2387
+ .onChange((val) => {
2388
+ if (val === "label1") {
2389
+ this.gui_states.fillColor = "#00ff00";
2390
+ this.gui_states.brushColor = "#00ff00";
2391
+ }
2392
+ else if (val === "label2") {
2393
+ this.gui_states.fillColor = "#ff0000";
2394
+ this.gui_states.brushColor = "#ff0000";
2395
+ }
2396
+ else if (val === "label3") {
2397
+ this.gui_states.fillColor = "#0000ff";
2398
+ this.gui_states.brushColor = "#0000ff";
2399
+ }
2400
+ });
2401
+ advanceFolder
2402
+ .add(this.gui_states, "cursor", ["crosshair", "pencil", "dot"])
2403
+ .name("CursorIcons")
2404
+ .onChange((value) => {
2405
+ this.nrrd_states.defaultPaintCursor = switchPencilIcon(value, this.pencilUrls);
2406
+ this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
2407
+ });
2408
+ advanceFolder
2409
+ .add(this.gui_states, "mainAreaSize")
2410
+ .name("Zoom")
2411
+ .min(1)
2412
+ .max(8)
2413
+ .onFinishChange((factor) => {
2414
+ this.resetPaintArea();
2415
+ this.nrrd_states.sizeFoctor = factor;
2416
+ this.resizePaintArea(factor);
2417
+ });
2423
2418
  advanceFolder
2424
2419
  .add(this.gui_states, "dragSensitivity")
2420
+ .name("DragSensitivity")
2425
2421
  .min(1)
2426
2422
  .max(this.nrrd_states.Max_sensitive)
2427
2423
  .step(1);
2428
- const segmentationFolder = advanceFolder.addFolder("Pencil settings");
2424
+ const segmentationFolder = advanceFolder.addFolder("PencilSettings");
2429
2425
  segmentationFolder
2430
2426
  .add(this.gui_states, "lineWidth")
2431
- .name("outerLineWidth")
2427
+ .name("OuterLineWidth")
2432
2428
  .min(1.7)
2433
2429
  .max(3)
2434
2430
  .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");
2431
+ segmentationFolder.addColor(this.gui_states, "color").name("Color");
2432
+ segmentationFolder.addColor(this.gui_states, "fillColor").name("FillColor");
2433
+ const bushFolder = advanceFolder.addFolder("BrushSettings");
2434
+ bushFolder.addColor(this.gui_states, "brushColor").name("BrushColor");
2439
2435
  // 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");
2436
+ const maskFolder = advanceFolder.addFolder("MaskDownload");
2437
+ maskFolder
2438
+ .add(this.gui_states, "downloadCurrentMask")
2439
+ .name("DownloadCurrentMask");
2440
+ maskFolder.add(this.gui_states, "exportMarks").name("ExportMask");
2441
+ const contrastFolder = advanceFolder.addFolder("ContrastAdvanceSettings");
2442
2442
  contrastFolder
2443
2443
  .add(this.mainPreSlice.volume, "lowerThreshold", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
2444
- .name("Lower Threshold")
2444
+ .name("LowerThreshold")
2445
2445
  .onChange((value) => {
2446
2446
  this.nrrd_states.readyToUpdate = false;
2447
2447
  this.updateSlicesContrast(value, "lowerThreshold");
@@ -2452,7 +2452,7 @@ export class nrrd_tools {
2452
2452
  });
2453
2453
  contrastFolder
2454
2454
  .add(this.mainPreSlice.volume, "upperThreshold", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
2455
- .name("Upper Threshold")
2455
+ .name("UpperThreshold")
2456
2456
  .onChange((value) => {
2457
2457
  this.nrrd_states.readyToUpdate = false;
2458
2458
  this.updateSlicesContrast(value, "upperThreshold");
@@ -2463,7 +2463,7 @@ export class nrrd_tools {
2463
2463
  });
2464
2464
  contrastFolder
2465
2465
  .add(this.mainPreSlice.volume, "windowLow", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
2466
- .name("Window Low")
2466
+ .name("WindowLow")
2467
2467
  .onChange((value) => {
2468
2468
  this.nrrd_states.readyToUpdate = false;
2469
2469
  this.updateSlicesContrast(value, "windowLow");