@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,83 @@
1
+ export declare const ECG_SECONDS_WIDTH = 150;
2
+ export declare const ECG_CHANNEL_SPACING = 5;
3
+ export declare const ECG_RENDERING_COLORS: {
4
+ readonly gridMajor: "#7f0000";
5
+ readonly gridMinor: "#3f0000";
6
+ readonly baseline: "#7f4c00";
7
+ readonly trace: "#ffffff";
8
+ readonly label: "#ffff00";
9
+ readonly background: "#000000";
10
+ };
11
+ export interface ECGChannelLike {
12
+ name: string;
13
+ data: Int16Array;
14
+ min: number;
15
+ max: number;
16
+ visible?: boolean;
17
+ }
18
+ export interface ECGWaveformLike<TChannel extends ECGChannelLike = ECGChannelLike> {
19
+ channels: TChannel[];
20
+ numberOfChannels: number;
21
+ numberOfSamples: number;
22
+ samplingFrequency: number;
23
+ bitsAllocated: number;
24
+ sampleInterpretation: string;
25
+ multiplexGroupLabel?: string;
26
+ calibration?: unknown;
27
+ }
28
+ export interface ECGChannelLayout<TChannel extends ECGChannelLike = ECGChannelLike> {
29
+ channel: TChannel;
30
+ itemHeight: number;
31
+ yOffset: number;
32
+ baseline: number;
33
+ }
34
+ export interface ECGRenderMetrics {
35
+ ecgWidth: number;
36
+ ecgHeight: number;
37
+ channelScale: number;
38
+ worldToCanvasRatio: number;
39
+ xOffsetCanvas: number;
40
+ yOffsetCanvas: number;
41
+ }
42
+ export interface ECGGridMetrics {
43
+ ecgWidth: number;
44
+ ecgHeight: number;
45
+ channelScale: number;
46
+ }
47
+ export declare function loadECGWaveform(dataId: string): Promise<{
48
+ waveform: ECGWaveformLike;
49
+ calibration: unknown;
50
+ }>;
51
+ export declare function computeECGMinMax(data: Int16Array): {
52
+ min: number;
53
+ max: number;
54
+ };
55
+ export declare function getDefaultECGValueRange(waveform: ECGWaveformLike): [number, number];
56
+ export declare function getVisibleECGChannels<TChannel extends ECGChannelLike>(channels: TChannel[], visibleChannels?: number[]): TChannel[];
57
+ export declare function getVisibleECGChannelsByFlag<TChannel extends ECGChannelLike>(channels: TChannel[]): TChannel[];
58
+ export declare function computeECGHeight<TChannel extends ECGChannelLike>(visibleChannels: TChannel[], channelScale: number): number;
59
+ export declare function computeECGChannelLayouts<TChannel extends ECGChannelLike>(args: {
60
+ visibleChannels: TChannel[];
61
+ channelScale: number;
62
+ }): ECGChannelLayout<TChannel>[];
63
+ export declare function computeECGRenderMetrics<TChannel extends ECGChannelLike>(args: {
64
+ canvas: HTMLCanvasElement;
65
+ visibleChannels: TChannel[];
66
+ windowMs: number;
67
+ valueRange: [number, number];
68
+ }): ECGRenderMetrics;
69
+ export declare function drawECGGrid(ctx: CanvasRenderingContext2D, metrics: ECGGridMetrics, options?: {
70
+ showGrid?: boolean;
71
+ }): void;
72
+ export declare function drawECGTraces<TChannel extends ECGChannelLike>(args: {
73
+ ctx: CanvasRenderingContext2D;
74
+ layouts: ECGChannelLayout<TChannel>[];
75
+ ecgWidth: number;
76
+ channelScale: number;
77
+ startIndex?: number;
78
+ endIndex?: number;
79
+ lineWidth?: number;
80
+ amplitudeScale?: number;
81
+ }): void;
82
+ export declare function drawECGLabels<TChannel extends ECGChannelLike>(ctx: CanvasRenderingContext2D, layouts: ECGChannelLayout<TChannel>[], worldToCanvasRatio: number): void;
83
+ export declare function ensureECGCanvasSize(canvas: HTMLCanvasElement): void;
@@ -0,0 +1,228 @@
1
+ import { MetadataModules } from '../enums';
2
+ import * as metaData from '../metaData';
3
+ export const ECG_SECONDS_WIDTH = 150;
4
+ export const ECG_CHANNEL_SPACING = 5;
5
+ export const ECG_RENDERING_COLORS = {
6
+ gridMajor: '#7f0000',
7
+ gridMinor: '#3f0000',
8
+ baseline: '#7f4c00',
9
+ trace: '#ffffff',
10
+ label: '#ffff00',
11
+ background: '#000000',
12
+ };
13
+ export async function loadECGWaveform(dataId) {
14
+ const ecgModule = metaData.get(MetadataModules.ECG, dataId);
15
+ if (!ecgModule?.waveformData?.retrieveBulkData) {
16
+ throw new Error(`[ECG] No ECG waveform data for ${dataId}`);
17
+ }
18
+ const { numberOfWaveformChannels: numberOfChannels, numberOfWaveformSamples: numberOfSamples, samplingFrequency, waveformBitsAllocated: bitsAllocated = 16, waveformSampleInterpretation: sampleInterpretation = 'SS', multiplexGroupLabel, channelDefinitionSequence: channelDefinitions = [], } = ecgModule;
19
+ const channelArrays = await ecgModule.waveformData.retrieveBulkData();
20
+ const calibration = metaData.get(MetadataModules.CALIBRATION, dataId);
21
+ const channels = [];
22
+ for (let index = 0; index < numberOfChannels; index++) {
23
+ const channelDefinition = channelDefinitions[index] || {};
24
+ const name = channelDefinition.channelSourceSequence?.codeMeaning ||
25
+ channelDefinition.ChannelSourceSequence?.CodeMeaning ||
26
+ `Channel ${index + 1}`;
27
+ const data = channelArrays[index] || new Int16Array(0);
28
+ const { min, max } = computeECGMinMax(data);
29
+ channels.push({
30
+ name,
31
+ data,
32
+ min,
33
+ max,
34
+ });
35
+ }
36
+ return {
37
+ waveform: {
38
+ channels,
39
+ numberOfChannels,
40
+ numberOfSamples,
41
+ samplingFrequency,
42
+ bitsAllocated,
43
+ sampleInterpretation,
44
+ multiplexGroupLabel,
45
+ calibration,
46
+ },
47
+ calibration,
48
+ };
49
+ }
50
+ export function computeECGMinMax(data) {
51
+ let min = 0;
52
+ let max = 0;
53
+ for (let index = 0; index < data.length; index++) {
54
+ if (data[index] < min) {
55
+ min = data[index];
56
+ }
57
+ if (data[index] > max) {
58
+ max = data[index];
59
+ }
60
+ }
61
+ return { min, max };
62
+ }
63
+ export function getDefaultECGValueRange(waveform) {
64
+ let min = 0;
65
+ let max = 0;
66
+ waveform.channels.forEach((channel) => {
67
+ min = Math.min(min, channel.min);
68
+ max = Math.max(max, channel.max);
69
+ });
70
+ if (min === max) {
71
+ return [-1, 1];
72
+ }
73
+ return [min, max];
74
+ }
75
+ export function getVisibleECGChannels(channels, visibleChannels) {
76
+ if (!visibleChannels) {
77
+ return channels.filter((channel) => channel.data.length > 0);
78
+ }
79
+ const visible = new Set(visibleChannels);
80
+ return channels.filter((_channel, index) => visible.has(index) && channels[index].data.length > 0);
81
+ }
82
+ export function getVisibleECGChannelsByFlag(channels) {
83
+ return channels.filter((channel) => channel.visible !== false && channel.data.length > 0);
84
+ }
85
+ export function computeECGHeight(visibleChannels, channelScale) {
86
+ let totalHeight = 0;
87
+ visibleChannels.forEach((channel) => {
88
+ totalHeight += (channel.max - channel.min) * channelScale * 1.25;
89
+ totalHeight += ECG_CHANNEL_SPACING;
90
+ });
91
+ return totalHeight || 1;
92
+ }
93
+ export function computeECGChannelLayouts(args) {
94
+ const { visibleChannels, channelScale } = args;
95
+ const layouts = [];
96
+ let yOffset = 0;
97
+ visibleChannels.forEach((channel) => {
98
+ const itemHeight = (channel.max - channel.min) * channelScale * 1.25;
99
+ yOffset += itemHeight + ECG_CHANNEL_SPACING;
100
+ const baseline = yOffset + channel.min * channelScale;
101
+ layouts.push({
102
+ channel,
103
+ itemHeight,
104
+ yOffset,
105
+ baseline,
106
+ });
107
+ });
108
+ return layouts;
109
+ }
110
+ export function computeECGRenderMetrics(args) {
111
+ const { canvas, visibleChannels, windowMs, valueRange } = args;
112
+ const ecgWidth = Math.max(1, Math.ceil((windowMs / 1000) * ECG_SECONDS_WIDTH));
113
+ const [minValue, maxValue] = valueRange;
114
+ const range = Math.max(1, maxValue - minValue);
115
+ const canvasAspect = canvas.clientHeight && canvas.clientWidth
116
+ ? canvas.clientHeight / canvas.clientWidth
117
+ : 2 / 3;
118
+ const targetTotalHeight = ecgWidth * canvasAspect;
119
+ const totalSpacing = ECG_CHANNEL_SPACING * Math.max(1, visibleChannels.length);
120
+ const heightPerChannel = (targetTotalHeight - totalSpacing) / Math.max(1, visibleChannels.length);
121
+ const channelScale = heightPerChannel / (range * 1.25);
122
+ const ecgHeight = computeECGHeight(visibleChannels, channelScale);
123
+ const worldToCanvasRatio = Math.min(canvas.clientWidth / Math.max(1, ecgWidth), canvas.clientHeight / Math.max(1, ecgHeight));
124
+ const drawWidth = ecgWidth * worldToCanvasRatio;
125
+ const drawHeight = ecgHeight * worldToCanvasRatio;
126
+ return {
127
+ ecgWidth,
128
+ ecgHeight,
129
+ channelScale,
130
+ worldToCanvasRatio,
131
+ xOffsetCanvas: (canvas.clientWidth - drawWidth) / 2,
132
+ yOffsetCanvas: (canvas.clientHeight - drawHeight) / 2,
133
+ };
134
+ }
135
+ export function drawECGGrid(ctx, metrics, options) {
136
+ if (options?.showGrid === false || metrics.channelScale <= 0) {
137
+ return;
138
+ }
139
+ const { ecgWidth, ecgHeight, channelScale } = metrics;
140
+ const minLineSpacing = 8;
141
+ let horizontalGridUnit = 100;
142
+ while (horizontalGridUnit * channelScale < minLineSpacing) {
143
+ horizontalGridUnit *= 2;
144
+ }
145
+ const minorH = horizontalGridUnit * channelScale;
146
+ const majorH = minorH * 5;
147
+ const minorV = ECG_SECONDS_WIDTH / 25;
148
+ const majorV = ECG_SECONDS_WIDTH / 5;
149
+ ctx.strokeStyle = ECG_RENDERING_COLORS.gridMinor;
150
+ ctx.lineWidth = 0.5;
151
+ ctx.beginPath();
152
+ for (let y = minorH; y <= ecgHeight; y += minorH) {
153
+ if (Math.round(y / minorH) % 5 !== 0) {
154
+ ctx.moveTo(0, y);
155
+ ctx.lineTo(ecgWidth, y);
156
+ }
157
+ }
158
+ for (let x = minorV; x <= ecgWidth; x += minorV) {
159
+ if (Math.round(x / minorV) % 5 !== 0) {
160
+ ctx.moveTo(x, 0);
161
+ ctx.lineTo(x, ecgHeight);
162
+ }
163
+ }
164
+ ctx.stroke();
165
+ ctx.strokeStyle = ECG_RENDERING_COLORS.gridMajor;
166
+ ctx.lineWidth = 1;
167
+ ctx.beginPath();
168
+ for (let y = majorH; y <= ecgHeight; y += majorH) {
169
+ ctx.moveTo(0, y);
170
+ ctx.lineTo(ecgWidth, y);
171
+ }
172
+ for (let x = majorV; x <= ecgWidth; x += majorV) {
173
+ ctx.moveTo(x, 0);
174
+ ctx.lineTo(x, ecgHeight);
175
+ }
176
+ ctx.stroke();
177
+ }
178
+ export function drawECGTraces(args) {
179
+ const { ctx, layouts, ecgWidth, channelScale, startIndex = 0, endIndex, lineWidth = 1, amplitudeScale = 1, } = args;
180
+ layouts.forEach(({ channel, baseline }) => {
181
+ const resolvedEndIndex = Math.min(endIndex ?? channel.data.length, channel.data.length);
182
+ const resolvedStartIndex = Math.max(0, Math.min(startIndex, resolvedEndIndex - 1));
183
+ const sampleCount = Math.max(1, resolvedEndIndex - resolvedStartIndex);
184
+ ctx.strokeStyle = ECG_RENDERING_COLORS.baseline;
185
+ ctx.lineWidth = 2;
186
+ ctx.beginPath();
187
+ ctx.moveTo(0, baseline);
188
+ ctx.lineTo(ecgWidth, baseline);
189
+ ctx.stroke();
190
+ ctx.strokeStyle = ECG_RENDERING_COLORS.trace;
191
+ ctx.lineWidth = lineWidth;
192
+ ctx.beginPath();
193
+ for (let index = resolvedStartIndex; index < resolvedEndIndex; index++) {
194
+ const x = ((index - resolvedStartIndex) * ecgWidth) / sampleCount;
195
+ const y = baseline - channel.data[index] * channelScale * amplitudeScale;
196
+ if (index === resolvedStartIndex) {
197
+ ctx.moveTo(x, y);
198
+ }
199
+ else {
200
+ ctx.lineTo(x, y);
201
+ }
202
+ }
203
+ ctx.stroke();
204
+ });
205
+ }
206
+ export function drawECGLabels(ctx, layouts, worldToCanvasRatio) {
207
+ const fontSize = 14 / (worldToCanvasRatio || 1);
208
+ layouts.forEach(({ channel, itemHeight, yOffset }) => {
209
+ const labelY = yOffset - itemHeight + fontSize;
210
+ ctx.font = `${fontSize}px monospace`;
211
+ const textWidth = ctx.measureText(channel.name).width;
212
+ ctx.fillStyle = ECG_RENDERING_COLORS.background;
213
+ ctx.fillRect(5, labelY - fontSize, textWidth + 4, fontSize + 4);
214
+ ctx.fillStyle = ECG_RENDERING_COLORS.label;
215
+ ctx.fillText(channel.name, 5, labelY);
216
+ });
217
+ }
218
+ export function ensureECGCanvasSize(canvas) {
219
+ const dpr = window.devicePixelRatio || 1;
220
+ const width = Math.max(1, canvas.clientWidth || canvas.width || 1);
221
+ const height = Math.max(1, canvas.clientHeight || canvas.height || 1);
222
+ const nextWidth = Math.floor(width * dpr);
223
+ const nextHeight = Math.floor(height * dpr);
224
+ if (canvas.width !== nextWidth || canvas.height !== nextHeight) {
225
+ canvas.width = nextWidth;
226
+ canvas.height = nextHeight;
227
+ }
228
+ }
@@ -1,5 +1,4 @@
1
- export default class FrameRange {
2
- static { this.frameRangeExtractor = /(\/frames\/|[&?]frameNumber=)([^/&?]*)/i; }
1
+ class FrameRange {
3
2
  static imageIdToFrames(imageId) {
4
3
  const match = imageId.match(this.frameRangeExtractor);
5
4
  if (!match || !match[2]) {
@@ -34,3 +33,5 @@ export default class FrameRange {
34
33
  return imageId.replace(this.frameRangeExtractor, `${match[1]}${newRangeString}`);
35
34
  }
36
35
  }
36
+ FrameRange.frameRangeExtractor = /(\/frames\/|[&?]frameNumber=)([^/&?]*)/i;
37
+ export default FrameRange;
@@ -1,3 +1,4 @@
1
+ import { deepClone } from './deepClone';
1
2
  const ADJACENT_ALL = [
2
3
  [0, -1, 0],
3
4
  [0, 1, 0],
@@ -18,10 +19,10 @@ const ADJACENT_OUT = [
18
19
  [0, 1, 0],
19
20
  [0, 0, 1],
20
21
  ];
21
- export default class RLEVoxelMap {
22
+ class RLEVoxelMap {
22
23
  static copyMap(destination, source) {
23
24
  for (const [index, row] of source.rows) {
24
- destination.rows.set(index, structuredClone(row));
25
+ destination.rows.set(index, deepClone(row));
25
26
  }
26
27
  }
27
28
  constructor(width, height, depth = 1) {
@@ -145,11 +146,6 @@ export default class RLEVoxelMap {
145
146
  this.jMultiple = width;
146
147
  this.kMultiple = this.jMultiple * height;
147
148
  }
148
- static { this.getScalarData = function (ArrayType = Uint8ClampedArray) {
149
- const scalarData = new ArrayType(this.frameSize);
150
- this.map.updateScalarData(scalarData);
151
- return scalarData;
152
- }; }
153
149
  toIJK(index) {
154
150
  const i = index % this.jMultiple;
155
151
  const j = ((index - i) / this.jMultiple) % this.height;
@@ -373,3 +369,9 @@ export default class RLEVoxelMap {
373
369
  return adjacents;
374
370
  }
375
371
  }
372
+ RLEVoxelMap.getScalarData = function (ArrayType = Uint8ClampedArray) {
373
+ const scalarData = new ArrayType(this.frameSize);
374
+ this.map.updateScalarData(scalarData);
375
+ return scalarData;
376
+ };
377
+ export default RLEVoxelMap;
@@ -0,0 +1,34 @@
1
+ import type { Point3 } from '../types';
2
+ export interface VideoImageMetadata {
3
+ bitsAllocated: number;
4
+ numberOfComponents: number;
5
+ origin: Point3;
6
+ rows: number;
7
+ columns: number;
8
+ direction: number[];
9
+ dimensions: [number, number, number];
10
+ spacing: [number, number, number];
11
+ hasPixelSpacing: boolean;
12
+ numVoxels: number;
13
+ imagePlaneModule: Record<string, unknown>;
14
+ }
15
+ export interface LoadedVideoStreamMetadata {
16
+ renderedUrl: string;
17
+ modality?: string;
18
+ metadata: VideoImageMetadata;
19
+ cineRate?: number;
20
+ numberOfFrames?: number;
21
+ }
22
+ export declare function getVideoImageDataMetadata(imageId: string): VideoImageMetadata;
23
+ export declare function loadVideoStreamMetadata(imageId: string): LoadedVideoStreamMetadata;
24
+ export declare function normalizeVideoPlaybackInfo(args: {
25
+ durationSeconds: number;
26
+ cineRate?: number;
27
+ numberOfFrames?: number;
28
+ }): {
29
+ fps: number;
30
+ numberOfFrames: number;
31
+ frameRange: [number, number];
32
+ };
33
+ export declare function frameNumberToTimeSeconds(frameNumber: number, fps: number): number;
34
+ export declare function timeSecondsToFrameNumber(timeSeconds: number, fps: number): number;
@@ -0,0 +1,102 @@
1
+ import { vec3 } from 'gl-matrix';
2
+ import { MetadataModules } from '../enums';
3
+ import * as metaData from '../metaData';
4
+ import isVideoTransferSyntax from './isVideoTransferSyntax';
5
+ export function getVideoImageDataMetadata(imageId) {
6
+ const imagePlaneModule = metaData.get(MetadataModules.IMAGE_PLANE, imageId);
7
+ let rowCosines = imagePlaneModule.rowCosines;
8
+ let columnCosines = imagePlaneModule.columnCosines;
9
+ const usingDefaultValues = imagePlaneModule.usingDefaultValues;
10
+ if (usingDefaultValues || rowCosines == null || columnCosines == null) {
11
+ rowCosines = [1, 0, 0];
12
+ columnCosines = [0, 1, 0];
13
+ }
14
+ const rowCosineVec = vec3.fromValues(rowCosines[0], rowCosines[1], rowCosines[2]);
15
+ const colCosineVec = vec3.fromValues(columnCosines[0], columnCosines[1], columnCosines[2]);
16
+ const scanAxisNormal = vec3.create();
17
+ vec3.cross(scanAxisNormal, rowCosineVec, colCosineVec);
18
+ const rows = imagePlaneModule.rows;
19
+ const columns = imagePlaneModule.columns;
20
+ const origin = (imagePlaneModule.imagePositionPatient || [0, 0, 0]);
21
+ const xSpacing = imagePlaneModule.columnPixelSpacing || 1;
22
+ const ySpacing = imagePlaneModule.rowPixelSpacing || 1;
23
+ const zSpacing = 1;
24
+ const xVoxels = imagePlaneModule.columns;
25
+ const yVoxels = imagePlaneModule.rows;
26
+ const zVoxels = 1;
27
+ return {
28
+ bitsAllocated: 8,
29
+ numberOfComponents: 3,
30
+ origin,
31
+ rows,
32
+ columns,
33
+ direction: [...rowCosineVec, ...colCosineVec, ...scanAxisNormal],
34
+ dimensions: [xVoxels, yVoxels, zVoxels],
35
+ spacing: [xSpacing, ySpacing, zSpacing],
36
+ hasPixelSpacing: !!imagePlaneModule.columnPixelSpacing,
37
+ numVoxels: xVoxels * yVoxels * zVoxels,
38
+ imagePlaneModule,
39
+ };
40
+ }
41
+ export function loadVideoStreamMetadata(imageId) {
42
+ const renderedUrl = getRenderedVideoUrl(imageId);
43
+ if (!renderedUrl) {
44
+ throw new Error(`Video Image ID ${imageId} does not have a rendered video view`);
45
+ }
46
+ const generalSeries = metaData.get(MetadataModules.GENERAL_SERIES, imageId);
47
+ const cine = metaData.get(MetadataModules.CINE, imageId) || {};
48
+ const instance = metaData.get(MetadataModules.INSTANCE, imageId);
49
+ const frameTime = cine.frameTime ?? cine.FrameTime;
50
+ return {
51
+ renderedUrl,
52
+ modality: generalSeries?.Modality ?? generalSeries?.modality,
53
+ metadata: getVideoImageDataMetadata(imageId),
54
+ cineRate: cine.cineRate ??
55
+ cine.recommendedDisplayFrameRate ??
56
+ (frameTime ? 1000 / Number(frameTime) : undefined),
57
+ numberOfFrames: cine.numberOfFrames ?? instance?.NumberOfFrames,
58
+ };
59
+ }
60
+ function getRenderedVideoUrl(imageId) {
61
+ const imageUrlModule = metaData.get(MetadataModules.IMAGE_URL, imageId);
62
+ if (imageUrlModule?.rendered) {
63
+ return imageUrlModule.rendered;
64
+ }
65
+ const transferSyntax = metaData.get(MetadataModules.TRANSFER_SYNTAX, imageId);
66
+ const isVideo = transferSyntax?.isVideo ||
67
+ isVideoTransferSyntax(transferSyntax?.transferSyntaxUID);
68
+ if (!isVideo) {
69
+ return;
70
+ }
71
+ const imageUrl = imageId.startsWith('wadors:')
72
+ ? imageId.substring(7)
73
+ : imageId;
74
+ if (!imageUrl.includes('/frames/')) {
75
+ return;
76
+ }
77
+ return imageUrl
78
+ .replace('/frames/', '/rendered/')
79
+ .replace(/\/rendered\/\d+($|[?#])/, '/rendered$1');
80
+ }
81
+ export function normalizeVideoPlaybackInfo(args) {
82
+ const durationSeconds = Math.max(args.durationSeconds || 0, 0.001);
83
+ let numberOfFrames = args.numberOfFrames;
84
+ let fps = args.cineRate;
85
+ if (!numberOfFrames || numberOfFrames === 1) {
86
+ numberOfFrames = Math.max(1, Math.round(durationSeconds * (fps || 30)));
87
+ }
88
+ if (!fps) {
89
+ fps = Math.max(1, Math.round(numberOfFrames / durationSeconds));
90
+ }
91
+ return {
92
+ fps,
93
+ numberOfFrames,
94
+ frameRange: [1, numberOfFrames],
95
+ };
96
+ }
97
+ export function frameNumberToTimeSeconds(frameNumber, fps) {
98
+ return Math.max(0, frameNumber - 1) / Math.max(1, fps);
99
+ }
100
+ export function timeSecondsToFrameNumber(timeSeconds, fps) {
101
+ return 1 + Math.round(Math.max(0, timeSeconds) * Math.max(1, fps));
102
+ }
@@ -1,5 +1,15 @@
1
- import type { BoundsIJK, Point3, PixelDataTypedArray, IImage, RGB, CPUImageData, IVoxelManager, IRLEVoxelMap, Point2 } from '../types';
1
+ import { InterpolationType } from '../enums';
2
+ import type { BoundsIJK, Mat3, Point3, PixelDataTypedArray, IImage, RGB, CPUImageData, IVoxelManager, IRLEVoxelMap, Point2 } from '../types';
2
3
  import type vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
4
+ type VoxelVolumeGeometry = {
5
+ origin: Point3;
6
+ spacing: Point3;
7
+ direction: Mat3;
8
+ };
9
+ type SampleableVoxelVolume = VoxelVolumeGeometry & {
10
+ dimensions: Point3;
11
+ voxelManager?: IVoxelManager<number> | IVoxelManager<RGB>;
12
+ };
3
13
  export default class VoxelManager<T> {
4
14
  modifiedSlices: Set<number>;
5
15
  private boundsIJK;
@@ -10,6 +20,7 @@ export default class VoxelManager<T> {
10
20
  readonly numberOfComponents: number;
11
21
  getCompleteScalarDataArray?: () => ArrayLike<number>;
12
22
  setCompleteScalarDataArray?: (scalarData: ArrayLike<number>) => void;
23
+ invalidateCache?: () => void;
13
24
  getRange: () => [number, number];
14
25
  private scalarData;
15
26
  private _sliceDataCache;
@@ -77,6 +88,14 @@ export default class VoxelManager<T> {
77
88
  resetModifiedSlices(): void;
78
89
  setBounds(bounds: BoundsIJK): void;
79
90
  static addBounds(bounds: BoundsIJK, point: Point3): void;
91
+ private static getWorldToIndexTransform;
92
+ static worldToIndexContinuous(volumeGeometry: VoxelVolumeGeometry, worldPos: Point3): Point3;
93
+ static sampleAtWorldCoordinates(volume: SampleableVoxelVolume, worldX: number, worldY: number, worldZ: number, interpolationType?: InterpolationType): number;
94
+ static sampleAtWorld(volume: SampleableVoxelVolume, worldPos: Point3, interpolationType?: InterpolationType): number;
95
+ static sampleAtContinuousIndex(voxelManager: IVoxelManager<number> | IVoxelManager<RGB>, dimensions: Point3, continuousIndex: Point3, interpolationType?: InterpolationType): number;
96
+ private static sampleAtContinuousCoordinates;
97
+ private static sampleNearestAtContinuousCoordinates;
98
+ private static sampleLinearAtContinuousCoordinates;
80
99
  addPoint(point: Point3 | number): void;
81
100
  getPoints(): Point3[];
82
101
  getSliceData: ({ sliceIndex, slicePlane, }: {