copper3d 1.15.18 → 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.
@@ -38407,6 +38407,45 @@
38407
38407
  loadingContainer.appendChild(progress);
38408
38408
  return { loadingContainer, progress };
38409
38409
  }
38410
+ function switchPencilIcon(icon, urls) {
38411
+ let url = "";
38412
+ if (!!urls && urls.length > 0) {
38413
+ switch (icon) {
38414
+ case "crosshair":
38415
+ url = "crosshair";
38416
+ break;
38417
+ case "pencil":
38418
+ url = `url(${urls[1]}), auto`;
38419
+ break;
38420
+ case "dot":
38421
+ url = `url(${urls[0]}), auto`;
38422
+ break;
38423
+ default:
38424
+ url = `url(${urls[0]}), auto`;
38425
+ break;
38426
+ }
38427
+ }
38428
+ else {
38429
+ switch (icon) {
38430
+ case "crosshair":
38431
+ url = "crosshair";
38432
+ break;
38433
+ case "pencil":
38434
+ url =
38435
+ "url(https://raw.githubusercontent.com/LinkunGao/copper3d_icons/main/icons/pencil-black.svg), auto";
38436
+ break;
38437
+ case "dot":
38438
+ url =
38439
+ "url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/dot.svg) 12 12,auto";
38440
+ break;
38441
+ default:
38442
+ url =
38443
+ "url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/dot.svg) 12 12,auto";
38444
+ break;
38445
+ }
38446
+ }
38447
+ return url;
38448
+ }
38410
38449
  function switchEraserSize(size, urls) {
38411
38450
  let url = "";
38412
38451
  if (!!urls && urls.length > 0) {
@@ -38487,6 +38526,16 @@
38487
38526
  }
38488
38527
  return url;
38489
38528
  }
38529
+ function throttle(callback, wait) {
38530
+ let start = 0;
38531
+ return function (event) {
38532
+ const current = Date.now();
38533
+ if (current - start > wait) {
38534
+ callback.call(null, event);
38535
+ start = current;
38536
+ }
38537
+ };
38538
+ }
38490
38539
  /**
38491
38540
  * Cubic-Lagrange basis function
38492
38541
  * @param x
@@ -44359,16 +44408,6 @@
44359
44408
  };
44360
44409
  container.addEventListener("mousemove", throttle(onDocumentMouseMove, 80), false);
44361
44410
  }
44362
- function throttle(callback, wait) {
44363
- let start = 0;
44364
- return function (event) {
44365
- const current = Date.now();
44366
- if (current - start > wait) {
44367
- callback.call(null, event);
44368
- start = current;
44369
- }
44370
- };
44371
- }
44372
44411
  function baseRaycaster(camera, container, pickableObjects, mouse_x, mouse_y) {
44373
44412
  const coords = new Vector2((mouse_x / container.clientWidth) * 2 - 1, -(mouse_y / container.clientHeight) * 2 + 1);
44374
44413
  raycaster.setFromCamera(coords, camera);
@@ -47286,13 +47325,13 @@
47286
47325
  this.renderNrrdVolume = true;
47287
47326
  copperNrrdTexture3dLoader(url, this.scene, this.container, callback);
47288
47327
  }
47289
- loadOBJ(url, callback) {
47328
+ loadOBJ(url, callback, opts) {
47290
47329
  objLoader.load(url, (obj) => {
47291
47330
  obj.traverse((child) => {
47292
47331
  if (child.isMesh) {
47293
- child.material = new MeshStandardMaterial({
47332
+ child.material = new MeshPhongMaterial({
47294
47333
  side: DoubleSide,
47295
- color: 0xfff000,
47334
+ color: !!opts ? opts === null || opts === void 0 ? void 0 : opts.color : "#228b22",
47296
47335
  });
47297
47336
  }
47298
47337
  });
@@ -67736,6 +67775,7 @@
67736
67775
  this.undoArray = [];
67737
67776
  this.initState = true;
67738
67777
  this.eraserUrls = [];
67778
+ this.pencilUrls = [];
67739
67779
  this.nrrd_states = {
67740
67780
  originWidth: 0,
67741
67781
  originHeight: 0,
@@ -67782,9 +67822,7 @@
67782
67822
  switchSliceFlag: false,
67783
67823
  labels: ["label1", "label2", "label3"],
67784
67824
  getMask: (mask, sliceId, label, width, height, clearAllFlag) => { },
67785
- // defaultPaintCursor:
67786
- // "url(https://raw.githubusercontent.com/LinkunGao/copper3d_icons/main/icons/pencil-black.svg), auto",
67787
- defaultPaintCursor: "url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/dot.svg) 12 12,auto",
67825
+ defaultPaintCursor: switchPencilIcon("dot"),
67788
67826
  drawStartPos: new Vector2(1, 1),
67789
67827
  };
67790
67828
  this.cursorPage = {
@@ -68033,6 +68071,11 @@
68033
68071
  setEraserUrls(urls) {
68034
68072
  this.eraserUrls = urls;
68035
68073
  }
68074
+ setPencilIconUrls(urls) {
68075
+ this.pencilUrls = urls;
68076
+ this.nrrd_states.defaultPaintCursor = switchPencilIcon("dot", this.pencilUrls);
68077
+ this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
68078
+ }
68036
68079
  getCurrentImageDimension() {
68037
68080
  return this.nrrd_states.dimensions;
68038
68081
  }
@@ -69987,54 +70030,10 @@
69987
70030
  if (modeFolder.__controllers.length > 0)
69988
70031
  this.removeGuiFolderChilden(modeFolder);
69989
70032
  modeFolder.open();
69990
- const actionsFolder = modeFolder.addFolder("Default Actions");
69991
- actionsFolder
69992
- .add(this.gui_states, "label", ["label1", "label2", "label3"])
69993
- .onChange((val) => {
69994
- if (val === "label1") {
69995
- this.gui_states.fillColor = "#00ff00";
69996
- this.gui_states.brushColor = "#00ff00";
69997
- }
69998
- else if (val === "label2") {
69999
- this.gui_states.fillColor = "#ff0000";
70000
- this.gui_states.brushColor = "#ff0000";
70001
- }
70002
- else if (val === "label3") {
70003
- this.gui_states.fillColor = "#0000ff";
70004
- this.gui_states.brushColor = "#0000ff";
70005
- }
70006
- });
70007
- actionsFolder
70008
- .add(this.gui_states, "cursor", ["crosshair", "pencil", "dot"])
70009
- .name("cursor icons")
70010
- .onChange((value) => {
70011
- if (value === "crosshair") {
70012
- this.nrrd_states.defaultPaintCursor = "crosshair";
70013
- }
70014
- if (value === "pencil") {
70015
- this.nrrd_states.defaultPaintCursor =
70016
- "url(https://raw.githubusercontent.com/LinkunGao/copper3d_icons/main/icons/pencil-black.svg), auto";
70017
- }
70018
- if (value === "dot") {
70019
- this.nrrd_states.defaultPaintCursor =
70020
- "url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/dot.svg) 12 12,auto";
70021
- }
70022
- this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
70023
- });
70024
- actionsFolder
70025
- .add(this.gui_states, "mainAreaSize")
70026
- .name("zoom")
70027
- .min(1)
70028
- .max(8)
70029
- .onFinishChange((factor) => {
70030
- this.resetPaintArea();
70031
- this.nrrd_states.sizeFoctor = factor;
70032
- this.resizePaintArea(factor);
70033
- });
70034
- actionsFolder.add(this.gui_states, "resetZoom");
70033
+ const actionsFolder = modeFolder.addFolder("DefaultActions");
70035
70034
  actionsFolder
70036
70035
  .add(this.gui_states, "globalAlpha")
70037
- .name("opacity")
70036
+ .name("Opacity")
70038
70037
  .min(0.1)
70039
70038
  .max(1)
70040
70039
  .step(0.01);
@@ -70071,6 +70070,7 @@
70071
70070
  });
70072
70071
  actionsFolder
70073
70072
  .add(this.gui_states, "brushAndEraserSize")
70073
+ .name("BrushAndEraserSize")
70074
70074
  .min(5)
70075
70075
  .max(50)
70076
70076
  .step(1)
@@ -70092,12 +70092,13 @@
70092
70092
  this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
70093
70093
  }
70094
70094
  });
70095
- actionsFolder.add(this.gui_states, "clear");
70096
- actionsFolder.add(this.gui_states, "clearAll");
70097
- actionsFolder.add(this.gui_states, "undo");
70095
+ actionsFolder.add(this.gui_states, "clear").name("Clear");
70096
+ actionsFolder.add(this.gui_states, "clearAll").name("ClearAll");
70097
+ actionsFolder.add(this.gui_states, "undo").name("Undo");
70098
+ actionsFolder.add(this.gui_states, "resetZoom").name("ResetZoom");
70098
70099
  actionsFolder
70099
70100
  .add(this.mainPreSlice.volume, "windowHigh", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
70100
- .name("Image contrast")
70101
+ .name("ImageContrast")
70101
70102
  .onChange((value) => {
70102
70103
  this.nrrd_states.readyToUpdate = false;
70103
70104
  this.updateSlicesContrast(value, "windowHigh");
@@ -70106,30 +70107,68 @@
70106
70107
  this.repraintAllContrastSlices();
70107
70108
  this.nrrd_states.readyToUpdate = true;
70108
70109
  });
70109
- actionsFolder.add(this.gui_states, "exportMarks");
70110
- const advanceFolder = modeFolder.addFolder("Advance settings");
70110
+ const advanceFolder = modeFolder.addFolder("AdvanceSettings");
70111
+ advanceFolder
70112
+ .add(this.gui_states, "label", ["label1", "label2", "label3"])
70113
+ .name("Label")
70114
+ .onChange((val) => {
70115
+ if (val === "label1") {
70116
+ this.gui_states.fillColor = "#00ff00";
70117
+ this.gui_states.brushColor = "#00ff00";
70118
+ }
70119
+ else if (val === "label2") {
70120
+ this.gui_states.fillColor = "#ff0000";
70121
+ this.gui_states.brushColor = "#ff0000";
70122
+ }
70123
+ else if (val === "label3") {
70124
+ this.gui_states.fillColor = "#0000ff";
70125
+ this.gui_states.brushColor = "#0000ff";
70126
+ }
70127
+ });
70128
+ advanceFolder
70129
+ .add(this.gui_states, "cursor", ["crosshair", "pencil", "dot"])
70130
+ .name("CursorIcons")
70131
+ .onChange((value) => {
70132
+ this.nrrd_states.defaultPaintCursor = switchPencilIcon(value, this.pencilUrls);
70133
+ this.drawingCanvas.style.cursor = this.nrrd_states.defaultPaintCursor;
70134
+ });
70135
+ advanceFolder
70136
+ .add(this.gui_states, "mainAreaSize")
70137
+ .name("Zoom")
70138
+ .min(1)
70139
+ .max(8)
70140
+ .onFinishChange((factor) => {
70141
+ this.resetPaintArea();
70142
+ this.nrrd_states.sizeFoctor = factor;
70143
+ this.resizePaintArea(factor);
70144
+ });
70111
70145
  advanceFolder
70112
70146
  .add(this.gui_states, "dragSensitivity")
70147
+ .name("DragSensitivity")
70113
70148
  .min(1)
70114
70149
  .max(this.nrrd_states.Max_sensitive)
70115
70150
  .step(1);
70116
- const segmentationFolder = advanceFolder.addFolder("Pencil settings");
70151
+ const segmentationFolder = advanceFolder.addFolder("PencilSettings");
70117
70152
  segmentationFolder
70118
70153
  .add(this.gui_states, "lineWidth")
70119
- .name("outerLineWidth")
70154
+ .name("OuterLineWidth")
70120
70155
  .min(1.7)
70121
70156
  .max(3)
70122
70157
  .step(0.01);
70123
- segmentationFolder.addColor(this.gui_states, "color");
70124
- segmentationFolder.addColor(this.gui_states, "fillColor");
70125
- const bushFolder = advanceFolder.addFolder("Brush settings");
70126
- bushFolder.addColor(this.gui_states, "brushColor");
70158
+ segmentationFolder.addColor(this.gui_states, "color").name("Color");
70159
+ segmentationFolder.addColor(this.gui_states, "fillColor").name("FillColor");
70160
+ const bushFolder = advanceFolder.addFolder("BrushSettings");
70161
+ bushFolder.addColor(this.gui_states, "brushColor").name("BrushColor");
70127
70162
  // modeFolder.add(this.stateMode, "EraserSize").min(1).max(50).step(1);
70128
- advanceFolder.add(this.gui_states, "downloadCurrentMask");
70129
- const contrastFolder = advanceFolder.addFolder("contrast advance settings");
70163
+ const maskFolder = advanceFolder.addFolder("MaskDownload");
70164
+ maskFolder
70165
+ .add(this.gui_states, "downloadCurrentMask")
70166
+ .name("DownloadCurrentMask");
70167
+ maskFolder.add(this.gui_states, "exportMarks").name("ExportMask");
70168
+ const contrastFolder = advanceFolder.addFolder("ContrastAdvanceSettings");
70130
70169
  contrastFolder
70131
70170
  .add(this.mainPreSlice.volume, "lowerThreshold", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
70132
- .name("Lower Threshold")
70171
+ .name("LowerThreshold")
70133
70172
  .onChange((value) => {
70134
70173
  this.nrrd_states.readyToUpdate = false;
70135
70174
  this.updateSlicesContrast(value, "lowerThreshold");
@@ -70140,7 +70179,7 @@
70140
70179
  });
70141
70180
  contrastFolder
70142
70181
  .add(this.mainPreSlice.volume, "upperThreshold", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
70143
- .name("Upper Threshold")
70182
+ .name("UpperThreshold")
70144
70183
  .onChange((value) => {
70145
70184
  this.nrrd_states.readyToUpdate = false;
70146
70185
  this.updateSlicesContrast(value, "upperThreshold");
@@ -70151,7 +70190,7 @@
70151
70190
  });
70152
70191
  contrastFolder
70153
70192
  .add(this.mainPreSlice.volume, "windowLow", this.mainPreSlice.volume.min, this.mainPreSlice.volume.max, 1)
70154
- .name("Window Low")
70193
+ .name("WindowLow")
70155
70194
  .onChange((value) => {
70156
70195
  this.nrrd_states.readyToUpdate = false;
70157
70196
  this.updateSlicesContrast(value, "windowLow");
@@ -70371,8 +70410,8 @@
70371
70410
  }
70372
70411
 
70373
70412
  // import * as kiwrious from "copper3d_plugin_heart_k";
70374
- const REVISION = "v1.15.18";
70375
- console.log("%cCopper3D Visualisation %cBeta:v1.15.18", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
70413
+ const REVISION = "v1.15.21";
70414
+ console.log("%cCopper3D Visualisation %cBeta:v1.15.21", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
70376
70415
 
70377
70416
  exports.CameraViewPoint = CameraViewPoint;
70378
70417
  exports.Copper3dTrackballControls = Copper3dTrackballControls;
@@ -70395,6 +70434,7 @@
70395
70434
  exports.loading = loading;
70396
70435
  exports.nrrd_tools = nrrd_tools;
70397
70436
  exports.setHDRFilePath = setHDRFilePath;
70437
+ exports.throttle = throttle;
70398
70438
 
70399
70439
  Object.defineProperty(exports, '__esModule', { value: true });
70400
70440
 
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import copperScene from "./Scene/copperScene";
4
4
  import { CameraViewPoint } from "./Controls/copperControls";
5
5
  import { addLabelToScene, positionType, screenPosType, convert3DPostoScreenPos, convertScreenPosto3DPos } from "./Utils/add3DLabel";
6
6
  import { addBoxHelper, optsType } from "./Loader/copperNrrdLoader";
7
- import { fullScreenListenner, loading } from "./Utils/utils";
7
+ import { fullScreenListenner, loading, throttle } from "./Utils/utils";
8
8
  import copperRendererOnDemond from "./Renderer/copperRendererOnDemond";
9
9
  import copperSceneOnDemond from "./Scene/copperSceneOnDemond";
10
10
  import copperMSceneRenderer from "./Renderer/copperMSceneRenderer";
@@ -17,6 +17,6 @@ import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls"
17
17
  import { MeshNodeTool } from "./Utils/MeshNodeTool";
18
18
  import { nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader } from "./types/types";
19
19
  import "./css/style.css";
20
- export declare const REVISION = "v1.15.18";
21
- export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, };
20
+ export declare const REVISION = "v1.15.21";
21
+ export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, };
22
22
  export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader, };
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import copperScene from "./Scene/copperScene";
5
5
  import { CameraViewPoint } from "./Controls/copperControls";
6
6
  import { addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, } from "./Utils/add3DLabel";
7
7
  import { addBoxHelper } from "./Loader/copperNrrdLoader";
8
- import { fullScreenListenner, loading } from "./Utils/utils";
8
+ import { fullScreenListenner, loading, throttle } from "./Utils/utils";
9
9
  import copperRendererOnDemond from "./Renderer/copperRendererOnDemond";
10
10
  import copperSceneOnDemond from "./Scene/copperSceneOnDemond";
11
11
  import copperMSceneRenderer from "./Renderer/copperMSceneRenderer";
@@ -17,7 +17,7 @@ import { nrrd_tools } from "./Utils/nrrd_tool";
17
17
  import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls";
18
18
  import { MeshNodeTool } from "./Utils/MeshNodeTool";
19
19
  import "./css/style.css";
20
- export const REVISION = "v1.15.18";
21
- console.log("%cCopper3D Visualisation %cBeta:v1.15.18", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
22
- export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, };
20
+ export const REVISION = "v1.15.21";
21
+ console.log("%cCopper3D Visualisation %cBeta:v1.15.21", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
22
+ export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, };
23
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,eAAe,EAGf,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAY,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,sBAAsB,MAAM,mCAAmC,CAAC;AACvE,OAAO,mBAAmB,MAAM,6BAA6B,CAAC;AAC9D,OAAO,oBAAoB,MAAM,iCAAiC,CAAC;AACnE,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,QAAQ,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAcpD,OAAO,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAEnC,OAAO,CAAC,GAAG,CACT,0CAA0C,EAC1C,8CAA8C,EAC9C,8CAA8C,CAC/C,CAAC;AAEF,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,UAAU,EACV,OAAO,EACP,yBAAyB,EACzB,oBAAoB,EACpB,YAAY,GACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,eAAe,EAGf,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAY,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,sBAAsB,MAAM,mCAAmC,CAAC;AACvE,OAAO,mBAAmB,MAAM,6BAA6B,CAAC;AAC9D,OAAO,oBAAoB,MAAM,iCAAiC,CAAC;AACnE,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,QAAQ,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAcpD,OAAO,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAEnC,OAAO,CAAC,GAAG,CACT,0CAA0C,EAC1C,8CAA8C,EAC9C,8CAA8C,CAC/C,CAAC;AAEF,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,UAAU,EACV,OAAO,EACP,yBAAyB,EACzB,oBAAoB,EACpB,YAAY,EACZ,QAAQ,GACT,CAAC"}
@@ -43,5 +43,7 @@ export default class commonScene {
43
43
  loadNrrd(url: string, loadingBar: loadingBarType, segmentation: boolean, callback?: (volume: any, nrrdMeshes: nrrdMeshesType, nrrdSlices: nrrdSliceType, gui?: GUI) => void, opts?: optsType): void;
44
44
  updateControls(camera: THREE.PerspectiveCamera | THREE.OrthographicCamera): void;
45
45
  loadNrrdTexture3d(url: string, callback?: (volume: any, gui?: GUI) => void): void;
46
- loadOBJ(url: string, callback?: (mesh: THREE.Group) => void): void;
46
+ loadOBJ(url: string, callback?: (mesh: THREE.Group) => void, opts?: {
47
+ color: string;
48
+ }): void;
47
49
  }
@@ -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,7 +1,6 @@
1
1
  import * as THREE from "three";
2
2
  import { mouseMovePositionType } from "../types/types";
3
3
  export declare function pickModelDefault(camera: THREE.PerspectiveCamera, container: HTMLDivElement, pickableObjects: THREE.Mesh[], callback: (selectMesh: THREE.Mesh | undefined) => void): void;
4
- export declare function throttle(callback: (event: MouseEvent) => void, wait: number): (event: MouseEvent) => void;
5
4
  export declare function isPickedModel(camera: THREE.PerspectiveCamera, container: HTMLDivElement, pickableObjects: THREE.Mesh[], mouseMovePosition: mouseMovePositionType): {
6
5
  intersectedObject: THREE.Object3D<THREE.Event> | null;
7
6
  intersects: THREE.Intersection<THREE.Object3D<THREE.Event>>[];
@@ -5,7 +5,9 @@ export declare function loading(): {
5
5
  loadingContainer: HTMLDivElement;
6
6
  progress: HTMLDivElement;
7
7
  };
8
+ export declare function switchPencilIcon(icon: string, urls?: string[]): string;
8
9
  export declare function switchEraserSize(size: number, urls?: string[]): string;
10
+ export declare function throttle(callback: (event: MouseEvent) => void, wait: number): (event: MouseEvent) => void;
9
11
  /**
10
12
  * Cubic-Lagrange basis function
11
13
  * @param x
@@ -4,7 +4,7 @@ import copperScene from "./Scene/copperScene";
4
4
  import { CameraViewPoint } from "./Controls/copperControls";
5
5
  import { addLabelToScene, positionType, screenPosType, convert3DPostoScreenPos, convertScreenPosto3DPos } from "./Utils/add3DLabel";
6
6
  import { addBoxHelper, optsType } from "./Loader/copperNrrdLoader";
7
- import { fullScreenListenner, loading } from "./Utils/utils";
7
+ import { fullScreenListenner, loading, throttle } from "./Utils/utils";
8
8
  import copperRendererOnDemond from "./Renderer/copperRendererOnDemond";
9
9
  import copperSceneOnDemond from "./Scene/copperSceneOnDemond";
10
10
  import copperMSceneRenderer from "./Renderer/copperMSceneRenderer";
@@ -17,6 +17,6 @@ import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls"
17
17
  import { MeshNodeTool } from "./Utils/MeshNodeTool";
18
18
  import { nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader } from "./types/types";
19
19
  import "./css/style.css";
20
- export declare const REVISION = "v1.15.18";
21
- export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, };
20
+ export declare const REVISION = "v1.15.21";
21
+ export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, nrrd_tools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, };
22
22
  export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, paintImageType, exportPaintImageType, IOptVTKLoader, };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "copper3d",
3
3
  "description": "A 3d visualisation package base on threejs provides multiple scenes and Nrrd image load funtion.",
4
- "version": "1.15.18",
4
+ "version": "1.15.21",
5
5
  "main": "dist/bundle.umd.js",
6
6
  "moudle": "dist/bundle.esm.js",
7
7
  "types": "dist/types/index.d.ts",