@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
@@ -1,8 +1,13 @@
1
1
  import cache from '../cache/cache';
2
+ import { InterpolationType } from '../enums';
3
+ import { mat3, vec3 } from 'gl-matrix';
2
4
  import RLEVoxelMap from './RLEVoxelMap';
3
5
  import isEqual from './isEqual';
4
6
  import { iterateOverPointsInShapeVoxelManager } from './pointInShapeCallback';
5
7
  const DEFAULT_RLE_SIZE = 5 * 1024;
8
+ const worldToIndexDeltaScratch = [0, 0, 0];
9
+ const worldToIndexResultScratch = [0, 0, 0];
10
+ const worldToIndexTransformCache = new WeakMap();
6
11
  export default class VoxelManager {
7
12
  get id() {
8
13
  return this._id;
@@ -17,11 +22,10 @@ export default class VoxelManager {
17
22
  this.scalarData = null;
18
23
  this._sliceDataCache = null;
19
24
  this.getAtIJK = (i, j, k) => {
20
- const index = this.toIndex([i, j, k]);
21
- return this._get(index);
25
+ return this._get(i + j * this.width + k * this.frameSize);
22
26
  };
23
27
  this.setAtIJK = (i, j, k, v) => {
24
- const index = this.toIndex([i, j, k]);
28
+ const index = i + j * this.width + k * this.frameSize;
25
29
  const changed = this._set(index, v);
26
30
  if (changed !== false) {
27
31
  this.modifiedSlices.add(k);
@@ -339,6 +343,94 @@ export default class VoxelManager {
339
343
  bounds[2][0] = Math.min(point[2], bounds[2][0]);
340
344
  bounds[2][1] = Math.max(point[2], bounds[2][1]);
341
345
  }
346
+ static getWorldToIndexTransform(volumeGeometry) {
347
+ const cachedTransform = worldToIndexTransformCache.get(volumeGeometry);
348
+ if (cachedTransform) {
349
+ return cachedTransform;
350
+ }
351
+ const direction = volumeGeometry.direction;
352
+ const spacing = volumeGeometry.spacing;
353
+ const transform = mat3.fromValues(direction[0] / spacing[0], direction[3] / spacing[1], direction[6] / spacing[2], direction[1] / spacing[0], direction[4] / spacing[1], direction[7] / spacing[2], direction[2] / spacing[0], direction[5] / spacing[1], direction[8] / spacing[2]);
354
+ worldToIndexTransformCache.set(volumeGeometry, transform);
355
+ return transform;
356
+ }
357
+ static worldToIndexContinuous(volumeGeometry, worldPos) {
358
+ const origin = volumeGeometry.origin;
359
+ worldToIndexDeltaScratch[0] = worldPos[0] - origin[0];
360
+ worldToIndexDeltaScratch[1] = worldPos[1] - origin[1];
361
+ worldToIndexDeltaScratch[2] = worldPos[2] - origin[2];
362
+ const continuousIndex = vec3.transformMat3(worldToIndexResultScratch, worldToIndexDeltaScratch, VoxelManager.getWorldToIndexTransform(volumeGeometry));
363
+ return [continuousIndex[0], continuousIndex[1], continuousIndex[2]];
364
+ }
365
+ static sampleAtWorldCoordinates(volume, worldX, worldY, worldZ, interpolationType = InterpolationType.LINEAR) {
366
+ if (!volume.voxelManager) {
367
+ return NaN;
368
+ }
369
+ const origin = volume.origin;
370
+ worldToIndexDeltaScratch[0] = worldX - origin[0];
371
+ worldToIndexDeltaScratch[1] = worldY - origin[1];
372
+ worldToIndexDeltaScratch[2] = worldZ - origin[2];
373
+ const continuousIndex = vec3.transformMat3(worldToIndexResultScratch, worldToIndexDeltaScratch, VoxelManager.getWorldToIndexTransform(volume));
374
+ return VoxelManager.sampleAtContinuousCoordinates(volume.voxelManager, volume.dimensions, continuousIndex[0], continuousIndex[1], continuousIndex[2], interpolationType);
375
+ }
376
+ static sampleAtWorld(volume, worldPos, interpolationType = InterpolationType.LINEAR) {
377
+ return VoxelManager.sampleAtWorldCoordinates(volume, worldPos[0], worldPos[1], worldPos[2], interpolationType);
378
+ }
379
+ static sampleAtContinuousIndex(voxelManager, dimensions, continuousIndex, interpolationType = InterpolationType.LINEAR) {
380
+ return VoxelManager.sampleAtContinuousCoordinates(voxelManager, dimensions, continuousIndex[0], continuousIndex[1], continuousIndex[2], interpolationType);
381
+ }
382
+ static sampleAtContinuousCoordinates(voxelManager, dimensions, iC, jC, kC, interpolationType) {
383
+ return interpolationType === InterpolationType.NEAREST
384
+ ? VoxelManager.sampleNearestAtContinuousCoordinates(voxelManager, dimensions, iC, jC, kC)
385
+ : VoxelManager.sampleLinearAtContinuousCoordinates(voxelManager, dimensions, iC, jC, kC);
386
+ }
387
+ static sampleNearestAtContinuousCoordinates(voxelManager, dimensions, iC, jC, kC) {
388
+ const i = Math.floor(iC + 0.5 - 1e-6);
389
+ const j = Math.floor(jC + 0.5 - 1e-6);
390
+ const k = Math.floor(kC + 0.5 - 1e-6);
391
+ const dx = dimensions[0];
392
+ const dy = dimensions[1];
393
+ const dz = dimensions[2];
394
+ if (i < 0 || i >= dx || j < 0 || j >= dy || k < 0 || k >= dz) {
395
+ return NaN;
396
+ }
397
+ return Number(voxelManager.getAtIJK(i, j, k));
398
+ }
399
+ static sampleLinearAtContinuousCoordinates(voxelManager, dimensions, i, j, k) {
400
+ const dx = dimensions[0];
401
+ const dy = dimensions[1];
402
+ const dz = dimensions[2];
403
+ if (i < 0 || i > dx - 1 || j < 0 || j > dy - 1 || k < 0 || k > dz - 1) {
404
+ return NaN;
405
+ }
406
+ const i0 = Math.floor(i);
407
+ const j0 = Math.floor(j);
408
+ const k0 = Math.floor(k);
409
+ const i1 = Math.min(i0 + 1, dx - 1);
410
+ const j1 = Math.min(j0 + 1, dy - 1);
411
+ const k1 = Math.min(k0 + 1, dz - 1);
412
+ const di = i - i0;
413
+ const dj = j - j0;
414
+ const dk = k - k0;
415
+ const oneMinusDi = 1 - di;
416
+ const oneMinusDj = 1 - dj;
417
+ const oneMinusDk = 1 - dk;
418
+ const c000 = Number(voxelManager.getAtIJK(i0, j0, k0));
419
+ const c100 = Number(voxelManager.getAtIJK(i1, j0, k0));
420
+ const c010 = Number(voxelManager.getAtIJK(i0, j1, k0));
421
+ const c110 = Number(voxelManager.getAtIJK(i1, j1, k0));
422
+ const c001 = Number(voxelManager.getAtIJK(i0, j0, k1));
423
+ const c101 = Number(voxelManager.getAtIJK(i1, j0, k1));
424
+ const c011 = Number(voxelManager.getAtIJK(i0, j1, k1));
425
+ const c111 = Number(voxelManager.getAtIJK(i1, j1, k1));
426
+ const c00 = c000 * oneMinusDi + c100 * di;
427
+ const c10 = c010 * oneMinusDi + c110 * di;
428
+ const c01 = c001 * oneMinusDi + c101 * di;
429
+ const c11 = c011 * oneMinusDi + c111 * di;
430
+ const c0 = c00 * oneMinusDj + c10 * dj;
431
+ const c1 = c01 * oneMinusDj + c11 * dj;
432
+ return c0 * oneMinusDk + c1 * dk;
433
+ }
342
434
  addPoint(point) {
343
435
  const index = Array.isArray(point)
344
436
  ? point[0] + this.width * point[1] + this.frameSize * point[2]
@@ -401,37 +493,75 @@ export default class VoxelManager {
401
493
  }
402
494
  static createImageVolumeVoxelManager({ dimensions, imageIds, numberOfComponents = 1, id, }) {
403
495
  const pixelsPerSlice = dimensions[0] * dimensions[1];
404
- function getPixelInfo(index) {
405
- const sliceIndex = Math.floor(index / pixelsPerSlice);
406
- if (sliceIndex < 0 || sliceIndex >= dimensions[2]) {
407
- return {};
496
+ const depth = dimensions[2];
497
+ const sliceVoxelManagers = new Array(depth);
498
+ let lastSliceIndex = -1;
499
+ let lastSliceVoxelManager = null;
500
+ const warnedMissingImageIds = new Set();
501
+ const warnedMissingImages = new Set();
502
+ const resolveSliceVoxelManager = (sliceIndex) => {
503
+ if (sliceIndex < 0 || sliceIndex >= depth) {
504
+ return null;
505
+ }
506
+ const cachedVoxelManager = sliceVoxelManagers[sliceIndex];
507
+ if (cachedVoxelManager !== undefined) {
508
+ return cachedVoxelManager;
408
509
  }
409
510
  const imageId = imageIds[sliceIndex];
410
511
  if (!imageId) {
411
- console.warn(`ImageId not found for sliceIndex: ${sliceIndex}`);
412
- return { pixelData: null, pixelIndex: null };
512
+ if (!warnedMissingImageIds.has(sliceIndex)) {
513
+ warnedMissingImageIds.add(sliceIndex);
514
+ console.warn(`ImageId not found for sliceIndex: ${sliceIndex}`);
515
+ }
516
+ sliceVoxelManagers[sliceIndex] = null;
517
+ return null;
413
518
  }
414
519
  const image = cache.getImage(imageId);
415
- if (!image) {
416
- console.warn(`Image not found for imageId: ${imageId}`);
417
- return { pixelData: null, pixelIndex: null };
520
+ if (!image?.voxelManager) {
521
+ if (!warnedMissingImages.has(imageId)) {
522
+ warnedMissingImages.add(imageId);
523
+ console.warn(`Image not found for imageId: ${imageId}`);
524
+ }
525
+ return null;
418
526
  }
419
- const voxelManager = image.voxelManager;
420
- const pixelIndex = index % pixelsPerSlice;
421
- return { voxelManager, pixelIndex };
422
- }
527
+ const imageVoxelManager = image.voxelManager;
528
+ sliceVoxelManagers[sliceIndex] = imageVoxelManager;
529
+ return imageVoxelManager;
530
+ };
423
531
  function getVoxelValue(index) {
424
- const { voxelManager: imageVoxelManager, pixelIndex } = getPixelInfo(index);
425
- if (!imageVoxelManager || pixelIndex === null) {
532
+ const sliceIndex = Math.floor(index / pixelsPerSlice);
533
+ if (sliceIndex < 0 || sliceIndex >= depth) {
426
534
  return null;
427
535
  }
536
+ const imageVoxelManager = sliceIndex === lastSliceIndex
537
+ ? lastSliceVoxelManager
538
+ : resolveSliceVoxelManager(sliceIndex);
539
+ if (!imageVoxelManager) {
540
+ return null;
541
+ }
542
+ if (sliceIndex !== lastSliceIndex) {
543
+ lastSliceIndex = sliceIndex;
544
+ lastSliceVoxelManager = imageVoxelManager;
545
+ }
546
+ const pixelIndex = index - sliceIndex * pixelsPerSlice;
428
547
  return imageVoxelManager.getAtIndex(pixelIndex);
429
548
  }
430
549
  function setVoxelValue(index, v) {
431
- const { voxelManager: imageVoxelManager, pixelIndex } = getPixelInfo(index);
432
- if (!imageVoxelManager || pixelIndex === null) {
550
+ const sliceIndex = Math.floor(index / pixelsPerSlice);
551
+ if (sliceIndex < 0 || sliceIndex >= depth) {
552
+ return false;
553
+ }
554
+ const imageVoxelManager = sliceIndex === lastSliceIndex
555
+ ? lastSliceVoxelManager
556
+ : resolveSliceVoxelManager(sliceIndex);
557
+ if (!imageVoxelManager) {
433
558
  return false;
434
559
  }
560
+ if (sliceIndex !== lastSliceIndex) {
561
+ lastSliceIndex = sliceIndex;
562
+ lastSliceVoxelManager = imageVoxelManager;
563
+ }
564
+ const pixelIndex = index - sliceIndex * pixelsPerSlice;
435
565
  const currentValue = imageVoxelManager.getAtIndex(pixelIndex);
436
566
  const isChanged = !isEqual(v, currentValue);
437
567
  if (!isChanged) {
@@ -441,8 +571,8 @@ export default class VoxelManager {
441
571
  return true;
442
572
  }
443
573
  const _getConstructor = () => {
444
- const { voxelManager: imageVoxelManager, pixelIndex } = getPixelInfo(0);
445
- if (!imageVoxelManager || pixelIndex === null) {
574
+ const imageVoxelManager = resolveSliceVoxelManager(0);
575
+ if (!imageVoxelManager) {
446
576
  return null;
447
577
  }
448
578
  return imageVoxelManager.getConstructor();
@@ -454,6 +584,11 @@ export default class VoxelManager {
454
584
  _getConstructor,
455
585
  _id: id || 'createImageVolumeVoxelManager',
456
586
  });
587
+ voxelManager.invalidateCache = () => {
588
+ sliceVoxelManagers.fill(undefined);
589
+ lastSliceIndex = -1;
590
+ lastSliceVoxelManager = null;
591
+ };
457
592
  voxelManager.getMiddleSliceData = () => {
458
593
  const middleSliceIndex = Math.floor(dimensions[2] / 2);
459
594
  return voxelManager.getSliceData({
@@ -488,8 +623,8 @@ export default class VoxelManager {
488
623
  return [minValue, maxValue];
489
624
  };
490
625
  voxelManager._getScalarDataLength = () => {
491
- const { voxelManager: imageVoxelManager, pixelIndex } = getPixelInfo(0);
492
- if (!imageVoxelManager || pixelIndex === null) {
626
+ const imageVoxelManager = resolveSliceVoxelManager(0);
627
+ if (!imageVoxelManager) {
493
628
  return 0;
494
629
  }
495
630
  return imageVoxelManager.getScalarDataLength() * dimensions[2];
@@ -503,8 +638,8 @@ export default class VoxelManager {
503
638
  const scalarData = new ScalarDataConstructor(dataLength);
504
639
  const sliceSize = dimensions[0] * dimensions[1] * numberOfComponents;
505
640
  for (let sliceIndex = 0; sliceIndex < dimensions[2]; sliceIndex++) {
506
- const { voxelManager: imageVoxelManager, pixelIndex } = getPixelInfo((sliceIndex * sliceSize) / numberOfComponents);
507
- if (imageVoxelManager && pixelIndex !== null) {
641
+ const imageVoxelManager = resolveSliceVoxelManager(sliceIndex);
642
+ if (imageVoxelManager) {
508
643
  const sliceStart = sliceIndex * sliceSize;
509
644
  const pixelData = imageVoxelManager.getScalarData();
510
645
  if (numberOfComponents === 1) {
@@ -527,7 +662,7 @@ export default class VoxelManager {
527
662
  let minValue = Infinity;
528
663
  let maxValue = -Infinity;
529
664
  for (let sliceIndex = 0; sliceIndex < dimensions[2]; sliceIndex++) {
530
- const { voxelManager: imageVoxelManager } = getPixelInfo((sliceIndex * sliceSize) / numberOfComponents);
665
+ const imageVoxelManager = resolveSliceVoxelManager(sliceIndex);
531
666
  if (imageVoxelManager && SliceDataConstructor) {
532
667
  const sliceStart = sliceIndex * sliceSize;
533
668
  const sliceEnd = sliceStart + sliceSize;
@@ -0,0 +1,119 @@
1
+ import type { Point3 } from '../types';
2
+ export interface WSIImageMetadataSource {
3
+ NumberOfFrames?: number;
4
+ TotalPixelMatrixColumns: number;
5
+ TotalPixelMatrixRows: number;
6
+ ImageOrientationSlide?: number[];
7
+ ImagedVolumeWidth?: number;
8
+ ImagedVolumeHeight?: number;
9
+ ImagedVolumeDepth?: number;
10
+ TotalPixelMatrixOriginSequence?: Array<{
11
+ XOffsetInSlideCoordinateSystem?: number;
12
+ YOffsetInSlideCoordinateSystem?: number;
13
+ ZOffsetInSlideCoordinateSystem?: number;
14
+ }>;
15
+ ['00080008']?: {
16
+ Value?: string[];
17
+ };
18
+ ['00200052']?: {
19
+ Value?: string[];
20
+ };
21
+ isMultiframe?: unknown;
22
+ frameNumber?: unknown;
23
+ [key: string]: unknown;
24
+ }
25
+ export interface WSIImageVolumeLike extends WSIImageMetadataSource {
26
+ ImageType: string[];
27
+ }
28
+ export interface WSIClientLike {
29
+ getDICOMwebMetadata(imageId: string): WSIImageMetadataSource;
30
+ }
31
+ export interface WSIMapViewLike {
32
+ getCenter(): [number, number];
33
+ getExtent?(): number[];
34
+ getProjection(): {
35
+ getExtent(): number[];
36
+ };
37
+ getResolution(): number;
38
+ getResolutionForZoom?(zoom: number): number;
39
+ getRotation(): number;
40
+ getZoom(): number;
41
+ setCenter(center: [number, number]): void;
42
+ setResolution?(resolution: number): void;
43
+ setRotation(rotation: number): void;
44
+ setZoom(zoom: number): void;
45
+ }
46
+ export interface WSIMapLike {
47
+ getView(): WSIMapViewLike;
48
+ getViewport(): HTMLElement;
49
+ on(eventName: string, handler: () => void): void;
50
+ render(): void;
51
+ un(eventName: string, handler: () => void): void;
52
+ updateSize?(): void;
53
+ }
54
+ export interface WSIViewerLike {
55
+ cleanup?(): void;
56
+ deactivateDragPanInteraction(): void;
57
+ getAffine(): unknown;
58
+ getMap(): WSIMapLike;
59
+ render(args: {
60
+ container: HTMLElement;
61
+ }): void;
62
+ }
63
+ export interface WSITransformUtilitiesLike {
64
+ applyInverseTransform(args: {
65
+ coordinate: [number, number];
66
+ affine: unknown;
67
+ }): [number, number];
68
+ applyTransform(args: {
69
+ coordinate: [number, number];
70
+ affine: unknown;
71
+ }): [number, number];
72
+ }
73
+ export interface DicomMicroscopyViewerLike {
74
+ metadata: {
75
+ VLWholeSlideMicroscopyImage: new (args: {
76
+ metadata: WSIImageMetadataSource;
77
+ }) => WSIImageVolumeLike;
78
+ };
79
+ utils?: WSITransformUtilitiesLike;
80
+ viewer: {
81
+ VolumeImageViewer: new (args: {
82
+ client: unknown;
83
+ metadata: WSIImageVolumeLike[];
84
+ controls: string[];
85
+ retrieveRendered: boolean;
86
+ bindings: Record<string, unknown>;
87
+ }) => WSIViewerLike;
88
+ };
89
+ }
90
+ export interface WSIImageDataMetadata {
91
+ bitsAllocated: number;
92
+ numberOfComponents: number;
93
+ origin: Point3;
94
+ direction: number[];
95
+ dimensions: [number, number, number];
96
+ spacing: [number, number, number];
97
+ hasPixelSpacing: boolean;
98
+ numVoxels: number;
99
+ imagePlaneModule: Record<string, unknown>;
100
+ }
101
+ export interface LoadedWSIData {
102
+ volumeImages: WSIImageVolumeLike[];
103
+ metadataDicomweb: WSIImageMetadataSource[];
104
+ metadata: WSIImageDataMetadata;
105
+ frameOfReferenceUID: string | null;
106
+ imageURISet: Set<string>;
107
+ }
108
+ export declare function getDicomMicroscopyViewer(): Promise<DicomMicroscopyViewerLike>;
109
+ export declare function addWSIMiniNavigationOverlayCss(): void;
110
+ export declare function getWSIImageDataMetadata(args: {
111
+ metadataDicomweb: WSIImageMetadataSource[];
112
+ imageIds: string[];
113
+ imageIndex?: number;
114
+ }): WSIImageDataMetadata;
115
+ export declare function loadWSIData(args: {
116
+ imageIds: string[];
117
+ client: WSIClientLike;
118
+ dicomMicroscopyViewer?: DicomMicroscopyViewerLike;
119
+ }): Promise<LoadedWSIData>;
@@ -0,0 +1,110 @@
1
+ import { vec3 } from 'gl-matrix';
2
+ import { MetadataModules } from '../enums';
3
+ import { peerImport } from '../init';
4
+ import * as metaData from '../metaData';
5
+ import microscopyViewportCss from '../constants/microscopyViewportCss';
6
+ import imageIdToURI from './imageIdToURI';
7
+ const overlayCssId = 'wsiViewportOverlayCss';
8
+ export async function getDicomMicroscopyViewer() {
9
+ return peerImport('dicom-microscopy-viewer');
10
+ }
11
+ export function addWSIMiniNavigationOverlayCss() {
12
+ if (document.getElementById(overlayCssId)) {
13
+ return;
14
+ }
15
+ const overlayCss = document.createElement('style');
16
+ overlayCss.innerText = microscopyViewportCss;
17
+ overlayCss.setAttribute('id', overlayCssId);
18
+ document.getElementsByTagName('head')[0].append(overlayCss);
19
+ }
20
+ export function getWSIImageDataMetadata(args) {
21
+ const { metadataDicomweb, imageIds, imageIndex = 0 } = args;
22
+ const maxImage = metadataDicomweb.reduce((currentMax, image) => {
23
+ return currentMax?.NumberOfFrames < image.NumberOfFrames
24
+ ? image
25
+ : currentMax;
26
+ });
27
+ const { TotalPixelMatrixColumns: columns, TotalPixelMatrixRows: rows, ImageOrientationSlide, ImagedVolumeWidth: width, ImagedVolumeHeight: height, ImagedVolumeDepth: depth, } = maxImage;
28
+ const imagePlaneModule = metaData.get(MetadataModules.IMAGE_PLANE, imageIds[imageIndex]);
29
+ let rowCosines = ImageOrientationSlide.slice(0, 3);
30
+ let columnCosines = ImageOrientationSlide.slice(3, 6);
31
+ if (rowCosines == null || columnCosines == null) {
32
+ rowCosines = [1, 0, 0];
33
+ columnCosines = [0, 1, 0];
34
+ }
35
+ const rowCosineVec = vec3.fromValues(rowCosines[0], rowCosines[1], rowCosines[2]);
36
+ const colCosineVec = vec3.fromValues(columnCosines[0], columnCosines[1], columnCosines[2]);
37
+ const scanAxisNormal = vec3.create();
38
+ vec3.cross(scanAxisNormal, rowCosineVec, colCosineVec);
39
+ const { XOffsetInSlideCoordinateSystem = 0, YOffsetInSlideCoordinateSystem = 0, ZOffsetInSlideCoordinateSystem = 0, } = maxImage.TotalPixelMatrixOriginSequence?.[0] || {};
40
+ const origin = [
41
+ XOffsetInSlideCoordinateSystem,
42
+ YOffsetInSlideCoordinateSystem,
43
+ ZOffsetInSlideCoordinateSystem,
44
+ ];
45
+ const xSpacing = width / columns;
46
+ const ySpacing = height / rows;
47
+ const zSpacing = depth;
48
+ const xVoxels = columns;
49
+ const yVoxels = rows;
50
+ const zVoxels = 1;
51
+ return {
52
+ bitsAllocated: 8,
53
+ numberOfComponents: 3,
54
+ origin,
55
+ direction: [...rowCosineVec, ...colCosineVec, ...scanAxisNormal],
56
+ dimensions: [xVoxels, yVoxels, zVoxels],
57
+ spacing: [xSpacing, ySpacing, zSpacing],
58
+ hasPixelSpacing: !!(width && height),
59
+ numVoxels: xVoxels * yVoxels * zVoxels,
60
+ imagePlaneModule,
61
+ };
62
+ }
63
+ export async function loadWSIData(args) {
64
+ const { imageIds, client, dicomMicroscopyViewer } = args;
65
+ const DicomMicroscopyViewer = dicomMicroscopyViewer || (await getDicomMicroscopyViewer());
66
+ let frameOfReferenceUID = null;
67
+ const metadataDicomweb = imageIds.map((imageId) => {
68
+ const imageMetadata = client.getDICOMwebMetadata(imageId);
69
+ Object.defineProperty(imageMetadata, 'isMultiframe', {
70
+ value: imageMetadata.isMultiframe,
71
+ enumerable: false,
72
+ });
73
+ Object.defineProperty(imageMetadata, 'frameNumber', {
74
+ value: undefined,
75
+ enumerable: false,
76
+ });
77
+ const imageType = imageMetadata['00080008']?.Value;
78
+ if (imageType?.length === 1) {
79
+ imageMetadata['00080008'].Value = imageType[0].split('\\');
80
+ }
81
+ const imageFrameOfReference = imageMetadata['00200052']?.Value?.[0];
82
+ if (!frameOfReferenceUID) {
83
+ frameOfReferenceUID = imageFrameOfReference;
84
+ }
85
+ else if (imageFrameOfReference !== frameOfReferenceUID) {
86
+ imageMetadata['00200052'].Value = [frameOfReferenceUID];
87
+ }
88
+ return imageMetadata;
89
+ });
90
+ const volumeImages = [];
91
+ metadataDicomweb.forEach((metadata) => {
92
+ const image = new DicomMicroscopyViewer.metadata.VLWholeSlideMicroscopyImage({
93
+ metadata,
94
+ });
95
+ const imageFlavor = image.ImageType[2];
96
+ if (imageFlavor === 'VOLUME' || imageFlavor === 'THUMBNAIL') {
97
+ volumeImages.push(image);
98
+ }
99
+ });
100
+ return {
101
+ volumeImages,
102
+ metadataDicomweb,
103
+ metadata: getWSIImageDataMetadata({
104
+ metadataDicomweb: volumeImages,
105
+ imageIds,
106
+ }),
107
+ frameOfReferenceUID,
108
+ imageURISet: new Set(imageIds.map((imageId) => imageIdToURI(imageId))),
109
+ };
110
+ }
@@ -8,29 +8,29 @@ export function getValidVOILUTFunction(voiLUTFunction) {
8
8
  }
9
9
  export function getImagePlaneModule(imageId) {
10
10
  const imagePlaneModule = metaData.get(MetadataModules.IMAGE_PLANE, imageId);
11
+ if (imagePlaneModule.usingDefaultValues !== undefined) {
12
+ return imagePlaneModule;
13
+ }
14
+ if (imagePlaneModule.columnPixelSpacing &&
15
+ imagePlaneModule.rowPixelSpacing &&
16
+ imagePlaneModule.columnCosines &&
17
+ imagePlaneModule.rowCosines &&
18
+ imagePlaneModule.imagePositionPatient &&
19
+ imagePlaneModule.imageOrientationPatient) {
20
+ return imagePlaneModule;
21
+ }
11
22
  const newImagePlaneModule = {
12
23
  ...imagePlaneModule,
24
+ usingDefaultValues: true,
13
25
  };
14
- if (!newImagePlaneModule.columnPixelSpacing) {
15
- newImagePlaneModule.columnPixelSpacing = 1;
16
- }
17
- if (!newImagePlaneModule.rowPixelSpacing) {
18
- newImagePlaneModule.rowPixelSpacing = 1;
19
- }
20
- if (!newImagePlaneModule.columnCosines) {
21
- newImagePlaneModule.columnCosines = [0, 1, 0];
22
- }
23
- if (!newImagePlaneModule.rowCosines) {
24
- newImagePlaneModule.rowCosines = [1, 0, 0];
25
- }
26
- if (!newImagePlaneModule.imagePositionPatient) {
27
- newImagePlaneModule.imagePositionPatient = [0, 0, 0];
28
- }
29
- if (!newImagePlaneModule.imageOrientationPatient) {
30
- newImagePlaneModule.imageOrientationPatient = new Float32Array([
31
- 1, 0, 0, 0, 1, 0,
32
- ]);
33
- }
26
+ newImagePlaneModule.columnPixelSpacing ||= 1;
27
+ newImagePlaneModule.rowPixelSpacing ||= 1;
28
+ newImagePlaneModule.columnCosines ||= [0, 1, 0];
29
+ newImagePlaneModule.rowCosines ||= [1, 0, 0];
30
+ newImagePlaneModule.imagePositionPatient ||= [0, 0, 0];
31
+ newImagePlaneModule.imageOrientationPatient ||= new Float32Array([
32
+ 1, 0, 0, 0, 1, 0,
33
+ ]);
34
34
  return newImagePlaneModule;
35
35
  }
36
36
  export function calibrateImagePlaneModule(imageId, imagePlaneModule, currentCalibration) {
@@ -53,10 +53,10 @@ export function calibrateImagePlaneModule(imageId, imagePlaneModule, currentCali
53
53
  }
54
54
  export function buildMetadata(image) {
55
55
  const imageId = image.imageId;
56
- const { pixelRepresentation, bitsAllocated, bitsStored, highBit, photometricInterpretation, samplesPerPixel, } = metaData.get('imagePixelModule', imageId);
56
+ const { pixelRepresentation, bitsAllocated, bitsStored, highBit, photometricInterpretation, samplesPerPixel, } = metaData.get(MetadataModules.IMAGE_PIXEL, imageId);
57
57
  const { windowWidth, windowCenter, voiLUTFunction } = image;
58
- const { modality } = metaData.get('generalSeriesModule', imageId);
59
- const imageIdScalingFactor = metaData.get('scalingModule', imageId);
58
+ const { modality } = metaData.get(MetadataModules.GENERAL_SERIES, imageId);
59
+ const imageIdScalingFactor = metaData.get(MetadataModules.SCALING, imageId);
60
60
  const calibration = metaData.get(MetadataModules.CALIBRATION, imageId);
61
61
  const voiLUTFunctionEnum = getValidVOILUTFunction(voiLUTFunction);
62
62
  const imagePlaneModule = getImagePlaneModule(imageId);
@@ -1,5 +1,6 @@
1
1
  import { vec3 } from 'gl-matrix';
2
2
  import * as metaData from '../metaData';
3
+ import { MetadataModules } from '../enums';
3
4
  import { getConfiguration } from '../init';
4
5
  const DEFAULT_THICKNESS_SINGLE_SLICE = 1;
5
6
  function getPixelSpacingForCubicVoxel(metadata) {
@@ -18,9 +19,9 @@ function getPixelSpacingForCubicVoxel(metadata) {
18
19
  return undefined;
19
20
  }
20
21
  export default function calculateSpacingBetweenImageIds(imageIds) {
21
- const { imagePositionPatient: referenceImagePositionPatient, imageOrientationPatient, } = metaData.get('imagePlaneModule', imageIds[0]);
22
+ const { imagePositionPatient: referenceImagePositionPatient, imageOrientationPatient, } = metaData.get(MetadataModules.IMAGE_PLANE, imageIds[0]);
22
23
  if (imageIds.length === 1) {
23
- const { sliceThickness, spacingBetweenSlices, columnPixelSpacing, rowPixelSpacing, pixelSpacing, } = metaData.get('imagePlaneModule', imageIds[0]);
24
+ const { sliceThickness, spacingBetweenSlices, columnPixelSpacing, rowPixelSpacing, pixelSpacing, } = metaData.get(MetadataModules.IMAGE_PLANE, imageIds[0]);
24
25
  if (sliceThickness)
25
26
  return sliceThickness;
26
27
  if (spacingBetweenSlices)
@@ -43,7 +44,7 @@ export default function calculateSpacingBetweenImageIds(imageIds) {
43
44
  const usingWadoUri = imageIds[0].split(':')[0] === 'wadouri';
44
45
  let spacing;
45
46
  function getDistance(imageId) {
46
- const { imagePositionPatient } = metaData.get('imagePlaneModule', imageId);
47
+ const { imagePositionPatient } = metaData.get(MetadataModules.IMAGE_PLANE, imageId);
47
48
  const positionVector = vec3.create();
48
49
  const ippVec = vec3.fromValues(imagePositionPatient[0], imagePositionPatient[1], imagePositionPatient[2]);
49
50
  vec3.sub(positionVector, refIppVec, ippVec);
@@ -69,7 +70,7 @@ export default function calculateSpacingBetweenImageIds(imageIds) {
69
70
  imageIds[0],
70
71
  imageIds[Math.floor(imageIds.length / 2)],
71
72
  ];
72
- const metadataForMiddleImage = metaData.get('imagePlaneModule', prefetchedImageIds[1]);
73
+ const metadataForMiddleImage = metaData.get(MetadataModules.IMAGE_PLANE, prefetchedImageIds[1]);
73
74
  if (!metadataForMiddleImage) {
74
75
  throw new Error('Incomplete metadata required for volume construction.');
75
76
  }
@@ -81,7 +82,7 @@ export default function calculateSpacingBetweenImageIds(imageIds) {
81
82
  Math.abs(distanceBetweenFirstAndMiddleImages) /
82
83
  Math.floor(imageIds.length / 2);
83
84
  }
84
- const { sliceThickness, spacingBetweenSlices, columnPixelSpacing, rowPixelSpacing, pixelSpacing, } = metaData.get('imagePlaneModule', imageIds[0]);
85
+ const { sliceThickness, spacingBetweenSlices, columnPixelSpacing, rowPixelSpacing, pixelSpacing, } = metaData.get(MetadataModules.IMAGE_PLANE, imageIds[0]);
85
86
  const { strictZSpacingForVolumeViewport } = getConfiguration().rendering;
86
87
  if ((spacing === 0 || isNaN(spacing)) && !strictZSpacingForVolumeViewport) {
87
88
  if (spacingBetweenSlices) {
@@ -1,6 +1,6 @@
1
- import type { IImageCalibration } from '../types/IImageCalibration';
2
- declare const metadataProvider: {
3
- add: (imageId: string, payload: IImageCalibration) => void;
4
- get: (type: string, imageId: string) => IImageCalibration;
1
+ declare const _default: {
2
+ add: (imageId: string, payload: import("@cornerstonejs/metadata").IImageCalibration) => void;
3
+ get: (type: string, imageId: string) => import("@cornerstonejs/metadata").IImageCalibration;
4
+ clear: () => void;
5
5
  };
6
- export default metadataProvider;
6
+ export default _default;
@@ -1,15 +1,2 @@
1
- import imageIdToURI from './imageIdToURI';
2
- const state = {};
3
- const metadataProvider = {
4
- add: (imageId, payload) => {
5
- const imageURI = imageIdToURI(imageId);
6
- state[imageURI] = payload;
7
- },
8
- get: (type, imageId) => {
9
- if (type === 'calibratedPixelSpacing') {
10
- const imageURI = imageIdToURI(imageId);
11
- return state[imageURI];
12
- }
13
- },
14
- };
15
- export default metadataProvider;
1
+ import { utilities } from '@cornerstonejs/metadata';
2
+ export default utilities.calibratedPixelSpacingMetadataProvider;
@@ -0,0 +1,3 @@
1
+ import type { Point3 } from '../types';
2
+ export default function clonePoint3(point: ArrayLike<number>): Point3;
3
+ export default function clonePoint3(point?: ArrayLike<number>): Point3 | undefined;
@@ -0,0 +1,3 @@
1
+ export default function clonePoint3(point) {
2
+ return point ? [point[0], point[1], point[2]] : undefined;
3
+ }
@@ -2,10 +2,11 @@ import type { ColormapPublic, ColormapRegistration } from '../types';
2
2
  declare function registerColormap(colormap: ColormapRegistration): void;
3
3
  declare function getColormap(name: any): any;
4
4
  declare function getColormapNames(): any[];
5
+ declare function resolveColormap(name?: string): ColormapRegistration | undefined;
5
6
  declare function findMatchingColormap(rgbPoints: any, actor: any): ColormapPublic | null;
6
7
  export declare function setColorMapTransferFunctionForVolumeActor(volumeInfo: any): void;
7
8
  export declare function updateOpacity(volumeActor: any, newOpacity: any): void;
8
9
  export declare function updateThreshold(volumeActor: any, newThreshold: any): void;
9
10
  declare function getThresholdValue(volumeActor: any): any;
10
11
  declare function getMaxOpacity(volumeActor: any): number;
11
- export { getColormap, getColormapNames, registerColormap, findMatchingColormap, getThresholdValue, getMaxOpacity, };
12
+ export { getColormap, getColormapNames, resolveColormap, registerColormap, findMatchingColormap, getThresholdValue, getMaxOpacity, };