@cornerstonejs/dicom-image-loader 2.0.0-beta.2 → 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 (248) hide show
  1. package/dist/920.bundle.min.js +3 -0
  2. package/dist/920.bundle.min.js.LICENSE.txt +5 -0
  3. package/dist/920.bundle.min.js.map +1 -0
  4. package/dist/cornerstoneDICOMImageLoader.bundle.min.js +1 -1
  5. package/dist/cornerstoneDICOMImageLoader.bundle.min.js.map +1 -1
  6. package/dist/dynamic-import/{65916ef3def695744bda.wasm → 031089e563a18ada8441.wasm} +0 -0
  7. package/dist/dynamic-import/20fc4c659b85ccd2a9c0.wasm +0 -0
  8. package/dist/dynamic-import/584.min.js +2 -0
  9. package/dist/dynamic-import/584.min.js.map +1 -0
  10. package/dist/dynamic-import/610.min.js +2 -0
  11. package/dist/dynamic-import/610.min.js.map +1 -0
  12. package/dist/dynamic-import/918.min.js +2 -0
  13. package/dist/dynamic-import/918.min.js.map +1 -0
  14. package/dist/dynamic-import/958.min.js +3 -0
  15. package/dist/dynamic-import/958.min.js.LICENSE.txt +5 -0
  16. package/dist/dynamic-import/958.min.js.map +1 -0
  17. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
  18. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
  19. package/dist/esm/codecs/jpeg.d.ts +1 -0
  20. package/dist/esm/codecs/jpeg.js +890 -0
  21. package/dist/esm/codecs/jpegLossless.d.ts +7 -0
  22. package/dist/esm/codecs/jpegLossless.js +1219 -0
  23. package/dist/esm/src/constants/transferSyntaxes.d.ts +46 -0
  24. package/dist/esm/src/constants/transferSyntaxes.js +46 -0
  25. package/dist/esm/src/decodeImageFrameWorker.d.ts +1 -0
  26. package/dist/esm/src/decodeImageFrameWorker.js +262 -0
  27. package/dist/esm/src/externalModules.d.ts +5 -0
  28. package/dist/esm/src/externalModules.js +44 -0
  29. package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +3 -0
  30. package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js +77 -0
  31. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +2 -0
  32. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js +21 -0
  33. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +2 -0
  34. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js +28 -0
  35. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +2 -0
  36. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js +44 -0
  37. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +2 -0
  38. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js +33 -0
  39. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +2 -0
  40. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js +35 -0
  41. package/dist/esm/src/imageLoader/colorSpaceConverters/index.d.ts +7 -0
  42. package/dist/esm/src/imageLoader/colorSpaceConverters/index.js +7 -0
  43. package/dist/esm/src/imageLoader/configure.d.ts +3 -0
  44. package/dist/esm/src/imageLoader/configure.js +11 -0
  45. package/dist/esm/src/imageLoader/convertColorSpace.d.ts +1 -0
  46. package/dist/esm/src/imageLoader/convertColorSpace.js +40 -0
  47. package/dist/esm/src/imageLoader/createImage.d.ts +5 -0
  48. package/dist/esm/src/imageLoader/createImage.js +241 -0
  49. package/dist/esm/src/imageLoader/decodeImageFrame.d.ts +3 -0
  50. package/dist/esm/src/imageLoader/decodeImageFrame.js +63 -0
  51. package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.d.ts +4 -0
  52. package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.js +64 -0
  53. package/dist/esm/src/imageLoader/getImageFrame.d.ts +3 -0
  54. package/dist/esm/src/imageLoader/getImageFrame.js +26 -0
  55. package/dist/esm/src/imageLoader/getInstanceModule.d.ts +3 -0
  56. package/dist/esm/src/imageLoader/getInstanceModule.js +40 -0
  57. package/dist/esm/src/imageLoader/getMinMax.d.ts +4 -0
  58. package/dist/esm/src/imageLoader/getMinMax.js +15 -0
  59. package/dist/esm/src/imageLoader/getScalingParameters.d.ts +6 -0
  60. package/dist/esm/src/imageLoader/getScalingParameters.js +16 -0
  61. package/dist/esm/src/imageLoader/imageIdToURI.d.ts +1 -0
  62. package/dist/esm/src/imageLoader/imageIdToURI.js +4 -0
  63. package/dist/esm/src/imageLoader/index.d.ts +94 -0
  64. package/dist/esm/src/imageLoader/index.js +36 -0
  65. package/dist/esm/src/imageLoader/internal/index.d.ts +10 -0
  66. package/dist/esm/src/imageLoader/internal/index.js +10 -0
  67. package/dist/esm/src/imageLoader/internal/options.d.ts +3 -0
  68. package/dist/esm/src/imageLoader/internal/options.js +19 -0
  69. package/dist/esm/src/imageLoader/internal/rangeRequest.d.ts +9 -0
  70. package/dist/esm/src/imageLoader/internal/rangeRequest.js +121 -0
  71. package/dist/esm/src/imageLoader/internal/streamRequest.d.ts +2 -0
  72. package/dist/esm/src/imageLoader/internal/streamRequest.js +92 -0
  73. package/dist/esm/src/imageLoader/internal/xhrRequest.d.ts +3 -0
  74. package/dist/esm/src/imageLoader/internal/xhrRequest.js +102 -0
  75. package/dist/esm/src/imageLoader/isColorConversionRequired.d.ts +1 -0
  76. package/dist/esm/src/imageLoader/isColorConversionRequired.js +22 -0
  77. package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.d.ts +3 -0
  78. package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.js +9 -0
  79. package/dist/esm/src/imageLoader/isNMReconstructable.d.ts +1 -0
  80. package/dist/esm/src/imageLoader/isNMReconstructable.js +3 -0
  81. package/dist/esm/src/imageLoader/registerLoaders.d.ts +2 -0
  82. package/dist/esm/src/imageLoader/registerLoaders.js +7 -0
  83. package/dist/esm/src/imageLoader/wadors/combineFrameInstance.d.ts +12 -0
  84. package/dist/esm/src/imageLoader/wadors/combineFrameInstance.js +44 -0
  85. package/dist/esm/src/imageLoader/wadors/extractMultipart.d.ts +23 -0
  86. package/dist/esm/src/imageLoader/wadors/extractMultipart.js +73 -0
  87. package/dist/esm/src/imageLoader/wadors/findIndexOfString.d.ts +2 -0
  88. package/dist/esm/src/imageLoader/wadors/findIndexOfString.js +32 -0
  89. package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.d.ts +3 -0
  90. package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.js +8 -0
  91. package/dist/esm/src/imageLoader/wadors/getPixelData.d.ts +26 -0
  92. package/dist/esm/src/imageLoader/wadors/getPixelData.js +35 -0
  93. package/dist/esm/src/imageLoader/wadors/getTagValue.d.ts +1 -0
  94. package/dist/esm/src/imageLoader/wadors/getTagValue.js +9 -0
  95. package/dist/esm/src/imageLoader/wadors/index.d.ts +25 -0
  96. package/dist/esm/src/imageLoader/wadors/index.js +21 -0
  97. package/dist/esm/src/imageLoader/wadors/loadImage.d.ts +25 -0
  98. package/dist/esm/src/imageLoader/wadors/loadImage.js +125 -0
  99. package/dist/esm/src/imageLoader/wadors/loadImage_test.d.ts +1 -0
  100. package/dist/esm/src/imageLoader/wadors/loadImage_test.js +41 -0
  101. package/dist/esm/src/imageLoader/wadors/metaData/NMHelpers.d.ts +5 -0
  102. package/dist/esm/src/imageLoader/wadors/metaData/NMHelpers.js +38 -0
  103. package/dist/esm/src/imageLoader/wadors/metaData/USHelpers.d.ts +19 -0
  104. package/dist/esm/src/imageLoader/wadors/metaData/USHelpers.js +46 -0
  105. package/dist/esm/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts +3 -0
  106. package/dist/esm/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.js +18 -0
  107. package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +2 -0
  108. package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.js +6 -0
  109. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.d.ts +3 -0
  110. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.js +9 -0
  111. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.d.ts +3 -0
  112. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.js +9 -0
  113. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.d.ts +3 -0
  114. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.js +20 -0
  115. package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +4 -0
  116. package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.js +38 -0
  117. package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.d.ts +3 -0
  118. package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.js +14 -0
  119. package/dist/esm/src/imageLoader/wadors/metaData/getValue.d.ts +3 -0
  120. package/dist/esm/src/imageLoader/wadors/metaData/getValue.js +14 -0
  121. package/dist/esm/src/imageLoader/wadors/metaData/index.d.ts +7 -0
  122. package/dist/esm/src/imageLoader/wadors/metaData/index.js +7 -0
  123. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.d.ts +14 -0
  124. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.js +261 -0
  125. package/dist/esm/src/imageLoader/wadors/metaDataManager.d.ts +14 -0
  126. package/dist/esm/src/imageLoader/wadors/metaDataManager.js +50 -0
  127. package/dist/esm/src/imageLoader/wadors/register.d.ts +1 -0
  128. package/dist/esm/src/imageLoader/wadors/register.js +6 -0
  129. package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.d.ts +15 -0
  130. package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.js +26 -0
  131. package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.d.ts +22 -0
  132. package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.js +69 -0
  133. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.d.ts +31 -0
  134. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.js +142 -0
  135. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager_test.d.ts +1 -0
  136. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager_test.js +10 -0
  137. package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.d.ts +6 -0
  138. package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.js +56 -0
  139. package/dist/esm/src/imageLoader/wadouri/fileManager.d.ts +11 -0
  140. package/dist/esm/src/imageLoader/wadouri/fileManager.js +20 -0
  141. package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +2 -0
  142. package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.js +33 -0
  143. package/dist/esm/src/imageLoader/wadouri/getPixelData.d.ts +3 -0
  144. package/dist/esm/src/imageLoader/wadouri/getPixelData.js +13 -0
  145. package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.d.ts +3 -0
  146. package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.js +47 -0
  147. package/dist/esm/src/imageLoader/wadouri/index.d.ts +42 -0
  148. package/dist/esm/src/imageLoader/wadouri/index.js +31 -0
  149. package/dist/esm/src/imageLoader/wadouri/loadFileRequest.d.ts +2 -0
  150. package/dist/esm/src/imageLoader/wadouri/loadFileRequest.js +17 -0
  151. package/dist/esm/src/imageLoader/wadouri/loadImage.d.ts +9 -0
  152. package/dist/esm/src/imageLoader/wadouri/loadImage.js +104 -0
  153. package/dist/esm/src/imageLoader/wadouri/metaData/USHelpers.d.ts +2 -0
  154. package/dist/esm/src/imageLoader/wadouri/metaData/USHelpers.js +44 -0
  155. package/dist/esm/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts +6 -0
  156. package/dist/esm/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.js +80 -0
  157. package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +4 -0
  158. package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.js +79 -0
  159. package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.d.ts +4 -0
  160. package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.js +44 -0
  161. package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +3 -0
  162. package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js +30 -0
  163. package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.d.ts +3 -0
  164. package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.js +16 -0
  165. package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +4 -0
  166. package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.js +36 -0
  167. package/dist/esm/src/imageLoader/wadouri/metaData/index.d.ts +5 -0
  168. package/dist/esm/src/imageLoader/wadouri/metaData/index.js +5 -0
  169. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.d.ts +2 -0
  170. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.js +223 -0
  171. package/dist/esm/src/imageLoader/wadouri/parseImageId.d.ts +8 -0
  172. package/dist/esm/src/imageLoader/wadouri/parseImageId.js +20 -0
  173. package/dist/esm/src/imageLoader/wadouri/register.d.ts +2 -0
  174. package/dist/esm/src/imageLoader/wadouri/register.js +8 -0
  175. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +17 -0
  176. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.js +57 -0
  177. package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.d.ts +3 -0
  178. package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.js +14 -0
  179. package/dist/esm/src/shared/decoders/decodeBigEndian.d.ts +4 -0
  180. package/dist/esm/src/shared/decoders/decodeBigEndian.js +28 -0
  181. package/dist/esm/src/shared/decoders/decodeHTJ2K.d.ts +5 -0
  182. package/dist/esm/src/shared/decoders/decodeHTJ2K.js +109 -0
  183. package/dist/esm/src/shared/decoders/decodeJPEG2000.d.ts +5 -0
  184. package/dist/esm/src/shared/decoders/decodeJPEG2000.js +93 -0
  185. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +6 -0
  186. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.js +34 -0
  187. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
  188. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +1 -0
  189. package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.d.ts +3 -0
  190. package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.js +62 -0
  191. package/dist/esm/src/shared/decoders/decodeJPEGLS.d.ts +5 -0
  192. package/dist/esm/src/shared/decoders/decodeJPEGLS.js +84 -0
  193. package/dist/esm/src/shared/decoders/decodeJPEGLossless.d.ts +6 -0
  194. package/dist/esm/src/shared/decoders/decodeJPEGLossless.js +39 -0
  195. package/dist/esm/src/shared/decoders/decodeLittleEndian.d.ts +4 -0
  196. package/dist/esm/src/shared/decoders/decodeLittleEndian.js +29 -0
  197. package/dist/esm/src/shared/decoders/decodeRLE.d.ts +4 -0
  198. package/dist/esm/src/shared/decoders/decodeRLE.js +128 -0
  199. package/dist/esm/src/shared/getMinMax.d.ts +6 -0
  200. package/dist/esm/src/shared/getMinMax.js +16 -0
  201. package/dist/esm/src/shared/getMinMax_test.d.ts +1 -0
  202. package/dist/esm/src/shared/getMinMax_test.js +9 -0
  203. package/dist/esm/src/shared/getPixelDataTypeFromMinMax.d.ts +2 -0
  204. package/dist/esm/src/shared/getPixelDataTypeFromMinMax.js +22 -0
  205. package/dist/esm/src/shared/isColorImage.d.ts +1 -0
  206. package/dist/esm/src/shared/isColorImage.js +10 -0
  207. package/dist/esm/src/shared/scaling/bilinear.d.ts +1 -0
  208. package/dist/esm/src/shared/scaling/bilinear.js +32 -0
  209. package/dist/esm/src/shared/scaling/replicate.d.ts +1 -0
  210. package/dist/esm/src/shared/scaling/replicate.js +20 -0
  211. package/dist/esm/src/shared/scaling/scaleArray.d.ts +2 -0
  212. package/dist/esm/src/shared/scaling/scaleArray.js +15 -0
  213. package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.d.ts +9 -0
  214. package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.js +1 -0
  215. package/dist/esm/src/types/DICOMLoaderIImage.d.ts +12 -0
  216. package/dist/esm/src/types/DICOMLoaderIImage.js +1 -0
  217. package/dist/esm/src/types/DICOMLoaderImageOptions.d.ts +23 -0
  218. package/dist/esm/src/types/DICOMLoaderImageOptions.js +1 -0
  219. package/dist/esm/src/types/LoadRequestFunction.d.ts +1 -0
  220. package/dist/esm/src/types/LoadRequestFunction.js +1 -0
  221. package/dist/esm/src/types/LoaderDecodeOptions.d.ts +2 -0
  222. package/dist/esm/src/types/LoaderDecodeOptions.js +1 -0
  223. package/dist/esm/src/types/LoaderOptions.d.ts +18 -0
  224. package/dist/esm/src/types/LoaderOptions.js +1 -0
  225. package/dist/esm/src/types/LutType.d.ts +6 -0
  226. package/dist/esm/src/types/LutType.js +1 -0
  227. package/dist/esm/src/types/WADORSMetaData.d.ts +4 -0
  228. package/dist/esm/src/types/WADORSMetaData.js +1 -0
  229. package/dist/esm/src/types/WebWorkerTypes.d.ts +64 -0
  230. package/dist/esm/src/types/WebWorkerTypes.js +1 -0
  231. package/dist/esm/src/types/XHRRequest.d.ts +16 -0
  232. package/dist/esm/src/types/XHRRequest.js +1 -0
  233. package/dist/esm/src/types/index.d.ts +11 -0
  234. package/dist/esm/src/types/index.js +1 -0
  235. package/dist/esm/src/version.d.ts +2 -0
  236. package/dist/esm/src/version.js +1 -0
  237. package/package.json +24 -17
  238. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js +0 -2
  239. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js.map +0 -1
  240. package/dist/dynamic-import/610.min.worker.js +0 -2
  241. package/dist/dynamic-import/610.min.worker.js.map +0 -1
  242. package/dist/dynamic-import/75788f12450d4c5ed494.wasm +0 -0
  243. package/dist/dynamic-import/945.min.worker.js +0 -2
  244. package/dist/dynamic-import/945.min.worker.js.map +0 -1
  245. package/dist/dynamic-import/index.worker.e62ecca63f1a2e124230.worker.js +0 -2
  246. package/dist/dynamic-import/index.worker.e62ecca63f1a2e124230.worker.js.map +0 -1
  247. package/dist/index.worker.bundle.min.worker.js +0 -2
  248. package/dist/index.worker.bundle.min.worker.js.map +0 -1
@@ -0,0 +1,46 @@
1
+ export default transferSyntaxes;
2
+ declare namespace transferSyntaxes {
3
+ let IMPLICIT_VR_LITTLE_ENDIAN: string;
4
+ let EXPLICIT_VR_LITTLE_ENDIAN: string;
5
+ let DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN: string;
6
+ let EXPLICIT_VR_BIG_ENDIAN: string;
7
+ let JPEG_BASELINE_PROCESS_1: string;
8
+ let JPEG_EXTENDED_PROCESS_2_4: string;
9
+ let JPEG_EXTENDED_PROCESSES_3_5: string;
10
+ let JPEG_SPECTRAL_SELECTION_NONHIERARCHICAL_PROCESSES_6_8: string;
11
+ let JPEG_SPECTRAL_SELECTION_NONHIERARCHICAL_PROCESSES_7_9: string;
12
+ let JPEG_FULL_PROGRESSION_NONHIERARCHICAL_PROCESSES_10_12: string;
13
+ let JPEG_FULL_PROGRESSION_NONHIERARCHICAL_PROCESSES_11_13: string;
14
+ let JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_14: string;
15
+ let JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_15: string;
16
+ let JPEG_EXTENDED_HIERARCHICAL_PROCESSES_16_18: string;
17
+ let JPEG_EXTENDED_HIERARCHICAL_PROCESSES_17_19: string;
18
+ let JPEG_SPECTRAL_SELECTION_HIERARCHICAL_PROCESSES_20_22: string;
19
+ let JPEG_SPECTRAL_SELECTION_HIERARCHICAL_PROCESSES_21_23: string;
20
+ let JPEG_FULL_PROGRESSION_HIERARCHICAL_PROCESSES_24_26: string;
21
+ let JPEG_FULL_PROGRESSION_HIERARCHICAL_PROCESSES_25_27: string;
22
+ let JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_28: string;
23
+ let JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_29: string;
24
+ let JPEG_LOSSLESS_NONHIERARCHICAL_FIRST_ORDER_PREDICTION_PROCESS_14: string;
25
+ let JPEG_LS_LOSSLESS_IMAGE_COMPRESSION: string;
26
+ let JPEG_LS_LOSSY_NEAR_LOSSLESS_IMAGE_COMPRESSION: string;
27
+ let JPEG_2000_IMAGE_COMPRESSION_LOSSLESS_ONLY: string;
28
+ let JPEG_2000_IMAGE_COMPRESSION: string;
29
+ let JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_LOSSLESS_ONLY: string;
30
+ let JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION: string;
31
+ let JPIP_REFERENCED: string;
32
+ let JPIP_REFERENCED_DEFLATE: string;
33
+ let MPEG2_MAIN_PROFILE_MAIN_LEVEL: string;
34
+ let MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1: string;
35
+ let MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1: string;
36
+ let MPEG4_AVC_H264_HIGH_PROFILE_FOR_2D_VIDEO: string;
37
+ let MPEG4_AVC_H264_HIGH_PROFILE_FOR_3D_VIDEO: string;
38
+ let JPIP_LOSSLESS: string;
39
+ let JPIP_PART2_MULTICOMPONENT_IMAGE_COMPRESSION: string;
40
+ let RFC_2557_MIME_ENCAPSULATION: string;
41
+ let JPEG_XR_IMAGE_COMPRESSION: string;
42
+ let JPEG_2000_IMAGE_COMPRESSION_LOSSLESS_ONLY_RETIRED: string;
43
+ let JPEG_2000_IMAGE_COMPRESSION_RETIRED: string;
44
+ let JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_LOSSLESS_ONLY_RETIRED: string;
45
+ let JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_RETIRED: string;
46
+ }
@@ -0,0 +1,46 @@
1
+ const transferSyntaxes = {
2
+ IMPLICIT_VR_LITTLE_ENDIAN: '1.2.840.10008.1.2',
3
+ EXPLICIT_VR_LITTLE_ENDIAN: '1.2.840.10008.1.2.1',
4
+ DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN: '1.2.840.10008.1.2.1.99',
5
+ EXPLICIT_VR_BIG_ENDIAN: '1.2.840.10008.1.2.2',
6
+ JPEG_BASELINE_PROCESS_1: '1.2.840.10008.1.2.4.50',
7
+ JPEG_EXTENDED_PROCESS_2_4: '1.2.840.10008.1.2.4.51',
8
+ JPEG_EXTENDED_PROCESSES_3_5: '1.2.840.10008.1.2.4.52',
9
+ JPEG_SPECTRAL_SELECTION_NONHIERARCHICAL_PROCESSES_6_8: '1.2.840.10008.1.2.4.53',
10
+ JPEG_SPECTRAL_SELECTION_NONHIERARCHICAL_PROCESSES_7_9: '1.2.840.10008.1.2.4.54',
11
+ JPEG_FULL_PROGRESSION_NONHIERARCHICAL_PROCESSES_10_12: '1.2.840.10008.1.2.4.55',
12
+ JPEG_FULL_PROGRESSION_NONHIERARCHICAL_PROCESSES_11_13: '1.2.840.10008.1.2.4.56',
13
+ JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_14: '1.2.840.10008.1.2.4.57',
14
+ JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_15: '1.2.840.10008.1.2.4.58',
15
+ JPEG_EXTENDED_HIERARCHICAL_PROCESSES_16_18: '1.2.840.10008.1.2.4.59',
16
+ JPEG_EXTENDED_HIERARCHICAL_PROCESSES_17_19: '1.2.840.10008.1.2.4.60',
17
+ JPEG_SPECTRAL_SELECTION_HIERARCHICAL_PROCESSES_20_22: '1.2.840.10008.1.2.4.61',
18
+ JPEG_SPECTRAL_SELECTION_HIERARCHICAL_PROCESSES_21_23: '1.2.840.10008.1.2.4.62',
19
+ JPEG_FULL_PROGRESSION_HIERARCHICAL_PROCESSES_24_26: '1.2.840.10008.1.2.4.63',
20
+ JPEG_FULL_PROGRESSION_HIERARCHICAL_PROCESSES_25_27: '1.2.840.10008.1.2.4.64',
21
+ JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_28: '1.2.840.10008.1.2.4.65',
22
+ JPEG_LOSSLESS_NONHIERARCHICAL_PROCESS_29: '1.2.840.10008.1.2.4.66',
23
+ JPEG_LOSSLESS_NONHIERARCHICAL_FIRST_ORDER_PREDICTION_PROCESS_14: '1.2.840.10008.1.2.4.70',
24
+ JPEG_LS_LOSSLESS_IMAGE_COMPRESSION: '1.2.840.10008.1.2.4.80',
25
+ JPEG_LS_LOSSY_NEAR_LOSSLESS_IMAGE_COMPRESSION: '1.2.840.10008.1.2.4.81',
26
+ JPEG_2000_IMAGE_COMPRESSION_LOSSLESS_ONLY: '1.2.840.10008.1.2.4.90',
27
+ JPEG_2000_IMAGE_COMPRESSION: '1.2.840.10008.1.2.4.91',
28
+ JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_LOSSLESS_ONLY: '1.2.840.10008.1.2.4.92',
29
+ JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION: '1.2.840.10008.1.2.4.93',
30
+ JPIP_REFERENCED: '1.2.840.10008.1.2.4.94',
31
+ JPIP_REFERENCED_DEFLATE: '1.2.840.10008.1.2.4.95',
32
+ MPEG2_MAIN_PROFILE_MAIN_LEVEL: '1.2.840.10008.1.2.4.100',
33
+ MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1: '1.2.840.10008.1.2.4.101',
34
+ MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1: '1.2.840.10008.1.2.4.102',
35
+ MPEG4_AVC_H264_HIGH_PROFILE_FOR_2D_VIDEO: '1.2.840.10008.1.2.4.103',
36
+ MPEG4_AVC_H264_HIGH_PROFILE_FOR_3D_VIDEO: '1.2.840.10008.1.2.4.104',
37
+ JPIP_LOSSLESS: '1.2.840.10008.1.2.4.96',
38
+ JPIP_PART2_MULTICOMPONENT_IMAGE_COMPRESSION: '1.2.840.10008.1.2.4.97',
39
+ RFC_2557_MIME_ENCAPSULATION: '1.2.840.10008.1.2.6.1',
40
+ JPEG_XR_IMAGE_COMPRESSION: '1.2.840.10008.1.2.6.2',
41
+ JPEG_2000_IMAGE_COMPRESSION_LOSSLESS_ONLY_RETIRED: '1.2.840.10008.1.2.4.90R',
42
+ JPEG_2000_IMAGE_COMPRESSION_RETIRED: '1.2.840.10008.1.2.4.91R',
43
+ JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_LOSSLESS_ONLY_RETIRED: '1.2.840.10008.1.2.4.92R',
44
+ JPEG_2000_PART_2_MULTICOMPONENT_IMAGE_COMPRESSION_RETIRED: '1.2.840.10008.1.2.4.93R',
45
+ };
46
+ export default transferSyntaxes;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,262 @@
1
+ import bilinear from './shared/scaling/bilinear';
2
+ import replicate from './shared/scaling/replicate';
3
+ import { expose } from 'comlink';
4
+ import decodeLittleEndian from './shared/decoders/decodeLittleEndian';
5
+ import decodeBigEndian from './shared/decoders/decodeBigEndian';
6
+ import decodeRLE from './shared/decoders/decodeRLE';
7
+ import decodeJPEGBaseline8Bit from './shared/decoders/decodeJPEGBaseline8Bit';
8
+ import decodeJPEGBaseline12Bit from './shared/decoders/decodeJPEGBaseline12Bit-js';
9
+ import decodeJPEGLossless from './shared/decoders/decodeJPEGLossless';
10
+ import decodeJPEGLS from './shared/decoders/decodeJPEGLS';
11
+ import decodeJPEG2000 from './shared/decoders/decodeJPEG2000';
12
+ import decodeHTJ2K from './shared/decoders/decodeHTJ2K';
13
+ import applyModalityLUT from './shared/scaling/scaleArray';
14
+ import getMinMax from './shared/getMinMax';
15
+ import getPixelDataTypeFromMinMax from './shared/getPixelDataTypeFromMinMax';
16
+ import isColorImage from './shared/isColorImage';
17
+ const imageUtils = {
18
+ bilinear,
19
+ replicate,
20
+ };
21
+ async function decodeImageFrame(imageFrame, transferSyntax, pixelData, decodeConfig, options, callbackFn) {
22
+ const start = new Date().getTime();
23
+ let decodePromise = null;
24
+ let opts;
25
+ switch (transferSyntax) {
26
+ case '1.2.840.10008.1.2':
27
+ case '1.2.840.10008.1.2.1':
28
+ decodePromise = decodeLittleEndian(imageFrame, pixelData);
29
+ break;
30
+ case '1.2.840.10008.1.2.2':
31
+ decodePromise = decodeBigEndian(imageFrame, pixelData);
32
+ break;
33
+ case '1.2.840.10008.1.2.1.99':
34
+ decodePromise = decodeLittleEndian(imageFrame, pixelData);
35
+ break;
36
+ case '1.2.840.10008.1.2.5':
37
+ decodePromise = decodeRLE(imageFrame, pixelData);
38
+ break;
39
+ case '1.2.840.10008.1.2.4.50':
40
+ opts = {
41
+ ...imageFrame,
42
+ };
43
+ decodePromise = decodeJPEGBaseline8Bit(pixelData, opts);
44
+ break;
45
+ case '1.2.840.10008.1.2.4.51':
46
+ decodePromise = decodeJPEGBaseline12Bit(imageFrame, pixelData);
47
+ break;
48
+ case '1.2.840.10008.1.2.4.57':
49
+ decodePromise = decodeJPEGLossless(imageFrame, pixelData);
50
+ break;
51
+ case '1.2.840.10008.1.2.4.70':
52
+ decodePromise = decodeJPEGLossless(imageFrame, pixelData);
53
+ break;
54
+ case '1.2.840.10008.1.2.4.80':
55
+ opts = {
56
+ signed: imageFrame.pixelRepresentation === 1,
57
+ bytesPerPixel: imageFrame.bitsAllocated <= 8 ? 1 : 2,
58
+ ...imageFrame,
59
+ };
60
+ decodePromise = decodeJPEGLS(pixelData, opts);
61
+ break;
62
+ case '1.2.840.10008.1.2.4.81':
63
+ opts = {
64
+ signed: imageFrame.pixelRepresentation === 1,
65
+ bytesPerPixel: imageFrame.bitsAllocated <= 8 ? 1 : 2,
66
+ ...imageFrame,
67
+ };
68
+ decodePromise = decodeJPEGLS(pixelData, opts);
69
+ break;
70
+ case '1.2.840.10008.1.2.4.90':
71
+ opts = {
72
+ ...imageFrame,
73
+ };
74
+ decodePromise = decodeJPEG2000(pixelData, opts);
75
+ break;
76
+ case '1.2.840.10008.1.2.4.91':
77
+ opts = {
78
+ ...imageFrame,
79
+ };
80
+ decodePromise = decodeJPEG2000(pixelData, opts);
81
+ break;
82
+ case '3.2.840.10008.1.2.4.96':
83
+ case '1.2.840.10008.1.2.4.201':
84
+ case '1.2.840.10008.1.2.4.202':
85
+ case '1.2.840.10008.1.2.4.203':
86
+ opts = {
87
+ ...imageFrame,
88
+ };
89
+ decodePromise = decodeHTJ2K(pixelData, opts);
90
+ break;
91
+ default:
92
+ throw new Error(`no decoder for transfer syntax ${transferSyntax}`);
93
+ }
94
+ if (!decodePromise) {
95
+ throw new Error('decodePromise not defined');
96
+ }
97
+ const decodedFrame = await decodePromise;
98
+ const postProcessed = postProcessDecodedPixels(decodedFrame, options, start, decodeConfig);
99
+ callbackFn?.(postProcessed);
100
+ return postProcessed;
101
+ }
102
+ function postProcessDecodedPixels(imageFrame, options, start, decodeConfig) {
103
+ const shouldShift = imageFrame.pixelRepresentation !== undefined &&
104
+ imageFrame.pixelRepresentation === 1;
105
+ const shift = shouldShift && imageFrame.bitsStored !== undefined
106
+ ? 32 - imageFrame.bitsStored
107
+ : undefined;
108
+ if (shouldShift && shift !== undefined) {
109
+ for (let i = 0; i < imageFrame.pixelData.length; i++) {
110
+ imageFrame.pixelData[i] = (imageFrame.pixelData[i] << shift) >> shift;
111
+ }
112
+ }
113
+ let pixelDataArray = imageFrame.pixelData;
114
+ imageFrame.pixelDataLength = imageFrame.pixelData.length;
115
+ const { min: minBeforeScale, max: maxBeforeScale } = getMinMax(imageFrame.pixelData);
116
+ const typedArrayConstructors = {
117
+ Uint8Array,
118
+ Uint16Array,
119
+ Int16Array,
120
+ Float32Array,
121
+ };
122
+ const type = options.targetBuffer?.type;
123
+ const canRenderFloat = typeof options.allowFloatRendering !== 'undefined'
124
+ ? options.allowFloatRendering
125
+ : true;
126
+ const invalidType = isColorImage(imageFrame.photometricInterpretation) &&
127
+ options.targetBuffer?.offset === undefined;
128
+ const willScale = options.preScale?.enabled;
129
+ const hasFloatRescale = willScale &&
130
+ Object.values(options.preScale.scalingParameters).some((v) => typeof v === 'number' && !Number.isInteger(v));
131
+ const disableScale = !options.preScale.enabled || (!canRenderFloat && hasFloatRescale);
132
+ if (type && !invalidType) {
133
+ pixelDataArray = _handleTargetBuffer(options, imageFrame, typedArrayConstructors, pixelDataArray);
134
+ }
135
+ else if (options.preScale.enabled && !disableScale) {
136
+ pixelDataArray = _handlePreScaleSetup(options, minBeforeScale, maxBeforeScale, imageFrame);
137
+ }
138
+ else {
139
+ pixelDataArray = _getDefaultPixelDataArray(minBeforeScale, maxBeforeScale, imageFrame);
140
+ }
141
+ let minAfterScale = minBeforeScale;
142
+ let maxAfterScale = maxBeforeScale;
143
+ if (options.preScale.enabled && !disableScale) {
144
+ const scalingParameters = options.preScale.scalingParameters;
145
+ _validateScalingParameters(scalingParameters);
146
+ const { rescaleSlope, rescaleIntercept } = scalingParameters;
147
+ const isSlopeAndInterceptNumbers = typeof rescaleSlope === 'number' && typeof rescaleIntercept === 'number';
148
+ if (isSlopeAndInterceptNumbers) {
149
+ applyModalityLUT(pixelDataArray, scalingParameters);
150
+ imageFrame.preScale = {
151
+ ...options.preScale,
152
+ scaled: true,
153
+ };
154
+ const { rescaleIntercept, rescaleSlope, suvbw } = scalingParameters;
155
+ minAfterScale = rescaleSlope * minBeforeScale + rescaleIntercept;
156
+ maxAfterScale = rescaleSlope * maxBeforeScale + rescaleIntercept;
157
+ if (suvbw) {
158
+ minAfterScale = minAfterScale * suvbw;
159
+ maxAfterScale = maxAfterScale * suvbw;
160
+ }
161
+ }
162
+ }
163
+ else if (disableScale) {
164
+ imageFrame.preScale = {
165
+ enabled: true,
166
+ scaled: false,
167
+ };
168
+ minAfterScale = minBeforeScale;
169
+ maxAfterScale = maxBeforeScale;
170
+ }
171
+ imageFrame.pixelData = pixelDataArray;
172
+ imageFrame.smallestPixelValue = minAfterScale;
173
+ imageFrame.largestPixelValue = maxAfterScale;
174
+ const end = new Date().getTime();
175
+ imageFrame.decodeTimeInMS = end - start;
176
+ return imageFrame;
177
+ }
178
+ function _handleTargetBuffer(options, imageFrame, typedArrayConstructors, pixelDataArray) {
179
+ const { arrayBuffer, type, offset: rawOffset = 0, length: rawLength, rows, } = options.targetBuffer;
180
+ const TypedArrayConstructor = typedArrayConstructors[type];
181
+ if (!TypedArrayConstructor) {
182
+ throw new Error(`target array ${type} is not supported, or doesn't exist.`);
183
+ }
184
+ if (rows && rows != imageFrame.rows) {
185
+ scaleImageFrame(imageFrame, options.targetBuffer, TypedArrayConstructor);
186
+ }
187
+ const imageFrameLength = imageFrame.pixelDataLength;
188
+ const offset = rawOffset;
189
+ const length = rawLength !== null && rawLength !== undefined
190
+ ? rawLength
191
+ : imageFrameLength - offset;
192
+ const imageFramePixelData = imageFrame.pixelData;
193
+ if (length !== imageFramePixelData.length) {
194
+ throw new Error(`target array for image does not have the same length (${length}) as the decoded image length (${imageFramePixelData.length}).`);
195
+ }
196
+ const typedArray = arrayBuffer
197
+ ? new TypedArrayConstructor(arrayBuffer, offset, length)
198
+ : new TypedArrayConstructor(length);
199
+ typedArray.set(imageFramePixelData, 0);
200
+ pixelDataArray = typedArray;
201
+ return pixelDataArray;
202
+ }
203
+ function _handlePreScaleSetup(options, minBeforeScale, maxBeforeScale, imageFrame) {
204
+ const scalingParameters = options.preScale.scalingParameters;
205
+ _validateScalingParameters(scalingParameters);
206
+ const { rescaleSlope, rescaleIntercept } = scalingParameters;
207
+ const areSlopeAndInterceptNumbers = typeof rescaleSlope === 'number' && typeof rescaleIntercept === 'number';
208
+ let scaledMin = minBeforeScale;
209
+ let scaledMax = maxBeforeScale;
210
+ if (areSlopeAndInterceptNumbers) {
211
+ scaledMin = rescaleSlope * minBeforeScale + rescaleIntercept;
212
+ scaledMax = rescaleSlope * maxBeforeScale + rescaleIntercept;
213
+ }
214
+ return _getDefaultPixelDataArray(scaledMin, scaledMax, imageFrame);
215
+ }
216
+ function _getDefaultPixelDataArray(min, max, imageFrame) {
217
+ const TypedArrayConstructor = getPixelDataTypeFromMinMax(min, max);
218
+ const typedArray = new TypedArrayConstructor(imageFrame.pixelData.length);
219
+ typedArray.set(imageFrame.pixelData, 0);
220
+ return typedArray;
221
+ }
222
+ function _validateScalingParameters(scalingParameters) {
223
+ if (!scalingParameters) {
224
+ throw new Error('options.preScale.scalingParameters must be defined if preScale.enabled is true, and scalingParameters cannot be derived from the metadata providers.');
225
+ }
226
+ }
227
+ function createDestinationImage(imageFrame, targetBuffer, TypedArrayConstructor) {
228
+ const { samplesPerPixel } = imageFrame;
229
+ const { rows, columns } = targetBuffer;
230
+ const typedLength = rows * columns * samplesPerPixel;
231
+ const pixelData = new TypedArrayConstructor(typedLength);
232
+ const bytesPerPixel = pixelData.byteLength / typedLength;
233
+ return {
234
+ pixelData,
235
+ rows,
236
+ columns,
237
+ frameInfo: {
238
+ ...imageFrame.frameInfo,
239
+ rows,
240
+ columns,
241
+ },
242
+ imageInfo: {
243
+ ...imageFrame.imageInfo,
244
+ rows,
245
+ columns,
246
+ bytesPerPixel,
247
+ },
248
+ };
249
+ }
250
+ function scaleImageFrame(imageFrame, targetBuffer, TypedArrayConstructor) {
251
+ const dest = createDestinationImage(imageFrame, targetBuffer, TypedArrayConstructor);
252
+ const { scalingType = 'replicate' } = targetBuffer;
253
+ imageUtils[scalingType](imageFrame, dest);
254
+ Object.assign(imageFrame, dest);
255
+ return imageFrame;
256
+ }
257
+ const obj = {
258
+ decodeTask({ imageFrame, transferSyntax, decodeConfig, options, pixelData, callbackFn, }) {
259
+ return decodeImageFrame(imageFrame, transferSyntax, pixelData, decodeConfig, options, callbackFn);
260
+ },
261
+ };
262
+ expose(obj);
@@ -0,0 +1,5 @@
1
+ declare const external: {
2
+ cornerstone: any;
3
+ dicomParser: any;
4
+ };
5
+ export default external;
@@ -0,0 +1,44 @@
1
+ import { getOptions } from './imageLoader/internal';
2
+ import registerLoaders from './imageLoader/registerLoaders';
3
+ let cornerstone;
4
+ let dicomParser;
5
+ const workerFn = () => {
6
+ const instance = new Worker(new URL('./decodeImageFrameWorker.js', import.meta.url), { type: 'module' });
7
+ return instance;
8
+ };
9
+ const external = {
10
+ set cornerstone(cs) {
11
+ cornerstone = cs;
12
+ registerLoaders(cornerstone);
13
+ const options = getOptions();
14
+ const workerManager = external.cornerstone.getWebWorkerManager();
15
+ workerManager.registerWorker('dicomImageLoader', workerFn, {
16
+ maxWorkerInstances: options.maxWebWorkers || 1,
17
+ });
18
+ },
19
+ get cornerstone() {
20
+ if (!cornerstone) {
21
+ cornerstone = window && window.cornerstone;
22
+ if (!cornerstone) {
23
+ throw new Error('cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.');
24
+ }
25
+ registerLoaders(cornerstone);
26
+ }
27
+ return cornerstone;
28
+ },
29
+ set dicomParser(dp) {
30
+ dicomParser = dp;
31
+ },
32
+ get dicomParser() {
33
+ if (!dicomParser) {
34
+ if (window && window.dicomParser) {
35
+ dicomParser = window.dicomParser;
36
+ }
37
+ else {
38
+ throw new Error('cornerstoneDICOMImageLoader requires a copy of dicomParser to work properly. Please add cornerstoneDICOMImageLoader.external.dicomParser = dicomParser; to your application.');
39
+ }
40
+ }
41
+ return dicomParser;
42
+ },
43
+ };
44
+ export default external;
@@ -0,0 +1,3 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ export default function (imageFrame: Types.IImageFrame, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -0,0 +1,77 @@
1
+ import external from '../../externalModules';
2
+ function convertLUTto8Bit(lut, shift) {
3
+ const numEntries = lut.length;
4
+ const cleanedLUT = new Uint8ClampedArray(numEntries);
5
+ for (let i = 0; i < numEntries; ++i) {
6
+ cleanedLUT[i] = lut[i] >> shift;
7
+ }
8
+ return cleanedLUT;
9
+ }
10
+ function fetchPaletteData(imageFrame, color, fallback) {
11
+ const data = imageFrame[`${color}PaletteColorLookupTableData`];
12
+ if (data) {
13
+ return Promise.resolve(data);
14
+ }
15
+ const result = external.cornerstone.metaData.get('imagePixelModule', imageFrame.imageId);
16
+ if (result && typeof result.then === 'function') {
17
+ return result.then((module) => module ? module[`${color}PaletteColorLookupTableData`] : fallback);
18
+ }
19
+ else {
20
+ return Promise.resolve(result ? result[`${color}PaletteColorLookupTableData`] : fallback);
21
+ }
22
+ }
23
+ export default function (imageFrame, colorBuffer, useRGBA) {
24
+ const numPixels = imageFrame.columns * imageFrame.rows;
25
+ const pixelData = imageFrame.pixelData;
26
+ Promise.all([
27
+ fetchPaletteData(imageFrame, 'red', null),
28
+ fetchPaletteData(imageFrame, 'green', null),
29
+ fetchPaletteData(imageFrame, 'blue', null),
30
+ ]).then(([rData, gData, bData]) => {
31
+ if (!rData || !gData || !bData) {
32
+ throw new Error('The image does not have a complete color palette. R, G, and B palette data are required.');
33
+ }
34
+ const len = rData.length;
35
+ let palIndex = 0;
36
+ let bufferIndex = 0;
37
+ const start = imageFrame.redPaletteColorLookupTableDescriptor[1];
38
+ const shift = imageFrame.redPaletteColorLookupTableDescriptor[2] === 8 ? 0 : 8;
39
+ const rDataCleaned = convertLUTto8Bit(rData, shift);
40
+ const gDataCleaned = convertLUTto8Bit(gData, shift);
41
+ const bDataCleaned = convertLUTto8Bit(bData, shift);
42
+ if (useRGBA) {
43
+ for (let i = 0; i < numPixels; ++i) {
44
+ let value = pixelData[palIndex++];
45
+ if (value < start) {
46
+ value = 0;
47
+ }
48
+ else if (value > start + len - 1) {
49
+ value = len - 1;
50
+ }
51
+ else {
52
+ value -= start;
53
+ }
54
+ colorBuffer[bufferIndex++] = rDataCleaned[value];
55
+ colorBuffer[bufferIndex++] = gDataCleaned[value];
56
+ colorBuffer[bufferIndex++] = bDataCleaned[value];
57
+ colorBuffer[bufferIndex++] = 255;
58
+ }
59
+ return;
60
+ }
61
+ for (let i = 0; i < numPixels; ++i) {
62
+ let value = pixelData[palIndex++];
63
+ if (value < start) {
64
+ value = 0;
65
+ }
66
+ else if (value > start + len - 1) {
67
+ value = len - 1;
68
+ }
69
+ else {
70
+ value -= start;
71
+ }
72
+ colorBuffer[bufferIndex++] = rDataCleaned[value];
73
+ colorBuffer[bufferIndex++] = gDataCleaned[value];
74
+ colorBuffer[bufferIndex++] = bDataCleaned[value];
75
+ }
76
+ });
77
+ }
@@ -0,0 +1,2 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ export default function (imageFrame: ByteArray, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -0,0 +1,21 @@
1
+ export default function (imageFrame, colorBuffer, useRGBA) {
2
+ if (imageFrame === undefined) {
3
+ throw new Error('decodeRGB: rgbBuffer must be defined');
4
+ }
5
+ if (imageFrame.length % 3 !== 0) {
6
+ throw new Error(`decodeRGB: rgbBuffer length ${imageFrame.length} must be divisible by 3`);
7
+ }
8
+ const numPixels = imageFrame.length / 3;
9
+ let rgbIndex = 0;
10
+ let bufferIndex = 0;
11
+ if (useRGBA) {
12
+ for (let i = 0; i < numPixels; i++) {
13
+ colorBuffer[bufferIndex++] = imageFrame[rgbIndex++];
14
+ colorBuffer[bufferIndex++] = imageFrame[rgbIndex++];
15
+ colorBuffer[bufferIndex++] = imageFrame[rgbIndex++];
16
+ colorBuffer[bufferIndex++] = 255;
17
+ }
18
+ return;
19
+ }
20
+ colorBuffer.set(imageFrame);
21
+ }
@@ -0,0 +1,2 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ export default function (imageFrame: ByteArray, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -0,0 +1,28 @@
1
+ export default function (imageFrame, colorBuffer, useRGBA) {
2
+ if (imageFrame === undefined) {
3
+ throw new Error('decodeRGB: rgbBuffer must be defined');
4
+ }
5
+ if (imageFrame.length % 3 !== 0) {
6
+ throw new Error(`decodeRGB: rgbBuffer length ${imageFrame.length} must be divisible by 3`);
7
+ }
8
+ const numPixels = imageFrame.length / 3;
9
+ let bufferIndex = 0;
10
+ let rIndex = 0;
11
+ let gIndex = numPixels;
12
+ let bIndex = numPixels * 2;
13
+ if (useRGBA) {
14
+ for (let i = 0; i < numPixels; i++) {
15
+ colorBuffer[bufferIndex++] = imageFrame[rIndex++];
16
+ colorBuffer[bufferIndex++] = imageFrame[gIndex++];
17
+ colorBuffer[bufferIndex++] = imageFrame[bIndex++];
18
+ colorBuffer[bufferIndex++] = 255;
19
+ }
20
+ }
21
+ else {
22
+ for (let i = 0; i < numPixels; i++) {
23
+ colorBuffer[bufferIndex++] = imageFrame[rIndex++];
24
+ colorBuffer[bufferIndex++] = imageFrame[gIndex++];
25
+ colorBuffer[bufferIndex++] = imageFrame[bIndex++];
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,2 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ export default function (imageFrame: ByteArray, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -0,0 +1,44 @@
1
+ export default function (imageFrame, colorBuffer, useRGBA) {
2
+ if (imageFrame === undefined) {
3
+ throw new Error('convertYBRFull422ByPixel: ybrBuffer must be defined');
4
+ }
5
+ if (imageFrame.length % 2 !== 0) {
6
+ throw new Error(`convertYBRFull422ByPixel: ybrBuffer length ${imageFrame.length} must be divisible by 2`);
7
+ }
8
+ const numPixels = imageFrame.length / 2;
9
+ let ybrIndex = 0;
10
+ let bufferIndex = 0;
11
+ if (useRGBA) {
12
+ for (let i = 0; i < numPixels; i += 2) {
13
+ const y1 = imageFrame[ybrIndex++];
14
+ const y2 = imageFrame[ybrIndex++];
15
+ const cb = imageFrame[ybrIndex++];
16
+ const cr = imageFrame[ybrIndex++];
17
+ colorBuffer[bufferIndex++] = y1 + 1.402 * (cr - 128);
18
+ colorBuffer[bufferIndex++] =
19
+ y1 - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
20
+ colorBuffer[bufferIndex++] = y1 + 1.772 * (cb - 128);
21
+ colorBuffer[bufferIndex++] = 255;
22
+ colorBuffer[bufferIndex++] = y2 + 1.402 * (cr - 128);
23
+ colorBuffer[bufferIndex++] =
24
+ y2 - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
25
+ colorBuffer[bufferIndex++] = y2 + 1.772 * (cb - 128);
26
+ colorBuffer[bufferIndex++] = 255;
27
+ }
28
+ return;
29
+ }
30
+ for (let i = 0; i < numPixels; i += 2) {
31
+ const y1 = imageFrame[ybrIndex++];
32
+ const y2 = imageFrame[ybrIndex++];
33
+ const cb = imageFrame[ybrIndex++];
34
+ const cr = imageFrame[ybrIndex++];
35
+ colorBuffer[bufferIndex++] = y1 + 1.402 * (cr - 128);
36
+ colorBuffer[bufferIndex++] =
37
+ y1 - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
38
+ colorBuffer[bufferIndex++] = y1 + 1.772 * (cb - 128);
39
+ colorBuffer[bufferIndex++] = y2 + 1.402 * (cr - 128);
40
+ colorBuffer[bufferIndex++] =
41
+ y2 - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
42
+ colorBuffer[bufferIndex++] = y2 + 1.772 * (cb - 128);
43
+ }
44
+ }
@@ -0,0 +1,2 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ export default function (imageFrame: ByteArray, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -0,0 +1,33 @@
1
+ export default function (imageFrame, colorBuffer, useRGBA) {
2
+ if (imageFrame === undefined) {
3
+ throw new Error('convertYBRFullByPixel: ybrBuffer must be defined');
4
+ }
5
+ if (imageFrame.length % 3 !== 0) {
6
+ throw new Error(`convertYBRFullByPixel: ybrBuffer length ${imageFrame.length} must be divisible by 3`);
7
+ }
8
+ const numPixels = imageFrame.length / 3;
9
+ let ybrIndex = 0;
10
+ let bufferIndex = 0;
11
+ if (useRGBA) {
12
+ for (let i = 0; i < numPixels; i++) {
13
+ const y = imageFrame[ybrIndex++];
14
+ const cb = imageFrame[ybrIndex++];
15
+ const cr = imageFrame[ybrIndex++];
16
+ colorBuffer[bufferIndex++] = y + 1.402 * (cr - 128);
17
+ colorBuffer[bufferIndex++] =
18
+ y - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
19
+ colorBuffer[bufferIndex++] = y + 1.772 * (cb - 128);
20
+ colorBuffer[bufferIndex++] = 255;
21
+ }
22
+ return;
23
+ }
24
+ for (let i = 0; i < numPixels; i++) {
25
+ const y = imageFrame[ybrIndex++];
26
+ const cb = imageFrame[ybrIndex++];
27
+ const cr = imageFrame[ybrIndex++];
28
+ colorBuffer[bufferIndex++] = y + 1.402 * (cr - 128);
29
+ colorBuffer[bufferIndex++] =
30
+ y - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
31
+ colorBuffer[bufferIndex++] = y + 1.772 * (cb - 128);
32
+ }
33
+ }
@@ -0,0 +1,2 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ export default function (imageFrame: ByteArray, colorBuffer: ByteArray, useRGBA: boolean): void;