copper3d 2.1.3 → 2.2.0

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
@@ -71811,7 +71827,7 @@ class DrawToolCore extends CommToolsData {
71811
71827
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
71812
71828
  }
71813
71829
  zoomActionAfterDrawSphere() {
71814
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71830
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71815
71831
  }
71816
71832
  clearSpherePrintStoreImages() {
71817
71833
  this.protectedData.maskData.paintImages.x.length = 0;
@@ -71844,9 +71860,14 @@ class DrawToolCore extends CommToolsData {
71844
71860
  this.protectedData.previousDrawingImage =
71845
71861
  this.protectedData.ctxes.drawingCtx.getImageData(0, 0, this.protectedData.canvases.drawingCanvas.width, this.protectedData.canvases.drawingCanvas.height);
71846
71862
  // let a global variable to store the wheel move event
71847
- this.drawingPrameters.handleZoomWheel = this.configMouseZoomWheel();
71863
+ if (this.nrrd_states.keyboardSettings.mouseWheel === "Scroll:Zoom") {
71864
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
71865
+ }
71866
+ else {
71867
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseSliceWheel();
71868
+ }
71848
71869
  // init to add it
71849
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel, {
71870
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel, {
71850
71871
  passive: false,
71851
71872
  });
71852
71873
  // sphere Wheel
@@ -71910,7 +71931,7 @@ class DrawToolCore extends CommToolsData {
71910
71931
  currentSliceIndex = this.protectedData.mainPreSlices.index;
71911
71932
  }
71912
71933
  // remove it when mouse click down
71913
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71934
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71914
71935
  if (e.button === 0) {
71915
71936
  if (this.protectedData.Is_Shift_Pressed) {
71916
71937
  leftclicked = true;
@@ -71969,7 +71990,7 @@ class DrawToolCore extends CommToolsData {
71969
71990
  const sphere = (e) => {
71970
71991
  // set sphere size
71971
71992
  this.nrrd_states.sphereRadius = 10;
71972
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71993
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71973
71994
  let mouseX = e.offsetX / this.nrrd_states.sizeFoctor;
71974
71995
  let mouseY = e.offsetY / this.nrrd_states.sizeFoctor;
71975
71996
  // record mouseX,Y, and enable crosshair function
@@ -72070,7 +72091,7 @@ class DrawToolCore extends CommToolsData {
72070
72091
  this.undoArray.push(undoObj);
72071
72092
  }
72072
72093
  // add wheel after pointer up
72073
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel, {
72094
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel, {
72074
72095
  passive: false,
72075
72096
  });
72076
72097
  }
@@ -72091,12 +72112,12 @@ class DrawToolCore extends CommToolsData {
72091
72112
  !!this.nrrd_states.getSphere &&
72092
72113
  this.nrrd_states.getSphere(this.nrrd_states.sphereOrigin.z, this.nrrd_states.sphereRadius / this.nrrd_states.sizeFoctor);
72093
72114
  this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleSphereWheel, true);
72094
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
72115
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
72095
72116
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
72096
72117
  }
72097
72118
  else if ((this.gui_states.sphere || this.gui_states.calculator) &&
72098
72119
  this.nrrd_states.enableCursorChoose) {
72099
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
72120
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
72100
72121
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
72101
72122
  }
72102
72123
  else if (this.gui_states.calculator &&
@@ -72282,7 +72303,7 @@ class DrawToolCore extends CommToolsData {
72282
72303
  // drawing canvas mouse zoom wheel
72283
72304
  configMouseZoomWheel() {
72284
72305
  let moveDistance = 1;
72285
- const handleZoomWheelMove = (e) => {
72306
+ const handleMouseZoomSliceWheelMove = (e) => {
72286
72307
  if (this.protectedData.Is_Shift_Pressed) {
72287
72308
  return;
72288
72309
  }
@@ -72320,7 +72341,14 @@ class DrawToolCore extends CommToolsData {
72320
72341
  this.setIsDrawFalse(1000);
72321
72342
  this.nrrd_states.sizeFoctor = moveDistance;
72322
72343
  };
72323
- return handleZoomWheelMove;
72344
+ return handleMouseZoomSliceWheelMove;
72345
+ }
72346
+ configMouseSliceWheel() {
72347
+ /**
72348
+ * Interface for slice wheel
72349
+ * Implement in the NrrdTools class
72350
+ * */
72351
+ throw new Error("Child class must implement abstract redrawDisplayCanvas, currently you can find it in NrrdTools.");
72324
72352
  }
72325
72353
  enableCrosshair() {
72326
72354
  this.nrrd_states.isCursorSelect = true;
@@ -73977,6 +74005,42 @@ class NrrdTools extends DrawToolCore {
73977
74005
  (_c = this.protectedData.ctxes.displayCtx) === null || _c === void 0 ? void 0 : _c.restore();
73978
74006
  }
73979
74007
  }
74008
+ /**
74009
+ * Config mouse slice wheel event.
74010
+ */
74011
+ configMouseSliceWheel() {
74012
+ const handleMouseZoomSliceWheelMove = (e) => {
74013
+ if (this.protectedData.Is_Shift_Pressed) {
74014
+ return;
74015
+ }
74016
+ e.preventDefault();
74017
+ if (e.deltaY < 0) {
74018
+ this.setSliceMoving(-1);
74019
+ }
74020
+ else if (e.deltaY > 0) {
74021
+ this.setSliceMoving(1);
74022
+ }
74023
+ };
74024
+ return handleMouseZoomSliceWheelMove;
74025
+ }
74026
+ /**
74027
+ * Update mouse wheel event.
74028
+ */
74029
+ updateMouseWheelEvent() {
74030
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
74031
+ switch (this.nrrd_states.keyboardSettings.mouseWheel) {
74032
+ case "Scroll:Zoom":
74033
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
74034
+ break;
74035
+ case "Scroll:Slice":
74036
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseSliceWheel();
74037
+ break;
74038
+ default:
74039
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
74040
+ break;
74041
+ }
74042
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
74043
+ }
73980
74044
  }
73981
74045
 
73982
74046
  class Node {
@@ -74186,7 +74250,7 @@ function evaluateElement(element, weights) {
74186
74250
  }
74187
74251
 
74188
74252
  // 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");
74253
+ const REVISION = "v2.2.0";
74254
+ console.log("%cCopper3D Visualisation %cBeta:v2.2.0", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
74191
74255
 
74192
74256
  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
@@ -71819,7 +71835,7 @@ void main() {
71819
71835
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
71820
71836
  }
71821
71837
  zoomActionAfterDrawSphere() {
71822
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71838
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71823
71839
  }
71824
71840
  clearSpherePrintStoreImages() {
71825
71841
  this.protectedData.maskData.paintImages.x.length = 0;
@@ -71852,9 +71868,14 @@ void main() {
71852
71868
  this.protectedData.previousDrawingImage =
71853
71869
  this.protectedData.ctxes.drawingCtx.getImageData(0, 0, this.protectedData.canvases.drawingCanvas.width, this.protectedData.canvases.drawingCanvas.height);
71854
71870
  // let a global variable to store the wheel move event
71855
- this.drawingPrameters.handleZoomWheel = this.configMouseZoomWheel();
71871
+ if (this.nrrd_states.keyboardSettings.mouseWheel === "Scroll:Zoom") {
71872
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
71873
+ }
71874
+ else {
71875
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseSliceWheel();
71876
+ }
71856
71877
  // init to add it
71857
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel, {
71878
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel, {
71858
71879
  passive: false,
71859
71880
  });
71860
71881
  // sphere Wheel
@@ -71918,7 +71939,7 @@ void main() {
71918
71939
  currentSliceIndex = this.protectedData.mainPreSlices.index;
71919
71940
  }
71920
71941
  // remove it when mouse click down
71921
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
71942
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71922
71943
  if (e.button === 0) {
71923
71944
  if (this.protectedData.Is_Shift_Pressed) {
71924
71945
  leftclicked = true;
@@ -71977,7 +71998,7 @@ void main() {
71977
71998
  const sphere = (e) => {
71978
71999
  // set sphere size
71979
72000
  this.nrrd_states.sphereRadius = 10;
71980
- this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleZoomWheel);
72001
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
71981
72002
  let mouseX = e.offsetX / this.nrrd_states.sizeFoctor;
71982
72003
  let mouseY = e.offsetY / this.nrrd_states.sizeFoctor;
71983
72004
  // record mouseX,Y, and enable crosshair function
@@ -72078,7 +72099,7 @@ void main() {
72078
72099
  this.undoArray.push(undoObj);
72079
72100
  }
72080
72101
  // add wheel after pointer up
72081
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel, {
72102
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel, {
72082
72103
  passive: false,
72083
72104
  });
72084
72105
  }
@@ -72099,12 +72120,12 @@ void main() {
72099
72120
  !!this.nrrd_states.getSphere &&
72100
72121
  this.nrrd_states.getSphere(this.nrrd_states.sphereOrigin.z, this.nrrd_states.sphereRadius / this.nrrd_states.sizeFoctor);
72101
72122
  this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleSphereWheel, true);
72102
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
72123
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
72103
72124
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
72104
72125
  }
72105
72126
  else if ((this.gui_states.sphere || this.gui_states.calculator) &&
72106
72127
  this.nrrd_states.enableCursorChoose) {
72107
- this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleZoomWheel);
72128
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
72108
72129
  this.protectedData.canvases.drawingCanvas.removeEventListener("pointerup", this.drawingPrameters.handleOnDrawingMouseUp);
72109
72130
  }
72110
72131
  else if (this.gui_states.calculator &&
@@ -72290,7 +72311,7 @@ void main() {
72290
72311
  // drawing canvas mouse zoom wheel
72291
72312
  configMouseZoomWheel() {
72292
72313
  let moveDistance = 1;
72293
- const handleZoomWheelMove = (e) => {
72314
+ const handleMouseZoomSliceWheelMove = (e) => {
72294
72315
  if (this.protectedData.Is_Shift_Pressed) {
72295
72316
  return;
72296
72317
  }
@@ -72328,7 +72349,14 @@ void main() {
72328
72349
  this.setIsDrawFalse(1000);
72329
72350
  this.nrrd_states.sizeFoctor = moveDistance;
72330
72351
  };
72331
- return handleZoomWheelMove;
72352
+ return handleMouseZoomSliceWheelMove;
72353
+ }
72354
+ configMouseSliceWheel() {
72355
+ /**
72356
+ * Interface for slice wheel
72357
+ * Implement in the NrrdTools class
72358
+ * */
72359
+ throw new Error("Child class must implement abstract redrawDisplayCanvas, currently you can find it in NrrdTools.");
72332
72360
  }
72333
72361
  enableCrosshair() {
72334
72362
  this.nrrd_states.isCursorSelect = true;
@@ -73985,6 +74013,42 @@ void main() {
73985
74013
  (_c = this.protectedData.ctxes.displayCtx) === null || _c === void 0 ? void 0 : _c.restore();
73986
74014
  }
73987
74015
  }
74016
+ /**
74017
+ * Config mouse slice wheel event.
74018
+ */
74019
+ configMouseSliceWheel() {
74020
+ const handleMouseZoomSliceWheelMove = (e) => {
74021
+ if (this.protectedData.Is_Shift_Pressed) {
74022
+ return;
74023
+ }
74024
+ e.preventDefault();
74025
+ if (e.deltaY < 0) {
74026
+ this.setSliceMoving(-1);
74027
+ }
74028
+ else if (e.deltaY > 0) {
74029
+ this.setSliceMoving(1);
74030
+ }
74031
+ };
74032
+ return handleMouseZoomSliceWheelMove;
74033
+ }
74034
+ /**
74035
+ * Update mouse wheel event.
74036
+ */
74037
+ updateMouseWheelEvent() {
74038
+ this.protectedData.canvases.drawingCanvas.removeEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
74039
+ switch (this.nrrd_states.keyboardSettings.mouseWheel) {
74040
+ case "Scroll:Zoom":
74041
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
74042
+ break;
74043
+ case "Scroll:Slice":
74044
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseSliceWheel();
74045
+ break;
74046
+ default:
74047
+ this.drawingPrameters.handleMouseZoomSliceWheel = this.configMouseZoomWheel();
74048
+ break;
74049
+ }
74050
+ this.protectedData.canvases.drawingCanvas.addEventListener("wheel", this.drawingPrameters.handleMouseZoomSliceWheel);
74051
+ }
73988
74052
  }
73989
74053
 
73990
74054
  class Node {
@@ -74194,8 +74258,8 @@ void main() {
74194
74258
  }
74195
74259
 
74196
74260
  // 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");
74261
+ const REVISION = "v2.2.0";
74262
+ console.log("%cCopper3D Visualisation %cBeta:v2.2.0", "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
74199
74263
 
74200
74264
  exports.CameraViewPoint = CameraViewPoint;
74201
74265
  exports.Copper3dTrackballControls = Copper3dTrackballControls;
package/dist/index.d.ts CHANGED
@@ -19,6 +19,6 @@ 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
20
  import { IPaintImage, ICommXYZ } 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.0";
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
  export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, IPaintImage, exportPaintImageType, IOptVTKLoader, ICommXYZ };
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.0";
22
+ console.log("%cCopper3D Visualisation %cBeta:v2.2.0", "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;
@@ -19,6 +19,6 @@ 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
20
  import { IPaintImage, ICommXYZ } 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.0";
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
  export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, IPaintImage, exportPaintImageType, IOptVTKLoader, ICommXYZ };
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.0",
5
5
  "main": "dist/bundle.umd.js",
6
6
  "moudle": "dist/bundle.esm.js",
7
7
  "types": "dist/types/index.d.ts",