@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
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ActorEntry, IImage, IStackInput } from '../../../types';
|
|
2
|
+
import type { IViewport } from '../../../types/IViewport';
|
|
3
|
+
export declare function createPlanarImageOverlayActorEntry(image: IImage, stackInput: IStackInput): ActorEntry;
|
|
4
|
+
export declare function createPlanarCpuImageOverlayActorEntry(viewport: IViewport, image: IImage, stackInput: IStackInput): ActorEntry;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import vtkImageMapper from '@kitware/vtk.js/Rendering/Core/ImageMapper';
|
|
2
|
+
import vtkImageSlice from '@kitware/vtk.js/Rendering/Core/ImageSlice';
|
|
3
|
+
import CanvasActor from '../../CanvasActor';
|
|
4
|
+
import { ActorRenderMode } from '../../../types';
|
|
5
|
+
import uuidv4 from '../../../utilities/uuidv4';
|
|
6
|
+
import { createVTKImageDataFromImage } from '../../helpers/planarImageRendering';
|
|
7
|
+
export function createPlanarImageOverlayActorEntry(image, stackInput) {
|
|
8
|
+
const mapper = vtkImageMapper.newInstance();
|
|
9
|
+
const actor = vtkImageSlice.newInstance();
|
|
10
|
+
const imageData = createVTKImageDataFromImage(image);
|
|
11
|
+
mapper.setInputData(imageData);
|
|
12
|
+
actor.setMapper(mapper);
|
|
13
|
+
if (typeof stackInput.visibility === 'boolean') {
|
|
14
|
+
actor.setVisibility(stackInput.visibility);
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
uid: uuidv4(),
|
|
18
|
+
actor,
|
|
19
|
+
actorMapper: {
|
|
20
|
+
actor,
|
|
21
|
+
mapper,
|
|
22
|
+
renderMode: ActorRenderMode.VTK_IMAGE,
|
|
23
|
+
},
|
|
24
|
+
referencedId: image.imageId,
|
|
25
|
+
...stackInput,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function createPlanarCpuImageOverlayActorEntry(viewport, image, stackInput) {
|
|
29
|
+
const actor = new CanvasActor(viewport, image);
|
|
30
|
+
actor.setVisibility(typeof stackInput.visibility === 'boolean' ? stackInput.visibility : true);
|
|
31
|
+
return {
|
|
32
|
+
uid: uuidv4(),
|
|
33
|
+
actor,
|
|
34
|
+
actorMapper: {
|
|
35
|
+
actor,
|
|
36
|
+
mapper: actor.getMapper(),
|
|
37
|
+
renderMode: ActorRenderMode.CPU_IMAGE,
|
|
38
|
+
},
|
|
39
|
+
referencedId: image.imageId,
|
|
40
|
+
...stackInput,
|
|
41
|
+
};
|
|
42
|
+
}
|
package/dist/esm/RenderingEngine/GenericViewport/Planar/planarAdapterCoordinateTransforms.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export { canvasToWorldContextPool, worldToCanvasContextPool, } from '../../helpers/vtkCanvasCoordinateTransforms';
|
|
2
|
+
import type { CPUFallbackEnabledElement, ICamera, IImage, Point2, Point3 } from '../../../types';
|
|
3
|
+
import { type PlanarScaleInput } from './planarCameraScale';
|
|
4
|
+
type PlanarResolvedView = Pick<Required<ICamera>, 'focalPoint' | 'parallelScale' | 'viewPlaneNormal' | 'viewUp'> & {
|
|
5
|
+
presentationScale?: PlanarScaleInput;
|
|
6
|
+
};
|
|
7
|
+
export declare function canvasToWorldPlanarViewState(args: {
|
|
8
|
+
camera: PlanarResolvedView;
|
|
9
|
+
canvasWidth: number;
|
|
10
|
+
canvasHeight: number;
|
|
11
|
+
canvasPos: Point2;
|
|
12
|
+
}): Point3;
|
|
13
|
+
export declare function worldToCanvasPlanarViewState(args: {
|
|
14
|
+
camera: PlanarResolvedView;
|
|
15
|
+
canvasWidth: number;
|
|
16
|
+
canvasHeight: number;
|
|
17
|
+
worldPos: Point3;
|
|
18
|
+
}): Point2;
|
|
19
|
+
export declare function getCanvasCssDimensions(canvas: HTMLCanvasElement): {
|
|
20
|
+
canvasWidth: number;
|
|
21
|
+
canvasHeight: number;
|
|
22
|
+
};
|
|
23
|
+
export declare function canvasToWorldCPUImage(enabledElement: CPUFallbackEnabledElement, image: IImage, canvasPos: Point2): Point3;
|
|
24
|
+
export declare function worldToCanvasCPUImage(enabledElement: CPUFallbackEnabledElement, image: IImage, worldPos: Point3): Point2;
|
|
25
|
+
export declare function getCpuEquivalentParallelScale(args: {
|
|
26
|
+
canvasHeight: number;
|
|
27
|
+
canvasWidth: number;
|
|
28
|
+
columnPixelSpacing: number;
|
|
29
|
+
columns: number;
|
|
30
|
+
rowPixelSpacing: number;
|
|
31
|
+
rows: number;
|
|
32
|
+
}): number;
|
|
33
|
+
export declare function getOrthogonalVolumeSliceGeometry(args: {
|
|
34
|
+
dimensions: Point3;
|
|
35
|
+
direction: number[] | ArrayLike<number>;
|
|
36
|
+
spacing: Point3;
|
|
37
|
+
viewPlaneNormal: Point3;
|
|
38
|
+
viewUp: Point3;
|
|
39
|
+
}): {
|
|
40
|
+
columnPixelSpacing: number;
|
|
41
|
+
columns: number;
|
|
42
|
+
rowPixelSpacing: number;
|
|
43
|
+
rows: number;
|
|
44
|
+
} | undefined;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { vec3 } from 'gl-matrix';
|
|
2
|
+
import canvasToPixel from '../../helpers/cpuFallback/rendering/canvasToPixel';
|
|
3
|
+
import pixelToCanvas from '../../helpers/cpuFallback/rendering/pixelToCanvas';
|
|
4
|
+
export { canvasToWorldContextPool, worldToCanvasContextPool, } from '../../helpers/vtkCanvasCoordinateTransforms';
|
|
5
|
+
import { getImageDataMetadata } from '../../../utilities/getImageDataMetadata';
|
|
6
|
+
import { getPlanarScaleRatio, } from './planarCameraScale';
|
|
7
|
+
function getPlanarViewStateBasis(camera) {
|
|
8
|
+
const viewUp = vec3.normalize(vec3.create(), camera.viewUp);
|
|
9
|
+
const viewPlaneNormal = vec3.normalize(vec3.create(), camera.viewPlaneNormal);
|
|
10
|
+
let right = vec3.cross(vec3.create(), viewUp, viewPlaneNormal);
|
|
11
|
+
if (!vec3.length(right)) {
|
|
12
|
+
right = vec3.fromValues(1, 0, 0);
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
right: vec3.normalize(vec3.create(), right),
|
|
16
|
+
viewPlaneNormal,
|
|
17
|
+
viewUp,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function canvasToWorldPlanarViewState(args) {
|
|
21
|
+
const { camera, canvasWidth, canvasHeight, canvasPos } = args;
|
|
22
|
+
const safeCanvasWidth = Math.max(canvasWidth, 1);
|
|
23
|
+
const safeCanvasHeight = Math.max(canvasHeight, 1);
|
|
24
|
+
const { right, viewUp } = getPlanarViewStateBasis(camera);
|
|
25
|
+
const worldHeight = Math.max(camera.parallelScale, 0.001) * 2;
|
|
26
|
+
const worldWidth = worldHeight *
|
|
27
|
+
(safeCanvasWidth / safeCanvasHeight) *
|
|
28
|
+
(1 / getPlanarScaleRatio(camera.presentationScale));
|
|
29
|
+
const xOffset = (canvasPos[0] / safeCanvasWidth - 0.5) * worldWidth;
|
|
30
|
+
const yOffset = (0.5 - canvasPos[1] / safeCanvasHeight) * worldHeight;
|
|
31
|
+
const worldPos = [...camera.focalPoint];
|
|
32
|
+
vec3.scaleAndAdd(worldPos, worldPos, right, xOffset);
|
|
33
|
+
vec3.scaleAndAdd(worldPos, worldPos, viewUp, yOffset);
|
|
34
|
+
return worldPos;
|
|
35
|
+
}
|
|
36
|
+
export function worldToCanvasPlanarViewState(args) {
|
|
37
|
+
const { camera, canvasWidth, canvasHeight, worldPos } = args;
|
|
38
|
+
const safeCanvasWidth = Math.max(canvasWidth, 1);
|
|
39
|
+
const safeCanvasHeight = Math.max(canvasHeight, 1);
|
|
40
|
+
const { right, viewUp } = getPlanarViewStateBasis(camera);
|
|
41
|
+
const worldHeight = Math.max(camera.parallelScale, 0.001) * 2;
|
|
42
|
+
const worldWidth = worldHeight *
|
|
43
|
+
(safeCanvasWidth / safeCanvasHeight) *
|
|
44
|
+
(1 / getPlanarScaleRatio(camera.presentationScale));
|
|
45
|
+
const delta = vec3.subtract(vec3.create(), worldPos, camera.focalPoint);
|
|
46
|
+
const xOffset = vec3.dot(delta, right);
|
|
47
|
+
const yOffset = vec3.dot(delta, viewUp);
|
|
48
|
+
return [
|
|
49
|
+
(xOffset / worldWidth + 0.5) * safeCanvasWidth,
|
|
50
|
+
(0.5 - yOffset / worldHeight) * safeCanvasHeight,
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
export function getCanvasCssDimensions(canvas) {
|
|
54
|
+
const devicePixelRatio = typeof window === 'undefined' ? 1 : window.devicePixelRatio || 1;
|
|
55
|
+
return {
|
|
56
|
+
canvasWidth: canvas.width / devicePixelRatio,
|
|
57
|
+
canvasHeight: canvas.height / devicePixelRatio,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function getDisplayedAreaSource(enabledElement) {
|
|
61
|
+
const displayedArea = enabledElement.viewport.displayedArea;
|
|
62
|
+
return [(displayedArea?.tlhc.x ?? 1) - 1, (displayedArea?.tlhc.y ?? 1) - 1];
|
|
63
|
+
}
|
|
64
|
+
export function canvasToWorldCPUImage(enabledElement, image, canvasPos) {
|
|
65
|
+
const [px, py] = canvasToPixel(enabledElement, canvasPos);
|
|
66
|
+
const { origin, spacing, direction } = getImageDataMetadata(image);
|
|
67
|
+
const [sourceX, sourceY] = getDisplayedAreaSource(enabledElement);
|
|
68
|
+
const iVector = direction.slice(0, 3);
|
|
69
|
+
const jVector = direction.slice(3, 6);
|
|
70
|
+
const worldPos = [...origin];
|
|
71
|
+
const imageX = px + sourceX - 0.5;
|
|
72
|
+
const imageY = py + sourceY - 0.5;
|
|
73
|
+
vec3.scaleAndAdd(worldPos, origin, iVector, imageX * spacing[0]);
|
|
74
|
+
vec3.scaleAndAdd(worldPos, worldPos, jVector, imageY * spacing[1]);
|
|
75
|
+
return worldPos;
|
|
76
|
+
}
|
|
77
|
+
export function worldToCanvasCPUImage(enabledElement, image, worldPos) {
|
|
78
|
+
const { spacing, direction, origin } = getImageDataMetadata(image);
|
|
79
|
+
const iVector = direction.slice(0, 3);
|
|
80
|
+
const jVector = direction.slice(3, 6);
|
|
81
|
+
const [sourceX, sourceY] = getDisplayedAreaSource(enabledElement);
|
|
82
|
+
const diff = vec3.subtract(vec3.create(), worldPos, origin);
|
|
83
|
+
const indexPoint = [
|
|
84
|
+
vec3.dot(diff, iVector) / spacing[0] + 0.5 - sourceX,
|
|
85
|
+
vec3.dot(diff, jVector) / spacing[1] + 0.5 - sourceY,
|
|
86
|
+
];
|
|
87
|
+
return pixelToCanvas(enabledElement, indexPoint);
|
|
88
|
+
}
|
|
89
|
+
export function getCpuEquivalentParallelScale(args) {
|
|
90
|
+
const { canvasHeight, canvasWidth, columnPixelSpacing, columns, rowPixelSpacing, rows, } = args;
|
|
91
|
+
const safeHeight = Math.max(canvasHeight, 1);
|
|
92
|
+
const safeWidth = Math.max(canvasWidth, 1);
|
|
93
|
+
const physicalHeight = Math.max(rows, 1) * (rowPixelSpacing || 1);
|
|
94
|
+
const physicalWidth = Math.max(columns, 1) * (columnPixelSpacing || 1);
|
|
95
|
+
const aspectRatio = safeWidth / safeHeight;
|
|
96
|
+
return Math.max(physicalHeight, physicalWidth / aspectRatio) * 0.5;
|
|
97
|
+
}
|
|
98
|
+
export function getOrthogonalVolumeSliceGeometry(args) {
|
|
99
|
+
const { dimensions, direction, spacing, viewPlaneNormal, viewUp } = args;
|
|
100
|
+
const directionArray = Array.from(direction);
|
|
101
|
+
const rowAxis = directionArray.slice(0, 3);
|
|
102
|
+
const colAxis = directionArray.slice(3, 6);
|
|
103
|
+
const scanAxis = directionArray.slice(6, 9);
|
|
104
|
+
const normalizedViewUp = vec3.normalize(vec3.create(), viewUp);
|
|
105
|
+
const normalizedViewPlaneNormal = vec3.normalize(vec3.create(), viewPlaneNormal);
|
|
106
|
+
const right = vec3.normalize(vec3.create(), vec3.cross(vec3.create(), normalizedViewUp, normalizedViewPlaneNormal));
|
|
107
|
+
const basis = [rowAxis, colAxis, scanAxis];
|
|
108
|
+
const columnAxisIndex = getMajorAxisIndex(right, basis);
|
|
109
|
+
const rowAxisIndex = getMajorAxisIndex(vec3.negate(vec3.create(), normalizedViewUp), basis);
|
|
110
|
+
if (columnAxisIndex === undefined ||
|
|
111
|
+
rowAxisIndex === undefined ||
|
|
112
|
+
columnAxisIndex === rowAxisIndex) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
columns: dimensions[columnAxisIndex],
|
|
117
|
+
rows: dimensions[rowAxisIndex],
|
|
118
|
+
columnPixelSpacing: spacing[columnAxisIndex],
|
|
119
|
+
rowPixelSpacing: spacing[rowAxisIndex],
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function getMajorAxisIndex(vector, basis) {
|
|
123
|
+
const scores = basis.map((axis) => Math.abs(vec3.dot(vector, axis)));
|
|
124
|
+
const maxScore = Math.max(...scores);
|
|
125
|
+
if (maxScore < 0.995) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
return scores.indexOf(maxScore);
|
|
129
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IImageVolume, Point3 } from '../../../types';
|
|
2
|
+
export type IndexMajorAxis = {
|
|
3
|
+
axis: 0 | 1 | 2;
|
|
4
|
+
sign: 1 | -1;
|
|
5
|
+
};
|
|
6
|
+
export declare const SOURCE_SLICE_INDEX_TOLERANCE = 0.0001;
|
|
7
|
+
export declare const NEAREST_VOXEL_TIE_EPSILON = 0.000001;
|
|
8
|
+
export declare function getIndexMajorAxis(volume: IImageVolume, worldVector: Point3, majorThreshold?: number): IndexMajorAxis | undefined;
|
|
9
|
+
export declare function getSpatiallyClampedContinuousCoordinate(dimension: number, value: number): number | undefined;
|
|
10
|
+
export declare function getNearestVoxelIndex(continuousIndex: number): number;
|
|
11
|
+
export declare function getSpatiallyClampedContinuousIndex(dimensions: Point3, continuousIndex: Point3): Point3 | undefined;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { vec3 } from 'gl-matrix';
|
|
2
|
+
export const SOURCE_SLICE_INDEX_TOLERANCE = 1e-4;
|
|
3
|
+
export const NEAREST_VOXEL_TIE_EPSILON = 1e-6;
|
|
4
|
+
function dot(a, b) {
|
|
5
|
+
return vec3.dot(a, b);
|
|
6
|
+
}
|
|
7
|
+
export function getIndexMajorAxis(volume, worldVector, majorThreshold = 0.995) {
|
|
8
|
+
const row = volume.direction.slice(0, 3);
|
|
9
|
+
const col = volume.direction.slice(3, 6);
|
|
10
|
+
const scan = volume.direction.slice(6, 9);
|
|
11
|
+
const components = [
|
|
12
|
+
dot(worldVector, row),
|
|
13
|
+
dot(worldVector, col),
|
|
14
|
+
dot(worldVector, scan),
|
|
15
|
+
];
|
|
16
|
+
const absComponents = components.map((value) => Math.abs(value));
|
|
17
|
+
const maxValue = Math.max(...absComponents);
|
|
18
|
+
const axis = absComponents.indexOf(maxValue);
|
|
19
|
+
if (maxValue < majorThreshold) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const secondary = absComponents
|
|
23
|
+
.filter((_value, index) => index !== axis)
|
|
24
|
+
.some((value) => value > 1 - majorThreshold);
|
|
25
|
+
if (secondary) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
axis,
|
|
30
|
+
sign: components[axis] >= 0 ? 1 : -1,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function getSpatiallyClampedContinuousCoordinate(dimension, value) {
|
|
34
|
+
const upperBound = dimension - 0.5;
|
|
35
|
+
if (value < -0.5 - SOURCE_SLICE_INDEX_TOLERANCE ||
|
|
36
|
+
value > upperBound + SOURCE_SLICE_INDEX_TOLERANCE) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
return Math.min(dimension - 1, Math.max(0, value));
|
|
40
|
+
}
|
|
41
|
+
export function getNearestVoxelIndex(continuousIndex) {
|
|
42
|
+
return Math.floor(continuousIndex + 0.5 - NEAREST_VOXEL_TIE_EPSILON);
|
|
43
|
+
}
|
|
44
|
+
export function getSpatiallyClampedContinuousIndex(dimensions, continuousIndex) {
|
|
45
|
+
const clampedIndex = [0, 0, 0];
|
|
46
|
+
for (let axis = 0; axis < 3; axis++) {
|
|
47
|
+
const clampedCoordinate = getSpatiallyClampedContinuousCoordinate(dimensions[axis], continuousIndex[axis]);
|
|
48
|
+
if (clampedCoordinate === undefined) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
clampedIndex[axis] = clampedCoordinate;
|
|
52
|
+
}
|
|
53
|
+
return clampedIndex;
|
|
54
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Point2 } from '../../../types';
|
|
2
|
+
import type { CameraScaleMode } from '../ViewportCameraTypes';
|
|
3
|
+
export type PlanarScaleInput = number | Point2;
|
|
4
|
+
export type PlanarScale = Point2;
|
|
5
|
+
export declare const MIN_PLANAR_SCALE = 0.001;
|
|
6
|
+
export declare function normalizePlanarScale(scale?: PlanarScaleInput): PlanarScale;
|
|
7
|
+
export declare function clonePlanarScale(scale?: PlanarScaleInput): PlanarScale;
|
|
8
|
+
export declare function getPlanarScaleZoom(scale?: PlanarScaleInput): number;
|
|
9
|
+
export declare function normalizePlanarScaleMode(scaleMode?: string): CameraScaleMode;
|
|
10
|
+
export declare function getPlanarScaleRatio(scale?: PlanarScaleInput): number;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const MIN_PLANAR_SCALE = 0.001;
|
|
2
|
+
const PLANAR_SCALE_MODES = new Set([
|
|
3
|
+
'fit',
|
|
4
|
+
'fitAspect',
|
|
5
|
+
'fitWidth',
|
|
6
|
+
'fitHeight',
|
|
7
|
+
'absolute',
|
|
8
|
+
]);
|
|
9
|
+
function normalizeScaleValue(value) {
|
|
10
|
+
return typeof value === 'number' && Number.isFinite(value)
|
|
11
|
+
? Math.max(value, MIN_PLANAR_SCALE)
|
|
12
|
+
: 1;
|
|
13
|
+
}
|
|
14
|
+
export function normalizePlanarScale(scale) {
|
|
15
|
+
if (Array.isArray(scale)) {
|
|
16
|
+
return [normalizeScaleValue(scale[0]), normalizeScaleValue(scale[1])];
|
|
17
|
+
}
|
|
18
|
+
const scalarScale = normalizeScaleValue(scale);
|
|
19
|
+
return [scalarScale, scalarScale];
|
|
20
|
+
}
|
|
21
|
+
export function clonePlanarScale(scale) {
|
|
22
|
+
return normalizePlanarScale(scale);
|
|
23
|
+
}
|
|
24
|
+
export function getPlanarScaleZoom(scale) {
|
|
25
|
+
return normalizePlanarScale(scale)[1];
|
|
26
|
+
}
|
|
27
|
+
export function normalizePlanarScaleMode(scaleMode) {
|
|
28
|
+
return PLANAR_SCALE_MODES.has(scaleMode || '')
|
|
29
|
+
? scaleMode
|
|
30
|
+
: 'fit';
|
|
31
|
+
}
|
|
32
|
+
export function getPlanarScaleRatio(scale) {
|
|
33
|
+
const [scaleX, scaleY] = normalizePlanarScale(scale);
|
|
34
|
+
return scaleX / scaleY;
|
|
35
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CPUFallbackEnabledElement, CPUIImageData, Point2, Point3 } from '../../../types';
|
|
2
|
+
export declare function canvasToWorldPlanarCpuImage(enabledElement: CPUFallbackEnabledElement, imageData: CPUIImageData, canvasPos: Point2, worldPos?: Point3): Point3;
|
|
3
|
+
export declare function worldToCanvasPlanarCpuImage(enabledElement: CPUFallbackEnabledElement, imageData: CPUIImageData, worldPos: Point3): Point2;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { vec3 } from 'gl-matrix';
|
|
2
|
+
import canvasToPixel from '../../helpers/cpuFallback/rendering/canvasToPixel';
|
|
3
|
+
import pixelToCanvas from '../../helpers/cpuFallback/rendering/pixelToCanvas';
|
|
4
|
+
function getDisplayedAreaSource(enabledElement) {
|
|
5
|
+
const displayedArea = enabledElement.viewport.displayedArea;
|
|
6
|
+
return [(displayedArea?.tlhc.x ?? 1) - 1, (displayedArea?.tlhc.y ?? 1) - 1];
|
|
7
|
+
}
|
|
8
|
+
export function canvasToWorldPlanarCpuImage(enabledElement, imageData, canvasPos, worldPos = [0, 0, 0]) {
|
|
9
|
+
const image = enabledElement.image;
|
|
10
|
+
if (!image) {
|
|
11
|
+
return worldPos;
|
|
12
|
+
}
|
|
13
|
+
const [px, py] = canvasToPixel(enabledElement, canvasPos);
|
|
14
|
+
const { origin, spacing, direction } = imageData;
|
|
15
|
+
const [sourceX, sourceY] = getDisplayedAreaSource(enabledElement);
|
|
16
|
+
const iVector = direction.slice(0, 3);
|
|
17
|
+
const jVector = direction.slice(3, 6);
|
|
18
|
+
const imageX = px + sourceX - 0.5;
|
|
19
|
+
const imageY = py + sourceY - 0.5;
|
|
20
|
+
vec3.scaleAndAdd(worldPos, origin, iVector, imageX * spacing[0]);
|
|
21
|
+
vec3.scaleAndAdd(worldPos, worldPos, jVector, imageY * spacing[1]);
|
|
22
|
+
return worldPos;
|
|
23
|
+
}
|
|
24
|
+
export function worldToCanvasPlanarCpuImage(enabledElement, imageData, worldPos) {
|
|
25
|
+
const { origin, spacing, direction } = imageData;
|
|
26
|
+
const iVector = direction.slice(0, 3);
|
|
27
|
+
const jVector = direction.slice(3, 6);
|
|
28
|
+
const [sourceX, sourceY] = getDisplayedAreaSource(enabledElement);
|
|
29
|
+
const diff = vec3.subtract(vec3.create(), worldPos, origin);
|
|
30
|
+
const indexPoint = [
|
|
31
|
+
vec3.dot(diff, iVector) / spacing[0] + 0.5 - sourceX,
|
|
32
|
+
vec3.dot(diff, jVector) / spacing[1] + 0.5 - sourceY,
|
|
33
|
+
];
|
|
34
|
+
return pixelToCanvas(enabledElement, indexPoint);
|
|
35
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CPUFallbackViewport, IImage, Point2 } from '../../../types';
|
|
2
|
+
import { type PlanarScaleInput } from './planarCameraScale';
|
|
3
|
+
export declare function resolvePlanarCpuImageDisplayedArea(image: IImage): CPUFallbackViewport['displayedArea'];
|
|
4
|
+
export declare function resolvePlanarCpuViewportScale(args: {
|
|
5
|
+
canvas: HTMLCanvasElement;
|
|
6
|
+
parallelScale?: number;
|
|
7
|
+
rowPixelSpacing: number;
|
|
8
|
+
columnPixelSpacing: number;
|
|
9
|
+
presentationScale?: PlanarScaleInput;
|
|
10
|
+
}): number | Point2;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getPlanarScaleRatio, } from './planarCameraScale';
|
|
2
|
+
const EPSILON = 1e-6;
|
|
3
|
+
export function resolvePlanarCpuImageDisplayedArea(image) {
|
|
4
|
+
return {
|
|
5
|
+
tlhc: {
|
|
6
|
+
x: 1,
|
|
7
|
+
y: 1,
|
|
8
|
+
},
|
|
9
|
+
brhc: {
|
|
10
|
+
x: Math.max(image.columns, 1),
|
|
11
|
+
y: Math.max(image.rows, 1),
|
|
12
|
+
},
|
|
13
|
+
rowPixelSpacing: image.rowPixelSpacing ?? 1,
|
|
14
|
+
columnPixelSpacing: image.columnPixelSpacing ?? 1,
|
|
15
|
+
presentationSizeMode: 'NONE',
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function resolvePlanarCpuViewportScale(args) {
|
|
19
|
+
const { canvas, columnPixelSpacing, parallelScale, presentationScale, rowPixelSpacing, } = args;
|
|
20
|
+
const worldHeight = Math.max((parallelScale ?? 1) * 2, EPSILON);
|
|
21
|
+
const worldToCanvasScale = canvas.height / worldHeight;
|
|
22
|
+
const scaleRatio = getPlanarScaleRatio(presentationScale);
|
|
23
|
+
if (Math.abs(scaleRatio - 1) > EPSILON) {
|
|
24
|
+
const safeCanvasHeight = Math.max(canvas.height, 1);
|
|
25
|
+
const safeCanvasWidth = Math.max(canvas.width, 1);
|
|
26
|
+
const worldWidth = worldHeight * (safeCanvasWidth / safeCanvasHeight) * (1 / scaleRatio);
|
|
27
|
+
return [
|
|
28
|
+
Math.max((safeCanvasWidth * (columnPixelSpacing || 1)) /
|
|
29
|
+
Math.max(worldWidth, EPSILON), EPSILON),
|
|
30
|
+
Math.max((safeCanvasHeight * (rowPixelSpacing || 1)) / worldHeight, EPSILON),
|
|
31
|
+
];
|
|
32
|
+
}
|
|
33
|
+
return Math.max(Math.min(rowPixelSpacing || 1, columnPixelSpacing || 1) *
|
|
34
|
+
worldToCanvasScale, EPSILON);
|
|
35
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { IImage } from '../../../types';
|
|
2
|
+
import type { PlanarViewState } from './PlanarViewportTypes';
|
|
3
|
+
interface PlanarImageEventContext {
|
|
4
|
+
viewportId: string;
|
|
5
|
+
renderingEngineId: string;
|
|
6
|
+
viewport: {
|
|
7
|
+
element: HTMLDivElement;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
interface PlanarNewImageArgs {
|
|
11
|
+
image?: IImage;
|
|
12
|
+
imageId?: string;
|
|
13
|
+
imageIdIndex?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function triggerPlanarNewImage(ctx: PlanarImageEventContext, args?: PlanarNewImageArgs): void;
|
|
16
|
+
export declare function triggerPlanarVolumeNewImage(ctx: PlanarImageEventContext, params: {
|
|
17
|
+
camera: PlanarViewState | undefined;
|
|
18
|
+
acquisitionOrientation?: PlanarViewState['orientation'];
|
|
19
|
+
imageIds: string[];
|
|
20
|
+
imageIdIndex: number | undefined;
|
|
21
|
+
}): void;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Events, OrientationAxis } from '../../../enums';
|
|
2
|
+
import triggerEvent from '../../../utilities/triggerEvent';
|
|
3
|
+
export function triggerPlanarNewImage(ctx, args = {}) {
|
|
4
|
+
triggerEvent(ctx.viewport.element, Events.STACK_NEW_IMAGE, {
|
|
5
|
+
image: args.image,
|
|
6
|
+
imageId: args.imageId ?? args.image?.imageId,
|
|
7
|
+
imageIdIndex: args.imageIdIndex,
|
|
8
|
+
viewportId: ctx.viewportId,
|
|
9
|
+
renderingEngineId: ctx.renderingEngineId,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export function triggerPlanarVolumeNewImage(ctx, params) {
|
|
13
|
+
const orientation = params.camera?.orientation;
|
|
14
|
+
const isAcquisitionAligned = !orientation ||
|
|
15
|
+
orientation === OrientationAxis.ACQUISITION ||
|
|
16
|
+
(params.acquisitionOrientation !== undefined &&
|
|
17
|
+
orientation === params.acquisitionOrientation);
|
|
18
|
+
if (isAcquisitionAligned &&
|
|
19
|
+
typeof params.imageIdIndex === 'number' &&
|
|
20
|
+
params.imageIds[params.imageIdIndex]) {
|
|
21
|
+
triggerPlanarNewImage(ctx, {
|
|
22
|
+
imageId: params.imageIds[params.imageIdIndex],
|
|
23
|
+
imageIdIndex: params.imageIdIndex,
|
|
24
|
+
});
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
triggerPlanarNewImage(ctx);
|
|
28
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type BlendModes from '../../../enums/BlendModes';
|
|
2
|
+
import type { ColormapPublic, OrientationVectors, StackViewportProperties, VolumeViewportProperties } from '../../../types';
|
|
3
|
+
import type { PlanarDataPresentation, PlanarOrientation } from './PlanarViewportTypes';
|
|
4
|
+
export type PlanarLegacyViewportProperties = Partial<Omit<StackViewportProperties & VolumeViewportProperties, 'orientation'> & Pick<PlanarDataPresentation, 'opacity' | 'visible'> & {
|
|
5
|
+
blendMode?: BlendModes;
|
|
6
|
+
orientation?: PlanarOrientation;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function isPlanarOrientationVectors(orientation: PlanarOrientation | undefined): orientation is OrientationVectors;
|
|
9
|
+
export declare function clonePlanarOrientation(orientation: PlanarOrientation | undefined): PlanarOrientation | undefined;
|
|
10
|
+
export declare function clonePlanarColormap(colormap: ColormapPublic | undefined): ColormapPublic | undefined;
|
|
11
|
+
export declare function clonePlanarLegacyProperties(properties?: PlanarLegacyViewportProperties): PlanarLegacyViewportProperties;
|
|
12
|
+
export declare function mergePlanarLegacyProperties(currentProperties?: PlanarLegacyViewportProperties, nextProperties?: PlanarLegacyViewportProperties): PlanarLegacyViewportProperties;
|
|
13
|
+
export declare function toPlanarDataPresentation(properties?: PlanarLegacyViewportProperties): PlanarDataPresentation;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
const ORIENTATION_VECTOR_EPSILON = 1e-6;
|
|
2
|
+
const ORIENTATION_DOT_EPSILON = 1e-3;
|
|
3
|
+
function cloneVOIRange(voiRange) {
|
|
4
|
+
if (!voiRange) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
lower: voiRange.lower,
|
|
9
|
+
upper: voiRange.upper,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function cloneColormapOpacity(opacity) {
|
|
13
|
+
if (Array.isArray(opacity)) {
|
|
14
|
+
return opacity.map(({ opacity, value }) => ({
|
|
15
|
+
opacity,
|
|
16
|
+
value,
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
return opacity;
|
|
20
|
+
}
|
|
21
|
+
function mergePlanarColormap(currentColormap, nextColormap) {
|
|
22
|
+
if (!nextColormap) {
|
|
23
|
+
return clonePlanarColormap(currentColormap);
|
|
24
|
+
}
|
|
25
|
+
if (nextColormap.name !== undefined) {
|
|
26
|
+
return clonePlanarColormap(nextColormap);
|
|
27
|
+
}
|
|
28
|
+
const mergedColormap = clonePlanarColormap(currentColormap) || {};
|
|
29
|
+
const nextClone = clonePlanarColormap(nextColormap);
|
|
30
|
+
if (nextClone) {
|
|
31
|
+
Object.assign(mergedColormap, nextClone);
|
|
32
|
+
}
|
|
33
|
+
return mergedColormap;
|
|
34
|
+
}
|
|
35
|
+
export function isPlanarOrientationVectors(orientation) {
|
|
36
|
+
return Boolean(orientation &&
|
|
37
|
+
typeof orientation === 'object' &&
|
|
38
|
+
'viewPlaneNormal' in orientation);
|
|
39
|
+
}
|
|
40
|
+
function normalizeOrientationVector(vector, fieldName) {
|
|
41
|
+
const [x, y, z] = vector || [];
|
|
42
|
+
const length = Math.hypot(x, y, z);
|
|
43
|
+
if (!Number.isFinite(x) ||
|
|
44
|
+
!Number.isFinite(y) ||
|
|
45
|
+
!Number.isFinite(z) ||
|
|
46
|
+
length < ORIENTATION_VECTOR_EPSILON) {
|
|
47
|
+
throw new Error(`[PlanarViewport] Invalid orientation vector ${fieldName}. Expected a finite non-zero Point3.`);
|
|
48
|
+
}
|
|
49
|
+
return [x / length, y / length, z / length];
|
|
50
|
+
}
|
|
51
|
+
export function clonePlanarOrientation(orientation) {
|
|
52
|
+
if (!isPlanarOrientationVectors(orientation)) {
|
|
53
|
+
return orientation;
|
|
54
|
+
}
|
|
55
|
+
const clone = {
|
|
56
|
+
viewPlaneNormal: normalizeOrientationVector(orientation.viewPlaneNormal, 'viewPlaneNormal'),
|
|
57
|
+
};
|
|
58
|
+
if (orientation.viewUp) {
|
|
59
|
+
clone.viewUp = normalizeOrientationVector(orientation.viewUp, 'viewUp');
|
|
60
|
+
const dot = clone.viewPlaneNormal[0] * clone.viewUp[0] +
|
|
61
|
+
clone.viewPlaneNormal[1] * clone.viewUp[1] +
|
|
62
|
+
clone.viewPlaneNormal[2] * clone.viewUp[2];
|
|
63
|
+
if (Math.abs(dot) > ORIENTATION_DOT_EPSILON) {
|
|
64
|
+
throw new Error('[PlanarViewport] Invalid orientation vectors. viewPlaneNormal and viewUp must be orthogonal.');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return clone;
|
|
68
|
+
}
|
|
69
|
+
export function clonePlanarColormap(colormap) {
|
|
70
|
+
if (!colormap) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const clone = {};
|
|
74
|
+
if (colormap.name !== undefined) {
|
|
75
|
+
clone.name = colormap.name;
|
|
76
|
+
}
|
|
77
|
+
const opacity = cloneColormapOpacity(colormap.opacity);
|
|
78
|
+
if (opacity !== undefined) {
|
|
79
|
+
clone.opacity = opacity;
|
|
80
|
+
}
|
|
81
|
+
if (colormap.threshold !== undefined) {
|
|
82
|
+
clone.threshold = colormap.threshold;
|
|
83
|
+
}
|
|
84
|
+
return clone;
|
|
85
|
+
}
|
|
86
|
+
export function clonePlanarLegacyProperties(properties = {}) {
|
|
87
|
+
const clone = Object.assign({}, properties);
|
|
88
|
+
if (properties.voiRange) {
|
|
89
|
+
clone.voiRange = cloneVOIRange(properties.voiRange);
|
|
90
|
+
}
|
|
91
|
+
if (properties.colormap) {
|
|
92
|
+
clone.colormap = clonePlanarColormap(properties.colormap);
|
|
93
|
+
}
|
|
94
|
+
if (properties.orientation !== undefined) {
|
|
95
|
+
clone.orientation = clonePlanarOrientation(properties.orientation);
|
|
96
|
+
}
|
|
97
|
+
return clone;
|
|
98
|
+
}
|
|
99
|
+
export function mergePlanarLegacyProperties(currentProperties = {}, nextProperties = {}) {
|
|
100
|
+
const current = clonePlanarLegacyProperties(currentProperties);
|
|
101
|
+
const next = clonePlanarLegacyProperties(nextProperties);
|
|
102
|
+
const merged = Object.assign({}, current);
|
|
103
|
+
Object.assign(merged, next);
|
|
104
|
+
if (next.colormap) {
|
|
105
|
+
merged.colormap = mergePlanarColormap(current.colormap, next.colormap);
|
|
106
|
+
}
|
|
107
|
+
return merged;
|
|
108
|
+
}
|
|
109
|
+
export function toPlanarDataPresentation(properties = {}) {
|
|
110
|
+
const presentation = {};
|
|
111
|
+
if (properties.colormap) {
|
|
112
|
+
presentation.colormap = clonePlanarColormap(properties.colormap);
|
|
113
|
+
}
|
|
114
|
+
if (properties.voiRange) {
|
|
115
|
+
presentation.voiRange = cloneVOIRange(properties.voiRange);
|
|
116
|
+
}
|
|
117
|
+
if (properties.invert !== undefined) {
|
|
118
|
+
presentation.invert = properties.invert;
|
|
119
|
+
}
|
|
120
|
+
if (properties.blendMode !== undefined) {
|
|
121
|
+
presentation.blendMode = properties.blendMode;
|
|
122
|
+
}
|
|
123
|
+
if (properties.interpolationType !== undefined) {
|
|
124
|
+
presentation.interpolationType = properties.interpolationType;
|
|
125
|
+
}
|
|
126
|
+
if (properties.opacity !== undefined) {
|
|
127
|
+
presentation.opacity = properties.opacity;
|
|
128
|
+
}
|
|
129
|
+
if (properties.slabThickness !== undefined) {
|
|
130
|
+
presentation.slabThickness = properties.slabThickness;
|
|
131
|
+
}
|
|
132
|
+
if (properties.visible !== undefined) {
|
|
133
|
+
presentation.visible = properties.visible;
|
|
134
|
+
}
|
|
135
|
+
return presentation;
|
|
136
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { vec3 } from 'gl-matrix';
|
|
2
|
+
export function getSafeCanvasDimension(value) {
|
|
3
|
+
return Math.max(value || 0, 1);
|
|
4
|
+
}
|
|
5
|
+
export function normalizePoint3(point, fallback) {
|
|
6
|
+
const normalized = vec3.normalize(vec3.create(), point);
|
|
7
|
+
if (fallback &&
|
|
8
|
+
(!Number.isFinite(normalized[0]) ||
|
|
9
|
+
!Number.isFinite(normalized[1]) ||
|
|
10
|
+
!Number.isFinite(normalized[2]) ||
|
|
11
|
+
vec3.length(normalized) === 0)) {
|
|
12
|
+
return vec3.clone(fallback);
|
|
13
|
+
}
|
|
14
|
+
return normalized;
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IImageVolume, Point3 } from '../../../types';
|
|
2
|
+
import type { PlanarViewState } from './PlanarViewportTypes';
|
|
3
|
+
type PlanarViewStateVectors = {
|
|
4
|
+
viewPlaneNormal: Point3;
|
|
5
|
+
viewUp: Point3;
|
|
6
|
+
};
|
|
7
|
+
export declare function getAcquisitionCameraVectors(imageVolume: IImageVolume): PlanarViewStateVectors;
|
|
8
|
+
export declare function getPlanarViewStateVectors(args: {
|
|
9
|
+
imageVolume: IImageVolume;
|
|
10
|
+
orientation?: PlanarViewState['orientation'];
|
|
11
|
+
}): PlanarViewStateVectors | undefined;
|
|
12
|
+
export {};
|