@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.
Files changed (404) hide show
  1. package/dist/esm/RenderingEngine/BaseRenderingEngine.d.ts +4 -5
  2. package/dist/esm/RenderingEngine/BaseRenderingEngine.js +48 -61
  3. package/dist/esm/RenderingEngine/BaseVolumeViewport.js +10 -17
  4. package/dist/esm/RenderingEngine/CanvasActor/CanvasMapper.d.ts +1 -0
  5. package/dist/esm/RenderingEngine/CanvasActor/CanvasMapper.js +3 -0
  6. package/dist/esm/RenderingEngine/CanvasActor/CanvasProperties.d.ts +10 -2
  7. package/dist/esm/RenderingEngine/CanvasActor/CanvasProperties.js +64 -6
  8. package/dist/esm/RenderingEngine/CanvasActor/index.d.ts +4 -0
  9. package/dist/esm/RenderingEngine/CanvasActor/index.js +59 -48
  10. package/dist/esm/RenderingEngine/ContextPoolRenderingEngine.d.ts +3 -4
  11. package/dist/esm/RenderingEngine/ContextPoolRenderingEngine.js +52 -34
  12. package/dist/esm/RenderingEngine/ECGViewport.d.ts +1 -1
  13. package/dist/esm/RenderingEngine/ECGViewport.js +33 -160
  14. package/dist/esm/RenderingEngine/GenericViewport/DefaultRenderPathResolver.d.ts +10 -0
  15. package/dist/esm/RenderingEngine/GenericViewport/DefaultRenderPathResolver.js +25 -0
  16. package/dist/esm/RenderingEngine/GenericViewport/ECG/CanvasECGRenderPath.d.ts +17 -0
  17. package/dist/esm/RenderingEngine/GenericViewport/ECG/CanvasECGRenderPath.js +144 -0
  18. package/dist/esm/RenderingEngine/GenericViewport/ECG/DefaultECGDataProvider.d.ts +5 -0
  19. package/dist/esm/RenderingEngine/GenericViewport/ECG/DefaultECGDataProvider.js +13 -0
  20. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGProjectionTypes.d.ts +42 -0
  21. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGProjectionTypes.js +2 -0
  22. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGRenderPathResolver.d.ts +4 -0
  23. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGRenderPathResolver.js +8 -0
  24. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGResolvedView.d.ts +27 -0
  25. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGResolvedView.js +121 -0
  26. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewport.d.ts +55 -0
  27. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewport.js +289 -0
  28. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewportLegacyAdapter.d.ts +13 -0
  29. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewportLegacyAdapter.js +70 -0
  30. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewportTypes.d.ts +69 -0
  31. package/dist/esm/RenderingEngine/GenericViewport/ECG/ECGViewportTypes.js +0 -0
  32. package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionAdapter.d.ts +8 -0
  33. package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionAdapter.js +12 -0
  34. package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionPresentation.d.ts +7 -0
  35. package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionPresentation.js +52 -0
  36. package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionSnapshot.d.ts +2 -0
  37. package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgProjectionSnapshot.js +94 -0
  38. package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgViewportCamera.d.ts +27 -0
  39. package/dist/esm/RenderingEngine/GenericViewport/ECG/ecgViewportCamera.js +82 -0
  40. package/dist/esm/RenderingEngine/GenericViewport/ECG/index.d.ts +10 -0
  41. package/dist/esm/RenderingEngine/GenericViewport/ECG/index.js +8 -0
  42. package/dist/esm/RenderingEngine/GenericViewport/GenericViewport.d.ts +82 -0
  43. package/dist/esm/RenderingEngine/GenericViewport/GenericViewport.js +369 -0
  44. package/dist/esm/RenderingEngine/GenericViewport/Planar/CpuImageSliceRenderPath.d.ts +24 -0
  45. package/dist/esm/RenderingEngine/GenericViewport/Planar/CpuImageSliceRenderPath.js +456 -0
  46. package/dist/esm/RenderingEngine/GenericViewport/Planar/CpuVolumeSliceRenderPath.d.ts +25 -0
  47. package/dist/esm/RenderingEngine/GenericViewport/Planar/CpuVolumeSliceRenderPath.js +514 -0
  48. package/dist/esm/RenderingEngine/GenericViewport/Planar/DefaultPlanarDataProvider.d.ts +6 -0
  49. package/dist/esm/RenderingEngine/GenericViewport/Planar/DefaultPlanarDataProvider.js +80 -0
  50. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarCPUScalarViewportSampler.d.ts +47 -0
  51. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarCPUScalarViewportSampler.js +439 -0
  52. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarCPUVolumeSampler.d.ts +98 -0
  53. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarCPUVolumeSampler.js +686 -0
  54. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarLegacyCompatibilityController.d.ts +81 -0
  55. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarLegacyCompatibilityController.js +526 -0
  56. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarMountedData.d.ts +34 -0
  57. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarMountedData.js +111 -0
  58. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarProjectionTypes.d.ts +58 -0
  59. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarProjectionTypes.js +2 -0
  60. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathDecisionService.d.ts +28 -0
  61. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathDecisionService.js +145 -0
  62. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathResolver.d.ts +4 -0
  63. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarRenderPathResolver.js +16 -0
  64. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarResolvedView.d.ts +91 -0
  65. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarResolvedView.js +305 -0
  66. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewReferenceController.d.ts +72 -0
  67. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewReferenceController.js +406 -0
  68. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewport.d.ts +187 -0
  69. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewport.js +1175 -0
  70. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewportLegacyAdapter.d.ts +44 -0
  71. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewportLegacyAdapter.js +279 -0
  72. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewportTypes.d.ts +151 -0
  73. package/dist/esm/RenderingEngine/GenericViewport/Planar/PlanarViewportTypes.js +0 -0
  74. package/dist/esm/RenderingEngine/GenericViewport/Planar/VtkImageMapperRenderPath.d.ts +21 -0
  75. package/dist/esm/RenderingEngine/GenericViewport/Planar/VtkImageMapperRenderPath.js +259 -0
  76. package/dist/esm/RenderingEngine/GenericViewport/Planar/VtkVolumeSliceRenderPath.d.ts +23 -0
  77. package/dist/esm/RenderingEngine/GenericViewport/Planar/VtkVolumeSliceRenderPath.js +289 -0
  78. package/dist/esm/RenderingEngine/GenericViewport/Planar/buildPlanarActorEntry.d.ts +10 -0
  79. package/dist/esm/RenderingEngine/GenericViewport/Planar/buildPlanarActorEntry.js +54 -0
  80. package/dist/esm/RenderingEngine/GenericViewport/Planar/index.d.ts +23 -0
  81. package/dist/esm/RenderingEngine/GenericViewport/Planar/index.js +20 -0
  82. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarActorCompatibility.d.ts +4 -0
  83. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarActorCompatibility.js +42 -0
  84. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarAdapterCoordinateTransforms.d.ts +44 -0
  85. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarAdapterCoordinateTransforms.js +129 -0
  86. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCPUVolumeSamplingUtils.d.ts +11 -0
  87. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCPUVolumeSamplingUtils.js +54 -0
  88. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCameraScale.d.ts +10 -0
  89. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCameraScale.js +35 -0
  90. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCpuImageTransforms.d.ts +3 -0
  91. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCpuImageTransforms.js +35 -0
  92. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCpuViewportMath.d.ts +10 -0
  93. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarCpuViewportMath.js +35 -0
  94. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarImageEvents.d.ts +22 -0
  95. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarImageEvents.js +28 -0
  96. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarLegacyCompatibility.d.ts +13 -0
  97. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarLegacyCompatibility.js +136 -0
  98. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarMath.d.ts +3 -0
  99. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarMath.js +15 -0
  100. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarOrientationVectors.d.ts +12 -0
  101. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarOrientationVectors.js +37 -0
  102. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionAdapter.d.ts +7 -0
  103. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionAdapter.js +28 -0
  104. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionFallback.d.ts +4 -0
  105. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionFallback.js +25 -0
  106. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionPresentation.d.ts +5 -0
  107. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionPresentation.js +95 -0
  108. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionSnapshot.d.ts +6 -0
  109. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarProjectionSnapshot.js +126 -0
  110. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderCamera.d.ts +46 -0
  111. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderCamera.js +332 -0
  112. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderPathProjection.d.ts +51 -0
  113. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderPathProjection.js +96 -0
  114. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderPathSelector.d.ts +4 -0
  115. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRenderPathSelector.js +12 -0
  116. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRuntimeTypes.d.ts +86 -0
  117. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarRuntimeTypes.js +0 -0
  118. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarSliceBasis.d.ts +51 -0
  119. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarSliceBasis.js +330 -0
  120. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewPresentation.d.ts +16 -0
  121. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewPresentation.js +25 -0
  122. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewReference.d.ts +46 -0
  123. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewReference.js +243 -0
  124. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewState.d.ts +5 -0
  125. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarViewState.js +59 -0
  126. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarVolumePresentation.d.ts +10 -0
  127. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarVolumePresentation.js +223 -0
  128. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarVolumeSliceBlendMode.d.ts +5 -0
  129. package/dist/esm/RenderingEngine/GenericViewport/Planar/planarVolumeSliceBlendMode.js +36 -0
  130. package/dist/esm/RenderingEngine/GenericViewport/ResolvedViewportView.d.ts +12 -0
  131. package/dist/esm/RenderingEngine/GenericViewport/ResolvedViewportView.js +10 -0
  132. package/dist/esm/RenderingEngine/GenericViewport/Video/DefaultVideoDataProvider.d.ts +5 -0
  133. package/dist/esm/RenderingEngine/GenericViewport/Video/DefaultVideoDataProvider.js +18 -0
  134. package/dist/esm/RenderingEngine/GenericViewport/Video/HtmlVideoRenderPath.d.ts +19 -0
  135. package/dist/esm/RenderingEngine/GenericViewport/Video/HtmlVideoRenderPath.js +141 -0
  136. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoProjectionTypes.d.ts +45 -0
  137. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoProjectionTypes.js +2 -0
  138. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoRenderPathResolver.d.ts +4 -0
  139. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoRenderPathResolver.js +8 -0
  140. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoResolvedView.d.ts +29 -0
  141. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoResolvedView.js +108 -0
  142. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewport.d.ts +59 -0
  143. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewport.js +458 -0
  144. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewportLegacyAdapter.d.ts +15 -0
  145. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewportLegacyAdapter.js +114 -0
  146. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewportTypes.d.ts +45 -0
  147. package/dist/esm/RenderingEngine/GenericViewport/Video/VideoViewportTypes.js +0 -0
  148. package/dist/esm/RenderingEngine/GenericViewport/Video/index.d.ts +10 -0
  149. package/dist/esm/RenderingEngine/GenericViewport/Video/index.js +8 -0
  150. package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionAdapter.d.ts +8 -0
  151. package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionAdapter.js +12 -0
  152. package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionPresentation.d.ts +7 -0
  153. package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionPresentation.js +66 -0
  154. package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionSnapshot.d.ts +2 -0
  155. package/dist/esm/RenderingEngine/GenericViewport/Video/videoProjectionSnapshot.js +86 -0
  156. package/dist/esm/RenderingEngine/GenericViewport/Video/videoViewportCamera.d.ts +30 -0
  157. package/dist/esm/RenderingEngine/GenericViewport/Video/videoViewportCamera.js +105 -0
  158. package/dist/esm/RenderingEngine/GenericViewport/ViewportArchitectureTypes.d.ts +126 -0
  159. package/dist/esm/RenderingEngine/GenericViewport/ViewportArchitectureTypes.js +20 -0
  160. package/dist/esm/RenderingEngine/GenericViewport/ViewportCameraTypes.d.ts +12 -0
  161. package/dist/esm/RenderingEngine/GenericViewport/ViewportCameraTypes.js +0 -0
  162. package/dist/esm/RenderingEngine/GenericViewport/ViewportProjectionTypes.d.ts +101 -0
  163. package/dist/esm/RenderingEngine/GenericViewport/ViewportProjectionTypes.js +0 -0
  164. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/DefaultVolume3DDataProvider.d.ts +8 -0
  165. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/DefaultVolume3DDataProvider.js +58 -0
  166. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DProjectionTypes.d.ts +35 -0
  167. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DProjectionTypes.js +2 -0
  168. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DRenderPathResolver.d.ts +4 -0
  169. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DRenderPathResolver.js +9 -0
  170. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DResolvedView.d.ts +18 -0
  171. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/Volume3DResolvedView.js +42 -0
  172. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VolumeViewport3DLegacyAdapter.d.ts +39 -0
  173. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VolumeViewport3DLegacyAdapter.js +296 -0
  174. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VtkGeometry3DRenderPath.d.ts +22 -0
  175. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VtkGeometry3DRenderPath.js +156 -0
  176. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VtkVolume3DRenderPath.d.ts +23 -0
  177. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/VtkVolume3DRenderPath.js +205 -0
  178. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/applyVolume3DCamera.d.ts +4 -0
  179. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/applyVolume3DCamera.js +33 -0
  180. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/index.d.ts +10 -0
  181. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/index.js +8 -0
  182. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/viewport3D.d.ts +60 -0
  183. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/viewport3D.js +399 -0
  184. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/viewport3DTypes.d.ts +88 -0
  185. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/viewport3DTypes.js +0 -0
  186. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionAdapter.d.ts +7 -0
  187. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionAdapter.js +27 -0
  188. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionCamera.d.ts +12 -0
  189. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionCamera.js +35 -0
  190. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionPresentation.d.ts +4 -0
  191. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionPresentation.js +22 -0
  192. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionSnapshot.d.ts +2 -0
  193. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/volume3DProjectionSnapshot.js +52 -0
  194. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/vtkVolume3DInitialCamera.d.ts +3 -0
  195. package/dist/esm/RenderingEngine/GenericViewport/Volume3D/vtkVolume3DInitialCamera.js +110 -0
  196. package/dist/esm/RenderingEngine/GenericViewport/WSI/DefaultWSIDataProvider.d.ts +6 -0
  197. package/dist/esm/RenderingEngine/GenericViewport/WSI/DefaultWSIDataProvider.js +35 -0
  198. package/dist/esm/RenderingEngine/GenericViewport/WSI/DicomMicroscopyRenderPath.d.ts +16 -0
  199. package/dist/esm/RenderingEngine/GenericViewport/WSI/DicomMicroscopyRenderPath.js +125 -0
  200. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIProjectionTypes.d.ts +40 -0
  201. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIProjectionTypes.js +2 -0
  202. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIRenderPathResolver.d.ts +4 -0
  203. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIRenderPathResolver.js +8 -0
  204. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIResolvedView.d.ts +26 -0
  205. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIResolvedView.js +104 -0
  206. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewport.d.ts +69 -0
  207. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewport.js +392 -0
  208. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewportLegacyAdapter.d.ts +22 -0
  209. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewportLegacyAdapter.js +144 -0
  210. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewportTypes.d.ts +58 -0
  211. package/dist/esm/RenderingEngine/GenericViewport/WSI/WSIViewportTypes.js +0 -0
  212. package/dist/esm/RenderingEngine/GenericViewport/WSI/index.d.ts +10 -0
  213. package/dist/esm/RenderingEngine/GenericViewport/WSI/index.js +8 -0
  214. package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionAdapter.d.ts +8 -0
  215. package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionAdapter.js +12 -0
  216. package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionPresentation.d.ts +7 -0
  217. package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionPresentation.js +47 -0
  218. package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionSnapshot.d.ts +2 -0
  219. package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiProjectionSnapshot.js +90 -0
  220. package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiTransformUtils.d.ts +29 -0
  221. package/dist/esm/RenderingEngine/GenericViewport/WSI/wsiTransformUtils.js +128 -0
  222. package/dist/esm/RenderingEngine/GenericViewport/genericViewportDataSetAccess.d.ts +35 -0
  223. package/dist/esm/RenderingEngine/GenericViewport/genericViewportDataSetAccess.js +87 -0
  224. package/dist/esm/RenderingEngine/GenericViewport/genericViewportReferenceCompatibility.d.ts +18 -0
  225. package/dist/esm/RenderingEngine/GenericViewport/genericViewportReferenceCompatibility.js +238 -0
  226. package/dist/esm/RenderingEngine/GenericViewport/index.d.ts +23 -0
  227. package/dist/esm/RenderingEngine/GenericViewport/index.js +14 -0
  228. package/dist/esm/RenderingEngine/GenericViewport/setVtkCameraClippingRange.d.ts +2 -0
  229. package/dist/esm/RenderingEngine/GenericViewport/setVtkCameraClippingRange.js +8 -0
  230. package/dist/esm/RenderingEngine/GenericViewport/viewportProjection.d.ts +98 -0
  231. package/dist/esm/RenderingEngine/GenericViewport/viewportProjection.js +81 -0
  232. package/dist/esm/RenderingEngine/RenderingEngine.d.ts +3 -5
  233. package/dist/esm/RenderingEngine/RenderingEngine.js +3 -9
  234. package/dist/esm/RenderingEngine/StackViewport.d.ts +0 -1
  235. package/dist/esm/RenderingEngine/StackViewport.js +37 -45
  236. package/dist/esm/RenderingEngine/TiledRenderingEngine.d.ts +1 -0
  237. package/dist/esm/RenderingEngine/TiledRenderingEngine.js +23 -20
  238. package/dist/esm/RenderingEngine/VideoViewport.d.ts +5 -13
  239. package/dist/esm/RenderingEngine/VideoViewport.js +32 -68
  240. package/dist/esm/RenderingEngine/Viewport.d.ts +14 -5
  241. package/dist/esm/RenderingEngine/Viewport.js +60 -24
  242. package/dist/esm/RenderingEngine/VolumeViewport.js +20 -7
  243. package/dist/esm/RenderingEngine/WSIViewport.d.ts +12 -12
  244. package/dist/esm/RenderingEngine/WSIViewport.js +28 -101
  245. package/dist/esm/RenderingEngine/helpers/addVolumesToViewports.js +6 -8
  246. package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/colormap.d.ts +4 -1
  247. package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/colormap.js +157 -0
  248. package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/index.d.ts +2 -3
  249. package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/index.js +2 -3
  250. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/calculateTransform.js +13 -3
  251. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderPseudoColorImage.js +13 -3
  252. package/dist/esm/RenderingEngine/helpers/createVolumeSliceActor.d.ts +14 -0
  253. package/dist/esm/RenderingEngine/helpers/createVolumeSliceActor.js +69 -0
  254. package/dist/esm/RenderingEngine/helpers/getCameraVectors.d.ts +2 -1
  255. package/dist/esm/RenderingEngine/helpers/getCameraVectors.js +1 -1
  256. package/dist/esm/RenderingEngine/helpers/planarImageRendering.d.ts +51 -0
  257. package/dist/esm/RenderingEngine/helpers/planarImageRendering.js +116 -0
  258. package/dist/esm/RenderingEngine/helpers/planarVolumeRendering.d.ts +22 -0
  259. package/dist/esm/RenderingEngine/helpers/planarVolumeRendering.js +28 -0
  260. package/dist/esm/RenderingEngine/helpers/resolveViewportVolumeId.d.ts +1 -0
  261. package/dist/esm/RenderingEngine/helpers/resolveViewportVolumeId.js +19 -0
  262. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.d.ts +3 -2
  263. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js +46 -15
  264. package/dist/esm/RenderingEngine/helpers/setVolumesForViewports.js +6 -9
  265. package/dist/esm/RenderingEngine/helpers/stats/RenderModesPanel.d.ts +19 -0
  266. package/dist/esm/RenderingEngine/helpers/stats/RenderModesPanel.js +228 -0
  267. package/dist/esm/RenderingEngine/helpers/stats/StatsOverlay.d.ts +22 -3
  268. package/dist/esm/RenderingEngine/helpers/stats/StatsOverlay.js +192 -18
  269. package/dist/esm/RenderingEngine/helpers/stats/constants.d.ts +13 -1
  270. package/dist/esm/RenderingEngine/helpers/stats/constants.js +14 -1
  271. package/dist/esm/RenderingEngine/helpers/stats/enums.d.ts +2 -1
  272. package/dist/esm/RenderingEngine/helpers/stats/enums.js +1 -0
  273. package/dist/esm/RenderingEngine/helpers/stats/types.d.ts +1 -1
  274. package/dist/esm/RenderingEngine/helpers/supportsVolumeCompatibilityApi.d.ts +4 -0
  275. package/dist/esm/RenderingEngine/helpers/supportsVolumeCompatibilityApi.js +7 -0
  276. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +27 -4
  277. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js +126 -11
  278. package/dist/esm/RenderingEngine/helpers/viewportTypeUsesCustomRenderingPipeline.d.ts +3 -1
  279. package/dist/esm/RenderingEngine/helpers/viewportTypeUsesCustomRenderingPipeline.js +9 -2
  280. package/dist/esm/RenderingEngine/helpers/vtkCanvasCoordinateTransforms.d.ts +12 -0
  281. package/dist/esm/RenderingEngine/helpers/vtkCanvasCoordinateTransforms.js +57 -0
  282. package/dist/esm/RenderingEngine/index.d.ts +69 -1
  283. package/dist/esm/RenderingEngine/index.js +40 -1
  284. package/dist/esm/RenderingEngine/vtkClasses/index.d.ts +3 -1
  285. package/dist/esm/RenderingEngine/vtkClasses/index.js +3 -1
  286. package/dist/esm/RenderingEngine/vtkClasses/vtkSharedImageResliceMapper.d.ts +7 -0
  287. package/dist/esm/RenderingEngine/vtkClasses/vtkSharedImageResliceMapper.js +21 -0
  288. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLImageResliceMapper.d.ts +7 -0
  289. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLImageResliceMapper.js +420 -0
  290. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLViewNodeFactory.js +7 -0
  291. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js +9 -3
  292. package/dist/esm/cache/cache.d.ts +1 -1
  293. package/dist/esm/cache/cache.js +4 -1
  294. package/dist/esm/cache/classes/BaseStreamingImageVolume.js +6 -6
  295. package/dist/esm/cache/classes/ImageVolume.js +5 -0
  296. package/dist/esm/enums/CalibrationTypes.d.ts +4 -12
  297. package/dist/esm/enums/CalibrationTypes.js +3 -13
  298. package/dist/esm/enums/MetadataModules.d.ts +3 -38
  299. package/dist/esm/enums/MetadataModules.js +2 -39
  300. package/dist/esm/enums/ViewportType.d.ts +6 -1
  301. package/dist/esm/enums/ViewportType.js +5 -0
  302. package/dist/esm/enums/ViewportTypes.d.ts +5 -0
  303. package/dist/esm/enums/ViewportTypes.js +23 -0
  304. package/dist/esm/enums/index.d.ts +2 -1
  305. package/dist/esm/enums/index.js +2 -1
  306. package/dist/esm/getEnabledElement.js +4 -1
  307. package/dist/esm/index.d.ts +72 -2
  308. package/dist/esm/index.js +41 -2
  309. package/dist/esm/init.d.ts +2 -1
  310. package/dist/esm/init.js +14 -1
  311. package/dist/esm/loaders/ProgressiveRetrieveImages.js +11 -11
  312. package/dist/esm/loaders/cornerstoneMeshLoader.js +1 -1
  313. package/dist/esm/loaders/imageLoader.d.ts +2 -1
  314. package/dist/esm/loaders/imageLoader.js +25 -10
  315. package/dist/esm/loaders/volumeLoader.js +8 -4
  316. package/dist/esm/metaData.d.ts +2 -8
  317. package/dist/esm/metaData.js +2 -75
  318. package/dist/esm/types/Cornerstone3DConfig.d.ts +11 -0
  319. package/dist/esm/types/EventTypes.d.ts +3 -3
  320. package/dist/esm/types/IActor.d.ts +33 -0
  321. package/dist/esm/types/IActor.js +8 -0
  322. package/dist/esm/types/ICamera.d.ts +2 -2
  323. package/dist/esm/types/IEnabledElement.d.ts +1 -1
  324. package/dist/esm/types/IImageCalibration.d.ts +2 -11
  325. package/dist/esm/types/IViewport.d.ts +9 -1
  326. package/dist/esm/types/IWSIViewport.d.ts +3 -2
  327. package/dist/esm/types/ImagePlaneModule.d.ts +3 -1
  328. package/dist/esm/types/MetadataModuleTypes.d.ts +1 -70
  329. package/dist/esm/types/ViewportTypeRegistry.d.ts +33 -0
  330. package/dist/esm/types/ViewportTypeRegistry.js +0 -0
  331. package/dist/esm/types/index.d.ts +7 -3
  332. package/dist/esm/types/index.js +2 -0
  333. package/dist/esm/utilities/ECGUtilities.d.ts +83 -0
  334. package/dist/esm/utilities/ECGUtilities.js +228 -0
  335. package/dist/esm/utilities/FrameRange.js +3 -2
  336. package/dist/esm/utilities/RLEVoxelMap.js +9 -7
  337. package/dist/esm/utilities/VideoUtilities.d.ts +34 -0
  338. package/dist/esm/utilities/VideoUtilities.js +102 -0
  339. package/dist/esm/utilities/VoxelManager.d.ts +20 -1
  340. package/dist/esm/utilities/VoxelManager.js +162 -27
  341. package/dist/esm/utilities/WSIUtilities.d.ts +119 -0
  342. package/dist/esm/utilities/WSIUtilities.js +110 -0
  343. package/dist/esm/utilities/buildMetadata.js +23 -23
  344. package/dist/esm/utilities/calculateSpacingBetweenImageIds.js +6 -5
  345. package/dist/esm/utilities/calibratedPixelSpacingMetadataProvider.d.ts +5 -5
  346. package/dist/esm/utilities/calibratedPixelSpacingMetadataProvider.js +2 -15
  347. package/dist/esm/utilities/clonePoint3.d.ts +3 -0
  348. package/dist/esm/utilities/clonePoint3.js +3 -0
  349. package/dist/esm/utilities/colormap.d.ts +2 -1
  350. package/dist/esm/utilities/colormap.js +43 -4
  351. package/dist/esm/utilities/deepClone.d.ts +1 -1
  352. package/dist/esm/utilities/deepClone.js +46 -17
  353. package/dist/esm/utilities/genericMetadataProvider.js +2 -1
  354. package/dist/esm/utilities/genericViewportDataSetMetadataProvider.d.ts +8 -0
  355. package/dist/esm/utilities/genericViewportDataSetMetadataProvider.js +23 -0
  356. package/dist/esm/utilities/getAcquisitionPlaneOrientation.d.ts +2 -0
  357. package/dist/esm/utilities/getAcquisitionPlaneOrientation.js +7 -0
  358. package/dist/esm/utilities/getClosestImageId.js +2 -1
  359. package/dist/esm/utilities/getClosestStackImageIndexForPoint.js +2 -1
  360. package/dist/esm/utilities/getPixelSpacingInformation.d.ts +5 -13
  361. package/dist/esm/utilities/getPixelSpacingInformation.js +4 -93
  362. package/dist/esm/utilities/getScalingParameters.js +4 -3
  363. package/dist/esm/utilities/getVOIRangeFromWindowLevel.d.ts +3 -0
  364. package/dist/esm/utilities/getVOIRangeFromWindowLevel.js +18 -0
  365. package/dist/esm/utilities/getViewportImageIds.js +1 -1
  366. package/dist/esm/utilities/getViewportsWithImageURI.d.ts +2 -4
  367. package/dist/esm/utilities/getViewportsWithImageURI.js +4 -1
  368. package/dist/esm/utilities/getViewportsWithVolumeId.d.ts +2 -2
  369. package/dist/esm/utilities/getViewportsWithVolumeId.js +4 -1
  370. package/dist/esm/utilities/getViewportsWithVolumeURI.d.ts +2 -2
  371. package/dist/esm/utilities/getViewportsWithVolumeURI.js +4 -1
  372. package/dist/esm/utilities/getVolumeViewReferenceId.d.ts +6 -0
  373. package/dist/esm/utilities/getVolumeViewReferenceId.js +6 -0
  374. package/dist/esm/utilities/getVolumeViewportScrollInfo.d.ts +1 -1
  375. package/dist/esm/utilities/getVolumeViewportsContainingSameVolumes.d.ts +2 -2
  376. package/dist/esm/utilities/getVolumeViewportsContainingSameVolumes.js +4 -1
  377. package/dist/esm/utilities/hasOwn.d.ts +1 -0
  378. package/dist/esm/utilities/hasOwn.js +3 -0
  379. package/dist/esm/utilities/imageIdToURI.d.ts +3 -1
  380. package/dist/esm/utilities/imageIdToURI.js +2 -7
  381. package/dist/esm/utilities/index.d.ts +11 -1
  382. package/dist/esm/utilities/index.js +11 -1
  383. package/dist/esm/utilities/isEqual.d.ts +3 -5
  384. package/dist/esm/utilities/isEqual.js +3 -48
  385. package/dist/esm/utilities/isValidVolume.js +19 -4
  386. package/dist/esm/utilities/isVideoTransferSyntax.d.ts +3 -1
  387. package/dist/esm/utilities/isVideoTransferSyntax.js +3 -25
  388. package/dist/esm/utilities/loadImageToCanvas.js +2 -2
  389. package/dist/esm/utilities/logger.d.ts +3 -14
  390. package/dist/esm/utilities/logger.js +2 -23
  391. package/dist/esm/utilities/rotateToViewCoordinates.js +7 -7
  392. package/dist/esm/utilities/scroll.d.ts +1 -1
  393. package/dist/esm/utilities/scroll.js +2 -1
  394. package/dist/esm/utilities/sortImageIdsAndGetSpacing.js +4 -3
  395. package/dist/esm/utilities/splitImageIdsBy4DTags.d.ts +2 -10
  396. package/dist/esm/utilities/splitImageIdsBy4DTags.js +2 -312
  397. package/dist/esm/utilities/toNumber.d.ts +3 -1
  398. package/dist/esm/utilities/toNumber.js +3 -3
  399. package/dist/esm/utilities/viewportCapabilities.d.ts +19 -0
  400. package/dist/esm/utilities/viewportCapabilities.js +32 -0
  401. package/dist/esm/version.d.ts +1 -1
  402. package/dist/esm/version.js +1 -1
  403. package/dist/esm/webWorkerManager/webWorkerManager.js +3 -1
  404. package/package.json +16 -8
@@ -0,0 +1,47 @@
1
+ const DEFAULT_SELECTOR = {
2
+ rotation: true,
3
+ zoom: true,
4
+ };
5
+ function hasOwn(obj, key) {
6
+ return Object.prototype.hasOwnProperty.call(obj, key);
7
+ }
8
+ export function getWSIProjectionPresentation(snapshot, selector) {
9
+ const target = {};
10
+ const wsiSelector = selector ?? DEFAULT_SELECTOR;
11
+ if (wsiSelector.zoom) {
12
+ target.zoom = snapshot.presentation.zoom;
13
+ }
14
+ if (wsiSelector.rotation) {
15
+ target.rotation = snapshot.presentation.rotation;
16
+ }
17
+ return target;
18
+ }
19
+ export function withWSIProjectionPresentation(snapshot, presentation, options = {}) {
20
+ const hasZoom = hasOwn(presentation, 'zoom');
21
+ const hasRotation = hasOwn(presentation, 'rotation');
22
+ const nextZoom = Math.max(presentation.zoom ??
23
+ snapshot.presentation.zoom ??
24
+ snapshot.viewState.zoom ??
25
+ 1, 0.001);
26
+ let nextViewState = {
27
+ ...snapshot.viewState,
28
+ centerIndex: snapshot.viewState.centerIndex
29
+ ? [snapshot.viewState.centerIndex[0], snapshot.viewState.centerIndex[1]]
30
+ : undefined,
31
+ };
32
+ if (hasZoom) {
33
+ if (snapshot.resolvedView) {
34
+ nextViewState = {
35
+ ...snapshot.resolvedView.withZoom(nextZoom, options.anchorCanvas).state
36
+ .viewState,
37
+ };
38
+ }
39
+ else {
40
+ nextViewState.zoom = nextZoom;
41
+ }
42
+ }
43
+ if (hasRotation) {
44
+ nextViewState.rotation = presentation.rotation ?? 0;
45
+ }
46
+ return nextViewState;
47
+ }
@@ -0,0 +1,2 @@
1
+ import { type WSIProjectionRequest, type WSIProjectionSnapshot } from './WSIProjectionTypes';
2
+ export declare function getWSIProjectionSnapshot(request: WSIProjectionRequest): WSIProjectionSnapshot | undefined;
@@ -0,0 +1,90 @@
1
+ import { WSI_PROJECTION_ID, } from './WSIProjectionTypes';
2
+ function clonePoint2(point) {
3
+ return [point[0], point[1]];
4
+ }
5
+ function normalizeWSIProjectionViewState(viewState) {
6
+ return {
7
+ ...viewState,
8
+ centerIndex: viewState.centerIndex
9
+ ? [viewState.centerIndex[0], viewState.centerIndex[1]]
10
+ : undefined,
11
+ resolution: typeof viewState.resolution === 'number'
12
+ ? Math.max(viewState.resolution, 0.000001)
13
+ : undefined,
14
+ rotation: viewState.rotation ?? 0,
15
+ zoom: Math.max(viewState.zoom ?? 1, 0.001),
16
+ };
17
+ }
18
+ function getCenterCanvasPoint(canvasWidth, canvasHeight) {
19
+ return [canvasWidth / 2, canvasHeight / 2];
20
+ }
21
+ function getScale(args) {
22
+ const { canvasHeight, rendererCamera, zoom } = args;
23
+ if (typeof rendererCamera?.parallelScale === 'number') {
24
+ return {
25
+ kind: 'physical',
26
+ mmPerCanvasPixel: rendererCamera.parallelScale / Math.max(canvasHeight, 1),
27
+ };
28
+ }
29
+ return { kind: 'fit', value: zoom };
30
+ }
31
+ export function getWSIProjectionSnapshot(request) {
32
+ const { viewport } = request;
33
+ const currentViewState = request.viewState ?? viewport.getViewState?.();
34
+ if (!currentViewState) {
35
+ return;
36
+ }
37
+ const viewState = normalizeWSIProjectionViewState(currentViewState);
38
+ const resolvedView = request.resolvedView ?? viewport.getResolvedView?.();
39
+ const canvasWidth = request.canvasWidth ??
40
+ resolvedView?.state?.canvasWidth ??
41
+ viewport.element?.clientWidth ??
42
+ 1;
43
+ const canvasHeight = request.canvasHeight ??
44
+ resolvedView?.state?.canvasHeight ??
45
+ viewport.element?.clientHeight ??
46
+ 1;
47
+ const canvasPoint = getCenterCanvasPoint(canvasWidth, canvasHeight);
48
+ const worldPoint = resolvedView?.canvasToWorld(canvasPoint);
49
+ const rendererCamera = resolvedView?.toICamera();
50
+ const view = resolvedView?.state?.view;
51
+ const zoom = Math.max(view?.getZoom?.() ?? viewState.zoom ?? 1, 0.001);
52
+ const rotation = view?.getRotation?.() ?? viewState.rotation ?? 0;
53
+ const frameOfReferenceUID = request.frameOfReferenceUID ??
54
+ resolvedView?.getFrameOfReferenceUID() ??
55
+ viewport.getFrameOfReferenceUID?.();
56
+ return {
57
+ kind: WSI_PROJECTION_ID,
58
+ adapterId: WSI_PROJECTION_ID,
59
+ canvasHeight,
60
+ canvasWidth,
61
+ dataId: request.dataId,
62
+ frameOfReferenceUID,
63
+ presentation: {
64
+ position: {
65
+ kind: 'anchor',
66
+ worldPoint,
67
+ canvasPoint: clonePoint2(canvasPoint),
68
+ },
69
+ rotation,
70
+ scale: getScale({ canvasHeight, rendererCamera, zoom }),
71
+ zoom,
72
+ },
73
+ rendererCamera,
74
+ resolvedView,
75
+ spaces: {
76
+ canvas: Boolean(resolvedView),
77
+ image: true,
78
+ renderer: Boolean(rendererCamera),
79
+ world: Boolean(resolvedView),
80
+ },
81
+ transforms: resolvedView
82
+ ? {
83
+ canvasToWorld: (point) => resolvedView.canvasToWorld(point),
84
+ worldToCanvas: (point) => resolvedView.worldToCanvas(point),
85
+ }
86
+ : undefined,
87
+ viewState,
88
+ viewportType: viewport.type,
89
+ };
90
+ }
@@ -0,0 +1,29 @@
1
+ import { mat4 } from 'gl-matrix';
2
+ import type { CPUIImageData, Point2, Point3, VOIRange } from '../../../types';
3
+ import type { WSIImageDataMetadata, WSIMapViewLike } from '../../../utilities/WSIUtilities';
4
+ export declare function computeWSITransforms(metadata?: WSIImageDataMetadata): {
5
+ indexToWorld: mat4;
6
+ worldToIndexMatrix: mat4;
7
+ };
8
+ export declare function worldToIndexWSIMetadata(metadata: WSIImageDataMetadata | undefined, point: Point3): Point3;
9
+ export declare function indexToWorldWSIMetadata(metadata: WSIImageDataMetadata | undefined, point: Point3): Point3;
10
+ export declare function buildWSIImageData(args: {
11
+ metadata?: WSIImageDataMetadata;
12
+ modality?: string;
13
+ frameOfReferenceUID?: string | null;
14
+ }): CPUIImageData | null;
15
+ export declare function buildWSIColorTransform(voiRange?: VOIRange, averageWhite?: [number, number, number]): string | undefined;
16
+ export declare function canvasToIndexForWSI(args: {
17
+ canvasPos: Point2;
18
+ canvasWidth: number;
19
+ canvasHeight: number;
20
+ view: WSIMapViewLike;
21
+ devicePixelRatio?: number;
22
+ }): Point3;
23
+ export declare function indexToCanvasForWSI(args: {
24
+ indexPos: Point3;
25
+ canvasWidth: number;
26
+ canvasHeight: number;
27
+ view: WSIMapViewLike;
28
+ devicePixelRatio?: number;
29
+ }): Point2;
@@ -0,0 +1,128 @@
1
+ import { mat4, vec3 } from 'gl-matrix';
2
+ import { Transform } from '../../helpers/cpuFallback/rendering/transform';
3
+ export function computeWSITransforms(metadata) {
4
+ if (!metadata) {
5
+ return;
6
+ }
7
+ const indexToWorld = mat4.create();
8
+ const worldToIndexMatrix = mat4.create();
9
+ mat4.fromTranslation(indexToWorld, metadata.origin);
10
+ indexToWorld[0] = metadata.direction[0];
11
+ indexToWorld[1] = metadata.direction[1];
12
+ indexToWorld[2] = metadata.direction[2];
13
+ indexToWorld[4] = metadata.direction[3];
14
+ indexToWorld[5] = metadata.direction[4];
15
+ indexToWorld[6] = metadata.direction[5];
16
+ indexToWorld[8] = metadata.direction[6];
17
+ indexToWorld[9] = metadata.direction[7];
18
+ indexToWorld[10] = metadata.direction[8];
19
+ mat4.scale(indexToWorld, indexToWorld, metadata.spacing);
20
+ mat4.invert(worldToIndexMatrix, indexToWorld);
21
+ return {
22
+ indexToWorld,
23
+ worldToIndexMatrix,
24
+ };
25
+ }
26
+ export function worldToIndexWSIMetadata(metadata, point) {
27
+ const transforms = computeWSITransforms(metadata);
28
+ if (!transforms) {
29
+ return [0, 0, 0];
30
+ }
31
+ const imageCoord = vec3.create();
32
+ vec3.transformMat4(imageCoord, point, transforms.worldToIndexMatrix);
33
+ return [imageCoord[0], imageCoord[1], imageCoord[2]];
34
+ }
35
+ export function indexToWorldWSIMetadata(metadata, point) {
36
+ const transforms = computeWSITransforms(metadata);
37
+ if (!transforms) {
38
+ return [0, 0, 0];
39
+ }
40
+ const worldPos = vec3.create();
41
+ vec3.transformMat4(worldPos, point, transforms.indexToWorld);
42
+ return [worldPos[0], worldPos[1], worldPos[2]];
43
+ }
44
+ export function buildWSIImageData(args) {
45
+ const { metadata, modality = 'SM', frameOfReferenceUID } = args;
46
+ if (!metadata) {
47
+ return null;
48
+ }
49
+ const imageData = {
50
+ getDirection: () => metadata.direction,
51
+ getDimensions: () => metadata.dimensions,
52
+ getRange: () => [0, 255],
53
+ getScalarData: () => null,
54
+ getSpacing: () => metadata.spacing,
55
+ worldToIndex: (point) => {
56
+ return worldToIndexWSIMetadata(metadata, point);
57
+ },
58
+ indexToWorld: (point) => {
59
+ return indexToWorldWSIMetadata(metadata, point);
60
+ },
61
+ };
62
+ return {
63
+ dimensions: metadata.dimensions,
64
+ spacing: metadata.spacing,
65
+ numberOfComponents: 3,
66
+ origin: metadata.origin,
67
+ direction: metadata.direction,
68
+ metadata: {
69
+ Modality: modality,
70
+ FrameOfReferenceUID: frameOfReferenceUID || '',
71
+ },
72
+ hasPixelSpacing: metadata.hasPixelSpacing,
73
+ preScale: {
74
+ scaled: false,
75
+ },
76
+ scalarData: null,
77
+ imageData,
78
+ };
79
+ }
80
+ export function buildWSIColorTransform(voiRange, averageWhite) {
81
+ if (!voiRange && !averageWhite) {
82
+ return;
83
+ }
84
+ const white = averageWhite || [255, 255, 255];
85
+ const maxWhite = Math.max(...white);
86
+ const scaleWhite = white.map((value) => maxWhite / value);
87
+ const { lower = 0, upper = 255 } = voiRange || {};
88
+ const wlScale = (upper - lower + 1) / 255;
89
+ const wlDelta = lower / 255;
90
+ return `url('data:image/svg+xml,\
91
+ <svg xmlns="http://www.w3.org/2000/svg">\
92
+ <filter id="colour" color-interpolation-filters="linearRGB">\
93
+ <feColorMatrix type="matrix" \
94
+ values="\
95
+ ${scaleWhite[0] * wlScale} 0 0 0 ${wlDelta} \
96
+ 0 ${scaleWhite[1] * wlScale} 0 0 ${wlDelta} \
97
+ 0 0 ${scaleWhite[2] * wlScale} 0 ${wlDelta} \
98
+ 0 0 0 1 0" />\
99
+ </filter>\
100
+ </svg>#colour')`;
101
+ }
102
+ export function canvasToIndexForWSI(args) {
103
+ const transform = getWSICanvasTransform(args);
104
+ transform.invert();
105
+ const indexPoint = transform.transformPoint(args.canvasPos.map((value) => value * (args.devicePixelRatio || window.devicePixelRatio || 1)));
106
+ return [indexPoint[0], indexPoint[1], 0];
107
+ }
108
+ export function indexToCanvasForWSI(args) {
109
+ const transform = getWSICanvasTransform(args);
110
+ return transform
111
+ .transformPoint([args.indexPos[0], args.indexPos[1]])
112
+ .map((value) => value / (args.devicePixelRatio || window.devicePixelRatio || 1));
113
+ }
114
+ function getWSICanvasTransform(args) {
115
+ const resolution = args.view.getResolution();
116
+ const rotation = args.view.getRotation();
117
+ const center = args.view.getCenter();
118
+ const halfCanvas = [
119
+ Math.max(args.canvasWidth, 1) / 2,
120
+ Math.max(args.canvasHeight, 1) / 2,
121
+ ];
122
+ const transform = new Transform();
123
+ transform.translate(halfCanvas[0], halfCanvas[1]);
124
+ transform.rotate(rotation);
125
+ transform.scale(1 / resolution, -1 / resolution);
126
+ transform.translate(-center[0], -center[1]);
127
+ return transform;
128
+ }
@@ -0,0 +1,35 @@
1
+ import type { IImage } from '../../types';
2
+ import type { WSIClientLike } from '../../utilities/WSIUtilities';
3
+ import type { ViewportDataReference } from './ViewportArchitectureTypes';
4
+ export interface GenericViewportImageDataSet {
5
+ imageIds: string[];
6
+ [key: string]: unknown;
7
+ }
8
+ export interface GenericViewportPlanarDataSet extends GenericViewportImageDataSet {
9
+ kind?: 'planar';
10
+ initialImageIdIndex?: number;
11
+ volumeId?: string;
12
+ image?: IImage;
13
+ reference?: ViewportDataReference;
14
+ }
15
+ export interface GenericViewportSourceAliasDataSet {
16
+ kind: 'video' | 'ecg';
17
+ sourceDataId: string;
18
+ }
19
+ export interface GenericViewportWSIDataSet {
20
+ kind: 'wsi';
21
+ imageIds: string[];
22
+ options: {
23
+ miniNavigationOverlay?: boolean;
24
+ webClient: WSIClientLike;
25
+ };
26
+ }
27
+ export type GenericViewportRegisteredData = string | string[] | GenericViewportPlanarDataSet | GenericViewportSourceAliasDataSet | GenericViewportWSIDataSet;
28
+ export declare function getGenericViewportRegisteredData(dataId: string): GenericViewportRegisteredData | undefined;
29
+ export declare function getGenericViewportImageDataSet(dataId: string): GenericViewportImageDataSet | undefined;
30
+ export declare function getGenericViewportPlanarDataSet(dataId: string): GenericViewportPlanarDataSet | undefined;
31
+ export declare function getGenericViewportWSIDataSet(dataId: string): GenericViewportWSIDataSet | undefined;
32
+ export declare function getGenericViewportSourceDataId(dataId: string): string;
33
+ export declare function isGenericViewportImageDataSet(value: unknown): value is GenericViewportImageDataSet;
34
+ export declare function isGenericViewportWSIDataSet(value: unknown): value is GenericViewportWSIDataSet;
35
+ export declare function isGenericViewportSourceAliasDataSet(value: unknown): value is GenericViewportSourceAliasDataSet;
@@ -0,0 +1,87 @@
1
+ import genericViewportDataSetMetadataProvider from '../../utilities/genericViewportDataSetMetadataProvider';
2
+ export function getGenericViewportRegisteredData(dataId) {
3
+ return genericViewportDataSetMetadataProvider.get(genericViewportDataSetMetadataProvider.VIEWPORT_V2_DATA_SET, dataId);
4
+ }
5
+ export function getGenericViewportImageDataSet(dataId) {
6
+ const registered = getGenericViewportRegisteredData(dataId);
7
+ if (isStringArray(registered)) {
8
+ return {
9
+ imageIds: registered,
10
+ };
11
+ }
12
+ if (!isGenericViewportImageDataSet(registered)) {
13
+ return;
14
+ }
15
+ return registered;
16
+ }
17
+ export function getGenericViewportPlanarDataSet(dataId) {
18
+ const registered = getGenericViewportRegisteredData(dataId);
19
+ if (isStringArray(registered)) {
20
+ return {
21
+ imageIds: registered,
22
+ };
23
+ }
24
+ if (!isGenericViewportImageDataSet(registered)) {
25
+ return;
26
+ }
27
+ if ('kind' in registered && registered.kind && registered.kind !== 'planar') {
28
+ return;
29
+ }
30
+ return registered;
31
+ }
32
+ export function getGenericViewportWSIDataSet(dataId) {
33
+ const registered = getGenericViewportRegisteredData(dataId);
34
+ if (isGenericViewportWSIDataSet(registered)) {
35
+ return registered;
36
+ }
37
+ if (isRecord(registered) &&
38
+ isStringArray(registered.imageIds) &&
39
+ isRecord(registered.options) &&
40
+ isWSIClientLike(registered.options.webClient)) {
41
+ return {
42
+ imageIds: registered.imageIds,
43
+ kind: 'wsi',
44
+ options: {
45
+ miniNavigationOverlay: registered.options.miniNavigationOverlay,
46
+ webClient: registered.options.webClient,
47
+ },
48
+ };
49
+ }
50
+ }
51
+ export function getGenericViewportSourceDataId(dataId) {
52
+ const registered = getGenericViewportRegisteredData(dataId);
53
+ if (typeof registered === 'string') {
54
+ return registered;
55
+ }
56
+ if (isStringArray(registered) && registered[0]) {
57
+ return registered[0];
58
+ }
59
+ if (isGenericViewportSourceAliasDataSet(registered)) {
60
+ return registered.sourceDataId;
61
+ }
62
+ return dataId;
63
+ }
64
+ export function isGenericViewportImageDataSet(value) {
65
+ return isRecord(value) && isStringArray(value.imageIds);
66
+ }
67
+ export function isGenericViewportWSIDataSet(value) {
68
+ return (isRecord(value) &&
69
+ value.kind === 'wsi' &&
70
+ isStringArray(value.imageIds) &&
71
+ isRecord(value.options) &&
72
+ isWSIClientLike(value.options.webClient));
73
+ }
74
+ export function isGenericViewportSourceAliasDataSet(value) {
75
+ return (isRecord(value) &&
76
+ (value.kind === 'video' || value.kind === 'ecg') &&
77
+ typeof value.sourceDataId === 'string');
78
+ }
79
+ function isRecord(value) {
80
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
81
+ }
82
+ function isStringArray(value) {
83
+ return (Array.isArray(value) && value.every((item) => typeof item === 'string'));
84
+ }
85
+ function isWSIClientLike(value) {
86
+ return isRecord(value) && typeof value.getDICOMwebMetadata === 'function';
87
+ }
@@ -0,0 +1,18 @@
1
+ import type { Point3, ReferenceCompatibleOptions, ViewReference } from '../../types';
2
+ export type GenericViewportReferenceContext = {
3
+ allowAnyImageReference?: boolean;
4
+ cameraFocalPoint?: Point3;
5
+ currentImageIdIndex?: number;
6
+ dataId?: string;
7
+ dataIds?: string[];
8
+ dimensionGroupNumber?: number;
9
+ frameOfReferenceUID?: string;
10
+ imageIds?: string[];
11
+ imageURIs?: string[];
12
+ numDimensionGroups?: number;
13
+ viewPlaneNormal?: Point3;
14
+ volumeId?: string;
15
+ volumeIds?: string[];
16
+ };
17
+ export declare function isGenericViewportReferenceViewable(viewRef: ViewReference, contexts: GenericViewportReferenceContext[], options?: ReferenceCompatibleOptions): boolean;
18
+ export declare function getDimensionGroupReferenceContext(value: unknown): Pick<GenericViewportReferenceContext, 'dimensionGroupNumber' | 'numDimensionGroups'>;
@@ -0,0 +1,238 @@
1
+ import { vec3 } from 'gl-matrix';
2
+ import imageIdToURI from '../../utilities/imageIdToURI';
3
+ import isEqual from '../../utilities/isEqual';
4
+ export function isGenericViewportReferenceViewable(viewRef, contexts, options = {}) {
5
+ if (!viewRef) {
6
+ return false;
7
+ }
8
+ return contexts.some((context) => isReferenceViewableInContext(viewRef, context, options));
9
+ }
10
+ export function getDimensionGroupReferenceContext(value) {
11
+ const candidate = value;
12
+ const dimensionGroupNumber = toPositiveInteger(candidate?.dimensionGroupNumber);
13
+ const numDimensionGroups = toPositiveInteger(candidate?.numDimensionGroups);
14
+ return {
15
+ dimensionGroupNumber,
16
+ numDimensionGroups,
17
+ };
18
+ }
19
+ function isReferenceViewableInContext(viewRef, context, options) {
20
+ if (!isFrameOfReferenceCompatible(viewRef, context)) {
21
+ return false;
22
+ }
23
+ if (!isDataIdCompatible(viewRef, context)) {
24
+ return false;
25
+ }
26
+ if (!isVolumeIdCompatible(viewRef, context)) {
27
+ return false;
28
+ }
29
+ if (!isPlaneCompatible(viewRef, context, options)) {
30
+ return false;
31
+ }
32
+ if (!isReferencedImageCompatible(viewRef, context, options)) {
33
+ return false;
34
+ }
35
+ if (!isDimensionGroupCompatible(viewRef, context, options)) {
36
+ return false;
37
+ }
38
+ return isSliceIndexCompatible(viewRef, context, options);
39
+ }
40
+ function isFrameOfReferenceCompatible(viewRef, context) {
41
+ return (!viewRef.FrameOfReferenceUID ||
42
+ viewRef.FrameOfReferenceUID === context.frameOfReferenceUID);
43
+ }
44
+ function isDataIdCompatible(viewRef, context) {
45
+ if (!viewRef.dataId) {
46
+ return true;
47
+ }
48
+ return getContextDataIds(context).includes(viewRef.dataId);
49
+ }
50
+ function isVolumeIdCompatible(viewRef, context) {
51
+ if (!viewRef.volumeId) {
52
+ return true;
53
+ }
54
+ return getContextVolumeIds(context).includes(viewRef.volumeId);
55
+ }
56
+ function isPlaneCompatible(viewRef, context, options) {
57
+ if (viewRef.planeRestriction) {
58
+ return isPlaneRestrictionViewable(viewRef.planeRestriction, context, options);
59
+ }
60
+ if (!viewRef.viewPlaneNormal) {
61
+ return true;
62
+ }
63
+ const { viewPlaneNormal } = context;
64
+ if (!viewPlaneNormal) {
65
+ return false;
66
+ }
67
+ return (isEqual(viewRef.viewPlaneNormal, viewPlaneNormal) ||
68
+ isEqual(vec3.negate(vec3.create(), viewPlaneNormal), viewRef.viewPlaneNormal) ||
69
+ Boolean(options.withOrientation));
70
+ }
71
+ function isPlaneRestrictionViewable(planeRestriction, context, options) {
72
+ if (planeRestriction.FrameOfReferenceUID !== context.frameOfReferenceUID) {
73
+ return false;
74
+ }
75
+ if (options.withOrientation) {
76
+ return true;
77
+ }
78
+ const { cameraFocalPoint, viewPlaneNormal } = context;
79
+ if (!cameraFocalPoint || !viewPlaneNormal) {
80
+ return false;
81
+ }
82
+ if (planeRestriction.inPlaneVector1 &&
83
+ !isEqual(0, vec3.dot(viewPlaneNormal, planeRestriction.inPlaneVector1))) {
84
+ return false;
85
+ }
86
+ if (planeRestriction.inPlaneVector2 &&
87
+ !isEqual(0, vec3.dot(viewPlaneNormal, planeRestriction.inPlaneVector2))) {
88
+ return false;
89
+ }
90
+ if (options.withNavigation) {
91
+ return true;
92
+ }
93
+ const pointVector = vec3.sub(vec3.create(), planeRestriction.point, cameraFocalPoint);
94
+ return isEqual(0, vec3.dot(pointVector, viewPlaneNormal));
95
+ }
96
+ function isReferencedImageCompatible(viewRef, context, options) {
97
+ if (viewRef.planeRestriction &&
98
+ viewRef.volumeId &&
99
+ getContextVolumeIds(context).includes(viewRef.volumeId)) {
100
+ return true;
101
+ }
102
+ const referencedImageURIs = getReferencedImageURIs(viewRef);
103
+ if (!referencedImageURIs.length) {
104
+ return true;
105
+ }
106
+ const imageURIEntries = getContextImageURIEntries(context);
107
+ if (!imageURIEntries.length) {
108
+ return false;
109
+ }
110
+ const currentImageIdIndex = context.currentImageIdIndex ?? 0;
111
+ const currentImageURIEntry = imageURIEntries[currentImageIdIndex];
112
+ if (imageURIEntryMatches(currentImageURIEntry, referencedImageURIs)) {
113
+ return true;
114
+ }
115
+ const foundSliceIndex = imageURIEntries.findIndex((imageURIEntry) => imageURIEntryMatches(imageURIEntry, referencedImageURIs));
116
+ if (foundSliceIndex === -1) {
117
+ return false;
118
+ }
119
+ if (context.allowAnyImageReference) {
120
+ return true;
121
+ }
122
+ if (options.withNavigation) {
123
+ return true;
124
+ }
125
+ const rangeEndSliceIndex = getReferencedImageRangeEndIndex(imageURIEntries, viewRef);
126
+ if (rangeEndSliceIndex !== undefined) {
127
+ const start = Math.min(foundSliceIndex, rangeEndSliceIndex);
128
+ const end = Math.max(foundSliceIndex, rangeEndSliceIndex);
129
+ return start <= currentImageIdIndex && currentImageIdIndex <= end;
130
+ }
131
+ return currentImageIdIndex === foundSliceIndex;
132
+ }
133
+ function isDimensionGroupCompatible(viewRef, context, options) {
134
+ const hasDimensionGroupRestriction = typeof viewRef.dimensionGroupNumber !== 'undefined';
135
+ const dimensionGroupNumber = toPositiveInteger(viewRef.dimensionGroupNumber);
136
+ if (!hasDimensionGroupRestriction) {
137
+ return true;
138
+ }
139
+ if (!dimensionGroupNumber) {
140
+ return false;
141
+ }
142
+ if (context.dimensionGroupNumber === dimensionGroupNumber) {
143
+ return true;
144
+ }
145
+ if (!options.withNavigation) {
146
+ return false;
147
+ }
148
+ return (typeof context.numDimensionGroups === 'number' &&
149
+ dimensionGroupNumber <= context.numDimensionGroups);
150
+ }
151
+ function isSliceIndexCompatible(viewRef, context, options) {
152
+ const sliceIndex = viewRef.sliceIndex;
153
+ if (sliceIndex === undefined) {
154
+ return true;
155
+ }
156
+ const { currentImageIdIndex } = context;
157
+ if (Array.isArray(sliceIndex)) {
158
+ if (typeof currentImageIdIndex === 'number') {
159
+ return (sliceIndex[0] <= currentImageIdIndex &&
160
+ currentImageIdIndex <= sliceIndex[1]);
161
+ }
162
+ return false;
163
+ }
164
+ if (!Number.isFinite(sliceIndex)) {
165
+ return false;
166
+ }
167
+ if (currentImageIdIndex === sliceIndex) {
168
+ return true;
169
+ }
170
+ if (!options.withNavigation) {
171
+ return false;
172
+ }
173
+ return isIndexInImageRange(sliceIndex, context.imageIds);
174
+ }
175
+ function getReferencedImageURIs(viewRef) {
176
+ return uniqueStrings([
177
+ viewRef.referencedImageURI,
178
+ ...(viewRef.referencedImageId
179
+ ? getImageIdCompatibleURIs(viewRef.referencedImageId)
180
+ : []),
181
+ ]);
182
+ }
183
+ function getReferencedImageRangeEndIndex(imageURIEntries, viewRef) {
184
+ const rangeEndImageURI = viewRef.multiSliceReference &&
185
+ getReferencedImageURIs(viewRef.multiSliceReference);
186
+ if (!rangeEndImageURI?.length) {
187
+ return;
188
+ }
189
+ const rangeEndSliceIndex = imageURIEntries.findIndex((imageURIEntry) => imageURIEntryMatches(imageURIEntry, rangeEndImageURI));
190
+ return rangeEndSliceIndex === -1 ? undefined : rangeEndSliceIndex;
191
+ }
192
+ function getContextImageURIEntries(context) {
193
+ const imageURIEntries = (context.imageIds || []).map((imageId) => getImageIdCompatibleURIs(imageId));
194
+ const knownImageURIs = new Set();
195
+ for (const imageURIEntry of imageURIEntries) {
196
+ for (const imageURI of imageURIEntry) {
197
+ knownImageURIs.add(imageURI);
198
+ }
199
+ }
200
+ for (const imageURI of context.imageURIs || []) {
201
+ if (!knownImageURIs.has(imageURI)) {
202
+ imageURIEntries.push([imageURI]);
203
+ knownImageURIs.add(imageURI);
204
+ }
205
+ }
206
+ return imageURIEntries;
207
+ }
208
+ function getImageIdCompatibleURIs(imageId) {
209
+ return uniqueStrings([imageIdToURI(imageId), getLegacyImageIdURI(imageId)]);
210
+ }
211
+ function getLegacyImageIdURI(imageId) {
212
+ const colonIndex = imageId.indexOf(':');
213
+ return colonIndex === -1 ? imageId : imageId.substring(colonIndex + 1);
214
+ }
215
+ function imageURIEntryMatches(imageURIEntry, referencedImageURIs) {
216
+ return Boolean(imageURIEntry?.some((imageURI) => referencedImageURIs.includes(imageURI)));
217
+ }
218
+ function getContextDataIds(context) {
219
+ return uniqueStrings([context.dataId, ...(context.dataIds || [])]);
220
+ }
221
+ function getContextVolumeIds(context) {
222
+ return uniqueStrings([context.volumeId, ...(context.volumeIds || [])]);
223
+ }
224
+ function isIndexInImageRange(index, imageIds) {
225
+ if (!imageIds?.length) {
226
+ return true;
227
+ }
228
+ return index >= 0 && index < imageIds.length;
229
+ }
230
+ function uniqueStrings(values) {
231
+ return Array.from(new Set(values.filter((value) => typeof value === 'string')));
232
+ }
233
+ function toPositiveInteger(value) {
234
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 1) {
235
+ return;
236
+ }
237
+ return value;
238
+ }