@cornerstonejs/core 4.22.13 → 5.0.0
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 +48 -61
- package/dist/esm/RenderingEngine/BaseVolumeViewport.js +10 -17
- 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 +52 -34
- package/dist/esm/RenderingEngine/ECGViewport.d.ts +1 -1
- package/dist/esm/RenderingEngine/ECGViewport.js +33 -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 +0 -1
- package/dist/esm/RenderingEngine/StackViewport.js +37 -45
- 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 +32 -68
- package/dist/esm/RenderingEngine/Viewport.d.ts +14 -5
- package/dist/esm/RenderingEngine/Viewport.js +60 -24
- package/dist/esm/RenderingEngine/VolumeViewport.js +20 -7
- 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 +13 -3
- 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/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/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/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/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 +72 -2
- package/dist/esm/index.js +41 -2
- 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/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 +2 -2
- package/dist/esm/types/IEnabledElement.d.ts +1 -1
- package/dist/esm/types/IImageCalibration.d.ts +2 -11
- package/dist/esm/types/IViewport.d.ts +9 -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/ViewportTypeRegistry.d.ts +33 -0
- package/dist/esm/types/ViewportTypeRegistry.js +0 -0
- package/dist/esm/types/index.d.ts +7 -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/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/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 -7
- package/dist/esm/utilities/index.d.ts +11 -1
- package/dist/esm/utilities/index.js +11 -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
|
@@ -7,10 +7,9 @@ import Viewport from './Viewport';
|
|
|
7
7
|
import { getOrCreateCanvas } from './helpers';
|
|
8
8
|
import { EPSILON } from '../constants';
|
|
9
9
|
import triggerEvent from '../utilities/triggerEvent';
|
|
10
|
-
import { peerImport } from '../init';
|
|
11
|
-
import microscopyViewportCss from '../constants/microscopyViewportCss';
|
|
12
10
|
import eventTarget from '../eventTarget';
|
|
13
11
|
import imageIdToURI from '../utilities/imageIdToURI';
|
|
12
|
+
import { addWSIMiniNavigationOverlayCss, getDicomMicroscopyViewer, loadWSIData, } from '../utilities/WSIUtilities';
|
|
14
13
|
let WSIUtilFunctions = null;
|
|
15
14
|
const EVENT_POSTRENDER = 'postrender';
|
|
16
15
|
const ANNOTATION_REMOVED = 'CORNERSTONE_TOOLS_ANNOTATION_REMOVED';
|
|
@@ -166,48 +165,7 @@ class WSIViewport extends Viewport {
|
|
|
166
165
|
this.microscopyElement = null;
|
|
167
166
|
this.imageURISet.clear();
|
|
168
167
|
}
|
|
169
|
-
|
|
170
|
-
const maxImage = this.metadataDicomweb.reduce((maxImage, image) => {
|
|
171
|
-
return maxImage?.NumberOfFrames < image.NumberOfFrames ? image : maxImage;
|
|
172
|
-
});
|
|
173
|
-
const { TotalPixelMatrixColumns: columns, TotalPixelMatrixRows: rows, ImageOrientationSlide, ImagedVolumeWidth: width, ImagedVolumeHeight: height, ImagedVolumeDepth: depth, } = maxImage;
|
|
174
|
-
const imagePlaneModule = metaData.get(MetadataModules.IMAGE_PLANE, this.imageIds[imageIndex]);
|
|
175
|
-
let rowCosines = ImageOrientationSlide.slice(0, 3);
|
|
176
|
-
let columnCosines = ImageOrientationSlide.slice(3, 6);
|
|
177
|
-
if (rowCosines == null || columnCosines == null) {
|
|
178
|
-
rowCosines = [1, 0, 0];
|
|
179
|
-
columnCosines = [0, 1, 0];
|
|
180
|
-
}
|
|
181
|
-
const rowCosineVec = vec3.fromValues(rowCosines[0], rowCosines[1], rowCosines[2]);
|
|
182
|
-
const colCosineVec = vec3.fromValues(columnCosines[0], columnCosines[1], columnCosines[2]);
|
|
183
|
-
const scanAxisNormal = vec3.create();
|
|
184
|
-
vec3.cross(scanAxisNormal, rowCosineVec, colCosineVec);
|
|
185
|
-
const { XOffsetInSlideCoordinateSystem = 0, YOffsetInSlideCoordinateSystem = 0, ZOffsetInSlideCoordinateSystem = 0, } = maxImage.TotalPixelMatrixOriginSequence?.[0] || {};
|
|
186
|
-
const origin = [
|
|
187
|
-
XOffsetInSlideCoordinateSystem,
|
|
188
|
-
YOffsetInSlideCoordinateSystem,
|
|
189
|
-
ZOffsetInSlideCoordinateSystem,
|
|
190
|
-
];
|
|
191
|
-
const xSpacing = width / columns;
|
|
192
|
-
const ySpacing = height / rows;
|
|
193
|
-
const xVoxels = columns;
|
|
194
|
-
const yVoxels = rows;
|
|
195
|
-
const zSpacing = depth;
|
|
196
|
-
const zVoxels = 1;
|
|
197
|
-
this.hasPixelSpacing = !!(width && height);
|
|
198
|
-
return {
|
|
199
|
-
bitsAllocated: 8,
|
|
200
|
-
numberOfComponents: 3,
|
|
201
|
-
origin,
|
|
202
|
-
direction: [...rowCosineVec, ...colCosineVec, ...scanAxisNormal],
|
|
203
|
-
dimensions: [xVoxels, yVoxels, zVoxels],
|
|
204
|
-
spacing: [xSpacing, ySpacing, zSpacing],
|
|
205
|
-
hasPixelSpacing: this.hasPixelSpacing,
|
|
206
|
-
numVoxels: xVoxels * yVoxels * zVoxels,
|
|
207
|
-
imagePlaneModule,
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
async setFrameNumber(frame) {
|
|
168
|
+
async setFrameNumber(_frame) {
|
|
211
169
|
}
|
|
212
170
|
setProperties(props) {
|
|
213
171
|
if (props.voiRange) {
|
|
@@ -309,12 +267,12 @@ class WSIViewport extends Viewport {
|
|
|
309
267
|
if (parallelScale) {
|
|
310
268
|
const worldToCanvasRatio = this.element.clientHeight / parallelScale;
|
|
311
269
|
const resolution = 1 / xSpacing / worldToCanvasRatio;
|
|
312
|
-
view.setResolution(resolution);
|
|
270
|
+
view.setResolution?.(resolution);
|
|
313
271
|
}
|
|
314
272
|
if (focalPoint) {
|
|
315
273
|
const newCanvas = this.worldToCanvas(focalPoint);
|
|
316
274
|
const newIndex = this.canvasToIndex(newCanvas);
|
|
317
|
-
view.setCenter(newIndex);
|
|
275
|
+
view.setCenter([newIndex[0], newIndex[1]]);
|
|
318
276
|
}
|
|
319
277
|
const updatedCamera = this.getCamera();
|
|
320
278
|
this.triggerCameraModifiedEventIfNecessary(previousCamera, updatedCamera);
|
|
@@ -344,9 +302,6 @@ class WSIViewport extends Viewport {
|
|
|
344
302
|
viewPlaneNormal: [0, 0, 1],
|
|
345
303
|
};
|
|
346
304
|
}
|
|
347
|
-
static { this.getDicomMicroscopyViewer = async () => {
|
|
348
|
-
return peerImport('dicom-microscopy-viewer');
|
|
349
|
-
}; }
|
|
350
305
|
worldToIndexWSI(point) {
|
|
351
306
|
if (!WSIUtilFunctions) {
|
|
352
307
|
return;
|
|
@@ -381,9 +336,22 @@ class WSIViewport extends Viewport {
|
|
|
381
336
|
vec3.transformMat4(worldPos, point3D, indexToWorldMatrix);
|
|
382
337
|
return [worldPos[0], worldPos[1], worldPos[2]];
|
|
383
338
|
}
|
|
339
|
+
setDataList(entries) {
|
|
340
|
+
if (!entries.length) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
const { dataId } = entries[0];
|
|
344
|
+
const dataSet = metaData.get('genericViewportDataSet', dataId);
|
|
345
|
+
if (dataSet?.imageIds) {
|
|
346
|
+
return this.setDataIds(dataSet.imageIds, {
|
|
347
|
+
webClient: dataSet.options?.webClient,
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
return this.setDataIds([dataId]);
|
|
351
|
+
}
|
|
384
352
|
setDataIds(imageIds, options) {
|
|
385
353
|
if (options?.miniNavigationOverlay !== false) {
|
|
386
|
-
|
|
354
|
+
addWSIMiniNavigationOverlayCss();
|
|
387
355
|
}
|
|
388
356
|
const webClient = options?.webClient ||
|
|
389
357
|
metaData.get(MetadataModules.WADO_WEB_CLIENT, imageIds[0]);
|
|
@@ -396,56 +364,25 @@ class WSIViewport extends Viewport {
|
|
|
396
364
|
this.microscopyElement.style.background = 'black';
|
|
397
365
|
this.microscopyElement.innerText = 'Loading';
|
|
398
366
|
this.imageIds = imageIds;
|
|
399
|
-
|
|
400
|
-
const DicomMicroscopyViewer = await WSIViewport.getDicomMicroscopyViewer();
|
|
367
|
+
const DicomMicroscopyViewer = await getDicomMicroscopyViewer();
|
|
401
368
|
WSIUtilFunctions ||= DicomMicroscopyViewer.utils;
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
value: imageMetadata.isMultiframe,
|
|
407
|
-
enumerable: false,
|
|
408
|
-
});
|
|
409
|
-
Object.defineProperty(imageMetadata, 'frameNumber', {
|
|
410
|
-
value: undefined,
|
|
411
|
-
enumerable: false,
|
|
412
|
-
});
|
|
413
|
-
const imageType = imageMetadata['00080008']?.Value;
|
|
414
|
-
if (imageType?.length === 1) {
|
|
415
|
-
imageMetadata['00080008'].Value = imageType[0].split('\\');
|
|
416
|
-
}
|
|
417
|
-
const frameOfReference = imageMetadata['00200052']?.Value?.[0];
|
|
418
|
-
if (!this.frameOfReferenceUID) {
|
|
419
|
-
this.frameOfReferenceUID = frameOfReference;
|
|
420
|
-
}
|
|
421
|
-
else if (frameOfReference !== this.frameOfReferenceUID) {
|
|
422
|
-
imageMetadata['00200052'].Value = [this.frameOfReferenceUID];
|
|
423
|
-
}
|
|
424
|
-
return imageMetadata;
|
|
425
|
-
});
|
|
426
|
-
const volumeImages = [];
|
|
427
|
-
metadataDicomweb.forEach((m) => {
|
|
428
|
-
const image = new DicomMicroscopyViewer.metadata.VLWholeSlideMicroscopyImage({
|
|
429
|
-
metadata: m,
|
|
430
|
-
});
|
|
431
|
-
const imageFlavor = image.ImageType[2];
|
|
432
|
-
if (imageFlavor === 'VOLUME' || imageFlavor === 'THUMBNAIL') {
|
|
433
|
-
volumeImages.push(image);
|
|
434
|
-
}
|
|
435
|
-
else {
|
|
436
|
-
console.log('Unknown image type', image.ImageType);
|
|
437
|
-
}
|
|
369
|
+
const loadedData = await loadWSIData({
|
|
370
|
+
imageIds: this.imageIds,
|
|
371
|
+
client,
|
|
372
|
+
dicomMicroscopyViewer: DicomMicroscopyViewer,
|
|
438
373
|
});
|
|
439
|
-
this.
|
|
374
|
+
this.imageURISet = loadedData.imageURISet;
|
|
375
|
+
this.frameOfReferenceUID = loadedData.frameOfReferenceUID;
|
|
376
|
+
this.metadata = loadedData.metadata;
|
|
377
|
+
this.hasPixelSpacing = loadedData.metadata.hasPixelSpacing;
|
|
440
378
|
const viewer = new DicomMicroscopyViewer.viewer.VolumeImageViewer({
|
|
441
379
|
client,
|
|
442
|
-
metadata: volumeImages,
|
|
380
|
+
metadata: loadedData.volumeImages,
|
|
443
381
|
controls: ['overview', 'position'],
|
|
444
382
|
retrieveRendered: false,
|
|
445
383
|
bindings: {},
|
|
446
384
|
});
|
|
447
385
|
viewer.render({ container: this.microscopyElement });
|
|
448
|
-
this.metadata = this.getImageDataMetadata();
|
|
449
386
|
viewer.deactivateDragPanInteraction();
|
|
450
387
|
this.viewer = viewer;
|
|
451
388
|
this.map = viewer.getMap();
|
|
@@ -530,15 +467,5 @@ class WSIViewport extends Viewport {
|
|
|
530
467
|
getCurrentImageIdIndex() {
|
|
531
468
|
return 0;
|
|
532
469
|
}
|
|
533
|
-
static { this.overlayCssId = 'overlayCss'; }
|
|
534
|
-
static addMiniNavigationOverlayCss() {
|
|
535
|
-
if (document.getElementById(this.overlayCssId)) {
|
|
536
|
-
return;
|
|
537
|
-
}
|
|
538
|
-
const overlayCss = document.createElement('style');
|
|
539
|
-
overlayCss.innerText = microscopyViewportCss;
|
|
540
|
-
overlayCss.setAttribute('id', this.overlayCssId);
|
|
541
|
-
document.getElementsByTagName('head')[0].append(overlayCss);
|
|
542
|
-
}
|
|
543
470
|
}
|
|
544
471
|
export default WSIViewport;
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import isVolumeCompatible, {} from './supportsVolumeCompatibilityApi';
|
|
2
2
|
async function addVolumesToViewports(renderingEngine, volumeInputs, viewportIds, immediateRender = false, suppressEvents = false) {
|
|
3
|
+
const compatibleViewports = [];
|
|
3
4
|
for (const viewportId of viewportIds) {
|
|
4
5
|
const viewport = renderingEngine.getViewport(viewportId);
|
|
5
6
|
if (!viewport) {
|
|
6
7
|
throw new Error(`Viewport with Id ${viewportId} does not exist`);
|
|
7
8
|
}
|
|
8
|
-
if (!(viewport
|
|
9
|
-
console.warn(`Viewport with Id ${viewportId}
|
|
9
|
+
if (!isVolumeCompatible(viewport)) {
|
|
10
|
+
console.warn(`Viewport with Id ${viewportId} does not implement addVolumes. Cannot add volume to this viewport.`);
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
13
|
+
compatibleViewports.push(viewport);
|
|
12
14
|
}
|
|
13
|
-
|
|
14
|
-
const viewport = renderingEngine.getViewport(viewportId);
|
|
15
|
-
await viewport.addVolumes(volumeInputs, immediateRender, suppressEvents);
|
|
16
|
-
});
|
|
17
|
-
await Promise.all(addVolumePromises);
|
|
15
|
+
await Promise.all(compatibleViewports.map((viewport) => viewport.addVolumes(volumeInputs, immediateRender, suppressEvents)));
|
|
18
16
|
return;
|
|
19
17
|
}
|
|
20
18
|
export default addVolumesToViewports;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import type { CPUFallbackColormap, CPUFallbackColormapData } from '../../../../types';
|
|
1
|
+
import type { ColormapPublic, CPUFallbackColormap, CPUFallbackColormapData, VOIRange } from '../../../../types';
|
|
2
2
|
export declare function getColormapsList(): any[];
|
|
3
|
+
export declare function resolveCPUFallbackColormap(colormap?: string | ColormapPublic, fallbackColormap?: CPUFallbackColormap, options?: {
|
|
4
|
+
voiRange?: VOIRange;
|
|
5
|
+
}): CPUFallbackColormap | undefined;
|
|
3
6
|
export declare function getColormap(id: string, colormapData?: CPUFallbackColormapData): CPUFallbackColormap;
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import LookupTable from './lookupTable';
|
|
2
2
|
import CPU_COLORMAPS from '../../../../constants/cpuColormaps';
|
|
3
|
+
import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
|
|
4
|
+
import { resolveColormap as resolveSharedColormap } from '../../../../utilities/colormap';
|
|
3
5
|
const COLOR_TRANSPARENT = [0, 0, 0, 0];
|
|
6
|
+
const CPU_FALLBACK_COLOR_COUNT = 256;
|
|
7
|
+
const CPU_FALLBACK_GRAYSCALE_NAMES = new Set([
|
|
8
|
+
'gray',
|
|
9
|
+
'grey',
|
|
10
|
+
'grayscale',
|
|
11
|
+
'greyscale',
|
|
12
|
+
]);
|
|
13
|
+
function getCPUFallbackUnitValue(index) {
|
|
14
|
+
return index / CPU_FALLBACK_COLOR_COUNT;
|
|
15
|
+
}
|
|
16
|
+
function mapCPUFallbackColorIndex(index, colorCount) {
|
|
17
|
+
return Math.min(colorCount - 1, Math.floor(getCPUFallbackUnitValue(index) * colorCount));
|
|
18
|
+
}
|
|
4
19
|
function linspace(a, b, n) {
|
|
5
20
|
n = n === null ? 100 : n;
|
|
6
21
|
const increment = (b - a) / (n - 1);
|
|
@@ -109,6 +124,23 @@ export function getColormapsList() {
|
|
|
109
124
|
});
|
|
110
125
|
return colormaps;
|
|
111
126
|
}
|
|
127
|
+
export function resolveCPUFallbackColormap(colormap, fallbackColormap, options) {
|
|
128
|
+
const name = typeof colormap === 'string' ? colormap.trim() : colormap?.name?.trim();
|
|
129
|
+
if (!name) {
|
|
130
|
+
return fallbackColormap;
|
|
131
|
+
}
|
|
132
|
+
const normalizedName = name.toLowerCase();
|
|
133
|
+
if (CPU_FALLBACK_GRAYSCALE_NAMES.has(normalizedName)) {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
const registeredColormap = resolveSharedColormap(name);
|
|
137
|
+
if (registeredColormap) {
|
|
138
|
+
return resolveCPUFallbackOpacityMappedColormap(getOrCreateCPUFallbackColormap(registeredColormap, name), typeof colormap === 'string' ? undefined : colormap, options?.voiRange);
|
|
139
|
+
}
|
|
140
|
+
const colormapId = findCPUFallbackColormapId(name);
|
|
141
|
+
const resolvedBaseColormap = colormapId ? getColormap(colormapId) : undefined;
|
|
142
|
+
return resolveCPUFallbackOpacityMappedColormap(resolvedBaseColormap, typeof colormap === 'string' ? undefined : colormap, options?.voiRange);
|
|
143
|
+
}
|
|
112
144
|
export function getColormap(id, colormapData) {
|
|
113
145
|
let colormap = CPU_COLORMAPS[id];
|
|
114
146
|
if (!colormap) {
|
|
@@ -192,3 +224,128 @@ export function getColormap(id, colormapData) {
|
|
|
192
224
|
};
|
|
193
225
|
return cpuFallbackColormap;
|
|
194
226
|
}
|
|
227
|
+
function getOrCreateCPUFallbackColormap(colormap, originalName) {
|
|
228
|
+
const id = `vtk:${(colormap.name || colormap.Name || originalName)
|
|
229
|
+
.trim()
|
|
230
|
+
.toLowerCase()}`;
|
|
231
|
+
return getColormap(id, createCPUFallbackColormapData(colormap, originalName));
|
|
232
|
+
}
|
|
233
|
+
function createCPUFallbackColormapData(colormap, originalName) {
|
|
234
|
+
const transferFunction = vtkColorTransferFunction.newInstance();
|
|
235
|
+
transferFunction.applyColorMap(colormap);
|
|
236
|
+
const [lower, upper] = transferFunction.getRange();
|
|
237
|
+
const colors = Array.from({ length: CPU_FALLBACK_COLOR_COUNT }, (_unused, index) => {
|
|
238
|
+
const t = getCPUFallbackUnitValue(index);
|
|
239
|
+
const x = lower + t * (upper - lower);
|
|
240
|
+
const rgb = [];
|
|
241
|
+
transferFunction.getColor(x, rgb);
|
|
242
|
+
return [
|
|
243
|
+
Math.round(rgb[0] * 255),
|
|
244
|
+
Math.round(rgb[1] * 255),
|
|
245
|
+
Math.round(rgb[2] * 255),
|
|
246
|
+
255,
|
|
247
|
+
];
|
|
248
|
+
});
|
|
249
|
+
return {
|
|
250
|
+
colors,
|
|
251
|
+
name: colormap.Name || originalName,
|
|
252
|
+
numColors: colors.length,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
function findCPUFallbackColormapId(name) {
|
|
256
|
+
const normalizedName = name.trim().toLowerCase();
|
|
257
|
+
return Object.keys(CPU_COLORMAPS).find((id) => {
|
|
258
|
+
const colormap = CPU_COLORMAPS[id];
|
|
259
|
+
return (id.toLowerCase() === normalizedName ||
|
|
260
|
+
colormap.name?.trim().toLowerCase() === normalizedName);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
function resolveCPUFallbackOpacityMappedColormap(baseColormap, colormap, voiRange) {
|
|
264
|
+
if (!baseColormap) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
if (colormap?.opacity === undefined && colormap?.threshold === undefined) {
|
|
268
|
+
return baseColormap;
|
|
269
|
+
}
|
|
270
|
+
if (!voiRange || voiRange.upper <= voiRange.lower) {
|
|
271
|
+
return baseColormap;
|
|
272
|
+
}
|
|
273
|
+
const alphaMappedColors = createOpacityMappedColors(baseColormap, colormap, voiRange);
|
|
274
|
+
const id = [
|
|
275
|
+
baseColormap.getId(),
|
|
276
|
+
`lower:${roundColormapNumber(voiRange.lower)}`,
|
|
277
|
+
`upper:${roundColormapNumber(voiRange.upper)}`,
|
|
278
|
+
`opacity:${serializeColormapOpacity(colormap?.opacity)}`,
|
|
279
|
+
`threshold:${roundColormapNumber(colormap?.threshold)}`,
|
|
280
|
+
].join(':');
|
|
281
|
+
return getColormap(id, {
|
|
282
|
+
colors: alphaMappedColors,
|
|
283
|
+
name: baseColormap.getColorSchemeName(),
|
|
284
|
+
numColors: alphaMappedColors.length,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
function createOpacityMappedColors(baseColormap, colormap, voiRange) {
|
|
288
|
+
const numberOfColors = Math.max(baseColormap.getNumberOfColors(), 1);
|
|
289
|
+
return Array.from({ length: CPU_FALLBACK_COLOR_COUNT }, (_unused, index) => {
|
|
290
|
+
const sourceIndex = numberOfColors === 1
|
|
291
|
+
? 0
|
|
292
|
+
: mapCPUFallbackColorIndex(index, numberOfColors);
|
|
293
|
+
const rgba = baseColormap.getColor(sourceIndex);
|
|
294
|
+
const scalarValue = voiRange.lower +
|
|
295
|
+
(voiRange.upper - voiRange.lower) * getCPUFallbackUnitValue(index);
|
|
296
|
+
const opacity = resolveOpacityAtValue(scalarValue, colormap?.opacity, colormap?.threshold);
|
|
297
|
+
return [
|
|
298
|
+
rgba[0],
|
|
299
|
+
rgba[1],
|
|
300
|
+
rgba[2],
|
|
301
|
+
Math.round((rgba[3] / 255) * opacity * 255),
|
|
302
|
+
];
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
function resolveOpacityAtValue(scalarValue, opacity, threshold) {
|
|
306
|
+
if (threshold !== undefined && scalarValue < threshold) {
|
|
307
|
+
return 0;
|
|
308
|
+
}
|
|
309
|
+
if (opacity === undefined) {
|
|
310
|
+
return 1;
|
|
311
|
+
}
|
|
312
|
+
if (typeof opacity === 'number') {
|
|
313
|
+
return clampToUnit(opacity);
|
|
314
|
+
}
|
|
315
|
+
if (!opacity.length) {
|
|
316
|
+
return 1;
|
|
317
|
+
}
|
|
318
|
+
if (scalarValue <= opacity[0].value) {
|
|
319
|
+
return clampToUnit(opacity[0].opacity);
|
|
320
|
+
}
|
|
321
|
+
for (let i = 1; i < opacity.length; i++) {
|
|
322
|
+
const previous = opacity[i - 1];
|
|
323
|
+
const current = opacity[i];
|
|
324
|
+
if (scalarValue <= current.value) {
|
|
325
|
+
const range = current.value - previous.value;
|
|
326
|
+
const t = range > 0 ? (scalarValue - previous.value) / range : 0;
|
|
327
|
+
return clampToUnit(previous.opacity + (current.opacity - previous.opacity) * t);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return clampToUnit(opacity[opacity.length - 1].opacity);
|
|
331
|
+
}
|
|
332
|
+
function clampToUnit(value) {
|
|
333
|
+
return Math.max(0, Math.min(1, value));
|
|
334
|
+
}
|
|
335
|
+
function serializeColormapOpacity(opacity) {
|
|
336
|
+
if (opacity === undefined) {
|
|
337
|
+
return 'none';
|
|
338
|
+
}
|
|
339
|
+
if (typeof opacity === 'number') {
|
|
340
|
+
return String(roundColormapNumber(opacity));
|
|
341
|
+
}
|
|
342
|
+
return opacity
|
|
343
|
+
.map(({ opacity: alpha, value }) => `${roundColormapNumber(value)}-${roundColormapNumber(alpha)}`)
|
|
344
|
+
.join(',');
|
|
345
|
+
}
|
|
346
|
+
function roundColormapNumber(value) {
|
|
347
|
+
if (value === undefined) {
|
|
348
|
+
return 'none';
|
|
349
|
+
}
|
|
350
|
+
return String(Math.round(value * 1000) / 1000);
|
|
351
|
+
}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export { getColormap, getColormapsList, LookupTable };
|
|
1
|
+
export * from './colormap';
|
|
2
|
+
export { default as LookupTable } from './lookupTable';
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export { getColormap, getColormapsList, LookupTable };
|
|
1
|
+
export * from './colormap';
|
|
2
|
+
export { default as LookupTable } from './lookupTable';
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { Transform } from './transform';
|
|
2
|
+
function getViewportScale(scale) {
|
|
3
|
+
if (Array.isArray(scale)) {
|
|
4
|
+
return [scale[0] ?? 1, scale[1] ?? 1, true];
|
|
5
|
+
}
|
|
6
|
+
const scalarScale = scale ?? 1;
|
|
7
|
+
return [scalarScale, scalarScale, false];
|
|
8
|
+
}
|
|
2
9
|
export default function (enabledElement, scale) {
|
|
3
10
|
const transform = new Transform();
|
|
4
11
|
const aspectRatio = enabledElement.viewport.aspectRatio;
|
|
@@ -10,13 +17,16 @@ export default function (enabledElement, scale) {
|
|
|
10
17
|
if (angle !== 0) {
|
|
11
18
|
transform.rotate((angle * Math.PI) / 180);
|
|
12
19
|
}
|
|
13
|
-
|
|
14
|
-
let
|
|
20
|
+
const [viewportScaleX, viewportScaleY, hasExplicitAxisScale] = getViewportScale(enabledElement.viewport.scale);
|
|
21
|
+
let widthScale = viewportScaleX;
|
|
22
|
+
let heightScale = viewportScaleY;
|
|
15
23
|
const width = enabledElement.viewport.displayedArea.brhc.x -
|
|
16
24
|
(enabledElement.viewport.displayedArea.tlhc.x - 1);
|
|
17
25
|
const height = enabledElement.viewport.displayedArea.brhc.y -
|
|
18
26
|
(enabledElement.viewport.displayedArea.tlhc.y - 1);
|
|
19
|
-
if (
|
|
27
|
+
if (hasExplicitAxisScale) {
|
|
28
|
+
}
|
|
29
|
+
else if (enabledElement.viewport.displayedArea.presentationSizeMode === 'NONE') {
|
|
20
30
|
if (enabledElement.image.rowPixelSpacing <
|
|
21
31
|
enabledElement.image.columnPixelSpacing) {
|
|
22
32
|
widthScale *=
|
|
@@ -19,7 +19,12 @@ function getRenderCanvas(enabledElement, image, invalidated) {
|
|
|
19
19
|
console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');
|
|
20
20
|
}
|
|
21
21
|
if (colormap && typeof colormap === 'string') {
|
|
22
|
-
colormap = colors.
|
|
22
|
+
colormap = colors.resolveCPUFallbackColormap(colormap);
|
|
23
|
+
}
|
|
24
|
+
else if (colormap &&
|
|
25
|
+
typeof colormap === 'object' &&
|
|
26
|
+
typeof colormap.getId !== 'function') {
|
|
27
|
+
colormap = colors.resolveCPUFallbackColormap(colormap);
|
|
23
28
|
}
|
|
24
29
|
if (!colormap) {
|
|
25
30
|
throw new Error('renderPseudoColorImage: colormap not found.');
|
|
@@ -87,8 +92,13 @@ export function renderPseudoColorImage(enabledElement, invalidated) {
|
|
|
87
92
|
}
|
|
88
93
|
const context = enabledElement.canvas.getContext('2d');
|
|
89
94
|
context.setTransform(1, 0, 0, 1, 0, 0);
|
|
90
|
-
|
|
91
|
-
|
|
95
|
+
if (enabledElement.options?.transparentBackground) {
|
|
96
|
+
context.clearRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
context.fillStyle = 'black';
|
|
100
|
+
context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height);
|
|
101
|
+
}
|
|
92
102
|
context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;
|
|
93
103
|
setToPixelCoordinateSystem(enabledElement, context);
|
|
94
104
|
const renderCanvas = getRenderCanvas(enabledElement, image, invalidated);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import vtkPlane from '@kitware/vtk.js/Common/DataModel/Plane';
|
|
2
|
+
import type { ImageActor } from '../../types/IActor';
|
|
3
|
+
interface CreateVolumeSliceActorOptions {
|
|
4
|
+
volumeId: string;
|
|
5
|
+
callback?: ({ volumeActor, volumeId, }: {
|
|
6
|
+
volumeActor: ImageActor;
|
|
7
|
+
volumeId: string;
|
|
8
|
+
}) => void;
|
|
9
|
+
}
|
|
10
|
+
declare function createVolumeSliceActor(props: CreateVolumeSliceActorOptions, element: HTMLDivElement, viewportId: string, suppressEvents?: boolean): Promise<{
|
|
11
|
+
actor: ImageActor;
|
|
12
|
+
slicePlane: vtkPlane;
|
|
13
|
+
}>;
|
|
14
|
+
export default createVolumeSliceActor;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import vtkPlane from '@kitware/vtk.js/Common/DataModel/Plane';
|
|
2
|
+
import vtkImageSlice from '@kitware/vtk.js/Rendering/Core/ImageSlice';
|
|
3
|
+
import { vtkSharedImageResliceMapper } from '../vtkClasses';
|
|
4
|
+
import { loadVolume } from '../../loaders/volumeLoader';
|
|
5
|
+
import triggerEvent from '../../utilities/triggerEvent';
|
|
6
|
+
import { Events } from '../../enums';
|
|
7
|
+
import setDefaultVolumeVOI from './setDefaultVolumeVOI';
|
|
8
|
+
async function createVolumeSliceActor(props, element, viewportId, suppressEvents = false) {
|
|
9
|
+
const { volumeId, callback } = props;
|
|
10
|
+
const imageVolume = await loadVolume(volumeId);
|
|
11
|
+
if (!imageVolume) {
|
|
12
|
+
throw new Error(`imageVolume with id: ${volumeId} does not exist`);
|
|
13
|
+
}
|
|
14
|
+
const { imageData, vtkOpenGLTexture } = imageVolume;
|
|
15
|
+
const loadStatus = imageVolume.loadStatus;
|
|
16
|
+
const slicePlane = vtkPlane.newInstance();
|
|
17
|
+
const mapper = vtkSharedImageResliceMapper.newInstance();
|
|
18
|
+
if (!loadStatus || loadStatus.loaded) {
|
|
19
|
+
vtkOpenGLTexture.modified();
|
|
20
|
+
}
|
|
21
|
+
mapper.setInputData(imageData);
|
|
22
|
+
mapper.setSlicePlane(slicePlane);
|
|
23
|
+
mapper.setSlabThickness(0);
|
|
24
|
+
mapper.setScalarTexture?.(vtkOpenGLTexture);
|
|
25
|
+
mapper.modified();
|
|
26
|
+
const actor = vtkImageSlice.newInstance();
|
|
27
|
+
actor.setMapper(mapper);
|
|
28
|
+
const imageDataMetadata = imageData.get('numberOfComponents');
|
|
29
|
+
const numberOfComponents = imageDataMetadata?.numberOfComponents ?? 1;
|
|
30
|
+
if (numberOfComponents > 1) {
|
|
31
|
+
actor.getProperty().setIndependentComponents(false);
|
|
32
|
+
}
|
|
33
|
+
const imageProperty = actor.getProperty();
|
|
34
|
+
imageProperty.set({ viewportId }, true);
|
|
35
|
+
await setDefaultVolumeVOI(actor, imageVolume);
|
|
36
|
+
const defaultWindow = imageProperty.getColorWindow?.();
|
|
37
|
+
const defaultLevel = imageProperty.getColorLevel?.();
|
|
38
|
+
if (defaultWindow === 255 && defaultLevel === 127.5) {
|
|
39
|
+
const scalarRange = imageVolume.voxelManager?.getRange?.();
|
|
40
|
+
if (scalarRange?.length === 2) {
|
|
41
|
+
imageProperty.setColorWindow(scalarRange[1] - scalarRange[0]);
|
|
42
|
+
imageProperty.setColorLevel((scalarRange[1] + scalarRange[0]) / 2);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (callback) {
|
|
46
|
+
callback({ volumeActor: actor, volumeId });
|
|
47
|
+
}
|
|
48
|
+
if (!suppressEvents) {
|
|
49
|
+
triggerVOIModified(element, viewportId, actor, volumeId);
|
|
50
|
+
}
|
|
51
|
+
return { actor, slicePlane };
|
|
52
|
+
}
|
|
53
|
+
function triggerVOIModified(element, viewportId, actor, volumeId) {
|
|
54
|
+
const transferFunction = actor.getProperty().getRGBTransferFunction(0);
|
|
55
|
+
if (!transferFunction) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const voiRange = transferFunction.getRange();
|
|
59
|
+
const voiModifiedEventDetail = {
|
|
60
|
+
viewportId,
|
|
61
|
+
range: {
|
|
62
|
+
lower: voiRange[0],
|
|
63
|
+
upper: voiRange[1],
|
|
64
|
+
},
|
|
65
|
+
volumeId,
|
|
66
|
+
};
|
|
67
|
+
triggerEvent(element, Events.VOI_MODIFIED, voiModifiedEventDetail);
|
|
68
|
+
}
|
|
69
|
+
export default createVolumeSliceActor;
|
|
@@ -6,12 +6,13 @@ export interface CameraPositionConfig {
|
|
|
6
6
|
orientation?: Enums.OrientationAxis;
|
|
7
7
|
useViewportNormal?: boolean;
|
|
8
8
|
}
|
|
9
|
+
export type CameraVectorViewport = Pick<Types.IBaseVolumeViewport, 'getActors' | 'getCamera' | 'getCurrentImageId' | 'getImageIds' | 'type'>;
|
|
9
10
|
export declare function calculateCameraPosition(rowCosineVec: vec3, colCosineVec: vec3, scanAxisNormal: vec3, orientation: Enums.OrientationAxis): {
|
|
10
11
|
viewPlaneNormal: [number, number, number];
|
|
11
12
|
viewUp: [number, number, number];
|
|
12
13
|
viewRight: [number, number, number];
|
|
13
14
|
};
|
|
14
|
-
export declare function getCameraVectors(viewport:
|
|
15
|
+
export declare function getCameraVectors(viewport: CameraVectorViewport, config?: CameraPositionConfig): {
|
|
15
16
|
viewPlaneNormal: [number, number, number];
|
|
16
17
|
viewUp: [number, number, number];
|
|
17
18
|
viewRight: [number, number, number];
|
|
@@ -103,7 +103,7 @@ export function getCameraVectors(viewport, config) {
|
|
|
103
103
|
if (!imageId) {
|
|
104
104
|
return;
|
|
105
105
|
}
|
|
106
|
-
const { imageOrientationPatient } = metaData.get(
|
|
106
|
+
const { imageOrientationPatient } = metaData.get(Enums.MetadataModules.IMAGE_PLANE, imageId);
|
|
107
107
|
const rowCosineVec = vec3.fromValues(imageOrientationPatient[0], imageOrientationPatient[1], imageOrientationPatient[2]);
|
|
108
108
|
const colCosineVec = vec3.fromValues(imageOrientationPatient[3], imageOrientationPatient[4], imageOrientationPatient[5]);
|
|
109
109
|
const scanAxisNormal = vec3.cross(vec3.create(), rowCosineVec, colCosineVec);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
|
|
2
|
+
import type vtkImageSlice from '@kitware/vtk.js/Rendering/Core/ImageSlice';
|
|
3
|
+
import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
|
|
4
|
+
import type vtkRenderer from '@kitware/vtk.js/Rendering/Core/Renderer';
|
|
5
|
+
import { InterpolationType } from '../../enums';
|
|
6
|
+
import type { ColormapPublic, IImage, Point3, VOIRange } from '../../types';
|
|
7
|
+
export interface PlanarCameraState {
|
|
8
|
+
focalPoint: Point3;
|
|
9
|
+
parallelScale: number;
|
|
10
|
+
position: Point3;
|
|
11
|
+
viewPlaneNormal: Point3;
|
|
12
|
+
viewUp: Point3;
|
|
13
|
+
}
|
|
14
|
+
export interface PlanarImagePresentation {
|
|
15
|
+
visible?: boolean;
|
|
16
|
+
opacity?: number;
|
|
17
|
+
interpolationType?: InterpolationType;
|
|
18
|
+
colormap?: ColormapPublic;
|
|
19
|
+
voiRange?: VOIRange;
|
|
20
|
+
invert?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface PlanarImageViewState {
|
|
23
|
+
zoom?: number;
|
|
24
|
+
pan?: [number, number];
|
|
25
|
+
}
|
|
26
|
+
export declare function createEmptyVTKImageData(args: {
|
|
27
|
+
dimensions: Point3;
|
|
28
|
+
direction: number[] | ArrayLike<number>;
|
|
29
|
+
numberOfComponents: number;
|
|
30
|
+
origin: Point3;
|
|
31
|
+
pixelArray: ArrayLike<number>;
|
|
32
|
+
spacing: Point3;
|
|
33
|
+
}): vtkImageData;
|
|
34
|
+
export declare function createVTKImageDataFromImage(image: IImage): vtkImageData;
|
|
35
|
+
export declare function getDefaultImageVOIRange(image: IImage): VOIRange | undefined;
|
|
36
|
+
export declare function getPlanarCameraState(renderer: vtkRenderer): PlanarCameraState;
|
|
37
|
+
export declare function applyPlanarImagePresentation(args: {
|
|
38
|
+
actor: vtkImageSlice;
|
|
39
|
+
defaultVOIRange?: VOIRange;
|
|
40
|
+
props?: PlanarImagePresentation;
|
|
41
|
+
}): void;
|
|
42
|
+
export declare function createPlanarRGBTransferFunction(args: {
|
|
43
|
+
colormap?: ColormapPublic;
|
|
44
|
+
invert?: boolean;
|
|
45
|
+
voiRange: VOIRange;
|
|
46
|
+
}): vtkColorTransferFunction;
|
|
47
|
+
export declare function applyPlanarCameraViewState(args: {
|
|
48
|
+
initialCamera: PlanarCameraState;
|
|
49
|
+
renderer: vtkRenderer;
|
|
50
|
+
viewState?: PlanarImageViewState;
|
|
51
|
+
}): void;
|