@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
@@ -1,12 +1,14 @@
1
1
  import type { vtkCamera } from '@kitware/vtk.js/Rendering/Core/Camera';
2
2
  import vtkPlane from '@kitware/vtk.js/Common/DataModel/Plane';
3
+ import type { mat4 } from 'gl-matrix';
3
4
  import ViewportStatus from '../enums/ViewportStatus';
4
5
  import ViewportType from '../enums/ViewportType';
5
6
  import type { ICamera, ActorEntry, IRenderingEngine, ViewportInputOptions, Point2, Point3, FlipDirection, DisplayArea, ViewPresentation, ViewReference, ViewportProperties } from '../types';
6
- import type { ViewportInput, IViewport, ViewReferenceSpecifier, ReferenceCompatibleOptions, ViewPresentationSelector } from '../types/IViewport';
7
+ import type { ViewportInput, IViewport, ViewReferenceSpecifier, ReferenceCompatibleOptions, ViewPresentationSelector, DataSetOptions } from '../types/IViewport';
7
8
  import type { vtkSlabCamera } from './vtkClasses/vtkSlabCamera';
8
- import IImageCalibration from '../types/IImageCalibration';
9
+ import type IImageCalibration from '../types/IImageCalibration';
9
10
  import { InterpolationType } from '../enums';
11
+ import type vtkRenderer from '@kitware/vtk.js/Rendering/Core/Renderer';
10
12
  declare class Viewport implements IViewport {
11
13
  static readonly CameraViewPresentation: ViewPresentationSelector;
12
14
  static readonly TransferViewPresentation: ViewPresentationSelector;
@@ -24,8 +26,8 @@ declare class Viewport implements IViewport {
24
26
  sy: number;
25
27
  sWidth: number;
26
28
  sHeight: number;
27
- _actors: Map<string, any>;
28
- readonly defaultOptions: Record<string, any>;
29
+ _actors: Map<string, ActorEntry>;
30
+ readonly defaultOptions: ViewportInputOptions;
29
31
  options: ViewportInputOptions;
30
32
  _suppressCameraModifiedEvents: boolean;
31
33
  readonly suppressEvents: boolean;
@@ -52,22 +54,30 @@ declare class Viewport implements IViewport {
52
54
  removeWidgets: () => void;
53
55
  setRendered(): void;
54
56
  getRenderingEngine(): IRenderingEngine;
55
- getRenderer(): any;
57
+ getRenderer(): vtkRenderer;
56
58
  render(): void;
57
59
  setOptions(options: ViewportInputOptions, immediate?: boolean): void;
58
60
  reset(immediate?: boolean): void;
61
+ getSliceViewInfo(): {
62
+ width: number;
63
+ height: number;
64
+ sliceIndex: number;
65
+ slicePlane: number;
66
+ sliceToIndexMatrix: mat4;
67
+ indexToSliceMatrix: mat4;
68
+ };
59
69
  protected flip({ flipHorizontal, flipVertical }: FlipDirection): void;
60
70
  private getDefaultImageData;
61
71
  getDefaultActor(): ActorEntry;
62
- getActors(): Array<ActorEntry>;
63
- getActorUIDs(): Array<string>;
72
+ getActors(): ActorEntry[];
73
+ getActorUIDs(): string[];
64
74
  getActor(actorUID: string): ActorEntry;
65
75
  getActorUIDByIndex(index: number): string;
66
76
  getActorByIndex(index: number): ActorEntry;
67
- setActors(actors: Array<ActorEntry>): void;
77
+ setActors(actors: ActorEntry[]): void;
68
78
  _removeActor(actorUID: string): void;
69
- removeActors(actorUIDs: Array<string>): void;
70
- addActors(actors: Array<ActorEntry>, resetCameraPanAndZoom?: boolean): void;
79
+ removeActors(actorUIDs: string[]): void;
80
+ addActors(actors: ActorEntry[], resetCameraPanAndZoom?: boolean): void;
71
81
  addActor(actorEntry: ActorEntry): void;
72
82
  removeAllActors(): void;
73
83
  protected resetCameraNoEvent(): void;
@@ -84,6 +94,7 @@ declare class Viewport implements IViewport {
84
94
  getPan(initialCamera?: ICamera): Point2;
85
95
  getCurrentImageIdIndex(): number;
86
96
  getSliceIndex(): number;
97
+ getImageData(): any;
87
98
  getViewReferenceId(_specifier?: ViewReferenceSpecifier): string;
88
99
  setPan(pan: Point2, storeAsInitialCamera?: boolean): void;
89
100
  getZoom(compareCamera?: ICamera): number;
@@ -97,7 +108,7 @@ declare class Viewport implements IViewport {
97
108
  triggerCameraModifiedEventIfNecessary(previousCamera: ICamera, updatedCamera: ICamera): void;
98
109
  updateCameraClippingPlanesAndRange(): void;
99
110
  protected updateClippingPlanesForActors(updatedCamera: ICamera): Promise<void>;
100
- setOrientationOfClippingPlanes(vtkPlanes: Array<vtkPlane>, slabThickness: number, viewPlaneNormal: Point3, focalPoint: Point3): void;
111
+ setOrientationOfClippingPlanes(vtkPlanes: vtkPlane[], slabThickness: number, viewPlaneNormal: Point3, focalPoint: Point3): void;
101
112
  getClippingPlanesForActor(actorEntry?: ActorEntry): vtkPlane[];
102
113
  private _getWorldDistanceViewUpAndViewRight;
103
114
  getViewReference(viewRefSpecifier?: ViewReferenceSpecifier): ViewReference;
@@ -105,14 +116,14 @@ declare class Viewport implements IViewport {
105
116
  getViewPresentation(viewPresSel?: ViewPresentationSelector): ViewPresentation;
106
117
  setViewReference(viewRef: ViewReference): void;
107
118
  setViewPresentation(viewPres: ViewPresentation): void;
108
- protected _shouldUseNativeDataType(): boolean;
109
- _getCorners(bounds: Array<number>): Array<number>[];
119
+ _getCorners(bounds: number[]): number[][];
110
120
  _getFocalPointForResetCamera(centeredFocalPoint: Point3, previousCamera: ICamera, { resetPan, resetToCenter }: {
111
121
  resetPan?: boolean;
112
122
  resetToCenter?: boolean;
113
123
  }): Point3;
114
124
  _isInBounds(point: Point3, bounds: number[]): boolean;
115
- _getEdges(bounds: Array<number>): Array<[number[], number[]]>;
125
+ _getEdges(bounds: number[]): [number[], number[]][];
116
126
  static boundsRadius(bounds: number[]): number;
127
+ setDataIds(_imageIds: string[], _options?: DataSetOptions): void;
117
128
  }
118
129
  export default Viewport;
@@ -9,7 +9,6 @@ import renderingEngineCache from './renderingEngineCache';
9
9
  import { triggerEvent, planar, isImageActor, actorIsA, isEqual, } from '../utilities';
10
10
  import hasNaNValues from '../utilities/hasNaNValues';
11
11
  import { RENDERING_DEFAULTS } from '../constants';
12
- import { getConfiguration } from '../init';
13
12
  import { InterpolationType } from '../enums';
14
13
  class Viewport {
15
14
  static { this.CameraViewPresentation = {
@@ -94,7 +93,7 @@ class Viewport {
94
93
  if (!renderingEngine || renderingEngine.hasBeenDestroyed) {
95
94
  throw new Error('Rendering engine has been destroyed');
96
95
  }
97
- return renderingEngine.offscreenMultiRenderWindow.getRenderer(this.id);
96
+ return renderingEngine.offscreenMultiRenderWindow?.getRenderer(this.id);
98
97
  }
99
98
  render() {
100
99
  const renderingEngine = this.getRenderingEngine();
@@ -115,6 +114,9 @@ class Viewport {
115
114
  this.render();
116
115
  }
117
116
  }
117
+ getSliceViewInfo() {
118
+ throw new Error('Method not implemented.');
119
+ }
118
120
  flip({ flipHorizontal, flipVertical }) {
119
121
  const imageData = this.getDefaultImageData();
120
122
  if (!imageData) {
@@ -218,7 +220,9 @@ class Viewport {
218
220
  console.warn('Viewport::addActors::Rendering engine has not been initialized or has been destroyed');
219
221
  return;
220
222
  }
221
- actors.forEach((actor) => this.addActor(actor));
223
+ actors.forEach((actor) => {
224
+ this.addActor(actor);
225
+ });
222
226
  this.resetCamera({
223
227
  resetPan: resetCameraPanAndZoom,
224
228
  resetZoom: resetCameraPanAndZoom,
@@ -476,11 +480,11 @@ class Viewport {
476
480
  renderer.invokeEvent(RESET_CAMERA_EVENT);
477
481
  this.triggerCameraModifiedEventIfNecessary(previousCamera, modifiedCamera);
478
482
  if (imageData &&
479
- this.options?.displayArea &&
483
+ this.options.displayArea &&
480
484
  resetZoom &&
481
485
  resetPan &&
482
486
  resetToCenter) {
483
- this.setDisplayArea(this.options?.displayArea);
487
+ this.setDisplayArea(this.options.displayArea);
484
488
  }
485
489
  return true;
486
490
  }
@@ -496,7 +500,7 @@ class Viewport {
496
500
  const zero3 = this.canvasToWorld([0, 0]);
497
501
  const initialCanvasFocal = this.worldToCanvas(vec3.subtract([0, 0, 0], initialCamera.focalPoint, zero3));
498
502
  const currentCanvasFocal = this.worldToCanvas(vec3.subtract([0, 0, 0], focalPoint, zero3));
499
- const result = (vec2.subtract([0, 0], initialCanvasFocal, currentCanvasFocal));
503
+ const result = vec2.subtract([0, 0], initialCanvasFocal, currentCanvasFocal);
500
504
  return result;
501
505
  }
502
506
  getCurrentImageIdIndex() {
@@ -505,6 +509,9 @@ class Viewport {
505
509
  getSliceIndex() {
506
510
  throw new Error('Not implemented');
507
511
  }
512
+ getImageData() {
513
+ throw new Error('Not implemented');
514
+ }
508
515
  getViewReferenceId(_specifier) {
509
516
  return null;
510
517
  }
@@ -654,7 +661,7 @@ class Viewport {
654
661
  }
655
662
  if (cameraModifiedOutOfPlane || viewUpHasChanged) {
656
663
  const actorEntry = this.getDefaultActor();
657
- if (!actorEntry?.actor) {
664
+ if (!actorEntry.actor) {
658
665
  return;
659
666
  }
660
667
  if (!actorIsA(actorEntry, 'vtkActor')) {
@@ -697,7 +704,7 @@ class Viewport {
697
704
  }
698
705
  const mapper = actorEntry.actor.getMapper();
699
706
  let vtkPlanes = actorEntry?.clippingFilter
700
- ? actorEntry.clippingFilter.getClippingPlanes()
707
+ ? actorEntry?.clippingFilter.getClippingPlanes()
701
708
  : mapper.getClippingPlanes();
702
709
  if (vtkPlanes.length === 0 && actorEntry?.clippingFilter) {
703
710
  vtkPlanes = [vtkPlane.newInstance(), vtkPlane.newInstance()];
@@ -744,7 +751,7 @@ class Viewport {
744
751
  }
745
752
  const mapper = actorEntry.actor.getMapper();
746
753
  let vtkPlanes = actorEntry?.clippingFilter
747
- ? actorEntry.clippingFilter.getClippingPlanes()
754
+ ? actorEntry?.clippingFilter.getClippingPlanes()
748
755
  : mapper.getClippingPlanes();
749
756
  if (vtkPlanes.length === 0 && actorEntry?.clippingFilter) {
750
757
  vtkPlanes = [vtkPlane.newInstance(), vtkPlane.newInstance()];
@@ -810,7 +817,7 @@ class Viewport {
810
817
  if (viewPlaneNormal &&
811
818
  !isEqual(viewPlaneNormal, camera.viewPlaneNormal) &&
812
819
  !isEqual(vec3.negate(camera.viewPlaneNormal, camera.viewPlaneNormal), viewPlaneNormal)) {
813
- return options?.withOrientation === true;
820
+ return options?.withOrientation;
814
821
  }
815
822
  return true;
816
823
  }
@@ -856,10 +863,6 @@ class Viewport {
856
863
  this.setRotation(rotation);
857
864
  }
858
865
  }
859
- _shouldUseNativeDataType() {
860
- const { useNorm16Texture, preferSizeOverAccuracy } = getConfiguration().rendering;
861
- return useNorm16Texture || preferSizeOverAccuracy;
862
- }
863
866
  _getCorners(bounds) {
864
867
  return [
865
868
  [bounds[0], bounds[2], bounds[4]],
@@ -928,5 +931,8 @@ class Viewport {
928
931
  const radius = Math.sqrt(w1 + w2 + w3 || 1) * 0.5;
929
932
  return radius;
930
933
  }
934
+ setDataIds(_imageIds, _options) {
935
+ throw new Error('Unsupported operatoin setDataIds');
936
+ }
931
937
  }
932
938
  export default Viewport;
@@ -1,13 +1,15 @@
1
- import { BlendModes, OrientationAxis } from '../enums';
1
+ import type { BlendModes } from '../enums';
2
+ import { OrientationAxis } from '../enums';
2
3
  import type { IVolumeInput, OrientationVectors, Point3, ViewReference, ViewReferenceSpecifier } from '../types';
3
4
  import type { ViewportInput } from '../types/IViewport';
4
5
  import BaseVolumeViewport from './BaseVolumeViewport';
6
+ import { mat4 } from 'gl-matrix';
5
7
  declare class VolumeViewport extends BaseVolumeViewport {
6
8
  private _useAcquisitionPlaneForViewPlane;
7
9
  constructor(props: ViewportInput);
8
- setVolumes(volumeInputArray: Array<IVolumeInput>, immediate?: boolean, suppressEvents?: boolean): Promise<void>;
10
+ setVolumes(volumeInputArray: IVolumeInput[], immediate?: boolean, suppressEvents?: boolean): Promise<void>;
9
11
  getNumberOfSlices: () => number;
10
- addVolumes(volumeInputArray: Array<IVolumeInput>, immediate?: boolean, suppressEvents?: boolean): Promise<void>;
12
+ addVolumes(volumeInputArray: IVolumeInput[], immediate?: boolean, suppressEvents?: boolean): Promise<void>;
11
13
  setOrientation(orientation: OrientationAxis | OrientationVectors, immediate?: boolean): void;
12
14
  private _getAcquisitionPlaneOrientation;
13
15
  private _setViewPlaneToAcquisitionPlane;
@@ -17,20 +19,30 @@ declare class VolumeViewport extends BaseVolumeViewport {
17
19
  resetSlabThickness(): void;
18
20
  getCurrentImageIdIndex: (volumeId?: string) => number;
19
21
  getSliceIndex: () => number;
22
+ getSliceViewInfo(): {
23
+ sliceIndex: number;
24
+ slicePlane: number;
25
+ width: number;
26
+ height: number;
27
+ sliceToIndexMatrix: mat4;
28
+ indexToSliceMatrix: mat4;
29
+ };
30
+ getCurrentSlicePixelData(): import("../types").PixelDataTypedArray;
20
31
  getCurrentImageId: () => string | undefined;
21
32
  getViewReference(viewRefSpecifier?: ViewReferenceSpecifier): ViewReference;
22
33
  resetProperties(volumeId?: string): void;
23
34
  private _resetProperties;
24
- getSlicesClippingPlanes(): Array<{
35
+ private setCameraClippingRange;
36
+ getSlicesClippingPlanes(): {
25
37
  sliceIndex: number;
26
- planes: Array<{
38
+ planes: {
27
39
  normal: Point3;
28
40
  origin: Point3;
29
- }>;
30
- }>;
31
- getSlicePlaneCoordinates: () => Array<{
41
+ }[];
42
+ }[];
43
+ getSlicePlaneCoordinates: () => {
32
44
  sliceIndex: number;
33
45
  point: Point3;
34
- }>;
46
+ }[];
35
47
  }
36
48
  export default VolumeViewport;
@@ -1,19 +1,21 @@
1
1
  import vtkPlane from '@kitware/vtk.js/Common/DataModel/Plane';
2
2
  import cache from '../cache';
3
- import { MPR_CAMERA_VALUES, RENDERING_DEFAULTS } from '../constants';
3
+ import { EPSILON, MPR_CAMERA_VALUES, RENDERING_DEFAULTS } from '../constants';
4
4
  import { OrientationAxis, Events } from '../enums';
5
5
  import { actorIsA, getClosestImageId, getSliceRange, getSpacingInNormalDirection, isImageActor, snapFocalPointToSlice, triggerEvent, } from '../utilities';
6
6
  import BaseVolumeViewport from './BaseVolumeViewport';
7
7
  import setDefaultVolumeVOI from './helpers/setDefaultVolumeVOI';
8
8
  import { setTransferFunctionNodes } from '../utilities/transferFunctionUtils';
9
9
  import getImageSliceDataForVolumeViewport from '../utilities/getImageSliceDataForVolumeViewport';
10
- import { vec3 } from 'gl-matrix';
10
+ import { mat4, vec3 } from 'gl-matrix';
11
+ import { transformCanvasToIJK } from '../utilities/transformCanvasToIJK';
12
+ import { transformIJKToCanvas } from '../utilities/transformIJKToCanvas';
11
13
  class VolumeViewport extends BaseVolumeViewport {
12
14
  constructor(props) {
13
15
  super(props);
14
16
  this._useAcquisitionPlaneForViewPlane = false;
15
17
  this.getNumberOfSlices = () => {
16
- const { numberOfSlices } = getImageSliceDataForVolumeViewport(this);
18
+ const { numberOfSlices } = getImageSliceDataForVolumeViewport(this) || {};
17
19
  return numberOfSlices;
18
20
  };
19
21
  this.getCurrentImageIdIndex = (volumeId) => {
@@ -30,7 +32,7 @@ class VolumeViewport extends BaseVolumeViewport {
30
32
  return Math.round(Math.abs(distance) / spacingInNormal);
31
33
  };
32
34
  this.getSliceIndex = () => {
33
- const { imageIndex } = getImageSliceDataForVolumeViewport(this);
35
+ const { imageIndex } = getImageSliceDataForVolumeViewport(this) || {};
34
36
  return imageIndex;
35
37
  };
36
38
  this.getCurrentImageId = () => {
@@ -176,14 +178,14 @@ class VolumeViewport extends BaseVolumeViewport {
176
178
  }
177
179
  }
178
180
  resetCamera(options) {
179
- const { resetPan = true, resetZoom = true, resetRotation = true, resetToCenter = true, suppressEvents = false, } = options || {};
181
+ const { resetPan = true, resetZoom = true, resetRotation = true, resetToCenter = true, suppressEvents = false, resetOrientation = true, } = options || {};
180
182
  const { orientation } = this.viewportProperties;
181
- if (orientation) {
183
+ if (orientation && resetOrientation) {
182
184
  this.applyViewOrientation(orientation, false);
183
185
  }
184
186
  super.resetCamera({ resetPan, resetZoom, resetToCenter });
185
- this.resetVolumeViewportClippingRange();
186
187
  const activeCamera = this.getVtkActiveCamera();
188
+ this.setCameraClippingRange();
187
189
  const viewPlaneNormal = activeCamera.getViewPlaneNormal();
188
190
  const focalPoint = activeCamera.getFocalPoint();
189
191
  const actorEntries = this.getActors();
@@ -242,6 +244,7 @@ class VolumeViewport extends BaseVolumeViewport {
242
244
  });
243
245
  const currentCamera = this.getCamera();
244
246
  this.updateClippingPlanesForActors(currentCamera);
247
+ this.setCameraClippingRange();
245
248
  this.triggerCameraModifiedEventIfNecessary(currentCamera, currentCamera);
246
249
  this.viewportProperties.slabThickness = slabThickness;
247
250
  }
@@ -257,6 +260,74 @@ class VolumeViewport extends BaseVolumeViewport {
257
260
  this.triggerCameraModifiedEventIfNecessary(currentCamera, currentCamera);
258
261
  this.viewportProperties.slabThickness = undefined;
259
262
  }
263
+ getSliceViewInfo() {
264
+ const { width: canvasWidth, height: canvasHeight } = this.getCanvas();
265
+ const ijkOriginPoint = transformCanvasToIJK(this, [0, 0]);
266
+ const ijkRowPoint = transformCanvasToIJK(this, [canvasWidth - 1, 0]);
267
+ const ijkColPoint = transformCanvasToIJK(this, [0, canvasHeight - 1]);
268
+ const ijkRowVec = vec3.sub(vec3.create(), ijkRowPoint, ijkOriginPoint);
269
+ const ijkColVec = vec3.sub(vec3.create(), ijkColPoint, ijkOriginPoint);
270
+ const ijkSliceVec = vec3.cross(vec3.create(), ijkRowVec, ijkColVec);
271
+ vec3.normalize(ijkRowVec, ijkRowVec);
272
+ vec3.normalize(ijkColVec, ijkColVec);
273
+ vec3.normalize(ijkSliceVec, ijkSliceVec);
274
+ const { dimensions } = this.getImageData();
275
+ const [sx, sy, sz] = dimensions;
276
+ const ijkCorners = [
277
+ [0, 0, 0],
278
+ [sx - 1, 0, 0],
279
+ [0, sy - 1, 0],
280
+ [sx - 1, sy - 1, 0],
281
+ [0, 0, sz - 1],
282
+ [sx - 1, 0, sz - 1],
283
+ [0, sy - 1, sz - 1],
284
+ [sx - 1, sy - 1, sz - 1],
285
+ ];
286
+ const canvasCorners = ijkCorners.map((ijkCorner) => transformIJKToCanvas(this, ijkCorner));
287
+ const canvasAABB = canvasCorners.reduce((aabb, canvasPoint) => {
288
+ aabb.minX = Math.min(aabb.minX, canvasPoint[0]);
289
+ aabb.minY = Math.min(aabb.minY, canvasPoint[1]);
290
+ aabb.maxX = Math.max(aabb.maxX, canvasPoint[0]);
291
+ aabb.maxY = Math.max(aabb.maxY, canvasPoint[1]);
292
+ return aabb;
293
+ }, { minX: Infinity, minY: Infinity, maxX: -Infinity, maxY: -Infinity });
294
+ const ijkTopLeft = transformCanvasToIJK(this, [
295
+ canvasAABB.minX,
296
+ canvasAABB.minY,
297
+ ]);
298
+ const sliceToIndexMatrix = mat4.fromValues(ijkRowVec[0], ijkRowVec[1], ijkRowVec[2], 0, ijkColVec[0], ijkColVec[1], ijkColVec[2], 0, ijkSliceVec[0], ijkSliceVec[1], ijkSliceVec[2], 0, ijkTopLeft[0], ijkTopLeft[1], ijkTopLeft[2], 1);
299
+ const ijkBottomRight = transformCanvasToIJK(this, [
300
+ canvasAABB.maxX,
301
+ canvasAABB.maxY,
302
+ ]);
303
+ const ijkDiagonal = vec3.sub(vec3.create(), ijkBottomRight, ijkTopLeft);
304
+ const indexToSliceMatrix = mat4.invert(mat4.create(), sliceToIndexMatrix);
305
+ const { viewPlaneNormal } = this.getCamera();
306
+ const isOblique = viewPlaneNormal.filter((component) => Math.abs(component) > EPSILON)
307
+ .length > 1;
308
+ if (isOblique) {
309
+ throw new Error('getSliceInfo is not supported for oblique views');
310
+ }
311
+ const sliceAxis = viewPlaneNormal.findIndex((component) => Math.abs(component) > 1 - EPSILON);
312
+ if (sliceAxis === -1) {
313
+ throw new Error('Unable to determine slice axis');
314
+ }
315
+ const sliceWidth = vec3.dot(ijkRowVec, ijkDiagonal) + 1;
316
+ const sliceHeight = vec3.dot(ijkColVec, ijkDiagonal) + 1;
317
+ return {
318
+ sliceIndex: this.getSliceIndex(),
319
+ width: sliceWidth,
320
+ height: sliceHeight,
321
+ slicePlane: sliceAxis,
322
+ sliceToIndexMatrix,
323
+ indexToSliceMatrix,
324
+ };
325
+ }
326
+ getCurrentSlicePixelData() {
327
+ const { voxelManager } = this.getImageData();
328
+ const sliceData = voxelManager.getSliceData(this.getSliceViewInfo());
329
+ return sliceData;
330
+ }
260
331
  getViewReference(viewRefSpecifier = {}) {
261
332
  const viewRef = super.getViewReference(viewRefSpecifier);
262
333
  if (!viewRef?.volumeId) {
@@ -285,7 +356,7 @@ class VolumeViewport extends BaseVolumeViewport {
285
356
  if (!imageVolume) {
286
357
  throw new Error(`imageVolume with id: ${volumeActor.uid} does not exist in cache`);
287
358
  }
288
- setDefaultVolumeVOI(volumeActor.actor, imageVolume, false);
359
+ setDefaultVolumeVOI(volumeActor.actor, imageVolume);
289
360
  if (isImageActor(volumeActor)) {
290
361
  const transferFunction = volumeActor.actor
291
362
  .getProperty()
@@ -307,6 +378,15 @@ class VolumeViewport extends BaseVolumeViewport {
307
378
  });
308
379
  triggerEvent(this.element, Events.VOI_MODIFIED, eventDetails);
309
380
  }
381
+ setCameraClippingRange() {
382
+ const activeCamera = this.getVtkActiveCamera();
383
+ if (activeCamera.getParallelProjection()) {
384
+ activeCamera.setClippingRange(activeCamera.getDistance(), activeCamera.getDistance() + this.getSlabThickness());
385
+ }
386
+ else {
387
+ activeCamera.setClippingRange(RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS, RENDERING_DEFAULTS.MAXIMUM_RAY_DISTANCE);
388
+ }
389
+ }
310
390
  getSlicesClippingPlanes() {
311
391
  const focalPoints = this.getSlicePlaneCoordinates();
312
392
  const { viewPlaneNormal } = this.getCamera();
@@ -1,13 +1,13 @@
1
- import { BlendModes } from '../enums';
1
+ import type { BlendModes } from '../enums';
2
2
  import type { ViewportInput } from '../types/IViewport';
3
3
  import BaseVolumeViewport from './BaseVolumeViewport';
4
4
  declare class VolumeViewport3D extends BaseVolumeViewport {
5
5
  constructor(props: ViewportInput);
6
6
  resetCamera(resetPan?: boolean, resetZoom?: boolean, resetToCenter?: boolean): boolean;
7
7
  getRotation: () => number;
8
- getCurrentImageIdIndex: () => number | undefined;
8
+ getCurrentImageIdIndex: () => number;
9
9
  getCurrentImageId: () => string;
10
- setSlabThickness(slabThickness: number, filterActorUIDs?: Array<string>): void;
10
+ setSlabThickness(slabThickness: number, filterActorUIDs?: string[]): void;
11
11
  setBlendMode(blendMode: BlendModes, filterActorUIDs?: string[], immediate?: boolean): void;
12
12
  resetProperties(volumeId?: string): void;
13
13
  resetSlabThickness(): void;
@@ -1,3 +1,4 @@
1
+ import { RENDERING_DEFAULTS } from '../constants';
1
2
  import { OrientationAxis } from '../enums';
2
3
  import BaseVolumeViewport from './BaseVolumeViewport';
3
4
  class VolumeViewport3D extends BaseVolumeViewport {
@@ -5,7 +6,7 @@ class VolumeViewport3D extends BaseVolumeViewport {
5
6
  super(props);
6
7
  this.getRotation = () => 0;
7
8
  this.getCurrentImageIdIndex = () => {
8
- return undefined;
9
+ return 0;
9
10
  };
10
11
  this.getCurrentImageId = () => {
11
12
  return null;
@@ -21,8 +22,14 @@ class VolumeViewport3D extends BaseVolumeViewport {
21
22
  }
22
23
  resetCamera(resetPan = true, resetZoom = true, resetToCenter = true) {
23
24
  super.resetCamera({ resetPan, resetZoom, resetToCenter });
24
- this.resetVolumeViewportClippingRange();
25
- return;
25
+ const activeCamera = this.getVtkActiveCamera();
26
+ if (activeCamera.getParallelProjection()) {
27
+ activeCamera.setClippingRange(-RENDERING_DEFAULTS.MAXIMUM_RAY_DISTANCE, RENDERING_DEFAULTS.MAXIMUM_RAY_DISTANCE);
28
+ }
29
+ else {
30
+ activeCamera.setClippingRange(RENDERING_DEFAULTS.MINIMUM_SLAB_THICKNESS, RENDERING_DEFAULTS.MAXIMUM_RAY_DISTANCE);
31
+ }
32
+ return true;
26
33
  }
27
34
  setSlabThickness(slabThickness, filterActorUIDs) {
28
35
  return null;
@@ -0,0 +1,58 @@
1
+ import type { IWSIViewport, WSIViewportProperties, Point3, Point2, ICamera, WSIViewportInput, CPUIImageData } from '../types';
2
+ import { Transform } from './helpers/cpuFallback/rendering/transform';
3
+ import Viewport from './Viewport';
4
+ declare class WSIViewport extends Viewport implements IWSIViewport {
5
+ modality: any;
6
+ protected imageIds: string[];
7
+ readonly uid: any;
8
+ readonly renderingEngineId: string;
9
+ private frameOfReferenceUID;
10
+ protected metadata: any;
11
+ protected metadataDicomweb: any;
12
+ private microscopyElement;
13
+ protected map: any;
14
+ private internalCamera;
15
+ private viewer;
16
+ private voiRange;
17
+ constructor(props: WSIViewportInput);
18
+ static get useCustomRenderingPipeline(): boolean;
19
+ private addEventListeners;
20
+ private removeEventListeners;
21
+ private elementDisabledHandler;
22
+ private getImageDataMetadata;
23
+ setFrameNumber(frame: number): Promise<void>;
24
+ setProperties(props: WSIViewportProperties): void;
25
+ getProperties: () => WSIViewportProperties;
26
+ resetProperties(): void;
27
+ protected getScalarData(): any;
28
+ getImageData(): CPUIImageData;
29
+ hasImageURI(imageURI: string): boolean;
30
+ setCamera(camera: ICamera): void;
31
+ getCurrentImageId(): string;
32
+ getFrameNumber(): number;
33
+ getCamera(): ICamera;
34
+ resetCamera: () => boolean;
35
+ getNumberOfSlices: () => number;
36
+ static getDicomMicroscopyViewer: () => Promise<any>;
37
+ getFrameOfReferenceUID: () => string;
38
+ resize: () => void;
39
+ canvasToWorld: (canvasPos: Point2) => Point3;
40
+ worldToCanvas: (worldPos: Point3) => Point2;
41
+ setDataIds(imageIds: string[]): Promise<void>;
42
+ setWSI(imageIds: string[], client: any): Promise<void>;
43
+ postrender: () => void;
44
+ scroll(delta: number): void;
45
+ getRotation: () => number;
46
+ protected canvasToIndex: (canvasPos: Point2) => Point2;
47
+ protected indexToCanvas: (indexPos: Point2) => Point2;
48
+ getSliceIndex(): number;
49
+ getView(): any;
50
+ private refreshRenderValues;
51
+ customRenderViewportToCanvas: () => void;
52
+ getZoom(): any;
53
+ setZoom(zoom: number): void;
54
+ protected getTransform(): Transform;
55
+ getReferenceId(): string;
56
+ getCurrentImageIdIndex(): number;
57
+ }
58
+ export default WSIViewport;