@cornerstonejs/core 5.0.0-beta.1 → 5.0.1
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/BaseRenderingEngine.d.ts +4 -5
- package/dist/esm/RenderingEngine/BaseRenderingEngine.js +57 -69
- package/dist/esm/RenderingEngine/BaseVolumeViewport.d.ts +6 -4
- package/dist/esm/RenderingEngine/BaseVolumeViewport.js +39 -30
- package/dist/esm/RenderingEngine/CanvasActor/CanvasMapper.d.ts +1 -0
- package/dist/esm/RenderingEngine/CanvasActor/CanvasMapper.js +3 -0
- package/dist/esm/RenderingEngine/CanvasActor/CanvasProperties.d.ts +10 -2
- package/dist/esm/RenderingEngine/CanvasActor/CanvasProperties.js +64 -6
- package/dist/esm/RenderingEngine/CanvasActor/index.d.ts +4 -0
- package/dist/esm/RenderingEngine/CanvasActor/index.js +59 -48
- package/dist/esm/RenderingEngine/ContextPoolRenderingEngine.d.ts +3 -4
- package/dist/esm/RenderingEngine/ContextPoolRenderingEngine.js +55 -37
- package/dist/esm/RenderingEngine/ECGViewport.d.ts +1 -1
- package/dist/esm/RenderingEngine/ECGViewport.js +34 -160
- package/dist/esm/RenderingEngine/GenericViewport/DefaultRenderPathResolver.d.ts +10 -0
- package/dist/esm/RenderingEngine/GenericViewport/DefaultRenderPathResolver.js +25 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/CanvasECGRenderPath.d.ts +17 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/CanvasECGRenderPath.js +144 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/DefaultECGDataProvider.d.ts +5 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/DefaultECGDataProvider.js +13 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGProjectionTypes.d.ts +42 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGProjectionTypes.js +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGRenderPathResolver.d.ts +4 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGRenderPathResolver.js +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGResolvedView.d.ts +27 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGResolvedView.js +121 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewport.d.ts +55 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewport.js +289 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewportLegacyAdapter.d.ts +13 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewportLegacyAdapter.js +70 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewportTypes.d.ts +69 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewportTypes.js +0 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionAdapter.d.ts +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionAdapter.js +12 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionPresentation.d.ts +7 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionPresentation.js +52 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionSnapshot.d.ts +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionSnapshot.js +94 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgViewportCamera.d.ts +27 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgViewportCamera.js +82 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/index.d.ts +10 -0
- package/dist/esm/RenderingEngine/GenericViewport/ECG/index.js +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/GenericViewport.d.ts +82 -0
- package/dist/esm/RenderingEngine/GenericViewport/GenericViewport.js +369 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/CpuImageSliceRenderPath.d.ts +24 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/CpuImageSliceRenderPath.js +456 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/CpuVolumeSliceRenderPath.d.ts +25 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/CpuVolumeSliceRenderPath.js +514 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/DefaultPlanarDataProvider.d.ts +6 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/DefaultPlanarDataProvider.js +80 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarCPUScalarViewportSampler.d.ts +47 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarCPUScalarViewportSampler.js +439 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarCPUVolumeSampler.d.ts +98 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarCPUVolumeSampler.js +686 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarLegacyCompatibilityController.d.ts +81 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarLegacyCompatibilityController.js +526 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarMountedData.d.ts +34 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarMountedData.js +111 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarProjectionTypes.d.ts +58 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarProjectionTypes.js +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathDecisionService.d.ts +28 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathDecisionService.js +145 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathResolver.d.ts +4 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathResolver.js +16 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarResolvedView.d.ts +91 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarResolvedView.js +305 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewReferenceController.d.ts +72 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewReferenceController.js +406 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewport.d.ts +187 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewport.js +1175 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewportLegacyAdapter.d.ts +44 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewportLegacyAdapter.js +279 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewportTypes.d.ts +151 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewportTypes.js +0 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/VtkImageMapperRenderPath.d.ts +21 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/VtkImageMapperRenderPath.js +259 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/VtkVolumeSliceRenderPath.d.ts +23 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/VtkVolumeSliceRenderPath.js +289 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/buildPlanarActorEntry.d.ts +10 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/buildPlanarActorEntry.js +54 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/index.d.ts +23 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/index.js +20 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarActorCompatibility.d.ts +4 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarActorCompatibility.js +42 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarAdapterCoordinateTransforms.d.ts +44 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarAdapterCoordinateTransforms.js +129 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCPUVolumeSamplingUtils.d.ts +11 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCPUVolumeSamplingUtils.js +54 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCameraScale.d.ts +10 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCameraScale.js +35 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCpuImageTransforms.d.ts +3 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCpuImageTransforms.js +35 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCpuViewportMath.d.ts +10 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCpuViewportMath.js +35 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarImageEvents.d.ts +22 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarImageEvents.js +28 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarLegacyCompatibility.d.ts +13 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarLegacyCompatibility.js +136 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarMath.d.ts +3 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarMath.js +15 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarOrientationVectors.d.ts +12 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarOrientationVectors.js +37 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionAdapter.d.ts +7 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionAdapter.js +28 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionFallback.d.ts +4 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionFallback.js +25 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionPresentation.d.ts +5 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionPresentation.js +95 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionSnapshot.d.ts +6 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionSnapshot.js +126 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderCamera.d.ts +46 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderCamera.js +332 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderPathProjection.d.ts +51 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderPathProjection.js +96 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderPathSelector.d.ts +4 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderPathSelector.js +12 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRuntimeTypes.d.ts +86 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRuntimeTypes.js +0 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarSliceBasis.d.ts +51 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarSliceBasis.js +330 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewPresentation.d.ts +16 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewPresentation.js +25 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewReference.d.ts +46 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewReference.js +243 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewState.d.ts +5 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewState.js +59 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarVolumePresentation.d.ts +10 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarVolumePresentation.js +223 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarVolumeSliceBlendMode.d.ts +5 -0
- package/dist/esm/RenderingEngine/GenericViewport/Planar/planarVolumeSliceBlendMode.js +36 -0
- package/dist/esm/RenderingEngine/GenericViewport/ResolvedViewportView.d.ts +12 -0
- package/dist/esm/RenderingEngine/GenericViewport/ResolvedViewportView.js +10 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/DefaultVideoDataProvider.d.ts +5 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/DefaultVideoDataProvider.js +18 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/HtmlVideoRenderPath.d.ts +19 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/HtmlVideoRenderPath.js +141 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoProjectionTypes.d.ts +45 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoProjectionTypes.js +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoRenderPathResolver.d.ts +4 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoRenderPathResolver.js +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoResolvedView.d.ts +29 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoResolvedView.js +108 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewport.d.ts +59 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewport.js +458 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewportLegacyAdapter.d.ts +15 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewportLegacyAdapter.js +114 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewportTypes.d.ts +45 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewportTypes.js +0 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/index.d.ts +10 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/index.js +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionAdapter.d.ts +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionAdapter.js +12 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionPresentation.d.ts +7 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionPresentation.js +66 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionSnapshot.d.ts +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionSnapshot.js +86 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/videoViewportCamera.d.ts +30 -0
- package/dist/esm/RenderingEngine/GenericViewport/Video/videoViewportCamera.js +105 -0
- package/dist/esm/RenderingEngine/GenericViewport/ViewportArchitectureTypes.d.ts +126 -0
- package/dist/esm/RenderingEngine/GenericViewport/ViewportArchitectureTypes.js +20 -0
- package/dist/esm/RenderingEngine/GenericViewport/ViewportCameraTypes.d.ts +12 -0
- package/dist/esm/RenderingEngine/GenericViewport/ViewportCameraTypes.js +0 -0
- package/dist/esm/RenderingEngine/GenericViewport/ViewportProjectionTypes.d.ts +101 -0
- package/dist/esm/RenderingEngine/GenericViewport/ViewportProjectionTypes.js +0 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/DefaultVolume3DDataProvider.d.ts +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/DefaultVolume3DDataProvider.js +58 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DProjectionTypes.d.ts +35 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DProjectionTypes.js +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DRenderPathResolver.d.ts +4 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DRenderPathResolver.js +9 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DResolvedView.d.ts +18 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DResolvedView.js +42 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VolumeViewport3DLegacyAdapter.d.ts +39 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VolumeViewport3DLegacyAdapter.js +296 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VtkGeometry3DRenderPath.d.ts +22 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VtkGeometry3DRenderPath.js +156 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VtkVolume3DRenderPath.d.ts +23 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VtkVolume3DRenderPath.js +205 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/applyVolume3DCamera.d.ts +4 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/applyVolume3DCamera.js +33 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/index.d.ts +10 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/index.js +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/viewport3D.d.ts +60 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/viewport3D.js +399 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/viewport3DTypes.d.ts +88 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/viewport3DTypes.js +0 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionAdapter.d.ts +7 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionAdapter.js +27 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionCamera.d.ts +12 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionCamera.js +35 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionPresentation.d.ts +4 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionPresentation.js +22 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionSnapshot.d.ts +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionSnapshot.js +52 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/vtkVolume3DInitialCamera.d.ts +3 -0
- package/dist/esm/RenderingEngine/GenericViewport/Volume3D/vtkVolume3DInitialCamera.js +110 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/DefaultWSIDataProvider.d.ts +6 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/DefaultWSIDataProvider.js +35 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/DicomMicroscopyRenderPath.d.ts +16 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/DicomMicroscopyRenderPath.js +125 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIProjectionTypes.d.ts +40 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIProjectionTypes.js +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIRenderPathResolver.d.ts +4 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIRenderPathResolver.js +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIResolvedView.d.ts +26 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIResolvedView.js +104 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewport.d.ts +69 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewport.js +392 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewportLegacyAdapter.d.ts +22 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewportLegacyAdapter.js +144 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewportTypes.d.ts +58 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewportTypes.js +0 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/index.d.ts +10 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/index.js +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionAdapter.d.ts +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionAdapter.js +12 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionPresentation.d.ts +7 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionPresentation.js +47 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionSnapshot.d.ts +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionSnapshot.js +90 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiTransformUtils.d.ts +29 -0
- package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiTransformUtils.js +128 -0
- package/dist/esm/RenderingEngine/GenericViewport/genericViewportDataSetAccess.d.ts +35 -0
- package/dist/esm/RenderingEngine/GenericViewport/genericViewportDataSetAccess.js +87 -0
- package/dist/esm/RenderingEngine/GenericViewport/genericViewportReferenceCompatibility.d.ts +18 -0
- package/dist/esm/RenderingEngine/GenericViewport/genericViewportReferenceCompatibility.js +238 -0
- package/dist/esm/RenderingEngine/GenericViewport/index.d.ts +23 -0
- package/dist/esm/RenderingEngine/GenericViewport/index.js +14 -0
- package/dist/esm/RenderingEngine/GenericViewport/setVtkCameraClippingRange.d.ts +2 -0
- package/dist/esm/RenderingEngine/GenericViewport/setVtkCameraClippingRange.js +8 -0
- package/dist/esm/RenderingEngine/GenericViewport/viewportProjection.d.ts +98 -0
- package/dist/esm/RenderingEngine/GenericViewport/viewportProjection.js +81 -0
- package/dist/esm/RenderingEngine/RenderingEngine.d.ts +3 -5
- package/dist/esm/RenderingEngine/RenderingEngine.js +3 -9
- package/dist/esm/RenderingEngine/StackViewport.d.ts +4 -1
- package/dist/esm/RenderingEngine/StackViewport.js +103 -53
- package/dist/esm/RenderingEngine/TiledRenderingEngine.d.ts +1 -0
- package/dist/esm/RenderingEngine/TiledRenderingEngine.js +23 -20
- package/dist/esm/RenderingEngine/VideoViewport.d.ts +5 -13
- package/dist/esm/RenderingEngine/VideoViewport.js +33 -68
- package/dist/esm/RenderingEngine/Viewport.d.ts +20 -5
- package/dist/esm/RenderingEngine/Viewport.js +149 -29
- package/dist/esm/RenderingEngine/VolumeViewport.js +26 -17
- package/dist/esm/RenderingEngine/VolumeViewport3D.js +2 -8
- package/dist/esm/RenderingEngine/WSIViewport.d.ts +12 -12
- package/dist/esm/RenderingEngine/WSIViewport.js +28 -101
- package/dist/esm/RenderingEngine/helpers/addVolumesToViewports.js +6 -8
- package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/colormap.d.ts +4 -1
- package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/colormap.js +157 -0
- package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/index.d.ts +2 -3
- package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/index.js +2 -3
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/calculateTransform.js +19 -4
- package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderPseudoColorImage.js +13 -3
- package/dist/esm/RenderingEngine/helpers/createVolumeSliceActor.d.ts +14 -0
- package/dist/esm/RenderingEngine/helpers/createVolumeSliceActor.js +69 -0
- package/dist/esm/RenderingEngine/helpers/getCameraVectors.d.ts +2 -1
- package/dist/esm/RenderingEngine/helpers/getCameraVectors.js +1 -1
- package/dist/esm/RenderingEngine/helpers/getProjectionScaleMatrix.d.ts +2 -0
- package/dist/esm/RenderingEngine/helpers/getProjectionScaleMatrix.js +10 -0
- package/dist/esm/RenderingEngine/helpers/index.d.ts +2 -1
- package/dist/esm/RenderingEngine/helpers/index.js +2 -1
- package/dist/esm/RenderingEngine/helpers/planarImageRendering.d.ts +51 -0
- package/dist/esm/RenderingEngine/helpers/planarImageRendering.js +116 -0
- package/dist/esm/RenderingEngine/helpers/planarVolumeRendering.d.ts +22 -0
- package/dist/esm/RenderingEngine/helpers/planarVolumeRendering.js +28 -0
- package/dist/esm/RenderingEngine/helpers/resolveViewportVolumeId.d.ts +1 -0
- package/dist/esm/RenderingEngine/helpers/resolveViewportVolumeId.js +19 -0
- package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.d.ts +3 -2
- package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js +46 -15
- package/dist/esm/RenderingEngine/helpers/setVolumesForViewports.js +6 -9
- package/dist/esm/RenderingEngine/helpers/stats/RenderModesPanel.d.ts +19 -0
- package/dist/esm/RenderingEngine/helpers/stats/RenderModesPanel.js +228 -0
- package/dist/esm/RenderingEngine/helpers/stats/StatsOverlay.d.ts +22 -3
- package/dist/esm/RenderingEngine/helpers/stats/StatsOverlay.js +192 -18
- package/dist/esm/RenderingEngine/helpers/stats/constants.d.ts +13 -1
- package/dist/esm/RenderingEngine/helpers/stats/constants.js +14 -1
- package/dist/esm/RenderingEngine/helpers/stats/enums.d.ts +2 -1
- package/dist/esm/RenderingEngine/helpers/stats/enums.js +1 -0
- package/dist/esm/RenderingEngine/helpers/stats/types.d.ts +1 -1
- package/dist/esm/RenderingEngine/helpers/supportsVolumeCompatibilityApi.d.ts +4 -0
- package/dist/esm/RenderingEngine/helpers/supportsVolumeCompatibilityApi.js +7 -0
- package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +27 -4
- package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js +126 -11
- package/dist/esm/RenderingEngine/helpers/viewportTypeUsesCustomRenderingPipeline.d.ts +3 -1
- package/dist/esm/RenderingEngine/helpers/viewportTypeUsesCustomRenderingPipeline.js +9 -2
- package/dist/esm/RenderingEngine/helpers/vtkCanvasCoordinateTransforms.d.ts +12 -0
- package/dist/esm/RenderingEngine/helpers/vtkCanvasCoordinateTransforms.js +57 -0
- package/dist/esm/RenderingEngine/index.d.ts +69 -1
- package/dist/esm/RenderingEngine/index.js +40 -1
- package/dist/esm/RenderingEngine/vtkClasses/extendedVtkCamera.d.ts +38 -0
- package/dist/esm/RenderingEngine/vtkClasses/extendedVtkCamera.js +35 -0
- package/dist/esm/RenderingEngine/vtkClasses/index.d.ts +3 -1
- package/dist/esm/RenderingEngine/vtkClasses/index.js +3 -1
- package/dist/esm/RenderingEngine/vtkClasses/vtkSharedImageResliceMapper.d.ts +7 -0
- package/dist/esm/RenderingEngine/vtkClasses/vtkSharedImageResliceMapper.js +21 -0
- package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.d.ts +2 -0
- package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.js +9 -2
- package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLImageResliceMapper.d.ts +7 -0
- package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLImageResliceMapper.js +420 -0
- package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLViewNodeFactory.js +7 -0
- package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js +9 -3
- package/dist/esm/cache/cache.d.ts +1 -1
- package/dist/esm/cache/cache.js +4 -1
- package/dist/esm/cache/classes/BaseStreamingImageVolume.js +6 -6
- package/dist/esm/cache/classes/ImageVolume.js +5 -0
- package/dist/esm/enums/CalibrationTypes.d.ts +4 -12
- package/dist/esm/enums/CalibrationTypes.js +3 -13
- package/dist/esm/enums/MetadataModules.d.ts +3 -38
- package/dist/esm/enums/MetadataModules.js +2 -39
- package/dist/esm/enums/ViewportStatus.d.ts +1 -0
- package/dist/esm/enums/ViewportStatus.js +1 -0
- package/dist/esm/enums/ViewportType.d.ts +6 -1
- package/dist/esm/enums/ViewportType.js +5 -0
- package/dist/esm/enums/ViewportTypes.d.ts +5 -0
- package/dist/esm/enums/ViewportTypes.js +23 -0
- package/dist/esm/enums/index.d.ts +2 -1
- package/dist/esm/enums/index.js +2 -1
- package/dist/esm/getEnabledElement.js +4 -1
- package/dist/esm/index.d.ts +74 -3
- package/dist/esm/index.js +43 -3
- package/dist/esm/init.d.ts +2 -1
- package/dist/esm/init.js +14 -1
- package/dist/esm/loaders/ProgressiveRetrieveImages.js +11 -11
- package/dist/esm/loaders/cornerstoneMeshLoader.js +1 -1
- package/dist/esm/loaders/imageLoader.d.ts +2 -1
- package/dist/esm/loaders/imageLoader.js +25 -10
- package/dist/esm/loaders/volumeLoader.js +8 -4
- package/dist/esm/metaData.d.ts +2 -8
- package/dist/esm/metaData.js +2 -75
- package/dist/esm/types/CPUFallbackViewport.d.ts +2 -0
- package/dist/esm/types/Cornerstone3DConfig.d.ts +11 -0
- package/dist/esm/types/EventTypes.d.ts +3 -3
- package/dist/esm/types/IActor.d.ts +33 -0
- package/dist/esm/types/IActor.js +8 -0
- package/dist/esm/types/ICamera.d.ts +11 -3
- package/dist/esm/types/IEnabledElement.d.ts +1 -1
- package/dist/esm/types/IImage.d.ts +1 -0
- package/dist/esm/types/IImageCalibration.d.ts +2 -11
- package/dist/esm/types/IViewport.d.ts +11 -1
- package/dist/esm/types/IWSIViewport.d.ts +3 -2
- package/dist/esm/types/ImagePlaneModule.d.ts +3 -1
- package/dist/esm/types/MetadataModuleTypes.d.ts +1 -70
- package/dist/esm/types/ViewportInputOptions.d.ts +2 -0
- package/dist/esm/types/ViewportTypeRegistry.d.ts +33 -0
- package/dist/esm/types/ViewportTypeRegistry.js +0 -0
- package/dist/esm/types/index.d.ts +8 -3
- package/dist/esm/types/index.js +2 -0
- package/dist/esm/utilities/ECGUtilities.d.ts +83 -0
- package/dist/esm/utilities/ECGUtilities.js +228 -0
- package/dist/esm/utilities/FrameRange.js +3 -2
- package/dist/esm/utilities/RLEVoxelMap.js +9 -7
- package/dist/esm/utilities/VideoUtilities.d.ts +34 -0
- package/dist/esm/utilities/VideoUtilities.js +102 -0
- package/dist/esm/utilities/VoxelManager.d.ts +20 -1
- package/dist/esm/utilities/VoxelManager.js +162 -27
- package/dist/esm/utilities/WSIUtilities.d.ts +119 -0
- package/dist/esm/utilities/WSIUtilities.js +110 -0
- package/dist/esm/utilities/buildMetadata.js +23 -23
- package/dist/esm/utilities/calculateSpacingBetweenImageIds.js +6 -5
- package/dist/esm/utilities/calibratedPixelSpacingMetadataProvider.d.ts +5 -5
- package/dist/esm/utilities/calibratedPixelSpacingMetadataProvider.js +2 -15
- package/dist/esm/utilities/clonePoint3.d.ts +3 -0
- package/dist/esm/utilities/clonePoint3.js +3 -0
- package/dist/esm/utilities/colormap.d.ts +2 -1
- package/dist/esm/utilities/colormap.js +43 -4
- package/dist/esm/utilities/convertColorArrayToRgbString.d.ts +1 -0
- package/dist/esm/utilities/convertColorArrayToRgbString.js +5 -0
- package/dist/esm/utilities/deepClone.d.ts +1 -1
- package/dist/esm/utilities/deepClone.js +46 -17
- package/dist/esm/utilities/genericMetadataProvider.js +2 -1
- package/dist/esm/utilities/genericViewportDataSetMetadataProvider.d.ts +8 -0
- package/dist/esm/utilities/genericViewportDataSetMetadataProvider.js +23 -0
- package/dist/esm/utilities/getAcquisitionPlaneOrientation.d.ts +2 -0
- package/dist/esm/utilities/getAcquisitionPlaneOrientation.js +7 -0
- package/dist/esm/utilities/getClosestImageId.js +2 -1
- package/dist/esm/utilities/getClosestStackImageIndexForPoint.js +2 -1
- package/dist/esm/utilities/getNormalizedAspectRatio.d.ts +2 -0
- package/dist/esm/utilities/getNormalizedAspectRatio.js +12 -0
- package/dist/esm/utilities/getPixelSpacingInformation.d.ts +5 -13
- package/dist/esm/utilities/getPixelSpacingInformation.js +4 -93
- package/dist/esm/utilities/getScalingParameters.js +4 -3
- package/dist/esm/utilities/getVOIRangeFromWindowLevel.d.ts +3 -0
- package/dist/esm/utilities/getVOIRangeFromWindowLevel.js +18 -0
- package/dist/esm/utilities/getViewportImageIds.js +1 -1
- package/dist/esm/utilities/getViewportsWithImageURI.d.ts +2 -4
- package/dist/esm/utilities/getViewportsWithImageURI.js +4 -1
- package/dist/esm/utilities/getViewportsWithVolumeId.d.ts +2 -2
- package/dist/esm/utilities/getViewportsWithVolumeId.js +4 -1
- package/dist/esm/utilities/getViewportsWithVolumeURI.d.ts +2 -2
- package/dist/esm/utilities/getViewportsWithVolumeURI.js +4 -1
- package/dist/esm/utilities/getVolumeViewReferenceId.d.ts +6 -0
- package/dist/esm/utilities/getVolumeViewReferenceId.js +6 -0
- package/dist/esm/utilities/getVolumeViewportScrollInfo.d.ts +1 -1
- package/dist/esm/utilities/getVolumeViewportsContainingSameVolumes.d.ts +2 -2
- package/dist/esm/utilities/getVolumeViewportsContainingSameVolumes.js +4 -1
- package/dist/esm/utilities/hasOwn.d.ts +1 -0
- package/dist/esm/utilities/hasOwn.js +3 -0
- package/dist/esm/utilities/imageIdToURI.d.ts +3 -1
- package/dist/esm/utilities/imageIdToURI.js +2 -4
- package/dist/esm/utilities/index.d.ts +13 -1
- package/dist/esm/utilities/index.js +13 -1
- package/dist/esm/utilities/isEqual.d.ts +3 -5
- package/dist/esm/utilities/isEqual.js +3 -48
- package/dist/esm/utilities/isValidVolume.js +19 -4
- package/dist/esm/utilities/isVideoTransferSyntax.d.ts +3 -1
- package/dist/esm/utilities/isVideoTransferSyntax.js +3 -25
- package/dist/esm/utilities/loadImageToCanvas.js +2 -2
- package/dist/esm/utilities/logger.d.ts +3 -14
- package/dist/esm/utilities/logger.js +2 -23
- package/dist/esm/utilities/rotateToViewCoordinates.js +7 -7
- package/dist/esm/utilities/scroll.d.ts +1 -1
- package/dist/esm/utilities/scroll.js +2 -1
- package/dist/esm/utilities/sortImageIdsAndGetSpacing.js +4 -3
- package/dist/esm/utilities/splitImageIdsBy4DTags.d.ts +2 -10
- package/dist/esm/utilities/splitImageIdsBy4DTags.js +2 -312
- package/dist/esm/utilities/toNumber.d.ts +3 -1
- package/dist/esm/utilities/toNumber.js +3 -3
- package/dist/esm/utilities/viewportCapabilities.d.ts +19 -0
- package/dist/esm/utilities/viewportCapabilities.js +32 -0
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/webWorkerManager/webWorkerManager.js +3 -1
- package/package.json +16 -8
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import cache from '../cache/cache';
|
|
2
|
+
import { InterpolationType } from '../enums';
|
|
3
|
+
import { mat3, vec3 } from 'gl-matrix';
|
|
2
4
|
import RLEVoxelMap from './RLEVoxelMap';
|
|
3
5
|
import isEqual from './isEqual';
|
|
4
6
|
import { iterateOverPointsInShapeVoxelManager } from './pointInShapeCallback';
|
|
5
7
|
const DEFAULT_RLE_SIZE = 5 * 1024;
|
|
8
|
+
const worldToIndexDeltaScratch = [0, 0, 0];
|
|
9
|
+
const worldToIndexResultScratch = [0, 0, 0];
|
|
10
|
+
const worldToIndexTransformCache = new WeakMap();
|
|
6
11
|
export default class VoxelManager {
|
|
7
12
|
get id() {
|
|
8
13
|
return this._id;
|
|
@@ -17,11 +22,10 @@ export default class VoxelManager {
|
|
|
17
22
|
this.scalarData = null;
|
|
18
23
|
this._sliceDataCache = null;
|
|
19
24
|
this.getAtIJK = (i, j, k) => {
|
|
20
|
-
|
|
21
|
-
return this._get(index);
|
|
25
|
+
return this._get(i + j * this.width + k * this.frameSize);
|
|
22
26
|
};
|
|
23
27
|
this.setAtIJK = (i, j, k, v) => {
|
|
24
|
-
const index =
|
|
28
|
+
const index = i + j * this.width + k * this.frameSize;
|
|
25
29
|
const changed = this._set(index, v);
|
|
26
30
|
if (changed !== false) {
|
|
27
31
|
this.modifiedSlices.add(k);
|
|
@@ -339,6 +343,94 @@ export default class VoxelManager {
|
|
|
339
343
|
bounds[2][0] = Math.min(point[2], bounds[2][0]);
|
|
340
344
|
bounds[2][1] = Math.max(point[2], bounds[2][1]);
|
|
341
345
|
}
|
|
346
|
+
static getWorldToIndexTransform(volumeGeometry) {
|
|
347
|
+
const cachedTransform = worldToIndexTransformCache.get(volumeGeometry);
|
|
348
|
+
if (cachedTransform) {
|
|
349
|
+
return cachedTransform;
|
|
350
|
+
}
|
|
351
|
+
const direction = volumeGeometry.direction;
|
|
352
|
+
const spacing = volumeGeometry.spacing;
|
|
353
|
+
const transform = mat3.fromValues(direction[0] / spacing[0], direction[3] / spacing[1], direction[6] / spacing[2], direction[1] / spacing[0], direction[4] / spacing[1], direction[7] / spacing[2], direction[2] / spacing[0], direction[5] / spacing[1], direction[8] / spacing[2]);
|
|
354
|
+
worldToIndexTransformCache.set(volumeGeometry, transform);
|
|
355
|
+
return transform;
|
|
356
|
+
}
|
|
357
|
+
static worldToIndexContinuous(volumeGeometry, worldPos) {
|
|
358
|
+
const origin = volumeGeometry.origin;
|
|
359
|
+
worldToIndexDeltaScratch[0] = worldPos[0] - origin[0];
|
|
360
|
+
worldToIndexDeltaScratch[1] = worldPos[1] - origin[1];
|
|
361
|
+
worldToIndexDeltaScratch[2] = worldPos[2] - origin[2];
|
|
362
|
+
const continuousIndex = vec3.transformMat3(worldToIndexResultScratch, worldToIndexDeltaScratch, VoxelManager.getWorldToIndexTransform(volumeGeometry));
|
|
363
|
+
return [continuousIndex[0], continuousIndex[1], continuousIndex[2]];
|
|
364
|
+
}
|
|
365
|
+
static sampleAtWorldCoordinates(volume, worldX, worldY, worldZ, interpolationType = InterpolationType.LINEAR) {
|
|
366
|
+
if (!volume.voxelManager) {
|
|
367
|
+
return NaN;
|
|
368
|
+
}
|
|
369
|
+
const origin = volume.origin;
|
|
370
|
+
worldToIndexDeltaScratch[0] = worldX - origin[0];
|
|
371
|
+
worldToIndexDeltaScratch[1] = worldY - origin[1];
|
|
372
|
+
worldToIndexDeltaScratch[2] = worldZ - origin[2];
|
|
373
|
+
const continuousIndex = vec3.transformMat3(worldToIndexResultScratch, worldToIndexDeltaScratch, VoxelManager.getWorldToIndexTransform(volume));
|
|
374
|
+
return VoxelManager.sampleAtContinuousCoordinates(volume.voxelManager, volume.dimensions, continuousIndex[0], continuousIndex[1], continuousIndex[2], interpolationType);
|
|
375
|
+
}
|
|
376
|
+
static sampleAtWorld(volume, worldPos, interpolationType = InterpolationType.LINEAR) {
|
|
377
|
+
return VoxelManager.sampleAtWorldCoordinates(volume, worldPos[0], worldPos[1], worldPos[2], interpolationType);
|
|
378
|
+
}
|
|
379
|
+
static sampleAtContinuousIndex(voxelManager, dimensions, continuousIndex, interpolationType = InterpolationType.LINEAR) {
|
|
380
|
+
return VoxelManager.sampleAtContinuousCoordinates(voxelManager, dimensions, continuousIndex[0], continuousIndex[1], continuousIndex[2], interpolationType);
|
|
381
|
+
}
|
|
382
|
+
static sampleAtContinuousCoordinates(voxelManager, dimensions, iC, jC, kC, interpolationType) {
|
|
383
|
+
return interpolationType === InterpolationType.NEAREST
|
|
384
|
+
? VoxelManager.sampleNearestAtContinuousCoordinates(voxelManager, dimensions, iC, jC, kC)
|
|
385
|
+
: VoxelManager.sampleLinearAtContinuousCoordinates(voxelManager, dimensions, iC, jC, kC);
|
|
386
|
+
}
|
|
387
|
+
static sampleNearestAtContinuousCoordinates(voxelManager, dimensions, iC, jC, kC) {
|
|
388
|
+
const i = Math.floor(iC + 0.5 - 1e-6);
|
|
389
|
+
const j = Math.floor(jC + 0.5 - 1e-6);
|
|
390
|
+
const k = Math.floor(kC + 0.5 - 1e-6);
|
|
391
|
+
const dx = dimensions[0];
|
|
392
|
+
const dy = dimensions[1];
|
|
393
|
+
const dz = dimensions[2];
|
|
394
|
+
if (i < 0 || i >= dx || j < 0 || j >= dy || k < 0 || k >= dz) {
|
|
395
|
+
return NaN;
|
|
396
|
+
}
|
|
397
|
+
return Number(voxelManager.getAtIJK(i, j, k));
|
|
398
|
+
}
|
|
399
|
+
static sampleLinearAtContinuousCoordinates(voxelManager, dimensions, i, j, k) {
|
|
400
|
+
const dx = dimensions[0];
|
|
401
|
+
const dy = dimensions[1];
|
|
402
|
+
const dz = dimensions[2];
|
|
403
|
+
if (i < 0 || i > dx - 1 || j < 0 || j > dy - 1 || k < 0 || k > dz - 1) {
|
|
404
|
+
return NaN;
|
|
405
|
+
}
|
|
406
|
+
const i0 = Math.floor(i);
|
|
407
|
+
const j0 = Math.floor(j);
|
|
408
|
+
const k0 = Math.floor(k);
|
|
409
|
+
const i1 = Math.min(i0 + 1, dx - 1);
|
|
410
|
+
const j1 = Math.min(j0 + 1, dy - 1);
|
|
411
|
+
const k1 = Math.min(k0 + 1, dz - 1);
|
|
412
|
+
const di = i - i0;
|
|
413
|
+
const dj = j - j0;
|
|
414
|
+
const dk = k - k0;
|
|
415
|
+
const oneMinusDi = 1 - di;
|
|
416
|
+
const oneMinusDj = 1 - dj;
|
|
417
|
+
const oneMinusDk = 1 - dk;
|
|
418
|
+
const c000 = Number(voxelManager.getAtIJK(i0, j0, k0));
|
|
419
|
+
const c100 = Number(voxelManager.getAtIJK(i1, j0, k0));
|
|
420
|
+
const c010 = Number(voxelManager.getAtIJK(i0, j1, k0));
|
|
421
|
+
const c110 = Number(voxelManager.getAtIJK(i1, j1, k0));
|
|
422
|
+
const c001 = Number(voxelManager.getAtIJK(i0, j0, k1));
|
|
423
|
+
const c101 = Number(voxelManager.getAtIJK(i1, j0, k1));
|
|
424
|
+
const c011 = Number(voxelManager.getAtIJK(i0, j1, k1));
|
|
425
|
+
const c111 = Number(voxelManager.getAtIJK(i1, j1, k1));
|
|
426
|
+
const c00 = c000 * oneMinusDi + c100 * di;
|
|
427
|
+
const c10 = c010 * oneMinusDi + c110 * di;
|
|
428
|
+
const c01 = c001 * oneMinusDi + c101 * di;
|
|
429
|
+
const c11 = c011 * oneMinusDi + c111 * di;
|
|
430
|
+
const c0 = c00 * oneMinusDj + c10 * dj;
|
|
431
|
+
const c1 = c01 * oneMinusDj + c11 * dj;
|
|
432
|
+
return c0 * oneMinusDk + c1 * dk;
|
|
433
|
+
}
|
|
342
434
|
addPoint(point) {
|
|
343
435
|
const index = Array.isArray(point)
|
|
344
436
|
? point[0] + this.width * point[1] + this.frameSize * point[2]
|
|
@@ -401,37 +493,75 @@ export default class VoxelManager {
|
|
|
401
493
|
}
|
|
402
494
|
static createImageVolumeVoxelManager({ dimensions, imageIds, numberOfComponents = 1, id, }) {
|
|
403
495
|
const pixelsPerSlice = dimensions[0] * dimensions[1];
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
496
|
+
const depth = dimensions[2];
|
|
497
|
+
const sliceVoxelManagers = new Array(depth);
|
|
498
|
+
let lastSliceIndex = -1;
|
|
499
|
+
let lastSliceVoxelManager = null;
|
|
500
|
+
const warnedMissingImageIds = new Set();
|
|
501
|
+
const warnedMissingImages = new Set();
|
|
502
|
+
const resolveSliceVoxelManager = (sliceIndex) => {
|
|
503
|
+
if (sliceIndex < 0 || sliceIndex >= depth) {
|
|
504
|
+
return null;
|
|
505
|
+
}
|
|
506
|
+
const cachedVoxelManager = sliceVoxelManagers[sliceIndex];
|
|
507
|
+
if (cachedVoxelManager !== undefined) {
|
|
508
|
+
return cachedVoxelManager;
|
|
408
509
|
}
|
|
409
510
|
const imageId = imageIds[sliceIndex];
|
|
410
511
|
if (!imageId) {
|
|
411
|
-
|
|
412
|
-
|
|
512
|
+
if (!warnedMissingImageIds.has(sliceIndex)) {
|
|
513
|
+
warnedMissingImageIds.add(sliceIndex);
|
|
514
|
+
console.warn(`ImageId not found for sliceIndex: ${sliceIndex}`);
|
|
515
|
+
}
|
|
516
|
+
sliceVoxelManagers[sliceIndex] = null;
|
|
517
|
+
return null;
|
|
413
518
|
}
|
|
414
519
|
const image = cache.getImage(imageId);
|
|
415
|
-
if (!image) {
|
|
416
|
-
|
|
417
|
-
|
|
520
|
+
if (!image?.voxelManager) {
|
|
521
|
+
if (!warnedMissingImages.has(imageId)) {
|
|
522
|
+
warnedMissingImages.add(imageId);
|
|
523
|
+
console.warn(`Image not found for imageId: ${imageId}`);
|
|
524
|
+
}
|
|
525
|
+
return null;
|
|
418
526
|
}
|
|
419
|
-
const
|
|
420
|
-
|
|
421
|
-
return
|
|
422
|
-
}
|
|
527
|
+
const imageVoxelManager = image.voxelManager;
|
|
528
|
+
sliceVoxelManagers[sliceIndex] = imageVoxelManager;
|
|
529
|
+
return imageVoxelManager;
|
|
530
|
+
};
|
|
423
531
|
function getVoxelValue(index) {
|
|
424
|
-
const
|
|
425
|
-
if (
|
|
532
|
+
const sliceIndex = Math.floor(index / pixelsPerSlice);
|
|
533
|
+
if (sliceIndex < 0 || sliceIndex >= depth) {
|
|
426
534
|
return null;
|
|
427
535
|
}
|
|
536
|
+
const imageVoxelManager = sliceIndex === lastSliceIndex
|
|
537
|
+
? lastSliceVoxelManager
|
|
538
|
+
: resolveSliceVoxelManager(sliceIndex);
|
|
539
|
+
if (!imageVoxelManager) {
|
|
540
|
+
return null;
|
|
541
|
+
}
|
|
542
|
+
if (sliceIndex !== lastSliceIndex) {
|
|
543
|
+
lastSliceIndex = sliceIndex;
|
|
544
|
+
lastSliceVoxelManager = imageVoxelManager;
|
|
545
|
+
}
|
|
546
|
+
const pixelIndex = index - sliceIndex * pixelsPerSlice;
|
|
428
547
|
return imageVoxelManager.getAtIndex(pixelIndex);
|
|
429
548
|
}
|
|
430
549
|
function setVoxelValue(index, v) {
|
|
431
|
-
const
|
|
432
|
-
if (
|
|
550
|
+
const sliceIndex = Math.floor(index / pixelsPerSlice);
|
|
551
|
+
if (sliceIndex < 0 || sliceIndex >= depth) {
|
|
552
|
+
return false;
|
|
553
|
+
}
|
|
554
|
+
const imageVoxelManager = sliceIndex === lastSliceIndex
|
|
555
|
+
? lastSliceVoxelManager
|
|
556
|
+
: resolveSliceVoxelManager(sliceIndex);
|
|
557
|
+
if (!imageVoxelManager) {
|
|
433
558
|
return false;
|
|
434
559
|
}
|
|
560
|
+
if (sliceIndex !== lastSliceIndex) {
|
|
561
|
+
lastSliceIndex = sliceIndex;
|
|
562
|
+
lastSliceVoxelManager = imageVoxelManager;
|
|
563
|
+
}
|
|
564
|
+
const pixelIndex = index - sliceIndex * pixelsPerSlice;
|
|
435
565
|
const currentValue = imageVoxelManager.getAtIndex(pixelIndex);
|
|
436
566
|
const isChanged = !isEqual(v, currentValue);
|
|
437
567
|
if (!isChanged) {
|
|
@@ -441,8 +571,8 @@ export default class VoxelManager {
|
|
|
441
571
|
return true;
|
|
442
572
|
}
|
|
443
573
|
const _getConstructor = () => {
|
|
444
|
-
const
|
|
445
|
-
if (!imageVoxelManager
|
|
574
|
+
const imageVoxelManager = resolveSliceVoxelManager(0);
|
|
575
|
+
if (!imageVoxelManager) {
|
|
446
576
|
return null;
|
|
447
577
|
}
|
|
448
578
|
return imageVoxelManager.getConstructor();
|
|
@@ -454,6 +584,11 @@ export default class VoxelManager {
|
|
|
454
584
|
_getConstructor,
|
|
455
585
|
_id: id || 'createImageVolumeVoxelManager',
|
|
456
586
|
});
|
|
587
|
+
voxelManager.invalidateCache = () => {
|
|
588
|
+
sliceVoxelManagers.fill(undefined);
|
|
589
|
+
lastSliceIndex = -1;
|
|
590
|
+
lastSliceVoxelManager = null;
|
|
591
|
+
};
|
|
457
592
|
voxelManager.getMiddleSliceData = () => {
|
|
458
593
|
const middleSliceIndex = Math.floor(dimensions[2] / 2);
|
|
459
594
|
return voxelManager.getSliceData({
|
|
@@ -488,8 +623,8 @@ export default class VoxelManager {
|
|
|
488
623
|
return [minValue, maxValue];
|
|
489
624
|
};
|
|
490
625
|
voxelManager._getScalarDataLength = () => {
|
|
491
|
-
const
|
|
492
|
-
if (!imageVoxelManager
|
|
626
|
+
const imageVoxelManager = resolveSliceVoxelManager(0);
|
|
627
|
+
if (!imageVoxelManager) {
|
|
493
628
|
return 0;
|
|
494
629
|
}
|
|
495
630
|
return imageVoxelManager.getScalarDataLength() * dimensions[2];
|
|
@@ -503,8 +638,8 @@ export default class VoxelManager {
|
|
|
503
638
|
const scalarData = new ScalarDataConstructor(dataLength);
|
|
504
639
|
const sliceSize = dimensions[0] * dimensions[1] * numberOfComponents;
|
|
505
640
|
for (let sliceIndex = 0; sliceIndex < dimensions[2]; sliceIndex++) {
|
|
506
|
-
const
|
|
507
|
-
if (imageVoxelManager
|
|
641
|
+
const imageVoxelManager = resolveSliceVoxelManager(sliceIndex);
|
|
642
|
+
if (imageVoxelManager) {
|
|
508
643
|
const sliceStart = sliceIndex * sliceSize;
|
|
509
644
|
const pixelData = imageVoxelManager.getScalarData();
|
|
510
645
|
if (numberOfComponents === 1) {
|
|
@@ -527,7 +662,7 @@ export default class VoxelManager {
|
|
|
527
662
|
let minValue = Infinity;
|
|
528
663
|
let maxValue = -Infinity;
|
|
529
664
|
for (let sliceIndex = 0; sliceIndex < dimensions[2]; sliceIndex++) {
|
|
530
|
-
const
|
|
665
|
+
const imageVoxelManager = resolveSliceVoxelManager(sliceIndex);
|
|
531
666
|
if (imageVoxelManager && SliceDataConstructor) {
|
|
532
667
|
const sliceStart = sliceIndex * sliceSize;
|
|
533
668
|
const sliceEnd = sliceStart + sliceSize;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { Point3 } from '../types';
|
|
2
|
+
export interface WSIImageMetadataSource {
|
|
3
|
+
NumberOfFrames?: number;
|
|
4
|
+
TotalPixelMatrixColumns: number;
|
|
5
|
+
TotalPixelMatrixRows: number;
|
|
6
|
+
ImageOrientationSlide?: number[];
|
|
7
|
+
ImagedVolumeWidth?: number;
|
|
8
|
+
ImagedVolumeHeight?: number;
|
|
9
|
+
ImagedVolumeDepth?: number;
|
|
10
|
+
TotalPixelMatrixOriginSequence?: Array<{
|
|
11
|
+
XOffsetInSlideCoordinateSystem?: number;
|
|
12
|
+
YOffsetInSlideCoordinateSystem?: number;
|
|
13
|
+
ZOffsetInSlideCoordinateSystem?: number;
|
|
14
|
+
}>;
|
|
15
|
+
['00080008']?: {
|
|
16
|
+
Value?: string[];
|
|
17
|
+
};
|
|
18
|
+
['00200052']?: {
|
|
19
|
+
Value?: string[];
|
|
20
|
+
};
|
|
21
|
+
isMultiframe?: unknown;
|
|
22
|
+
frameNumber?: unknown;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface WSIImageVolumeLike extends WSIImageMetadataSource {
|
|
26
|
+
ImageType: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface WSIClientLike {
|
|
29
|
+
getDICOMwebMetadata(imageId: string): WSIImageMetadataSource;
|
|
30
|
+
}
|
|
31
|
+
export interface WSIMapViewLike {
|
|
32
|
+
getCenter(): [number, number];
|
|
33
|
+
getExtent?(): number[];
|
|
34
|
+
getProjection(): {
|
|
35
|
+
getExtent(): number[];
|
|
36
|
+
};
|
|
37
|
+
getResolution(): number;
|
|
38
|
+
getResolutionForZoom?(zoom: number): number;
|
|
39
|
+
getRotation(): number;
|
|
40
|
+
getZoom(): number;
|
|
41
|
+
setCenter(center: [number, number]): void;
|
|
42
|
+
setResolution?(resolution: number): void;
|
|
43
|
+
setRotation(rotation: number): void;
|
|
44
|
+
setZoom(zoom: number): void;
|
|
45
|
+
}
|
|
46
|
+
export interface WSIMapLike {
|
|
47
|
+
getView(): WSIMapViewLike;
|
|
48
|
+
getViewport(): HTMLElement;
|
|
49
|
+
on(eventName: string, handler: () => void): void;
|
|
50
|
+
render(): void;
|
|
51
|
+
un(eventName: string, handler: () => void): void;
|
|
52
|
+
updateSize?(): void;
|
|
53
|
+
}
|
|
54
|
+
export interface WSIViewerLike {
|
|
55
|
+
cleanup?(): void;
|
|
56
|
+
deactivateDragPanInteraction(): void;
|
|
57
|
+
getAffine(): unknown;
|
|
58
|
+
getMap(): WSIMapLike;
|
|
59
|
+
render(args: {
|
|
60
|
+
container: HTMLElement;
|
|
61
|
+
}): void;
|
|
62
|
+
}
|
|
63
|
+
export interface WSITransformUtilitiesLike {
|
|
64
|
+
applyInverseTransform(args: {
|
|
65
|
+
coordinate: [number, number];
|
|
66
|
+
affine: unknown;
|
|
67
|
+
}): [number, number];
|
|
68
|
+
applyTransform(args: {
|
|
69
|
+
coordinate: [number, number];
|
|
70
|
+
affine: unknown;
|
|
71
|
+
}): [number, number];
|
|
72
|
+
}
|
|
73
|
+
export interface DicomMicroscopyViewerLike {
|
|
74
|
+
metadata: {
|
|
75
|
+
VLWholeSlideMicroscopyImage: new (args: {
|
|
76
|
+
metadata: WSIImageMetadataSource;
|
|
77
|
+
}) => WSIImageVolumeLike;
|
|
78
|
+
};
|
|
79
|
+
utils?: WSITransformUtilitiesLike;
|
|
80
|
+
viewer: {
|
|
81
|
+
VolumeImageViewer: new (args: {
|
|
82
|
+
client: unknown;
|
|
83
|
+
metadata: WSIImageVolumeLike[];
|
|
84
|
+
controls: string[];
|
|
85
|
+
retrieveRendered: boolean;
|
|
86
|
+
bindings: Record<string, unknown>;
|
|
87
|
+
}) => WSIViewerLike;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export interface WSIImageDataMetadata {
|
|
91
|
+
bitsAllocated: number;
|
|
92
|
+
numberOfComponents: number;
|
|
93
|
+
origin: Point3;
|
|
94
|
+
direction: number[];
|
|
95
|
+
dimensions: [number, number, number];
|
|
96
|
+
spacing: [number, number, number];
|
|
97
|
+
hasPixelSpacing: boolean;
|
|
98
|
+
numVoxels: number;
|
|
99
|
+
imagePlaneModule: Record<string, unknown>;
|
|
100
|
+
}
|
|
101
|
+
export interface LoadedWSIData {
|
|
102
|
+
volumeImages: WSIImageVolumeLike[];
|
|
103
|
+
metadataDicomweb: WSIImageMetadataSource[];
|
|
104
|
+
metadata: WSIImageDataMetadata;
|
|
105
|
+
frameOfReferenceUID: string | null;
|
|
106
|
+
imageURISet: Set<string>;
|
|
107
|
+
}
|
|
108
|
+
export declare function getDicomMicroscopyViewer(): Promise<DicomMicroscopyViewerLike>;
|
|
109
|
+
export declare function addWSIMiniNavigationOverlayCss(): void;
|
|
110
|
+
export declare function getWSIImageDataMetadata(args: {
|
|
111
|
+
metadataDicomweb: WSIImageMetadataSource[];
|
|
112
|
+
imageIds: string[];
|
|
113
|
+
imageIndex?: number;
|
|
114
|
+
}): WSIImageDataMetadata;
|
|
115
|
+
export declare function loadWSIData(args: {
|
|
116
|
+
imageIds: string[];
|
|
117
|
+
client: WSIClientLike;
|
|
118
|
+
dicomMicroscopyViewer?: DicomMicroscopyViewerLike;
|
|
119
|
+
}): Promise<LoadedWSIData>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { vec3 } from 'gl-matrix';
|
|
2
|
+
import { MetadataModules } from '../enums';
|
|
3
|
+
import { peerImport } from '../init';
|
|
4
|
+
import * as metaData from '../metaData';
|
|
5
|
+
import microscopyViewportCss from '../constants/microscopyViewportCss';
|
|
6
|
+
import imageIdToURI from './imageIdToURI';
|
|
7
|
+
const overlayCssId = 'wsiViewportOverlayCss';
|
|
8
|
+
export async function getDicomMicroscopyViewer() {
|
|
9
|
+
return peerImport('dicom-microscopy-viewer');
|
|
10
|
+
}
|
|
11
|
+
export function addWSIMiniNavigationOverlayCss() {
|
|
12
|
+
if (document.getElementById(overlayCssId)) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const overlayCss = document.createElement('style');
|
|
16
|
+
overlayCss.innerText = microscopyViewportCss;
|
|
17
|
+
overlayCss.setAttribute('id', overlayCssId);
|
|
18
|
+
document.getElementsByTagName('head')[0].append(overlayCss);
|
|
19
|
+
}
|
|
20
|
+
export function getWSIImageDataMetadata(args) {
|
|
21
|
+
const { metadataDicomweb, imageIds, imageIndex = 0 } = args;
|
|
22
|
+
const maxImage = metadataDicomweb.reduce((currentMax, image) => {
|
|
23
|
+
return currentMax?.NumberOfFrames < image.NumberOfFrames
|
|
24
|
+
? image
|
|
25
|
+
: currentMax;
|
|
26
|
+
});
|
|
27
|
+
const { TotalPixelMatrixColumns: columns, TotalPixelMatrixRows: rows, ImageOrientationSlide, ImagedVolumeWidth: width, ImagedVolumeHeight: height, ImagedVolumeDepth: depth, } = maxImage;
|
|
28
|
+
const imagePlaneModule = metaData.get(MetadataModules.IMAGE_PLANE, imageIds[imageIndex]);
|
|
29
|
+
let rowCosines = ImageOrientationSlide.slice(0, 3);
|
|
30
|
+
let columnCosines = ImageOrientationSlide.slice(3, 6);
|
|
31
|
+
if (rowCosines == null || columnCosines == null) {
|
|
32
|
+
rowCosines = [1, 0, 0];
|
|
33
|
+
columnCosines = [0, 1, 0];
|
|
34
|
+
}
|
|
35
|
+
const rowCosineVec = vec3.fromValues(rowCosines[0], rowCosines[1], rowCosines[2]);
|
|
36
|
+
const colCosineVec = vec3.fromValues(columnCosines[0], columnCosines[1], columnCosines[2]);
|
|
37
|
+
const scanAxisNormal = vec3.create();
|
|
38
|
+
vec3.cross(scanAxisNormal, rowCosineVec, colCosineVec);
|
|
39
|
+
const { XOffsetInSlideCoordinateSystem = 0, YOffsetInSlideCoordinateSystem = 0, ZOffsetInSlideCoordinateSystem = 0, } = maxImage.TotalPixelMatrixOriginSequence?.[0] || {};
|
|
40
|
+
const origin = [
|
|
41
|
+
XOffsetInSlideCoordinateSystem,
|
|
42
|
+
YOffsetInSlideCoordinateSystem,
|
|
43
|
+
ZOffsetInSlideCoordinateSystem,
|
|
44
|
+
];
|
|
45
|
+
const xSpacing = width / columns;
|
|
46
|
+
const ySpacing = height / rows;
|
|
47
|
+
const zSpacing = depth;
|
|
48
|
+
const xVoxels = columns;
|
|
49
|
+
const yVoxels = rows;
|
|
50
|
+
const zVoxels = 1;
|
|
51
|
+
return {
|
|
52
|
+
bitsAllocated: 8,
|
|
53
|
+
numberOfComponents: 3,
|
|
54
|
+
origin,
|
|
55
|
+
direction: [...rowCosineVec, ...colCosineVec, ...scanAxisNormal],
|
|
56
|
+
dimensions: [xVoxels, yVoxels, zVoxels],
|
|
57
|
+
spacing: [xSpacing, ySpacing, zSpacing],
|
|
58
|
+
hasPixelSpacing: !!(width && height),
|
|
59
|
+
numVoxels: xVoxels * yVoxels * zVoxels,
|
|
60
|
+
imagePlaneModule,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export async function loadWSIData(args) {
|
|
64
|
+
const { imageIds, client, dicomMicroscopyViewer } = args;
|
|
65
|
+
const DicomMicroscopyViewer = dicomMicroscopyViewer || (await getDicomMicroscopyViewer());
|
|
66
|
+
let frameOfReferenceUID = null;
|
|
67
|
+
const metadataDicomweb = imageIds.map((imageId) => {
|
|
68
|
+
const imageMetadata = client.getDICOMwebMetadata(imageId);
|
|
69
|
+
Object.defineProperty(imageMetadata, 'isMultiframe', {
|
|
70
|
+
value: imageMetadata.isMultiframe,
|
|
71
|
+
enumerable: false,
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(imageMetadata, 'frameNumber', {
|
|
74
|
+
value: undefined,
|
|
75
|
+
enumerable: false,
|
|
76
|
+
});
|
|
77
|
+
const imageType = imageMetadata['00080008']?.Value;
|
|
78
|
+
if (imageType?.length === 1) {
|
|
79
|
+
imageMetadata['00080008'].Value = imageType[0].split('\\');
|
|
80
|
+
}
|
|
81
|
+
const imageFrameOfReference = imageMetadata['00200052']?.Value?.[0];
|
|
82
|
+
if (!frameOfReferenceUID) {
|
|
83
|
+
frameOfReferenceUID = imageFrameOfReference;
|
|
84
|
+
}
|
|
85
|
+
else if (imageFrameOfReference !== frameOfReferenceUID) {
|
|
86
|
+
imageMetadata['00200052'].Value = [frameOfReferenceUID];
|
|
87
|
+
}
|
|
88
|
+
return imageMetadata;
|
|
89
|
+
});
|
|
90
|
+
const volumeImages = [];
|
|
91
|
+
metadataDicomweb.forEach((metadata) => {
|
|
92
|
+
const image = new DicomMicroscopyViewer.metadata.VLWholeSlideMicroscopyImage({
|
|
93
|
+
metadata,
|
|
94
|
+
});
|
|
95
|
+
const imageFlavor = image.ImageType[2];
|
|
96
|
+
if (imageFlavor === 'VOLUME' || imageFlavor === 'THUMBNAIL') {
|
|
97
|
+
volumeImages.push(image);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
volumeImages,
|
|
102
|
+
metadataDicomweb,
|
|
103
|
+
metadata: getWSIImageDataMetadata({
|
|
104
|
+
metadataDicomweb: volumeImages,
|
|
105
|
+
imageIds,
|
|
106
|
+
}),
|
|
107
|
+
frameOfReferenceUID,
|
|
108
|
+
imageURISet: new Set(imageIds.map((imageId) => imageIdToURI(imageId))),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
@@ -8,29 +8,29 @@ export function getValidVOILUTFunction(voiLUTFunction) {
|
|
|
8
8
|
}
|
|
9
9
|
export function getImagePlaneModule(imageId) {
|
|
10
10
|
const imagePlaneModule = metaData.get(MetadataModules.IMAGE_PLANE, imageId);
|
|
11
|
+
if (imagePlaneModule.usingDefaultValues !== undefined) {
|
|
12
|
+
return imagePlaneModule;
|
|
13
|
+
}
|
|
14
|
+
if (imagePlaneModule.columnPixelSpacing &&
|
|
15
|
+
imagePlaneModule.rowPixelSpacing &&
|
|
16
|
+
imagePlaneModule.columnCosines &&
|
|
17
|
+
imagePlaneModule.rowCosines &&
|
|
18
|
+
imagePlaneModule.imagePositionPatient &&
|
|
19
|
+
imagePlaneModule.imageOrientationPatient) {
|
|
20
|
+
return imagePlaneModule;
|
|
21
|
+
}
|
|
11
22
|
const newImagePlaneModule = {
|
|
12
23
|
...imagePlaneModule,
|
|
24
|
+
usingDefaultValues: true,
|
|
13
25
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
if (!newImagePlaneModule.rowCosines) {
|
|
24
|
-
newImagePlaneModule.rowCosines = [1, 0, 0];
|
|
25
|
-
}
|
|
26
|
-
if (!newImagePlaneModule.imagePositionPatient) {
|
|
27
|
-
newImagePlaneModule.imagePositionPatient = [0, 0, 0];
|
|
28
|
-
}
|
|
29
|
-
if (!newImagePlaneModule.imageOrientationPatient) {
|
|
30
|
-
newImagePlaneModule.imageOrientationPatient = new Float32Array([
|
|
31
|
-
1, 0, 0, 0, 1, 0,
|
|
32
|
-
]);
|
|
33
|
-
}
|
|
26
|
+
newImagePlaneModule.columnPixelSpacing ||= 1;
|
|
27
|
+
newImagePlaneModule.rowPixelSpacing ||= 1;
|
|
28
|
+
newImagePlaneModule.columnCosines ||= [0, 1, 0];
|
|
29
|
+
newImagePlaneModule.rowCosines ||= [1, 0, 0];
|
|
30
|
+
newImagePlaneModule.imagePositionPatient ||= [0, 0, 0];
|
|
31
|
+
newImagePlaneModule.imageOrientationPatient ||= new Float32Array([
|
|
32
|
+
1, 0, 0, 0, 1, 0,
|
|
33
|
+
]);
|
|
34
34
|
return newImagePlaneModule;
|
|
35
35
|
}
|
|
36
36
|
export function calibrateImagePlaneModule(imageId, imagePlaneModule, currentCalibration) {
|
|
@@ -53,10 +53,10 @@ export function calibrateImagePlaneModule(imageId, imagePlaneModule, currentCali
|
|
|
53
53
|
}
|
|
54
54
|
export function buildMetadata(image) {
|
|
55
55
|
const imageId = image.imageId;
|
|
56
|
-
const { pixelRepresentation, bitsAllocated, bitsStored, highBit, photometricInterpretation, samplesPerPixel, } = metaData.get(
|
|
56
|
+
const { pixelRepresentation, bitsAllocated, bitsStored, highBit, photometricInterpretation, samplesPerPixel, } = metaData.get(MetadataModules.IMAGE_PIXEL, imageId);
|
|
57
57
|
const { windowWidth, windowCenter, voiLUTFunction } = image;
|
|
58
|
-
const { modality } = metaData.get(
|
|
59
|
-
const imageIdScalingFactor = metaData.get(
|
|
58
|
+
const { modality } = metaData.get(MetadataModules.GENERAL_SERIES, imageId);
|
|
59
|
+
const imageIdScalingFactor = metaData.get(MetadataModules.SCALING, imageId);
|
|
60
60
|
const calibration = metaData.get(MetadataModules.CALIBRATION, imageId);
|
|
61
61
|
const voiLUTFunctionEnum = getValidVOILUTFunction(voiLUTFunction);
|
|
62
62
|
const imagePlaneModule = getImagePlaneModule(imageId);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { vec3 } from 'gl-matrix';
|
|
2
2
|
import * as metaData from '../metaData';
|
|
3
|
+
import { MetadataModules } from '../enums';
|
|
3
4
|
import { getConfiguration } from '../init';
|
|
4
5
|
const DEFAULT_THICKNESS_SINGLE_SLICE = 1;
|
|
5
6
|
function getPixelSpacingForCubicVoxel(metadata) {
|
|
@@ -18,9 +19,9 @@ function getPixelSpacingForCubicVoxel(metadata) {
|
|
|
18
19
|
return undefined;
|
|
19
20
|
}
|
|
20
21
|
export default function calculateSpacingBetweenImageIds(imageIds) {
|
|
21
|
-
const { imagePositionPatient: referenceImagePositionPatient, imageOrientationPatient, } = metaData.get(
|
|
22
|
+
const { imagePositionPatient: referenceImagePositionPatient, imageOrientationPatient, } = metaData.get(MetadataModules.IMAGE_PLANE, imageIds[0]);
|
|
22
23
|
if (imageIds.length === 1) {
|
|
23
|
-
const { sliceThickness, spacingBetweenSlices, columnPixelSpacing, rowPixelSpacing, pixelSpacing, } = metaData.get(
|
|
24
|
+
const { sliceThickness, spacingBetweenSlices, columnPixelSpacing, rowPixelSpacing, pixelSpacing, } = metaData.get(MetadataModules.IMAGE_PLANE, imageIds[0]);
|
|
24
25
|
if (sliceThickness)
|
|
25
26
|
return sliceThickness;
|
|
26
27
|
if (spacingBetweenSlices)
|
|
@@ -43,7 +44,7 @@ export default function calculateSpacingBetweenImageIds(imageIds) {
|
|
|
43
44
|
const usingWadoUri = imageIds[0].split(':')[0] === 'wadouri';
|
|
44
45
|
let spacing;
|
|
45
46
|
function getDistance(imageId) {
|
|
46
|
-
const { imagePositionPatient } = metaData.get(
|
|
47
|
+
const { imagePositionPatient } = metaData.get(MetadataModules.IMAGE_PLANE, imageId);
|
|
47
48
|
const positionVector = vec3.create();
|
|
48
49
|
const ippVec = vec3.fromValues(imagePositionPatient[0], imagePositionPatient[1], imagePositionPatient[2]);
|
|
49
50
|
vec3.sub(positionVector, refIppVec, ippVec);
|
|
@@ -69,7 +70,7 @@ export default function calculateSpacingBetweenImageIds(imageIds) {
|
|
|
69
70
|
imageIds[0],
|
|
70
71
|
imageIds[Math.floor(imageIds.length / 2)],
|
|
71
72
|
];
|
|
72
|
-
const metadataForMiddleImage = metaData.get(
|
|
73
|
+
const metadataForMiddleImage = metaData.get(MetadataModules.IMAGE_PLANE, prefetchedImageIds[1]);
|
|
73
74
|
if (!metadataForMiddleImage) {
|
|
74
75
|
throw new Error('Incomplete metadata required for volume construction.');
|
|
75
76
|
}
|
|
@@ -81,7 +82,7 @@ export default function calculateSpacingBetweenImageIds(imageIds) {
|
|
|
81
82
|
Math.abs(distanceBetweenFirstAndMiddleImages) /
|
|
82
83
|
Math.floor(imageIds.length / 2);
|
|
83
84
|
}
|
|
84
|
-
const { sliceThickness, spacingBetweenSlices, columnPixelSpacing, rowPixelSpacing, pixelSpacing, } = metaData.get(
|
|
85
|
+
const { sliceThickness, spacingBetweenSlices, columnPixelSpacing, rowPixelSpacing, pixelSpacing, } = metaData.get(MetadataModules.IMAGE_PLANE, imageIds[0]);
|
|
85
86
|
const { strictZSpacingForVolumeViewport } = getConfiguration().rendering;
|
|
86
87
|
if ((spacing === 0 || isNaN(spacing)) && !strictZSpacingForVolumeViewport) {
|
|
87
88
|
if (spacingBetweenSlices) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
declare const _default: {
|
|
2
|
+
add: (imageId: string, payload: import("@cornerstonejs/metadata").IImageCalibration) => void;
|
|
3
|
+
get: (type: string, imageId: string) => import("@cornerstonejs/metadata").IImageCalibration;
|
|
4
|
+
clear: () => void;
|
|
5
5
|
};
|
|
6
|
-
export default
|
|
6
|
+
export default _default;
|
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
const metadataProvider = {
|
|
4
|
-
add: (imageId, payload) => {
|
|
5
|
-
const imageURI = imageIdToURI(imageId);
|
|
6
|
-
state[imageURI] = payload;
|
|
7
|
-
},
|
|
8
|
-
get: (type, imageId) => {
|
|
9
|
-
if (type === 'calibratedPixelSpacing') {
|
|
10
|
-
const imageURI = imageIdToURI(imageId);
|
|
11
|
-
return state[imageURI];
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
};
|
|
15
|
-
export default metadataProvider;
|
|
1
|
+
import { utilities } from '@cornerstonejs/metadata';
|
|
2
|
+
export default utilities.calibratedPixelSpacingMetadataProvider;
|
|
@@ -2,10 +2,11 @@ import type { ColormapPublic, ColormapRegistration } from '../types';
|
|
|
2
2
|
declare function registerColormap(colormap: ColormapRegistration): void;
|
|
3
3
|
declare function getColormap(name: any): any;
|
|
4
4
|
declare function getColormapNames(): any[];
|
|
5
|
+
declare function resolveColormap(name?: string): ColormapRegistration | undefined;
|
|
5
6
|
declare function findMatchingColormap(rgbPoints: any, actor: any): ColormapPublic | null;
|
|
6
7
|
export declare function setColorMapTransferFunctionForVolumeActor(volumeInfo: any): void;
|
|
7
8
|
export declare function updateOpacity(volumeActor: any, newOpacity: any): void;
|
|
8
9
|
export declare function updateThreshold(volumeActor: any, newThreshold: any): void;
|
|
9
10
|
declare function getThresholdValue(volumeActor: any): any;
|
|
10
11
|
declare function getMaxOpacity(volumeActor: any): number;
|
|
11
|
-
export { getColormap, getColormapNames, registerColormap, findMatchingColormap, getThresholdValue, getMaxOpacity, };
|
|
12
|
+
export { getColormap, getColormapNames, resolveColormap, registerColormap, findMatchingColormap, getThresholdValue, getMaxOpacity, };
|