@cornerstonejs/tools 0.56.1 → 0.56.3
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.
- package/dist/cjs/tools/CrosshairsTool.d.ts +1 -0
- package/dist/cjs/tools/CrosshairsTool.js +4 -1
- package/dist/cjs/tools/CrosshairsTool.js.map +1 -1
- package/dist/esm/tools/CrosshairsTool.d.ts +1 -0
- package/dist/esm/tools/CrosshairsTool.js +4 -1
- package/dist/esm/tools/CrosshairsTool.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +5 -4
- package/src/constants/COLOR_LUT.ts +262 -0
- package/src/constants/index.ts +3 -0
- package/src/cursors/ImageMouseCursor.ts +39 -0
- package/src/cursors/MouseCursor.ts +114 -0
- package/src/cursors/SVGCursorDescriptor.ts +462 -0
- package/src/cursors/SVGMouseCursor.ts +145 -0
- package/src/cursors/elementCursor.ts +69 -0
- package/src/cursors/index.ts +24 -0
- package/src/cursors/setCursorForElement.ts +33 -0
- package/src/drawingSvg/_getHash.ts +9 -0
- package/src/drawingSvg/_setAttributesIfNecessary.ts +13 -0
- package/src/drawingSvg/_setNewAttributesIfValid.ts +10 -0
- package/src/drawingSvg/clearByToolType.ts +26 -0
- package/src/drawingSvg/draw.ts +16 -0
- package/src/drawingSvg/drawArrow.ts +82 -0
- package/src/drawingSvg/drawCircle.ts +62 -0
- package/src/drawingSvg/drawEllipse.ts +71 -0
- package/src/drawingSvg/drawHandles.ts +87 -0
- package/src/drawingSvg/drawLine.ts +70 -0
- package/src/drawingSvg/drawLink.ts +76 -0
- package/src/drawingSvg/drawLinkedTextBox.ts +64 -0
- package/src/drawingSvg/drawPolyline.ts +80 -0
- package/src/drawingSvg/drawRect.ts +70 -0
- package/src/drawingSvg/drawTextBox.ts +213 -0
- package/src/drawingSvg/getSvgDrawingHelper.ts +98 -0
- package/src/drawingSvg/index.ts +23 -0
- package/src/enums/AnnotationStyleStates.ts +22 -0
- package/src/enums/Events.ts +242 -0
- package/src/enums/SegmentationRepresentations.ts +12 -0
- package/src/enums/ToolBindings.ts +37 -0
- package/src/enums/ToolModes.ts +31 -0
- package/src/enums/Touch.ts +8 -0
- package/src/enums/index.js +16 -0
- package/src/eventDispatchers/annotationModifiedEventDispatcher.ts +41 -0
- package/src/eventDispatchers/cameraModifiedEventDispatcher.ts +41 -0
- package/src/eventDispatchers/imageRenderedEventDispatcher.ts +37 -0
- package/src/eventDispatchers/imageSpacingCalibratedEventDispatcher.ts +50 -0
- package/src/eventDispatchers/index.js +15 -0
- package/src/eventDispatchers/keyboardEventHandlers/index.js +4 -0
- package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +29 -0
- package/src/eventDispatchers/keyboardEventHandlers/keyUp.ts +33 -0
- package/src/eventDispatchers/keyboardToolEventDispatcher.ts +28 -0
- package/src/eventDispatchers/mouseEventHandlers/index.js +19 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseClick.ts +13 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseDoubleClick.ts +13 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseDown.ts +196 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseDownActivate.ts +35 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseDrag.ts +25 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseMove.ts +70 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseUp.ts +9 -0
- package/src/eventDispatchers/mouseEventHandlers/mouseWheel.ts +13 -0
- package/src/eventDispatchers/mouseToolEventDispatcher.ts +64 -0
- package/src/eventDispatchers/shared/customCallbackHandler.ts +73 -0
- package/src/eventDispatchers/shared/getActiveToolForKeyboardEvent.ts +58 -0
- package/src/eventDispatchers/shared/getActiveToolForMouseEvent.ts +61 -0
- package/src/eventDispatchers/shared/getActiveToolForTouchEvent.ts +64 -0
- package/src/eventDispatchers/shared/getMouseModifier.ts +30 -0
- package/src/eventDispatchers/shared/getToolsWithModesForMouseEvent.ts +56 -0
- package/src/eventDispatchers/shared/getToolsWithModesForTouchEvent.ts +54 -0
- package/src/eventDispatchers/touchEventHandlers/index.js +15 -0
- package/src/eventDispatchers/touchEventHandlers/touchDrag.ts +23 -0
- package/src/eventDispatchers/touchEventHandlers/touchEnd.ts +9 -0
- package/src/eventDispatchers/touchEventHandlers/touchPress.ts +13 -0
- package/src/eventDispatchers/touchEventHandlers/touchStart.ts +174 -0
- package/src/eventDispatchers/touchEventHandlers/touchStartActivate.ts +36 -0
- package/src/eventDispatchers/touchEventHandlers/touchTap.ts +9 -0
- package/src/eventDispatchers/touchToolEventDispatcher.ts +51 -0
- package/src/eventListeners/annotations/annotationModifiedListener.ts +22 -0
- package/src/eventListeners/annotations/annotationSelectionListener.ts +29 -0
- package/src/eventListeners/annotations/index.ts +4 -0
- package/src/eventListeners/index.ts +28 -0
- package/src/eventListeners/keyboard/index.ts +16 -0
- package/src/eventListeners/keyboard/keyDownListener.ts +99 -0
- package/src/eventListeners/mouse/getMouseEventPoints.ts +66 -0
- package/src/eventListeners/mouse/index.ts +55 -0
- package/src/eventListeners/mouse/mouseDoubleClickListener.ts +55 -0
- package/src/eventListeners/mouse/mouseDownListener.ts +519 -0
- package/src/eventListeners/mouse/mouseMoveListener.ts +33 -0
- package/src/eventListeners/segmentation/index.ts +11 -0
- package/src/eventListeners/segmentation/segmentationDataModifiedEventListener.ts +61 -0
- package/src/eventListeners/segmentation/segmentationModifiedEventListener.ts +32 -0
- package/src/eventListeners/segmentation/segmentationRepresentationModifiedEventListener.ts +15 -0
- package/src/eventListeners/segmentation/segmentationRepresentationRemovedEventListener.ts +16 -0
- package/src/eventListeners/touch/getTouchEventPoints.ts +75 -0
- package/src/eventListeners/touch/index.ts +37 -0
- package/src/eventListeners/touch/preventGhostClick.js +72 -0
- package/src/eventListeners/touch/touchStartListener.ts +499 -0
- package/src/eventListeners/wheel/index.ts +27 -0
- package/src/eventListeners/wheel/normalizeWheel.ts +69 -0
- package/src/eventListeners/wheel/wheelListener.ts +51 -0
- package/src/index.ts +133 -0
- package/src/init.ts +187 -0
- package/src/stateManagement/annotation/FrameOfReferenceSpecificAnnotationManager.ts +399 -0
- package/src/stateManagement/annotation/annotationLocking.ts +178 -0
- package/src/stateManagement/annotation/annotationSelection.ts +163 -0
- package/src/stateManagement/annotation/annotationState.ts +180 -0
- package/src/stateManagement/annotation/annotationVisibility.ts +156 -0
- package/src/stateManagement/annotation/config/ToolStyle.ts +265 -0
- package/src/stateManagement/annotation/config/getFont.ts +36 -0
- package/src/stateManagement/annotation/config/getState.ts +26 -0
- package/src/stateManagement/annotation/config/helpers.ts +55 -0
- package/src/stateManagement/annotation/config/index.ts +5 -0
- package/src/stateManagement/annotation/helpers/state.ts +83 -0
- package/src/stateManagement/annotation/index.ts +15 -0
- package/src/stateManagement/index.js +40 -0
- package/src/stateManagement/segmentation/SegmentationStateManager.ts +491 -0
- package/src/stateManagement/segmentation/activeSegmentation.ts +60 -0
- package/src/stateManagement/segmentation/addSegmentationRepresentations.ts +77 -0
- package/src/stateManagement/segmentation/addSegmentations.ts +27 -0
- package/src/stateManagement/segmentation/config/index.ts +29 -0
- package/src/stateManagement/segmentation/config/segmentationColor.ts +132 -0
- package/src/stateManagement/segmentation/config/segmentationConfig.ts +195 -0
- package/src/stateManagement/segmentation/config/segmentationVisibility.ts +171 -0
- package/src/stateManagement/segmentation/helpers/index.ts +3 -0
- package/src/stateManagement/segmentation/helpers/normalizeSegmentationInput.ts +35 -0
- package/src/stateManagement/segmentation/helpers/validateSegmentationInput.ts +41 -0
- package/src/stateManagement/segmentation/index.ts +22 -0
- package/src/stateManagement/segmentation/removeSegmentationsFromToolGroup.ts +85 -0
- package/src/stateManagement/segmentation/segmentIndex.ts +38 -0
- package/src/stateManagement/segmentation/segmentLocking.ts +72 -0
- package/src/stateManagement/segmentation/segmentationState.ts +429 -0
- package/src/stateManagement/segmentation/triggerSegmentationEvents.ts +157 -0
- package/src/store/SynchronizerManager/Synchronizer.ts +344 -0
- package/src/store/SynchronizerManager/createSynchronizer.ts +41 -0
- package/src/store/SynchronizerManager/destroy.ts +14 -0
- package/src/store/SynchronizerManager/destroySynchronizer.ts +25 -0
- package/src/store/SynchronizerManager/getAllSynchronizers.ts +12 -0
- package/src/store/SynchronizerManager/getSynchronizer.ts +13 -0
- package/src/store/SynchronizerManager/getSynchronizersForViewport.ts +44 -0
- package/src/store/SynchronizerManager/index.js +15 -0
- package/src/store/ToolGroupManager/ToolGroup.ts +679 -0
- package/src/store/ToolGroupManager/createToolGroup.ts +33 -0
- package/src/store/ToolGroupManager/destroy.ts +24 -0
- package/src/store/ToolGroupManager/destroyToolGroup.ts +26 -0
- package/src/store/ToolGroupManager/getAllToolGroups.ts +12 -0
- package/src/store/ToolGroupManager/getToolGroup.ts +14 -0
- package/src/store/ToolGroupManager/getToolGroupForViewport.ts +44 -0
- package/src/store/ToolGroupManager/getToolGroupsWithToolName.ts +33 -0
- package/src/store/ToolGroupManager/index.ts +17 -0
- package/src/store/addEnabledElement.ts +137 -0
- package/src/store/addTool.ts +56 -0
- package/src/store/cancelActiveManipulations.ts +30 -0
- package/src/store/filterMoveableAnnotationTools.ts +61 -0
- package/src/store/filterToolsWithAnnotationsForElement.ts +51 -0
- package/src/store/filterToolsWithMoveableHandles.ts +51 -0
- package/src/store/index.ts +29 -0
- package/src/store/removeEnabledElement.ts +132 -0
- package/src/store/state.ts +57 -0
- package/src/store/svgNodeCache.ts +7 -0
- package/src/synchronizers/callbacks/areViewportsCoplanar .ts +12 -0
- package/src/synchronizers/callbacks/cameraSyncCallback.ts +33 -0
- package/src/synchronizers/callbacks/stackImageSyncCallback.ts +157 -0
- package/src/synchronizers/callbacks/voiSyncCallback.ts +51 -0
- package/src/synchronizers/callbacks/zoomPanSyncCallback.ts +43 -0
- package/src/synchronizers/index.ts +11 -0
- package/src/synchronizers/synchronizers/createCameraPositionSynchronizer.ts +25 -0
- package/src/synchronizers/synchronizers/createStackImageSynchronizer.ts +25 -0
- package/src/synchronizers/synchronizers/createVOISynchronizer.ts +24 -0
- package/src/synchronizers/synchronizers/createZoomPanSynchronizer.ts +25 -0
- package/src/synchronizers/synchronizers/index.ts +11 -0
- package/src/tools/CrosshairsTool.ts +2693 -0
- package/src/tools/MIPJumpToClickTool.ts +99 -0
- package/src/tools/MagnifyTool.ts +319 -0
- package/src/tools/PanTool.ts +58 -0
- package/src/tools/PlanarRotateTool.ts +77 -0
- package/src/tools/ReferenceCursors.ts +466 -0
- package/src/tools/ReferenceLinesTool.ts +279 -0
- package/src/tools/ScaleOverlayTool.ts +685 -0
- package/src/tools/StackScrollTool.ts +97 -0
- package/src/tools/StackScrollToolMouseWheelTool.ts +58 -0
- package/src/tools/TrackballRotateTool.ts +141 -0
- package/src/tools/VolumeRotateMouseWheelTool.ts +86 -0
- package/src/tools/WindowLevelTool.ts +260 -0
- package/src/tools/ZoomTool.ts +293 -0
- package/src/tools/annotation/AngleTool.ts +835 -0
- package/src/tools/annotation/ArrowAnnotateTool.ts +820 -0
- package/src/tools/annotation/BidirectionalTool.ts +1350 -0
- package/src/tools/annotation/CircleROITool.ts +1070 -0
- package/src/tools/annotation/CobbAngleTool.ts +815 -0
- package/src/tools/annotation/DragProbeTool.ts +213 -0
- package/src/tools/annotation/EllipticalROITool.ts +1223 -0
- package/src/tools/annotation/LengthTool.ts +861 -0
- package/src/tools/annotation/PlanarFreehandROITool.ts +636 -0
- package/src/tools/annotation/ProbeTool.ts +681 -0
- package/src/tools/annotation/RectangleROITool.ts +1028 -0
- package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +488 -0
- package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +462 -0
- package/src/tools/annotation/planarFreehandROITool/editLoopCommon.ts +331 -0
- package/src/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.ts +74 -0
- package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +612 -0
- package/src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts +74 -0
- package/src/tools/annotation/planarFreehandROITool/renderMethods.ts +407 -0
- package/src/tools/base/AnnotationDisplayTool.ts +228 -0
- package/src/tools/base/AnnotationTool.ts +307 -0
- package/src/tools/base/BaseTool.ts +215 -0
- package/src/tools/base/index.ts +4 -0
- package/src/tools/displayTools/Contour/addContourToElement.ts +135 -0
- package/src/tools/displayTools/Contour/contourDisplay.ts +252 -0
- package/src/tools/displayTools/Contour/index.ts +3 -0
- package/src/tools/displayTools/Contour/removeContourFromElement.ts +35 -0
- package/src/tools/displayTools/Labelmap/addLabelmapToElement.ts +57 -0
- package/src/tools/displayTools/Labelmap/index.ts +4 -0
- package/src/tools/displayTools/Labelmap/labelmapConfig.ts +37 -0
- package/src/tools/displayTools/Labelmap/labelmapDisplay.ts +461 -0
- package/src/tools/displayTools/Labelmap/removeLabelmapFromElement.ts +27 -0
- package/src/tools/displayTools/Labelmap/validateRepresentationData.ts +30 -0
- package/src/tools/displayTools/SegmentationDisplayTool.ts +198 -0
- package/src/tools/index.ts +84 -0
- package/src/tools/segmentation/BrushTool.ts +474 -0
- package/src/tools/segmentation/CircleScissorsTool.ts +365 -0
- package/src/tools/segmentation/PaintFillTool.ts +370 -0
- package/src/tools/segmentation/RectangleROIStartEndThresholdTool.ts +471 -0
- package/src/tools/segmentation/RectangleROIThresholdTool.ts +281 -0
- package/src/tools/segmentation/RectangleScissorsTool.ts +382 -0
- package/src/tools/segmentation/SphereScissorsTool.ts +368 -0
- package/src/tools/segmentation/strategies/eraseCircle.ts +30 -0
- package/src/tools/segmentation/strategies/eraseRectangle.ts +81 -0
- package/src/tools/segmentation/strategies/eraseSphere.ts +27 -0
- package/src/tools/segmentation/strategies/fillCircle.ts +185 -0
- package/src/tools/segmentation/strategies/fillRectangle.ts +110 -0
- package/src/tools/segmentation/strategies/fillSphere.ts +88 -0
- package/src/tools/segmentation/strategies/index.ts +9 -0
- package/src/types/AnnotationGroupSelector.ts +7 -0
- package/src/types/AnnotationStyle.ts +42 -0
- package/src/types/AnnotationTypes.ts +109 -0
- package/src/types/BoundsIJK.ts +5 -0
- package/src/types/CINETypes.ts +32 -0
- package/src/types/ContourTypes.ts +26 -0
- package/src/types/CursorTypes.ts +12 -0
- package/src/types/EventTypes.ts +657 -0
- package/src/types/FloodFillTypes.ts +19 -0
- package/src/types/IAnnotationManager.ts +89 -0
- package/src/types/IDistance.ts +16 -0
- package/src/types/IPoints.ts +18 -0
- package/src/types/ISetToolModeOptions.ts +29 -0
- package/src/types/ISynchronizerEventHandler.ts +11 -0
- package/src/types/IToolClassReference.ts +5 -0
- package/src/types/IToolGroup.ts +72 -0
- package/src/types/ITouchPoints.ts +14 -0
- package/src/types/InteractionTypes.ts +6 -0
- package/src/types/InternalToolTypes.ts +19 -0
- package/src/types/JumpToSliceOptions.ts +7 -0
- package/src/types/LabelmapTypes.ts +41 -0
- package/src/types/PlanarBoundingBox.ts +8 -0
- package/src/types/SVGDrawingHelper.ts +10 -0
- package/src/types/ScrollOptions.ts +9 -0
- package/src/types/SegmentationStateTypes.ts +248 -0
- package/src/types/ToolHandle.ts +26 -0
- package/src/types/ToolProps.ts +16 -0
- package/src/types/ToolSpecificAnnotationTypes.ts +311 -0
- package/src/types/index.ts +115 -0
- package/src/utilities/boundingBox/extend2DBoundingBoxInViewAxis.ts +29 -0
- package/src/utilities/boundingBox/getBoundingBoxAroundShape.ts +57 -0
- package/src/utilities/boundingBox/index.ts +4 -0
- package/src/utilities/calibrateImageSpacing.ts +46 -0
- package/src/utilities/cine/events.ts +9 -0
- package/src/utilities/cine/index.ts +5 -0
- package/src/utilities/cine/playClip.ts +435 -0
- package/src/utilities/cine/state.ts +18 -0
- package/src/utilities/clip.js +30 -0
- package/src/utilities/debounce.js +217 -0
- package/src/utilities/drawing/getTextBoxCoordsCanvas.ts +45 -0
- package/src/utilities/drawing/index.ts +3 -0
- package/src/utilities/dynamicVolume/getDataInTime.ts +110 -0
- package/src/utilities/dynamicVolume/index.ts +2 -0
- package/src/utilities/getAnnotationNearPoint.ts +130 -0
- package/src/utilities/getModalityUnit.ts +11 -0
- package/src/utilities/getToolsWithModesForElement.ts +52 -0
- package/src/utilities/index.ts +68 -0
- package/src/utilities/isObject.js +29 -0
- package/src/utilities/math/angle/angleBetweenLines.ts +29 -0
- package/src/utilities/math/circle/_types.ts +6 -0
- package/src/utilities/math/circle/getCanvasCircleCorners.ts +23 -0
- package/src/utilities/math/circle/getCanvasCircleRadius.ts +16 -0
- package/src/utilities/math/circle/index.ts +4 -0
- package/src/utilities/math/ellipse/getCanvasEllipseCorners.ts +26 -0
- package/src/utilities/math/ellipse/index.ts +4 -0
- package/src/utilities/math/ellipse/pointInEllipse.ts +38 -0
- package/src/utilities/math/ellipse/pointInEllipsoidWithConstraint.ts +35 -0
- package/src/utilities/math/index.ts +8 -0
- package/src/utilities/math/line/distanceToPoint.ts +24 -0
- package/src/utilities/math/line/distanceToPointSquared.ts +44 -0
- package/src/utilities/math/line/index.ts +5 -0
- package/src/utilities/math/line/intersectLine.ts +92 -0
- package/src/utilities/math/midPoint.ts +24 -0
- package/src/utilities/math/point/distanceToPoint.ts +22 -0
- package/src/utilities/math/point/index.ts +3 -0
- package/src/utilities/math/polyline/addCanvasPointsToArray.ts +62 -0
- package/src/utilities/math/polyline/calculateAreaOfPoints.ts +23 -0
- package/src/utilities/math/polyline/getIntersectionWithPolyline.ts +182 -0
- package/src/utilities/math/polyline/getSubPixelSpacingAndXYDirections.ts +99 -0
- package/src/utilities/math/polyline/index.ts +19 -0
- package/src/utilities/math/polyline/planarFreehandROIInternalTypes.ts +36 -0
- package/src/utilities/math/polyline/pointCanProjectOnLine.ts +57 -0
- package/src/utilities/math/polyline/pointsAreWithinCloseContourProximity.ts +15 -0
- package/src/utilities/math/rectangle/distanceToPoint.ts +82 -0
- package/src/utilities/math/rectangle/index.ts +3 -0
- package/src/utilities/math/sphere/index.ts +3 -0
- package/src/utilities/math/sphere/pointInSphere.ts +31 -0
- package/src/utilities/math/vec2/findClosestPoint.ts +40 -0
- package/src/utilities/math/vec2/index.ts +4 -0
- package/src/utilities/math/vec2/liangBarksyClip.ts +84 -0
- package/src/utilities/orientation/getOrientationStringLPS.ts +52 -0
- package/src/utilities/orientation/index.ts +4 -0
- package/src/utilities/orientation/invertOrientationStringLPS.ts +21 -0
- package/src/utilities/planar/filterAnnotationsForDisplay.ts +68 -0
- package/src/utilities/planar/filterAnnotationsWithinSlice.ts +85 -0
- package/src/utilities/planar/getPointInLineOfSightWithCriteria.ts +104 -0
- package/src/utilities/planar/getWorldWidthAndHeightFromCorners.ts +51 -0
- package/src/utilities/planar/getWorldWidthAndHeightFromTwoPoints.ts +51 -0
- package/src/utilities/planar/index.ts +18 -0
- package/src/utilities/planarFreehandROITool/index.ts +7 -0
- package/src/utilities/planarFreehandROITool/interpolateAnnotation.ts +87 -0
- package/src/utilities/planarFreehandROITool/interpolatePoints.ts +214 -0
- package/src/utilities/planarFreehandROITool/interpolation/algorithms/bspline.ts +55 -0
- package/src/utilities/planarFreehandROITool/interpolation/interpolateSegmentPoints.ts +90 -0
- package/src/utilities/pointInShapeCallback.ts +138 -0
- package/src/utilities/pointInSurroundingSphereCallback.ts +188 -0
- package/src/utilities/rectangleROITool/getBoundsIJKFromRectangleAnnotations.ts +76 -0
- package/src/utilities/rectangleROITool/index.ts +3 -0
- package/src/utilities/scroll.ts +62 -0
- package/src/utilities/segmentation/brushSizeForToolGroup.ts +72 -0
- package/src/utilities/segmentation/brushThresholdForToolGroup.ts +65 -0
- package/src/utilities/segmentation/createLabelmapVolumeForViewport.ts +74 -0
- package/src/utilities/segmentation/createMergedLabelmapForIndex.ts +65 -0
- package/src/utilities/segmentation/floodFill.ts +194 -0
- package/src/utilities/segmentation/getDefaultRepresentationConfig.ts +20 -0
- package/src/utilities/segmentation/index.ts +33 -0
- package/src/utilities/segmentation/isValidRepresentationConfig.ts +22 -0
- package/src/utilities/segmentation/rectangleROIThresholdVolumeByRange.ts +91 -0
- package/src/utilities/segmentation/thresholdSegmentationByRange.ts +129 -0
- package/src/utilities/segmentation/thresholdVolumeByRange.ts +150 -0
- package/src/utilities/segmentation/triggerSegmentationRender.ts +206 -0
- package/src/utilities/segmentation/utilities.ts +116 -0
- package/src/utilities/stackPrefetch/index.ts +8 -0
- package/src/utilities/stackPrefetch/stackPrefetch.ts +405 -0
- package/src/utilities/stackPrefetch/state.ts +17 -0
- package/src/utilities/throttle.js +69 -0
- package/src/utilities/touch/index.ts +246 -0
- package/src/utilities/triggerAnnotationRender.ts +237 -0
- package/src/utilities/triggerAnnotationRenderForViewportIds.ts +18 -0
- package/src/utilities/viewport/index.ts +5 -0
- package/src/utilities/viewport/isViewportPreScaled.ts +24 -0
- package/src/utilities/viewport/jumpToSlice.ts +73 -0
- package/src/utilities/viewport/jumpToWorld.ts +58 -0
- package/src/utilities/viewportFilters/filterViewportsWithFrameOfReferenceUID.ts +28 -0
- package/src/utilities/viewportFilters/filterViewportsWithParallelNormals.ts +26 -0
- package/src/utilities/viewportFilters/filterViewportsWithSameOrientation.ts +15 -0
- package/src/utilities/viewportFilters/filterViewportsWithToolEnabled.ts +72 -0
- package/src/utilities/viewportFilters/getViewportIdsWithToolToRender.ts +45 -0
- package/src/utilities/viewportFilters/index.ts +11 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import _cloneDeep from 'lodash.clonedeep';
|
|
2
|
+
import { getEnabledElement, triggerEvent } from '@cornerstonejs/core';
|
|
3
|
+
import Events from '../../enums/Events';
|
|
4
|
+
import { KeyDownEventDetail, KeyUpEventDetail } from '../../types/EventTypes';
|
|
5
|
+
|
|
6
|
+
interface IKeyDownListenerState {
|
|
7
|
+
renderingEngineId: string;
|
|
8
|
+
viewportId: string;
|
|
9
|
+
key: string | null;
|
|
10
|
+
keyCode: number | null;
|
|
11
|
+
element: HTMLDivElement;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const defaultState: IKeyDownListenerState = {
|
|
15
|
+
//
|
|
16
|
+
renderingEngineId: undefined,
|
|
17
|
+
viewportId: undefined,
|
|
18
|
+
//
|
|
19
|
+
key: undefined,
|
|
20
|
+
keyCode: undefined,
|
|
21
|
+
element: null,
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
let state: IKeyDownListenerState = {
|
|
25
|
+
//
|
|
26
|
+
renderingEngineId: undefined,
|
|
27
|
+
viewportId: undefined,
|
|
28
|
+
//
|
|
29
|
+
key: undefined,
|
|
30
|
+
keyCode: undefined,
|
|
31
|
+
element: null,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Normalizes the keyboard event and triggers KEY_DOWN event from CornerstoneTools3D events
|
|
36
|
+
* @param evt - DOM Keyboard event
|
|
37
|
+
*/
|
|
38
|
+
function keyListener(evt: KeyboardEvent): void {
|
|
39
|
+
state.element = <HTMLDivElement>evt.currentTarget;
|
|
40
|
+
|
|
41
|
+
const enabledElement = getEnabledElement(state.element);
|
|
42
|
+
const { renderingEngineId, viewportId } = enabledElement;
|
|
43
|
+
|
|
44
|
+
state.renderingEngineId = renderingEngineId;
|
|
45
|
+
state.viewportId = viewportId;
|
|
46
|
+
state.key = evt.key;
|
|
47
|
+
state.keyCode = evt.keyCode;
|
|
48
|
+
|
|
49
|
+
evt.preventDefault();
|
|
50
|
+
const eventDetail: KeyDownEventDetail = {
|
|
51
|
+
renderingEngineId: state.renderingEngineId,
|
|
52
|
+
viewportId: state.viewportId,
|
|
53
|
+
element: state.element,
|
|
54
|
+
key: state.key,
|
|
55
|
+
keyCode: state.keyCode,
|
|
56
|
+
|
|
57
|
+
// detail: evt,
|
|
58
|
+
// Todo: mouse event points can be used later for placing tools with a key
|
|
59
|
+
// e.g., putting an arrow/probe/etc. on the mouse position. Another use case
|
|
60
|
+
// hovering and deleting the tool
|
|
61
|
+
// points: getMouseEventPoints(evt),
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
triggerEvent(eventDetail.element, Events.KEY_DOWN, eventDetail);
|
|
65
|
+
|
|
66
|
+
document.addEventListener('keyup', _onKeyUp);
|
|
67
|
+
|
|
68
|
+
// Todo: handle combination of keys
|
|
69
|
+
state.element.removeEventListener('keydown', keyListener);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function _onKeyUp(evt: KeyboardEvent): void {
|
|
73
|
+
const eventDetail: KeyUpEventDetail = {
|
|
74
|
+
renderingEngineId: state.renderingEngineId,
|
|
75
|
+
viewportId: state.viewportId,
|
|
76
|
+
element: state.element,
|
|
77
|
+
key: state.key,
|
|
78
|
+
keyCode: state.keyCode,
|
|
79
|
+
// detail: evt,
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// Remove our temporary handlers
|
|
83
|
+
document.removeEventListener('keyup', _onKeyUp);
|
|
84
|
+
state.element.addEventListener('keydown', keyListener);
|
|
85
|
+
|
|
86
|
+
// Restore `state` to `defaultState`
|
|
87
|
+
state = _cloneDeep(defaultState);
|
|
88
|
+
triggerEvent(eventDetail.element, Events.KEY_UP, eventDetail);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function getModifierKey(): number | undefined {
|
|
92
|
+
return state.keyCode;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function resetModifierKey(): void {
|
|
96
|
+
state.keyCode = undefined;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export default keyListener;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { getEnabledElement } from '@cornerstonejs/core';
|
|
2
|
+
import type { Types } from '@cornerstonejs/core';
|
|
3
|
+
|
|
4
|
+
import { IPoints } from '../../types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Given a native mouse event, get the associated cornerstone3D enabled element
|
|
8
|
+
* and derive a set of coordinates useful for tools.
|
|
9
|
+
* @param evt - The Mouse event.
|
|
10
|
+
* @param element - The DOM HTMLDivElement that the event was triggered on.
|
|
11
|
+
* @returns The points related to the event in the form of a `IPoints` object containing
|
|
12
|
+
* the following properties: `page`, `client`, `canvas`, and `world` details of the event.
|
|
13
|
+
*/
|
|
14
|
+
export default function getMouseEventPoints(
|
|
15
|
+
evt: MouseEvent,
|
|
16
|
+
element?: HTMLDivElement
|
|
17
|
+
): IPoints {
|
|
18
|
+
const elementToUse = element || (evt.currentTarget as HTMLDivElement);
|
|
19
|
+
const { viewport } = getEnabledElement(elementToUse);
|
|
20
|
+
const clientPoint = _clientToPoint(evt);
|
|
21
|
+
const pagePoint = _pageToPoint(evt);
|
|
22
|
+
const canvasPoint = _pagePointsToCanvasPoints(elementToUse, pagePoint);
|
|
23
|
+
const worldPoint = viewport.canvasToWorld(canvasPoint);
|
|
24
|
+
|
|
25
|
+
return {
|
|
26
|
+
page: pagePoint,
|
|
27
|
+
client: clientPoint,
|
|
28
|
+
canvas: canvasPoint,
|
|
29
|
+
world: worldPoint,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Converts point from page coordinates to canvas coordinates.
|
|
35
|
+
* @param element - HTMLDivElement
|
|
36
|
+
* @param pagePoint - Point in page coordinates pageX and pageY
|
|
37
|
+
*
|
|
38
|
+
* @returns The canvas coordinate points
|
|
39
|
+
*/
|
|
40
|
+
function _pagePointsToCanvasPoints(
|
|
41
|
+
element: HTMLDivElement,
|
|
42
|
+
pagePoint: Types.Point2
|
|
43
|
+
): Types.Point2 {
|
|
44
|
+
const rect = element.getBoundingClientRect();
|
|
45
|
+
return [
|
|
46
|
+
pagePoint[0] - rect.left - window.pageXOffset,
|
|
47
|
+
pagePoint[1] - rect.top - window.pageYOffset,
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Converts the event's `pageX` and `pageY` properties to Types.Point2 format
|
|
53
|
+
*
|
|
54
|
+
* @param evt - The Mouse `Event`
|
|
55
|
+
*/
|
|
56
|
+
function _pageToPoint(evt: MouseEvent): Types.Point2 {
|
|
57
|
+
return [evt.pageX, evt.pageY];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Converts the event's `clientX` and `clientY` properties to Types.Point2 format
|
|
62
|
+
* @param evt - The Mouse `Event`
|
|
63
|
+
*/
|
|
64
|
+
function _clientToPoint(evt: MouseEvent): Types.Point2 {
|
|
65
|
+
return [evt.clientX, evt.clientY];
|
|
66
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import mouseDoubleClickListener from './mouseDoubleClickListener';
|
|
2
|
+
import mouseDownListener, {
|
|
3
|
+
mouseDoubleClickIgnoreListener,
|
|
4
|
+
} from './mouseDownListener';
|
|
5
|
+
import mouseMoveListener from './mouseMoveListener';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Removes mouse event listeners for native mouse event. Enables
|
|
9
|
+
* vtk.js tools flavored events that build on top of existing events to
|
|
10
|
+
* provide more helpful information.
|
|
11
|
+
*
|
|
12
|
+
* @private
|
|
13
|
+
* @param element - The DOM element to remove event listeners from.
|
|
14
|
+
*/
|
|
15
|
+
function disable(element: HTMLDivElement): void {
|
|
16
|
+
element.removeEventListener('dblclick', mouseDoubleClickListener);
|
|
17
|
+
element.removeEventListener('mousedown', mouseDownListener);
|
|
18
|
+
element.removeEventListener('mousemove', mouseMoveListener);
|
|
19
|
+
// The mouseDoubleClickIgnoreListener prevents those browser 'dblclick'
|
|
20
|
+
// events that cornerstone has determined are single clicks from propagating
|
|
21
|
+
// to other (3rd party) listeners. A capture phase listener is used so that
|
|
22
|
+
// the 'dblclick' event can be ignored and not propagated ASAP.
|
|
23
|
+
element.removeEventListener('dblclick', mouseDoubleClickIgnoreListener, {
|
|
24
|
+
capture: true,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Registers mouse event listeners for native mouse event. Enables
|
|
30
|
+
* vtk.js tools flavored events that build on top of existing events to
|
|
31
|
+
* provide more helpful information.
|
|
32
|
+
*
|
|
33
|
+
* @private
|
|
34
|
+
* @param element - The DOM element to register event listeners on.
|
|
35
|
+
*/
|
|
36
|
+
function enable(element: HTMLDivElement): void {
|
|
37
|
+
// Prevent handlers from being attached multiple times
|
|
38
|
+
disable(element);
|
|
39
|
+
|
|
40
|
+
element.addEventListener('dblclick', mouseDoubleClickListener);
|
|
41
|
+
element.addEventListener('mousedown', mouseDownListener);
|
|
42
|
+
element.addEventListener('mousemove', mouseMoveListener);
|
|
43
|
+
// The mouseDoubleClickIgnoreListener prevents those browser 'dblclick'
|
|
44
|
+
// events that cornerstone has determined are single clicks from propagating
|
|
45
|
+
// to other (3rd party) listeners. A capture phase listener is used so that
|
|
46
|
+
// the 'dblclick' event can be ignored and not propagated ASAP.
|
|
47
|
+
element.addEventListener('dblclick', mouseDoubleClickIgnoreListener, {
|
|
48
|
+
capture: true,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export default {
|
|
53
|
+
enable,
|
|
54
|
+
disable,
|
|
55
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { getEnabledElement, triggerEvent } from '@cornerstonejs/core';
|
|
2
|
+
import Events from '../../enums/Events';
|
|
3
|
+
import getMouseEventPoints from './getMouseEventPoints';
|
|
4
|
+
import { EventTypes, IPoints } from '../../types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Captures and normalizes the double click event. Emits as a cornerstoneTools3D
|
|
8
|
+
* double click event.
|
|
9
|
+
*
|
|
10
|
+
* @param evt - The mouse event.
|
|
11
|
+
*/
|
|
12
|
+
function mouseDoubleClickListener(evt: MouseEvent): void {
|
|
13
|
+
const element = <HTMLDivElement>evt.currentTarget;
|
|
14
|
+
|
|
15
|
+
const { viewportId, renderingEngineId } = getEnabledElement(element);
|
|
16
|
+
|
|
17
|
+
const startPoints = getMouseEventPoints(evt, element);
|
|
18
|
+
const deltaPoints: IPoints = {
|
|
19
|
+
page: [0, 0],
|
|
20
|
+
client: [0, 0],
|
|
21
|
+
canvas: [0, 0],
|
|
22
|
+
world: [0, 0, 0],
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const eventDetail: EventTypes.MouseDoubleClickEventDetail = {
|
|
26
|
+
event: evt,
|
|
27
|
+
eventName: Events.MOUSE_DOUBLE_CLICK,
|
|
28
|
+
viewportId,
|
|
29
|
+
renderingEngineId,
|
|
30
|
+
camera: {},
|
|
31
|
+
element,
|
|
32
|
+
startPoints,
|
|
33
|
+
lastPoints: startPoints,
|
|
34
|
+
currentPoints: startPoints,
|
|
35
|
+
deltaPoints,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const consumed = !triggerEvent(
|
|
39
|
+
element,
|
|
40
|
+
Events.MOUSE_DOUBLE_CLICK,
|
|
41
|
+
eventDetail
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
if (consumed) {
|
|
45
|
+
// The Events.MOUSE_DOUBLE_CLICK was consumed, thus no other listener should handle this 'dblclick' event.
|
|
46
|
+
|
|
47
|
+
// Use stopImmediatePropagation to lessen the possibility that a third party 'dblclick'
|
|
48
|
+
// listener receives this event. However, there still is no guarantee
|
|
49
|
+
// that any third party listener has not already handled the event.
|
|
50
|
+
evt.stopImmediatePropagation();
|
|
51
|
+
evt.preventDefault();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export default mouseDoubleClickListener;
|