copper3d 2.1.2 → 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;
@@ -72558,7 +72586,7 @@ class DrawToolCore extends CommToolsData {
72558
72586
  },
72559
72587
  y: {
72560
72588
  x: (val) => Math.ceil((val / nrrd_y_mm) * dimensions[1]),
72561
- z: (val) => Math.ceil((val / nrrd_z_mm) * dimensions[2]),
72589
+ z: (val) => Math.ceil((1 - val / nrrd_z_mm) * dimensions[2]),
72562
72590
  },
72563
72591
  z: {
72564
72592
  x: (val) => Math.ceil((val / nrrd_x_mm) * dimensions[0]),
@@ -72576,7 +72604,7 @@ class DrawToolCore extends CommToolsData {
72576
72604
  },
72577
72605
  z: {
72578
72606
  x: (sliceIndex) => Math.ceil((sliceIndex / dimensions[2]) * nrrd_z_mm),
72579
- y: (sliceIndex) => Math.ceil((sliceIndex / dimensions[2]) * nrrd_z_mm),
72607
+ y: (sliceIndex) => Math.ceil((1 - sliceIndex / dimensions[2]) * nrrd_z_mm),
72580
72608
  },
72581
72609
  };
72582
72610
  if (from === to) {
@@ -72592,7 +72620,7 @@ class DrawToolCore extends CommToolsData {
72592
72620
  currentIndex = convertIndex[from][to](cursorNumX);
72593
72621
  oldIndex = currentIndex * ratios.x;
72594
72622
  convertCursorNumY = convertCursor[from][to](currentSliceIndex);
72595
- convertCursorNumX = cursorNumY;
72623
+ convertCursorNumX = dimensions[2] * ratios.z - cursorNumY;
72596
72624
  }
72597
72625
  else if (from === "z" && to === "y") {
72598
72626
  currentIndex = convertIndex[from][to](cursorNumY);
@@ -72604,7 +72632,7 @@ class DrawToolCore extends CommToolsData {
72604
72632
  currentIndex = convertIndex[from][to](cursorNumY);
72605
72633
  oldIndex = currentIndex * ratios[to];
72606
72634
  convertCursorNumX = convertCursor[from][to](currentSliceIndex);
72607
- convertCursorNumY = cursorNumX;
72635
+ convertCursorNumY = dimensions[2] * ratios.z - cursorNumX;
72608
72636
  }
72609
72637
  else if (from === "x" && to === "z") {
72610
72638
  currentIndex = convertIndex[from][to](cursorNumX);
@@ -73909,7 +73937,7 @@ class NrrdTools extends DrawToolCore {
73909
73937
  * Under different axis(sagittal, Axial, Coronal), the flip orientation is different.
73910
73938
  */
73911
73939
  flipDisplayImageByAxis() {
73912
- var _a, _b, _c, _d;
73940
+ var _a, _b, _c, _d, _e, _f;
73913
73941
  if (this.protectedData.axis === "x") {
73914
73942
  (_a = this.protectedData.ctxes.displayCtx) === null || _a === void 0 ? void 0 : _a.scale(-1, -1);
73915
73943
  (_b = this.protectedData.ctxes.displayCtx) === null || _b === void 0 ? void 0 : _b.translate(-this.nrrd_states.changedWidth, -this.nrrd_states.changedHeight);
@@ -73918,6 +73946,10 @@ class NrrdTools extends DrawToolCore {
73918
73946
  (_c = this.protectedData.ctxes.displayCtx) === null || _c === void 0 ? void 0 : _c.scale(1, -1);
73919
73947
  (_d = this.protectedData.ctxes.displayCtx) === null || _d === void 0 ? void 0 : _d.translate(0, -this.nrrd_states.changedHeight);
73920
73948
  }
73949
+ else if (this.protectedData.axis === "y") {
73950
+ (_e = this.protectedData.ctxes.displayCtx) === null || _e === void 0 ? void 0 : _e.scale(1, -1);
73951
+ (_f = this.protectedData.ctxes.displayCtx) === null || _f === void 0 ? void 0 : _f.translate(0, -this.nrrd_states.changedHeight);
73952
+ }
73921
73953
  }
73922
73954
  clearDictionary(dic) {
73923
73955
  for (var key in dic) {
@@ -73973,6 +74005,42 @@ class NrrdTools extends DrawToolCore {
73973
74005
  (_c = this.protectedData.ctxes.displayCtx) === null || _c === void 0 ? void 0 : _c.restore();
73974
74006
  }
73975
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
+ }
73976
74044
  }
73977
74045
 
73978
74046
  class Node {
@@ -74182,7 +74250,7 @@ function evaluateElement(element, weights) {
74182
74250
  }
74183
74251
 
74184
74252
  // import * as kiwrious from "copper3d_plugin_heart_k";
74185
- const REVISION = "v2.1.2";
74186
- console.log("%cCopper3D Visualisation %cBeta:v2.1.2", "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");
74187
74255
 
74188
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;
@@ -72566,7 +72594,7 @@ void main() {
72566
72594
  },
72567
72595
  y: {
72568
72596
  x: (val) => Math.ceil((val / nrrd_y_mm) * dimensions[1]),
72569
- z: (val) => Math.ceil((val / nrrd_z_mm) * dimensions[2]),
72597
+ z: (val) => Math.ceil((1 - val / nrrd_z_mm) * dimensions[2]),
72570
72598
  },
72571
72599
  z: {
72572
72600
  x: (val) => Math.ceil((val / nrrd_x_mm) * dimensions[0]),
@@ -72584,7 +72612,7 @@ void main() {
72584
72612
  },
72585
72613
  z: {
72586
72614
  x: (sliceIndex) => Math.ceil((sliceIndex / dimensions[2]) * nrrd_z_mm),
72587
- y: (sliceIndex) => Math.ceil((sliceIndex / dimensions[2]) * nrrd_z_mm),
72615
+ y: (sliceIndex) => Math.ceil((1 - sliceIndex / dimensions[2]) * nrrd_z_mm),
72588
72616
  },
72589
72617
  };
72590
72618
  if (from === to) {
@@ -72600,7 +72628,7 @@ void main() {
72600
72628
  currentIndex = convertIndex[from][to](cursorNumX);
72601
72629
  oldIndex = currentIndex * ratios.x;
72602
72630
  convertCursorNumY = convertCursor[from][to](currentSliceIndex);
72603
- convertCursorNumX = cursorNumY;
72631
+ convertCursorNumX = dimensions[2] * ratios.z - cursorNumY;
72604
72632
  }
72605
72633
  else if (from === "z" && to === "y") {
72606
72634
  currentIndex = convertIndex[from][to](cursorNumY);
@@ -72612,7 +72640,7 @@ void main() {
72612
72640
  currentIndex = convertIndex[from][to](cursorNumY);
72613
72641
  oldIndex = currentIndex * ratios[to];
72614
72642
  convertCursorNumX = convertCursor[from][to](currentSliceIndex);
72615
- convertCursorNumY = cursorNumX;
72643
+ convertCursorNumY = dimensions[2] * ratios.z - cursorNumX;
72616
72644
  }
72617
72645
  else if (from === "x" && to === "z") {
72618
72646
  currentIndex = convertIndex[from][to](cursorNumX);
@@ -73917,7 +73945,7 @@ void main() {
73917
73945
  * Under different axis(sagittal, Axial, Coronal), the flip orientation is different.
73918
73946
  */
73919
73947
  flipDisplayImageByAxis() {
73920
- var _a, _b, _c, _d;
73948
+ var _a, _b, _c, _d, _e, _f;
73921
73949
  if (this.protectedData.axis === "x") {
73922
73950
  (_a = this.protectedData.ctxes.displayCtx) === null || _a === void 0 ? void 0 : _a.scale(-1, -1);
73923
73951
  (_b = this.protectedData.ctxes.displayCtx) === null || _b === void 0 ? void 0 : _b.translate(-this.nrrd_states.changedWidth, -this.nrrd_states.changedHeight);
@@ -73926,6 +73954,10 @@ void main() {
73926
73954
  (_c = this.protectedData.ctxes.displayCtx) === null || _c === void 0 ? void 0 : _c.scale(1, -1);
73927
73955
  (_d = this.protectedData.ctxes.displayCtx) === null || _d === void 0 ? void 0 : _d.translate(0, -this.nrrd_states.changedHeight);
73928
73956
  }
73957
+ else if (this.protectedData.axis === "y") {
73958
+ (_e = this.protectedData.ctxes.displayCtx) === null || _e === void 0 ? void 0 : _e.scale(1, -1);
73959
+ (_f = this.protectedData.ctxes.displayCtx) === null || _f === void 0 ? void 0 : _f.translate(0, -this.nrrd_states.changedHeight);
73960
+ }
73929
73961
  }
73930
73962
  clearDictionary(dic) {
73931
73963
  for (var key in dic) {
@@ -73981,6 +74013,42 @@ void main() {
73981
74013
  (_c = this.protectedData.ctxes.displayCtx) === null || _c === void 0 ? void 0 : _c.restore();
73982
74014
  }
73983
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
+ }
73984
74052
  }
73985
74053
 
73986
74054
  class Node {
@@ -74190,8 +74258,8 @@ void main() {
74190
74258
  }
74191
74259
 
74192
74260
  // import * as kiwrious from "copper3d_plugin_heart_k";
74193
- const REVISION = "v2.1.2";
74194
- console.log("%cCopper3D Visualisation %cBeta:v2.1.2", "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");
74195
74263
 
74196
74264
  exports.CameraViewPoint = CameraViewPoint;
74197
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.2";
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.2";
22
- console.log("%cCopper3D Visualisation %cBeta:v2.1.2", "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