@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,57 @@
1
+ import { loadedDataSets } from './dataSetCacheManager';
2
+ function _get(uri) {
3
+ if (!loadedDataSets[uri]) {
4
+ return;
5
+ }
6
+ return loadedDataSets[uri];
7
+ }
8
+ function isMultiframeDataset(uri) {
9
+ const dataSet = _get(uri);
10
+ return _isMultiframeDataset(dataSet);
11
+ }
12
+ function _isMultiframeDataset(dataSet) {
13
+ if (!dataSet) {
14
+ return false;
15
+ }
16
+ const numberOfFrames = dataSet.intString('x00280008');
17
+ return numberOfFrames && numberOfFrames > 1;
18
+ }
19
+ function retrieveFrameParameterIndex(uri) {
20
+ return uri.indexOf('&frame=');
21
+ }
22
+ function retrieveMultiframeDataset(uri) {
23
+ const frameParameterIndex = retrieveFrameParameterIndex(uri);
24
+ const multiframeURI = frameParameterIndex === -1 ? uri : uri.slice(0, frameParameterIndex);
25
+ const frame = parseInt(uri.slice(frameParameterIndex + 7), 10) || 1;
26
+ let dataSet;
27
+ if (loadedDataSets[multiframeURI]) {
28
+ dataSet = loadedDataSets[multiframeURI].dataSet;
29
+ }
30
+ else {
31
+ dataSet = undefined;
32
+ }
33
+ return {
34
+ dataSet,
35
+ frame,
36
+ };
37
+ }
38
+ function generateMultiframeWADOURIs(uri) {
39
+ const listWADOURIs = [];
40
+ const dataSet = _get(uri);
41
+ if (_isMultiframeDataset(dataSet)) {
42
+ const numberOfFrames = dataSet.intString('x00280008');
43
+ for (let i = 1; i <= numberOfFrames; i++) {
44
+ listWADOURIs.push(`${uri}&frame=${i}`);
45
+ }
46
+ }
47
+ else {
48
+ listWADOURIs.push(uri);
49
+ }
50
+ return listWADOURIs;
51
+ }
52
+ export default {
53
+ _get,
54
+ generateMultiframeWADOURIs,
55
+ retrieveMultiframeDataset,
56
+ isMultiframeDataset,
57
+ };
@@ -0,0 +1,3 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ declare function unpackBinaryFrame(byteArray: ByteArray, frameOffset: number, pixelsPerFrame: number): Uint8Array;
3
+ export default unpackBinaryFrame;
@@ -0,0 +1,14 @@
1
+ function isBitSet(byte, bitPos) {
2
+ return byte & (1 << bitPos);
3
+ }
4
+ function unpackBinaryFrame(byteArray, frameOffset, pixelsPerFrame) {
5
+ const pixelData = new Uint8Array(pixelsPerFrame);
6
+ for (let i = 0; i < pixelsPerFrame; i++) {
7
+ const bytePos = Math.floor(i / 8);
8
+ const byte = byteArray[bytePos + frameOffset];
9
+ const bitPos = i % 8;
10
+ pixelData[i] = isBitSet(byte, bitPos) ? 1 : 0;
11
+ }
12
+ return pixelData;
13
+ }
14
+ export default unpackBinaryFrame;
@@ -0,0 +1,4 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core/src';
3
+ declare function decodeBigEndian(imageFrame: Types.IImageFrame, pixelData: ByteArray): Promise<Types.IImageFrame>;
4
+ export default decodeBigEndian;
@@ -0,0 +1,28 @@
1
+ function swap16(val) {
2
+ return ((val & 0xff) << 8) | ((val >> 8) & 0xff);
3
+ }
4
+ async function decodeBigEndian(imageFrame, pixelData) {
5
+ if (imageFrame.bitsAllocated === 16) {
6
+ let arrayBuffer = pixelData.buffer;
7
+ let offset = pixelData.byteOffset;
8
+ const length = pixelData.length;
9
+ if (offset % 2) {
10
+ arrayBuffer = arrayBuffer.slice(offset);
11
+ offset = 0;
12
+ }
13
+ if (imageFrame.pixelRepresentation === 0) {
14
+ imageFrame.pixelData = new Uint16Array(arrayBuffer, offset, length / 2);
15
+ }
16
+ else {
17
+ imageFrame.pixelData = new Int16Array(arrayBuffer, offset, length / 2);
18
+ }
19
+ for (let i = 0; i < imageFrame.pixelData.length; i++) {
20
+ imageFrame.pixelData[i] = swap16(imageFrame.pixelData[i]);
21
+ }
22
+ }
23
+ else if (imageFrame.bitsAllocated === 8) {
24
+ imageFrame.pixelData = pixelData;
25
+ }
26
+ return imageFrame;
27
+ }
28
+ export default decodeBigEndian;
@@ -0,0 +1,5 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { LoaderDecodeOptions } from '../../types';
3
+ export declare function initialize(decodeConfig?: LoaderDecodeOptions): Promise<void>;
4
+ declare function decodeAsync(compressedImageFrame: ByteArray, imageInfo: any): Promise<any>;
5
+ export default decodeAsync;
@@ -0,0 +1,109 @@
1
+ import openJphFactory from '@cornerstonejs/codec-openjph/wasmjs';
2
+ const openjphWasm = new URL('@cornerstonejs/codec-openjph/wasm', import.meta.url);
3
+ const local = {
4
+ codec: undefined,
5
+ decoder: undefined,
6
+ decodeConfig: {},
7
+ };
8
+ function calculateSizeAtDecompositionLevel(decompositionLevel, frameWidth, frameHeight) {
9
+ const result = { width: frameWidth, height: frameHeight };
10
+ while (decompositionLevel > 0) {
11
+ result.width = Math.ceil(result.width / 2);
12
+ result.height = Math.ceil(result.height / 2);
13
+ decompositionLevel--;
14
+ }
15
+ return result;
16
+ }
17
+ export function initialize(decodeConfig) {
18
+ local.decodeConfig = decodeConfig;
19
+ if (local.codec) {
20
+ return Promise.resolve();
21
+ }
22
+ const openJphModule = openJphFactory({
23
+ locateFile: (f) => {
24
+ if (f.endsWith('.wasm')) {
25
+ return openjphWasm;
26
+ }
27
+ return f;
28
+ },
29
+ });
30
+ return new Promise((resolve, reject) => {
31
+ openJphModule.then((instance) => {
32
+ local.codec = instance;
33
+ local.decoder = new instance.HTJ2KDecoder();
34
+ resolve();
35
+ }, reject);
36
+ });
37
+ }
38
+ async function decodeAsync(compressedImageFrame, imageInfo) {
39
+ await initialize();
40
+ const decoder = new local.codec.HTJ2KDecoder();
41
+ const encodedBufferInWASM = decoder.getEncodedBuffer(compressedImageFrame.length);
42
+ encodedBufferInWASM.set(compressedImageFrame);
43
+ const decodeLevel = imageInfo.decodeLevel || 0;
44
+ decoder.decodeSubResolution(decodeLevel);
45
+ const frameInfo = decoder.getFrameInfo();
46
+ if (imageInfo.decodeLevel > 0) {
47
+ const { width, height } = calculateSizeAtDecompositionLevel(imageInfo.decodeLevel, frameInfo.width, frameInfo.height);
48
+ frameInfo.width = width;
49
+ frameInfo.height = height;
50
+ }
51
+ const decodedBufferInWASM = decoder.getDecodedBuffer();
52
+ const imageFrame = new Uint8Array(decodedBufferInWASM.length);
53
+ imageFrame.set(decodedBufferInWASM);
54
+ const imageOffset = `x: ${decoder.getImageOffset().x}, y: ${decoder.getImageOffset().y}`;
55
+ const numDecompositions = decoder.getNumDecompositions();
56
+ const numLayers = decoder.getNumLayers();
57
+ const progessionOrder = ['unknown', 'LRCP', 'RLCP', 'RPCL', 'PCRL', 'CPRL'][decoder.getProgressionOrder() + 1];
58
+ const reversible = decoder.getIsReversible();
59
+ const blockDimensions = `${decoder.getBlockDimensions().width} x ${decoder.getBlockDimensions().height}`;
60
+ const tileSize = `${decoder.getTileSize().width} x ${decoder.getTileSize().height}`;
61
+ const tileOffset = `${decoder.getTileOffset().x}, ${decoder.getTileOffset().y}`;
62
+ const decodedSize = `${decodedBufferInWASM.length.toLocaleString()} bytes`;
63
+ const compressionRatio = `${(decodedBufferInWASM.length / encodedBufferInWASM.length).toFixed(2)}:1`;
64
+ const encodedImageInfo = {
65
+ columns: frameInfo.width,
66
+ rows: frameInfo.height,
67
+ bitsPerPixel: frameInfo.bitsPerSample,
68
+ signed: frameInfo.isSigned,
69
+ bytesPerPixel: imageInfo.bytesPerPixel,
70
+ componentsPerPixel: frameInfo.componentCount,
71
+ };
72
+ let pixelData = getPixelData(frameInfo, decodedBufferInWASM);
73
+ const { buffer: b, byteOffset, byteLength } = pixelData;
74
+ const pixelDataArrayBuffer = b.slice(byteOffset, byteOffset + byteLength);
75
+ pixelData = new pixelData.constructor(pixelDataArrayBuffer);
76
+ const encodeOptions = {
77
+ imageOffset,
78
+ numDecompositions,
79
+ numLayers,
80
+ progessionOrder,
81
+ reversible,
82
+ blockDimensions,
83
+ tileSize,
84
+ tileOffset,
85
+ decodedSize,
86
+ compressionRatio,
87
+ };
88
+ return {
89
+ ...imageInfo,
90
+ pixelData,
91
+ imageInfo: encodedImageInfo,
92
+ encodeOptions,
93
+ ...encodeOptions,
94
+ ...encodedImageInfo,
95
+ };
96
+ }
97
+ function getPixelData(frameInfo, decodedBuffer) {
98
+ if (frameInfo.bitsPerSample > 8) {
99
+ if (frameInfo.isSigned) {
100
+ return new Int16Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength / 2);
101
+ }
102
+ return new Uint16Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength / 2);
103
+ }
104
+ if (frameInfo.isSigned) {
105
+ return new Int8Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength);
106
+ }
107
+ return new Uint8Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength);
108
+ }
109
+ export default decodeAsync;
@@ -0,0 +1,5 @@
1
+ import type { Types } from '@cornerstonejs/core/src';
2
+ import type { WebWorkerDecodeConfig } from '../../types';
3
+ export declare function initialize(decodeConfig?: WebWorkerDecodeConfig): Promise<void>;
4
+ declare function decodeAsync(compressedImageFrame: any, imageInfo: any): Promise<Types.IImageFrame>;
5
+ export default decodeAsync;
@@ -0,0 +1,93 @@
1
+ import openJpegFactory from '@cornerstonejs/codec-openjpeg/decodewasmjs';
2
+ const openjpegWasm = new URL('@cornerstonejs/codec-openjpeg/decodewasm', import.meta.url);
3
+ const local = {
4
+ codec: undefined,
5
+ decoder: undefined,
6
+ decodeConfig: {},
7
+ };
8
+ export function initialize(decodeConfig) {
9
+ local.decodeConfig = decodeConfig;
10
+ if (local.codec) {
11
+ return Promise.resolve();
12
+ }
13
+ const openJpegModule = openJpegFactory({
14
+ locateFile: (f) => {
15
+ if (f.endsWith('.wasm')) {
16
+ return openjpegWasm.toString();
17
+ }
18
+ return f;
19
+ },
20
+ });
21
+ return new Promise((resolve, reject) => {
22
+ openJpegModule.then((instance) => {
23
+ local.codec = instance;
24
+ local.decoder = new instance.J2KDecoder();
25
+ resolve();
26
+ }, reject);
27
+ });
28
+ }
29
+ async function decodeAsync(compressedImageFrame, imageInfo) {
30
+ await initialize();
31
+ const decoder = local.decoder;
32
+ const encodedBufferInWASM = decoder.getEncodedBuffer(compressedImageFrame.length);
33
+ encodedBufferInWASM.set(compressedImageFrame);
34
+ decoder.decode();
35
+ const frameInfo = decoder.getFrameInfo();
36
+ const decodedBufferInWASM = decoder.getDecodedBuffer();
37
+ const imageFrame = new Uint8Array(decodedBufferInWASM.length);
38
+ imageFrame.set(decodedBufferInWASM);
39
+ const imageOffset = `x: ${decoder.getImageOffset().x}, y: ${decoder.getImageOffset().y}`;
40
+ const numDecompositions = decoder.getNumDecompositions();
41
+ const numLayers = decoder.getNumLayers();
42
+ const progessionOrder = ['unknown', 'LRCP', 'RLCP', 'RPCL', 'PCRL', 'CPRL'][decoder.getProgressionOrder() + 1];
43
+ const reversible = decoder.getIsReversible();
44
+ const blockDimensions = `${decoder.getBlockDimensions().width} x ${decoder.getBlockDimensions().height}`;
45
+ const tileSize = `${decoder.getTileSize().width} x ${decoder.getTileSize().height}`;
46
+ const tileOffset = `${decoder.getTileOffset().x}, ${decoder.getTileOffset().y}`;
47
+ const colorTransform = decoder.getColorSpace();
48
+ const decodedSize = `${decodedBufferInWASM.length.toLocaleString()} bytes`;
49
+ const compressionRatio = `${(decodedBufferInWASM.length / encodedBufferInWASM.length).toFixed(2)}:1`;
50
+ const encodedImageInfo = {
51
+ columns: frameInfo.width,
52
+ rows: frameInfo.height,
53
+ bitsPerPixel: frameInfo.bitsPerSample,
54
+ signed: frameInfo.isSigned,
55
+ bytesPerPixel: imageInfo.bytesPerPixel,
56
+ componentsPerPixel: frameInfo.componentCount,
57
+ };
58
+ const pixelData = getPixelData(frameInfo, decodedBufferInWASM);
59
+ const encodeOptions = {
60
+ imageOffset,
61
+ numDecompositions,
62
+ numLayers,
63
+ progessionOrder,
64
+ reversible,
65
+ blockDimensions,
66
+ tileSize,
67
+ tileOffset,
68
+ colorTransform,
69
+ decodedSize,
70
+ compressionRatio,
71
+ };
72
+ return {
73
+ ...imageInfo,
74
+ pixelData,
75
+ imageInfo: encodedImageInfo,
76
+ encodeOptions,
77
+ ...encodeOptions,
78
+ ...encodedImageInfo,
79
+ };
80
+ }
81
+ function getPixelData(frameInfo, decodedBuffer) {
82
+ if (frameInfo.bitsPerSample > 8) {
83
+ if (frameInfo.isSigned) {
84
+ return new Int16Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength / 2);
85
+ }
86
+ return new Uint16Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength / 2);
87
+ }
88
+ if (frameInfo.isSigned) {
89
+ return new Int8Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength);
90
+ }
91
+ return new Uint8Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength);
92
+ }
93
+ export default decodeAsync;
@@ -0,0 +1,6 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core/src';
3
+ import type { WebWorkerDecodeConfig } from '../../types';
4
+ export declare function initialize(decodeConfig?: WebWorkerDecodeConfig): Promise<void>;
5
+ declare function decodeJPEGBaseline12BitAsync(imageFrame: Types.IImageFrame, pixelData: ByteArray): Promise<Types.IImageFrame>;
6
+ export default decodeJPEGBaseline12BitAsync;
@@ -0,0 +1,34 @@
1
+ const local = {
2
+ JpegImage: undefined,
3
+ decodeConfig: {},
4
+ };
5
+ export function initialize(decodeConfig) {
6
+ local.decodeConfig = decodeConfig;
7
+ if (local.JpegImage) {
8
+ return Promise.resolve();
9
+ }
10
+ return new Promise((resolve, reject) => {
11
+ import('../../../codecs/jpeg').then(({ JpegImage }) => {
12
+ local.JpegImage = JpegImage;
13
+ resolve();
14
+ }, reject);
15
+ });
16
+ }
17
+ async function decodeJPEGBaseline12BitAsync(imageFrame, pixelData) {
18
+ await initialize();
19
+ if (typeof local.JpegImage === 'undefined') {
20
+ throw new Error('No JPEG Baseline decoder loaded');
21
+ }
22
+ const jpeg = new local.JpegImage();
23
+ jpeg.parse(pixelData);
24
+ jpeg.colorTransform = false;
25
+ if (imageFrame.bitsAllocated === 8) {
26
+ imageFrame.pixelData = jpeg.getData(imageFrame.columns, imageFrame.rows);
27
+ return imageFrame;
28
+ }
29
+ else if (imageFrame.bitsAllocated === 16) {
30
+ imageFrame.pixelData = jpeg.getData16(imageFrame.columns, imageFrame.rows);
31
+ return imageFrame;
32
+ }
33
+ }
34
+ export default decodeJPEGBaseline12BitAsync;
@@ -0,0 +1,3 @@
1
+ import type { Types } from '@cornerstonejs/core/src';
2
+ declare function decodeAsync(compressedImageFrame: any, imageInfo: any): Promise<Types.IImageFrame>;
3
+ export default decodeAsync;
@@ -0,0 +1,62 @@
1
+ import libjpegTurboFactory from '@cornerstonejs/codec-libjpeg-turbo-8bit/decodewasmjs';
2
+ const libjpegTurboWasm = new URL('@cornerstonejs/codec-libjpeg-turbo-8bit/decodewasm', import.meta.url);
3
+ const local = {
4
+ codec: undefined,
5
+ decoder: undefined,
6
+ };
7
+ function initLibjpegTurbo() {
8
+ if (local.codec) {
9
+ return Promise.resolve();
10
+ }
11
+ const libjpegTurboModule = libjpegTurboFactory({
12
+ locateFile: (f) => {
13
+ if (f.endsWith('.wasm')) {
14
+ return libjpegTurboWasm.toString();
15
+ }
16
+ return f;
17
+ },
18
+ });
19
+ return new Promise((resolve, reject) => {
20
+ libjpegTurboModule.then((instance) => {
21
+ local.codec = instance;
22
+ local.decoder = new instance.JPEGDecoder();
23
+ resolve();
24
+ }, reject);
25
+ });
26
+ }
27
+ async function decodeAsync(compressedImageFrame, imageInfo) {
28
+ await initLibjpegTurbo();
29
+ const decoder = local.decoder;
30
+ const encodedBufferInWASM = decoder.getEncodedBuffer(compressedImageFrame.length);
31
+ encodedBufferInWASM.set(compressedImageFrame);
32
+ decoder.decode();
33
+ const frameInfo = decoder.getFrameInfo();
34
+ const decodedPixelsInWASM = decoder.getDecodedBuffer();
35
+ const encodedImageInfo = {
36
+ columns: frameInfo.width,
37
+ rows: frameInfo.height,
38
+ bitsPerPixel: frameInfo.bitsPerSample,
39
+ signed: imageInfo.signed,
40
+ bytesPerPixel: imageInfo.bytesPerPixel,
41
+ componentsPerPixel: frameInfo.componentCount,
42
+ };
43
+ const pixelData = getPixelData(frameInfo, decodedPixelsInWASM);
44
+ const encodeOptions = {
45
+ frameInfo,
46
+ };
47
+ return {
48
+ ...imageInfo,
49
+ pixelData,
50
+ imageInfo: encodedImageInfo,
51
+ encodeOptions,
52
+ ...encodeOptions,
53
+ ...encodedImageInfo,
54
+ };
55
+ }
56
+ function getPixelData(frameInfo, decodedBuffer) {
57
+ if (frameInfo.isSigned) {
58
+ return new Int8Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength);
59
+ }
60
+ return new Uint8Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength);
61
+ }
62
+ export default decodeAsync;
@@ -0,0 +1,5 @@
1
+ import type { WebWorkerDecodeConfig } from '../../types';
2
+ import type { Types } from '@cornerstonejs/core/src';
3
+ export declare function initialize(decodeConfig?: WebWorkerDecodeConfig): Promise<void>;
4
+ declare function decodeAsync(compressedImageFrame: any, imageInfo: any): Promise<Types.IImageFrame>;
5
+ export default decodeAsync;
@@ -0,0 +1,84 @@
1
+ import charlsFactory from '@cornerstonejs/codec-charls/decodewasmjs';
2
+ const charlsWasm = new URL('@cornerstonejs/codec-charls/decodewasm', import.meta.url);
3
+ const local = {
4
+ codec: undefined,
5
+ decoder: undefined,
6
+ decodeConfig: {},
7
+ };
8
+ function getExceptionMessage(exception) {
9
+ return typeof exception === 'number'
10
+ ? local.codec.getExceptionMessage(exception)
11
+ : exception;
12
+ }
13
+ export function initialize(decodeConfig) {
14
+ local.decodeConfig = decodeConfig;
15
+ if (local.codec) {
16
+ return Promise.resolve();
17
+ }
18
+ const charlsModule = charlsFactory({
19
+ locateFile: (f) => {
20
+ if (f.endsWith('.wasm')) {
21
+ return charlsWasm.toString();
22
+ }
23
+ return f;
24
+ },
25
+ });
26
+ return new Promise((resolve, reject) => {
27
+ charlsModule.then((instance) => {
28
+ local.codec = instance;
29
+ local.decoder = new instance.JpegLSDecoder();
30
+ resolve();
31
+ }, reject);
32
+ });
33
+ }
34
+ async function decodeAsync(compressedImageFrame, imageInfo) {
35
+ try {
36
+ await initialize();
37
+ const decoder = local.decoder;
38
+ const encodedBufferInWASM = decoder.getEncodedBuffer(compressedImageFrame.length);
39
+ encodedBufferInWASM.set(compressedImageFrame);
40
+ decoder.decode();
41
+ const frameInfo = decoder.getFrameInfo();
42
+ const interleaveMode = decoder.getInterleaveMode();
43
+ const nearLossless = decoder.getNearLossless();
44
+ const decodedPixelsInWASM = decoder.getDecodedBuffer();
45
+ const encodedImageInfo = {
46
+ columns: frameInfo.width,
47
+ rows: frameInfo.height,
48
+ bitsPerPixel: frameInfo.bitsPerSample,
49
+ signed: imageInfo.signed,
50
+ bytesPerPixel: imageInfo.bytesPerPixel,
51
+ componentsPerPixel: frameInfo.componentCount,
52
+ };
53
+ const pixelData = getPixelData(frameInfo, decodedPixelsInWASM, imageInfo.signed);
54
+ const encodeOptions = {
55
+ nearLossless,
56
+ interleaveMode,
57
+ frameInfo,
58
+ };
59
+ return {
60
+ ...imageInfo,
61
+ pixelData,
62
+ imageInfo: encodedImageInfo,
63
+ encodeOptions,
64
+ ...encodeOptions,
65
+ ...encodedImageInfo,
66
+ };
67
+ }
68
+ catch (error) {
69
+ throw getExceptionMessage(error);
70
+ }
71
+ }
72
+ function getPixelData(frameInfo, decodedBuffer, signed) {
73
+ if (frameInfo.bitsPerSample > 8) {
74
+ if (signed) {
75
+ return new Int16Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength / 2);
76
+ }
77
+ return new Uint16Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength / 2);
78
+ }
79
+ if (signed) {
80
+ return new Int8Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength);
81
+ }
82
+ return new Uint8Array(decodedBuffer.buffer, decodedBuffer.byteOffset, decodedBuffer.byteLength);
83
+ }
84
+ export default decodeAsync;
@@ -0,0 +1,6 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core/src';
3
+ import type { WebWorkerDecodeConfig } from '../../types';
4
+ export declare function initialize(decodeConfig?: WebWorkerDecodeConfig): Promise<void>;
5
+ declare function decodeJPEGLossless(imageFrame: Types.IImageFrame, pixelData: ByteArray): Promise<Types.IImageFrame>;
6
+ export default decodeJPEGLossless;
@@ -0,0 +1,39 @@
1
+ const local = {
2
+ jpeg: undefined,
3
+ decodeConfig: {},
4
+ };
5
+ export function initialize(decodeConfig) {
6
+ local.decodeConfig = decodeConfig;
7
+ if (local.jpeg) {
8
+ return Promise.resolve();
9
+ }
10
+ return new Promise((resolve, reject) => {
11
+ import('../../../codecs/jpegLossless').then((jpeg) => {
12
+ local.jpeg = jpeg;
13
+ resolve();
14
+ }, reject);
15
+ });
16
+ }
17
+ async function decodeJPEGLossless(imageFrame, pixelData) {
18
+ await initialize();
19
+ if (typeof local.jpeg === 'undefined' ||
20
+ typeof local.jpeg.lossless === 'undefined' ||
21
+ typeof local.jpeg.lossless.Decoder === 'undefined') {
22
+ throw new Error('No JPEG Lossless decoder loaded');
23
+ }
24
+ const byteOutput = imageFrame.bitsAllocated <= 8 ? 1 : 2;
25
+ const buffer = pixelData.buffer;
26
+ const decoder = new local.jpeg.lossless.Decoder();
27
+ const decompressedData = decoder.decode(buffer, pixelData.byteOffset, pixelData.length, byteOutput);
28
+ if (imageFrame.pixelRepresentation === 0) {
29
+ if (imageFrame.bitsAllocated === 16) {
30
+ imageFrame.pixelData = new Uint16Array(decompressedData.buffer);
31
+ return imageFrame;
32
+ }
33
+ imageFrame.pixelData = new Uint8Array(decompressedData.buffer);
34
+ return imageFrame;
35
+ }
36
+ imageFrame.pixelData = new Int16Array(decompressedData.buffer);
37
+ return imageFrame;
38
+ }
39
+ export default decodeJPEGLossless;
@@ -0,0 +1,4 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ declare function decodeLittleEndian(imageFrame: Types.IImageFrame, pixelData: ByteArray): Promise<Types.IImageFrame>;
4
+ export default decodeLittleEndian;
@@ -0,0 +1,29 @@
1
+ async function decodeLittleEndian(imageFrame, pixelData) {
2
+ let arrayBuffer = pixelData.buffer;
3
+ let offset = pixelData.byteOffset;
4
+ const length = pixelData.length;
5
+ if (imageFrame.bitsAllocated === 16) {
6
+ if (offset % 2) {
7
+ arrayBuffer = arrayBuffer.slice(offset);
8
+ offset = 0;
9
+ }
10
+ if (imageFrame.pixelRepresentation === 0) {
11
+ imageFrame.pixelData = new Uint16Array(arrayBuffer, offset, length / 2);
12
+ }
13
+ else {
14
+ imageFrame.pixelData = new Int16Array(arrayBuffer, offset, length / 2);
15
+ }
16
+ }
17
+ else if (imageFrame.bitsAllocated === 8 || imageFrame.bitsAllocated === 1) {
18
+ imageFrame.pixelData = pixelData;
19
+ }
20
+ else if (imageFrame.bitsAllocated === 32) {
21
+ if (offset % 2) {
22
+ arrayBuffer = arrayBuffer.slice(offset);
23
+ offset = 0;
24
+ }
25
+ imageFrame.pixelData = new Float32Array(arrayBuffer, offset, length / 4);
26
+ }
27
+ return imageFrame;
28
+ }
29
+ export default decodeLittleEndian;
@@ -0,0 +1,4 @@
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ declare function decodeRLE(imageFrame: Types.IImageFrame, pixelData: ByteArray): Promise<Types.IImageFrame>;
4
+ export default decodeRLE;