From 0256dc15f36421614e97c298c0e34cb1be6decd3 Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Fri, 25 Nov 2022 16:21:05 -0500 Subject: [PATCH 1/4] fix(htj2k):Support htj2k in the streaming volume loader --- .../src/sharedArrayBufferImageLoader.ts | 4 +++- .../src/utilities/segmentation/triggerSegmentationRender.ts | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts b/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts index e6365286a..94d001b06 100644 --- a/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts +++ b/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts @@ -4,7 +4,7 @@ import { decodeImageFrame, getImageFrame, external, -} from 'cornerstone-wado-image-loader/dist/dynamic-import/cornerstoneWADOImageLoader.min.js'; +} from 'cornerstone-wado-image-loader/dist/dynamic-import/cornerstoneWADOImageLoader.min'; function getImageRetrievalPool() { return external.cornerstone.imageRetrievalPoolManager; @@ -129,6 +129,8 @@ function getTransferSyntaxForContentType(contentType: string): string { 'image/x-jls': '1.2.840.10008.1.2.4.80', 'image/jp2': '1.2.840.10008.1.2.4.90', 'image/jpx': '1.2.840.10008.1.2.4.92', + 'image/jphc': '3.2.840.10008.1.2.4.96', + 'image/jls': '1.2.840.10008.1.2.4.80', }; if (params['transfer-syntax']) { diff --git a/packages/tools/src/utilities/segmentation/triggerSegmentationRender.ts b/packages/tools/src/utilities/segmentation/triggerSegmentationRender.ts index 8971e315a..6dd5b3fc3 100644 --- a/packages/tools/src/utilities/segmentation/triggerSegmentationRender.ts +++ b/packages/tools/src/utilities/segmentation/triggerSegmentationRender.ts @@ -129,6 +129,10 @@ class SegmentationRenderingEngine { const segmentationDisplayToolInstance = toolGroup.getToolInstance( SegmentationDisplayTool.toolName ) as SegmentationDisplayTool; + if (!segmentationDisplayToolInstance) { + console.warn('No segmentation tool found inside', toolGroupId); + return; + } function onSegmentationRender(evt: Types.EventTypes.ImageRenderedEvent) { const { element, viewportId, renderingEngineId } = evt.detail; From d8752c510bec50331fb72b1e044ae8084ef9076f Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Fri, 25 Nov 2022 17:37:15 -0500 Subject: [PATCH 2/4] fix(decodeImage):Fix htj2k image decode and mouse key modifiers --- .../src/sharedArrayBufferImageLoader.ts | 2 +- packages/tools/src/enums/ToolBindings.ts | 7 +++++++ .../shared/getActiveToolForMouseEvent.ts | 5 ++++- .../shared/getMouseModifier.ts | 18 ++++++++++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 packages/tools/src/eventDispatchers/shared/getMouseModifier.ts diff --git a/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts b/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts index 94d001b06..de45a0fe4 100644 --- a/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts +++ b/packages/streaming-image-volume-loader/src/sharedArrayBufferImageLoader.ts @@ -4,7 +4,7 @@ import { decodeImageFrame, getImageFrame, external, -} from 'cornerstone-wado-image-loader/dist/dynamic-import/cornerstoneWADOImageLoader.min'; +} from 'cornerstone-wado-image-loader/dist/dynamic-import/cornerstoneWADOImageLoader.min.js'; function getImageRetrievalPool() { return external.cornerstone.imageRetrievalPoolManager; diff --git a/packages/tools/src/enums/ToolBindings.ts b/packages/tools/src/enums/ToolBindings.ts index 548f1aecc..21f5424dd 100644 --- a/packages/tools/src/enums/ToolBindings.ts +++ b/packages/tools/src/enums/ToolBindings.ts @@ -25,6 +25,13 @@ enum KeyboardBindings { Shift = 16, Ctrl = 17, Alt = 18, + Meta = 91, + ShiftCtrl = 1617, + ShiftAlt = 1618, + ShiftMeta = 1691, + CtrlAlt = 1718, + CtrlMeta = 1791, + AltMeta = 1891, } export { MouseBindings, KeyboardBindings }; diff --git a/packages/tools/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts b/packages/tools/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts index a670b0ad9..6fac058a6 100644 --- a/packages/tools/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts +++ b/packages/tools/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts @@ -2,6 +2,7 @@ import { ToolGroupManager } from '../../store'; import { MouseBindings, ToolModes } from '../../enums'; import { keyEventListener } from '../../eventListeners'; import { EventTypes } from '../../types'; +import getMouseModifier from './getMouseModifier'; const { Active } = ToolModes; @@ -22,7 +23,9 @@ export default function getActiveToolForMouseEvent( const mouseEvent = evt.detail.event; // If any keyboard modifier key is also pressed - const modifierKey = keyEventListener.getModifierKey(); + // Use the actual key if set, otherwise get the key from the mouse event. + const modifierKey = + keyEventListener.getModifierKey() || getMouseModifier(mouseEvent); const toolGroup = ToolGroupManager.getToolGroupForViewport( viewportId, diff --git a/packages/tools/src/eventDispatchers/shared/getMouseModifier.ts b/packages/tools/src/eventDispatchers/shared/getMouseModifier.ts new file mode 100644 index 000000000..019dd25f6 --- /dev/null +++ b/packages/tools/src/eventDispatchers/shared/getMouseModifier.ts @@ -0,0 +1,18 @@ +import { KeyboardBindings as kb } from '../../enums'; + +/** + * Gets the mouse modifier key from a mouse event. + * Supports Shift, Ctrl, Alt, in singly and in combinations of 2 + * Supports Meta singly. + */ +const getMouseModifierKey = (evt) => + (evt.shiftKey && + ((evt.ctrlKey && kb.ShiftCtrl) || + (evt.altKey && kb.ShiftAlt) || + kb.Shift)) || + (evt.ctrlKey && ((evt.altKey && kb.CtrlAlt) || kb.Ctrl)) || + (evt.altKey && kb.Alt) || + (evt.metaKey && kb.Meta) || + undefined; + +export default getMouseModifierKey; From 37d0393231d087ba8d5a72ceeb18427c6c94dc6c Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Tue, 29 Nov 2022 10:46:49 -0600 Subject: [PATCH 3/4] Update for PR --- .../shared/getMouseModifier.ts | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/packages/tools/src/eventDispatchers/shared/getMouseModifier.ts b/packages/tools/src/eventDispatchers/shared/getMouseModifier.ts index 019dd25f6..43259b849 100644 --- a/packages/tools/src/eventDispatchers/shared/getMouseModifier.ts +++ b/packages/tools/src/eventDispatchers/shared/getMouseModifier.ts @@ -5,14 +5,26 @@ import { KeyboardBindings as kb } from '../../enums'; * Supports Shift, Ctrl, Alt, in singly and in combinations of 2 * Supports Meta singly. */ -const getMouseModifierKey = (evt) => - (evt.shiftKey && - ((evt.ctrlKey && kb.ShiftCtrl) || - (evt.altKey && kb.ShiftAlt) || - kb.Shift)) || - (evt.ctrlKey && ((evt.altKey && kb.CtrlAlt) || kb.Ctrl)) || - (evt.altKey && kb.Alt) || - (evt.metaKey && kb.Meta) || - undefined; +const getMouseModifierKey = (evt) => { + // The logic is a hard coded key mapping + if (evt.shiftKey) { + if (evt.ctrlKey) return kb.ShiftCtrl; + if (evt.altKey) return kb.ShiftAlt; + if (evt.metaKey) return kb.ShiftMeta; + return kb.Shift; + } + if (evt.ctrlKey) { + if (evt.altKey) return kb.CtrlAlt; + if (evt.metaKey) return kb.CtrlMeta; + return kb.Ctrl; + } + if (evt.altKey) { + return (evt.metaKey && kb.AltMeta) || kb.Alt; + } + if (evt.metaKey) { + kb.Meta; + } + return undefined; +}; export default getMouseModifierKey; From bddc8ae693908d89dab8f6af25a4167dfe96b718 Mon Sep 17 00:00:00 2001 From: Alireza Date: Wed, 30 Nov 2022 21:22:02 -0500 Subject: [PATCH 4/4] update ci build --- common/reviews/api/tools.api.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/common/reviews/api/tools.api.md b/common/reviews/api/tools.api.md index b89234a61..db9825d1c 100644 --- a/common/reviews/api/tools.api.md +++ b/common/reviews/api/tools.api.md @@ -2606,9 +2606,23 @@ enum KeyboardBindings { // (undocumented) Alt = 18, // (undocumented) + AltMeta = 1891, + // (undocumented) Ctrl = 17, // (undocumented) - Shift = 16 + CtrlAlt = 1718, + // (undocumented) + CtrlMeta = 1791, + // (undocumented) + Meta = 91, + // (undocumented) + Shift = 16, + // (undocumented) + ShiftAlt = 1618, + // (undocumented) + ShiftCtrl = 1617, + // (undocumented) + ShiftMeta = 1691 } // @public (undocumented)