From 951f2a53bd0add3236dae3743dd341d836cb457b Mon Sep 17 00:00:00 2001 From: Leonardo Campos Date: Thu, 13 Jul 2023 11:32:25 -0300 Subject: [PATCH 1/2] added IMAGE_VOLUME_LOADING_COMPLETED event --- packages/core/src/enums/Events.ts | 9 +++++++++ packages/core/src/types/EventTypes.ts | 20 +++++++++++++++++++ .../src/BaseStreamingImageVolume.ts | 11 ++++++++++ 3 files changed, 40 insertions(+) diff --git a/packages/core/src/enums/Events.ts b/packages/core/src/enums/Events.ts index 6453a22e9..a204f5a4d 100644 --- a/packages/core/src/enums/Events.ts +++ b/packages/core/src/enums/Events.ts @@ -75,6 +75,15 @@ enum Events { * and see what event detail is included in {@link EventTypes.ImageVolumeModifiedEventDetail | ImageVolumeModified Event Detail } */ IMAGE_VOLUME_MODIFIED = 'CORNERSTONE_IMAGE_VOLUME_MODIFIED', + /** + * Triggers on the eventTarget when the image volume loading is completed and all + * frames are loaded and inserted into a volume. + * + * Make use of {@link EventTypes.ImageVolumeLoadingCompletedEvent | ImageVolumeLoadingCompleted Event Type } for typing your + * event listeners for IMAGE_VOLUME_LOADING_COMPLETED event, and see what event detail is included + * in {@link EventTypes.ImageVolumeLoadingCompletedEventDetail | ImageVolumeLoadingCompleted Event Detail } + */ + IMAGE_VOLUME_LOADING_COMPLETED = 'CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED', /** * Triggers on the eventTarget when the image has successfully loaded by imageLoaders * diff --git a/packages/core/src/types/EventTypes.ts b/packages/core/src/types/EventTypes.ts index ec6a89048..a92638e99 100644 --- a/packages/core/src/types/EventTypes.ts +++ b/packages/core/src/types/EventTypes.ts @@ -107,6 +107,16 @@ type ImageVolumeModifiedEventDetail = { FrameOfReferenceUID: string; }; +/** + * IMAGE_VOLUME_LOADING_COMPLETED Event's data + */ +type ImageVolumeLoadingCompletedEventDetail = { + /** the loaded volume */ + volumeId: string; + /** FrameOfReferenceUID where the volume belongs to */ + FrameOfReferenceUID: string; +}; + /** * IMAGE_LOADED Event's data */ @@ -304,6 +314,14 @@ type ImageRenderedEvent = CustomEventType; */ type ImageVolumeModifiedEvent = CustomEventType; +/** + * IMAGE_VOLUME_LOADING_COMPLETED Event type + * This event is fired when a volume is fully loaded, means all the frames + * are loaded and cached. + */ +type ImageVolumeLoadingCompletedEvent = + CustomEventType; + /** * IMAGE_LOADED Event type */ @@ -397,6 +415,8 @@ export type { ImageRenderedEvent, ImageVolumeModifiedEvent, ImageVolumeModifiedEventDetail, + ImageVolumeLoadingCompletedEvent, + ImageVolumeLoadingCompletedEventDetail, ImageLoadedEvent, ImageLoadedEventDetail, ImageLoadedFailedEventDetail, diff --git a/packages/streaming-image-volume-loader/src/BaseStreamingImageVolume.ts b/packages/streaming-image-volume-loader/src/BaseStreamingImageVolume.ts index ac6979579..83a027781 100644 --- a/packages/streaming-image-volume-loader/src/BaseStreamingImageVolume.ts +++ b/packages/streaming-image-volume-loader/src/BaseStreamingImageVolume.ts @@ -304,6 +304,17 @@ export default class BaseStreamingImageVolume extends ImageVolume { if (evt.framesProcessed === evt.totalNumFrames) { loadStatus.callbacks.forEach((callback) => callback(evt)); + + const eventDetail = { + FrameOfReferenceUID, + volumeId: volumeId, + }; + + triggerEvent( + eventTarget, + Enums.Events.IMAGE_VOLUME_LOADING_COMPLETED, + eventDetail + ); } } From 54eaca6627fc99021bde523c6c5e98406e31d644 Mon Sep 17 00:00:00 2001 From: Leonardo Campos Date: Wed, 26 Jul 2023 01:23:31 -0300 Subject: [PATCH 2/2] api doc --- common/reviews/api/core.api.md | 13 +++++++++++++ .../api/streaming-image-volume-loader.api.md | 15 ++++++++++++++- common/reviews/api/tools.api.md | 12 ++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/common/reviews/api/core.api.md b/common/reviews/api/core.api.md index 137201412..7851c4719 100644 --- a/common/reviews/api/core.api.md +++ b/common/reviews/api/core.api.md @@ -614,6 +614,8 @@ export enum EVENTS { // (undocumented) IMAGE_SPACING_CALIBRATED = "CORNERSTONE_IMAGE_SPACING_CALIBRATED", // (undocumented) + IMAGE_VOLUME_LOADING_COMPLETED = "CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED", + // (undocumented) IMAGE_VOLUME_MODIFIED = "CORNERSTONE_IMAGE_VOLUME_MODIFIED", // (undocumented) PRE_STACK_NEW_IMAGE = "CORNERSTONE_PRE_STACK_NEW_IMAGE", @@ -660,6 +662,8 @@ declare namespace EventTypes { ImageRenderedEvent, ImageVolumeModifiedEvent, ImageVolumeModifiedEventDetail, + ImageVolumeLoadingCompletedEvent, + ImageVolumeLoadingCompletedEventDetail, ImageLoadedEvent, ImageLoadedEventDetail, ImageLoadedFailedEventDetail, @@ -1464,6 +1468,15 @@ export class ImageVolume implements IImageVolume { vtkOpenGLTexture: any; } +// @public (undocumented) +type ImageVolumeLoadingCompletedEvent = CustomEvent_2; + +// @public (undocumented) +type ImageVolumeLoadingCompletedEventDetail = { + volumeId: string; + FrameOfReferenceUID: string; +}; + // @public (undocumented) type ImageVolumeModifiedEvent = CustomEvent_2; diff --git a/common/reviews/api/streaming-image-volume-loader.api.md b/common/reviews/api/streaming-image-volume-loader.api.md index c6e797df6..38a6f4205 100644 --- a/common/reviews/api/streaming-image-volume-loader.api.md +++ b/common/reviews/api/streaming-image-volume-loader.api.md @@ -460,9 +460,10 @@ enum Events { IMAGE_LOAD_FAILED = 'CORNERSTONE_IMAGE_LOAD_FAILED', IMAGE_LOAD_PROGRESS = 'CORNERSTONE_IMAGE_LOAD_PROGRESS', IMAGE_LOADED = 'CORNERSTONE_IMAGE_LOADED', - IMAGE_RENDERED = 'CORNERSTONE_IMAGE_RENDERED', + IMAGE_SPACING_CALIBRATED = 'CORNERSTONE_IMAGE_SPACING_CALIBRATED', + IMAGE_VOLUME_LOADING_COMPLETED = 'CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED', IMAGE_VOLUME_MODIFIED = 'CORNERSTONE_IMAGE_VOLUME_MODIFIED', PRE_STACK_NEW_IMAGE = 'CORNERSTONE_PRE_STACK_NEW_IMAGE', STACK_NEW_IMAGE = 'CORNERSTONE_STACK_NEW_IMAGE', @@ -503,6 +504,8 @@ declare namespace EventTypes { ImageRenderedEvent, ImageVolumeModifiedEvent, ImageVolumeModifiedEventDetail, + ImageVolumeLoadingCompletedEvent, + ImageVolumeLoadingCompletedEventDetail, ImageLoadedEvent, ImageLoadedEventDetail, ImageLoadedFailedEventDetail, @@ -1004,6 +1007,16 @@ type ImageSpacingCalibratedEventDetail = { worldToIndex: mat4; }; +// @public +type ImageVolumeLoadingCompletedEvent = +CustomEvent_2; + +// @public +type ImageVolumeLoadingCompletedEventDetail = { + volumeId: string; + FrameOfReferenceUID: string; +}; + // @public type ImageVolumeModifiedEvent = CustomEvent_2; diff --git a/common/reviews/api/tools.api.md b/common/reviews/api/tools.api.md index 365fcab6d..f9c99412e 100644 --- a/common/reviews/api/tools.api.md +++ b/common/reviews/api/tools.api.md @@ -1816,6 +1816,8 @@ declare namespace EventTypes { ImageRenderedEvent, ImageVolumeModifiedEvent, ImageVolumeModifiedEventDetail, + ImageVolumeLoadingCompletedEvent, + ImageVolumeLoadingCompletedEventDetail, ImageLoadedEvent, ImageLoadedEventDetail, ImageLoadedFailedEventDetail, @@ -2714,6 +2716,16 @@ type ImageSpacingCalibratedEventDetail = { worldToIndex: mat4; }; +// @public +type ImageVolumeLoadingCompletedEvent = +CustomEvent_2; + +// @public +type ImageVolumeLoadingCompletedEventDetail = { + volumeId: string; + FrameOfReferenceUID: string; +}; + // @public type ImageVolumeModifiedEvent = CustomEvent_2;