@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
package/dist/esm/init.js CHANGED
@@ -1,14 +1,9 @@
1
- import { getGPUTier } from 'detect-gpu';
2
- import { SharedArrayBufferModes } from './enums';
3
1
  import { getRenderingEngines } from './RenderingEngine/getRenderingEngine';
4
2
  let csRenderInitialized = false;
5
- let useSharedArrayBuffer = true;
6
- let sharedArrayBufferMode = SharedArrayBufferModes.TRUE;
7
3
  import { deepMerge } from './utilities';
8
4
  import CentralizedWebWorkerManager from './webWorkerManager/webWorkerManager';
9
5
  const defaultConfig = {
10
- gpuTier: undefined,
11
- detectGPUConfig: {},
6
+ gpuTier: { tier: 2 },
12
7
  isMobile: false,
13
8
  rendering: {
14
9
  useCPURendering: false,
@@ -16,19 +11,11 @@ const defaultConfig = {
16
11
  useNorm16Texture: false,
17
12
  strictZSpacingForVolumeViewport: true,
18
13
  },
19
- enableCacheOptimization: true,
14
+ peerImport: (moduleId) => null,
20
15
  };
21
16
  let config = {
22
- gpuTier: undefined,
23
- detectGPUConfig: {},
24
- isMobile: false,
25
- rendering: {
26
- useCPURendering: false,
27
- preferSizeOverAccuracy: false,
28
- useNorm16Texture: false,
29
- strictZSpacingForVolumeViewport: true,
30
- },
31
- enableCacheOptimization: true,
17
+ ...defaultConfig,
18
+ rendering: { ...defaultConfig.rendering },
32
19
  };
33
20
  let webWorkerManager = null;
34
21
  function _getGLContext() {
@@ -42,19 +29,6 @@ function _hasActiveWebGLContext() {
42
29
  const gl = _getGLContext();
43
30
  return (gl instanceof WebGLRenderingContext || gl instanceof WebGL2RenderingContext);
44
31
  }
45
- function hasSharedArrayBuffer() {
46
- try {
47
- if (new SharedArrayBuffer(0)) {
48
- return true;
49
- }
50
- else {
51
- return false;
52
- }
53
- }
54
- catch {
55
- return false;
56
- }
57
- }
58
32
  function _hasNorm16TextureSupport() {
59
33
  const gl = _getGLContext();
60
34
  if (gl) {
@@ -72,10 +46,10 @@ function isIOS() {
72
46
  else {
73
47
  return (navigator.maxTouchPoints &&
74
48
  navigator.maxTouchPoints > 2 &&
75
- /MacIntel/.test(navigator.platform));
49
+ navigator.platform.includes('MacIntel'));
76
50
  }
77
51
  }
78
- async function init(configuration = config) {
52
+ function init(configuration = config) {
79
53
  if (csRenderInitialized) {
80
54
  return csRenderInitialized;
81
55
  }
@@ -83,7 +57,7 @@ async function init(configuration = config) {
83
57
  if (isIOS()) {
84
58
  config.rendering.useNorm16Texture = _hasNorm16TextureSupport();
85
59
  if (!config.rendering.useNorm16Texture) {
86
- if (configuration.rendering?.preferSizeOverAccuracy) {
60
+ if (configuration.rendering.preferSizeOverAccuracy) {
87
61
  config.rendering.preferSizeOverAccuracy = true;
88
62
  }
89
63
  else {
@@ -97,28 +71,20 @@ async function init(configuration = config) {
97
71
  config.rendering.useCPURendering = true;
98
72
  }
99
73
  else {
100
- config.gpuTier =
101
- config.gpuTier || (await getGPUTier(config.detectGPUConfig));
102
- console.log('CornerstoneRender: Using detect-gpu to get the GPU benchmark:', config.gpuTier);
103
- if (config.gpuTier?.tier < 1) {
104
- console.log('CornerstoneRender: GPU is not powerful enough, using CPU rendering');
105
- config.rendering.useCPURendering = true;
106
- }
107
- else {
108
- console.log('CornerstoneRender: using GPU rendering');
109
- }
74
+ console.log('CornerstoneRender: using GPU rendering');
110
75
  }
111
- setUseSharedArrayBuffer(sharedArrayBufferMode);
112
76
  csRenderInitialized = true;
113
77
  if (!webWorkerManager) {
114
78
  webWorkerManager = new CentralizedWebWorkerManager();
115
79
  }
116
80
  return csRenderInitialized;
117
81
  }
118
- function setUseCPURendering(status) {
82
+ function setUseCPURendering(status, updateViewports = true) {
119
83
  config.rendering.useCPURendering = status;
120
84
  csRenderInitialized = true;
121
- _updateRenderingPipelinesForAllViewports();
85
+ if (updateViewports) {
86
+ _updateRenderingPipelinesForAllViewports();
87
+ }
122
88
  }
123
89
  function setPreferSizeOverAccuracy(status) {
124
90
  config.rendering.preferSizeOverAccuracy = status;
@@ -138,38 +104,6 @@ function resetUseCPURendering() {
138
104
  function getShouldUseCPURendering() {
139
105
  return config.rendering.useCPURendering;
140
106
  }
141
- function setUseSharedArrayBuffer(mode) {
142
- if (mode == SharedArrayBufferModes.AUTO) {
143
- sharedArrayBufferMode = SharedArrayBufferModes.AUTO;
144
- const hasSharedBuffer = hasSharedArrayBuffer();
145
- if (!hasSharedBuffer) {
146
- useSharedArrayBuffer = false;
147
- console.warn(`CornerstoneRender: SharedArray Buffer not allowed, performance may be slower.
148
- Try ensuring page is cross-origin isolated to enable SharedArrayBuffer.`);
149
- }
150
- else {
151
- useSharedArrayBuffer = true;
152
- console.log('CornerstoneRender: using SharedArrayBuffer');
153
- }
154
- return;
155
- }
156
- if (mode == SharedArrayBufferModes.TRUE || mode == true) {
157
- sharedArrayBufferMode = SharedArrayBufferModes.TRUE;
158
- useSharedArrayBuffer = true;
159
- return;
160
- }
161
- if (mode == SharedArrayBufferModes.FALSE || mode == false) {
162
- sharedArrayBufferMode = SharedArrayBufferModes.FALSE;
163
- useSharedArrayBuffer = false;
164
- return;
165
- }
166
- }
167
- function resetUseSharedArrayBuffer() {
168
- setUseSharedArrayBuffer(sharedArrayBufferMode);
169
- }
170
- function getShouldUseSharedArrayBuffer() {
171
- return useSharedArrayBuffer;
172
- }
173
107
  function isCornerstoneInitialized() {
174
108
  return csRenderInitialized;
175
109
  }
@@ -181,9 +115,11 @@ function setConfiguration(c) {
181
115
  _updateRenderingPipelinesForAllViewports();
182
116
  }
183
117
  function _updateRenderingPipelinesForAllViewports() {
184
- getRenderingEngines().forEach((engine) => engine
185
- .getViewports()
186
- .forEach((viewport) => viewport.updateRenderingPipeline?.()));
118
+ getRenderingEngines().forEach((engine) => {
119
+ engine.getViewports().forEach((viewport) => {
120
+ viewport.updateRenderingPipeline();
121
+ });
122
+ });
187
123
  }
188
124
  function getWebWorkerManager() {
189
125
  if (!webWorkerManager) {
@@ -191,4 +127,7 @@ function getWebWorkerManager() {
191
127
  }
192
128
  return webWorkerManager;
193
129
  }
194
- export { init, getShouldUseCPURendering, getShouldUseSharedArrayBuffer, isCornerstoneInitialized, setUseCPURendering, setUseSharedArrayBuffer, setPreferSizeOverAccuracy, resetUseCPURendering, resetUseSharedArrayBuffer, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, };
130
+ function peerImport(moduleId) {
131
+ return config.peerImport(moduleId);
132
+ }
133
+ export { init, getShouldUseCPURendering, isCornerstoneInitialized, setUseCPURendering, setPreferSizeOverAccuracy, resetUseCPURendering, getConfiguration, setConfiguration, getWebWorkerManager, canRenderFloatTextures, peerImport, };
@@ -1,20 +1,20 @@
1
- import { IRetrieveConfiguration, IImagesLoader, RetrieveStage, ImageLoadListener, RetrieveOptions } from '../types';
1
+ import type { IRetrieveConfiguration, IImagesLoader, RetrieveStage, ImageLoadListener, RetrieveOptions } from '../types';
2
2
  import singleRetrieveStages from './configuration/singleRetrieve';
3
3
  import sequentialRetrieveStages from './configuration/sequentialRetrieve';
4
4
  import interleavedRetrieveStages from './configuration/interleavedRetrieve';
5
5
  import { ImageQualityStatus } from '../enums';
6
6
  export { sequentialRetrieveStages, interleavedRetrieveStages, singleRetrieveStages, };
7
- export type NearbyRequest = {
7
+ export interface NearbyRequest {
8
8
  itemId: string;
9
9
  linearId?: string;
10
10
  imageQualityStatus: ImageQualityStatus;
11
- };
12
- export type ProgressiveRequest = {
11
+ }
12
+ export interface ProgressiveRequest {
13
13
  imageId: string;
14
14
  stage: RetrieveStage;
15
15
  next?: ProgressiveRequest;
16
16
  nearbyRequests?: NearbyRequest[];
17
- };
17
+ }
18
18
  export declare class ProgressiveRetrieveImages implements IImagesLoader, IRetrieveConfiguration {
19
19
  static createProgressive: typeof createProgressive;
20
20
  static interleavedRetrieveStages: {
@@ -186,7 +186,9 @@ class ProgressiveRetrieveImagesInstance {
186
186
  for (const stage of this.stages) {
187
187
  const indices = stage.positions ||
188
188
  decimate(this.imageIds, stage.decimate || 1, stage.offset ?? 0);
189
- indices.forEach((index) => addStageInstance(stage, index));
189
+ indices.forEach((index) => {
190
+ addStageInstance(stage, index);
191
+ });
190
192
  }
191
193
  return interleaved;
192
194
  }
@@ -1,3 +1,3 @@
1
- import { RetrieveStage } from '../../types';
1
+ import type { RetrieveStage } from '../../types';
2
2
  declare const interleavedRetrieveConfiguration: RetrieveStage[];
3
3
  export default interleavedRetrieveConfiguration;
@@ -1,3 +1,3 @@
1
- import { ImageLoadListener } from '../types';
2
- import { ImageQualityStatus } from '../enums';
1
+ import type { ImageLoadListener } from '../types';
2
+ import type { ImageQualityStatus } from '../enums';
3
3
  export declare function fillNearbyFrames(listener: ImageLoadListener, imageQualityStatusMap: Map<string, ImageQualityStatus>, request: any, image: any, options: any): void;
@@ -1,9 +1,9 @@
1
1
  import '@kitware/vtk.js/Rendering/Profiles/Geometry';
2
2
  import { GeometryType } from '../enums';
3
- import { IGeometry, PublicContourSetData, PublicSurfaceData } from '../types';
4
- type GeometryOptions = {
3
+ import type { IGeometry, PublicContourSetData, PublicSurfaceData } from '../types';
4
+ interface GeometryOptions {
5
5
  type: GeometryType;
6
6
  geometryData: PublicContourSetData | PublicSurfaceData;
7
- };
7
+ }
8
8
  declare function createAndCacheGeometry(geometryId: string, options: GeometryOptions): Promise<IGeometry>;
9
9
  export { createAndCacheGeometry };
@@ -1,43 +1,38 @@
1
- import { IImage, ImageLoaderFn, Point2, Point3, Mat3, PixelDataTypedArrayString, PixelDataTypedArray } from '../types';
1
+ import type { IImage, ImageLoaderFn, Point2, Point3, Mat3, PixelDataTypedArrayString, PixelDataTypedArray } from '../types';
2
2
  export interface ImageLoaderOptions {
3
3
  priority: number;
4
4
  requestType: string;
5
5
  additionalDetails?: Record<string, unknown>;
6
6
  ignoreCache?: boolean;
7
7
  }
8
- interface DerivedImages {
9
- imageIds: Array<string>;
10
- promises: Array<Promise<IImage>>;
11
- }
12
- type LocalImageOptions = {
8
+ interface LocalImageOptions {
13
9
  scalarData?: PixelDataTypedArray;
14
10
  targetBufferType?: PixelDataTypedArrayString;
15
11
  dimensions?: Point2;
16
- spacing?: Point3;
12
+ spacing?: Point2;
17
13
  origin?: Point3;
18
14
  direction?: Mat3;
19
15
  skipCreateBuffer?: boolean;
20
16
  onCacheAdd?: (image: IImage) => void;
21
- };
17
+ }
22
18
  type DerivedImageOptions = LocalImageOptions & {
23
19
  imageId?: string;
24
- targetBufferType?: PixelDataTypedArrayString;
25
20
  };
26
21
  export declare function loadImage(imageId: string, options?: ImageLoaderOptions): Promise<IImage>;
27
22
  export declare function loadAndCacheImage(imageId: string, options?: ImageLoaderOptions): Promise<IImage>;
28
- export declare function loadAndCacheImages(imageIds: Array<string>, options?: ImageLoaderOptions): Promise<IImage>[];
29
- export declare function createAndCacheDerivedImage(referencedImageId: string, options?: DerivedImageOptions, preventCache?: boolean): Promise<IImage>;
30
- export declare function createAndCacheDerivedImages(referencedImageIds: Array<string>, options?: DerivedImageOptions & {
23
+ export declare function loadAndCacheImages(imageIds: string[], options?: ImageLoaderOptions): Promise<IImage>[];
24
+ export declare function createAndCacheDerivedImage(referencedImageId: string, options?: DerivedImageOptions): IImage;
25
+ export declare function createAndCacheDerivedImages(referencedImageIds: string[], options?: DerivedImageOptions & {
31
26
  getDerivedImageId?: (referencedImageId: string) => string;
32
27
  targetBufferType?: PixelDataTypedArrayString;
33
- }): DerivedImages;
34
- export declare function createAndCacheLocalImage(options: LocalImageOptions, imageId: string, preventCache?: boolean): IImage;
28
+ }): IImage[];
29
+ export declare function createAndCacheLocalImage(imageId: string, options: LocalImageOptions): IImage;
35
30
  export declare function cancelLoadImage(imageId: string): void;
36
- export declare function cancelLoadImages(imageIds: Array<string>): void;
31
+ export declare function cancelLoadImages(imageIds: string[]): void;
37
32
  export declare function cancelLoadAll(): void;
38
33
  export declare function registerImageLoader(scheme: string, imageLoader: ImageLoaderFn): void;
39
34
  export declare function registerUnknownImageLoader(imageLoader: ImageLoaderFn): ImageLoaderFn;
40
35
  export declare function unregisterAllImageLoaders(): void;
41
- export declare function createAndCacheDerivedSegmentationImages(referencedImageIds: Array<string>, options?: DerivedImageOptions): DerivedImages;
42
- export declare function createAndCacheDerivedSegmentationImage(referencedImageId: string, options?: DerivedImageOptions): Promise<IImage>;
36
+ export declare function createAndCacheDerivedSegmentationImages(referencedImageIds: string[], options?: DerivedImageOptions): IImage[];
37
+ export declare function createAndCacheDerivedSegmentationImage(referencedImageId: string, options?: DerivedImageOptions): IImage;
43
38
  export {};
@@ -1,13 +1,16 @@
1
1
  import cache from '../cache/cache';
2
- import { ImageVolume } from '../cache';
3
2
  import Events from '../enums/Events';
4
3
  import eventTarget from '../eventTarget';
5
- import { genericMetadataProvider, getBufferConfiguration, triggerEvent, uuidv4, } from '../utilities';
4
+ import { genericMetadataProvider, getBufferConfiguration, triggerEvent, uuidv4, VoxelManager, } from '../utilities';
6
5
  import imageLoadPoolManager from '../requestPool/imageLoadPoolManager';
7
6
  import { metaData } from '../';
8
7
  const imageLoaders = {};
9
8
  let unknownImageLoader;
10
9
  function loadImageFromImageLoader(imageId, options) {
10
+ const cachedImage = cache.getImageLoadObject(imageId);
11
+ if (cachedImage) {
12
+ return cachedImage;
13
+ }
11
14
  const colonIndex = imageId.indexOf(':');
12
15
  const scheme = imageId.substring(0, colonIndex);
13
16
  const loader = imageLoaders[scheme];
@@ -18,9 +21,24 @@ function loadImageFromImageLoader(imageId, options) {
18
21
  throw new Error('loadImageFromImageLoader: no image loader for imageId');
19
22
  }
20
23
  const imageLoadObject = loader(imageId, options);
21
- imageLoadObject.promise.then(function (image) {
24
+ imageLoadObject.promise
25
+ .then((image) => {
26
+ const scalarData = image.getPixelData();
27
+ const { width, height, numberOfComponents } = image;
28
+ if (!image.voxelManager) {
29
+ const voxelManager = VoxelManager.createImageVoxelManager({
30
+ scalarData,
31
+ width,
32
+ height,
33
+ numberOfComponents,
34
+ });
35
+ image.voxelManager = voxelManager;
36
+ image.getPixelData = () => voxelManager.getScalarData();
37
+ delete image.imageFrame.pixelData;
38
+ }
22
39
  triggerEvent(eventTarget, Events.IMAGE_LOADED, { image });
23
- }, function (error) {
40
+ })
41
+ .catch((error) => {
24
42
  const errorObject = {
25
43
  imageId,
26
44
  error,
@@ -29,45 +47,19 @@ function loadImageFromImageLoader(imageId, options) {
29
47
  });
30
48
  return imageLoadObject;
31
49
  }
32
- function loadImageFromCacheOrVolume(imageId, options) {
33
- if (options.ignoreCache) {
34
- return loadImageFromImageLoader(imageId, options);
35
- }
36
- let imageLoadObject = cache.getImageLoadObject(imageId);
37
- if (imageLoadObject !== undefined) {
38
- return imageLoadObject;
39
- }
40
- const cachedVolumeInfo = cache.getVolumeContainingImageId(imageId);
41
- if (cachedVolumeInfo?.volume?.loadStatus?.loaded) {
42
- const { volume, imageIdIndex } = cachedVolumeInfo;
43
- if (volume instanceof ImageVolume) {
44
- imageLoadObject = volume.getCornerstoneImageLoadObject(imageId, imageIdIndex);
45
- }
46
- return imageLoadObject;
47
- }
48
- const cachedImage = cache.getCachedImageBasedOnImageURI(imageId);
49
- if (cachedImage) {
50
- imageLoadObject = cachedImage.imageLoadObject;
51
- return imageLoadObject;
52
- }
53
- imageLoadObject = loadImageFromImageLoader(imageId, options);
54
- return imageLoadObject;
55
- }
56
50
  export function loadImage(imageId, options = { priority: 0, requestType: 'prefetch' }) {
57
51
  if (imageId === undefined) {
58
52
  throw new Error('loadImage: parameter imageId must not be undefined');
59
53
  }
60
- return loadImageFromCacheOrVolume(imageId, options).promise;
54
+ return loadImageFromImageLoader(imageId, options).promise;
61
55
  }
62
56
  export function loadAndCacheImage(imageId, options = { priority: 0, requestType: 'prefetch' }) {
63
57
  if (imageId === undefined) {
64
58
  throw new Error('loadAndCacheImage: parameter imageId must not be undefined');
65
59
  }
66
- const imageLoadObject = loadImageFromCacheOrVolume(imageId, options);
60
+ const imageLoadObject = loadImageFromImageLoader(imageId, options);
67
61
  if (!cache.getImageLoadObject(imageId)) {
68
- cache.putImageLoadObject(imageId, imageLoadObject).catch((err) => {
69
- console.warn(err);
70
- });
62
+ cache.putImageLoadObject(imageId, imageLoadObject);
71
63
  }
72
64
  return imageLoadObject.promise;
73
65
  }
@@ -80,7 +72,7 @@ export function loadAndCacheImages(imageIds, options = { priority: 0, requestTyp
80
72
  });
81
73
  return allPromises;
82
74
  }
83
- export function createAndCacheDerivedImage(referencedImageId, options = {}, preventCache = false) {
75
+ export function createAndCacheDerivedImage(referencedImageId, options = {}) {
84
76
  if (referencedImageId === undefined) {
85
77
  throw new Error('createAndCacheDerivedImage: parameter imageId must not be undefined');
86
78
  }
@@ -93,11 +85,15 @@ export function createAndCacheDerivedImage(referencedImageId, options = {}, prev
93
85
  const { TypedArrayConstructor } = getBufferConfiguration(options.targetBufferType, length);
94
86
  const imageScalarData = new TypedArrayConstructor(skipCreateBuffer ? 1 : length);
95
87
  const derivedImageId = imageId;
96
- ['imagePlaneModule', 'generalSeriesModule'].forEach((type) => {
97
- genericMetadataProvider.add(derivedImageId, {
98
- type,
99
- metadata: metaData.get(type, referencedImageId),
100
- });
88
+ const referencedImagePlaneMetadata = metaData.get('imagePlaneModule', referencedImageId);
89
+ genericMetadataProvider.add(derivedImageId, {
90
+ type: 'imagePlaneModule',
91
+ metadata: referencedImagePlaneMetadata,
92
+ });
93
+ const referencedImageGeneralSeriesMetadata = metaData.get('generalSeriesModule', referencedImageId);
94
+ genericMetadataProvider.add(derivedImageId, {
95
+ type: 'generalSeriesModule',
96
+ metadata: referencedImageGeneralSeriesMetadata,
101
97
  });
102
98
  const imagePixelModule = metaData.get('imagePixelModule', referencedImageId);
103
99
  genericMetadataProvider.add(derivedImageId, {
@@ -111,79 +107,158 @@ export function createAndCacheDerivedImage(referencedImageId, options = {}, prev
111
107
  pixelRepresentation: 0,
112
108
  },
113
109
  });
114
- const localImage = createAndCacheLocalImage({ scalarData: imageScalarData, onCacheAdd, skipCreateBuffer }, imageId, true);
115
- const imageLoadObject = {
116
- promise: Promise.resolve(localImage),
117
- };
118
- if (!preventCache) {
119
- cache.putImageLoadObject(derivedImageId, imageLoadObject);
110
+ const localImage = createAndCacheLocalImage(imageId, {
111
+ scalarData: imageScalarData,
112
+ onCacheAdd,
113
+ skipCreateBuffer,
114
+ targetBufferType: imageScalarData.constructor
115
+ .name,
116
+ dimensions: [imagePlaneModule.columns, imagePlaneModule.rows],
117
+ spacing: [
118
+ imagePlaneModule.columnPixelSpacing,
119
+ imagePlaneModule.rowPixelSpacing,
120
+ ],
121
+ origin: imagePlaneModule.imagePositionPatient,
122
+ direction: imagePlaneModule.imageOrientationPatient,
123
+ });
124
+ if (!cache.getImageLoadObject(imageId)) {
125
+ cache.putImageSync(imageId, localImage);
120
126
  }
121
- return imageLoadObject.promise;
127
+ return localImage;
122
128
  }
123
129
  export function createAndCacheDerivedImages(referencedImageIds, options = {}) {
124
- if (referencedImageIds?.length === 0) {
130
+ if (referencedImageIds.length === 0) {
125
131
  throw new Error('createAndCacheDerivedImages: parameter imageIds must be list of image Ids');
126
132
  }
127
133
  const derivedImageIds = [];
128
- const allPromises = referencedImageIds.map((referencedImageId) => {
134
+ const images = referencedImageIds.map((referencedImageId) => {
129
135
  const newOptions = {
130
- imageId: options.getDerivedImageId?.(referencedImageId) || `derived:${uuidv4()}`,
136
+ imageId: options?.getDerivedImageId?.(referencedImageId) ||
137
+ `derived:${uuidv4()}`,
131
138
  ...options,
132
139
  };
133
140
  derivedImageIds.push(newOptions.imageId);
134
141
  return createAndCacheDerivedImage(referencedImageId, newOptions);
135
142
  });
136
- return { imageIds: derivedImageIds, promises: allPromises };
143
+ return images;
137
144
  }
138
- export function createAndCacheLocalImage(options, imageId, preventCache = false) {
139
- const imagePlaneModule = metaData.get('imagePlaneModule', imageId);
140
- const length = imagePlaneModule.rows * imagePlaneModule.columns;
145
+ export function createAndCacheLocalImage(imageId, options) {
146
+ const { scalarData, origin, direction, targetBufferType, skipCreateBuffer, onCacheAdd, } = options;
147
+ const dimensions = options.dimensions;
148
+ const spacing = options.spacing;
149
+ if (!dimensions || !spacing) {
150
+ throw new Error('createAndCacheLocalImage: dimensions and spacing are required');
151
+ }
152
+ const width = dimensions[0];
153
+ const height = dimensions[1];
154
+ const columnPixelSpacing = spacing[0];
155
+ const rowPixelSpacing = spacing[1];
156
+ const imagePlaneModule = {
157
+ rows: height.toString(),
158
+ columns: width.toString(),
159
+ imageOrientationPatient: direction ?? [1, 0, 0, 0, 1, 0],
160
+ rowCosines: direction ? direction.slice(0, 3) : [1, 0, 0],
161
+ columnCosines: direction ? direction.slice(3, 6) : [0, 1, 0],
162
+ imagePositionPatient: origin ?? [0, 0, 0],
163
+ pixelSpacing: [rowPixelSpacing, columnPixelSpacing],
164
+ rowPixelSpacing: rowPixelSpacing,
165
+ columnPixelSpacing: columnPixelSpacing,
166
+ };
167
+ const length = width * height;
168
+ const numberOfComponents = scalarData.length / length;
169
+ let scalarDataToUse;
170
+ if (scalarData) {
171
+ if (!(scalarData instanceof Uint8Array ||
172
+ scalarData instanceof Float32Array ||
173
+ scalarData instanceof Uint16Array ||
174
+ scalarData instanceof Int16Array)) {
175
+ throw new Error('createAndCacheLocalImage: scalarData must be of type Uint8Array, Uint16Array, Int16Array or Float32Array');
176
+ }
177
+ scalarDataToUse = scalarData;
178
+ }
179
+ else if (!skipCreateBuffer) {
180
+ const { numBytes, TypedArrayConstructor } = getBufferConfiguration(targetBufferType, length);
181
+ const imageScalarData = new TypedArrayConstructor(length);
182
+ scalarDataToUse = imageScalarData;
183
+ }
184
+ let bitsAllocated, bitsStored, highBit;
185
+ if (scalarDataToUse instanceof Uint8Array) {
186
+ bitsAllocated = 8;
187
+ bitsStored = 8;
188
+ highBit = 7;
189
+ }
190
+ else if (scalarDataToUse instanceof Uint16Array) {
191
+ bitsAllocated = 16;
192
+ bitsStored = 16;
193
+ highBit = 15;
194
+ }
195
+ else if (scalarDataToUse instanceof Int16Array) {
196
+ bitsAllocated = 16;
197
+ bitsStored = 16;
198
+ highBit = 15;
199
+ }
200
+ else if (scalarDataToUse instanceof Float32Array) {
201
+ bitsAllocated = 32;
202
+ bitsStored = 32;
203
+ highBit = 31;
204
+ }
205
+ else {
206
+ throw new Error('Unsupported scalarData type');
207
+ }
208
+ const imagePixelModule = {
209
+ samplesPerPixel: 1,
210
+ photometricInterpretation: scalarDataToUse.length > dimensions[0] * dimensions[1]
211
+ ? 'RGB'
212
+ : 'MONOCHROME2',
213
+ rows: height,
214
+ columns: width,
215
+ bitsAllocated,
216
+ bitsStored,
217
+ highBit,
218
+ };
219
+ const metadata = {
220
+ imagePlaneModule,
221
+ imagePixelModule,
222
+ };
223
+ ['imagePlaneModule', 'imagePixelModule'].forEach((type) => {
224
+ genericMetadataProvider.add(imageId, {
225
+ type,
226
+ metadata: metadata[type] || {},
227
+ });
228
+ });
229
+ const voxelManager = VoxelManager.createImageVoxelManager({
230
+ height,
231
+ width,
232
+ numberOfComponents,
233
+ scalarData: scalarDataToUse,
234
+ });
141
235
  const image = {
142
236
  imageId: imageId,
143
237
  intercept: 0,
144
238
  windowCenter: 0,
145
239
  windowWidth: 0,
146
- color: false,
147
- numComps: 1,
240
+ color: imagePixelModule.photometricInterpretation === 'RGB',
241
+ numberOfComponents: imagePixelModule.samplesPerPixel,
242
+ dataType: targetBufferType,
148
243
  slope: 1,
149
244
  minPixelValue: 0,
150
- maxPixelValue: 255,
151
- voiLUTFunction: undefined,
152
- rows: imagePlaneModule.rows,
153
- columns: imagePlaneModule.columns,
245
+ maxPixelValue: Math.pow(2, imagePixelModule.bitsStored) - 1,
246
+ rows: imagePixelModule.rows,
247
+ columns: imagePixelModule.columns,
154
248
  getCanvas: undefined,
155
- height: imagePlaneModule.rows,
156
- width: imagePlaneModule.columns,
249
+ height: imagePixelModule.rows,
250
+ width: imagePixelModule.columns,
157
251
  rgba: undefined,
158
252
  columnPixelSpacing: imagePlaneModule.columnPixelSpacing,
159
253
  rowPixelSpacing: imagePlaneModule.rowPixelSpacing,
160
- FrameOfReferenceUID: imagePlaneModule.FrameOfReferenceUID,
254
+ FrameOfReferenceUID: imagePlaneModule.frameOfReferenceUID,
161
255
  invert: false,
256
+ getPixelData: () => voxelManager.getScalarData(),
257
+ voxelManager,
258
+ sizeInBytes: scalarData.byteLength,
162
259
  };
163
- if (options.scalarData) {
164
- const imageScalarData = options.scalarData;
165
- if (!(imageScalarData instanceof Uint8Array ||
166
- imageScalarData instanceof Float32Array ||
167
- imageScalarData instanceof Uint16Array ||
168
- imageScalarData instanceof Int16Array)) {
169
- throw new Error('To use createLocalVolume you should pass scalarData of type Uint8Array, Uint16Array, Int16Array or Float32Array');
170
- }
171
- image.sizeInBytes = imageScalarData.byteLength;
172
- image.getPixelData = () => imageScalarData;
173
- }
174
- else if (options.skipCreateBuffer !== true) {
175
- const { numBytes, TypedArrayConstructor } = getBufferConfiguration(options.targetBufferType, length);
176
- const imageScalarData = new TypedArrayConstructor(length);
177
- image.sizeInBytes = numBytes;
178
- image.getPixelData = () => imageScalarData;
179
- }
180
- options.onCacheAdd?.(image);
181
- const imageLoadObject = {
182
- promise: Promise.resolve(image),
183
- };
184
- if (!preventCache) {
185
- cache.putImageLoadObject(image.imageId, imageLoadObject);
186
- }
260
+ onCacheAdd?.(image);
261
+ cache.putImageSync(image.imageId, image);
187
262
  return image;
188
263
  }
189
264
  export function cancelLoadImage(imageId) {
@@ -200,7 +275,9 @@ export function cancelLoadImage(imageId) {
200
275
  }
201
276
  }
202
277
  export function cancelLoadImages(imageIds) {
203
- imageIds.forEach((imageId) => cancelLoadImage(imageId));
278
+ imageIds.forEach((imageId) => {
279
+ cancelLoadImage(imageId);
280
+ });
204
281
  }
205
282
  export function cancelLoadAll() {
206
283
  const requestPool = imageLoadPoolManager.getRequestPool();
@@ -236,13 +313,15 @@ export function unregisterAllImageLoaders() {
236
313
  Object.keys(imageLoaders).forEach((imageLoader) => delete imageLoaders[imageLoader]);
237
314
  unknownImageLoader = undefined;
238
315
  }
239
- export function createAndCacheDerivedSegmentationImages(referencedImageIds, options = {
240
- targetBufferType: 'Uint8Array',
241
- }) {
242
- return createAndCacheDerivedImages(referencedImageIds, options);
316
+ export function createAndCacheDerivedSegmentationImages(referencedImageIds, options = {}) {
317
+ return createAndCacheDerivedImages(referencedImageIds, {
318
+ ...options,
319
+ targetBufferType: 'Uint8Array',
320
+ });
243
321
  }
244
- export function createAndCacheDerivedSegmentationImage(referencedImageId, options = {
245
- targetBufferType: 'Uint8Array',
246
- }) {
247
- return createAndCacheDerivedImage(referencedImageId, options);
322
+ export function createAndCacheDerivedSegmentationImage(referencedImageId, options = {}) {
323
+ return createAndCacheDerivedImage(referencedImageId, {
324
+ ...options,
325
+ targetBufferType: 'Uint8Array',
326
+ });
248
327
  }
@@ -1,2 +1,2 @@
1
- import { IGeometry, PublicContourSetData } from '../../../types';
1
+ import type { IGeometry, PublicContourSetData } from '../../../types';
2
2
  export declare function createContourSet(geometryId: string, contourSetData: PublicContourSetData): IGeometry;
@@ -1,2 +1,2 @@
1
- import { PublicContourSetData } from '../../../types';
1
+ import type { PublicContourSetData } from '../../../types';
2
2
  export declare function validateContourSet(contourSetData: PublicContourSetData): void;