@cornerstonejs/core 2.0.0-beta.20 → 2.0.0-beta.21

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 (325) hide show
  1. package/dist/esm/RenderingEngine/BaseVolumeViewport.d.ts +23 -13
  2. package/dist/esm/RenderingEngine/BaseVolumeViewport.js +36 -44
  3. package/dist/esm/RenderingEngine/CanvasActor/CanvasMapper.d.ts +1 -1
  4. package/dist/esm/RenderingEngine/CanvasActor/CanvasProperties.d.ts +1 -1
  5. package/dist/esm/RenderingEngine/CanvasActor/index.js +2 -1
  6. package/dist/esm/RenderingEngine/RenderingEngine.d.ts +7 -8
  7. package/dist/esm/RenderingEngine/RenderingEngine.js +18 -17
  8. package/dist/esm/RenderingEngine/StackViewport.d.ts +29 -18
  9. package/dist/esm/RenderingEngine/StackViewport.js +66 -50
  10. package/dist/esm/RenderingEngine/VideoViewport.d.ts +19 -28
  11. package/dist/esm/RenderingEngine/VideoViewport.js +59 -22
  12. package/dist/esm/RenderingEngine/Viewport.d.ts +25 -14
  13. package/dist/esm/RenderingEngine/Viewport.js +20 -14
  14. package/dist/esm/RenderingEngine/VolumeViewport.d.ts +21 -9
  15. package/dist/esm/RenderingEngine/VolumeViewport.js +88 -8
  16. package/dist/esm/RenderingEngine/VolumeViewport3D.d.ts +3 -3
  17. package/dist/esm/RenderingEngine/VolumeViewport3D.js +10 -3
  18. package/dist/esm/RenderingEngine/WSIViewport.d.ts +58 -0
  19. package/dist/esm/RenderingEngine/WSIViewport.js +414 -0
  20. package/dist/esm/RenderingEngine/helpers/addImageSlicesToViewports.d.ts +1 -1
  21. package/dist/esm/RenderingEngine/helpers/addImageSlicesToViewports.js +3 -3
  22. package/dist/esm/RenderingEngine/helpers/addVolumesToViewports.d.ts +1 -1
  23. package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/colormap.d.ts +1 -1
  24. package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/colormap.js +1 -1
  25. package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/lookupTable.d.ts +2 -2
  26. package/dist/esm/RenderingEngine/helpers/cpuFallback/colors/lookupTable.js +15 -5
  27. package/dist/esm/RenderingEngine/helpers/cpuFallback/drawImageSync.d.ts +1 -1
  28. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/calculateTransform.d.ts +1 -1
  29. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/canvasToPixel.d.ts +1 -1
  30. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/correctShift.d.ts +3 -3
  31. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/createViewport.d.ts +1 -1
  32. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/doesImageNeedToBeRendered.d.ts +1 -1
  33. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/fitToWindow.d.ts +1 -1
  34. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateColorLUT.d.ts +1 -1
  35. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateColorLUT.js +1 -1
  36. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateLut.d.ts +1 -1
  37. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/generateLut.js +2 -2
  38. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getDefaultViewport.d.ts +1 -1
  39. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getImageFitScale.d.ts +1 -1
  40. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getImageSize.d.ts +1 -1
  41. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getLut.d.ts +1 -1
  42. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getLut.js +1 -1
  43. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/getTransform.d.ts +1 -1
  44. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/initializeRenderCanvas.d.ts +1 -1
  45. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/lutMatches.d.ts +2 -1
  46. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/lutMatches.js +1 -1
  47. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/pixelToCanvas.d.ts +1 -1
  48. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderColorImage.d.ts +1 -1
  49. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderColorImage.js +3 -4
  50. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderGrayscaleImage.d.ts +1 -1
  51. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderGrayscaleImage.js +2 -3
  52. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/renderPseudoColorImage.js +2 -2
  53. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/resetCamera.d.ts +1 -1
  54. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/resize.d.ts +1 -1
  55. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/saveLastRendered.d.ts +1 -1
  56. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/setDefaultViewport.d.ts +1 -1
  57. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/setToPixelCoordinateSystem.d.ts +1 -1
  58. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedColorPixelDataToCanvasImageData.d.ts +1 -1
  59. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedColorPixelDataToCanvasImageData.js +1 -1
  60. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageData.d.ts +1 -1
  61. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageData.js +1 -1
  62. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataColorLUT.js +1 -1
  63. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataPET.d.ts +1 -1
  64. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataPET.js +1 -1
  65. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataPseudocolorLUT.js +1 -1
  66. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataPseudocolorLUTPET.js +1 -1
  67. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataRGBA.d.ts +1 -1
  68. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedPixelDataToCanvasImageDataRGBA.js +1 -1
  69. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedRGBAPixelDataToCanvasImageData.d.ts +1 -1
  70. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/storedRGBAPixelDataToCanvasImageData.js +1 -1
  71. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/transform.d.ts +1 -1
  72. package/dist/esm/RenderingEngine/helpers/cpuFallback/rendering/validator.d.ts +2 -2
  73. package/dist/esm/RenderingEngine/helpers/createVolumeActor.d.ts +3 -3
  74. package/dist/esm/RenderingEngine/helpers/createVolumeActor.js +3 -6
  75. package/dist/esm/RenderingEngine/helpers/createVolumeMapper.d.ts +4 -1
  76. package/dist/esm/RenderingEngine/helpers/getOrCreateCanvas.js +5 -4
  77. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.d.ts +2 -2
  78. package/dist/esm/RenderingEngine/helpers/setDefaultVolumeVOI.js +10 -35
  79. package/dist/esm/RenderingEngine/helpers/setVolumesForViewports.d.ts +1 -1
  80. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.d.ts +2 -0
  81. package/dist/esm/RenderingEngine/helpers/viewportTypeToViewportClass.js +2 -0
  82. package/dist/esm/RenderingEngine/helpers/volumeNewImageEventDispatcher.d.ts +1 -1
  83. package/dist/esm/RenderingEngine/renderingEngineCache.d.ts +1 -1
  84. package/dist/esm/RenderingEngine/vtkClasses/vtkSlabCamera.d.ts +4 -2
  85. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLTexture.js +87 -78
  86. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLViewNodeFactory.js +1 -1
  87. package/dist/esm/RenderingEngine/vtkClasses/vtkStreamingOpenGLVolumeMapper.js +83 -42
  88. package/dist/esm/Settings.d.ts +1 -1
  89. package/dist/esm/cache/cache.d.ts +15 -19
  90. package/dist/esm/cache/cache.js +110 -56
  91. package/dist/esm/cache/classes/Contour.d.ts +4 -4
  92. package/dist/esm/cache/classes/ContourSet.d.ts +3 -3
  93. package/dist/esm/cache/classes/ImageVolume.d.ts +19 -19
  94. package/dist/esm/cache/classes/ImageVolume.js +48 -254
  95. package/dist/esm/cache/classes/Surface.d.ts +3 -3
  96. package/dist/esm/constants/cpuColormaps.d.ts +1 -1
  97. package/dist/esm/constants/viewportPresets.d.ts +1 -1
  98. package/dist/esm/enums/GenerateImageType.d.ts +5 -0
  99. package/dist/esm/enums/GenerateImageType.js +6 -0
  100. package/dist/esm/enums/MetadataModules.d.ts +2 -1
  101. package/dist/esm/enums/MetadataModules.js +1 -0
  102. package/dist/esm/enums/ViewportType.d.ts +2 -1
  103. package/dist/esm/enums/ViewportType.js +1 -0
  104. package/dist/esm/enums/index.d.ts +2 -2
  105. package/dist/esm/enums/index.js +2 -2
  106. package/dist/esm/eventTarget.js +2 -3
  107. package/dist/esm/getEnabledElement.d.ts +1 -1
  108. package/dist/esm/global.d.ts +0 -1
  109. package/dist/esm/index.d.ts +4 -3
  110. package/dist/esm/index.js +3 -2
  111. package/dist/esm/init.d.ts +5 -8
  112. package/dist/esm/init.js +21 -82
  113. package/dist/esm/loaders/ProgressiveRetrieveImages.d.ts +5 -5
  114. package/dist/esm/loaders/ProgressiveRetrieveImages.js +3 -1
  115. package/dist/esm/loaders/configuration/interleavedRetrieve.d.ts +1 -1
  116. package/dist/esm/loaders/fillNearbyFrames.d.ts +2 -2
  117. package/dist/esm/loaders/geometryLoader.d.ts +3 -3
  118. package/dist/esm/loaders/imageLoader.d.ts +12 -17
  119. package/dist/esm/loaders/imageLoader.js +174 -95
  120. package/dist/esm/loaders/utils/contourSet/createContourSet.d.ts +1 -1
  121. package/dist/esm/loaders/utils/contourSet/validateContourSet.d.ts +1 -1
  122. package/dist/esm/loaders/utils/surface/createSurface.d.ts +1 -1
  123. package/dist/esm/loaders/utils/surface/validateSurface.d.ts +1 -1
  124. package/dist/esm/loaders/volumeLoader.d.ts +14 -22
  125. package/dist/esm/loaders/volumeLoader.js +62 -210
  126. package/dist/esm/metaData.d.ts +2 -4
  127. package/dist/esm/requestPool/requestPoolManager.d.ts +7 -9
  128. package/dist/esm/types/AABB2.d.ts +2 -2
  129. package/dist/esm/types/AABB3.d.ts +2 -2
  130. package/dist/esm/types/ActorSliceRange.d.ts +5 -5
  131. package/dist/esm/types/BoundsIJK.d.ts +1 -1
  132. package/dist/esm/types/BoundsLPS.d.ts +1 -1
  133. package/dist/esm/types/CPUFallbackColormap.d.ts +3 -3
  134. package/dist/esm/types/CPUFallbackColormapData.d.ts +4 -4
  135. package/dist/esm/types/CPUFallbackColormapsData.d.ts +3 -5
  136. package/dist/esm/types/CPUFallbackEnabledElement.d.ts +14 -11
  137. package/dist/esm/types/CPUFallbackLUT.d.ts +4 -3
  138. package/dist/esm/types/CPUFallbackLookupTable.d.ts +2 -2
  139. package/dist/esm/types/CPUFallbackRenderingTools.d.ts +5 -5
  140. package/dist/esm/types/CPUFallbackTransform.d.ts +3 -3
  141. package/dist/esm/types/CPUFallbackViewport.d.ts +6 -6
  142. package/dist/esm/types/CPUFallbackViewportDisplayedArea.d.ts +3 -3
  143. package/dist/esm/types/CPUIImageData.d.ts +17 -9
  144. package/dist/esm/types/Color.d.ts +1 -1
  145. package/dist/esm/types/Colormap.d.ts +7 -7
  146. package/dist/esm/types/ContourData.d.ts +6 -6
  147. package/dist/esm/types/Cornerstone3DConfig.d.ts +7 -7
  148. package/dist/esm/types/CustomEventType.d.ts +2 -2
  149. package/dist/esm/types/EventTypes.d.ts +55 -55
  150. package/dist/esm/types/FlipDirection.d.ts +3 -3
  151. package/dist/esm/types/IActor.d.ts +3 -3
  152. package/dist/esm/types/ICache.d.ts +4 -4
  153. package/dist/esm/types/ICachedGeometry.d.ts +3 -3
  154. package/dist/esm/types/ICachedImage.d.ts +3 -2
  155. package/dist/esm/types/ICachedVolume.d.ts +3 -2
  156. package/dist/esm/types/ICamera.d.ts +3 -3
  157. package/dist/esm/types/IContour.d.ts +4 -3
  158. package/dist/esm/types/IContourSet.d.ts +5 -2
  159. package/dist/esm/types/IDynamicImageVolume.d.ts +3 -3
  160. package/dist/esm/types/IEnabledElement.d.ts +2 -2
  161. package/dist/esm/types/IGeometry.d.ts +4 -4
  162. package/dist/esm/types/IImage.d.ts +12 -10
  163. package/dist/esm/types/IImageCalibration.d.ts +2 -2
  164. package/dist/esm/types/IImageData.d.ts +11 -4
  165. package/dist/esm/types/IImageFrame.d.ts +42 -0
  166. package/dist/esm/types/IImageFrame.js +1 -0
  167. package/dist/esm/types/IImageVolume.d.ts +17 -14
  168. package/dist/esm/types/ILoadObject.d.ts +3 -3
  169. package/dist/esm/types/IPointsManager.d.ts +23 -0
  170. package/dist/esm/types/IPointsManager.js +1 -0
  171. package/dist/esm/types/IRLEVoxelMap.d.ts +16 -0
  172. package/dist/esm/types/IRLEVoxelMap.js +1 -0
  173. package/dist/esm/types/IRegisterImageLoader.d.ts +2 -2
  174. package/dist/esm/types/IRenderingEngine.d.ts +11 -12
  175. package/dist/esm/types/IRetrieveConfiguration.d.ts +6 -6
  176. package/dist/esm/types/IStackInput.d.ts +1 -1
  177. package/dist/esm/types/IStackViewport.d.ts +69 -2
  178. package/dist/esm/types/IStreamingImageVolume.d.ts +3 -4
  179. package/dist/esm/types/IStreamingVolumeProperties.d.ts +5 -5
  180. package/dist/esm/types/ISurface.d.ts +1 -1
  181. package/dist/esm/types/ITransferFunctionNode.d.ts +9 -0
  182. package/dist/esm/types/ITransferFunctionNode.js +1 -0
  183. package/dist/esm/types/IVideoViewport.d.ts +40 -2
  184. package/dist/esm/types/IViewport.d.ts +62 -41
  185. package/dist/esm/types/IVolume.d.ts +2 -2
  186. package/dist/esm/types/IVolumeInput.d.ts +2 -2
  187. package/dist/esm/types/IVolumeViewport.d.ts +17 -16
  188. package/dist/esm/types/IVoxelManager.d.ts +54 -0
  189. package/dist/esm/types/IVoxelManager.js +1 -0
  190. package/dist/esm/types/IWSIViewport.d.ts +16 -0
  191. package/dist/esm/types/IWSIViewport.js +1 -0
  192. package/dist/esm/types/ImageLoadListener.d.ts +2 -2
  193. package/dist/esm/types/ImageLoaderFn.d.ts +3 -3
  194. package/dist/esm/types/ImagePixelModule.d.ts +1 -1
  195. package/dist/esm/types/ImagePlaneModule.d.ts +2 -2
  196. package/dist/esm/types/ImageSliceData.d.ts +3 -3
  197. package/dist/esm/types/ImageVolumeProps.d.ts +4 -4
  198. package/dist/esm/types/Mat3.d.ts +1 -1
  199. package/dist/esm/types/Metadata.d.ts +6 -6
  200. package/dist/esm/types/MetadataModuleTypes.d.ts +65 -0
  201. package/dist/esm/types/MetadataModuleTypes.js +1 -0
  202. package/dist/esm/types/OrientationVectors.d.ts +4 -4
  203. package/dist/esm/types/Plane.d.ts +1 -1
  204. package/dist/esm/types/Point2.d.ts +1 -1
  205. package/dist/esm/types/Point3.d.ts +3 -3
  206. package/dist/esm/types/Point4.d.ts +1 -1
  207. package/dist/esm/types/RGB.d.ts +1 -1
  208. package/dist/esm/types/ScalingParameters.d.ts +7 -7
  209. package/dist/esm/types/StackViewportProperties.d.ts +3 -3
  210. package/dist/esm/types/SurfaceData.d.ts +5 -5
  211. package/dist/esm/types/TransformMatrix2D.d.ts +1 -1
  212. package/dist/esm/types/VideoViewportProperties.d.ts +3 -3
  213. package/dist/esm/types/VideoViewportTypes.d.ts +7 -7
  214. package/dist/esm/types/ViewportInputOptions.d.ts +7 -7
  215. package/dist/esm/types/ViewportPreset.d.ts +1 -1
  216. package/dist/esm/types/ViewportProperties.d.ts +5 -5
  217. package/dist/esm/types/VolumeLoaderFn.d.ts +4 -3
  218. package/dist/esm/types/VolumeProps.d.ts +10 -5
  219. package/dist/esm/types/VolumeViewportProperties.d.ts +3 -3
  220. package/dist/esm/types/WSIViewportProperties.d.ts +3 -0
  221. package/dist/esm/types/WSIViewportProperties.js +1 -0
  222. package/dist/esm/types/WSIViewportTypes.d.ts +13 -0
  223. package/dist/esm/types/WSIViewportTypes.js +1 -0
  224. package/dist/esm/types/displayArea.d.ts +4 -4
  225. package/dist/esm/types/index.d.ts +16 -8
  226. package/dist/esm/types/voi.d.ts +4 -4
  227. package/dist/esm/utilities/PointsManager.d.ts +8 -10
  228. package/dist/esm/utilities/ProgressiveIterator.d.ts +1 -1
  229. package/dist/esm/utilities/ProgressiveIterator.js +3 -1
  230. package/dist/esm/utilities/RLEVoxelMap.d.ts +3 -8
  231. package/dist/esm/utilities/RLEVoxelMap.js +19 -19
  232. package/dist/esm/utilities/VoxelManager.d.ts +82 -20
  233. package/dist/esm/utilities/VoxelManager.js +466 -60
  234. package/dist/esm/utilities/actorCheck.d.ts +1 -1
  235. package/dist/esm/utilities/applyPreset.d.ts +2 -2
  236. package/dist/esm/utilities/calculateViewportsSpatialRegistration.d.ts +1 -1
  237. package/dist/esm/utilities/calculateViewportsSpatialRegistration.js +4 -4
  238. package/dist/esm/utilities/calibratedPixelSpacingMetadataProvider.d.ts +1 -1
  239. package/dist/esm/utilities/colormap.d.ts +1 -1
  240. package/dist/esm/utilities/convertStackToVolumeViewport.d.ts +2 -2
  241. package/dist/esm/utilities/convertStackToVolumeViewport.js +4 -4
  242. package/dist/esm/utilities/convertVolumeToStackViewport.d.ts +1 -1
  243. package/dist/esm/utilities/convertVolumeToStackViewport.js +1 -1
  244. package/dist/esm/utilities/createLinearRGBTransferFunction.d.ts +1 -1
  245. package/dist/esm/utilities/createLinearRGBTransferFunction.js +1 -3
  246. package/dist/esm/utilities/createSigmoidRGBTransferFunction.d.ts +2 -3
  247. package/dist/esm/utilities/createSigmoidRGBTransferFunction.js +8 -7
  248. package/dist/esm/utilities/decimate.d.ts +1 -1
  249. package/dist/esm/utilities/eventListener/TargetEventListeners.js +5 -3
  250. package/dist/esm/utilities/generateVolumePropsFromImageIds.d.ts +1 -1
  251. package/dist/esm/utilities/generateVolumePropsFromImageIds.js +33 -80
  252. package/dist/esm/utilities/genericMetadataProvider.d.ts +9 -2
  253. package/dist/esm/utilities/genericMetadataProvider.js +7 -1
  254. package/dist/esm/utilities/getBufferConfiguration.d.ts +2 -3
  255. package/dist/esm/utilities/getBufferConfiguration.js +5 -15
  256. package/dist/esm/utilities/getClosestImageId.js +1 -1
  257. package/dist/esm/utilities/getClosestStackImageIndexForPoint.d.ts +1 -1
  258. package/dist/esm/utilities/getCurrentVolumeViewportSlice.d.ts +4 -5
  259. package/dist/esm/utilities/getCurrentVolumeViewportSlice.js +8 -58
  260. package/dist/esm/utilities/getImageLegacy.d.ts +1 -1
  261. package/dist/esm/utilities/getImageSliceDataForVolumeViewport.d.ts +1 -1
  262. package/dist/esm/utilities/getMinMax.d.ts +2 -1
  263. package/dist/esm/utilities/getScalingParameters.d.ts +1 -1
  264. package/dist/esm/utilities/getSpacingInNormalDirection.d.ts +2 -2
  265. package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.d.ts +1 -1
  266. package/dist/esm/utilities/getTargetVolumeAndSpacingInNormalDir.js +2 -2
  267. package/dist/esm/utilities/getViewportImageCornersInWorld.d.ts +1 -1
  268. package/dist/esm/utilities/getViewportImageIds.d.ts +1 -1
  269. package/dist/esm/utilities/getViewportModality.d.ts +7 -3
  270. package/dist/esm/utilities/getViewportModality.js +9 -6
  271. package/dist/esm/utilities/getViewportsWithImageURI.d.ts +2 -2
  272. package/dist/esm/utilities/getViewportsWithVolumeId.d.ts +2 -2
  273. package/dist/esm/utilities/getViewportsWithVolumeId.js +3 -7
  274. package/dist/esm/utilities/getVoiFromSigmoidRGBTransferFunction.d.ts +1 -1
  275. package/dist/esm/utilities/getVolumeActorCorners.d.ts +2 -2
  276. package/dist/esm/utilities/getVolumeId.js +2 -2
  277. package/dist/esm/utilities/getVolumeSliceRangeInfo.d.ts +1 -1
  278. package/dist/esm/utilities/getVolumeViewportScrollInfo.d.ts +1 -1
  279. package/dist/esm/utilities/getVolumeViewportsContainingSameVolumes.d.ts +2 -2
  280. package/dist/esm/utilities/hasFloatScalingParameters.d.ts +1 -1
  281. package/dist/esm/utilities/imageRetrieveMetadataProvider.d.ts +1 -1
  282. package/dist/esm/utilities/imageToWorldCoords.d.ts +1 -1
  283. package/dist/esm/utilities/index.d.ts +3 -8
  284. package/dist/esm/utilities/index.js +4 -8
  285. package/dist/esm/utilities/indexWithinDimensions.d.ts +1 -1
  286. package/dist/esm/utilities/invertRgbTransferFunction.d.ts +2 -1
  287. package/dist/esm/utilities/isEqual.js +6 -1
  288. package/dist/esm/utilities/isPTPrescaledWithSUV.d.ts +1 -1
  289. package/dist/esm/utilities/isPTPrescaledWithSUV.js +1 -1
  290. package/dist/esm/utilities/isTypedArray.d.ts +1 -1
  291. package/dist/esm/utilities/loadImageToCanvas.d.ts +6 -6
  292. package/dist/esm/utilities/makeVolumeMetadata.d.ts +2 -2
  293. package/dist/esm/utilities/planar.d.ts +2 -2
  294. package/dist/esm/utilities/renderToCanvasCPU.d.ts +1 -1
  295. package/dist/esm/utilities/renderToCanvasGPU.d.ts +2 -2
  296. package/dist/esm/utilities/renderToCanvasGPU.js +1 -1
  297. package/dist/esm/utilities/scaleRgbTransferFunction.d.ts +2 -1
  298. package/dist/esm/utilities/snapFocalPointToSlice.d.ts +1 -1
  299. package/dist/esm/utilities/sortImageIdsAndGetSpacing.d.ts +5 -5
  300. package/dist/esm/utilities/transformCanvasToIJK.d.ts +2 -2
  301. package/dist/esm/utilities/transformIJKToCanvas.d.ts +1 -1
  302. package/dist/esm/utilities/triggerEvent.js +1 -1
  303. package/dist/esm/utilities/updateVTKImageDataWithCornerstoneImage.d.ts +2 -2
  304. package/dist/esm/utilities/updateVTKImageDataWithCornerstoneImage.js +1 -1
  305. package/dist/esm/utilities/uuidv4.js +3 -1
  306. package/dist/esm/utilities/worldToImageCoords.d.ts +1 -1
  307. package/dist/umd/index.js +1 -1
  308. package/dist/umd/index.js.map +1 -1
  309. package/package.json +5 -6
  310. package/dist/esm/cache/utils/restoreImagesFromBuffer.d.ts +0 -2
  311. package/dist/esm/cache/utils/restoreImagesFromBuffer.js +0 -28
  312. package/dist/esm/enums/SharedArrayBufferModes.d.ts +0 -6
  313. package/dist/esm/enums/SharedArrayBufferModes.js +0 -7
  314. package/dist/esm/utilities/cacheUtils.d.ts +0 -2
  315. package/dist/esm/utilities/cacheUtils.js +0 -86
  316. package/dist/esm/utilities/createFloat32SharedArray.d.ts +0 -2
  317. package/dist/esm/utilities/createFloat32SharedArray.js +0 -27
  318. package/dist/esm/utilities/createInt16SharedArray.d.ts +0 -2
  319. package/dist/esm/utilities/createInt16SharedArray.js +0 -11
  320. package/dist/esm/utilities/createUInt16SharedArray.d.ts +0 -2
  321. package/dist/esm/utilities/createUInt16SharedArray.js +0 -11
  322. package/dist/esm/utilities/createUint8SharedArray.d.ts +0 -2
  323. package/dist/esm/utilities/createUint8SharedArray.js +0 -12
  324. package/dist/esm/utilities/getScalarDataType.d.ts +0 -2
  325. package/dist/esm/utilities/getScalarDataType.js +0 -19
@@ -41,7 +41,6 @@ class StackViewport extends Viewport {
41
41
  this.initialTransferFunctionNodes = null;
42
42
  this.stackInvalidated = false;
43
43
  this._publishCalibratedEvent = false;
44
- this.useNativeDataType = false;
45
44
  this.updateRenderingPipeline = () => {
46
45
  this._configureRenderingPipeline();
47
46
  };
@@ -66,7 +65,7 @@ class StackViewport extends Viewport {
66
65
  if (preferSizeOverAccuracy) {
67
66
  mapper.setPreferSizeOverAccuracy(true);
68
67
  }
69
- if (imageData.getPointData().getNumberOfComponents() > 1) {
68
+ if (imageData.getPointData().getScalars().getNumberOfComponents() > 1) {
70
69
  actor.getProperty().setIndependentComponents(false);
71
70
  }
72
71
  return actor;
@@ -115,9 +114,12 @@ class StackViewport extends Viewport {
115
114
  };
116
115
  this.setRotation = (rotation) => {
117
116
  const previousCamera = this.getCamera();
118
- this.useCPURendering
119
- ? this.setRotationCPU(rotation)
120
- : this.setRotationGPU(rotation);
117
+ if (this.useCPURendering) {
118
+ this.setRotationCPU(rotation);
119
+ }
120
+ else {
121
+ this.setRotationGPU(rotation);
122
+ }
121
123
  if (this._suppressCameraModifiedEvents) {
122
124
  return;
123
125
  }
@@ -159,11 +161,11 @@ class StackViewport extends Viewport {
159
161
  const iVector = direction.slice(0, 3);
160
162
  const jVector = direction.slice(3, 6);
161
163
  const diff = vec3.subtract(vec3.create(), worldPos, origin);
162
- const worldPoint = [
164
+ const indexPoint = [
163
165
  vec3.dot(diff, iVector) / spacing[0],
164
166
  vec3.dot(diff, jVector) / spacing[1],
165
167
  ];
166
- const canvasPoint = pixelToCanvas(this._cpuFallbackEnabledElement, worldPoint);
168
+ const canvasPoint = pixelToCanvas(this._cpuFallbackEnabledElement, indexPoint);
167
169
  return canvasPoint;
168
170
  };
169
171
  this.canvasToWorldGPU = (canvasPos) => {
@@ -365,9 +367,8 @@ class StackViewport extends Viewport {
365
367
  this.scaling = {};
366
368
  this.modality = null;
367
369
  this.useCPURendering = getShouldUseCPURendering();
368
- this.useNativeDataType = this._shouldUseNativeDataType();
369
370
  this._configureRenderingPipeline();
370
- this.useCPURendering
371
+ const result = this.useCPURendering
371
372
  ? this._resetCPUFallbackElement()
372
373
  : this._resetGPUViewport();
373
374
  this.imageIds = [];
@@ -385,7 +386,6 @@ class StackViewport extends Viewport {
385
386
  return getShouldUseCPURendering();
386
387
  }
387
388
  _configureRenderingPipeline(value) {
388
- this.useNativeDataType = this._shouldUseNativeDataType();
389
389
  this.useCPURendering = value ?? getShouldUseCPURendering();
390
390
  for (const key in this.renderingPipelineFunctions) {
391
391
  if (Object.prototype.hasOwnProperty.call(this.renderingPipelineFunctions, key)) {
@@ -393,7 +393,7 @@ class StackViewport extends Viewport {
393
393
  this[key] = this.useCPURendering ? functions.cpu : functions.gpu;
394
394
  }
395
395
  }
396
- this.useCPURendering
396
+ const result = this.useCPURendering
397
397
  ? this._resetCPUFallbackElement()
398
398
  : this._resetGPUViewport();
399
399
  }
@@ -438,7 +438,9 @@ class StackViewport extends Viewport {
438
438
  spacing: vtkImageData.getSpacing(),
439
439
  origin: vtkImageData.getOrigin(),
440
440
  direction: vtkImageData.getDirection(),
441
- scalarData: vtkImageData.getPointData().getScalars().getData(),
441
+ get scalarData() {
442
+ return this.csImage.voxelManager.getScalarData();
443
+ },
442
444
  imageData: actor.getMapper().getInputData(),
443
445
  metadata: {
444
446
  Modality: this.modality,
@@ -450,6 +452,7 @@ class StackViewport extends Viewport {
450
452
  preScale: {
451
453
  ...this.csImage.preScale,
452
454
  },
455
+ voxelManager: this.csImage.voxelManager,
453
456
  };
454
457
  }
455
458
  getImageDataCPU() {
@@ -489,6 +492,7 @@ class StackViewport extends Viewport {
489
492
  preScale: {
490
493
  ...this.csImage.preScale,
491
494
  },
495
+ voxelManager: this.csImage.voxelManager,
492
496
  };
493
497
  }
494
498
  buildMetadata(image) {
@@ -981,7 +985,7 @@ class StackViewport extends Viewport {
981
985
  _getNumCompsFromPhotometricInterpretation(photometricInterpretation) {
982
986
  let numberOfComponents = 1;
983
987
  if (photometricInterpretation === 'RGB' ||
984
- photometricInterpretation.indexOf('YBR') !== -1 ||
988
+ photometricInterpretation.includes('YBR') ||
985
989
  photometricInterpretation === 'PALETTE COLOR') {
986
990
  numberOfComponents = 3;
987
991
  }
@@ -1010,11 +1014,11 @@ class StackViewport extends Viewport {
1010
1014
  const yVoxels = image.rows;
1011
1015
  const zSpacing = EPSILON;
1012
1016
  const zVoxels = 1;
1013
- const numComps = image.numComps ||
1017
+ const numberOfComponents = image.numberOfComponents ||
1014
1018
  this._getNumCompsFromPhotometricInterpretation(imagePixelModule.photometricInterpretation);
1015
1019
  return {
1016
1020
  bitsAllocated: imagePixelModule.bitsAllocated,
1017
- numComps,
1021
+ numberOfComponents,
1018
1022
  origin,
1019
1023
  direction: [...rowCosineVec, ...colCosineVec, ...scanAxisNormal],
1020
1024
  dimensions: [xVoxels, yVoxels, zVoxels],
@@ -1037,7 +1041,7 @@ class StackViewport extends Viewport {
1037
1041
  let { rowCosines, columnCosines } = imagePlaneModule;
1038
1042
  rowCosines ||= [1, 0, 0];
1039
1043
  columnCosines ||= [0, 1, 0];
1040
- const viewPlaneNormal = (vec3.cross([0, 0, 0], columnCosines, rowCosines));
1044
+ const viewPlaneNormal = vec3.cross([0, 0, 0], columnCosines, rowCosines);
1041
1045
  return {
1042
1046
  FrameOfReferenceUID,
1043
1047
  viewPlaneNormal,
@@ -1058,11 +1062,11 @@ class StackViewport extends Viewport {
1058
1062
  viewUp: [viewUp[0], viewUp[1], viewUp[2]],
1059
1063
  };
1060
1064
  }
1061
- createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }) {
1065
+ createVTKImageData({ origin, direction, dimensions, spacing, numberOfComponents, pixelArray, }) {
1062
1066
  const values = new pixelArray.constructor(pixelArray.length);
1063
1067
  const scalarArray = vtkDataArray.newInstance({
1064
1068
  name: 'Pixels',
1065
- numberOfComponents: numComps,
1069
+ numberOfComponents: numberOfComponents,
1066
1070
  values: values,
1067
1071
  });
1068
1072
  const imageData = vtkImageData.newInstance();
@@ -1073,15 +1077,20 @@ class StackViewport extends Viewport {
1073
1077
  imageData.getPointData().setScalars(scalarArray);
1074
1078
  return imageData;
1075
1079
  }
1076
- _createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }) {
1077
- this._imageData = this.createVTKImageData({
1078
- origin,
1079
- direction,
1080
- dimensions,
1081
- spacing,
1082
- numComps,
1083
- pixelArray,
1084
- });
1080
+ _createVTKImageData({ origin, direction, dimensions, spacing, numberOfComponents, pixelArray, }) {
1081
+ try {
1082
+ this._imageData = this.createVTKImageData({
1083
+ origin,
1084
+ direction,
1085
+ dimensions,
1086
+ spacing,
1087
+ numberOfComponents,
1088
+ pixelArray,
1089
+ });
1090
+ }
1091
+ catch (e) {
1092
+ console.error(e);
1093
+ }
1085
1094
  }
1086
1095
  async setStack(imageIds, currentImageIdIndex = 0) {
1087
1096
  this._throwIfDestroyed();
@@ -1142,8 +1151,7 @@ class StackViewport extends Viewport {
1142
1151
  yVoxels === image.rows &&
1143
1152
  isEqual(imagePlaneModule.rowCosines, rowCosines) &&
1144
1153
  isEqual(imagePlaneModule.columnCosines, columnCosines) &&
1145
- (!this.useNativeDataType ||
1146
- dataType === image.getPixelData().constructor.name));
1154
+ dataType === image.voxelManager.getScalarData().constructor.name);
1147
1155
  }
1148
1156
  _updateVTKImageDataFromCornerstoneImage(image) {
1149
1157
  const imagePlaneModule = this._getImagePlaneModule(image.imageId);
@@ -1165,7 +1173,7 @@ class StackViewport extends Viewport {
1165
1173
  if (this.currentImageIdIndex !== imageIdIndex) {
1166
1174
  return;
1167
1175
  }
1168
- const pixelData = image.getPixelData();
1176
+ const pixelData = image.voxelManager.getScalarData();
1169
1177
  const preScale = image.preScale;
1170
1178
  const scalingParams = preScale?.scalingParameters;
1171
1179
  const scaledWithNonIntegers = (preScale?.scaled && scalingParams?.rescaleIntercept % 1 !== 0) ||
@@ -1290,17 +1298,12 @@ class StackViewport extends Viewport {
1290
1298
  getLoaderImageOptions(imageId) {
1291
1299
  const imageIdIndex = this.imageIds.indexOf(imageId);
1292
1300
  const { transferSyntaxUID } = metaData.get('transferSyntax', imageId) || {};
1293
- const additionalDetails = { imageId, imageIdIndex };
1294
1301
  const options = {
1295
- targetBuffer: {
1296
- type: this.useNativeDataType ? undefined : 'Float32Array',
1297
- },
1298
1302
  useRGBA: false,
1299
1303
  transferSyntaxUID,
1300
- useNativeDataType: this.useNativeDataType,
1301
1304
  priority: 5,
1302
1305
  requestType: RequestType.Interaction,
1303
- additionalDetails,
1306
+ additionalDetails: { imageId, imageIdIndex },
1304
1307
  };
1305
1308
  return options;
1306
1309
  }
@@ -1346,7 +1349,7 @@ class StackViewport extends Viewport {
1346
1349
  this._cpuFallbackEnabledElement.metadata = {
1347
1350
  ...metadata,
1348
1351
  };
1349
- this.cpuImagePixelData = image.getPixelData();
1352
+ this.cpuImagePixelData = image.voxelManager.getScalarData();
1350
1353
  const viewportSettingToUse = Object.assign({}, viewport, this._cpuFallbackEnabledElement.viewport);
1351
1354
  this._cpuFallbackEnabledElement.viewport = this.stackInvalidated
1352
1355
  ? viewport
@@ -1355,19 +1358,22 @@ class StackViewport extends Viewport {
1355
1358
  this.cpuRenderingInvalidated = true;
1356
1359
  this._cpuFallbackEnabledElement.transform = calculateTransform(this._cpuFallbackEnabledElement);
1357
1360
  }
1361
+ getSliceViewInfo() {
1362
+ throw new Error('Method not implemented.');
1363
+ }
1358
1364
  addImages(stackInputs) {
1359
1365
  const actors = this.getActors();
1360
1366
  stackInputs.forEach((stackInput) => {
1361
1367
  const { imageId } = stackInput;
1362
1368
  const image = cache.getImage(imageId);
1363
- const { origin, dimensions, direction, spacing, numComps } = this.getImageDataMetadata(image);
1369
+ const { origin, dimensions, direction, spacing, numberOfComponents } = this.getImageDataMetadata(image);
1364
1370
  const imagedata = this.createVTKImageData({
1365
1371
  origin,
1366
1372
  dimensions,
1367
1373
  direction,
1368
1374
  spacing,
1369
- numComps,
1370
- pixelArray: image.getPixelData(),
1375
+ numberOfComponents,
1376
+ pixelArray: image.voxelManager.getScalarData(),
1371
1377
  });
1372
1378
  const imageActor = this.createActorMapper(imagedata);
1373
1379
  if (imageActor) {
@@ -1405,14 +1411,14 @@ class StackViewport extends Viewport {
1405
1411
  this.stackActorReInitialized = false;
1406
1412
  return;
1407
1413
  }
1408
- const { origin, direction, dimensions, spacing, numComps, imagePixelModule, } = this.getImageDataMetadata(image);
1409
- const pixelArray = image.getPixelData();
1414
+ const { origin, direction, dimensions, spacing, numberOfComponents, imagePixelModule, } = this.getImageDataMetadata(image);
1415
+ const pixelArray = image.voxelManager.getScalarData();
1410
1416
  this._createVTKImageData({
1411
1417
  origin,
1412
1418
  direction,
1413
1419
  dimensions,
1414
1420
  spacing,
1415
- numComps,
1421
+ numberOfComponents,
1416
1422
  pixelArray,
1417
1423
  });
1418
1424
  this._updateVTKImageDataFromCornerstoneImage(image);
@@ -1464,7 +1470,7 @@ class StackViewport extends Viewport {
1464
1470
  if (this.modality !== 'PT' || !this.csImage.isPreScaled) {
1465
1471
  return false;
1466
1472
  }
1467
- if (!this.csImage.preScale?.scalingParameters?.suvbw) {
1473
+ if (!this.csImage.preScale?.scalingParameters.suvbw) {
1468
1474
  return false;
1469
1475
  }
1470
1476
  return true;
@@ -1626,18 +1632,28 @@ class StackViewport extends Viewport {
1626
1632
  return this._getVOIRangeFromWindowLevel(windowWidth, windowCenter);
1627
1633
  }
1628
1634
  _getValidVOILUTFunction(voiLUTFunction) {
1629
- if (Object.values(VOILUTFunctionType).indexOf(voiLUTFunction) === -1) {
1630
- voiLUTFunction = VOILUTFunctionType.LINEAR;
1635
+ if (!Object.values(VOILUTFunctionType).includes(voiLUTFunction)) {
1636
+ return VOILUTFunctionType.LINEAR;
1631
1637
  }
1632
1638
  return voiLUTFunction;
1633
1639
  }
1640
+ getSliceInfo() {
1641
+ const sliceIndex = this.getSliceIndex();
1642
+ const { dimensions } = this.getImageData();
1643
+ return {
1644
+ width: dimensions[0],
1645
+ height: dimensions[1],
1646
+ sliceIndex,
1647
+ slicePlane: 2,
1648
+ };
1649
+ }
1634
1650
  isReferenceViewable(viewRef, options = {}) {
1635
1651
  if (!super.isReferenceViewable(viewRef, options)) {
1636
1652
  return false;
1637
1653
  }
1638
1654
  const { referencedImageId, sliceIndex } = viewRef;
1639
1655
  if (viewRef.volumeId && !referencedImageId) {
1640
- return options.asVolume === true;
1656
+ return options.asVolume;
1641
1657
  }
1642
1658
  let testIndex = this.getCurrentImageIdIndex();
1643
1659
  const currentImageId = this.imageIds[testIndex];
@@ -1715,16 +1731,16 @@ class StackViewport extends Viewport {
1715
1731
  if (!viewRef) {
1716
1732
  return;
1717
1733
  }
1718
- const { referencedImageId, sliceIndex, volumeId } = viewRef;
1734
+ const { referencedImageId, sliceIndex } = viewRef;
1719
1735
  if (typeof sliceIndex === 'number' &&
1720
1736
  referencedImageId &&
1721
1737
  referencedImageId === this.imageIds[sliceIndex]) {
1722
- this.setImageIdIndex(sliceIndex);
1738
+ this.scroll(sliceIndex - this.targetImageIdIndex);
1723
1739
  }
1724
1740
  else {
1725
1741
  const foundIndex = this.imageIds.indexOf(referencedImageId);
1726
1742
  if (foundIndex !== -1) {
1727
- this.setImageIdIndex(foundIndex);
1743
+ this.scroll(foundIndex - this.targetImageIdIndex);
1728
1744
  }
1729
1745
  else {
1730
1746
  throw new Error('Unsupported - referenced image id not found');
@@ -1,5 +1,6 @@
1
+ import type { mat4 } from 'gl-matrix';
1
2
  import { VideoEnums as VideoViewportEnum } from '../enums';
2
- import type { IVideoViewport, VideoViewportProperties, Point3, Point2, ICamera, VideoViewportInput, VOIRange, IImage, ViewReferenceSpecifier, ViewReference, ReferenceCompatibleOptions } from '../types';
3
+ import type { IVideoViewport, VideoViewportProperties, Point3, Point2, ICamera, VideoViewportInput, VOIRange, IImage, ViewReferenceSpecifier, ViewReference, ReferenceCompatibleOptions, ImageSetOptions, IStackInput, CPUIImageData, IImageData } from '../types';
3
4
  import { Transform } from './helpers/cpuFallback/rendering/transform';
4
5
  import Viewport from './Viewport';
5
6
  import CanvasActor from './CanvasActor';
@@ -39,7 +40,7 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
39
40
  private elementDisabledHandler;
40
41
  getImageDataMetadata(image: IImage | string): {
41
42
  bitsAllocated: number;
42
- numComps: number;
43
+ numberOfComponents: number;
43
44
  origin: any;
44
45
  rows: any;
45
46
  columns: any;
@@ -50,16 +51,25 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
50
51
  numVoxels: number;
51
52
  imagePlaneModule: any;
52
53
  };
54
+ setDataIds(imageIds: string[], options?: ImageSetOptions): void;
53
55
  setVideo(imageId: string, frameNumber?: number): Promise<unknown>;
54
56
  setVideoURL(videoURL: string): Promise<unknown>;
55
57
  getImageIds(): string[];
56
58
  togglePlayPause(): boolean;
57
59
  play(): Promise<void>;
58
- pause(): Promise<void>;
60
+ pause(): void;
59
61
  scroll(delta?: number): Promise<void>;
60
62
  start(): Promise<void>;
61
63
  end(): Promise<void>;
62
64
  setTime(timeInSeconds: number): Promise<void>;
65
+ getSliceViewInfo(): {
66
+ width: number;
67
+ height: number;
68
+ sliceIndex: number;
69
+ slicePlane: number;
70
+ sliceToIndexMatrix: mat4;
71
+ indexToSliceMatrix: mat4;
72
+ };
63
73
  setFrameNumber(frame: number): Promise<void>;
64
74
  setFrameRange(frameRange: number[]): void;
65
75
  getFrameRange(): [number, number];
@@ -69,30 +79,9 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
69
79
  getProperties: () => VideoViewportProperties;
70
80
  resetProperties(): void;
71
81
  protected getScalarData(): CanvasScalarData;
72
- getImageData(): {
73
- dimensions: any;
74
- spacing: any;
75
- origin: any;
76
- direction: any;
77
- metadata: {
78
- Modality: any;
79
- };
80
- getScalarData: () => CanvasScalarData;
81
- imageData: {
82
- getDirection: () => any;
83
- getDimensions: () => any;
84
- getRange: () => number[];
85
- getScalarData: () => CanvasScalarData;
86
- getSpacing: () => any;
87
- worldToIndex: (point: Point3) => number[];
88
- indexToWorld: (point: Point2, destPoint?: Point3) => Point3;
89
- };
90
- hasPixelSpacing: boolean;
91
- calibration: import("../types").IImageCalibration;
92
- preScale: {
93
- scaled: boolean;
94
- };
95
- };
82
+ getImageData(): IImageData | CPUIImageData;
83
+ getMiddleSliceData: () => never;
84
+ useCustomRenderingPipeline: boolean;
96
85
  hasImageURI(imageURI: string): boolean;
97
86
  setVOI(voiRange: VOIRange): void;
98
87
  setWindowLevel(windowWidth?: number, windowCenter?: number): void;
@@ -102,6 +91,7 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
102
91
  getCurrentImageId(): string;
103
92
  getViewReferenceId(specifier?: ViewReferenceSpecifier): string;
104
93
  isReferenceViewable(viewRef: ViewReference, options?: ReferenceCompatibleOptions): boolean;
94
+ setViewReference(viewRef: ViewReference): void;
105
95
  getViewReference(viewRefSpecifier?: ViewReferenceSpecifier): ViewReference;
106
96
  getFrameNumber(): number;
107
97
  getCurrentImageIdIndex(): number;
@@ -109,6 +99,7 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
109
99
  getCamera(): ICamera;
110
100
  resetCamera: () => boolean;
111
101
  getNumberOfSlices: () => number;
102
+ getFrameRate(): number;
112
103
  getFrameOfReferenceUID: () => string;
113
104
  resize: () => void;
114
105
  canvasToWorld: (canvasPos: Point2, destPos?: Point3) => Point3;
@@ -123,7 +114,7 @@ declare class VideoViewport extends Viewport implements IVideoViewport {
123
114
  customRenderViewportToCanvas: () => void;
124
115
  protected getTransform(): Transform;
125
116
  updateCameraClippingPlanesAndRange(): void;
126
- addImages(stackInputs: Array<any>): void;
117
+ addImages(stackInputs: IStackInput[]): void;
127
118
  protected createActorMapper(image: any): CanvasActor;
128
119
  private renderFrame;
129
120
  private renderWhilstPlaying;
@@ -23,7 +23,6 @@ class VideoViewport extends Viewport {
23
23
  this.playbackRate = 1;
24
24
  this.frameRange = [0, 0];
25
25
  this.fps = 30;
26
- this.numberOfFrames = 0;
27
26
  this.videoCamera = {
28
27
  panWorld: [0, 0],
29
28
  parallelScale: 1,
@@ -41,16 +40,21 @@ class VideoViewport extends Viewport {
41
40
  voiRange: { ...this.voiRange },
42
41
  };
43
42
  };
43
+ this.getMiddleSliceData = () => {
44
+ throw new Error('Method not implemented.');
45
+ };
46
+ this.useCustomRenderingPipeline = true;
44
47
  this.resetCamera = () => {
45
48
  this.refreshRenderValues();
46
49
  this.canvasContext.fillRect(0, 0, this.canvas.width, this.canvas.height);
47
- if (this.isPlaying === false) {
50
+ if (!this.isPlaying) {
48
51
  this.renderFrame();
49
52
  }
50
53
  return true;
51
54
  };
52
55
  this.getNumberOfSlices = () => {
53
- return Math.round((this.videoElement.duration * this.fps) / this.scrollSpeed);
56
+ const computedSlices = Math.round((this.videoElement.duration * this.fps) / this.scrollSpeed);
57
+ return isNaN(computedSlices) ? this.numberOfFrames : computedSlices;
54
58
  };
55
59
  this.getFrameOfReferenceUID = () => {
56
60
  return this.videoElement.src;
@@ -63,7 +67,7 @@ class VideoViewport extends Viewport {
63
67
  canvas.height = clientHeight;
64
68
  }
65
69
  this.refreshRenderValues();
66
- if (this.isPlaying === false) {
70
+ if (!this.isPlaying) {
67
71
  this.renderFrame();
68
72
  }
69
73
  };
@@ -98,7 +102,9 @@ class VideoViewport extends Viewport {
98
102
  };
99
103
  this.indexToCanvas = (indexPos) => {
100
104
  const transform = this.getTransform();
101
- return (transform.transformPoint(indexPos).map((it) => it / devicePixelRatio));
105
+ return transform
106
+ .transformPoint(indexPos)
107
+ .map((it) => it / devicePixelRatio);
102
108
  };
103
109
  this.customRenderViewportToCanvas = () => {
104
110
  this.renderFrame();
@@ -109,7 +115,7 @@ class VideoViewport extends Viewport {
109
115
  const ctx = this.canvasContext;
110
116
  ctx.resetTransform();
111
117
  ctx.transform(transformationMatrix[0], transformationMatrix[1], transformationMatrix[2], transformationMatrix[3], transformationMatrix[4], transformationMatrix[5]);
112
- ctx.drawImage(this.videoElement, 0, 0, this.videoWidth, this.videoHeight);
118
+ ctx.drawImage(this.videoElement, 0, 0, this.videoWidth || 1024, this.videoHeight || 1024);
113
119
  for (const actor of this.getActors()) {
114
120
  actor.actor.render(this, this.canvasContext);
115
121
  }
@@ -126,11 +132,13 @@ class VideoViewport extends Viewport {
126
132
  element: this.element,
127
133
  viewportId: this.id,
128
134
  viewport: this,
135
+ imageIndex: this.getCurrentImageIdIndex(),
136
+ numberOfSlices: this.numberOfFrames,
129
137
  renderingEngineId: this.renderingEngineId,
130
138
  time: this.videoElement.currentTime,
131
139
  duration: this.videoElement.duration,
132
140
  });
133
- this.initialRender?.();
141
+ this.initialRender();
134
142
  const frame = this.getFrameNumber();
135
143
  if (this.isPlaying) {
136
144
  if (frame < this.frameRange[0]) {
@@ -204,7 +212,7 @@ class VideoViewport extends Viewport {
204
212
  this.hasPixelSpacing = !!imagePlaneModule.columnPixelSpacing;
205
213
  return {
206
214
  bitsAllocated: 8,
207
- numComps: 3,
215
+ numberOfComponents: 3,
208
216
  origin,
209
217
  rows,
210
218
  columns,
@@ -216,15 +224,23 @@ class VideoViewport extends Viewport {
216
224
  imagePlaneModule,
217
225
  };
218
226
  }
227
+ setDataIds(imageIds, options) {
228
+ this.setVideo(imageIds[0], (options.viewReference.sliceIndex || 0) + 1);
229
+ }
219
230
  setVideo(imageId, frameNumber) {
220
231
  this.imageId = Array.isArray(imageId) ? imageId[0] : imageId;
221
- const { rendered } = metaData.get(MetadataModules.IMAGE_URL, imageId);
232
+ const imageUrlModule = metaData.get(MetadataModules.IMAGE_URL, imageId);
233
+ if (!imageUrlModule?.rendered) {
234
+ throw new Error(`Video Image ID ${imageId} does not have a rendered video view`);
235
+ }
236
+ const { rendered } = imageUrlModule;
222
237
  const generalSeries = metaData.get(MetadataModules.GENERAL_SERIES, imageId);
223
238
  this.modality = generalSeries?.Modality;
224
239
  this.metadata = this.getImageDataMetadata(imageId);
240
+ let { cineRate, numberOfFrames } = metaData.get(MetadataModules.CINE, imageId);
241
+ this.numberOfFrames = numberOfFrames;
225
242
  return this.setVideoURL(rendered).then(() => {
226
- let { cineRate, numberOfFrames } = metaData.get(MetadataModules.CINE, imageId);
227
- if (!numberOfFrames) {
243
+ if (!numberOfFrames || numberOfFrames === 1) {
228
244
  numberOfFrames = Math.round(this.videoElement.duration * (cineRate || 30));
229
245
  }
230
246
  if (!cineRate) {
@@ -281,18 +297,18 @@ class VideoViewport extends Viewport {
281
297
  async play() {
282
298
  try {
283
299
  if (!this.isPlaying) {
284
- await this.videoElement.play();
285
300
  this.isPlaying = true;
301
+ await this.videoElement.play();
286
302
  this.renderWhilstPlaying();
287
303
  }
288
304
  }
289
305
  catch (e) {
290
306
  }
291
307
  }
292
- async pause() {
308
+ pause() {
293
309
  try {
294
- await this.videoElement.pause();
295
310
  this.isPlaying = false;
311
+ this.videoElement.pause();
296
312
  }
297
313
  catch (e) {
298
314
  }
@@ -346,6 +362,9 @@ class VideoViewport extends Viewport {
346
362
  videoElement.addEventListener('seeked', seekEventListener);
347
363
  }
348
364
  }
365
+ getSliceViewInfo() {
366
+ throw new Error('Method not implemented.');
367
+ }
349
368
  async setFrameNumber(frame) {
350
369
  this.setTime((frame - 1) / this.fps);
351
370
  }
@@ -404,7 +423,7 @@ class VideoViewport extends Viewport {
404
423
  });
405
424
  }
406
425
  getScalarData() {
407
- if (this.scalarData?.frameNumber === this.getFrameNumber()) {
426
+ if (this.scalarData.frameNumber === this.getFrameNumber()) {
408
427
  return this.scalarData;
409
428
  }
410
429
  const canvas = document.createElement('canvas');
@@ -427,8 +446,12 @@ class VideoViewport extends Viewport {
427
446
  spacing,
428
447
  origin: metadata.origin,
429
448
  direction: metadata.direction,
430
- metadata: { Modality: this.modality },
449
+ metadata: {
450
+ Modality: this.modality,
451
+ FrameOfReferenceUID: metadata.FrameOfReferenceUID,
452
+ },
431
453
  getScalarData: () => this.getScalarData(),
454
+ scalarData: this.getScalarData(),
432
455
  imageData: {
433
456
  getDirection: () => metadata.direction,
434
457
  getDimensions: () => metadata.dimensions,
@@ -462,7 +485,7 @@ class VideoViewport extends Viewport {
462
485
  const testURI = framesMatch
463
486
  ? imageURI.substring(0, framesMatch.index)
464
487
  : imageURI;
465
- return this.imageId.indexOf(testURI) !== -1;
488
+ return this.imageId.includes(testURI);
466
489
  }
467
490
  setVOI(voiRange) {
468
491
  this.voiRange = voiRange;
@@ -527,7 +550,7 @@ class VideoViewport extends Viewport {
527
550
  }
528
551
  this.canvasContext.fillStyle = 'rgba(0,0,0,1)';
529
552
  this.canvasContext.fillRect(0, 0, this.canvas.width, this.canvas.height);
530
- if (this.isPlaying === false) {
553
+ if (!this.isPlaying) {
531
554
  this.renderFrame();
532
555
  }
533
556
  }
@@ -573,15 +596,23 @@ class VideoViewport extends Viewport {
573
596
  return false;
574
597
  }
575
598
  const match = referencedImageId.match(VideoViewport.frameRangeExtractor);
576
- if (!match || !match[2]) {
599
+ if (!match[2]) {
577
600
  return true;
578
601
  }
579
602
  const range = match[2].split('-').map((it) => Number(it));
580
603
  const frame = currentIndex + 1;
581
604
  return range[0] <= frame && frame <= (range[1] ?? range[0]);
582
605
  }
606
+ setViewReference(viewRef) {
607
+ if (typeof viewRef.sliceIndex === 'number') {
608
+ this.setFrameNumber(viewRef.sliceIndex + 1);
609
+ }
610
+ else if (Array.isArray(viewRef.sliceIndex)) {
611
+ this.setFrameRange(viewRef.sliceIndex);
612
+ }
613
+ }
583
614
  getViewReference(viewRefSpecifier) {
584
- let sliceIndex = viewRefSpecifier?.sliceIndex;
615
+ let sliceIndex = viewRefSpecifier.sliceIndex;
585
616
  if (!sliceIndex) {
586
617
  sliceIndex = this.isPlaying
587
618
  ? [this.frameRange[0] - 1, this.frameRange[1] - 1]
@@ -600,7 +631,7 @@ class VideoViewport extends Viewport {
600
631
  return Math.round(this.videoElement.currentTime * this.fps);
601
632
  }
602
633
  getSliceIndex() {
603
- return this.getCurrentImageIdIndex();
634
+ return this.getCurrentImageIdIndex() / this.scrollSpeed;
604
635
  }
605
636
  getCamera() {
606
637
  const { parallelScale } = this.videoCamera;
@@ -618,6 +649,9 @@ class VideoViewport extends Viewport {
618
649
  viewPlaneNormal: [0, 0, 1],
619
650
  };
620
651
  }
652
+ getFrameRate() {
653
+ return this.fps;
654
+ }
621
655
  getPan() {
622
656
  const panWorld = this.videoCamera.panWorld;
623
657
  return [panWorld[0], panWorld[1]];
@@ -673,7 +707,10 @@ class VideoViewport extends Viewport {
673
707
  if (imageActor) {
674
708
  actors.push({ uid: stackInput.actorUID, actor: imageActor });
675
709
  if (stackInput.callback) {
676
- stackInput.callback({ imageActor, imageId: stackInput.imageId });
710
+ stackInput.callback({
711
+ imageActor: imageActor,
712
+ imageId: stackInput.imageId,
713
+ });
677
714
  }
678
715
  }
679
716
  });