copper3d 2.1.3 → 2.2.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.
@@ -71146,7 +71146,7 @@ class DragOperator {
71146
71146
  }
71147
71147
  this.dragPrameters.handleOnDragMouseDown = (ev) => {
71148
71148
  // before start drag event, remove wheel event.
71149
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71149
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71150
71150
  if (ev.button === 0) {
71151
71151
  this.dragPrameters.y = ev.offsetY / this.dragPrameters.h;
71152
71152
  this.container.addEventListener("pointermove", this.dragPrameters.handleOnDragMouseMove, false);
@@ -71170,18 +71170,22 @@ class DragOperator {
71170
71170
  }, this.dragPrameters.sensivity * 200);
71171
71171
  this.dragPrameters.handleOnDragMouseUp = (ev) => {
71172
71172
  // after drag, add the wheel event
71173
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71173
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71174
71174
  this.setSyncsliceNum();
71175
71175
  this.container.removeEventListener("pointermove", this.dragPrameters.handleOnDragMouseMove, false);
71176
71176
  };
71177
71177
  this.configDragMode();
71178
71178
  this.container.addEventListener("keydown", (ev) => {
71179
- if (ev.key === "Shift") {
71179
+ if (this.nrrd_states.configKeyBoard)
71180
+ return;
71181
+ if (ev.key === this.nrrd_states.keyboardSettings.draw) {
71180
71182
  this.removeDragMode();
71181
71183
  }
71182
71184
  });
71183
71185
  this.container.addEventListener("keyup", (ev) => {
71184
- if (ev.key === 'Control' || ev.key === 'Meta') {
71186
+ if (this.nrrd_states.configKeyBoard)
71187
+ return;
71188
+ if (this.nrrd_states.keyboardSettings.contrast.includes(ev.key)) {
71185
71189
  /**
71186
71190
  * if ctrl pressed remove the drag mode
71187
71191
  */
@@ -71192,7 +71196,7 @@ class DragOperator {
71192
71196
  this.configDragMode();
71193
71197
  }
71194
71198
  }
71195
- if (ev.key === "Shift" && !this.gui_states.sphere) {
71199
+ if (ev.key === this.nrrd_states.keyboardSettings.draw && !this.gui_states.sphere) {
71196
71200
  if (this.protectedData.Is_Ctrl_Pressed) {
71197
71201
  return;
71198
71202
  }
@@ -71394,6 +71398,14 @@ class CommToolsData {
71394
71398
  previousPanelT: -99999,
71395
71399
  switchSliceFlag: false,
71396
71400
  labels: ["label1", "label2", "label3"],
71401
+ configKeyBoard: false,
71402
+ keyboardSettings: {
71403
+ draw: "Shift",
71404
+ undo: "z",
71405
+ contrast: ["Control", "Meta"],
71406
+ crosshair: "s",
71407
+ mouseWheel: "Scroll:Zoom",
71408
+ },
71397
71409
  getMask: (mask, sliceId, label, width, height, clearAllFlag) => { },
71398
71410
  getSphere: (sphereOrigin, sphereRadius) => { },
71399
71411
  getCalculateSpherePositions: (tumourSphereOrigin, skinSphereOrigin, ribSphereOrigin, nippleSphereOrigin, aixs) => { },
@@ -71636,7 +71648,7 @@ class DrawToolCore extends CommToolsData {
71636
71648
  handleOnDrawingMouseUp: (ev) => { },
71637
71649
  handleOnDrawingMouseLeave: (ev) => { },
71638
71650
  handleOnDrawingBrushCricleMove: (ev) => { },
71639
- handleZoomWheel: (e) => { },
71651
+ handleMouseZoomSliceWheel: (e) => { },
71640
71652
  handleSphereWheel: (e) => { },
71641
71653
  };
71642
71654
  this.contrastEventPrameters = {
@@ -71684,7 +71696,9 @@ class DrawToolCore extends CommToolsData {
71684
71696
  initDrawToolCore() {
71685
71697
  let undoFlag = false;
71686
71698
  this.container.addEventListener("keydown", (ev) => {
71687
- if (ev.key === "Shift" && !this.gui_states.sphere && !this.gui_states.calculator) {
71699
+ if (this.nrrd_states.configKeyBoard)
71700
+ return;
71701
+ if (ev.key === this.nrrd_states.keyboardSettings.draw && !this.gui_states.sphere && !this.gui_states.calculator) {
71688
71702
  if (this.protectedData.Is_Ctrl_Pressed) {
71689
71703
  this.protectedData.Is_Shift_Pressed = false;
71690
71704
  return;
@@ -71692,18 +71706,20 @@ class DrawToolCore extends CommToolsData {
71692
71706
  this.protectedData.Is_Shift_Pressed = true;
71693
71707
  this.nrrd_states.enableCursorChoose = false;
71694
71708
  }
71695
- if (ev.key === "s") {
71709
+ if (ev.key === this.nrrd_states.keyboardSettings.crosshair) {
71696
71710
  this.protectedData.Is_Draw = false;
71697
71711
  this.nrrd_states.enableCursorChoose =
71698
71712
  !this.nrrd_states.enableCursorChoose;
71699
71713
  }
71700
- if ((ev.ctrlKey || ev.metaKey) && ev.code === "KeyZ") {
71714
+ if ((ev.ctrlKey || ev.metaKey) && ev.key === this.nrrd_states.keyboardSettings.undo) {
71701
71715
  undoFlag = true;
71702
71716
  this.undoLastPainting();
71703
71717
  }
71704
71718
  });
71705
71719
  this.container.addEventListener("keyup", (ev) => {
71706
- if (ev.key === 'Control' || ev.key === 'Meta') {
71720
+ if (this.nrrd_states.configKeyBoard)
71721
+ return;
71722
+ if (this.nrrd_states.keyboardSettings.contrast.includes(ev.key)) {
71707
71723
  if (undoFlag) {
71708
71724
  this.gui_states.readyToUpdate = true;
71709
71725
  undoFlag = false;
@@ -71720,7 +71736,7 @@ class DrawToolCore extends CommToolsData {
71720
71736
  this.gui_states.readyToUpdate = true;
71721
71737
  }
71722
71738
  }
71723
- if (ev.key === "Shift") {
71739
+ if (ev.key === this.nrrd_states.keyboardSettings.draw) {
71724
71740
  this.protectedData.Is_Shift_Pressed = false;
71725
71741
  }
71726
71742
  });
@@ -71767,7 +71783,7 @@ class DrawToolCore extends CommToolsData {
71767
71783
  }
71768
71784
  drawCalSphereDown(x, y, sliceIndex, cal_position) {
71769
71785
  this.nrrd_states.sphereRadius = 5;
71770
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71786
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71771
71787
  let mouseX = x / this.nrrd_states.sizeFoctor;
71772
71788
  let mouseY = y / this.nrrd_states.sizeFoctor;
71773
71789
  // record mouseX,Y, and enable crosshair function
@@ -71777,6 +71793,8 @@ class DrawToolCore extends CommToolsData {
71777
71793
  sliceIndex,
71778
71794
  ];
71779
71795
  this.setUpSphereOrigins(mouseX, mouseY, sliceIndex);
71796
+ // Note the sphere origin here is x, y, z
71797
+ // x: pixel x, y: pixel y, z: slice index (mm)
71780
71798
  switch (cal_position) {
71781
71799
  case "tumour":
71782
71800
  this.nrrd_states.tumourSphereOrigin = JSON.parse(JSON.stringify(this.nrrd_states.sphereOrigin));
@@ -71811,7 +71829,7 @@ class DrawToolCore extends CommToolsData {
71811
71829
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
71812
71830
  }
71813
71831
  zoomActionAfterDrawSphere() {
71814
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71832
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71815
71833
  }
71816
71834
  clearSpherePrintStoreImages() {
71817
71835
  this.protectedData.maskData.paintImages.x.length = 0;
@@ -71844,9 +71862,14 @@ class DrawToolCore extends CommToolsData {
71844
71862
  this.protectedData.previousDrawingImage =
71845
71863
  this.protectedData.ctxes.drawingCtx.getImageData(0, 0, this.protectedData.canvases.drawingCanvas.width, this.protectedData.canvases.drawingCanvas.height);
71846
71864
  // let a global variable to store the wheel move event
71847
- this.drawingPrameters.handleZoomWheel = this.configMouseZoomWheel();
71865
+ if (this.nrrd_states.keyboardSettings.mouseWheel === "Scroll:Zoom") {
71866
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
71867
+ }
71868
+ else {
71869
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseSliceWheel();
71870
+ }
71848
71871
  // init to add it
71849
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel, {
71872
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel, {
71850
71873
  passive: false,
71851
71874
  });
71852
71875
  // sphere Wheel
@@ -71910,7 +71933,7 @@ class DrawToolCore extends CommToolsData {
71910
71933
  currentSliceIndex = this.protectedData.mainPreSlices.index;
71911
71934
  }
71912
71935
  // remove it when mouse click down
71913
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71936
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71914
71937
  if (e.button === 0) {
71915
71938
  if (this.protectedData.Is_Shift_Pressed) {
71916
71939
  leftclicked = true;
@@ -71969,7 +71992,7 @@ class DrawToolCore extends CommToolsData {
71969
71992
  const sphere = (e) => {
71970
71993
  // set sphere size
71971
71994
  this.nrrd_states.sphereRadius = 10;
71972
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71995
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71973
71996
  let mouseX = e.offsetX / this.nrrd_states.sizeFoctor;
71974
71997
  let mouseY = e.offsetY / this.nrrd_states.sizeFoctor;
71975
71998
  // record mouseX,Y, and enable crosshair function
@@ -72070,7 +72093,7 @@ class DrawToolCore extends CommToolsData {
72070
72093
  this.undoArray.push(undoObj);
72071
72094
  }
72072
72095
  // add wheel after pointer up
72073
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel, {
72096
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel, {
72074
72097
  passive: false,
72075
72098
  });
72076
72099
  }
@@ -72091,12 +72114,12 @@ class DrawToolCore extends CommToolsData {
72091
72114
  !!this.nrrd_states.getSphere &&
72092
72115
  this.nrrd_states.getSphere(this.nrrd_states.sphereOrigin.z, this.nrrd_states.sphereRadius / this.nrrd_states.sizeFoctor);
72093
72116
  this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleSphereWheel, true);
72094
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
72117
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
72095
72118
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
72096
72119
  }
72097
72120
  else if ((this.gui_states.sphere || this.gui_states.calculator) &&
72098
72121
  this.nrrd_states.enableCursorChoose) {
72099
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
72122
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
72100
72123
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
72101
72124
  }
72102
72125
  else if (this.gui_states.calculator &&
@@ -72282,7 +72305,7 @@ class DrawToolCore extends CommToolsData {
72282
72305
  // drawing canvas mouse zoom wheel
72283
72306
  configMouseZoomWheel() {
72284
72307
  let moveDistance = 1;
72285
- const handleZoomWheelMove = (e) => {
72308
+ const handleMouseZoomSliceWheelMove = (e) => {
72286
72309
  if (this.protectedData.Is_Shift_Pressed) {
72287
72310
  return;
72288
72311
  }
@@ -72320,7 +72343,14 @@ class DrawToolCore extends CommToolsData {
72320
72343
  this.setIsDrawFalse(1000);
72321
72344
  this.nrrd_states.sizeFoctor = moveDistance;
72322
72345
  };
72323
- return handleZoomWheelMove;
72346
+ return handleMouseZoomSliceWheelMove;
72347
+ }
72348
+ configMouseSliceWheel() {
72349
+ /**
72350
+ * Interface for slice wheel
72351
+ * Implement in the NrrdTools class
72352
+ * */
72353
+ throw new Error("Child class must implement abstract redrawDisplayCanvas, currently you can find it in NrrdTools.");
72324
72354
  }
72325
72355
  enableCrosshair() {
72326
72356
  this.nrrd_states.isCursorSelect = true;
@@ -73977,6 +74007,42 @@ class NrrdTools extends DrawToolCore {
73977
74007
  (_c = this.protectedData.ctxes.displayCtx) === null || _c === void 0 ? void 0 : _c.restore();
73978
74008
  }
73979
74009
  }
74010
+ /**
74011
+ * Config mouse slice wheel event.
74012
+ */
74013
+ configMouseSliceWheel() {
74014
+ const handleMouseZoomSliceWheelMove = (e) => {
74015
+ if (this.protectedData.Is_Shift_Pressed) {
74016
+ return;
74017
+ }
74018
+ e.preventDefault();
74019
+ if (e.deltaY < 0) {
74020
+ this.setSliceMoving(-1);
74021
+ }
74022
+ else if (e.deltaY > 0) {
74023
+ this.setSliceMoving(1);
74024
+ }
74025
+ };
74026
+ return handleMouseZoomSliceWheelMove;
74027
+ }
74028
+ /**
74029
+ * Update mouse wheel event.
74030
+ */
74031
+ updateMouseWheelEvent() {
74032
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
74033
+ switch (this.nrrd_states.keyboardSettings.mouseWheel) {
74034
+ case "Scroll:Zoom":
74035
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
74036
+ break;
74037
+ case "Scroll:Slice":
74038
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseSliceWheel();
74039
+ break;
74040
+ default:
74041
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
74042
+ break;
74043
+ }
74044
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
74045
+ }
73980
74046
  }
73981
74047
 
73982
74048
  class Node {
@@ -74186,7 +74252,7 @@ function evaluateElement(element, weights) {
74186
74252
  }
74187
74253
 
74188
74254
  // import * as kiwrious from "copper3d_plugin_heart_k";
74189
- const REVISION = "v2.1.3";
74190
- console.log("%cCopper3D Visualisation %cBeta:v2.1.3", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
74255
+ const REVISION = "v2.2.1";
74256
+ console.log("%cCopper3D Visualisation %cBeta:v2.2.1", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
74191
74257
 
74192
74258
  export { CameraViewPoint, Copper3dTrackballControls, MeshNodeTool, NrrdTools, REVISION, addBoxHelper, addLabelToScene, configKiwriousHeart, convert3DPostoScreenPos, convertScreenPosto3DPos, copperMScene, copperMSceneRenderer, copperRenderer, copperRendererOnDemond, copperScene, copperSceneOnDemond, createTexture2D_NRRD, fullScreenListenner, kiwrious, loading, removeGuiFolderChilden, setHDRFilePath, throttle };
@@ -71154,7 +71154,7 @@ void main() {
71154
71154
  }
71155
71155
  this.dragPrameters.handleOnDragMouseDown = (ev) => {
71156
71156
  // before start drag event, remove wheel event.
71157
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71157
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71158
71158
  if (ev.button === 0) {
71159
71159
  this.dragPrameters.y = ev.offsetY / this.dragPrameters.h;
71160
71160
  this.container.addEventListener("pointermove", this.dragPrameters.handleOnDragMouseMove, false);
@@ -71178,18 +71178,22 @@ void main() {
71178
71178
  }, this.dragPrameters.sensivity * 200);
71179
71179
  this.dragPrameters.handleOnDragMouseUp = (ev) => {
71180
71180
  // after drag, add the wheel event
71181
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71181
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71182
71182
  this.setSyncsliceNum();
71183
71183
  this.container.removeEventListener("pointermove", this.dragPrameters.handleOnDragMouseMove, false);
71184
71184
  };
71185
71185
  this.configDragMode();
71186
71186
  this.container.addEventListener("keydown", (ev) => {
71187
- if (ev.key === "Shift") {
71187
+ if (this.nrrd_states.configKeyBoard)
71188
+ return;
71189
+ if (ev.key === this.nrrd_states.keyboardSettings.draw) {
71188
71190
  this.removeDragMode();
71189
71191
  }
71190
71192
  });
71191
71193
  this.container.addEventListener("keyup", (ev) => {
71192
- if (ev.key === 'Control' || ev.key === 'Meta') {
71194
+ if (this.nrrd_states.configKeyBoard)
71195
+ return;
71196
+ if (this.nrrd_states.keyboardSettings.contrast.includes(ev.key)) {
71193
71197
  /**
71194
71198
  * if ctrl pressed remove the drag mode
71195
71199
  */
@@ -71200,7 +71204,7 @@ void main() {
71200
71204
  this.configDragMode();
71201
71205
  }
71202
71206
  }
71203
- if (ev.key === "Shift" && !this.gui_states.sphere) {
71207
+ if (ev.key === this.nrrd_states.keyboardSettings.draw && !this.gui_states.sphere) {
71204
71208
  if (this.protectedData.Is_Ctrl_Pressed) {
71205
71209
  return;
71206
71210
  }
@@ -71402,6 +71406,14 @@ void main() {
71402
71406
  previousPanelT: -99999,
71403
71407
  switchSliceFlag: false,
71404
71408
  labels: ["label1", "label2", "label3"],
71409
+ configKeyBoard: false,
71410
+ keyboardSettings: {
71411
+ draw: "Shift",
71412
+ undo: "z",
71413
+ contrast: ["Control", "Meta"],
71414
+ crosshair: "s",
71415
+ mouseWheel: "Scroll:Zoom",
71416
+ },
71405
71417
  getMask: (mask, sliceId, label, width, height, clearAllFlag) => { },
71406
71418
  getSphere: (sphereOrigin, sphereRadius) => { },
71407
71419
  getCalculateSpherePositions: (tumourSphereOrigin, skinSphereOrigin, ribSphereOrigin, nippleSphereOrigin, aixs) => { },
@@ -71644,7 +71656,7 @@ void main() {
71644
71656
  handleOnDrawingMouseUp: (ev) => { },
71645
71657
  handleOnDrawingMouseLeave: (ev) => { },
71646
71658
  handleOnDrawingBrushCricleMove: (ev) => { },
71647
- handleZoomWheel: (e) => { },
71659
+ handleMouseZoomSliceWheel: (e) => { },
71648
71660
  handleSphereWheel: (e) => { },
71649
71661
  };
71650
71662
  this.contrastEventPrameters = {
@@ -71692,7 +71704,9 @@ void main() {
71692
71704
  initDrawToolCore() {
71693
71705
  let undoFlag = false;
71694
71706
  this.container.addEventListener("keydown", (ev) => {
71695
- if (ev.key === "Shift" && !this.gui_states.sphere && !this.gui_states.calculator) {
71707
+ if (this.nrrd_states.configKeyBoard)
71708
+ return;
71709
+ if (ev.key === this.nrrd_states.keyboardSettings.draw && !this.gui_states.sphere && !this.gui_states.calculator) {
71696
71710
  if (this.protectedData.Is_Ctrl_Pressed) {
71697
71711
  this.protectedData.Is_Shift_Pressed = false;
71698
71712
  return;
@@ -71700,18 +71714,20 @@ void main() {
71700
71714
  this.protectedData.Is_Shift_Pressed = true;
71701
71715
  this.nrrd_states.enableCursorChoose = false;
71702
71716
  }
71703
- if (ev.key === "s") {
71717
+ if (ev.key === this.nrrd_states.keyboardSettings.crosshair) {
71704
71718
  this.protectedData.Is_Draw = false;
71705
71719
  this.nrrd_states.enableCursorChoose =
71706
71720
  !this.nrrd_states.enableCursorChoose;
71707
71721
  }
71708
- if ((ev.ctrlKey || ev.metaKey) && ev.code === "KeyZ") {
71722
+ if ((ev.ctrlKey || ev.metaKey) && ev.key === this.nrrd_states.keyboardSettings.undo) {
71709
71723
  undoFlag = true;
71710
71724
  this.undoLastPainting();
71711
71725
  }
71712
71726
  });
71713
71727
  this.container.addEventListener("keyup", (ev) => {
71714
- if (ev.key === 'Control' || ev.key === 'Meta') {
71728
+ if (this.nrrd_states.configKeyBoard)
71729
+ return;
71730
+ if (this.nrrd_states.keyboardSettings.contrast.includes(ev.key)) {
71715
71731
  if (undoFlag) {
71716
71732
  this.gui_states.readyToUpdate = true;
71717
71733
  undoFlag = false;
@@ -71728,7 +71744,7 @@ void main() {
71728
71744
  this.gui_states.readyToUpdate = true;
71729
71745
  }
71730
71746
  }
71731
- if (ev.key === "Shift") {
71747
+ if (ev.key === this.nrrd_states.keyboardSettings.draw) {
71732
71748
  this.protectedData.Is_Shift_Pressed = false;
71733
71749
  }
71734
71750
  });
@@ -71775,7 +71791,7 @@ void main() {
71775
71791
  }
71776
71792
  drawCalSphereDown(x, y, sliceIndex, cal_position) {
71777
71793
  this.nrrd_states.sphereRadius = 5;
71778
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71794
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71779
71795
  let mouseX = x / this.nrrd_states.sizeFoctor;
71780
71796
  let mouseY = y / this.nrrd_states.sizeFoctor;
71781
71797
  // record mouseX,Y, and enable crosshair function
@@ -71785,6 +71801,8 @@ void main() {
71785
71801
  sliceIndex,
71786
71802
  ];
71787
71803
  this.setUpSphereOrigins(mouseX, mouseY, sliceIndex);
71804
+ // Note the sphere origin here is x, y, z
71805
+ // x: pixel x, y: pixel y, z: slice index (mm)
71788
71806
  switch (cal_position) {
71789
71807
  case "tumour":
71790
71808
  this.nrrd_states.tumourSphereOrigin = JSON.parse(JSON.stringify(this.nrrd_states.sphereOrigin));
@@ -71819,7 +71837,7 @@ void main() {
71819
71837
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
71820
71838
  }
71821
71839
  zoomActionAfterDrawSphere() {
71822
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71840
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71823
71841
  }
71824
71842
  clearSpherePrintStoreImages() {
71825
71843
  this.protectedData.maskData.paintImages.x.length = 0;
@@ -71852,9 +71870,14 @@ void main() {
71852
71870
  this.protectedData.previousDrawingImage =
71853
71871
  this.protectedData.ctxes.drawingCtx.getImageData(0, 0, this.protectedData.canvases.drawingCanvas.width, this.protectedData.canvases.drawingCanvas.height);
71854
71872
  // let a global variable to store the wheel move event
71855
- this.drawingPrameters.handleZoomWheel = this.configMouseZoomWheel();
71873
+ if (this.nrrd_states.keyboardSettings.mouseWheel === "Scroll:Zoom") {
71874
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
71875
+ }
71876
+ else {
71877
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseSliceWheel();
71878
+ }
71856
71879
  // init to add it
71857
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel, {
71880
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel, {
71858
71881
  passive: false,
71859
71882
  });
71860
71883
  // sphere Wheel
@@ -71918,7 +71941,7 @@ void main() {
71918
71941
  currentSliceIndex = this.protectedData.mainPreSlices.index;
71919
71942
  }
71920
71943
  // remove it when mouse click down
71921
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71944
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71922
71945
  if (e.button === 0) {
71923
71946
  if (this.protectedData.Is_Shift_Pressed) {
71924
71947
  leftclicked = true;
@@ -71977,7 +72000,7 @@ void main() {
71977
72000
  const sphere = (e) => {
71978
72001
  // set sphere size
71979
72002
  this.nrrd_states.sphereRadius = 10;
71980
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
72003
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71981
72004
  let mouseX = e.offsetX / this.nrrd_states.sizeFoctor;
71982
72005
  let mouseY = e.offsetY / this.nrrd_states.sizeFoctor;
71983
72006
  // record mouseX,Y, and enable crosshair function
@@ -72078,7 +72101,7 @@ void main() {
72078
72101
  this.undoArray.push(undoObj);
72079
72102
  }
72080
72103
  // add wheel after pointer up
72081
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel, {
72104
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel, {
72082
72105
  passive: false,
72083
72106
  });
72084
72107
  }
@@ -72099,12 +72122,12 @@ void main() {
72099
72122
  !!this.nrrd_states.getSphere &&
72100
72123
  this.nrrd_states.getSphere(this.nrrd_states.sphereOrigin.z, this.nrrd_states.sphereRadius / this.nrrd_states.sizeFoctor);
72101
72124
  this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleSphereWheel, true);
72102
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
72125
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
72103
72126
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
72104
72127
  }
72105
72128
  else if ((this.gui_states.sphere || this.gui_states.calculator) &&
72106
72129
  this.nrrd_states.enableCursorChoose) {
72107
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
72130
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
72108
72131
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
72109
72132
  }
72110
72133
  else if (this.gui_states.calculator &&
@@ -72290,7 +72313,7 @@ void main() {
72290
72313
  // drawing canvas mouse zoom wheel
72291
72314
  configMouseZoomWheel() {
72292
72315
  let moveDistance = 1;
72293
- const handleZoomWheelMove = (e) => {
72316
+ const handleMouseZoomSliceWheelMove = (e) => {
72294
72317
  if (this.protectedData.Is_Shift_Pressed) {
72295
72318
  return;
72296
72319
  }
@@ -72328,7 +72351,14 @@ void main() {
72328
72351
  this.setIsDrawFalse(1000);
72329
72352
  this.nrrd_states.sizeFoctor = moveDistance;
72330
72353
  };
72331
- return handleZoomWheelMove;
72354
+ return handleMouseZoomSliceWheelMove;
72355
+ }
72356
+ configMouseSliceWheel() {
72357
+ /**
72358
+ * Interface for slice wheel
72359
+ * Implement in the NrrdTools class
72360
+ * */
72361
+ throw new Error("Child class must implement abstract redrawDisplayCanvas, currently you can find it in NrrdTools.");
72332
72362
  }
72333
72363
  enableCrosshair() {
72334
72364
  this.nrrd_states.isCursorSelect = true;
@@ -73985,6 +74015,42 @@ void main() {
73985
74015
  (_c = this.protectedData.ctxes.displayCtx) === null || _c === void 0 ? void 0 : _c.restore();
73986
74016
  }
73987
74017
  }
74018
+ /**
74019
+ * Config mouse slice wheel event.
74020
+ */
74021
+ configMouseSliceWheel() {
74022
+ const handleMouseZoomSliceWheelMove = (e) => {
74023
+ if (this.protectedData.Is_Shift_Pressed) {
74024
+ return;
74025
+ }
74026
+ e.preventDefault();
74027
+ if (e.deltaY < 0) {
74028
+ this.setSliceMoving(-1);
74029
+ }
74030
+ else if (e.deltaY > 0) {
74031
+ this.setSliceMoving(1);
74032
+ }
74033
+ };
74034
+ return handleMouseZoomSliceWheelMove;
74035
+ }
74036
+ /**
74037
+ * Update mouse wheel event.
74038
+ */
74039
+ updateMouseWheelEvent() {
74040
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
74041
+ switch (this.nrrd_states.keyboardSettings.mouseWheel) {
74042
+ case "Scroll:Zoom":
74043
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
74044
+ break;
74045
+ case "Scroll:Slice":
74046
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseSliceWheel();
74047
+ break;
74048
+ default:
74049
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
74050
+ break;
74051
+ }
74052
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
74053
+ }
73988
74054
  }
73989
74055
 
73990
74056
  class Node {
@@ -74194,8 +74260,8 @@ void main() {
74194
74260
  }
74195
74261
 
74196
74262
  // import * as kiwrious from "copper3d_plugin_heart_k";
74197
- const REVISION = "v2.1.3";
74198
- console.log("%cCopper3D Visualisation %cBeta:v2.1.3", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
74263
+ const REVISION = "v2.2.1";
74264
+ console.log("%cCopper3D Visualisation %cBeta:v2.2.1", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
74199
74265
 
74200
74266
  exports.CameraViewPoint = CameraViewPoint;
74201
74267
  exports.Copper3dTrackballControls = Copper3dTrackballControls;
package/dist/index.d.ts CHANGED
@@ -17,8 +17,8 @@ import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls"
17
17
  import { MeshNodeTool } from "./Utils/MeshNodeTool";
18
18
  import { removeGuiFolderChilden } from "./Utils/segmentation/coreTools/gui";
19
19
  import { nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, exportPaintImageType, IOptVTKLoader } from "./types/types";
20
- import { IPaintImage, ICommXYZ } from "./Utils/segmentation/coreTools/coreType";
20
+ import { IPaintImage, ICommXYZ, IGUIStates, IGuiParameterSettings, INrrdStates } from "./Utils/segmentation/coreTools/coreType";
21
21
  import "./css/style.css";
22
- export declare const REVISION = "v2.1.3";
22
+ export declare const REVISION = "v2.2.1";
23
23
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, NrrdTools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, removeGuiFolderChilden, };
24
- export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, IPaintImage, exportPaintImageType, IOptVTKLoader, ICommXYZ };
24
+ export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, IPaintImage, exportPaintImageType, IOptVTKLoader, ICommXYZ, IGUIStates, IGuiParameterSettings, INrrdStates };
package/dist/index.js CHANGED
@@ -18,7 +18,7 @@ import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls"
18
18
  import { MeshNodeTool } from "./Utils/MeshNodeTool";
19
19
  import { removeGuiFolderChilden } from "./Utils/segmentation/coreTools/gui";
20
20
  import "./css/style.css";
21
- export const REVISION = "v2.1.3";
22
- console.log("%cCopper3D Visualisation %cBeta:v2.1.3", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
21
+ export const REVISION = "v2.2.1";
22
+ console.log("%cCopper3D Visualisation %cBeta:v2.2.1", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
23
23
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, NrrdTools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, removeGuiFolderChilden, };
24
24
  //# sourceMappingURL=index.js.map
@@ -26,7 +26,8 @@ export declare class DrawToolCore extends CommToolsData {
26
26
  private paintOnCanvasLayer;
27
27
  private initAllCanvas;
28
28
  private useEraser;
29
- private configMouseZoomWheel;
29
+ configMouseZoomWheel(): (e: WheelEvent) => void;
30
+ configMouseSliceWheel(): void;
30
31
  private enableCrosshair;
31
32
  drawImageOnEmptyImage(canvas: HTMLCanvasElement): void;
32
33
  /****************************Sphere calculate distance functions****************************************************/
@@ -160,4 +160,12 @@ export declare class NrrdTools extends DrawToolCore {
160
160
  * It is more related to change the contrast slice image's window width or center.
161
161
  */
162
162
  redrawDisplayCanvas(): void;
163
+ /**
164
+ * Config mouse slice wheel event.
165
+ */
166
+ configMouseSliceWheel(): (e: WheelEvent) => void;
167
+ /**
168
+ * Update mouse wheel event.
169
+ */
170
+ updateMouseWheelEvent(): void;
163
171
  }
@@ -39,7 +39,7 @@ interface IDrawingEvents {
39
39
  handleOnDrawingMouseUp: (ev: MouseEvent) => void;
40
40
  handleOnDrawingMouseLeave: (ev: MouseEvent) => void;
41
41
  handleOnDrawingBrushCricleMove: (ev: MouseEvent) => void;
42
- handleZoomWheel: (e: WheelEvent) => void;
42
+ handleMouseZoomSliceWheel: (e: WheelEvent) => void;
43
43
  handleSphereWheel: (e: WheelEvent) => void;
44
44
  }
45
45
  interface IContrastEvents {
@@ -136,6 +136,13 @@ interface IGUIStates {
136
136
  downloadCurrentMask: () => void;
137
137
  resetZoom: () => void;
138
138
  }
139
+ interface IKeyBoardSettings {
140
+ draw: string;
141
+ undo: string;
142
+ contrast: string[];
143
+ crosshair: string;
144
+ mouseWheel: "Scroll:Zoom" | "Scroll:Slice";
145
+ }
139
146
  interface INrrdStates {
140
147
  originWidth: number;
141
148
  originHeight: number;
@@ -185,6 +192,8 @@ interface INrrdStates {
185
192
  previousPanelT: number;
186
193
  switchSliceFlag: boolean;
187
194
  labels: ["label1", "label2", "label3"];
195
+ configKeyBoard: boolean;
196
+ keyboardSettings: IKeyBoardSettings;
188
197
  getMask: (mask: ImageData, sliceId: number, label: string, width: number, height: number, clearAllFlag: boolean) => void;
189
198
  getSphere: (sphereOrigin: number[], sphereRadius: number) => void;
190
199
  getCalculateSpherePositions: (tumourSphereOrigin: ICommXYZ | null, skinSphereOrigin: ICommXYZ | null, ribSphereOrigin: ICommXYZ | null, nippleSphereOrigin: ICommXYZ | null, aixs: "x" | "y" | "z") => void;
@@ -17,8 +17,8 @@ import { Copper3dTrackballControls } from "./Controls/Copper3dTrackballControls"
17
17
  import { MeshNodeTool } from "./Utils/MeshNodeTool";
18
18
  import { removeGuiFolderChilden } from "./Utils/segmentation/coreTools/gui";
19
19
  import { nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, exportPaintImageType, IOptVTKLoader } from "./types/types";
20
- import { IPaintImage, ICommXYZ } from "./Utils/segmentation/coreTools/coreType";
20
+ import { IPaintImage, ICommXYZ, IGUIStates, IGuiParameterSettings, INrrdStates } from "./Utils/segmentation/coreTools/coreType";
21
21
  import "./css/style.css";
22
- export declare const REVISION = "v2.1.3";
22
+ export declare const REVISION = "v2.2.1";
23
23
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, NrrdTools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, removeGuiFolderChilden, };
24
- export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, IPaintImage, exportPaintImageType, IOptVTKLoader, ICommXYZ };
24
+ export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, IPaintImage, exportPaintImageType, IOptVTKLoader, ICommXYZ, IGUIStates, IGuiParameterSettings, INrrdStates };
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": "2.1.3",
4
+ "version": "2.2.1",
5
5
  "main": "dist/bundle.umd.js",
6
6
  "moudle": "dist/bundle.esm.js",
7
7
  "types": "dist/types/index.d.ts",