@cornerstonejs/core 4.21.5 → 4.21.7

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.
@@ -10,6 +10,7 @@ import viewportTypeUsesCustomRenderingPipeline from './helpers/viewportTypeUsesC
10
10
  import getOrCreateCanvas from './helpers/getOrCreateCanvas';
11
11
  import { getShouldUseCPURendering, isCornerstoneInitialized, getConfiguration, } from '../init';
12
12
  import viewportTypeToViewportClass from './helpers/viewportTypeToViewportClass';
13
+ import ViewportStatus from '../enums/ViewportStatus';
13
14
  import { OrientationAxis } from '../enums';
14
15
  import { StatsOverlay } from './helpers/stats';
15
16
  import { convertColorArrayToRgbString } from '../utilities/convertColorArrayToRgbString';
@@ -304,6 +305,10 @@ class BaseRenderingEngine {
304
305
  _setViewportsToBeRenderedNextFrame(viewportIds) {
305
306
  viewportIds.forEach((viewportId) => {
306
307
  this._needsRender.add(viewportId);
308
+ const viewport = this._viewports.get(viewportId);
309
+ if (viewport) {
310
+ viewport.viewportStatus = ViewportStatus.NEEDS_RENDER;
311
+ }
307
312
  });
308
313
  this._render();
309
314
  }
@@ -1,7 +1,7 @@
1
1
  import type { mat4 } from 'gl-matrix';
2
2
  import type { BlendModes, InterpolationType } from '../enums';
3
3
  import { OrientationAxis } from '../enums';
4
- import type { FlipDirection, IImageData, IVolumeInput, OrientationVectors, Point2, Point3, VolumeViewportProperties, ViewReferenceSpecifier, ReferenceCompatibleOptions, ViewReference, ICamera } from '../types';
4
+ import type { ActorEntry, FlipDirection, IImageData, IVolumeInput, OrientationVectors, Point2, Point3, VolumeViewportProperties, ViewReferenceSpecifier, ReferenceCompatibleOptions, ViewReference, ICamera } from '../types';
5
5
  import type { VoiModifiedEventDetail } from '../types/EventTypes';
6
6
  import type { PlaneRestriction, ViewportInput } from '../types/IViewport';
7
7
  import type { TransferFunctionNodes } from '../types/ITransferFunctionNode';
@@ -56,6 +56,7 @@ declare abstract class BaseVolumeViewport extends Viewport {
56
56
  private setSmoothing;
57
57
  protected shouldUseCustomRenderPass(): boolean;
58
58
  getRenderPasses: () => any[];
59
+ protected _restoreVolumeRenderingDefaults(volumeActor: ActorEntry, volumeId: string): void;
59
60
  resetToDefaultProperties(volumeId: string): void;
60
61
  private setPreset;
61
62
  setSampleDistanceMultiplier(multiplier: number): void;
@@ -14,13 +14,13 @@ import invertRgbTransferFunction from '../utilities/invertRgbTransferFunction';
14
14
  import createSigmoidRGBTransferFunction from '../utilities/createSigmoidRGBTransferFunction';
15
15
  import transformWorldToIndex from '../utilities/transformWorldToIndex';
16
16
  import { findMatchingColormap, updateOpacity as colormapUpdateOpacity, updateThreshold as colormapUpdateThreshold, getThresholdValue, getMaxOpacity, } from '../utilities/colormap';
17
- import { getTransferFunctionNodes } from '../utilities/transferFunctionUtils';
17
+ import { getTransferFunctionNodes, setTransferFunctionNodes, } from '../utilities/transferFunctionUtils';
18
18
  import createVolumeActor from './helpers/createVolumeActor';
19
19
  import volumeNewImageEventDispatcher, { resetVolumeNewImageState, } from './helpers/volumeNewImageEventDispatcher';
20
20
  import Viewport from './Viewport';
21
21
  import vtkSlabCamera from './vtkClasses/vtkSlabCamera';
22
22
  import getVolumeViewportScrollInfo from '../utilities/getVolumeViewportScrollInfo';
23
- import { actorIsA } from '../utilities/actorCheck';
23
+ import { actorIsA, isImageActor } from '../utilities/actorCheck';
24
24
  import snapFocalPointToSlice from '../utilities/snapFocalPointToSlice';
25
25
  import getVoiFromSigmoidRGBTransferFunction from '../utilities/getVoiFromSigmoidRGBTransferFunction';
26
26
  import isEqual, { isEqualAbs, isEqualNegative } from '../utilities/isEqual';
@@ -837,6 +837,21 @@ class BaseVolumeViewport extends Viewport {
837
837
  shouldUseCustomRenderPass() {
838
838
  return !this.useCPURendering;
839
839
  }
840
+ _restoreVolumeRenderingDefaults(volumeActor, volumeId) {
841
+ if (!isImageActor(volumeActor)) {
842
+ return;
843
+ }
844
+ const properties = this.getDefaultProperties(volumeId);
845
+ if (properties?.preset || properties?.colormap) {
846
+ this.setProperties(properties, volumeId, true);
847
+ }
848
+ else {
849
+ const transferFunction = volumeActor.actor
850
+ .getProperty()
851
+ .getRGBTransferFunction(0);
852
+ setTransferFunctionNodes(transferFunction, this.initialTransferFunctionNodes);
853
+ }
854
+ }
840
855
  resetToDefaultProperties(volumeId) {
841
856
  const properties = this.globalDefaultProperties;
842
857
  if (properties.colormap?.name) {
@@ -163,6 +163,7 @@ class ECGViewport extends Viewport {
163
163
  this.drawTraces(ctx, layouts);
164
164
  this.drawLabels(ctx, layouts);
165
165
  ctx.resetTransform();
166
+ this.setRendered();
166
167
  triggerEvent(this.element, EVENTS.IMAGE_RENDERED, {
167
168
  element: this.element,
168
169
  viewportId: this.id,
@@ -125,6 +125,7 @@ class VideoViewport extends Viewport {
125
125
  actor.actor.render(this, this.canvasContext);
126
126
  }
127
127
  this.canvasContext.resetTransform();
128
+ this.setRendered();
128
129
  triggerEvent(this.element, EVENTS.STACK_NEW_IMAGE, {
129
130
  element: this.element,
130
131
  viewportId: this.id,
@@ -55,6 +55,7 @@ declare class Viewport {
55
55
  getRenderPasses: () => any;
56
56
  removeWidgets: () => void;
57
57
  setRendered(): void;
58
+ setNeedsRender(): void;
58
59
  protected setColorTransform(voiRange: any, averageWhite: any): any;
59
60
  getRenderingEngine(): IRenderingEngine;
60
61
  getRenderer(): vtkRenderer;
@@ -101,6 +101,9 @@ class Viewport {
101
101
  }
102
102
  this.viewportStatus = ViewportStatus.RENDERED;
103
103
  }
104
+ setNeedsRender() {
105
+ this.viewportStatus = ViewportStatus.NEEDS_RENDER;
106
+ }
104
107
  setColorTransform(voiRange, averageWhite) {
105
108
  let feFilter = null;
106
109
  if (!voiRange && !averageWhite) {
@@ -3,7 +3,7 @@ import vtkPlane from '@kitware/vtk.js/Common/DataModel/Plane';
3
3
  import cache from '../cache/cache';
4
4
  import { EPSILON, MPR_CAMERA_VALUES, RENDERING_DEFAULTS } from '../constants';
5
5
  import { OrientationAxis, Events } from '../enums';
6
- import { actorIsA, isImageActor } from '../utilities/actorCheck';
6
+ import { actorIsA } from '../utilities/actorCheck';
7
7
  import getClosestImageId from '../utilities/getClosestImageId';
8
8
  import getSliceRange from '../utilities/getSliceRange';
9
9
  import getSpacingInNormalDirection from '../utilities/getSpacingInNormalDirection';
@@ -11,7 +11,6 @@ import snapFocalPointToSlice from '../utilities/snapFocalPointToSlice';
11
11
  import triggerEvent from '../utilities/triggerEvent';
12
12
  import BaseVolumeViewport from './BaseVolumeViewport';
13
13
  import setDefaultVolumeVOI from './helpers/setDefaultVolumeVOI';
14
- import { setTransferFunctionNodes } from '../utilities/transferFunctionUtils';
15
14
  import getImageSliceDataForVolumeViewport from '../utilities/getImageSliceDataForVolumeViewport';
16
15
  import { transformCanvasToIJK } from '../utilities/transformCanvasToIJK';
17
16
  import { transformIJKToCanvas } from '../utilities/transformIJKToCanvas';
@@ -466,12 +465,7 @@ class VolumeViewport extends BaseVolumeViewport {
466
465
  throw new Error(`imageVolume with id: ${volumeId} does not exist in cache`);
467
466
  }
468
467
  setDefaultVolumeVOI(volumeActor.actor, imageVolume);
469
- if (isImageActor(volumeActor)) {
470
- const transferFunction = volumeActor.actor
471
- .getProperty()
472
- .getRGBTransferFunction(0);
473
- setTransferFunctionNodes(transferFunction, this.initialTransferFunctionNodes);
474
- }
468
+ this._restoreVolumeRenderingDefaults(volumeActor, volumeId);
475
469
  const eventDetails = {
476
470
  ...super.getVOIModifiedEventDetail(volumeId),
477
471
  };
@@ -3,8 +3,7 @@ import { OrientationAxis, Events } from '../enums';
3
3
  import cache from '../cache/cache';
4
4
  import setDefaultVolumeVOI from './helpers/setDefaultVolumeVOI';
5
5
  import triggerEvent from '../utilities/triggerEvent';
6
- import { actorIsA, isImageActor } from '../utilities/actorCheck';
7
- import { setTransferFunctionNodes } from '../utilities/transferFunctionUtils';
6
+ import { actorIsA } from '../utilities/actorCheck';
8
7
  import BaseVolumeViewport from './BaseVolumeViewport';
9
8
  class VolumeViewport3D extends BaseVolumeViewport {
10
9
  constructor(props) {
@@ -98,12 +97,7 @@ class VolumeViewport3D extends BaseVolumeViewport {
98
97
  throw new Error(`imageVolume with id: ${volumeId} does not exist in cache`);
99
98
  }
100
99
  setDefaultVolumeVOI(volumeActor.actor, imageVolume);
101
- if (isImageActor(volumeActor)) {
102
- const transferFunction = volumeActor.actor
103
- .getProperty()
104
- .getRGBTransferFunction(0);
105
- setTransferFunctionNodes(transferFunction, this.initialTransferFunctionNodes);
106
- }
100
+ this._restoreVolumeRenderingDefaults(volumeActor, volumeId);
107
101
  this.setCamera(this.initialCamera);
108
102
  triggerEvent(this.element, Events.VOI_MODIFIED, super.getVOIModifiedEventDetail(volumeId));
109
103
  }
@@ -2,6 +2,7 @@ declare enum ViewportStatus {
2
2
  NO_DATA = "noData",
3
3
  LOADING = "loading",
4
4
  PRE_RENDER = "preRender",
5
+ NEEDS_RENDER = "needsRender",
5
6
  RESIZE = "resize",
6
7
  RENDERED = "rendered"
7
8
  }
@@ -3,6 +3,7 @@ var ViewportStatus;
3
3
  ViewportStatus["NO_DATA"] = "noData";
4
4
  ViewportStatus["LOADING"] = "loading";
5
5
  ViewportStatus["PRE_RENDER"] = "preRender";
6
+ ViewportStatus["NEEDS_RENDER"] = "needsRender";
6
7
  ViewportStatus["RESIZE"] = "resize";
7
8
  ViewportStatus["RENDERED"] = "rendered";
8
9
  })(ViewportStatus || (ViewportStatus = {}));
@@ -1 +1 @@
1
- export declare const version = "4.21.5";
1
+ export declare const version = "4.21.7";
@@ -1 +1 @@
1
- export const version = '4.21.5';
1
+ export const version = '4.21.7';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/core",
3
- "version": "4.21.5",
3
+ "version": "4.21.7",
4
4
  "description": "Cornerstone3D Core",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/esm/index.d.ts",
@@ -97,5 +97,5 @@
97
97
  "type": "individual",
98
98
  "url": "https://ohif.org/donate"
99
99
  },
100
- "gitHead": "dd0d71c5bfd944607a629f7087d6b04fd4347e65"
100
+ "gitHead": "3c694f884c03e2aa2f9563dc4fc8d6f7b8a73c5c"
101
101
  }