@cornerstonejs/tools 2.1.0 → 2.1.2

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.
@@ -44,6 +44,7 @@ declare class OrientationMarkerTool extends BaseTool {
44
44
  static AXIS: number;
45
45
  static VTPFILE: number;
46
46
  orientationMarkers: any;
47
+ updatingOrientationMarker: any;
47
48
  polyDataURL: any;
48
49
  _resizeObservers: Map<any, any>;
49
50
  static OVERLAY_MARKER_TYPES: typeof OverlayMarkerType;
@@ -91,6 +91,7 @@ class OrientationMarkerTool extends BaseTool {
91
91
  orientationWidget.updateViewport();
92
92
  };
93
93
  this.orientationMarkers = {};
94
+ this.updatingOrientationMarker = {};
94
95
  }
95
96
  _unsubscribeToViewportNewVolumeSet() {
96
97
  const unsubscribe = () => {
@@ -173,53 +174,58 @@ class OrientationMarkerTool extends BaseTool {
173
174
  let viewports = renderingEngine.getViewports();
174
175
  viewports = filterViewportsWithToolEnabled(viewports, this.getToolName());
175
176
  viewports.forEach((viewport) => {
176
- if (!viewport.getWidget(this.getToolName())) {
177
+ const widget = viewport.getWidget(this.getToolName());
178
+ if (!widget || widget.isDeleted()) {
177
179
  this.addAxisActorInViewport(viewport);
178
180
  }
179
181
  });
180
182
  }
181
183
  async addAxisActorInViewport(viewport) {
182
184
  const viewportId = viewport.id;
183
- const type = this.configuration.overlayMarkerType;
184
- const overlayConfiguration = this.configuration.overlayConfiguration[type];
185
- if (this.orientationMarkers[viewportId]) {
186
- const { actor, orientationWidget } = this.orientationMarkers[viewportId];
187
- viewport.getRenderer().removeActor(actor);
188
- orientationWidget.setEnabled(false);
189
- }
190
- let actor;
191
- if (type === 1) {
192
- actor = this.createAnnotationCube(overlayConfiguration);
193
- }
194
- else if (type === 2) {
195
- actor = vtkAxesActor.newInstance();
196
- }
197
- else if (type === 3) {
198
- actor = await this.createCustomActor();
185
+ if (!this.updatingOrientationMarker[viewportId]) {
186
+ this.updatingOrientationMarker[viewportId] = true;
187
+ const type = this.configuration.overlayMarkerType;
188
+ const overlayConfiguration = this.configuration.overlayConfiguration[type];
189
+ if (this.orientationMarkers[viewportId]) {
190
+ const { actor, orientationWidget } = this.orientationMarkers[viewportId];
191
+ viewport.getRenderer().removeActor(actor);
192
+ orientationWidget.setEnabled(false);
193
+ }
194
+ let actor;
195
+ if (type === 1) {
196
+ actor = this.createAnnotationCube(overlayConfiguration);
197
+ }
198
+ else if (type === 2) {
199
+ actor = vtkAxesActor.newInstance();
200
+ }
201
+ else if (type === 3) {
202
+ actor = await this.createCustomActor();
203
+ }
204
+ const renderer = viewport.getRenderer();
205
+ const renderWindow = viewport
206
+ .getRenderingEngine()
207
+ .offscreenMultiRenderWindow.getRenderWindow();
208
+ const { enabled, viewportCorner, viewportSize, minPixelSize, maxPixelSize, } = this.configuration.orientationWidget;
209
+ const orientationWidget = vtkOrientationMarkerWidget.newInstance({
210
+ actor,
211
+ interactor: renderWindow.getInteractor(),
212
+ parentRenderer: renderer,
213
+ });
214
+ orientationWidget.setEnabled(enabled);
215
+ orientationWidget.setViewportCorner(viewportCorner);
216
+ orientationWidget.setViewportSize(viewportSize);
217
+ orientationWidget.setMinPixelSize(minPixelSize);
218
+ orientationWidget.setMaxPixelSize(maxPixelSize);
219
+ orientationWidget.updateMarkerOrientation();
220
+ this.orientationMarkers[viewportId] = {
221
+ orientationWidget,
222
+ actor,
223
+ };
224
+ viewport.addWidget(this.getToolName(), orientationWidget);
225
+ renderWindow.render();
226
+ viewport.getRenderingEngine().render();
227
+ this.updatingOrientationMarker[viewportId] = false;
199
228
  }
200
- const renderer = viewport.getRenderer();
201
- const renderWindow = viewport
202
- .getRenderingEngine()
203
- .offscreenMultiRenderWindow.getRenderWindow();
204
- const { enabled, viewportCorner, viewportSize, minPixelSize, maxPixelSize, } = this.configuration.orientationWidget;
205
- const orientationWidget = vtkOrientationMarkerWidget.newInstance({
206
- actor,
207
- interactor: renderWindow.getInteractor(),
208
- parentRenderer: renderer,
209
- });
210
- orientationWidget.setEnabled(enabled);
211
- orientationWidget.setViewportCorner(viewportCorner);
212
- orientationWidget.setViewportSize(viewportSize);
213
- orientationWidget.setMinPixelSize(minPixelSize);
214
- orientationWidget.setMaxPixelSize(maxPixelSize);
215
- orientationWidget.updateMarkerOrientation();
216
- this.orientationMarkers[viewportId] = {
217
- orientationWidget,
218
- actor,
219
- };
220
- viewport.addWidget(this.getToolName(), orientationWidget);
221
- renderWindow.render();
222
- viewport.getRenderingEngine().render();
223
229
  }
224
230
  async createCustomActor() {
225
231
  const url = this.configuration.overlayConfiguration[OverlayMarkerType.CUSTOM]
@@ -17,7 +17,6 @@ import { getCalibratedLengthUnitsAndScale, getCalibratedAspect, } from '../../ut
17
17
  import { isViewportPreScaled } from '../../utilities/viewport/isViewportPreScaled';
18
18
  import { pointInEllipse } from '../../utilities/math/ellipse';
19
19
  import { BasicStatsCalculator } from '../../utilities/math/basic';
20
- import cloneDeep from 'lodash.clonedeep';
21
20
  import { filterAnnotationsWithinSamePlane } from '../../utilities/planar';
22
21
  import { getPixelValueUnits } from '../../utilities/getPixelValueUnits';
23
22
  const { transformWorldToIndex } = csUtils;
@@ -295,7 +294,7 @@ class CircleROIStartEndThresholdTool extends CircleROITool {
295
294
  const { points } = data.handles;
296
295
  const startIJK = transformWorldToIndex(imageData, points[0]);
297
296
  const endIJK = transformWorldToIndex(imageData, points[0]);
298
- const handlesToStart = cloneDeep(points);
297
+ const handlesToStart = csUtils.deepClone(points);
299
298
  const startWorld = vec3.create();
300
299
  imageData.indexToWorldVec3(startIJK, startWorld);
301
300
  const endWorld = vec3.create();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/tools",
3
- "version": "2.1.0",
3
+ "version": "2.1.2",
4
4
  "description": "Cornerstone3D Tools",
5
5
  "main": "./dist/esm/index.js",
6
6
  "types": "./dist/esm/index.d.ts",
@@ -105,7 +105,7 @@
105
105
  "canvas": "^2.11.2"
106
106
  },
107
107
  "peerDependencies": {
108
- "@cornerstonejs/core": "^2.1.0",
108
+ "@cornerstonejs/core": "^2.1.2",
109
109
  "@kitware/vtk.js": "32.1.0",
110
110
  "@types/d3-array": "^3.0.4",
111
111
  "@types/d3-interpolate": "^3.0.1",
@@ -124,5 +124,5 @@
124
124
  "type": "individual",
125
125
  "url": "https://ohif.org/donate"
126
126
  },
127
- "gitHead": "36016cf1416e1b7faf5ef82ce07f8a973c199da2"
127
+ "gitHead": "b7246ebfa82367e338a6cf7d09fa0be14be00822"
128
128
  }