@cornerstonejs/core 2.0.0-beta.20 → 2.0.0-beta.22
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 +52 -50
- 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 +8 -10
- package/dist/esm/RenderingEngine/RenderingEngine.js +20 -18
- package/dist/esm/RenderingEngine/StackViewport.d.ts +28 -19
- package/dist/esm/RenderingEngine/StackViewport.js +81 -58
- package/dist/esm/RenderingEngine/VideoViewport.d.ts +19 -28
- package/dist/esm/RenderingEngine/VideoViewport.js +61 -24
- package/dist/esm/RenderingEngine/Viewport.d.ts +25 -14
- package/dist/esm/RenderingEngine/Viewport.js +24 -15
- package/dist/esm/RenderingEngine/VolumeViewport.d.ts +21 -9
- package/dist/esm/RenderingEngine/VolumeViewport.js +95 -10
- 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 +3 -3
- 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 +4 -7
- 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 +13 -37
- 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/helpers/volumeNewImageEventDispatcher.js +4 -4
- 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 +112 -57
- 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 +49 -254
- package/dist/esm/cache/classes/Surface.d.ts +3 -3
- package/dist/esm/cache/index.d.ts +1 -2
- package/dist/esm/cache/index.js +1 -2
- 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 +9 -5
- package/dist/esm/index.js +8 -4
- package/dist/esm/init.d.ts +5 -8
- package/dist/esm/init.js +22 -83
- package/dist/esm/loaders/ProgressiveRetrieveImages.d.ts +5 -5
- package/dist/esm/loaders/ProgressiveRetrieveImages.js +7 -3
- 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/geometryLoader.js +1 -1
- package/dist/esm/loaders/imageLoader.d.ts +12 -17
- package/dist/esm/loaders/imageLoader.js +179 -96
- 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 +15 -22
- package/dist/esm/loaders/volumeLoader.js +88 -207
- package/dist/esm/metaData.d.ts +2 -4
- package/dist/esm/requestPool/requestPoolManager.d.ts +7 -9
- package/dist/esm/requestPool/requestPoolManager.js +1 -1
- 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 +2 -37
- 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 +48 -11
- 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 +5 -5
- 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 +3 -2
- 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/getClosestStackImageIndexForPoint.js +2 -2
- 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/getImageLegacy.js +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/getScalingParameters.js +4 -4
- 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/getViewportImageIds.js +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/imageToWorldCoords.js +2 -2
- 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/isValidVolume.js +1 -1
- package/dist/esm/utilities/loadImageToCanvas.d.ts +6 -6
- package/dist/esm/utilities/loadImageToCanvas.js +1 -1
- package/dist/esm/utilities/makeVolumeMetadata.d.ts +2 -2
- package/dist/esm/utilities/makeVolumeMetadata.js +5 -5
- 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/sortImageIdsAndGetSpacing.js +2 -1
- 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/esm/utilities/worldToImageCoords.js +2 -2
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +6 -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
- package/dist/esm/utilities/isTypedArray.d.ts +0 -1
- package/dist/esm/utilities/isTypedArray.js +0 -11
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { loadAndCacheImage } from '../../loaders/imageLoader';
|
|
2
2
|
import * as metaData from '../../metaData';
|
|
3
|
-
import
|
|
3
|
+
import getMinMax from '../../utilities/getMinMax';
|
|
4
|
+
import * as windowLevel from '../../utilities/windowLevel';
|
|
4
5
|
import { RequestType } from '../../enums';
|
|
5
|
-
import cache from '../../cache';
|
|
6
|
+
import cache from '../../cache/cache';
|
|
6
7
|
const PRIORITY = 0;
|
|
7
8
|
const REQUEST_TYPE = RequestType.Prefetch;
|
|
8
|
-
async function setDefaultVolumeVOI(volumeActor, imageVolume
|
|
9
|
+
async function setDefaultVolumeVOI(volumeActor, imageVolume) {
|
|
9
10
|
let voi = getVOIFromMetadata(imageVolume);
|
|
10
|
-
if (!voi && imageVolume
|
|
11
|
-
voi = await
|
|
11
|
+
if (!voi && imageVolume.imageIds.length) {
|
|
12
|
+
voi = await getVOIFromMiddleSliceMinMax(imageVolume);
|
|
12
13
|
voi = handlePreScaledVolume(imageVolume, voi);
|
|
13
14
|
}
|
|
14
|
-
if ((voi
|
|
15
|
-
voi
|
|
16
|
-
voi
|
|
15
|
+
if ((voi.lower === 0 && voi.upper === 0) ||
|
|
16
|
+
voi.lower === undefined ||
|
|
17
|
+
voi.upper === undefined) {
|
|
17
18
|
return;
|
|
18
19
|
}
|
|
19
20
|
volumeActor
|
|
@@ -41,7 +42,7 @@ function getVOIFromMetadata(imageVolume) {
|
|
|
41
42
|
const imageIdIndex = Math.floor(imageIds.length / 2);
|
|
42
43
|
const imageId = imageIds[imageIdIndex];
|
|
43
44
|
const voiLutModule = metaData.get('voiLutModule', imageId);
|
|
44
|
-
if (voiLutModule
|
|
45
|
+
if (voiLutModule?.windowWidth && voiLutModule.windowCenter) {
|
|
45
46
|
const { windowWidth, windowCenter } = voiLutModule;
|
|
46
47
|
voi = {
|
|
47
48
|
windowWidth: Array.isArray(windowWidth) ? windowWidth[0] : windowWidth,
|
|
@@ -52,7 +53,7 @@ function getVOIFromMetadata(imageVolume) {
|
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
else {
|
|
55
|
-
voi = metadata
|
|
56
|
+
voi = metadata.voiLut[0];
|
|
56
57
|
}
|
|
57
58
|
if (voi) {
|
|
58
59
|
const { lower, upper } = windowLevel.toLowHighRange(Number(voi.windowWidth), Number(voi.windowCenter));
|
|
@@ -62,18 +63,13 @@ function getVOIFromMetadata(imageVolume) {
|
|
|
62
63
|
};
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
|
-
async function
|
|
66
|
+
async function getVOIFromMiddleSliceMinMax(imageVolume) {
|
|
66
67
|
const { imageIds } = imageVolume;
|
|
67
|
-
const scalarData = imageVolume.getScalarData();
|
|
68
68
|
const imageIdIndex = Math.floor(imageIds.length / 2);
|
|
69
69
|
const imageId = imageVolume.imageIds[imageIdIndex];
|
|
70
70
|
const generalSeriesModule = metaData.get('generalSeriesModule', imageId) || {};
|
|
71
71
|
const { modality } = generalSeriesModule;
|
|
72
72
|
const modalityLutModule = metaData.get('modalityLutModule', imageId) || {};
|
|
73
|
-
const numImages = imageIds.length;
|
|
74
|
-
const bytesPerImage = scalarData.byteLength / numImages;
|
|
75
|
-
const voxelsPerImage = scalarData.length / numImages;
|
|
76
|
-
const bytePerPixel = scalarData.BYTES_PER_ELEMENT;
|
|
77
73
|
const scalingParameters = {
|
|
78
74
|
rescaleSlope: modalityLutModule.rescaleSlope,
|
|
79
75
|
rescaleIntercept: modalityLutModule.rescaleIntercept,
|
|
@@ -89,16 +85,10 @@ async function getVOIFromMinMax(imageVolume, useNativeDataType) {
|
|
|
89
85
|
};
|
|
90
86
|
}
|
|
91
87
|
}
|
|
92
|
-
const byteOffset = imageIdIndex * bytesPerImage;
|
|
93
88
|
const options = {
|
|
94
|
-
targetBuffer: {
|
|
95
|
-
type: useNativeDataType ? undefined : 'Float32Array',
|
|
96
|
-
},
|
|
97
89
|
priority: PRIORITY,
|
|
98
90
|
requestType: REQUEST_TYPE,
|
|
99
|
-
useNativeDataType,
|
|
100
91
|
preScale: {
|
|
101
|
-
enabled: true,
|
|
102
92
|
scalingParameters: scalingParametersToUse,
|
|
103
93
|
},
|
|
104
94
|
};
|
|
@@ -106,27 +96,13 @@ async function getVOIFromMinMax(imageVolume, useNativeDataType) {
|
|
|
106
96
|
if (!imageVolume.referencedImageIds?.length) {
|
|
107
97
|
image = await loadAndCacheImage(imageId, { ...options, ignoreCache: true });
|
|
108
98
|
}
|
|
109
|
-
const imageScalarData = image
|
|
110
|
-
? image.getPixelData()
|
|
111
|
-
: _getImageScalarDataFromImageVolume(imageVolume, byteOffset, bytePerPixel, voxelsPerImage);
|
|
99
|
+
const imageScalarData = image.getPixelData();
|
|
112
100
|
const { min, max } = getMinMax(imageScalarData);
|
|
113
101
|
return {
|
|
114
102
|
lower: min,
|
|
115
103
|
upper: max,
|
|
116
104
|
};
|
|
117
105
|
}
|
|
118
|
-
function _getImageScalarDataFromImageVolume(imageVolume, byteOffset, bytePerPixel, voxelsPerImage) {
|
|
119
|
-
const { scalarData } = imageVolume;
|
|
120
|
-
const { buffer } = scalarData;
|
|
121
|
-
if (scalarData.BYTES_PER_ELEMENT !== bytePerPixel) {
|
|
122
|
-
byteOffset *= scalarData.BYTES_PER_ELEMENT / bytePerPixel;
|
|
123
|
-
}
|
|
124
|
-
const TypedArray = scalarData.constructor;
|
|
125
|
-
const imageScalarData = new TypedArray(voxelsPerImage);
|
|
126
|
-
const volumeBufferView = new TypedArray(buffer, byteOffset, voxelsPerImage);
|
|
127
|
-
imageScalarData.set(volumeBufferView);
|
|
128
|
-
return imageScalarData;
|
|
129
|
-
}
|
|
130
106
|
function _isCurrentImagePTPrescaled(modality, imageVolume) {
|
|
131
107
|
if (modality !== 'PT' || !imageVolume.isPreScaled) {
|
|
132
108
|
return false;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { IVolumeInput, IRenderingEngine } from '../../types';
|
|
2
|
-
declare function setVolumesForViewports(renderingEngine: IRenderingEngine, volumeInputs:
|
|
2
|
+
declare function setVolumesForViewports(renderingEngine: IRenderingEngine, volumeInputs: IVolumeInput[], viewportIds: string[], immediateRender?: boolean, suppressEvents?: boolean): Promise<void>;
|
|
3
3
|
export default setVolumesForViewports;
|
|
@@ -2,11 +2,13 @@ import StackViewport from '../StackViewport';
|
|
|
2
2
|
import VolumeViewport from '../VolumeViewport';
|
|
3
3
|
import VolumeViewport3D from '../VolumeViewport3D';
|
|
4
4
|
import VideoViewport from '../VideoViewport';
|
|
5
|
+
import WSIViewport from '../WSIViewport';
|
|
5
6
|
declare const viewportTypeToViewportClass: {
|
|
6
7
|
orthographic: typeof VolumeViewport;
|
|
7
8
|
perspective: typeof VolumeViewport;
|
|
8
9
|
stack: typeof StackViewport;
|
|
9
10
|
volume3d: typeof VolumeViewport3D;
|
|
10
11
|
video: typeof VideoViewport;
|
|
12
|
+
wholeSlide: typeof WSIViewport;
|
|
11
13
|
};
|
|
12
14
|
export default viewportTypeToViewportClass;
|
|
@@ -3,11 +3,13 @@ import VolumeViewport from '../VolumeViewport';
|
|
|
3
3
|
import ViewportType from '../../enums/ViewportType';
|
|
4
4
|
import VolumeViewport3D from '../VolumeViewport3D';
|
|
5
5
|
import VideoViewport from '../VideoViewport';
|
|
6
|
+
import WSIViewport from '../WSIViewport';
|
|
6
7
|
const viewportTypeToViewportClass = {
|
|
7
8
|
[ViewportType.ORTHOGRAPHIC]: VolumeViewport,
|
|
8
9
|
[ViewportType.PERSPECTIVE]: VolumeViewport,
|
|
9
10
|
[ViewportType.STACK]: StackViewport,
|
|
10
11
|
[ViewportType.VOLUME_3D]: VolumeViewport3D,
|
|
11
12
|
[ViewportType.VIDEO]: VideoViewport,
|
|
13
|
+
[ViewportType.WholeSlide]: WSIViewport,
|
|
12
14
|
};
|
|
13
15
|
export default viewportTypeToViewportClass;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventTypes } from '../../types';
|
|
1
|
+
import type { EventTypes } from '../../types';
|
|
2
2
|
export declare function resetVolumeNewImageState(viewportId: string): void;
|
|
3
3
|
declare function volumeNewImageEventDispatcher(cameraEvent: EventTypes.CameraModifiedEvent): void;
|
|
4
4
|
export default volumeNewImageEventDispatcher;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import getImageSliceDataForVolumeViewport from '../../utilities/getImageSliceDataForVolumeViewport';
|
|
2
|
+
import triggerEvent from '../../utilities/triggerEvent';
|
|
2
3
|
import { Events } from '../../enums';
|
|
3
4
|
import { getRenderingEngine } from '../getRenderingEngine';
|
|
4
|
-
import BaseVolumeViewport from '../BaseVolumeViewport';
|
|
5
5
|
const state = {};
|
|
6
6
|
export function resetVolumeNewImageState(viewportId) {
|
|
7
7
|
if (state[viewportId] !== undefined) {
|
|
@@ -12,8 +12,8 @@ function volumeNewImageEventDispatcher(cameraEvent) {
|
|
|
12
12
|
const { renderingEngineId, viewportId } = cameraEvent.detail;
|
|
13
13
|
const renderingEngine = getRenderingEngine(renderingEngineId);
|
|
14
14
|
const viewport = renderingEngine.getViewport(viewportId);
|
|
15
|
-
if (!(
|
|
16
|
-
throw new Error(`volumeNewImageEventDispatcher: viewport
|
|
15
|
+
if (!('setVolumes' in viewport)) {
|
|
16
|
+
throw new Error(`volumeNewImageEventDispatcher: viewport does not have setVolumes method`);
|
|
17
17
|
}
|
|
18
18
|
if (state[viewport.id] === undefined) {
|
|
19
19
|
state[viewport.id] = 0;
|
|
@@ -3,6 +3,6 @@ declare const renderingEngineCache: {
|
|
|
3
3
|
get: (id: string) => IRenderingEngine;
|
|
4
4
|
set: (re: IRenderingEngine) => void;
|
|
5
5
|
delete: (id: string) => boolean;
|
|
6
|
-
getAll: () =>
|
|
6
|
+
getAll: () => IRenderingEngine[];
|
|
7
7
|
};
|
|
8
8
|
export default renderingEngineCache;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { mat4 } from 'gl-matrix';
|
|
2
2
|
import type { vtkObject } from '@kitware/vtk.js/interfaces';
|
|
3
|
+
import type { Range } from '@kitware/vtk.js/types';
|
|
3
4
|
interface ICameraInitialValues {
|
|
4
5
|
position?: number[];
|
|
5
6
|
focalPoint?: number[];
|
|
@@ -25,7 +26,7 @@ interface ICameraInitialValues {
|
|
|
25
26
|
export interface vtkSlabCamera extends vtkObject {
|
|
26
27
|
applyTransform(transformMat4: mat4): void;
|
|
27
28
|
azimuth(angle: number): void;
|
|
28
|
-
computeClippingRange(bounds: number[]):
|
|
29
|
+
computeClippingRange(bounds: number[]): Range;
|
|
29
30
|
computeDistance(): void;
|
|
30
31
|
computeViewParametersFromPhysicalMatrix(mat: mat4): void;
|
|
31
32
|
computeViewParametersFromViewMatrix(vmat: mat4): void;
|
|
@@ -80,7 +81,7 @@ export interface vtkSlabCamera extends vtkObject {
|
|
|
80
81
|
getWorldToPhysicalMatrix(result: mat4): void;
|
|
81
82
|
getIsPerformingCoordinateTransformation(status: boolean): void;
|
|
82
83
|
orthogonalizeViewUp(): void;
|
|
83
|
-
physicalOrientationToWorldDirection(ori: number[]):
|
|
84
|
+
physicalOrientationToWorldDirection(ori: number[]): number[];
|
|
84
85
|
pitch(angle: number): void;
|
|
85
86
|
roll(angle: number): void;
|
|
86
87
|
setClippingRange(near: number, far: number): boolean;
|
|
@@ -129,6 +130,7 @@ export interface vtkSlabCamera extends vtkObject {
|
|
|
129
130
|
yaw(angle: number): void;
|
|
130
131
|
zoom(factor: number): void;
|
|
131
132
|
setIsPerformingCoordinateTransformation(status: boolean): void;
|
|
133
|
+
computeCameraLightTransform(): void;
|
|
132
134
|
}
|
|
133
135
|
declare function extend(publicAPI: any, model: any, initialValues?: ICameraInitialValues): void;
|
|
134
136
|
declare const newInstance: (initialValues?: ICameraInitialValues) => vtkSlabCamera;
|
|
@@ -1,108 +1,117 @@
|
|
|
1
1
|
import macro from '@kitware/vtk.js/macros';
|
|
2
2
|
import vtkOpenGLTexture from '@kitware/vtk.js/Rendering/OpenGL/Texture';
|
|
3
|
-
import
|
|
4
|
-
import { getConfiguration } from '../../init';
|
|
3
|
+
import cache from '../../cache/cache';
|
|
5
4
|
function vtkStreamingOpenGLTexture(publicAPI, model) {
|
|
6
5
|
model.classHierarchy.push('vtkStreamingOpenGLTexture');
|
|
6
|
+
model.updatedFrames = [];
|
|
7
|
+
model.volumeId = null;
|
|
7
8
|
const superCreate3DFilterableFromRaw = publicAPI.create3DFilterableFromRaw;
|
|
8
|
-
publicAPI.create3DFilterableFromRaw = (width, height, depth,
|
|
9
|
+
publicAPI.create3DFilterableFromRaw = (width, height, depth, numberOfComponents, dataType, data, preferSizeOverAccuracy) => {
|
|
9
10
|
model.inputDataType = dataType;
|
|
10
|
-
model.inputNumComps =
|
|
11
|
-
superCreate3DFilterableFromRaw(width, height, depth,
|
|
11
|
+
model.inputNumComps = numberOfComponents;
|
|
12
|
+
superCreate3DFilterableFromRaw(width, height, depth, numberOfComponents, dataType, data, preferSizeOverAccuracy);
|
|
12
13
|
};
|
|
13
|
-
publicAPI.update3DFromRaw = (
|
|
14
|
-
const {
|
|
15
|
-
if (!
|
|
14
|
+
publicAPI.update3DFromRaw = () => {
|
|
15
|
+
const { volumeId } = model;
|
|
16
|
+
if (!volumeId) {
|
|
16
17
|
return;
|
|
17
18
|
}
|
|
19
|
+
const volume = cache.getVolume(volumeId);
|
|
18
20
|
model._openGLRenderWindow.activateTexture(publicAPI);
|
|
19
21
|
publicAPI.createTexture();
|
|
20
22
|
publicAPI.bind();
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
bytesPerVoxel = 1;
|
|
25
|
-
TypedArrayConstructor = Uint8Array;
|
|
26
|
-
}
|
|
27
|
-
else if (data instanceof Int16Array) {
|
|
28
|
-
bytesPerVoxel = 2;
|
|
29
|
-
TypedArrayConstructor = Int16Array;
|
|
30
|
-
}
|
|
31
|
-
else if (data instanceof Uint16Array) {
|
|
32
|
-
bytesPerVoxel = 2;
|
|
33
|
-
TypedArrayConstructor = Uint16Array;
|
|
23
|
+
if (volume.isDynamicVolume()) {
|
|
24
|
+
updateDynamicVolumeTexture();
|
|
25
|
+
return;
|
|
34
26
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
return (publicAPI.hasUpdatedFrames() && updateTextureImagesUsingVoxelManager());
|
|
28
|
+
};
|
|
29
|
+
const superModified = publicAPI.modified;
|
|
30
|
+
publicAPI.setUpdatedFrame = (frameIndex) => {
|
|
31
|
+
model.updatedFrames[frameIndex] = true;
|
|
32
|
+
superModified();
|
|
33
|
+
};
|
|
34
|
+
publicAPI.modified = () => {
|
|
35
|
+
superModified();
|
|
36
|
+
const volume = cache.getVolume(model.volumeId);
|
|
37
|
+
if (!volume) {
|
|
38
|
+
return;
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
const imageIds = volume.imageIds;
|
|
41
|
+
for (let i = 0; i < imageIds.length; i++) {
|
|
42
|
+
model.updatedFrames[i] = true;
|
|
41
43
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
};
|
|
45
|
+
function updateTextureImagesUsingVoxelManager() {
|
|
46
|
+
const volume = cache.getVolume(model.volumeId);
|
|
47
|
+
const imageIds = volume.imageIds;
|
|
48
|
+
for (let i = 0; i < model.updatedFrames.length; i++) {
|
|
49
|
+
if (model.updatedFrames[i]) {
|
|
50
|
+
const image = cache.getImage(imageIds[i]);
|
|
51
|
+
if (!image) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const data = image.voxelManager.getScalarData();
|
|
55
|
+
const gl = model.context;
|
|
56
|
+
const dataType = data.constructor.name;
|
|
57
|
+
const [pixData] = publicAPI.updateArrayDataTypeForGL(dataType, [data]);
|
|
58
|
+
publicAPI.bind();
|
|
59
|
+
const zOffset = i;
|
|
60
|
+
gl.texSubImage3D(model.target, 0, 0, 0, zOffset, model.width, model.height, 1, model.format, model.openGLDataType, pixData);
|
|
61
|
+
publicAPI.deactivate();
|
|
62
|
+
model.updatedFrames[i] = null;
|
|
45
63
|
}
|
|
46
64
|
}
|
|
47
|
-
model.updatedFrames = [];
|
|
48
65
|
if (model.generateMipmap) {
|
|
49
66
|
model.context.generateMipmap(model.target);
|
|
50
67
|
}
|
|
51
68
|
publicAPI.deactivate();
|
|
52
69
|
return true;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
let blockHeight = Math.floor((bytesPerVoxel * MAX_TEXTURE_SIZE) / model.width);
|
|
63
|
-
blockHeight = Math.min(blockHeight, model.height);
|
|
64
|
-
const { useNorm16Texture, preferSizeOverAccuracy } = getConfiguration().rendering;
|
|
65
|
-
if (useNorm16Texture && !preferSizeOverAccuracy) {
|
|
66
|
-
blockHeight = 1;
|
|
67
|
-
}
|
|
68
|
-
const multiRowBlockLength = rowLength * blockHeight;
|
|
69
|
-
const multiRowBlockLengthInBytes = multiRowBlockLength * bytesPerVoxel;
|
|
70
|
-
const normalBlocks = Math.floor(model.height / blockHeight);
|
|
71
|
-
const lastBlockHeight = model.height % blockHeight;
|
|
72
|
-
const multiRowLastBlockLength = rowLength * lastBlockHeight;
|
|
73
|
-
for (let block = 0; block < normalBlocks; block++) {
|
|
74
|
-
const yOffset = block * blockHeight;
|
|
75
|
-
let dataView = new TypedArrayConstructor(buffer, zOffset + block * multiRowBlockLengthInBytes, multiRowBlockLength);
|
|
76
|
-
if (model.useHalfFloat &&
|
|
77
|
-
(TypedArrayConstructor === Uint16Array ||
|
|
78
|
-
TypedArrayConstructor === Int16Array)) {
|
|
79
|
-
for (let idx = 0; idx < dataView.length; idx++) {
|
|
80
|
-
dataView[idx] = HalfFloat.toHalf(dataView[idx]);
|
|
81
|
-
}
|
|
82
|
-
if (TypedArrayConstructor === Int16Array) {
|
|
83
|
-
dataView = new Uint16Array(dataView);
|
|
84
|
-
}
|
|
70
|
+
}
|
|
71
|
+
function updateDynamicVolumeTexture() {
|
|
72
|
+
const volume = cache.getVolume(model.volumeId);
|
|
73
|
+
const imageIds = volume.getCurrentTimePointImageIds();
|
|
74
|
+
for (let i = 0; i < imageIds.length; i++) {
|
|
75
|
+
const imageId = imageIds[i];
|
|
76
|
+
const image = cache.getImage(imageId);
|
|
77
|
+
if (!image) {
|
|
78
|
+
continue;
|
|
85
79
|
}
|
|
86
|
-
|
|
80
|
+
const data = image.voxelManager.getScalarData();
|
|
81
|
+
const gl = model.context;
|
|
82
|
+
const dataType = data.constructor.name;
|
|
83
|
+
const [pixData] = publicAPI.updateArrayDataTypeForGL(dataType, [data]);
|
|
84
|
+
publicAPI.bind();
|
|
85
|
+
let zOffset = i;
|
|
86
|
+
gl.texSubImage3D(model.target, 0, 0, 0, zOffset, model.width, model.height, 1, model.format, model.openGLDataType, pixData);
|
|
87
|
+
publicAPI.deactivate();
|
|
87
88
|
}
|
|
88
|
-
if (
|
|
89
|
-
|
|
90
|
-
const dataView = new TypedArrayConstructor(buffer, zOffset + normalBlocks * multiRowBlockLengthInBytes, multiRowLastBlockLength);
|
|
91
|
-
gl.texSubImage3D(model.target, 0, 0, yOffset, frameIndex, model.width, lastBlockHeight, 1, model.format, model.openGLDataType, dataView);
|
|
89
|
+
if (model.generateMipmap) {
|
|
90
|
+
model.context.generateMipmap(model.target);
|
|
92
91
|
}
|
|
92
|
+
publicAPI.deactivate();
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
publicAPI.hasUpdatedFrames = () => !model.updatedFrames.length || model.updatedFrames.some((frame) => frame);
|
|
96
|
+
publicAPI.getUpdatedFrames = () => model.updatedFrames;
|
|
97
|
+
publicAPI.setVolumeId = (volumeId) => {
|
|
98
|
+
model.volumeId = volumeId;
|
|
93
99
|
};
|
|
94
|
-
publicAPI.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
};
|
|
102
|
-
};
|
|
103
|
-
publicAPI.setUpdatedFrame = (frameIndex) => {
|
|
104
|
-
model.updatedFrames[frameIndex] = true;
|
|
100
|
+
publicAPI.getVolumeId = () => model.volumeId;
|
|
101
|
+
publicAPI.setTextureParameters = ({ width, height, depth, numberOfComponents, dataType, }) => {
|
|
102
|
+
model.width ??= width;
|
|
103
|
+
model.height ??= height;
|
|
104
|
+
model.depth ??= depth;
|
|
105
|
+
model.inputNumComps ??= numberOfComponents;
|
|
106
|
+
model.inputDataType ??= dataType;
|
|
105
107
|
};
|
|
108
|
+
publicAPI.getTextureParameters = () => ({
|
|
109
|
+
width: model.width,
|
|
110
|
+
height: model.height,
|
|
111
|
+
depth: model.depth,
|
|
112
|
+
numberOfComponents: model.inputNumComps,
|
|
113
|
+
dataType: model.inputDataType,
|
|
114
|
+
});
|
|
106
115
|
}
|
|
107
116
|
const DEFAULT_VALUES = {
|
|
108
117
|
updatedFrames: [],
|
|
@@ -31,7 +31,7 @@ function vtkStreamingOpenGLViewNodeFactory(publicAPI, model) {
|
|
|
31
31
|
let isObject = false;
|
|
32
32
|
const keys = Object.keys(model.overrides);
|
|
33
33
|
while (className && !isObject) {
|
|
34
|
-
if (keys.
|
|
34
|
+
if (keys.includes(className)) {
|
|
35
35
|
isObject = true;
|
|
36
36
|
}
|
|
37
37
|
else {
|
|
@@ -2,8 +2,10 @@ import macro from '@kitware/vtk.js/macros';
|
|
|
2
2
|
import vtkOpenGLVolumeMapper from '@kitware/vtk.js/Rendering/OpenGL/VolumeMapper';
|
|
3
3
|
import { Filter } from '@kitware/vtk.js/Rendering/OpenGL/Texture/Constants';
|
|
4
4
|
import { VtkDataTypes } from '@kitware/vtk.js/Common/Core/DataArray/Constants';
|
|
5
|
+
import { getTransferFunctionHash } from '@kitware/vtk.js/Rendering/OpenGL/RenderWindow/resourceSharingHelper';
|
|
5
6
|
import vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray';
|
|
6
7
|
import { Representation } from '@kitware/vtk.js/Rendering/Core/Property/Constants';
|
|
8
|
+
import vtkOpenGLTexture from '@kitware/vtk.js/Rendering/OpenGL/Texture';
|
|
7
9
|
function vtkStreamingOpenGLVolumeMapper(publicAPI, model) {
|
|
8
10
|
model.classHierarchy.push('vtkStreamingOpenGLVolumeMapper');
|
|
9
11
|
publicAPI.buildBufferObjects = (ren, actor) => {
|
|
@@ -11,10 +13,6 @@ function vtkStreamingOpenGLVolumeMapper(publicAPI, model) {
|
|
|
11
13
|
if (!image) {
|
|
12
14
|
return;
|
|
13
15
|
}
|
|
14
|
-
const scalars = image.getPointData() && image.getPointData().getScalars();
|
|
15
|
-
if (!scalars) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
16
|
const vprop = actor.getProperty();
|
|
19
17
|
if (!model.jitterTexture.getHandle()) {
|
|
20
18
|
const oTable = new Uint8Array(32 * 32);
|
|
@@ -25,18 +23,22 @@ function vtkStreamingOpenGLVolumeMapper(publicAPI, model) {
|
|
|
25
23
|
model.jitterTexture.setMagnificationFilter(Filter.LINEAR);
|
|
26
24
|
model.jitterTexture.create2DFromRaw(32, 32, 1, VtkDataTypes.UNSIGNED_CHAR, oTable);
|
|
27
25
|
}
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
const { numberOfComponents: numIComps } = image.get('numberOfComponents');
|
|
27
|
+
const useIndependentComps = publicAPI.useIndependentComponents(vprop);
|
|
28
|
+
const scalarOpacityFunc = vprop.getScalarOpacity();
|
|
29
|
+
const opTex = model._openGLRenderWindow.getGraphicsResourceForObject(scalarOpacityFunc);
|
|
30
|
+
let toString = getTransferFunctionHash(scalarOpacityFunc, useIndependentComps, numIComps);
|
|
31
|
+
const reBuildOp = !opTex?.oglObject || opTex.hash !== toString;
|
|
32
|
+
if (reBuildOp) {
|
|
33
|
+
model.opacityTexture = vtkOpenGLTexture.newInstance();
|
|
34
|
+
model.opacityTexture.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
33
35
|
const oWidth = 1024;
|
|
34
36
|
const oSize = oWidth * 2 * numIComps;
|
|
35
37
|
const ofTable = new Float32Array(oSize);
|
|
36
38
|
const tmpTable = new Float32Array(oWidth);
|
|
37
39
|
for (let c = 0; c < numIComps; ++c) {
|
|
38
40
|
const ofun = vprop.getScalarOpacity(c);
|
|
39
|
-
const opacityFactor =
|
|
41
|
+
const opacityFactor = publicAPI.getCurrentSampleDistance(ren) /
|
|
40
42
|
vprop.getScalarOpacityUnitDistance(c);
|
|
41
43
|
const oRange = ofun.getRange();
|
|
42
44
|
ofun.getTable(oRange[0], oRange[1], oWidth, tmpTable, 1);
|
|
@@ -46,7 +48,7 @@ function vtkStreamingOpenGLVolumeMapper(publicAPI, model) {
|
|
|
46
48
|
ofTable[c * oWidth * 2 + i + oWidth] = ofTable[c * oWidth * 2 + i];
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
|
-
model.opacityTexture.
|
|
51
|
+
model.opacityTexture.resetFormatAndType();
|
|
50
52
|
model.opacityTexture.setMinificationFilter(Filter.LINEAR);
|
|
51
53
|
model.opacityTexture.setMagnificationFilter(Filter.LINEAR);
|
|
52
54
|
if (model._openGLRenderWindow.getWebgl2() ||
|
|
@@ -55,19 +57,34 @@ function vtkStreamingOpenGLVolumeMapper(publicAPI, model) {
|
|
|
55
57
|
model.opacityTexture.create2DFromRaw(oWidth, 2 * numIComps, 1, VtkDataTypes.FLOAT, ofTable);
|
|
56
58
|
}
|
|
57
59
|
else {
|
|
58
|
-
const oTable = new
|
|
60
|
+
const oTable = new Uint8ClampedArray(oSize);
|
|
59
61
|
for (let i = 0; i < oSize; ++i) {
|
|
60
62
|
oTable[i] = 255.0 * ofTable[i];
|
|
61
63
|
}
|
|
62
64
|
model.opacityTexture.create2DFromRaw(oWidth, 2 * numIComps, 1, VtkDataTypes.UNSIGNED_CHAR, oTable);
|
|
63
65
|
}
|
|
64
|
-
|
|
66
|
+
if (scalarOpacityFunc) {
|
|
67
|
+
model._openGLRenderWindow.setGraphicsResourceForObject(scalarOpacityFunc, model.opacityTexture, toString);
|
|
68
|
+
if (scalarOpacityFunc !== model._scalarOpacityFunc) {
|
|
69
|
+
model._openGLRenderWindow.registerGraphicsResourceUser(scalarOpacityFunc, publicAPI);
|
|
70
|
+
model._openGLRenderWindow.unregisterGraphicsResourceUser(model._scalarOpacityFunc, publicAPI);
|
|
71
|
+
}
|
|
72
|
+
model._scalarOpacityFunc = scalarOpacityFunc;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
model.opacityTexture = opTex.oglObject;
|
|
65
77
|
}
|
|
66
|
-
|
|
67
|
-
|
|
78
|
+
const colorTransferFunc = vprop.getRGBTransferFunction();
|
|
79
|
+
toString = getTransferFunctionHash(colorTransferFunc, useIndependentComps, numIComps);
|
|
80
|
+
const cTex = model._openGLRenderWindow.getGraphicsResourceForObject(colorTransferFunc);
|
|
81
|
+
const reBuildC = !cTex?.oglObject?.getHandle() || cTex?.hash !== toString;
|
|
82
|
+
if (reBuildC) {
|
|
83
|
+
model.colorTexture = vtkOpenGLTexture.newInstance();
|
|
84
|
+
model.colorTexture.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
68
85
|
const cWidth = 1024;
|
|
69
86
|
const cSize = cWidth * 2 * numIComps * 3;
|
|
70
|
-
const cTable = new
|
|
87
|
+
const cTable = new Uint8ClampedArray(cSize);
|
|
71
88
|
const tmpTable = new Float32Array(cWidth * 3);
|
|
72
89
|
for (let c = 0; c < numIComps; ++c) {
|
|
73
90
|
const cfun = vprop.getRGBTransferFunction(c);
|
|
@@ -78,39 +95,57 @@ function vtkStreamingOpenGLVolumeMapper(publicAPI, model) {
|
|
|
78
95
|
cTable[c * cWidth * 6 + i + cWidth * 3] = 255.0 * tmpTable[i];
|
|
79
96
|
}
|
|
80
97
|
}
|
|
81
|
-
model.colorTexture.
|
|
98
|
+
model.colorTexture.resetFormatAndType();
|
|
82
99
|
model.colorTexture.setMinificationFilter(Filter.LINEAR);
|
|
83
100
|
model.colorTexture.setMagnificationFilter(Filter.LINEAR);
|
|
84
101
|
model.colorTexture.create2DFromRaw(cWidth, 2 * numIComps, 3, VtkDataTypes.UNSIGNED_CHAR, cTable);
|
|
85
|
-
|
|
102
|
+
if (colorTransferFunc) {
|
|
103
|
+
model._openGLRenderWindow.setGraphicsResourceForObject(colorTransferFunc, model.colorTexture, toString);
|
|
104
|
+
if (colorTransferFunc !== model._colorTransferFunc) {
|
|
105
|
+
model._openGLRenderWindow.registerGraphicsResourceUser(colorTransferFunc, publicAPI);
|
|
106
|
+
model._openGLRenderWindow.unregisterGraphicsResourceUser(model._colorTransferFunc, publicAPI);
|
|
107
|
+
}
|
|
108
|
+
model._colorTransferFunc = colorTransferFunc;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
model.colorTexture = cTex.oglObject;
|
|
86
113
|
}
|
|
87
114
|
publicAPI.updateLabelOutlineThicknessTexture(actor);
|
|
88
|
-
toString = `${image.getMTime()}`;
|
|
115
|
+
toString = `${image.getMTime()}-${model.scalarTexture.getMTime()}`;
|
|
89
116
|
if (model.scalarTextureString !== toString) {
|
|
90
117
|
const dims = image.getDimensions();
|
|
118
|
+
model.scalarTexture.setOpenGLRenderWindow(model._openGLRenderWindow);
|
|
119
|
+
model.scalarTexture.enableUseHalfFloat(false);
|
|
91
120
|
const previousTextureParameters = model.scalarTexture.getTextureParameters();
|
|
92
|
-
const dataType = image.
|
|
93
|
-
const data = image.getPointData().getScalars().getData();
|
|
121
|
+
const dataType = image.get('dataType').dataType;
|
|
94
122
|
let shouldReset = true;
|
|
95
|
-
if (previousTextureParameters
|
|
96
|
-
previousTextureParameters
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
shouldReset = false;
|
|
123
|
+
if (previousTextureParameters?.dataType === dataType) {
|
|
124
|
+
if (previousTextureParameters?.width === dims[0]) {
|
|
125
|
+
if (previousTextureParameters?.height === dims[1]) {
|
|
126
|
+
if (previousTextureParameters?.depth === dims[2]) {
|
|
127
|
+
shouldReset = false;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
103
130
|
}
|
|
104
131
|
}
|
|
105
132
|
if (shouldReset) {
|
|
106
|
-
model.
|
|
107
|
-
model.scalarTexture.
|
|
133
|
+
const norm16Ext = model.context.getExtension('EXT_texture_norm16');
|
|
134
|
+
model.scalarTexture.setOglNorm16Ext(norm16Ext);
|
|
108
135
|
model.scalarTexture.resetFormatAndType();
|
|
109
|
-
model.scalarTexture.
|
|
136
|
+
model.scalarTexture.setTextureParameters({
|
|
137
|
+
width: dims[0],
|
|
138
|
+
height: dims[1],
|
|
139
|
+
depth: dims[2],
|
|
140
|
+
numberOfComponents: numIComps,
|
|
141
|
+
dataType,
|
|
142
|
+
});
|
|
143
|
+
model.scalarTexture.create3DFromRaw(dims[0], dims[1], dims[2], numIComps, dataType, null);
|
|
144
|
+
model.scalarTexture.update3DFromRaw();
|
|
110
145
|
}
|
|
111
146
|
else {
|
|
112
147
|
model.scalarTexture.deactivate();
|
|
113
|
-
model.scalarTexture.update3DFromRaw(
|
|
148
|
+
model.scalarTexture.update3DFromRaw();
|
|
114
149
|
}
|
|
115
150
|
model.scalarTextureString = toString;
|
|
116
151
|
}
|
|
@@ -146,16 +181,22 @@ function vtkStreamingOpenGLVolumeMapper(publicAPI, model) {
|
|
|
146
181
|
}
|
|
147
182
|
model.VBOBuildTime.modified();
|
|
148
183
|
};
|
|
149
|
-
publicAPI.
|
|
150
|
-
if (model.
|
|
151
|
-
|
|
184
|
+
publicAPI.getNeedToRebuildBufferObjects = (ren, actor) => {
|
|
185
|
+
if (model.VBOBuildTime.getMTime() < publicAPI.getMTime() ||
|
|
186
|
+
model.VBOBuildTime.getMTime() < actor.getMTime() ||
|
|
187
|
+
model.VBOBuildTime.getMTime() < model.renderable.getMTime() ||
|
|
188
|
+
model.VBOBuildTime.getMTime() < actor.getProperty().getMTime() ||
|
|
189
|
+
model.VBOBuildTime.getMTime() < model.currentInput.getMTime() ||
|
|
190
|
+
model.VBOBuildTime.getMTime() < model.scalarTexture?.getMTime() ||
|
|
191
|
+
model.VBOBuildTime.getMTime() < model.colorTexture?.getMTime() ||
|
|
192
|
+
model.VBOBuildTime.getMTime() <
|
|
193
|
+
model.labelOutlineThicknessTexture?.getMTime() ||
|
|
194
|
+
!model.scalarTexture?.getHandle() ||
|
|
195
|
+
!model.colorTexture?.getHandle() ||
|
|
196
|
+
!model.labelOutlineThicknessTexture?.getHandle()) {
|
|
197
|
+
return true;
|
|
152
198
|
}
|
|
153
|
-
|
|
154
|
-
return [usize, vsize];
|
|
155
|
-
};
|
|
156
|
-
publicAPI.getRenderTargetOffset = () => {
|
|
157
|
-
const { lowerLeftU, lowerLeftV } = model._openGLRenderer.getTiledSizeAndOrigin();
|
|
158
|
-
return [lowerLeftU, lowerLeftV];
|
|
199
|
+
return false;
|
|
159
200
|
};
|
|
160
201
|
}
|
|
161
202
|
const DEFAULT_VALUES = {};
|
package/dist/esm/Settings.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export default class Settings {
|
|
|
8
8
|
import(root: Record<string, unknown>): void;
|
|
9
9
|
dump(): Record<string, unknown>;
|
|
10
10
|
static assert(subject: Settings): Settings;
|
|
11
|
-
static getDefaultSettings(subfield?: any): Settings |
|
|
11
|
+
static getDefaultSettings(subfield?: any): Settings | unknown;
|
|
12
12
|
static getRuntimeSettings(): Settings;
|
|
13
13
|
static getObjectSettings(subject: unknown, from?: unknown): Settings;
|
|
14
14
|
static extendRuntimeSettings(): Settings;
|