@cornerstonejs/core 2.0.0-beta.20 → 2.0.0-beta.21
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/esm/RenderingEngine/BaseVolumeViewport.d.ts +23 -13
- package/dist/esm/RenderingEngine/BaseVolumeViewport.js +36 -44
- package/dist/esm/RenderingEngine/CanvasActor/CanvasMapper.d.ts +1 -1
- package/dist/esm/RenderingEngine/CanvasActor/CanvasProperties.d.ts +1 -1
- package/dist/esm/RenderingEngine/CanvasActor/index.js +2 -1
- package/dist/esm/RenderingEngine/RenderingEngine.d.ts +7 -8
- package/dist/esm/RenderingEngine/RenderingEngine.js +18 -17
- package/dist/esm/RenderingEngine/StackViewport.d.ts +29 -18
- package/dist/esm/RenderingEngine/StackViewport.js +66 -50
- package/dist/esm/RenderingEngine/VideoViewport.d.ts +19 -28
- package/dist/esm/RenderingEngine/VideoViewport.js +59 -22
- package/dist/esm/RenderingEngine/Viewport.d.ts +25 -14
- package/dist/esm/RenderingEngine/Viewport.js +20 -14
- package/dist/esm/RenderingEngine/VolumeViewport.d.ts +21 -9
- package/dist/esm/RenderingEngine/VolumeViewport.js +88 -8
- package/dist/esm/RenderingEngine/VolumeViewport3D.d.ts +3 -3
- package/dist/esm/RenderingEngine/VolumeViewport3D.js +10 -3
- package/dist/esm/RenderingEngine/WSIViewport.d.ts +58 -0
- package/dist/esm/RenderingEngine/WSIViewport.js +414 -0
- package/dist/esm/RenderingEngine/helpers/addImageSlicesToViewports.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/addImageSlicesToViewports.js +3 -3
- package/dist/esm/RenderingEngine/helpers/addVolumesToViewports.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/colormap.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/colormap.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/lookupTable.d.ts +2 -2
- package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/lookupTable.js +15 -5
- package/dist/esm/RenderingEngine/helpers/cpuFallback/drawImageSync.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/calculateTransform.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/canvasToPixel.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/correctShift.d.ts +3 -3
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/createViewport.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/doesImageNeedToBeRendered.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/fitToWindow.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateColorLUT.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateColorLUT.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateLut.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js +2 -2
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getImageFitScale.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getImageSize.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getLut.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getLut.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getTransform.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/initializeRenderCanvas.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/lutMatches.d.ts +2 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/lutMatches.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/pixelToCanvas.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderColorImage.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderColorImage.js +3 -4
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderGrayscaleImage.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderGrayscaleImage.js +2 -3
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderPseudoColorImage.js +2 -2
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/resetCamera.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/resize.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/saveLastRendered.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/setDefaultViewport.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/setToPixelCoordinateSystem.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedColorPixelDataToCanvasImageData.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedColorPixelDataToCanvasImageData.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageData.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageData.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataColorLUT.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataPET.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataPET.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataPseudocolorLUT.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataPseudocolorLUTPET.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataRGBA.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataRGBA.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedRGBAPixelDataToCanvasImageData.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedRGBAPixelDataToCanvasImageData.js +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/transform.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/validator.d.ts +2 -2
- package/dist/esm/RenderingEngine/helpers/createVolumeActor.d.ts +3 -3
- package/dist/esm/RenderingEngine/helpers/createVolumeActor.js +3 -6
- package/dist/esm/RenderingEngine/helpers/createVolumeMapper.d.ts +4 -1
- package/dist/esm/RenderingEngine/helpers/getOrCreateCanvas.js +5 -4
- package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.d.ts +2 -2
- package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js +10 -35
- package/dist/esm/RenderingEngine/helpers/setVolumesForViewports.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +2 -0
- package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js +2 -0
- package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.d.ts +1 -1
- package/dist/esm/RenderingEngine/renderingEngineCache.d.ts +1 -1
- package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.d.ts +4 -2
- package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLTexture.js +87 -78
- package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLViewNodeFactory.js +1 -1
- package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js +83 -42
- package/dist/esm/Settings.d.ts +1 -1
- package/dist/esm/cache/cache.d.ts +15 -19
- package/dist/esm/cache/cache.js +110 -56
- package/dist/esm/cache/classes/Contour.d.ts +4 -4
- package/dist/esm/cache/classes/ContourSet.d.ts +3 -3
- package/dist/esm/cache/classes/ImageVolume.d.ts +19 -19
- package/dist/esm/cache/classes/ImageVolume.js +48 -254
- package/dist/esm/cache/classes/Surface.d.ts +3 -3
- package/dist/esm/constants/cpuColormaps.d.ts +1 -1
- package/dist/esm/constants/viewportPresets.d.ts +1 -1
- package/dist/esm/enums/GenerateImageType.d.ts +5 -0
- package/dist/esm/enums/GenerateImageType.js +6 -0
- package/dist/esm/enums/MetadataModules.d.ts +2 -1
- package/dist/esm/enums/MetadataModules.js +1 -0
- package/dist/esm/enums/ViewportType.d.ts +2 -1
- package/dist/esm/enums/ViewportType.js +1 -0
- package/dist/esm/enums/index.d.ts +2 -2
- package/dist/esm/enums/index.js +2 -2
- package/dist/esm/eventTarget.js +2 -3
- package/dist/esm/getEnabledElement.d.ts +1 -1
- package/dist/esm/global.d.ts +0 -1
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +3 -2
- package/dist/esm/init.d.ts +5 -8
- package/dist/esm/init.js +21 -82
- package/dist/esm/loaders/ProgressiveRetrieveImages.d.ts +5 -5
- package/dist/esm/loaders/ProgressiveRetrieveImages.js +3 -1
- package/dist/esm/loaders/configuration/interleavedRetrieve.d.ts +1 -1
- package/dist/esm/loaders/fillNearbyFrames.d.ts +2 -2
- package/dist/esm/loaders/geometryLoader.d.ts +3 -3
- package/dist/esm/loaders/imageLoader.d.ts +12 -17
- package/dist/esm/loaders/imageLoader.js +174 -95
- package/dist/esm/loaders/utils/contourSet/createContourSet.d.ts +1 -1
- package/dist/esm/loaders/utils/contourSet/validateContourSet.d.ts +1 -1
- package/dist/esm/loaders/utils/surface/createSurface.d.ts +1 -1
- package/dist/esm/loaders/utils/surface/validateSurface.d.ts +1 -1
- package/dist/esm/loaders/volumeLoader.d.ts +14 -22
- package/dist/esm/loaders/volumeLoader.js +62 -210
- package/dist/esm/metaData.d.ts +2 -4
- package/dist/esm/requestPool/requestPoolManager.d.ts +7 -9
- package/dist/esm/types/AABB2.d.ts +2 -2
- package/dist/esm/types/AABB3.d.ts +2 -2
- package/dist/esm/types/ActorSliceRange.d.ts +5 -5
- package/dist/esm/types/BoundsIJK.d.ts +1 -1
- package/dist/esm/types/BoundsLPS.d.ts +1 -1
- package/dist/esm/types/CPUFallbackColormap.d.ts +3 -3
- package/dist/esm/types/CPUFallbackColormapData.d.ts +4 -4
- package/dist/esm/types/CPUFallbackColormapsData.d.ts +3 -5
- package/dist/esm/types/CPUFallbackEnabledElement.d.ts +14 -11
- package/dist/esm/types/CPUFallbackLUT.d.ts +4 -3
- package/dist/esm/types/CPUFallbackLookupTable.d.ts +2 -2
- package/dist/esm/types/CPUFallbackRenderingTools.d.ts +5 -5
- package/dist/esm/types/CPUFallbackTransform.d.ts +3 -3
- package/dist/esm/types/CPUFallbackViewport.d.ts +6 -6
- package/dist/esm/types/CPUFallbackViewportDisplayedArea.d.ts +3 -3
- package/dist/esm/types/CPUIImageData.d.ts +17 -9
- package/dist/esm/types/Color.d.ts +1 -1
- package/dist/esm/types/Colormap.d.ts +7 -7
- package/dist/esm/types/ContourData.d.ts +6 -6
- package/dist/esm/types/Cornerstone3DConfig.d.ts +7 -7
- package/dist/esm/types/CustomEventType.d.ts +2 -2
- package/dist/esm/types/EventTypes.d.ts +55 -55
- package/dist/esm/types/FlipDirection.d.ts +3 -3
- package/dist/esm/types/IActor.d.ts +3 -3
- package/dist/esm/types/ICache.d.ts +4 -4
- package/dist/esm/types/ICachedGeometry.d.ts +3 -3
- package/dist/esm/types/ICachedImage.d.ts +3 -2
- package/dist/esm/types/ICachedVolume.d.ts +3 -2
- package/dist/esm/types/ICamera.d.ts +3 -3
- package/dist/esm/types/IContour.d.ts +4 -3
- package/dist/esm/types/IContourSet.d.ts +5 -2
- package/dist/esm/types/IDynamicImageVolume.d.ts +3 -3
- package/dist/esm/types/IEnabledElement.d.ts +2 -2
- package/dist/esm/types/IGeometry.d.ts +4 -4
- package/dist/esm/types/IImage.d.ts +12 -10
- package/dist/esm/types/IImageCalibration.d.ts +2 -2
- package/dist/esm/types/IImageData.d.ts +11 -4
- package/dist/esm/types/IImageFrame.d.ts +42 -0
- package/dist/esm/types/IImageFrame.js +1 -0
- package/dist/esm/types/IImageVolume.d.ts +17 -14
- package/dist/esm/types/ILoadObject.d.ts +3 -3
- package/dist/esm/types/IPointsManager.d.ts +23 -0
- package/dist/esm/types/IPointsManager.js +1 -0
- package/dist/esm/types/IRLEVoxelMap.d.ts +16 -0
- package/dist/esm/types/IRLEVoxelMap.js +1 -0
- package/dist/esm/types/IRegisterImageLoader.d.ts +2 -2
- package/dist/esm/types/IRenderingEngine.d.ts +11 -12
- package/dist/esm/types/IRetrieveConfiguration.d.ts +6 -6
- package/dist/esm/types/IStackInput.d.ts +1 -1
- package/dist/esm/types/IStackViewport.d.ts +69 -2
- package/dist/esm/types/IStreamingImageVolume.d.ts +3 -4
- package/dist/esm/types/IStreamingVolumeProperties.d.ts +5 -5
- package/dist/esm/types/ISurface.d.ts +1 -1
- package/dist/esm/types/ITransferFunctionNode.d.ts +9 -0
- package/dist/esm/types/ITransferFunctionNode.js +1 -0
- package/dist/esm/types/IVideoViewport.d.ts +40 -2
- package/dist/esm/types/IViewport.d.ts +62 -41
- package/dist/esm/types/IVolume.d.ts +2 -2
- package/dist/esm/types/IVolumeInput.d.ts +2 -2
- package/dist/esm/types/IVolumeViewport.d.ts +17 -16
- package/dist/esm/types/IVoxelManager.d.ts +54 -0
- package/dist/esm/types/IVoxelManager.js +1 -0
- package/dist/esm/types/IWSIViewport.d.ts +16 -0
- package/dist/esm/types/IWSIViewport.js +1 -0
- package/dist/esm/types/ImageLoadListener.d.ts +2 -2
- package/dist/esm/types/ImageLoaderFn.d.ts +3 -3
- package/dist/esm/types/ImagePixelModule.d.ts +1 -1
- package/dist/esm/types/ImagePlaneModule.d.ts +2 -2
- package/dist/esm/types/ImageSliceData.d.ts +3 -3
- package/dist/esm/types/ImageVolumeProps.d.ts +4 -4
- package/dist/esm/types/Mat3.d.ts +1 -1
- package/dist/esm/types/Metadata.d.ts +6 -6
- package/dist/esm/types/MetadataModuleTypes.d.ts +65 -0
- package/dist/esm/types/MetadataModuleTypes.js +1 -0
- package/dist/esm/types/OrientationVectors.d.ts +4 -4
- package/dist/esm/types/Plane.d.ts +1 -1
- package/dist/esm/types/Point2.d.ts +1 -1
- package/dist/esm/types/Point3.d.ts +3 -3
- package/dist/esm/types/Point4.d.ts +1 -1
- package/dist/esm/types/RGB.d.ts +1 -1
- package/dist/esm/types/ScalingParameters.d.ts +7 -7
- package/dist/esm/types/StackViewportProperties.d.ts +3 -3
- package/dist/esm/types/SurfaceData.d.ts +5 -5
- package/dist/esm/types/TransformMatrix2D.d.ts +1 -1
- package/dist/esm/types/VideoViewportProperties.d.ts +3 -3
- package/dist/esm/types/VideoViewportTypes.d.ts +7 -7
- package/dist/esm/types/ViewportInputOptions.d.ts +7 -7
- package/dist/esm/types/ViewportPreset.d.ts +1 -1
- package/dist/esm/types/ViewportProperties.d.ts +5 -5
- package/dist/esm/types/VolumeLoaderFn.d.ts +4 -3
- package/dist/esm/types/VolumeProps.d.ts +10 -5
- package/dist/esm/types/VolumeViewportProperties.d.ts +3 -3
- package/dist/esm/types/WSIViewportProperties.d.ts +3 -0
- package/dist/esm/types/WSIViewportProperties.js +1 -0
- package/dist/esm/types/WSIViewportTypes.d.ts +13 -0
- package/dist/esm/types/WSIViewportTypes.js +1 -0
- package/dist/esm/types/displayArea.d.ts +4 -4
- package/dist/esm/types/index.d.ts +16 -8
- package/dist/esm/types/voi.d.ts +4 -4
- package/dist/esm/utilities/PointsManager.d.ts +8 -10
- package/dist/esm/utilities/ProgressiveIterator.d.ts +1 -1
- package/dist/esm/utilities/ProgressiveIterator.js +3 -1
- package/dist/esm/utilities/RLEVoxelMap.d.ts +3 -8
- package/dist/esm/utilities/RLEVoxelMap.js +19 -19
- package/dist/esm/utilities/VoxelManager.d.ts +82 -20
- package/dist/esm/utilities/VoxelManager.js +466 -60
- package/dist/esm/utilities/actorCheck.d.ts +1 -1
- package/dist/esm/utilities/applyPreset.d.ts +2 -2
- package/dist/esm/utilities/calculateViewportsSpatialRegistration.d.ts +1 -1
- package/dist/esm/utilities/calculateViewportsSpatialRegistration.js +4 -4
- package/dist/esm/utilities/calibratedPixelSpacingMetadataProvider.d.ts +1 -1
- package/dist/esm/utilities/colormap.d.ts +1 -1
- package/dist/esm/utilities/convertStackToVolumeViewport.d.ts +2 -2
- package/dist/esm/utilities/convertStackToVolumeViewport.js +4 -4
- package/dist/esm/utilities/convertVolumeToStackViewport.d.ts +1 -1
- package/dist/esm/utilities/convertVolumeToStackViewport.js +1 -1
- package/dist/esm/utilities/createLinearRGBTransferFunction.d.ts +1 -1
- package/dist/esm/utilities/createLinearRGBTransferFunction.js +1 -3
- package/dist/esm/utilities/createSigmoidRGBTransferFunction.d.ts +2 -3
- package/dist/esm/utilities/createSigmoidRGBTransferFunction.js +8 -7
- package/dist/esm/utilities/decimate.d.ts +1 -1
- package/dist/esm/utilities/eventListener/TargetEventListeners.js +5 -3
- package/dist/esm/utilities/generateVolumePropsFromImageIds.d.ts +1 -1
- package/dist/esm/utilities/generateVolumePropsFromImageIds.js +33 -80
- package/dist/esm/utilities/genericMetadataProvider.d.ts +9 -2
- package/dist/esm/utilities/genericMetadataProvider.js +7 -1
- package/dist/esm/utilities/getBufferConfiguration.d.ts +2 -3
- package/dist/esm/utilities/getBufferConfiguration.js +5 -15
- package/dist/esm/utilities/getClosestImageId.js +1 -1
- package/dist/esm/utilities/getClosestStackImageIndexForPoint.d.ts +1 -1
- package/dist/esm/utilities/getCurrentVolumeViewportSlice.d.ts +4 -5
- package/dist/esm/utilities/getCurrentVolumeViewportSlice.js +8 -58
- package/dist/esm/utilities/getImageLegacy.d.ts +1 -1
- package/dist/esm/utilities/getImageSliceDataForVolumeViewport.d.ts +1 -1
- package/dist/esm/utilities/getMinMax.d.ts +2 -1
- package/dist/esm/utilities/getScalingParameters.d.ts +1 -1
- package/dist/esm/utilities/getSpacingInNormalDirection.d.ts +2 -2
- package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.d.ts +1 -1
- package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.js +2 -2
- package/dist/esm/utilities/getViewportImageCornersInWorld.d.ts +1 -1
- package/dist/esm/utilities/getViewportImageIds.d.ts +1 -1
- package/dist/esm/utilities/getViewportModality.d.ts +7 -3
- package/dist/esm/utilities/getViewportModality.js +9 -6
- package/dist/esm/utilities/getViewportsWithImageURI.d.ts +2 -2
- package/dist/esm/utilities/getViewportsWithVolumeId.d.ts +2 -2
- package/dist/esm/utilities/getViewportsWithVolumeId.js +3 -7
- package/dist/esm/utilities/getVoiFromSigmoidRGBTransferFunction.d.ts +1 -1
- package/dist/esm/utilities/getVolumeActorCorners.d.ts +2 -2
- package/dist/esm/utilities/getVolumeId.js +2 -2
- package/dist/esm/utilities/getVolumeSliceRangeInfo.d.ts +1 -1
- package/dist/esm/utilities/getVolumeViewportScrollInfo.d.ts +1 -1
- package/dist/esm/utilities/getVolumeViewportsContainingSameVolumes.d.ts +2 -2
- package/dist/esm/utilities/hasFloatScalingParameters.d.ts +1 -1
- package/dist/esm/utilities/imageRetrieveMetadataProvider.d.ts +1 -1
- package/dist/esm/utilities/imageToWorldCoords.d.ts +1 -1
- package/dist/esm/utilities/index.d.ts +3 -8
- package/dist/esm/utilities/index.js +4 -8
- package/dist/esm/utilities/indexWithinDimensions.d.ts +1 -1
- package/dist/esm/utilities/invertRgbTransferFunction.d.ts +2 -1
- package/dist/esm/utilities/isEqual.js +6 -1
- package/dist/esm/utilities/isPTPrescaledWithSUV.d.ts +1 -1
- package/dist/esm/utilities/isPTPrescaledWithSUV.js +1 -1
- package/dist/esm/utilities/isTypedArray.d.ts +1 -1
- package/dist/esm/utilities/loadImageToCanvas.d.ts +6 -6
- package/dist/esm/utilities/makeVolumeMetadata.d.ts +2 -2
- package/dist/esm/utilities/planar.d.ts +2 -2
- package/dist/esm/utilities/renderToCanvasCPU.d.ts +1 -1
- package/dist/esm/utilities/renderToCanvasGPU.d.ts +2 -2
- package/dist/esm/utilities/renderToCanvasGPU.js +1 -1
- package/dist/esm/utilities/scaleRgbTransferFunction.d.ts +2 -1
- package/dist/esm/utilities/snapFocalPointToSlice.d.ts +1 -1
- package/dist/esm/utilities/sortImageIdsAndGetSpacing.d.ts +5 -5
- package/dist/esm/utilities/transformCanvasToIJK.d.ts +2 -2
- package/dist/esm/utilities/transformIJKToCanvas.d.ts +1 -1
- package/dist/esm/utilities/triggerEvent.js +1 -1
- package/dist/esm/utilities/updateVTKImageDataWithCornerstoneImage.d.ts +2 -2
- package/dist/esm/utilities/updateVTKImageDataWithCornerstoneImage.js +1 -1
- package/dist/esm/utilities/uuidv4.js +3 -1
- package/dist/esm/utilities/worldToImageCoords.d.ts +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +5 -6
- package/dist/esm/cache/utils/restoreImagesFromBuffer.d.ts +0 -2
- package/dist/esm/cache/utils/restoreImagesFromBuffer.js +0 -28
- package/dist/esm/enums/SharedArrayBufferModes.d.ts +0 -6
- package/dist/esm/enums/SharedArrayBufferModes.js +0 -7
- package/dist/esm/utilities/cacheUtils.d.ts +0 -2
- package/dist/esm/utilities/cacheUtils.js +0 -86
- package/dist/esm/utilities/createFloat32SharedArray.d.ts +0 -2
- package/dist/esm/utilities/createFloat32SharedArray.js +0 -27
- package/dist/esm/utilities/createInt16SharedArray.d.ts +0 -2
- package/dist/esm/utilities/createInt16SharedArray.js +0 -11
- package/dist/esm/utilities/createUInt16SharedArray.d.ts +0 -2
- package/dist/esm/utilities/createUInt16SharedArray.js +0 -11
- package/dist/esm/utilities/createUint8SharedArray.d.ts +0 -2
- package/dist/esm/utilities/createUint8SharedArray.js +0 -12
- package/dist/esm/utilities/getScalarDataType.d.ts +0 -2
- package/dist/esm/utilities/getScalarDataType.js +0 -19
|
@@ -41,7 +41,6 @@ class StackViewport extends Viewport {
|
|
|
41
41
|
this.initialTransferFunctionNodes = null;
|
|
42
42
|
this.stackInvalidated = false;
|
|
43
43
|
this._publishCalibratedEvent = false;
|
|
44
|
-
this.useNativeDataType = false;
|
|
45
44
|
this.updateRenderingPipeline = () => {
|
|
46
45
|
this._configureRenderingPipeline();
|
|
47
46
|
};
|
|
@@ -66,7 +65,7 @@ class StackViewport extends Viewport {
|
|
|
66
65
|
if (preferSizeOverAccuracy) {
|
|
67
66
|
mapper.setPreferSizeOverAccuracy(true);
|
|
68
67
|
}
|
|
69
|
-
if (imageData.getPointData().getNumberOfComponents() > 1) {
|
|
68
|
+
if (imageData.getPointData().getScalars().getNumberOfComponents() > 1) {
|
|
70
69
|
actor.getProperty().setIndependentComponents(false);
|
|
71
70
|
}
|
|
72
71
|
return actor;
|
|
@@ -115,9 +114,12 @@ class StackViewport extends Viewport {
|
|
|
115
114
|
};
|
|
116
115
|
this.setRotation = (rotation) => {
|
|
117
116
|
const previousCamera = this.getCamera();
|
|
118
|
-
this.useCPURendering
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
if (this.useCPURendering) {
|
|
118
|
+
this.setRotationCPU(rotation);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.setRotationGPU(rotation);
|
|
122
|
+
}
|
|
121
123
|
if (this._suppressCameraModifiedEvents) {
|
|
122
124
|
return;
|
|
123
125
|
}
|
|
@@ -159,11 +161,11 @@ class StackViewport extends Viewport {
|
|
|
159
161
|
const iVector = direction.slice(0, 3);
|
|
160
162
|
const jVector = direction.slice(3, 6);
|
|
161
163
|
const diff = vec3.subtract(vec3.create(), worldPos, origin);
|
|
162
|
-
const
|
|
164
|
+
const indexPoint = [
|
|
163
165
|
vec3.dot(diff, iVector) / spacing[0],
|
|
164
166
|
vec3.dot(diff, jVector) / spacing[1],
|
|
165
167
|
];
|
|
166
|
-
const canvasPoint = pixelToCanvas(this._cpuFallbackEnabledElement,
|
|
168
|
+
const canvasPoint = pixelToCanvas(this._cpuFallbackEnabledElement, indexPoint);
|
|
167
169
|
return canvasPoint;
|
|
168
170
|
};
|
|
169
171
|
this.canvasToWorldGPU = (canvasPos) => {
|
|
@@ -365,9 +367,8 @@ class StackViewport extends Viewport {
|
|
|
365
367
|
this.scaling = {};
|
|
366
368
|
this.modality = null;
|
|
367
369
|
this.useCPURendering = getShouldUseCPURendering();
|
|
368
|
-
this.useNativeDataType = this._shouldUseNativeDataType();
|
|
369
370
|
this._configureRenderingPipeline();
|
|
370
|
-
this.useCPURendering
|
|
371
|
+
const result = this.useCPURendering
|
|
371
372
|
? this._resetCPUFallbackElement()
|
|
372
373
|
: this._resetGPUViewport();
|
|
373
374
|
this.imageIds = [];
|
|
@@ -385,7 +386,6 @@ class StackViewport extends Viewport {
|
|
|
385
386
|
return getShouldUseCPURendering();
|
|
386
387
|
}
|
|
387
388
|
_configureRenderingPipeline(value) {
|
|
388
|
-
this.useNativeDataType = this._shouldUseNativeDataType();
|
|
389
389
|
this.useCPURendering = value ?? getShouldUseCPURendering();
|
|
390
390
|
for (const key in this.renderingPipelineFunctions) {
|
|
391
391
|
if (Object.prototype.hasOwnProperty.call(this.renderingPipelineFunctions, key)) {
|
|
@@ -393,7 +393,7 @@ class StackViewport extends Viewport {
|
|
|
393
393
|
this[key] = this.useCPURendering ? functions.cpu : functions.gpu;
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
|
-
this.useCPURendering
|
|
396
|
+
const result = this.useCPURendering
|
|
397
397
|
? this._resetCPUFallbackElement()
|
|
398
398
|
: this._resetGPUViewport();
|
|
399
399
|
}
|
|
@@ -438,7 +438,9 @@ class StackViewport extends Viewport {
|
|
|
438
438
|
spacing: vtkImageData.getSpacing(),
|
|
439
439
|
origin: vtkImageData.getOrigin(),
|
|
440
440
|
direction: vtkImageData.getDirection(),
|
|
441
|
-
scalarData
|
|
441
|
+
get scalarData() {
|
|
442
|
+
return this.csImage.voxelManager.getScalarData();
|
|
443
|
+
},
|
|
442
444
|
imageData: actor.getMapper().getInputData(),
|
|
443
445
|
metadata: {
|
|
444
446
|
Modality: this.modality,
|
|
@@ -450,6 +452,7 @@ class StackViewport extends Viewport {
|
|
|
450
452
|
preScale: {
|
|
451
453
|
...this.csImage.preScale,
|
|
452
454
|
},
|
|
455
|
+
voxelManager: this.csImage.voxelManager,
|
|
453
456
|
};
|
|
454
457
|
}
|
|
455
458
|
getImageDataCPU() {
|
|
@@ -489,6 +492,7 @@ class StackViewport extends Viewport {
|
|
|
489
492
|
preScale: {
|
|
490
493
|
...this.csImage.preScale,
|
|
491
494
|
},
|
|
495
|
+
voxelManager: this.csImage.voxelManager,
|
|
492
496
|
};
|
|
493
497
|
}
|
|
494
498
|
buildMetadata(image) {
|
|
@@ -981,7 +985,7 @@ class StackViewport extends Viewport {
|
|
|
981
985
|
_getNumCompsFromPhotometricInterpretation(photometricInterpretation) {
|
|
982
986
|
let numberOfComponents = 1;
|
|
983
987
|
if (photometricInterpretation === 'RGB' ||
|
|
984
|
-
photometricInterpretation.
|
|
988
|
+
photometricInterpretation.includes('YBR') ||
|
|
985
989
|
photometricInterpretation === 'PALETTE COLOR') {
|
|
986
990
|
numberOfComponents = 3;
|
|
987
991
|
}
|
|
@@ -1010,11 +1014,11 @@ class StackViewport extends Viewport {
|
|
|
1010
1014
|
const yVoxels = image.rows;
|
|
1011
1015
|
const zSpacing = EPSILON;
|
|
1012
1016
|
const zVoxels = 1;
|
|
1013
|
-
const
|
|
1017
|
+
const numberOfComponents = image.numberOfComponents ||
|
|
1014
1018
|
this._getNumCompsFromPhotometricInterpretation(imagePixelModule.photometricInterpretation);
|
|
1015
1019
|
return {
|
|
1016
1020
|
bitsAllocated: imagePixelModule.bitsAllocated,
|
|
1017
|
-
|
|
1021
|
+
numberOfComponents,
|
|
1018
1022
|
origin,
|
|
1019
1023
|
direction: [...rowCosineVec, ...colCosineVec, ...scanAxisNormal],
|
|
1020
1024
|
dimensions: [xVoxels, yVoxels, zVoxels],
|
|
@@ -1037,7 +1041,7 @@ class StackViewport extends Viewport {
|
|
|
1037
1041
|
let { rowCosines, columnCosines } = imagePlaneModule;
|
|
1038
1042
|
rowCosines ||= [1, 0, 0];
|
|
1039
1043
|
columnCosines ||= [0, 1, 0];
|
|
1040
|
-
const viewPlaneNormal =
|
|
1044
|
+
const viewPlaneNormal = vec3.cross([0, 0, 0], columnCosines, rowCosines);
|
|
1041
1045
|
return {
|
|
1042
1046
|
FrameOfReferenceUID,
|
|
1043
1047
|
viewPlaneNormal,
|
|
@@ -1058,11 +1062,11 @@ class StackViewport extends Viewport {
|
|
|
1058
1062
|
viewUp: [viewUp[0], viewUp[1], viewUp[2]],
|
|
1059
1063
|
};
|
|
1060
1064
|
}
|
|
1061
|
-
createVTKImageData({ origin, direction, dimensions, spacing,
|
|
1065
|
+
createVTKImageData({ origin, direction, dimensions, spacing, numberOfComponents, pixelArray, }) {
|
|
1062
1066
|
const values = new pixelArray.constructor(pixelArray.length);
|
|
1063
1067
|
const scalarArray = vtkDataArray.newInstance({
|
|
1064
1068
|
name: 'Pixels',
|
|
1065
|
-
numberOfComponents:
|
|
1069
|
+
numberOfComponents: numberOfComponents,
|
|
1066
1070
|
values: values,
|
|
1067
1071
|
});
|
|
1068
1072
|
const imageData = vtkImageData.newInstance();
|
|
@@ -1073,15 +1077,20 @@ class StackViewport extends Viewport {
|
|
|
1073
1077
|
imageData.getPointData().setScalars(scalarArray);
|
|
1074
1078
|
return imageData;
|
|
1075
1079
|
}
|
|
1076
|
-
_createVTKImageData({ origin, direction, dimensions, spacing,
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1080
|
+
_createVTKImageData({ origin, direction, dimensions, spacing, numberOfComponents, pixelArray, }) {
|
|
1081
|
+
try {
|
|
1082
|
+
this._imageData = this.createVTKImageData({
|
|
1083
|
+
origin,
|
|
1084
|
+
direction,
|
|
1085
|
+
dimensions,
|
|
1086
|
+
spacing,
|
|
1087
|
+
numberOfComponents,
|
|
1088
|
+
pixelArray,
|
|
1089
|
+
});
|
|
1090
|
+
}
|
|
1091
|
+
catch (e) {
|
|
1092
|
+
console.error(e);
|
|
1093
|
+
}
|
|
1085
1094
|
}
|
|
1086
1095
|
async setStack(imageIds, currentImageIdIndex = 0) {
|
|
1087
1096
|
this._throwIfDestroyed();
|
|
@@ -1142,8 +1151,7 @@ class StackViewport extends Viewport {
|
|
|
1142
1151
|
yVoxels === image.rows &&
|
|
1143
1152
|
isEqual(imagePlaneModule.rowCosines, rowCosines) &&
|
|
1144
1153
|
isEqual(imagePlaneModule.columnCosines, columnCosines) &&
|
|
1145
|
-
(
|
|
1146
|
-
dataType === image.getPixelData().constructor.name));
|
|
1154
|
+
dataType === image.voxelManager.getScalarData().constructor.name);
|
|
1147
1155
|
}
|
|
1148
1156
|
_updateVTKImageDataFromCornerstoneImage(image) {
|
|
1149
1157
|
const imagePlaneModule = this._getImagePlaneModule(image.imageId);
|
|
@@ -1165,7 +1173,7 @@ class StackViewport extends Viewport {
|
|
|
1165
1173
|
if (this.currentImageIdIndex !== imageIdIndex) {
|
|
1166
1174
|
return;
|
|
1167
1175
|
}
|
|
1168
|
-
const pixelData = image.
|
|
1176
|
+
const pixelData = image.voxelManager.getScalarData();
|
|
1169
1177
|
const preScale = image.preScale;
|
|
1170
1178
|
const scalingParams = preScale?.scalingParameters;
|
|
1171
1179
|
const scaledWithNonIntegers = (preScale?.scaled && scalingParams?.rescaleIntercept % 1 !== 0) ||
|
|
@@ -1290,17 +1298,12 @@ class StackViewport extends Viewport {
|
|
|
1290
1298
|
getLoaderImageOptions(imageId) {
|
|
1291
1299
|
const imageIdIndex = this.imageIds.indexOf(imageId);
|
|
1292
1300
|
const { transferSyntaxUID } = metaData.get('transferSyntax', imageId) || {};
|
|
1293
|
-
const additionalDetails = { imageId, imageIdIndex };
|
|
1294
1301
|
const options = {
|
|
1295
|
-
targetBuffer: {
|
|
1296
|
-
type: this.useNativeDataType ? undefined : 'Float32Array',
|
|
1297
|
-
},
|
|
1298
1302
|
useRGBA: false,
|
|
1299
1303
|
transferSyntaxUID,
|
|
1300
|
-
useNativeDataType: this.useNativeDataType,
|
|
1301
1304
|
priority: 5,
|
|
1302
1305
|
requestType: RequestType.Interaction,
|
|
1303
|
-
additionalDetails,
|
|
1306
|
+
additionalDetails: { imageId, imageIdIndex },
|
|
1304
1307
|
};
|
|
1305
1308
|
return options;
|
|
1306
1309
|
}
|
|
@@ -1346,7 +1349,7 @@ class StackViewport extends Viewport {
|
|
|
1346
1349
|
this._cpuFallbackEnabledElement.metadata = {
|
|
1347
1350
|
...metadata,
|
|
1348
1351
|
};
|
|
1349
|
-
this.cpuImagePixelData = image.
|
|
1352
|
+
this.cpuImagePixelData = image.voxelManager.getScalarData();
|
|
1350
1353
|
const viewportSettingToUse = Object.assign({}, viewport, this._cpuFallbackEnabledElement.viewport);
|
|
1351
1354
|
this._cpuFallbackEnabledElement.viewport = this.stackInvalidated
|
|
1352
1355
|
? viewport
|
|
@@ -1355,19 +1358,22 @@ class StackViewport extends Viewport {
|
|
|
1355
1358
|
this.cpuRenderingInvalidated = true;
|
|
1356
1359
|
this._cpuFallbackEnabledElement.transform = calculateTransform(this._cpuFallbackEnabledElement);
|
|
1357
1360
|
}
|
|
1361
|
+
getSliceViewInfo() {
|
|
1362
|
+
throw new Error('Method not implemented.');
|
|
1363
|
+
}
|
|
1358
1364
|
addImages(stackInputs) {
|
|
1359
1365
|
const actors = this.getActors();
|
|
1360
1366
|
stackInputs.forEach((stackInput) => {
|
|
1361
1367
|
const { imageId } = stackInput;
|
|
1362
1368
|
const image = cache.getImage(imageId);
|
|
1363
|
-
const { origin, dimensions, direction, spacing,
|
|
1369
|
+
const { origin, dimensions, direction, spacing, numberOfComponents } = this.getImageDataMetadata(image);
|
|
1364
1370
|
const imagedata = this.createVTKImageData({
|
|
1365
1371
|
origin,
|
|
1366
1372
|
dimensions,
|
|
1367
1373
|
direction,
|
|
1368
1374
|
spacing,
|
|
1369
|
-
|
|
1370
|
-
pixelArray: image.
|
|
1375
|
+
numberOfComponents,
|
|
1376
|
+
pixelArray: image.voxelManager.getScalarData(),
|
|
1371
1377
|
});
|
|
1372
1378
|
const imageActor = this.createActorMapper(imagedata);
|
|
1373
1379
|
if (imageActor) {
|
|
@@ -1405,14 +1411,14 @@ class StackViewport extends Viewport {
|
|
|
1405
1411
|
this.stackActorReInitialized = false;
|
|
1406
1412
|
return;
|
|
1407
1413
|
}
|
|
1408
|
-
const { origin, direction, dimensions, spacing,
|
|
1409
|
-
const pixelArray = image.
|
|
1414
|
+
const { origin, direction, dimensions, spacing, numberOfComponents, imagePixelModule, } = this.getImageDataMetadata(image);
|
|
1415
|
+
const pixelArray = image.voxelManager.getScalarData();
|
|
1410
1416
|
this._createVTKImageData({
|
|
1411
1417
|
origin,
|
|
1412
1418
|
direction,
|
|
1413
1419
|
dimensions,
|
|
1414
1420
|
spacing,
|
|
1415
|
-
|
|
1421
|
+
numberOfComponents,
|
|
1416
1422
|
pixelArray,
|
|
1417
1423
|
});
|
|
1418
1424
|
this._updateVTKImageDataFromCornerstoneImage(image);
|
|
@@ -1464,7 +1470,7 @@ class StackViewport extends Viewport {
|
|
|
1464
1470
|
if (this.modality !== 'PT' || !this.csImage.isPreScaled) {
|
|
1465
1471
|
return false;
|
|
1466
1472
|
}
|
|
1467
|
-
if (!this.csImage.preScale?.scalingParameters
|
|
1473
|
+
if (!this.csImage.preScale?.scalingParameters.suvbw) {
|
|
1468
1474
|
return false;
|
|
1469
1475
|
}
|
|
1470
1476
|
return true;
|
|
@@ -1626,18 +1632,28 @@ class StackViewport extends Viewport {
|
|
|
1626
1632
|
return this._getVOIRangeFromWindowLevel(windowWidth, windowCenter);
|
|
1627
1633
|
}
|
|
1628
1634
|
_getValidVOILUTFunction(voiLUTFunction) {
|
|
1629
|
-
if (Object.values(VOILUTFunctionType).
|
|
1630
|
-
|
|
1635
|
+
if (!Object.values(VOILUTFunctionType).includes(voiLUTFunction)) {
|
|
1636
|
+
return VOILUTFunctionType.LINEAR;
|
|
1631
1637
|
}
|
|
1632
1638
|
return voiLUTFunction;
|
|
1633
1639
|
}
|
|
1640
|
+
getSliceInfo() {
|
|
1641
|
+
const sliceIndex = this.getSliceIndex();
|
|
1642
|
+
const { dimensions } = this.getImageData();
|
|
1643
|
+
return {
|
|
1644
|
+
width: dimensions[0],
|
|
1645
|
+
height: dimensions[1],
|
|
1646
|
+
sliceIndex,
|
|
1647
|
+
slicePlane: 2,
|
|
1648
|
+
};
|
|
1649
|
+
}
|
|
1634
1650
|
isReferenceViewable(viewRef, options = {}) {
|
|
1635
1651
|
if (!super.isReferenceViewable(viewRef, options)) {
|
|
1636
1652
|
return false;
|
|
1637
1653
|
}
|
|
1638
1654
|
const { referencedImageId, sliceIndex } = viewRef;
|
|
1639
1655
|
if (viewRef.volumeId && !referencedImageId) {
|
|
1640
|
-
return options.asVolume
|
|
1656
|
+
return options.asVolume;
|
|
1641
1657
|
}
|
|
1642
1658
|
let testIndex = this.getCurrentImageIdIndex();
|
|
1643
1659
|
const currentImageId = this.imageIds[testIndex];
|
|
@@ -1715,16 +1731,16 @@ class StackViewport extends Viewport {
|
|
|
1715
1731
|
if (!viewRef) {
|
|
1716
1732
|
return;
|
|
1717
1733
|
}
|
|
1718
|
-
const { referencedImageId, sliceIndex
|
|
1734
|
+
const { referencedImageId, sliceIndex } = viewRef;
|
|
1719
1735
|
if (typeof sliceIndex === 'number' &&
|
|
1720
1736
|
referencedImageId &&
|
|
1721
1737
|
referencedImageId === this.imageIds[sliceIndex]) {
|
|
1722
|
-
this.
|
|
1738
|
+
this.scroll(sliceIndex - this.targetImageIdIndex);
|
|
1723
1739
|
}
|
|
1724
1740
|
else {
|
|
1725
1741
|
const foundIndex = this.imageIds.indexOf(referencedImageId);
|
|
1726
1742
|
if (foundIndex !== -1) {
|
|
1727
|
-
this.
|
|
1743
|
+
this.scroll(foundIndex - this.targetImageIdIndex);
|
|
1728
1744
|
}
|
|
1729
1745
|
else {
|
|
1730
1746
|
throw new Error('Unsupported - referenced image id not found');
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { mat4 } from 'gl-matrix';
|
|
1
2
|
import { VideoEnums as VideoViewportEnum } from '../enums';
|
|
2
|
-
import type { IVideoViewport, VideoViewportProperties, Point3, Point2, ICamera, VideoViewportInput, VOIRange, IImage, ViewReferenceSpecifier, ViewReference, ReferenceCompatibleOptions } from '../types';
|
|
3
|
+
import type { IVideoViewport, VideoViewportProperties, Point3, Point2, ICamera, VideoViewportInput, VOIRange, IImage, ViewReferenceSpecifier, ViewReference, ReferenceCompatibleOptions, ImageSetOptions, IStackInput, CPUIImageData, IImageData } from '../types';
|
|
3
4
|
import { Transform } from './helpers/cpuFallback/rendering/transform';
|
|
4
5
|
import Viewport from './Viewport';
|
|
5
6
|
import CanvasActor from './CanvasActor';
|
|
@@ -39,7 +40,7 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
|
|
|
39
40
|
private elementDisabledHandler;
|
|
40
41
|
getImageDataMetadata(image: IImage | string): {
|
|
41
42
|
bitsAllocated: number;
|
|
42
|
-
|
|
43
|
+
numberOfComponents: number;
|
|
43
44
|
origin: any;
|
|
44
45
|
rows: any;
|
|
45
46
|
columns: any;
|
|
@@ -50,16 +51,25 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
|
|
|
50
51
|
numVoxels: number;
|
|
51
52
|
imagePlaneModule: any;
|
|
52
53
|
};
|
|
54
|
+
setDataIds(imageIds: string[], options?: ImageSetOptions): void;
|
|
53
55
|
setVideo(imageId: string, frameNumber?: number): Promise<unknown>;
|
|
54
56
|
setVideoURL(videoURL: string): Promise<unknown>;
|
|
55
57
|
getImageIds(): string[];
|
|
56
58
|
togglePlayPause(): boolean;
|
|
57
59
|
play(): Promise<void>;
|
|
58
|
-
pause():
|
|
60
|
+
pause(): void;
|
|
59
61
|
scroll(delta?: number): Promise<void>;
|
|
60
62
|
start(): Promise<void>;
|
|
61
63
|
end(): Promise<void>;
|
|
62
64
|
setTime(timeInSeconds: number): Promise<void>;
|
|
65
|
+
getSliceViewInfo(): {
|
|
66
|
+
width: number;
|
|
67
|
+
height: number;
|
|
68
|
+
sliceIndex: number;
|
|
69
|
+
slicePlane: number;
|
|
70
|
+
sliceToIndexMatrix: mat4;
|
|
71
|
+
indexToSliceMatrix: mat4;
|
|
72
|
+
};
|
|
63
73
|
setFrameNumber(frame: number): Promise<void>;
|
|
64
74
|
setFrameRange(frameRange: number[]): void;
|
|
65
75
|
getFrameRange(): [number, number];
|
|
@@ -69,30 +79,9 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
|
|
|
69
79
|
getProperties: () => VideoViewportProperties;
|
|
70
80
|
resetProperties(): void;
|
|
71
81
|
protected getScalarData(): CanvasScalarData;
|
|
72
|
-
getImageData():
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
origin: any;
|
|
76
|
-
direction: any;
|
|
77
|
-
metadata: {
|
|
78
|
-
Modality: any;
|
|
79
|
-
};
|
|
80
|
-
getScalarData: () => CanvasScalarData;
|
|
81
|
-
imageData: {
|
|
82
|
-
getDirection: () => any;
|
|
83
|
-
getDimensions: () => any;
|
|
84
|
-
getRange: () => number[];
|
|
85
|
-
getScalarData: () => CanvasScalarData;
|
|
86
|
-
getSpacing: () => any;
|
|
87
|
-
worldToIndex: (point: Point3) => number[];
|
|
88
|
-
indexToWorld: (point: Point2, destPoint?: Point3) => Point3;
|
|
89
|
-
};
|
|
90
|
-
hasPixelSpacing: boolean;
|
|
91
|
-
calibration: import("../types").IImageCalibration;
|
|
92
|
-
preScale: {
|
|
93
|
-
scaled: boolean;
|
|
94
|
-
};
|
|
95
|
-
};
|
|
82
|
+
getImageData(): IImageData | CPUIImageData;
|
|
83
|
+
getMiddleSliceData: () => never;
|
|
84
|
+
useCustomRenderingPipeline: boolean;
|
|
96
85
|
hasImageURI(imageURI: string): boolean;
|
|
97
86
|
setVOI(voiRange: VOIRange): void;
|
|
98
87
|
setWindowLevel(windowWidth?: number, windowCenter?: number): void;
|
|
@@ -102,6 +91,7 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
|
|
|
102
91
|
getCurrentImageId(): string;
|
|
103
92
|
getViewReferenceId(specifier?: ViewReferenceSpecifier): string;
|
|
104
93
|
isReferenceViewable(viewRef: ViewReference, options?: ReferenceCompatibleOptions): boolean;
|
|
94
|
+
setViewReference(viewRef: ViewReference): void;
|
|
105
95
|
getViewReference(viewRefSpecifier?: ViewReferenceSpecifier): ViewReference;
|
|
106
96
|
getFrameNumber(): number;
|
|
107
97
|
getCurrentImageIdIndex(): number;
|
|
@@ -109,6 +99,7 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
|
|
|
109
99
|
getCamera(): ICamera;
|
|
110
100
|
resetCamera: () => boolean;
|
|
111
101
|
getNumberOfSlices: () => number;
|
|
102
|
+
getFrameRate(): number;
|
|
112
103
|
getFrameOfReferenceUID: () => string;
|
|
113
104
|
resize: () => void;
|
|
114
105
|
canvasToWorld: (canvasPos: Point2, destPos?: Point3) => Point3;
|
|
@@ -123,7 +114,7 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
|
|
|
123
114
|
customRenderViewportToCanvas: () => void;
|
|
124
115
|
protected getTransform(): Transform;
|
|
125
116
|
updateCameraClippingPlanesAndRange(): void;
|
|
126
|
-
addImages(stackInputs:
|
|
117
|
+
addImages(stackInputs: IStackInput[]): void;
|
|
127
118
|
protected createActorMapper(image: any): CanvasActor;
|
|
128
119
|
private renderFrame;
|
|
129
120
|
private renderWhilstPlaying;
|
|
@@ -23,7 +23,6 @@ class VideoViewport extends Viewport {
|
|
|
23
23
|
this.playbackRate = 1;
|
|
24
24
|
this.frameRange = [0, 0];
|
|
25
25
|
this.fps = 30;
|
|
26
|
-
this.numberOfFrames = 0;
|
|
27
26
|
this.videoCamera = {
|
|
28
27
|
panWorld: [0, 0],
|
|
29
28
|
parallelScale: 1,
|
|
@@ -41,16 +40,21 @@ class VideoViewport extends Viewport {
|
|
|
41
40
|
voiRange: { ...this.voiRange },
|
|
42
41
|
};
|
|
43
42
|
};
|
|
43
|
+
this.getMiddleSliceData = () => {
|
|
44
|
+
throw new Error('Method not implemented.');
|
|
45
|
+
};
|
|
46
|
+
this.useCustomRenderingPipeline = true;
|
|
44
47
|
this.resetCamera = () => {
|
|
45
48
|
this.refreshRenderValues();
|
|
46
49
|
this.canvasContext.fillRect(0, 0, this.canvas.width, this.canvas.height);
|
|
47
|
-
if (this.isPlaying
|
|
50
|
+
if (!this.isPlaying) {
|
|
48
51
|
this.renderFrame();
|
|
49
52
|
}
|
|
50
53
|
return true;
|
|
51
54
|
};
|
|
52
55
|
this.getNumberOfSlices = () => {
|
|
53
|
-
|
|
56
|
+
const computedSlices = Math.round((this.videoElement.duration * this.fps) / this.scrollSpeed);
|
|
57
|
+
return isNaN(computedSlices) ? this.numberOfFrames : computedSlices;
|
|
54
58
|
};
|
|
55
59
|
this.getFrameOfReferenceUID = () => {
|
|
56
60
|
return this.videoElement.src;
|
|
@@ -63,7 +67,7 @@ class VideoViewport extends Viewport {
|
|
|
63
67
|
canvas.height = clientHeight;
|
|
64
68
|
}
|
|
65
69
|
this.refreshRenderValues();
|
|
66
|
-
if (this.isPlaying
|
|
70
|
+
if (!this.isPlaying) {
|
|
67
71
|
this.renderFrame();
|
|
68
72
|
}
|
|
69
73
|
};
|
|
@@ -98,7 +102,9 @@ class VideoViewport extends Viewport {
|
|
|
98
102
|
};
|
|
99
103
|
this.indexToCanvas = (indexPos) => {
|
|
100
104
|
const transform = this.getTransform();
|
|
101
|
-
return
|
|
105
|
+
return transform
|
|
106
|
+
.transformPoint(indexPos)
|
|
107
|
+
.map((it) => it / devicePixelRatio);
|
|
102
108
|
};
|
|
103
109
|
this.customRenderViewportToCanvas = () => {
|
|
104
110
|
this.renderFrame();
|
|
@@ -109,7 +115,7 @@ class VideoViewport extends Viewport {
|
|
|
109
115
|
const ctx = this.canvasContext;
|
|
110
116
|
ctx.resetTransform();
|
|
111
117
|
ctx.transform(transformationMatrix[0], transformationMatrix[1], transformationMatrix[2], transformationMatrix[3], transformationMatrix[4], transformationMatrix[5]);
|
|
112
|
-
ctx.drawImage(this.videoElement, 0, 0, this.videoWidth, this.videoHeight);
|
|
118
|
+
ctx.drawImage(this.videoElement, 0, 0, this.videoWidth || 1024, this.videoHeight || 1024);
|
|
113
119
|
for (const actor of this.getActors()) {
|
|
114
120
|
actor.actor.render(this, this.canvasContext);
|
|
115
121
|
}
|
|
@@ -126,11 +132,13 @@ class VideoViewport extends Viewport {
|
|
|
126
132
|
element: this.element,
|
|
127
133
|
viewportId: this.id,
|
|
128
134
|
viewport: this,
|
|
135
|
+
imageIndex: this.getCurrentImageIdIndex(),
|
|
136
|
+
numberOfSlices: this.numberOfFrames,
|
|
129
137
|
renderingEngineId: this.renderingEngineId,
|
|
130
138
|
time: this.videoElement.currentTime,
|
|
131
139
|
duration: this.videoElement.duration,
|
|
132
140
|
});
|
|
133
|
-
this.initialRender
|
|
141
|
+
this.initialRender();
|
|
134
142
|
const frame = this.getFrameNumber();
|
|
135
143
|
if (this.isPlaying) {
|
|
136
144
|
if (frame < this.frameRange[0]) {
|
|
@@ -204,7 +212,7 @@ class VideoViewport extends Viewport {
|
|
|
204
212
|
this.hasPixelSpacing = !!imagePlaneModule.columnPixelSpacing;
|
|
205
213
|
return {
|
|
206
214
|
bitsAllocated: 8,
|
|
207
|
-
|
|
215
|
+
numberOfComponents: 3,
|
|
208
216
|
origin,
|
|
209
217
|
rows,
|
|
210
218
|
columns,
|
|
@@ -216,15 +224,23 @@ class VideoViewport extends Viewport {
|
|
|
216
224
|
imagePlaneModule,
|
|
217
225
|
};
|
|
218
226
|
}
|
|
227
|
+
setDataIds(imageIds, options) {
|
|
228
|
+
this.setVideo(imageIds[0], (options.viewReference.sliceIndex || 0) + 1);
|
|
229
|
+
}
|
|
219
230
|
setVideo(imageId, frameNumber) {
|
|
220
231
|
this.imageId = Array.isArray(imageId) ? imageId[0] : imageId;
|
|
221
|
-
const
|
|
232
|
+
const imageUrlModule = metaData.get(MetadataModules.IMAGE_URL, imageId);
|
|
233
|
+
if (!imageUrlModule?.rendered) {
|
|
234
|
+
throw new Error(`Video Image ID ${imageId} does not have a rendered video view`);
|
|
235
|
+
}
|
|
236
|
+
const { rendered } = imageUrlModule;
|
|
222
237
|
const generalSeries = metaData.get(MetadataModules.GENERAL_SERIES, imageId);
|
|
223
238
|
this.modality = generalSeries?.Modality;
|
|
224
239
|
this.metadata = this.getImageDataMetadata(imageId);
|
|
240
|
+
let { cineRate, numberOfFrames } = metaData.get(MetadataModules.CINE, imageId);
|
|
241
|
+
this.numberOfFrames = numberOfFrames;
|
|
225
242
|
return this.setVideoURL(rendered).then(() => {
|
|
226
|
-
|
|
227
|
-
if (!numberOfFrames) {
|
|
243
|
+
if (!numberOfFrames || numberOfFrames === 1) {
|
|
228
244
|
numberOfFrames = Math.round(this.videoElement.duration * (cineRate || 30));
|
|
229
245
|
}
|
|
230
246
|
if (!cineRate) {
|
|
@@ -281,18 +297,18 @@ class VideoViewport extends Viewport {
|
|
|
281
297
|
async play() {
|
|
282
298
|
try {
|
|
283
299
|
if (!this.isPlaying) {
|
|
284
|
-
await this.videoElement.play();
|
|
285
300
|
this.isPlaying = true;
|
|
301
|
+
await this.videoElement.play();
|
|
286
302
|
this.renderWhilstPlaying();
|
|
287
303
|
}
|
|
288
304
|
}
|
|
289
305
|
catch (e) {
|
|
290
306
|
}
|
|
291
307
|
}
|
|
292
|
-
|
|
308
|
+
pause() {
|
|
293
309
|
try {
|
|
294
|
-
await this.videoElement.pause();
|
|
295
310
|
this.isPlaying = false;
|
|
311
|
+
this.videoElement.pause();
|
|
296
312
|
}
|
|
297
313
|
catch (e) {
|
|
298
314
|
}
|
|
@@ -346,6 +362,9 @@ class VideoViewport extends Viewport {
|
|
|
346
362
|
videoElement.addEventListener('seeked', seekEventListener);
|
|
347
363
|
}
|
|
348
364
|
}
|
|
365
|
+
getSliceViewInfo() {
|
|
366
|
+
throw new Error('Method not implemented.');
|
|
367
|
+
}
|
|
349
368
|
async setFrameNumber(frame) {
|
|
350
369
|
this.setTime((frame - 1) / this.fps);
|
|
351
370
|
}
|
|
@@ -404,7 +423,7 @@ class VideoViewport extends Viewport {
|
|
|
404
423
|
});
|
|
405
424
|
}
|
|
406
425
|
getScalarData() {
|
|
407
|
-
if (this.scalarData
|
|
426
|
+
if (this.scalarData.frameNumber === this.getFrameNumber()) {
|
|
408
427
|
return this.scalarData;
|
|
409
428
|
}
|
|
410
429
|
const canvas = document.createElement('canvas');
|
|
@@ -427,8 +446,12 @@ class VideoViewport extends Viewport {
|
|
|
427
446
|
spacing,
|
|
428
447
|
origin: metadata.origin,
|
|
429
448
|
direction: metadata.direction,
|
|
430
|
-
metadata: {
|
|
449
|
+
metadata: {
|
|
450
|
+
Modality: this.modality,
|
|
451
|
+
FrameOfReferenceUID: metadata.FrameOfReferenceUID,
|
|
452
|
+
},
|
|
431
453
|
getScalarData: () => this.getScalarData(),
|
|
454
|
+
scalarData: this.getScalarData(),
|
|
432
455
|
imageData: {
|
|
433
456
|
getDirection: () => metadata.direction,
|
|
434
457
|
getDimensions: () => metadata.dimensions,
|
|
@@ -462,7 +485,7 @@ class VideoViewport extends Viewport {
|
|
|
462
485
|
const testURI = framesMatch
|
|
463
486
|
? imageURI.substring(0, framesMatch.index)
|
|
464
487
|
: imageURI;
|
|
465
|
-
return this.imageId.
|
|
488
|
+
return this.imageId.includes(testURI);
|
|
466
489
|
}
|
|
467
490
|
setVOI(voiRange) {
|
|
468
491
|
this.voiRange = voiRange;
|
|
@@ -527,7 +550,7 @@ class VideoViewport extends Viewport {
|
|
|
527
550
|
}
|
|
528
551
|
this.canvasContext.fillStyle = 'rgba(0,0,0,1)';
|
|
529
552
|
this.canvasContext.fillRect(0, 0, this.canvas.width, this.canvas.height);
|
|
530
|
-
if (this.isPlaying
|
|
553
|
+
if (!this.isPlaying) {
|
|
531
554
|
this.renderFrame();
|
|
532
555
|
}
|
|
533
556
|
}
|
|
@@ -573,15 +596,23 @@ class VideoViewport extends Viewport {
|
|
|
573
596
|
return false;
|
|
574
597
|
}
|
|
575
598
|
const match = referencedImageId.match(VideoViewport.frameRangeExtractor);
|
|
576
|
-
if (!match
|
|
599
|
+
if (!match[2]) {
|
|
577
600
|
return true;
|
|
578
601
|
}
|
|
579
602
|
const range = match[2].split('-').map((it) => Number(it));
|
|
580
603
|
const frame = currentIndex + 1;
|
|
581
604
|
return range[0] <= frame && frame <= (range[1] ?? range[0]);
|
|
582
605
|
}
|
|
606
|
+
setViewReference(viewRef) {
|
|
607
|
+
if (typeof viewRef.sliceIndex === 'number') {
|
|
608
|
+
this.setFrameNumber(viewRef.sliceIndex + 1);
|
|
609
|
+
}
|
|
610
|
+
else if (Array.isArray(viewRef.sliceIndex)) {
|
|
611
|
+
this.setFrameRange(viewRef.sliceIndex);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
583
614
|
getViewReference(viewRefSpecifier) {
|
|
584
|
-
let sliceIndex = viewRefSpecifier
|
|
615
|
+
let sliceIndex = viewRefSpecifier.sliceIndex;
|
|
585
616
|
if (!sliceIndex) {
|
|
586
617
|
sliceIndex = this.isPlaying
|
|
587
618
|
? [this.frameRange[0] - 1, this.frameRange[1] - 1]
|
|
@@ -600,7 +631,7 @@ class VideoViewport extends Viewport {
|
|
|
600
631
|
return Math.round(this.videoElement.currentTime * this.fps);
|
|
601
632
|
}
|
|
602
633
|
getSliceIndex() {
|
|
603
|
-
return this.getCurrentImageIdIndex();
|
|
634
|
+
return this.getCurrentImageIdIndex() / this.scrollSpeed;
|
|
604
635
|
}
|
|
605
636
|
getCamera() {
|
|
606
637
|
const { parallelScale } = this.videoCamera;
|
|
@@ -618,6 +649,9 @@ class VideoViewport extends Viewport {
|
|
|
618
649
|
viewPlaneNormal: [0, 0, 1],
|
|
619
650
|
};
|
|
620
651
|
}
|
|
652
|
+
getFrameRate() {
|
|
653
|
+
return this.fps;
|
|
654
|
+
}
|
|
621
655
|
getPan() {
|
|
622
656
|
const panWorld = this.videoCamera.panWorld;
|
|
623
657
|
return [panWorld[0], panWorld[1]];
|
|
@@ -673,7 +707,10 @@ class VideoViewport extends Viewport {
|
|
|
673
707
|
if (imageActor) {
|
|
674
708
|
actors.push({ uid: stackInput.actorUID, actor: imageActor });
|
|
675
709
|
if (stackInput.callback) {
|
|
676
|
-
stackInput.callback({
|
|
710
|
+
stackInput.callback({
|
|
711
|
+
imageActor: imageActor,
|
|
712
|
+
imageId: stackInput.imageId,
|
|
713
|
+
});
|
|
677
714
|
}
|
|
678
715
|
}
|
|
679
716
|
});
|