@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
@@ -5,11 +5,9 @@ import Events from '../enums/Events';
5
5
  import eventTarget from '../eventTarget';
6
6
  import triggerEvent from '../utilities/triggerEvent';
7
7
  import ViewportType from '../enums/ViewportType';
8
- import VolumeViewport from './VolumeViewport';
9
- import StackViewport from './StackViewport';
10
- import VolumeViewport3D from './VolumeViewport3D';
11
- import viewportTypeUsesCustomRenderingPipeline from './helpers/viewportTypeUsesCustomRenderingPipeline';
8
+ import viewportTypeUsesCustomRenderingPipeline, { viewportUsesCustomRenderingPipeline, } from './helpers/viewportTypeUsesCustomRenderingPipeline';
12
9
  import getOrCreateCanvas, { updateCanvasSizeAndAspectRatio, } from './helpers/getOrCreateCanvas';
10
+ import { getViewportClassForInput } from './helpers/viewportTypeToViewportClass';
13
11
  class ContextPoolRenderingEngine extends BaseRenderingEngine {
14
12
  constructor(id) {
15
13
  super(id);
@@ -36,11 +34,17 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
36
34
  }
37
35
  });
38
36
  };
39
- const { rendering } = getConfiguration();
40
- const { webGlContextCount } = rendering;
41
37
  if (!this.useCPURendering) {
38
+ this.ensureContextPool();
39
+ }
40
+ }
41
+ ensureContextPool() {
42
+ if (!this.contextPool) {
43
+ const { rendering } = getConfiguration();
44
+ const { webGlContextCount } = rendering;
42
45
  this.contextPool = new WebGLContextPool(webGlContextCount);
43
46
  }
47
+ return this.contextPool;
44
48
  }
45
49
  enableVTKjsDrivenViewport(viewportInputEntry) {
46
50
  const viewports = this._getViewportsAsArray();
@@ -53,18 +57,19 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
53
57
  this.addVtkjsDrivenViewport(internalViewportEntry);
54
58
  }
55
59
  addVtkjsDrivenViewport(viewportInputEntry) {
60
+ const contextPool = this.ensureContextPool();
56
61
  const { element, canvas, viewportId, type, defaultOptions } = viewportInputEntry;
57
62
  element.tabIndex = -1;
58
63
  let contextIndex = 0;
59
64
  if (type === ViewportType.STACK) {
60
- const contexts = this.contextPool.getAllContexts();
65
+ const contexts = contextPool.getAllContexts();
61
66
  contextIndex = this._viewports.size % contexts.length;
62
67
  }
63
- this.contextPool.assignViewportToContext(viewportId, contextIndex);
64
- this.contextPool.updateViewportSize(viewportId, canvas.width, canvas.height);
65
- const contextData = this.contextPool.getContextByIndex(contextIndex);
68
+ contextPool.assignViewportToContext(viewportId, contextIndex);
69
+ contextPool.updateViewportSize(viewportId, canvas.width, canvas.height);
70
+ const contextData = contextPool.getContextByIndex(contextIndex);
66
71
  const { context: offscreenMultiRenderWindow, container } = contextData;
67
- const maxSize = this.contextPool.getMaxSizeForContext(contextIndex);
72
+ const maxSize = contextPool.getMaxSizeForContext(contextIndex);
68
73
  container.width = maxSize.width;
69
74
  container.height = maxSize.height;
70
75
  offscreenMultiRenderWindow.resize();
@@ -87,20 +92,13 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
87
92
  sHeight: canvas.height,
88
93
  defaultOptions: defaultOptions || {},
89
94
  };
90
- let viewport;
91
- if (type === ViewportType.STACK) {
92
- viewport = new StackViewport(viewportInput);
93
- }
94
- else if (type === ViewportType.ORTHOGRAPHIC ||
95
- type === ViewportType.PERSPECTIVE) {
96
- viewport = new VolumeViewport(viewportInput);
97
- }
98
- else if (type === ViewportType.VOLUME_3D) {
99
- viewport = new VolumeViewport3D(viewportInput);
100
- }
101
- else {
95
+ const ViewportClass = getViewportClassForInput(viewportInputEntry);
96
+ if (!ViewportClass) {
102
97
  throw new Error(`Viewport Type ${type} is not supported`);
103
98
  }
99
+ const viewport = new ViewportClass(viewportInput);
100
+ viewport.requestedType =
101
+ viewportInputEntry.requestedType ?? type;
104
102
  this._viewports.set(viewportId, viewport);
105
103
  const eventDetail = {
106
104
  element,
@@ -163,10 +161,17 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
163
161
  this._resize(vtkDrivenViewports);
164
162
  }
165
163
  vtkDrivenViewports.forEach((vp) => {
164
+ vp.resize?.();
166
165
  const prevCamera = vp.getCamera();
167
- const rotation = vp.getRotation();
166
+ const rotation = vp.getRotation?.() ?? 0;
168
167
  const { flipHorizontal } = prevCamera;
169
- vp.resetCameraForResize();
168
+ const resizeResetViewport = vp;
169
+ if (resizeResetViewport.resetViewStateForResize) {
170
+ resizeResetViewport.resetViewStateForResize();
171
+ }
172
+ else {
173
+ resizeResetViewport.resetCameraForResize?.();
174
+ }
170
175
  const displayArea = vp.getDisplayArea();
171
176
  if (keepCamera) {
172
177
  if (displayArea) {
@@ -187,11 +192,11 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
187
192
  }
188
193
  }
189
194
  renderViewportUsingCustomOrVtkPipeline(viewport) {
190
- if (viewportTypeUsesCustomRenderingPipeline(viewport.type)) {
195
+ if (viewportUsesCustomRenderingPipeline(viewport)) {
191
196
  const eventDetail = viewport.customRenderViewportToCanvas();
192
197
  return eventDetail;
193
198
  }
194
- if (this.useCPURendering) {
199
+ if (!this.contextPool) {
195
200
  throw new Error('GPU not available, and using a viewport with no custom render pipeline.');
196
201
  }
197
202
  const assignedContextIndex = this.contextPool.getContextIndexForViewport(viewport.id);
@@ -210,10 +215,10 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
210
215
  console.warn('Viewport is too small', viewport.sWidth, viewport.sHeight);
211
216
  return;
212
217
  }
213
- if (viewportTypeUsesCustomRenderingPipeline(viewport.type)) {
218
+ if (viewportUsesCustomRenderingPipeline(viewport)) {
214
219
  return viewport.customRenderViewportToCanvas();
215
220
  }
216
- if (this.useCPURendering) {
221
+ if (!this.contextPool) {
217
222
  throw new Error('GPU not available, and using a viewport with no custom render pipeline.');
218
223
  }
219
224
  if (!offscreenMultiRenderWindow.getRenderer(viewport.id)) {
@@ -241,7 +246,8 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
241
246
  renderer.setViewport(0, 0, xEnd, yEnd);
242
247
  const allRenderers = offscreenMultiRenderWindow.getRenderers();
243
248
  allRenderers.forEach(({ renderer: r, id }) => {
244
- r.setDraw(id === viewport.id);
249
+ const baseId = id.split('::')[0];
250
+ r.setDraw(baseId === viewport.id);
245
251
  });
246
252
  const widgetRenderers = this.getWidgetRenderers();
247
253
  widgetRenderers.forEach((viewportId, renderer) => {
@@ -349,7 +355,13 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
349
355
  }
350
356
  getRenderer(viewportId) {
351
357
  const contextIndex = this.contextPool?.getContextIndexForViewport(viewportId);
358
+ if (contextIndex === undefined || !this.contextPool) {
359
+ return;
360
+ }
352
361
  const contextData = this.contextPool.getContextByIndex(contextIndex);
362
+ if (!contextData) {
363
+ return;
364
+ }
353
365
  const { context: offscreenMultiRenderWindow } = contextData;
354
366
  return offscreenMultiRenderWindow.getRenderer(viewportId);
355
367
  }
@@ -360,7 +372,7 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
360
372
  }
361
373
  super.disableElement(viewportId);
362
374
  if (!viewportTypeUsesCustomRenderingPipeline(viewport.type) &&
363
- !this.useCPURendering) {
375
+ this.contextPool) {
364
376
  const contextIndex = this.contextPool.getContextIndexForViewport(viewportId);
365
377
  if (contextIndex !== undefined) {
366
378
  const contextData = this.contextPool.getContextByIndex(contextIndex);
@@ -373,17 +385,23 @@ class ContextPoolRenderingEngine extends BaseRenderingEngine {
373
385
  }
374
386
  }
375
387
  destroy() {
388
+ super.destroy();
376
389
  if (this.contextPool) {
377
390
  this.contextPool.destroy();
378
391
  }
379
- super.destroy();
380
392
  }
381
393
  getOffscreenMultiRenderWindow(viewportId) {
382
- if (this.useCPURendering) {
383
- throw new Error('Offscreen multi render window is not available when using CPU rendering.');
394
+ if (!this.contextPool) {
395
+ throw new Error('Offscreen multi render window is not available.');
384
396
  }
385
397
  const contextIndex = this.contextPool.getContextIndexForViewport(viewportId);
398
+ if (contextIndex === undefined) {
399
+ throw new Error(`Offscreen multi render window is not available for viewport ${viewportId}.`);
400
+ }
386
401
  const contextData = this.contextPool.getContextByIndex(contextIndex);
402
+ if (!contextData) {
403
+ throw new Error(`Offscreen multi render window is not available for viewport ${viewportId}.`);
404
+ }
387
405
  return contextData.context;
388
406
  }
389
407
  }
@@ -78,7 +78,7 @@ declare class ECGViewport extends Viewport {
78
78
  indexToWorld: (point: Point3) => Point3;
79
79
  };
80
80
  hasPixelSpacing: boolean;
81
- calibration: import("../types").IImageCalibration;
81
+ calibration: import("packages/metadata/dist/esm").IImageCalibration;
82
82
  preScale: {
83
83
  scaled: boolean;
84
84
  };
@@ -1,31 +1,10 @@
1
- import { Events as EVENTS, MetadataModules } from '../enums';
1
+ import { Events as EVENTS } from '../enums';
2
2
  import { Transform } from './helpers/cpuFallback/rendering/transform';
3
3
  import triggerEvent from '../utilities/triggerEvent';
4
4
  import Viewport from './Viewport';
5
5
  import { getOrCreateCanvas } from './helpers';
6
- import * as metaData from '../metaData';
7
- const SECONDS_WIDTH = 150;
8
- const CHANNEL_SPACING = 5;
6
+ import { ECG_CHANNEL_SPACING, computeECGChannelLayouts, computeECGHeight, drawECGGrid, drawECGLabels, drawECGTraces, ECG_RENDERING_COLORS, ECG_SECONDS_WIDTH, getVisibleECGChannelsByFlag, loadECGWaveform, } from '../utilities/ECGUtilities';
9
7
  const ECG_AMPLITUDE_INDEX_SIZE = 65536;
10
- const COLOR_GRID_MAJOR = '#7f0000';
11
- const COLOR_GRID_MINOR = '#3f0000';
12
- const COLOR_BASELINE = '#7F4C00';
13
- const COLOR_TRACE = '#ffffff';
14
- const COLOR_LABEL = '#ffff00';
15
- const COLOR_BACKGROUND = '#000000';
16
- function computeMinMax(data) {
17
- let min = 0;
18
- let max = 0;
19
- for (let i = 0; i < data.length; i++) {
20
- if (data[i] < min) {
21
- min = data[i];
22
- }
23
- if (data[i] > max) {
24
- max = data[i];
25
- }
26
- }
27
- return { min, max };
28
- }
29
8
  class ECGViewport extends Viewport {
30
9
  constructor(props) {
31
10
  super({
@@ -155,7 +134,7 @@ class ECGViewport extends Viewport {
155
134
  const m = transform.getMatrix();
156
135
  const ctx = this.canvasContext;
157
136
  ctx.resetTransform();
158
- ctx.fillStyle = COLOR_BACKGROUND;
137
+ ctx.fillStyle = ECG_RENDERING_COLORS.background;
159
138
  ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
160
139
  ctx.setTransform(m[0] / dpr, m[1] / dpr, m[2] / dpr, m[3] / dpr, m[4] / dpr, m[5] / dpr);
161
140
  const layouts = this.computeChannelLayouts();
@@ -195,33 +174,19 @@ class ECGViewport extends Viewport {
195
174
  }
196
175
  async setEcg(imageId) {
197
176
  this.imageId = imageId;
198
- const ecgModule = metaData.get(MetadataModules.ECG, imageId);
199
- if (!ecgModule?.waveformData?.retrieveBulkData) {
200
- throw new Error(`[ECGViewport] No ECG waveform data for imageId: ${imageId}`);
201
- }
202
- const { numberOfWaveformChannels: numberOfChannels, numberOfWaveformSamples: numberOfSamples, samplingFrequency, waveformBitsAllocated: bitsAllocated = 16, waveformSampleInterpretation: sampleInterpretation = 'SS', multiplexGroupLabel, channelDefinitionSequence: channelDefinitions = [], } = ecgModule;
203
- const channelArrays = await ecgModule.waveformData.retrieveBulkData();
204
- this.channels = [];
205
- for (let i = 0; i < numberOfChannels; i++) {
206
- const channelDef = channelDefinitions[i] || {};
207
- const name = channelDef.channelSourceSequence?.codeMeaning ||
208
- channelDef.ChannelSourceSequence?.CodeMeaning ||
209
- `Channel ${i + 1}`;
210
- const data = channelArrays[i] || new Int16Array(0);
211
- const { min, max } = computeMinMax(data);
212
- this.channels.push({ name, data, visible: true, min, max });
213
- }
177
+ const { waveform, calibration } = await loadECGWaveform(imageId);
178
+ this.channels = waveform.channels.map((channel) => ({
179
+ ...channel,
180
+ visible: true,
181
+ }));
214
182
  this.waveformData = {
183
+ ...waveform,
215
184
  channels: this.channels,
216
- numberOfChannels,
217
- numberOfSamples,
218
- samplingFrequency,
219
- bitsAllocated,
220
- sampleInterpretation,
221
- multiplexGroupLabel,
185
+ multiplexGroupLabel: waveform.multiplexGroupLabel,
222
186
  };
223
- this.calibration = metaData.get(MetadataModules.CALIBRATION, imageId);
224
- this.ecgWidth = Math.ceil((numberOfSamples * SECONDS_WIDTH) / samplingFrequency);
187
+ this.calibration = calibration;
188
+ this.ecgWidth = Math.ceil((this.waveformData.numberOfSamples * ECG_SECONDS_WIDTH) /
189
+ this.waveformData.samplingFrequency);
225
190
  this.computeChannelScale();
226
191
  this.recalculateHeight();
227
192
  this.refreshRenderValues();
@@ -249,7 +214,7 @@ class ECGViewport extends Viewport {
249
214
  return { width: this.ecgWidth, height: this.ecgHeight };
250
215
  }
251
216
  computeChannelScale() {
252
- const visibleChannels = this.channels.filter((c) => c.visible && c.data.length > 0);
217
+ const visibleChannels = getVisibleECGChannelsByFlag(this.channels);
253
218
  if (visibleChannels.length === 0 || this.ecgWidth === 0) {
254
219
  this.channelScale = 0;
255
220
  return;
@@ -263,36 +228,18 @@ class ECGViewport extends Viewport {
263
228
  ? this.canvas.offsetHeight / this.canvas.offsetWidth
264
229
  : 2 / 3;
265
230
  const targetTotalHeight = this.ecgWidth * canvasAspect;
266
- const totalSpacing = CHANNEL_SPACING * visibleChannels.length;
231
+ const totalSpacing = ECG_CHANNEL_SPACING * visibleChannels.length;
267
232
  const heightPerChannel = (targetTotalHeight - totalSpacing) / visibleChannels.length;
268
233
  this.channelScale = heightPerChannel / (maxRange * 1.25);
269
234
  }
270
235
  recalculateHeight() {
271
- const scale = this.channelScale;
272
- let totalHeight = 0;
273
- for (const channel of this.channels) {
274
- if (!channel.visible || channel.data.length === 0) {
275
- continue;
276
- }
277
- const itemHeight = (channel.max - channel.min) * scale * 1.25;
278
- totalHeight += itemHeight + CHANNEL_SPACING;
279
- }
280
- this.ecgHeight = totalHeight;
236
+ this.ecgHeight = computeECGHeight(getVisibleECGChannelsByFlag(this.channels), this.channelScale);
281
237
  }
282
238
  computeChannelLayouts() {
283
- const scale = this.channelScale;
284
- const layouts = [];
285
- let yOffset = 0;
286
- for (const channel of this.channels) {
287
- if (!channel.visible || channel.data.length === 0) {
288
- continue;
289
- }
290
- const itemHeight = (channel.max - channel.min) * scale * 1.25;
291
- yOffset += itemHeight + CHANNEL_SPACING;
292
- const baseline = yOffset + channel.min * scale;
293
- layouts.push({ channel, itemHeight, yOffset, baseline });
294
- }
295
- return layouts;
239
+ return computeECGChannelLayouts({
240
+ visibleChannels: getVisibleECGChannelsByFlag(this.channels),
241
+ channelScale: this.channelScale,
242
+ });
296
243
  }
297
244
  setProperties(props) {
298
245
  if (props.visibleChannels !== undefined) {
@@ -335,7 +282,7 @@ class ECGViewport extends Viewport {
335
282
  this.ecgCamera.panWorld[1] - panWorldDelta[1],
336
283
  ];
337
284
  }
338
- this.canvasContext.fillStyle = COLOR_BACKGROUND;
285
+ this.canvasContext.fillStyle = ECG_RENDERING_COLORS.background;
339
286
  this.canvasContext.fillRect(0, 0, this.canvas.width, this.canvas.height);
340
287
  this.renderFrame();
341
288
  }
@@ -416,96 +363,22 @@ class ECGViewport extends Viewport {
416
363
  return transform;
417
364
  }
418
365
  drawGrid(ctx) {
419
- const scale = this.channelScale;
420
- const pxWidth = this.ecgWidth;
421
- const pxHeight = this.ecgHeight;
422
- if (scale <= 0) {
423
- return;
424
- }
425
- const MIN_LINE_SPACING = 8;
426
- let hGridUnit = 100;
427
- while (hGridUnit * scale < MIN_LINE_SPACING) {
428
- hGridUnit *= 2;
429
- }
430
- const minorH = hGridUnit * scale;
431
- const majorH = minorH * 5;
432
- const minorV = SECONDS_WIDTH / 25;
433
- const majorV = SECONDS_WIDTH / 5;
434
- ctx.strokeStyle = COLOR_GRID_MINOR;
435
- ctx.lineWidth = 0.5;
436
- ctx.beginPath();
437
- const hLines = Math.floor(pxHeight / minorH);
438
- for (let h = 1; h <= hLines; h++) {
439
- if (h % 5 !== 0) {
440
- const y = h * minorH;
441
- ctx.moveTo(0, y);
442
- ctx.lineTo(pxWidth, y);
443
- }
444
- }
445
- const vLines = Math.floor(pxWidth / minorV);
446
- for (let v = 1; v <= vLines; v++) {
447
- if (v % 5 !== 0) {
448
- const x = v * minorV;
449
- ctx.moveTo(x, 0);
450
- ctx.lineTo(x, pxHeight);
451
- }
452
- }
453
- ctx.stroke();
454
- ctx.strokeStyle = COLOR_GRID_MAJOR;
455
- ctx.lineWidth = 1;
456
- ctx.beginPath();
457
- const hMajorLines = Math.floor(pxHeight / majorH);
458
- for (let h = 1; h <= hMajorLines; h++) {
459
- const y = h * majorH;
460
- ctx.moveTo(0, y);
461
- ctx.lineTo(pxWidth, y);
462
- }
463
- const vMajorLines = Math.floor(pxWidth / majorV);
464
- for (let v = 1; v <= vMajorLines; v++) {
465
- const x = v * majorV;
466
- ctx.moveTo(x, 0);
467
- ctx.lineTo(x, pxHeight);
468
- }
469
- ctx.stroke();
366
+ drawECGGrid(ctx, {
367
+ ecgWidth: this.ecgWidth,
368
+ ecgHeight: this.ecgHeight,
369
+ channelScale: this.channelScale,
370
+ });
470
371
  }
471
372
  drawTraces(ctx, layouts) {
472
- const scale = this.channelScale;
473
- const pxWidth = this.ecgWidth;
474
- for (const { channel, baseline } of layouts) {
475
- ctx.strokeStyle = COLOR_BASELINE;
476
- ctx.lineWidth = 2;
477
- ctx.beginPath();
478
- ctx.moveTo(0, baseline);
479
- ctx.lineTo(pxWidth, baseline);
480
- ctx.stroke();
481
- ctx.strokeStyle = COLOR_TRACE;
482
- ctx.lineWidth = 1;
483
- ctx.beginPath();
484
- for (let i = 0; i < channel.data.length; i++) {
485
- const x = (i * pxWidth) / channel.data.length;
486
- const y = baseline - channel.data[i] * scale;
487
- if (i === 0) {
488
- ctx.moveTo(x, y);
489
- }
490
- else {
491
- ctx.lineTo(x, y);
492
- }
493
- }
494
- ctx.stroke();
495
- }
373
+ drawECGTraces({
374
+ ctx,
375
+ layouts,
376
+ ecgWidth: this.ecgWidth,
377
+ channelScale: this.channelScale,
378
+ });
496
379
  }
497
380
  drawLabels(ctx, layouts) {
498
- const worldToCanvas = this.getWorldToCanvasRatio();
499
- const fontSize = 14 / worldToCanvas;
500
- for (const { channel, itemHeight, yOffset } of layouts) {
501
- const labelY = yOffset - itemHeight + fontSize;
502
- ctx.font = `${fontSize}px monospace`;
503
- const textWidth = ctx.measureText(channel.name).width;
504
- ctx.fillStyle = COLOR_BACKGROUND;
505
- ctx.fillRect(5, labelY - fontSize, textWidth + 4, fontSize + 4);
506
- ctx.fillStyle = COLOR_LABEL;
507
- ctx.fillText(channel.name, 5, labelY);
508
- }
381
+ drawECGLabels(ctx, layouts, this.getWorldToCanvasRatio());
509
382
  }
510
383
  getImageData() {
511
384
  if (!this.waveformData) {
@@ -0,0 +1,10 @@
1
+ import type { BaseViewportRenderContext, DataAddOptions, LoadedData, RenderPathDefinition, RenderPathResolver } from './ViewportArchitectureTypes';
2
+ import type ViewportType from '../../enums/ViewportType';
3
+ export declare class DefaultRenderPathResolver implements RenderPathResolver {
4
+ private paths;
5
+ constructor(paths?: ReadonlyArray<RenderPathDefinition>);
6
+ register<TRootContext extends BaseViewportRenderContext, TAdapterContext extends BaseViewportRenderContext>(path: RenderPathDefinition<TRootContext, TAdapterContext>): void;
7
+ private add;
8
+ resolve<TContext extends BaseViewportRenderContext>(type: ViewportType, data: LoadedData, options: DataAddOptions): RenderPathDefinition<TContext, BaseViewportRenderContext>;
9
+ }
10
+ export declare const defaultRenderPathResolver: DefaultRenderPathResolver;
@@ -0,0 +1,25 @@
1
+ export class DefaultRenderPathResolver {
2
+ constructor(paths = []) {
3
+ this.paths = [];
4
+ paths.forEach((path) => this.add(path));
5
+ }
6
+ register(path) {
7
+ this.add(path);
8
+ }
9
+ add(path) {
10
+ const existingPath = this.paths.find((candidate) => candidate.id === path.id);
11
+ if (existingPath) {
12
+ console.debug(`[DefaultRenderPathResolver] Duplicate render path registration ignored for "${path.id}"`);
13
+ return;
14
+ }
15
+ this.paths.push(path);
16
+ }
17
+ resolve(type, data, options) {
18
+ const path = this.paths.find((candidate) => candidate.type === type && candidate.matches(data, options));
19
+ if (!path) {
20
+ throw new Error(`No render path for ${type}/${data.type}/${options.renderMode}`);
21
+ }
22
+ return path;
23
+ }
24
+ }
25
+ export const defaultRenderPathResolver = new DefaultRenderPathResolver();
@@ -0,0 +1,17 @@
1
+ import { ViewportType } from '../../../enums';
2
+ import type { DataAddOptions, LoadedData, RenderPathAttachment, RenderPathDefinition, RenderPath } from '../ViewportArchitectureTypes';
3
+ import type { ECGCanvasRenderContext, ECGDataPresentation } from './ECGViewportTypes';
4
+ export declare class CanvasECGRenderPath implements RenderPath<ECGCanvasRenderContext> {
5
+ addData(ctx: ECGCanvasRenderContext, data: LoadedData, options: DataAddOptions): Promise<RenderPathAttachment<ECGDataPresentation>>;
6
+ private updateDataPresentation;
7
+ private applyViewState;
8
+ private getFrameOfReferenceUID;
9
+ private render;
10
+ private removeData;
11
+ }
12
+ export declare class CanvasECGPath implements RenderPathDefinition<ECGCanvasRenderContext> {
13
+ readonly id = "ecg:canvas-signal";
14
+ readonly type = ViewportType.ECG_NEXT;
15
+ matches(data: LoadedData, options: DataAddOptions): boolean;
16
+ createRenderPath(): CanvasECGRenderPath;
17
+ }
@@ -0,0 +1,144 @@
1
+ import { Events as EVENTS, ViewportType } from '../../../enums';
2
+ import triggerEvent from '../../../utilities/triggerEvent';
3
+ import { computeECGChannelLayouts, computeECGRenderMetrics, drawECGGrid, drawECGLabels, drawECGTraces, ensureECGCanvasSize, getVisibleECGChannels, } from '../../../utilities/ECGUtilities';
4
+ import { resolveECGCanvasMapping } from './ecgViewportCamera';
5
+ export class CanvasECGRenderPath {
6
+ async addData(ctx, data, options) {
7
+ const waveform = data;
8
+ const rendering = {
9
+ renderMode: 'signal2d',
10
+ canvas: ctx.canvas,
11
+ canvasContext: ctx.canvasContext,
12
+ metrics: {
13
+ ecgWidth: 1,
14
+ ecgHeight: 1,
15
+ channelScale: 1,
16
+ worldToCanvasRatio: 1,
17
+ xOffsetCanvas: 0,
18
+ yOffsetCanvas: 0,
19
+ },
20
+ };
21
+ return {
22
+ rendering,
23
+ updateDataPresentation: (props) => {
24
+ this.updateDataPresentation(rendering, props);
25
+ },
26
+ applyViewState: (camera) => {
27
+ this.applyViewState(rendering, camera);
28
+ },
29
+ getFrameOfReferenceUID: () => {
30
+ return this.getFrameOfReferenceUID(ctx);
31
+ },
32
+ render: () => {
33
+ this.render(ctx, rendering, waveform);
34
+ },
35
+ removeData: () => {
36
+ this.removeData();
37
+ },
38
+ };
39
+ }
40
+ updateDataPresentation(rendering, props) {
41
+ rendering.currentDataPresentation = props;
42
+ }
43
+ applyViewState(rendering, camera) {
44
+ rendering.currentCamera = camera;
45
+ }
46
+ getFrameOfReferenceUID(ctx) {
47
+ return `ecg-viewport-${ctx.viewportId}`;
48
+ }
49
+ render(ctx, rendering, waveform) {
50
+ drawFrame(ctx, rendering, waveform);
51
+ }
52
+ removeData() {
53
+ }
54
+ }
55
+ export class CanvasECGPath {
56
+ constructor() {
57
+ this.id = 'ecg:canvas-signal';
58
+ this.type = ViewportType.ECG_NEXT;
59
+ }
60
+ matches(data, options) {
61
+ return data.type === 'ecg' && options.renderMode === 'signal2d';
62
+ }
63
+ createRenderPath() {
64
+ return new CanvasECGRenderPath();
65
+ }
66
+ }
67
+ function getEffectiveTransform(metrics, camera, canvas) {
68
+ const mapping = resolveECGCanvasMapping({
69
+ metrics,
70
+ camera,
71
+ canvas,
72
+ });
73
+ return {
74
+ effectiveRatio: mapping.effectiveRatio,
75
+ xOffset: mapping.xOffset,
76
+ yOffset: mapping.yOffset,
77
+ };
78
+ }
79
+ function computeTimeWindow(waveform, camera) {
80
+ const durationMs = (waveform.numberOfSamples / waveform.samplingFrequency) * 1000;
81
+ const startMs = Math.max(0, Math.min(camera.timeRange[0], durationMs));
82
+ const requestedEnd = Math.max(startMs + 1, camera.timeRange[1]);
83
+ const endMs = Math.max(startMs + 1, Math.min(requestedEnd, durationMs));
84
+ const startIndex = Math.max(0, Math.min(waveform.numberOfSamples - 1, Math.floor((startMs / 1000) * waveform.samplingFrequency)));
85
+ const endIndex = Math.max(startIndex + 1, Math.min(waveform.numberOfSamples, Math.ceil((endMs / 1000) * waveform.samplingFrequency)));
86
+ return {
87
+ startMs,
88
+ endMs,
89
+ startIndex,
90
+ endIndex,
91
+ };
92
+ }
93
+ function drawFrame(ecgCtx, ecgRendering, waveform) {
94
+ const { canvas, canvasContext, currentCamera, currentDataPresentation } = ecgRendering;
95
+ if (!currentCamera) {
96
+ return;
97
+ }
98
+ const visibleChannels = getVisibleECGChannels(waveform.channels, currentDataPresentation?.visibleChannels);
99
+ ensureECGCanvasSize(canvas);
100
+ const metrics = computeECGRenderMetrics({
101
+ canvas,
102
+ visibleChannels,
103
+ windowMs: Math.max(1, currentCamera.timeRange[1] - currentCamera.timeRange[0]),
104
+ valueRange: currentCamera.valueRange,
105
+ });
106
+ const layouts = computeECGChannelLayouts({
107
+ visibleChannels,
108
+ channelScale: metrics.channelScale,
109
+ });
110
+ const timeWindow = computeTimeWindow(waveform, currentCamera);
111
+ const dpr = window.devicePixelRatio || 1;
112
+ ecgRendering.metrics = metrics;
113
+ const { effectiveRatio, xOffset, yOffset } = getEffectiveTransform(metrics, currentCamera, canvas);
114
+ canvasContext.resetTransform();
115
+ canvasContext.fillStyle = '#000000';
116
+ canvasContext.fillRect(0, 0, canvas.width, canvas.height);
117
+ if (currentDataPresentation?.visible === false) {
118
+ return;
119
+ }
120
+ canvasContext.globalAlpha = currentDataPresentation?.opacity ?? 1;
121
+ canvasContext.setTransform(effectiveRatio * dpr, 0, 0, effectiveRatio * dpr, xOffset * dpr, yOffset * dpr);
122
+ drawECGGrid(canvasContext, metrics, {
123
+ showGrid: currentDataPresentation?.showGrid,
124
+ });
125
+ drawECGTraces({
126
+ ctx: canvasContext,
127
+ layouts,
128
+ ecgWidth: metrics.ecgWidth,
129
+ channelScale: metrics.channelScale,
130
+ startIndex: timeWindow.startIndex,
131
+ endIndex: timeWindow.endIndex,
132
+ lineWidth: currentDataPresentation?.lineWidth,
133
+ amplitudeScale: currentDataPresentation?.amplitudeScale,
134
+ });
135
+ drawECGLabels(canvasContext, layouts, metrics.worldToCanvasRatio);
136
+ canvasContext.resetTransform();
137
+ canvasContext.globalAlpha = 1;
138
+ triggerEvent(ecgCtx.element, EVENTS.IMAGE_RENDERED, {
139
+ element: ecgCtx.element,
140
+ viewportId: ecgCtx.viewportId,
141
+ renderingEngineId: ecgCtx.renderingEngineId,
142
+ rendering: ecgRendering,
143
+ });
144
+ }
@@ -0,0 +1,5 @@
1
+ import type { DataProvider, LoadedData } from '../ViewportArchitectureTypes';
2
+ import type { ECGWaveformPayload } from './ECGViewportTypes';
3
+ export declare class DefaultECGDataProvider implements DataProvider {
4
+ load(dataId: string): Promise<LoadedData<ECGWaveformPayload>>;
5
+ }
@@ -0,0 +1,13 @@
1
+ import { loadECGWaveform } from '../../../utilities/ECGUtilities';
2
+ import { getGenericViewportSourceDataId } from '../genericViewportDataSetAccess';
3
+ export class DefaultECGDataProvider {
4
+ async load(dataId) {
5
+ const sourceDataId = getGenericViewportSourceDataId(dataId);
6
+ const { waveform } = await loadECGWaveform(sourceDataId);
7
+ return {
8
+ id: dataId,
9
+ type: 'ecg',
10
+ ...waveform,
11
+ };
12
+ }
13
+ }