diff --git a/common/reviews/api/streaming-image-volume-loader.api.md b/common/reviews/api/streaming-image-volume-loader.api.md index 4fc425b4be..da8cc864ce 100644 --- a/common/reviews/api/streaming-image-volume-loader.api.md +++ b/common/reviews/api/streaming-image-volume-loader.api.md @@ -467,6 +467,13 @@ type ElementEnabledEventDetail = { renderingEngineId: string; }; +declare namespace Enums { + export { + Events_2 as Events + } +} +export { Enums } + // @public enum Events { CACHE_SIZE_EXCEEDED = 'CACHE_SIZE_EXCEEDED', @@ -513,6 +520,12 @@ enum Events { // ELEMENT_RESIZED = 'CORNERSTONE_ELEMENT_RESIZED', } +// @public (undocumented) +enum Events_2 { + // (undocumented) + DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED = "DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED" +} + declare namespace EventTypes { export { CameraModifiedEventDetail, diff --git a/packages/core/src/RenderingEngine/BaseVolumeViewport.ts b/packages/core/src/RenderingEngine/BaseVolumeViewport.ts index 6ba736414a..5e62cc3021 100644 --- a/packages/core/src/RenderingEngine/BaseVolumeViewport.ts +++ b/packages/core/src/RenderingEngine/BaseVolumeViewport.ts @@ -46,7 +46,6 @@ import { invertRgbTransferFunction, triggerEvent, colormap as colormapUtils, - isImageActor, } from '../utilities'; import { createVolumeActor } from './helpers'; import volumeNewImageEventDispatcher, { @@ -565,7 +564,7 @@ abstract class BaseVolumeViewport extends Viewport implements IVolumeViewport { this.setVOILUTFunction(VOILUTFunction, volumeId, suppressEvents); } - if (invert !== undefined) { + if (invert !== undefined && this.viewportProperties.invert !== invert) { this.setInvert(invert, volumeId, suppressEvents); } @@ -1033,8 +1032,6 @@ abstract class BaseVolumeViewport extends Viewport implements IVolumeViewport { // New volume actors implies resetting the inverted flag (i.e. like starting from scratch). for (let i = 0; i < volumeActorEntries.length; i++) { - const volumeId = volumeActorEntries[i].uid; - this.viewportProperties.invert = false; } this.setActors(volumeActorEntries); diff --git a/packages/streaming-image-volume-loader/src/StreamingDynamicImageVolume.ts b/packages/streaming-image-volume-loader/src/StreamingDynamicImageVolume.ts index 16c8e75506..d5a958f02a 100644 --- a/packages/streaming-image-volume-loader/src/StreamingDynamicImageVolume.ts +++ b/packages/streaming-image-volume-loader/src/StreamingDynamicImageVolume.ts @@ -1,5 +1,6 @@ -import type { Types } from '@cornerstonejs/core'; +import { eventTarget, triggerEvent, type Types } from '@cornerstonejs/core'; import BaseStreamingImageVolume from './BaseStreamingImageVolume'; +import { Events as StreamingEvents } from './enums'; type TimePoint = { /** imageIds of each timepoint */ @@ -146,6 +147,15 @@ export default class StreamingDynamicImageVolume this._timePointIndex = newTimePointIndex; imageData.getPointData().setActiveScalars(`timePoint-${newTimePointIndex}`); this.invalidateVolume(true); + + triggerEvent( + eventTarget, + StreamingEvents.DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED, + { + volumeId: this.volumeId, + timePointIndex: newTimePointIndex, + } + ); } /** diff --git a/packages/streaming-image-volume-loader/src/enums/Events.ts b/packages/streaming-image-volume-loader/src/enums/Events.ts new file mode 100644 index 0000000000..2431185a08 --- /dev/null +++ b/packages/streaming-image-volume-loader/src/enums/Events.ts @@ -0,0 +1,16 @@ +/** + * The events for cornerstone streaming image volume + * + */ +enum Events { + /////////////////////////////////////// + // Loading Events + /////////////////////////////////////// + + /** + * Dynamic image volume time point index changed + */ + DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED = 'DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED', +} + +export default Events; diff --git a/packages/streaming-image-volume-loader/src/enums/index.js b/packages/streaming-image-volume-loader/src/enums/index.js new file mode 100644 index 0000000000..e43e8a9d50 --- /dev/null +++ b/packages/streaming-image-volume-loader/src/enums/index.js @@ -0,0 +1,3 @@ +import Events from './Events'; + +export { Events }; diff --git a/packages/streaming-image-volume-loader/src/index.ts b/packages/streaming-image-volume-loader/src/index.ts index a3a7a32e35..43f9cf7b64 100644 --- a/packages/streaming-image-volume-loader/src/index.ts +++ b/packages/streaming-image-volume-loader/src/index.ts @@ -4,6 +4,7 @@ import StreamingImageVolume from './StreamingImageVolume'; import StreamingDynamicImageVolume from './StreamingDynamicImageVolume'; import getDynamicVolumeInfo from './helpers/getDynamicVolumeInfo'; import { sortImageIdsAndGetSpacing } from './helpers'; +import * as Enums from './enums'; const helpers = { getDynamicVolumeInfo, @@ -16,4 +17,5 @@ export { StreamingImageVolume, StreamingDynamicImageVolume, helpers, + Enums, };