@cornerstonejs/tools 2.1.0 → 2.1.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.
@@ -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]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/tools",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
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.1",
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": "1a1d3b83e7513f7d72fb34d702a8260d1859883c"
128
128
  }