@cornerstonejs/dicom-image-loader 1.78.1 → 2.0.0-beta.10

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 (478) hide show
  1. package/dist/744.bundle.min.js +3 -0
  2. package/dist/744.bundle.min.js.LICENSE.txt +5 -0
  3. package/dist/744.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/{945.min.worker.js → 584.min.js} +2 -2
  7. package/dist/dynamic-import/584.min.js.map +1 -0
  8. package/dist/dynamic-import/595.min.js +2 -0
  9. package/dist/dynamic-import/595.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/958.min.js +3 -0
  13. package/dist/dynamic-import/958.min.js.LICENSE.txt +5 -0
  14. package/dist/dynamic-import/958.min.js.map +1 -0
  15. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
  16. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
  17. package/dist/esm/codecs/jpeg.js +891 -0
  18. package/dist/esm/codecs/jpeg.js.map +1 -0
  19. package/dist/esm/codecs/jpegLossless.js +1220 -0
  20. package/dist/esm/codecs/jpegLossless.js.map +1 -0
  21. package/dist/esm/src/constants/transferSyntaxes.js +47 -0
  22. package/dist/esm/src/constants/transferSyntaxes.js.map +1 -0
  23. package/dist/esm/src/externalModules.js +45 -0
  24. package/dist/esm/src/externalModules.js.map +1 -0
  25. package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js +78 -0
  26. package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js.map +1 -0
  27. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js +22 -0
  28. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js.map +1 -0
  29. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js +29 -0
  30. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js.map +1 -0
  31. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js +45 -0
  32. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js.map +1 -0
  33. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js +34 -0
  34. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js.map +1 -0
  35. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js +36 -0
  36. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js.map +1 -0
  37. package/dist/esm/src/imageLoader/colorSpaceConverters/index.js +8 -0
  38. package/dist/esm/src/imageLoader/colorSpaceConverters/index.js.map +1 -0
  39. package/dist/esm/src/imageLoader/configure.js +12 -0
  40. package/dist/esm/src/imageLoader/configure.js.map +1 -0
  41. package/dist/esm/src/imageLoader/convertColorSpace.js +41 -0
  42. package/dist/esm/src/imageLoader/convertColorSpace.js.map +1 -0
  43. package/dist/esm/src/imageLoader/createImage.js +249 -0
  44. package/dist/esm/src/imageLoader/createImage.js.map +1 -0
  45. package/dist/esm/src/imageLoader/decodeImageFrame.js +66 -0
  46. package/dist/esm/src/imageLoader/decodeImageFrame.js.map +1 -0
  47. package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.js +65 -0
  48. package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.js.map +1 -0
  49. package/dist/esm/src/imageLoader/getImageFrame.js +27 -0
  50. package/dist/esm/src/imageLoader/getImageFrame.js.map +1 -0
  51. package/dist/esm/src/imageLoader/getInstanceModule.js +41 -0
  52. package/dist/esm/src/imageLoader/getInstanceModule.js.map +1 -0
  53. package/dist/esm/src/imageLoader/getMinMax.js +16 -0
  54. package/dist/esm/src/imageLoader/getMinMax.js.map +1 -0
  55. package/dist/esm/src/imageLoader/getScalingParameters.js +16 -0
  56. package/dist/esm/src/imageLoader/getScalingParameters.js.map +1 -0
  57. package/dist/esm/src/imageLoader/imageIdToURI.js +5 -0
  58. package/dist/esm/src/imageLoader/imageIdToURI.js.map +1 -0
  59. package/dist/esm/src/imageLoader/index.js +37 -0
  60. package/dist/esm/src/imageLoader/index.js.map +1 -0
  61. package/dist/esm/src/imageLoader/internal/index.js +9 -0
  62. package/dist/esm/src/imageLoader/internal/index.js.map +1 -0
  63. package/dist/esm/src/imageLoader/internal/options.js +24 -0
  64. package/dist/esm/src/imageLoader/internal/options.js.map +1 -0
  65. package/dist/esm/src/imageLoader/internal/rangeRequest.js +122 -0
  66. package/dist/esm/src/imageLoader/internal/rangeRequest.js.map +1 -0
  67. package/dist/esm/src/imageLoader/internal/streamRequest.js +93 -0
  68. package/dist/esm/src/imageLoader/internal/streamRequest.js.map +1 -0
  69. package/dist/esm/src/imageLoader/internal/xhrRequest.js +103 -0
  70. package/dist/esm/src/imageLoader/internal/xhrRequest.js.map +1 -0
  71. package/dist/esm/src/imageLoader/isColorConversionRequired.js +23 -0
  72. package/dist/esm/src/imageLoader/isColorConversionRequired.js.map +1 -0
  73. package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.js +10 -0
  74. package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.js.map +1 -0
  75. package/dist/esm/src/imageLoader/isNMReconstructable.js +4 -0
  76. package/dist/esm/src/imageLoader/isNMReconstructable.js.map +1 -0
  77. package/dist/esm/src/imageLoader/registerLoaders.js +8 -0
  78. package/dist/esm/src/imageLoader/registerLoaders.js.map +1 -0
  79. package/dist/esm/src/imageLoader/wadors/combineFrameInstance.js +45 -0
  80. package/dist/esm/src/imageLoader/wadors/combineFrameInstance.js.map +1 -0
  81. package/dist/esm/src/imageLoader/wadors/extractMultipart.js +74 -0
  82. package/dist/esm/src/imageLoader/wadors/extractMultipart.js.map +1 -0
  83. package/dist/esm/src/imageLoader/wadors/findIndexOfString.js +33 -0
  84. package/dist/esm/src/imageLoader/wadors/findIndexOfString.js.map +1 -0
  85. package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.js +9 -0
  86. package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.js.map +1 -0
  87. package/dist/esm/src/imageLoader/wadors/getPixelData.js +36 -0
  88. package/dist/esm/src/imageLoader/wadors/getPixelData.js.map +1 -0
  89. package/dist/esm/src/imageLoader/wadors/getTagValue.js +10 -0
  90. package/dist/esm/src/imageLoader/wadors/getTagValue.js.map +1 -0
  91. package/dist/esm/src/imageLoader/wadors/index.js +22 -0
  92. package/dist/esm/src/imageLoader/wadors/index.js.map +1 -0
  93. package/dist/esm/src/imageLoader/wadors/loadImage.js +126 -0
  94. package/dist/esm/src/imageLoader/wadors/loadImage.js.map +1 -0
  95. package/dist/esm/src/imageLoader/wadors/loadImage_test.js +42 -0
  96. package/dist/esm/src/imageLoader/wadors/loadImage_test.js.map +1 -0
  97. package/dist/esm/src/imageLoader/wadors/metaData/NMHelpers.js +39 -0
  98. package/dist/esm/src/imageLoader/wadors/metaData/NMHelpers.js.map +1 -0
  99. package/dist/esm/src/imageLoader/wadors/metaData/USHelpers.js +47 -0
  100. package/dist/esm/src/imageLoader/wadors/metaData/USHelpers.js.map +1 -0
  101. package/dist/esm/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.js +19 -0
  102. package/dist/esm/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.js.map +1 -0
  103. package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.js +7 -0
  104. package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.js.map +1 -0
  105. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.js +10 -0
  106. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.js.map +1 -0
  107. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.js +10 -0
  108. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.js.map +1 -0
  109. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.js +21 -0
  110. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.js.map +1 -0
  111. package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.js +39 -0
  112. package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.js.map +1 -0
  113. package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.js +15 -0
  114. package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.js.map +1 -0
  115. package/dist/esm/src/imageLoader/wadors/metaData/getValue.js +15 -0
  116. package/dist/esm/src/imageLoader/wadors/metaData/getValue.js.map +1 -0
  117. package/dist/esm/src/imageLoader/wadors/metaData/index.js +8 -0
  118. package/dist/esm/src/imageLoader/wadors/metaData/index.js.map +1 -0
  119. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.js +262 -0
  120. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.js.map +1 -0
  121. package/dist/esm/src/imageLoader/wadors/metaDataManager.js +48 -0
  122. package/dist/esm/src/imageLoader/wadors/metaDataManager.js.map +1 -0
  123. package/dist/esm/src/imageLoader/wadors/register.js +7 -0
  124. package/dist/esm/src/imageLoader/wadors/register.js.map +1 -0
  125. package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.js +27 -0
  126. package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.js.map +1 -0
  127. package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.js +68 -0
  128. package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.js.map +1 -0
  129. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.js +143 -0
  130. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.js.map +1 -0
  131. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager_test.js +11 -0
  132. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager_test.js.map +1 -0
  133. package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.js +57 -0
  134. package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.js.map +1 -0
  135. package/dist/esm/src/imageLoader/wadouri/fileManager.js +21 -0
  136. package/dist/esm/src/imageLoader/wadouri/fileManager.js.map +1 -0
  137. package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.js +34 -0
  138. package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.js.map +1 -0
  139. package/dist/esm/src/imageLoader/wadouri/getPixelData.js +14 -0
  140. package/dist/esm/src/imageLoader/wadouri/getPixelData.js.map +1 -0
  141. package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.js +48 -0
  142. package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.js.map +1 -0
  143. package/dist/esm/src/imageLoader/wadouri/index.js +32 -0
  144. package/dist/esm/src/imageLoader/wadouri/index.js.map +1 -0
  145. package/dist/esm/src/imageLoader/wadouri/loadFileRequest.js +18 -0
  146. package/dist/esm/src/imageLoader/wadouri/loadFileRequest.js.map +1 -0
  147. package/dist/esm/src/imageLoader/wadouri/loadImage.js +105 -0
  148. package/dist/esm/src/imageLoader/wadouri/loadImage.js.map +1 -0
  149. package/dist/esm/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.js +81 -0
  150. package/dist/esm/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.js.map +1 -0
  151. package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.js +80 -0
  152. package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.js.map +1 -0
  153. package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.js +45 -0
  154. package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.js.map +1 -0
  155. package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js +31 -0
  156. package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js.map +1 -0
  157. package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.js +17 -0
  158. package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.js.map +1 -0
  159. package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.js +37 -0
  160. package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.js.map +1 -0
  161. package/dist/esm/src/imageLoader/wadouri/metaData/index.js +6 -0
  162. package/dist/esm/src/imageLoader/wadouri/metaData/index.js.map +1 -0
  163. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.js +211 -0
  164. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.js.map +1 -0
  165. package/dist/esm/src/imageLoader/wadouri/parseImageId.js +21 -0
  166. package/dist/esm/src/imageLoader/wadouri/parseImageId.js.map +1 -0
  167. package/dist/esm/src/imageLoader/wadouri/register.js +9 -0
  168. package/dist/esm/src/imageLoader/wadouri/register.js.map +1 -0
  169. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.js +58 -0
  170. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.js.map +1 -0
  171. package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.js +15 -0
  172. package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.js.map +1 -0
  173. package/dist/esm/src/shared/calculateMinMax.js +25 -0
  174. package/dist/esm/src/shared/calculateMinMax.js.map +1 -0
  175. package/dist/esm/src/shared/calculateMinMax_test.js +39 -0
  176. package/dist/esm/src/shared/calculateMinMax_test.js.map +1 -0
  177. package/dist/esm/src/shared/decodeImageFrame.js +269 -0
  178. package/dist/esm/src/shared/decodeImageFrame.js.map +1 -0
  179. package/dist/esm/src/shared/decoders/decodeBigEndian.js +29 -0
  180. package/dist/esm/src/shared/decoders/decodeBigEndian.js.map +1 -0
  181. package/dist/esm/src/shared/decoders/decodeHTJ2K.js +110 -0
  182. package/dist/esm/src/shared/decoders/decodeHTJ2K.js.map +1 -0
  183. package/dist/esm/src/shared/decoders/decodeJPEG2000.js +94 -0
  184. package/dist/esm/src/shared/decoders/decodeJPEG2000.js.map +1 -0
  185. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.js +35 -0
  186. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.js.map +1 -0
  187. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +2 -0
  188. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js.map +1 -0
  189. package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.js +63 -0
  190. package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.js.map +1 -0
  191. package/dist/esm/src/shared/decoders/decodeJPEGLS.js +85 -0
  192. package/dist/esm/src/shared/decoders/decodeJPEGLS.js.map +1 -0
  193. package/dist/esm/src/shared/decoders/decodeJPEGLossless.js +40 -0
  194. package/dist/esm/src/shared/decoders/decodeJPEGLossless.js.map +1 -0
  195. package/dist/esm/src/shared/decoders/decodeLittleEndian.js +30 -0
  196. package/dist/esm/src/shared/decoders/decodeLittleEndian.js.map +1 -0
  197. package/dist/esm/src/shared/decoders/decodeRLE.js +129 -0
  198. package/dist/esm/src/shared/decoders/decodeRLE.js.map +1 -0
  199. package/dist/esm/src/shared/getMinMax.js +17 -0
  200. package/dist/esm/src/shared/getMinMax.js.map +1 -0
  201. package/dist/esm/src/shared/getMinMax_test.js +10 -0
  202. package/dist/esm/src/shared/getMinMax_test.js.map +1 -0
  203. package/dist/esm/src/shared/getPixelDataTypeFromMinMax.js +23 -0
  204. package/dist/esm/src/shared/getPixelDataTypeFromMinMax.js.map +1 -0
  205. package/dist/esm/src/shared/isColorImage.js +11 -0
  206. package/dist/esm/src/shared/isColorImage.js.map +1 -0
  207. package/dist/esm/src/shared/scaling/bilinear.js +33 -0
  208. package/dist/esm/src/shared/scaling/bilinear.js.map +1 -0
  209. package/dist/esm/src/shared/scaling/replicate.js +21 -0
  210. package/dist/esm/src/shared/scaling/replicate.js.map +1 -0
  211. package/dist/esm/src/shared/scaling/scaleArray.js +16 -0
  212. package/dist/esm/src/shared/scaling/scaleArray.js.map +1 -0
  213. package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.js +2 -0
  214. package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.js.map +1 -0
  215. package/dist/esm/src/types/DICOMLoaderIImage.js +2 -0
  216. package/dist/esm/src/types/DICOMLoaderIImage.js.map +1 -0
  217. package/dist/esm/src/types/DICOMLoaderImageOptions.js +2 -0
  218. package/dist/esm/src/types/DICOMLoaderImageOptions.js.map +1 -0
  219. package/dist/esm/src/types/ImageFrame.js +2 -0
  220. package/dist/esm/src/types/ImageFrame.js.map +1 -0
  221. package/dist/esm/src/types/LoadRequestFunction.js +2 -0
  222. package/dist/esm/src/types/LoadRequestFunction.js.map +1 -0
  223. package/dist/esm/src/types/LoaderDecodeOptions.js +2 -0
  224. package/dist/esm/src/types/LoaderDecodeOptions.js.map +1 -0
  225. package/dist/esm/src/types/LoaderOptions.js +2 -0
  226. package/dist/esm/src/types/LoaderOptions.js.map +1 -0
  227. package/dist/esm/src/types/LutType.js +2 -0
  228. package/dist/esm/src/types/LutType.js.map +1 -0
  229. package/dist/esm/src/types/MetadataModules.js +2 -0
  230. package/dist/esm/src/types/MetadataModules.js.map +1 -0
  231. package/dist/esm/src/types/PixelDataTypedArray.js +2 -0
  232. package/dist/esm/src/types/PixelDataTypedArray.js.map +1 -0
  233. package/dist/esm/src/types/WADORSMetaData.js +2 -0
  234. package/dist/esm/src/types/WADORSMetaData.js.map +1 -0
  235. package/dist/esm/src/types/WebWorkerTypes.js +2 -0
  236. package/dist/esm/src/types/WebWorkerTypes.js.map +1 -0
  237. package/dist/esm/src/types/XHRRequest.js +2 -0
  238. package/dist/esm/src/types/XHRRequest.js.map +1 -0
  239. package/dist/esm/src/types/index.js +2 -0
  240. package/dist/esm/src/types/index.js.map +1 -0
  241. package/dist/esm/src/version.js +2 -0
  242. package/dist/esm/src/version.js.map +1 -0
  243. package/dist/types/codecs/jpeg.d.ts +11 -0
  244. package/dist/types/codecs/jpeg.d.ts.map +1 -0
  245. package/dist/types/codecs/jpegLossless.d.ts +8 -0
  246. package/dist/types/codecs/jpegLossless.d.ts.map +1 -0
  247. package/dist/types/src/constants/transferSyntaxes.d.ts +47 -0
  248. package/dist/types/src/constants/transferSyntaxes.d.ts.map +1 -0
  249. package/dist/types/src/externalModules.d.ts +6 -0
  250. package/dist/types/src/externalModules.d.ts.map +1 -0
  251. package/dist/types/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +4 -0
  252. package/dist/types/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts.map +1 -0
  253. package/dist/types/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +3 -0
  254. package/dist/types/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts.map +1 -0
  255. package/dist/types/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +3 -0
  256. package/dist/types/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts.map +1 -0
  257. package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +3 -0
  258. package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts.map +1 -0
  259. package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +3 -0
  260. package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts.map +1 -0
  261. package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +3 -0
  262. package/dist/types/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts.map +1 -0
  263. package/dist/types/src/imageLoader/colorSpaceConverters/index.d.ts +8 -0
  264. package/dist/types/src/imageLoader/colorSpaceConverters/index.d.ts.map +1 -0
  265. package/dist/types/src/imageLoader/configure.d.ts +4 -0
  266. package/dist/types/src/imageLoader/configure.d.ts.map +1 -0
  267. package/dist/types/src/imageLoader/convertColorSpace.d.ts +2 -0
  268. package/dist/types/src/imageLoader/convertColorSpace.d.ts.map +1 -0
  269. package/dist/types/src/imageLoader/createImage.d.ts +5 -0
  270. package/dist/types/src/imageLoader/createImage.d.ts.map +1 -0
  271. package/dist/types/src/imageLoader/decodeImageFrame.d.ts +4 -0
  272. package/dist/types/src/imageLoader/decodeImageFrame.d.ts.map +1 -0
  273. package/dist/types/src/imageLoader/decodeJPEGBaseline8BitColor.d.ts +5 -0
  274. package/dist/types/src/imageLoader/decodeJPEGBaseline8BitColor.d.ts.map +1 -0
  275. package/dist/types/src/imageLoader/getImageFrame.d.ts +4 -0
  276. package/dist/types/src/imageLoader/getImageFrame.d.ts.map +1 -0
  277. package/dist/types/src/imageLoader/getInstanceModule.d.ts +4 -0
  278. package/dist/types/src/imageLoader/getInstanceModule.d.ts.map +1 -0
  279. package/dist/types/src/imageLoader/getMinMax.d.ts +5 -0
  280. package/dist/types/src/imageLoader/getMinMax.d.ts.map +1 -0
  281. package/dist/types/src/imageLoader/getScalingParameters.d.ts +7 -0
  282. package/dist/types/src/imageLoader/getScalingParameters.d.ts.map +1 -0
  283. package/dist/types/src/imageLoader/imageIdToURI.d.ts +2 -0
  284. package/dist/types/src/imageLoader/imageIdToURI.d.ts.map +1 -0
  285. package/dist/types/src/imageLoader/index.d.ts +95 -0
  286. package/dist/types/src/imageLoader/index.d.ts.map +1 -0
  287. package/dist/types/src/imageLoader/internal/index.d.ts +9 -0
  288. package/dist/types/src/imageLoader/internal/index.d.ts.map +1 -0
  289. package/dist/types/src/imageLoader/internal/options.d.ts +4 -0
  290. package/dist/types/src/imageLoader/internal/options.d.ts.map +1 -0
  291. package/dist/types/src/imageLoader/internal/rangeRequest.d.ts +10 -0
  292. package/dist/types/src/imageLoader/internal/rangeRequest.d.ts.map +1 -0
  293. package/dist/types/src/imageLoader/internal/streamRequest.d.ts +3 -0
  294. package/dist/types/src/imageLoader/internal/streamRequest.d.ts.map +1 -0
  295. package/dist/types/src/imageLoader/internal/xhrRequest.d.ts +4 -0
  296. package/dist/types/src/imageLoader/internal/xhrRequest.d.ts.map +1 -0
  297. package/dist/types/src/imageLoader/isColorConversionRequired.d.ts +2 -0
  298. package/dist/types/src/imageLoader/isColorConversionRequired.d.ts.map +1 -0
  299. package/dist/types/src/imageLoader/isJPEGBaseline8BitColor.d.ts +4 -0
  300. package/dist/types/src/imageLoader/isJPEGBaseline8BitColor.d.ts.map +1 -0
  301. package/dist/types/src/imageLoader/isNMReconstructable.d.ts +2 -0
  302. package/dist/types/src/imageLoader/isNMReconstructable.d.ts.map +1 -0
  303. package/dist/types/src/imageLoader/registerLoaders.d.ts +3 -0
  304. package/dist/types/src/imageLoader/registerLoaders.d.ts.map +1 -0
  305. package/dist/types/src/imageLoader/wadors/combineFrameInstance.d.ts +13 -0
  306. package/dist/types/src/imageLoader/wadors/combineFrameInstance.d.ts.map +1 -0
  307. package/dist/types/src/imageLoader/wadors/extractMultipart.d.ts +24 -0
  308. package/dist/types/src/imageLoader/wadors/extractMultipart.d.ts.map +1 -0
  309. package/dist/types/src/imageLoader/wadors/findIndexOfString.d.ts +3 -0
  310. package/dist/types/src/imageLoader/wadors/findIndexOfString.d.ts.map +1 -0
  311. package/dist/types/src/imageLoader/wadors/getImageQualityStatus.d.ts +3 -0
  312. package/dist/types/src/imageLoader/wadors/getImageQualityStatus.d.ts.map +1 -0
  313. package/dist/types/src/imageLoader/wadors/getPixelData.d.ts +27 -0
  314. package/dist/types/src/imageLoader/wadors/getPixelData.d.ts.map +1 -0
  315. package/dist/types/src/imageLoader/wadors/getTagValue.d.ts +2 -0
  316. package/dist/types/src/imageLoader/wadors/getTagValue.d.ts.map +1 -0
  317. package/dist/types/src/imageLoader/wadors/index.d.ts +26 -0
  318. package/dist/types/src/imageLoader/wadors/index.d.ts.map +1 -0
  319. package/dist/types/src/imageLoader/wadors/loadImage.d.ts +26 -0
  320. package/dist/types/src/imageLoader/wadors/loadImage.d.ts.map +1 -0
  321. package/dist/types/src/imageLoader/wadors/loadImage_test.d.ts +2 -0
  322. package/dist/types/src/imageLoader/wadors/loadImage_test.d.ts.map +1 -0
  323. package/dist/types/src/imageLoader/wadors/metaData/NMHelpers.d.ts +6 -0
  324. package/dist/types/src/imageLoader/wadors/metaData/NMHelpers.d.ts.map +1 -0
  325. package/dist/types/src/imageLoader/wadors/metaData/USHelpers.d.ts +20 -0
  326. package/dist/types/src/imageLoader/wadors/metaData/USHelpers.d.ts.map +1 -0
  327. package/dist/types/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts +4 -0
  328. package/dist/types/src/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts.map +1 -0
  329. package/dist/types/src/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +3 -0
  330. package/dist/types/src/imageLoader/wadors/metaData/getFirstNumberValue.d.ts.map +1 -0
  331. package/dist/types/src/imageLoader/wadors/metaData/getNumberString.d.ts +4 -0
  332. package/dist/types/src/imageLoader/wadors/metaData/getNumberString.d.ts.map +1 -0
  333. package/dist/types/src/imageLoader/wadors/metaData/getNumberValue.d.ts +4 -0
  334. package/dist/types/src/imageLoader/wadors/metaData/getNumberValue.d.ts.map +1 -0
  335. package/dist/types/src/imageLoader/wadors/metaData/getNumberValues.d.ts +4 -0
  336. package/dist/types/src/imageLoader/wadors/metaData/getNumberValues.d.ts.map +1 -0
  337. package/dist/types/src/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +5 -0
  338. package/dist/types/src/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts.map +1 -0
  339. package/dist/types/src/imageLoader/wadors/metaData/getSequenceItems.d.ts +4 -0
  340. package/dist/types/src/imageLoader/wadors/metaData/getSequenceItems.d.ts.map +1 -0
  341. package/dist/types/src/imageLoader/wadors/metaData/getValue.d.ts +4 -0
  342. package/dist/types/src/imageLoader/wadors/metaData/getValue.d.ts.map +1 -0
  343. package/dist/types/src/imageLoader/wadors/metaData/index.d.ts +8 -0
  344. package/dist/types/src/imageLoader/wadors/metaData/index.d.ts.map +1 -0
  345. package/dist/types/src/imageLoader/wadors/metaData/metaDataProvider.d.ts +15 -0
  346. package/dist/types/src/imageLoader/wadors/metaData/metaDataProvider.d.ts.map +1 -0
  347. package/dist/types/src/imageLoader/wadors/metaDataManager.d.ts +15 -0
  348. package/dist/types/src/imageLoader/wadors/metaDataManager.d.ts.map +1 -0
  349. package/dist/types/src/imageLoader/wadors/register.d.ts +2 -0
  350. package/dist/types/src/imageLoader/wadors/register.d.ts.map +1 -0
  351. package/dist/types/src/imageLoader/wadors/retrieveMultiframeMetadata.d.ts +16 -0
  352. package/dist/types/src/imageLoader/wadors/retrieveMultiframeMetadata.d.ts.map +1 -0
  353. package/dist/types/src/imageLoader/wadouri/combineFrameInstanceDataset.d.ts +23 -0
  354. package/dist/types/src/imageLoader/wadouri/combineFrameInstanceDataset.d.ts.map +1 -0
  355. package/dist/types/src/imageLoader/wadouri/dataSetCacheManager.d.ts +32 -0
  356. package/dist/types/src/imageLoader/wadouri/dataSetCacheManager.d.ts.map +1 -0
  357. package/dist/types/src/imageLoader/wadouri/dataSetCacheManager_test.d.ts +2 -0
  358. package/dist/types/src/imageLoader/wadouri/dataSetCacheManager_test.d.ts.map +1 -0
  359. package/dist/types/src/imageLoader/wadouri/dataset-from-partial-content.d.ts +7 -0
  360. package/dist/types/src/imageLoader/wadouri/dataset-from-partial-content.d.ts.map +1 -0
  361. package/dist/types/src/imageLoader/wadouri/fileManager.d.ts +12 -0
  362. package/dist/types/src/imageLoader/wadouri/fileManager.d.ts.map +1 -0
  363. package/dist/types/src/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +3 -0
  364. package/dist/types/src/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts.map +1 -0
  365. package/dist/types/src/imageLoader/wadouri/getPixelData.d.ts +4 -0
  366. package/dist/types/src/imageLoader/wadouri/getPixelData.d.ts.map +1 -0
  367. package/dist/types/src/imageLoader/wadouri/getUncompressedImageFrame.d.ts +4 -0
  368. package/dist/types/src/imageLoader/wadouri/getUncompressedImageFrame.d.ts.map +1 -0
  369. package/dist/types/src/imageLoader/wadouri/index.d.ts +44 -0
  370. package/dist/types/src/imageLoader/wadouri/index.d.ts.map +1 -0
  371. package/dist/types/src/imageLoader/wadouri/loadFileRequest.d.ts +3 -0
  372. package/dist/types/src/imageLoader/wadouri/loadFileRequest.d.ts.map +1 -0
  373. package/dist/types/src/imageLoader/wadouri/loadImage.d.ts +10 -0
  374. package/dist/types/src/imageLoader/wadouri/loadImage.d.ts.map +1 -0
  375. package/dist/types/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts +7 -0
  376. package/dist/types/src/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts.map +1 -0
  377. package/dist/types/src/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +5 -0
  378. package/dist/types/src/imageLoader/wadouri/metaData/getImagePixelModule.d.ts.map +1 -0
  379. package/dist/types/src/imageLoader/wadouri/metaData/getLUTs.d.ts +5 -0
  380. package/dist/types/src/imageLoader/wadouri/metaData/getLUTs.d.ts.map +1 -0
  381. package/dist/types/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +4 -0
  382. package/dist/types/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts.map +1 -0
  383. package/dist/types/src/imageLoader/wadouri/metaData/getNumberValues.d.ts +4 -0
  384. package/dist/types/src/imageLoader/wadouri/metaData/getNumberValues.d.ts.map +1 -0
  385. package/dist/types/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +5 -0
  386. package/dist/types/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts.map +1 -0
  387. package/dist/types/src/imageLoader/wadouri/metaData/index.d.ts +6 -0
  388. package/dist/types/src/imageLoader/wadouri/metaData/index.d.ts.map +1 -0
  389. package/dist/types/src/imageLoader/wadouri/metaData/metaDataProvider.d.ts +3 -0
  390. package/dist/types/src/imageLoader/wadouri/metaData/metaDataProvider.d.ts.map +1 -0
  391. package/dist/types/src/imageLoader/wadouri/parseImageId.d.ts +9 -0
  392. package/dist/types/src/imageLoader/wadouri/parseImageId.d.ts.map +1 -0
  393. package/dist/types/src/imageLoader/wadouri/register.d.ts +3 -0
  394. package/dist/types/src/imageLoader/wadouri/register.d.ts.map +1 -0
  395. package/dist/types/src/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +19 -0
  396. package/dist/types/src/imageLoader/wadouri/retrieveMultiframeDataset.d.ts.map +1 -0
  397. package/dist/types/src/imageLoader/wadouri/unpackBinaryFrame.d.ts +4 -0
  398. package/dist/types/src/imageLoader/wadouri/unpackBinaryFrame.d.ts.map +1 -0
  399. package/dist/types/src/shared/calculateMinMax.d.ts +3 -0
  400. package/dist/types/src/shared/calculateMinMax.d.ts.map +1 -0
  401. package/dist/types/src/shared/calculateMinMax_test.d.ts +2 -0
  402. package/dist/types/src/shared/calculateMinMax_test.d.ts.map +1 -0
  403. package/dist/types/src/shared/decodeImageFrame.d.ts +2 -0
  404. package/dist/types/src/shared/decodeImageFrame.d.ts.map +1 -0
  405. package/dist/types/src/shared/decoders/decodeBigEndian.d.ts +5 -0
  406. package/dist/types/src/shared/decoders/decodeBigEndian.d.ts.map +1 -0
  407. package/dist/types/src/shared/decoders/decodeHTJ2K.d.ts +6 -0
  408. package/dist/types/src/shared/decoders/decodeHTJ2K.d.ts.map +1 -0
  409. package/dist/types/src/shared/decoders/decodeJPEG2000.d.ts +5 -0
  410. package/dist/types/src/shared/decoders/decodeJPEG2000.d.ts.map +1 -0
  411. package/dist/types/src/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +6 -0
  412. package/dist/types/src/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts.map +1 -0
  413. package/dist/types/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
  414. package/dist/types/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts.map +1 -0
  415. package/dist/types/src/shared/decoders/decodeJPEGBaseline8Bit.d.ts +4 -0
  416. package/dist/types/src/shared/decoders/decodeJPEGBaseline8Bit.d.ts.map +1 -0
  417. package/dist/types/src/shared/decoders/decodeJPEGLS.d.ts +5 -0
  418. package/dist/types/src/shared/decoders/decodeJPEGLS.d.ts.map +1 -0
  419. package/dist/types/src/shared/decoders/decodeJPEGLossless.d.ts +6 -0
  420. package/dist/types/src/shared/decoders/decodeJPEGLossless.d.ts.map +1 -0
  421. package/dist/types/src/shared/decoders/decodeLittleEndian.d.ts +5 -0
  422. package/dist/types/src/shared/decoders/decodeLittleEndian.d.ts.map +1 -0
  423. package/dist/types/src/shared/decoders/decodeRLE.d.ts +5 -0
  424. package/dist/types/src/shared/decoders/decodeRLE.d.ts.map +1 -0
  425. package/dist/types/src/shared/getMinMax.d.ts +7 -0
  426. package/dist/types/src/shared/getMinMax.d.ts.map +1 -0
  427. package/dist/types/src/shared/getMinMax_test.d.ts +2 -0
  428. package/dist/types/src/shared/getMinMax_test.d.ts.map +1 -0
  429. package/dist/types/src/shared/getPixelDataTypeFromMinMax.d.ts +3 -0
  430. package/dist/types/src/shared/getPixelDataTypeFromMinMax.d.ts.map +1 -0
  431. package/dist/types/src/shared/isColorImage.d.ts +2 -0
  432. package/dist/types/src/shared/isColorImage.d.ts.map +1 -0
  433. package/dist/types/src/shared/scaling/bilinear.d.ts +2 -0
  434. package/dist/types/src/shared/scaling/bilinear.d.ts.map +1 -0
  435. package/dist/types/src/shared/scaling/replicate.d.ts +2 -0
  436. package/dist/types/src/shared/scaling/replicate.d.ts.map +1 -0
  437. package/dist/types/src/shared/scaling/scaleArray.d.ts +3 -0
  438. package/dist/types/src/shared/scaling/scaleArray.d.ts.map +1 -0
  439. package/dist/types/src/types/DICOMLoaderDataSetWithFetchMore.d.ts +10 -0
  440. package/dist/types/src/types/DICOMLoaderDataSetWithFetchMore.d.ts.map +1 -0
  441. package/dist/types/src/types/DICOMLoaderIImage.d.ts +14 -0
  442. package/dist/types/src/types/DICOMLoaderIImage.d.ts.map +1 -0
  443. package/dist/types/src/types/DICOMLoaderImageOptions.d.ts +27 -0
  444. package/dist/types/src/types/DICOMLoaderImageOptions.d.ts.map +1 -0
  445. package/dist/types/src/types/ImageFrame.d.ts +44 -0
  446. package/dist/types/src/types/ImageFrame.d.ts.map +1 -0
  447. package/dist/types/src/types/LoadRequestFunction.d.ts +2 -0
  448. package/dist/types/src/types/LoadRequestFunction.d.ts.map +1 -0
  449. package/dist/types/src/types/LoaderDecodeOptions.d.ts +5 -0
  450. package/dist/types/src/types/LoaderDecodeOptions.d.ts.map +1 -0
  451. package/dist/types/src/types/LoaderOptions.d.ts +19 -0
  452. package/dist/types/src/types/LoaderOptions.d.ts.map +1 -0
  453. package/dist/types/src/types/LutType.d.ts +7 -0
  454. package/dist/types/src/types/LutType.d.ts.map +1 -0
  455. package/dist/types/src/types/MetadataModules.d.ts +67 -0
  456. package/dist/types/src/types/MetadataModules.d.ts.map +1 -0
  457. package/dist/types/src/types/PixelDataTypedArray.d.ts +3 -0
  458. package/dist/types/src/types/PixelDataTypedArray.d.ts.map +1 -0
  459. package/dist/types/src/types/WADORSMetaData.d.ts +5 -0
  460. package/dist/types/src/types/WADORSMetaData.d.ts.map +1 -0
  461. package/dist/types/src/types/WebWorkerTypes.d.ts +65 -0
  462. package/dist/types/src/types/WebWorkerTypes.d.ts.map +1 -0
  463. package/dist/types/src/types/XHRRequest.d.ts +17 -0
  464. package/dist/types/src/types/XHRRequest.d.ts.map +1 -0
  465. package/dist/types/src/types/index.d.ts +15 -0
  466. package/dist/types/src/types/index.d.ts.map +1 -0
  467. package/dist/types/src/version.d.ts +3 -0
  468. package/dist/types/src/version.d.ts.map +1 -0
  469. package/package.json +19 -9
  470. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js +0 -2
  471. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js.map +0 -1
  472. package/dist/dynamic-import/610.min.worker.js +0 -2
  473. package/dist/dynamic-import/610.min.worker.js.map +0 -1
  474. package/dist/dynamic-import/945.min.worker.js.map +0 -1
  475. package/dist/dynamic-import/index.worker.5a5a581362c14598c3d9.worker.js +0 -2
  476. package/dist/dynamic-import/index.worker.5a5a581362c14598c3d9.worker.js.map +0 -1
  477. package/dist/index.worker.bundle.min.worker.js +0 -2
  478. package/dist/index.worker.bundle.min.worker.js.map +0 -1
@@ -1,2 +1,2 @@
1
- (self.webpackChunk=self.webpackChunk||[]).push([[945],{945:function(e,r){var n={Unkown:0,Grayscale:1,AdobeRGB:2,RGB:3,CYMK:4},o=function(){"use strict";var e=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),r=4017,o=799,a=3406,t=2276,s=1567,i=3784,c=5793,l=2896;function f(e,r){for(var n,o,a=0,t=[],s=16;s>0&&!e[s-1];)s--;t.push({children:[],index:0});var i,c=t[0];for(n=0;n<s;n++){for(o=0;o<e[n];o++){for((c=t.pop()).children[c.index]=r[a];c.index>0;)c=t.pop();for(c.index++,t.push(c);t.length<=n;)t.push(i={children:[],index:0}),c.children[c.index]=i.children,c=i;a++}n+1<s&&(t.push(i={children:[],index:0}),c.children[c.index]=i.children,c=i)}return t[0].children}function u(e,r,n){return 64*((e.blocksPerLine+1)*r+n)}function h(r,n,o,a,t,s,i,c,l){o.precision,o.samplesPerLine,o.scanLines;var f=o.mcusPerLine,h=o.progressive,b=(o.maxH,o.maxV,n),v=0,m=0;function p(){if(m>0)return m--,v>>m&1;if(255==(v=r[n++])){var e=r[n++];if(e)throw"unexpected marker: "+(v<<8|e).toString(16)}return m=7,v>>>7}function d(e){for(var r,n=e;null!==(r=p());){if("number"==typeof(n=n[r]))return n;if("object"!=typeof n)throw"invalid huffman sequence"}return null}function k(e){for(var r=0;e>0;){var n=p();if(null===n)return;r=r<<1|n,e--}return r}function w(e){var r=k(e);return r>=1<<e-1?r:r+(-1<<e)+1}var C=0;var P,g=0;function y(e,r,n,o,a){var t=n%f;r(e,u(e,(n/f|0)*e.v+o,t*e.h+a))}function D(e,r,n){r(e,u(e,n/e.blocksPerLine|0,n%e.blocksPerLine))}var L,x,T,A,U,I,q=a.length;I=h?0===s?0===c?function(e,r){var n=d(e.huffmanTableDC),o=0===n?0:w(n)<<l;e.blockData[r]=e.pred+=o}:function(e,r){e.blockData[r]|=p()<<l}:0===c?function(r,n){if(C>0)C--;else for(var o=s,a=i;o<=a;){var t=d(r.huffmanTableAC),c=15&t,f=t>>4;if(0!==c){var u=e[o+=f];r.blockData[n+u]=w(c)*(1<<l),o++}else{if(f<15){C=k(f)+(1<<f)-1;break}o+=16}}}:function(r,n){for(var o=s,a=i,t=0;o<=a;){var c=e[o];switch(g){case 0:var f=d(r.huffmanTableAC),u=15&f;if(t=f>>4,0===u)t<15?(C=k(t)+(1<<t),g=4):(t=16,g=1);else{if(1!==u)throw"invalid ACn encoding";P=w(u),g=t?2:3}continue;case 1:case 2:r.blockData[n+c]?r.blockData[n+c]+=p()<<l:0==--t&&(g=2==g?3:0);break;case 3:r.blockData[n+c]?r.blockData[n+c]+=p()<<l:(r.blockData[n+c]=P<<l,g=0);break;case 4:r.blockData[n+c]&&(r.blockData[n+c]+=p()<<l)}o++}4===g&&0==--C&&(g=0)}:function(r,n){var o=d(r.huffmanTableDC),a=0===o?0:w(o);r.blockData[n]=r.pred+=a;for(var t=1;t<64;){var s=d(r.huffmanTableAC),i=15&s,c=s>>4;if(0!==i){var l=e[t+=c];r.blockData[n+l]=w(i),t++}else{if(c<15)break;t+=16}}};var G,M,z,H,O=0;for(M=1==q?a[0].blocksPerLine*a[0].blocksPerColumn:f*o.mcusPerColumn,t||(t=M);O<M;){for(x=0;x<q;x++)a[x].pred=0;if(C=0,1==q)for(L=a[0],U=0;U<t;U++)D(L,I,O),O++;else for(U=0;U<t;U++){for(x=0;x<q;x++)for(z=(L=a[x]).h,H=L.v,T=0;T<H;T++)for(A=0;A<z;A++)y(L,I,O,T,A);O++}if(m=0,(G=r[n]<<8|r[n+1])<=65280)throw"marker was not found";if(!(G>=65488&&G<=65495))break;n+=2}return n-b}function b(e,n,f){var u,h,b,v,m,p,d,k,w,C,P=e.quantizationTable;for(C=0;C<64;C++)f[C]=e.blockData[n+C]*P[C];for(C=0;C<8;++C){var g=8*C;0!==f[1+g]||0!==f[2+g]||0!==f[3+g]||0!==f[4+g]||0!==f[5+g]||0!==f[6+g]||0!==f[7+g]?(u=c*f[0+g]+128>>8,h=c*f[4+g]+128>>8,b=f[2+g],v=f[6+g],m=l*(f[1+g]-f[7+g])+128>>8,k=l*(f[1+g]+f[7+g])+128>>8,p=f[3+g]<<4,d=f[5+g]<<4,w=u-h+1>>1,u=u+h+1>>1,h=w,w=b*i+v*s+128>>8,b=b*s-v*i+128>>8,v=w,w=m-d+1>>1,m=m+d+1>>1,d=w,w=k+p+1>>1,p=k-p+1>>1,k=w,w=u-v+1>>1,u=u+v+1>>1,v=w,w=h-b+1>>1,h=h+b+1>>1,b=w,w=m*t+k*a+2048>>12,m=m*a-k*t+2048>>12,k=w,w=p*o+d*r+2048>>12,p=p*r-d*o+2048>>12,d=w,f[0+g]=u+k,f[7+g]=u-k,f[1+g]=h+d,f[6+g]=h-d,f[2+g]=b+p,f[5+g]=b-p,f[3+g]=v+m,f[4+g]=v-m):(w=c*f[0+g]+512>>10,f[0+g]=w,f[1+g]=w,f[2+g]=w,f[3+g]=w,f[4+g]=w,f[5+g]=w,f[6+g]=w,f[7+g]=w)}for(C=0;C<8;++C){var y=C;0!==f[8+y]||0!==f[16+y]||0!==f[24+y]||0!==f[32+y]||0!==f[40+y]||0!==f[48+y]||0!==f[56+y]?(u=c*f[0+y]+2048>>12,h=c*f[32+y]+2048>>12,b=f[16+y],v=f[48+y],m=l*(f[8+y]-f[56+y])+2048>>12,k=l*(f[8+y]+f[56+y])+2048>>12,p=f[24+y],d=f[40+y],w=u-h+1>>1,u=u+h+1>>1,h=w,w=b*i+v*s+2048>>12,b=b*s-v*i+2048>>12,v=w,w=m-d+1>>1,m=m+d+1>>1,d=w,w=k+p+1>>1,p=k-p+1>>1,k=w,w=u-v+1>>1,u=u+v+1>>1,v=w,w=h-b+1>>1,h=h+b+1>>1,b=w,w=m*t+k*a+2048>>12,m=m*a-k*t+2048>>12,k=w,w=p*o+d*r+2048>>12,p=p*r-d*o+2048>>12,d=w,f[0+y]=u+k,f[56+y]=u-k,f[8+y]=h+d,f[48+y]=h-d,f[16+y]=b+p,f[40+y]=b-p,f[24+y]=v+m,f[32+y]=v-m):(w=c*f[C+0]+8192>>14,f[0+y]=w,f[8+y]=w,f[16+y]=w,f[24+y]=w,f[32+y]=w,f[40+y]=w,f[48+y]=w,f[56+y]=w)}for(C=0;C<64;++C){var D=n+C,L=f[C];L=L<=-2056/e.bitConversion?0:L>=2024/e.bitConversion?255/e.bitConversion:L+2056/e.bitConversion>>4,e.blockData[D]=L}}function v(e,r){for(var n=r.blocksPerLine,o=r.blocksPerColumn,a=new Int32Array(64),t=0;t<o;t++)for(var s=0;s<n;s++){b(r,u(r,t,s),a)}return r.blockData}function m(e){return e<=0?0:e>=255?255:0|e}class p{}return Object.setPrototypeOf(p.prototype,{load:function(e){var r=function(e){this.parse(e),this.onload&&this.onload()}.bind(this);if(e.indexOf("data:")>-1){for(var n=e.indexOf("base64,")+7,o=atob(e.substring(n)),a=new Uint8Array(o.length),t=o.length-1;t>=0;t--)a[t]=o.charCodeAt(t);r(o)}else{var s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="arraybuffer",s.onload=function(){var e=new Uint8Array(s.response);r(e)}.bind(this),s.send(null)}},parse:function(r){function o(){var e=r[c]<<8|r[c+1];return c+=2,e}function a(){var e=o(),n=r.subarray(c,c+e-2);return c+=n.length,n}function t(e){for(var r=Math.ceil(e.samplesPerLine/8/e.maxH),n=Math.ceil(e.scanLines/8/e.maxV),o=0;o<e.components.length;o++){S=e.components[o];var a=Math.ceil(Math.ceil(e.samplesPerLine/8)*S.h/e.maxH),t=Math.ceil(Math.ceil(e.scanLines/8)*S.v/e.maxV),s=r*S.h,i=64*(n*S.v)*(s+1);S.blockData=new Int16Array(i),S.blocksPerLine=a,S.blocksPerColumn=t}e.mcusPerLine=r,e.mcusPerColumn=n}var s,i,c=0,l=(r.length,null),u=null,b=[],m=[],p=[],d=o();if(65496!=d)throw"SOI not found";for(d=o();65497!=d;){var k,w;switch(d){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var C=a();65504===d&&74===C[0]&&70===C[1]&&73===C[2]&&70===C[3]&&0===C[4]&&(l={version:{major:C[5],minor:C[6]},densityUnits:C[7],xDensity:C[8]<<8|C[9],yDensity:C[10]<<8|C[11],thumbWidth:C[12],thumbHeight:C[13],thumbData:C.subarray(14,14+3*C[12]*C[13])}),65518===d&&65===C[0]&&100===C[1]&&111===C[2]&&98===C[3]&&101===C[4]&&0===C[5]&&(u={version:C[6],flags0:C[7]<<8|C[8],flags1:C[9]<<8|C[10],transformCode:C[11]});break;case 65499:for(var P=o()+c-2;c<P;){var g=r[c++],y=new Int32Array(64);if(g>>4){if(g>>4!=1)throw"DQT: invalid table spec";for(k=0;k<64;k++){y[e[k]]=o()}}else for(k=0;k<64;k++){y[e[k]]=r[c++]}b[15&g]=y}break;case 65472:case 65473:case 65474:if(s)throw"Only single frame JPEGs supported";o(),(s={}).extended=65473===d,s.progressive=65474===d,s.precision=r[c++],s.scanLines=o(),s.samplesPerLine=o(),s.components=[],s.componentIds={};var D,L=r[c++],x=0,T=0;for(J=0;J<L;J++){D=r[c];var A=r[c+1]>>4,U=15&r[c+1];x<A&&(x=A),T<U&&(T=U);var I=r[c+2];w=s.components.push({h:A,v:U,quantizationTable:b[I],quantizationTableId:I,bitConversion:255/((1<<s.precision)-1)}),s.componentIds[D]=w-1,c+=3}s.maxH=x,s.maxV=T,t(s);break;case 65476:var q=o();for(J=2;J<q;){var G=r[c++],M=new Uint8Array(16),z=0;for(k=0;k<16;k++,c++)z+=M[k]=r[c];var H=new Uint8Array(z);for(k=0;k<z;k++,c++)H[k]=r[c];J+=17+z,(G>>4?m:p)[15&G]=f(M,H)}break;case 65501:o(),i=o();break;case 65498:o();var O=r[c++],R=[];for(J=0;J<O;J++){var V=s.componentIds[r[c++]];S=s.components[V];var Y=r[c++];S.huffmanTableDC=p[Y>>4],S.huffmanTableAC=m[15&Y],R.push(S)}var j=r[c++],B=r[c++],X=r[c++],E=h(r,c,s,R,i,j,B,X>>4,15&X);c+=E;break;case 65535:255!==r[c]&&c--;break;default:if(255==r[c-3]&&r[c-2]>=192&&r[c-2]<=254){c-=3;break}throw"unknown JPEG marker "+d.toString(16)}d=o()}switch(this.width=s.samplesPerLine,this.height=s.scanLines,this.jfif=l,this.adobe=u,this.components=[],s.components.length){case 1:this.colorspace=n.Grayscale;break;case 3:this.adobe?this.colorspace=n.AdobeRGB:this.colorspace=n.RGB;break;case 4:this.colorspace=n.CYMK;break;default:this.colorspace=n.Unknown}for(var J=0;J<s.components.length;J++){var S;(S=s.components[J]).quantizationTable||null===S.quantizationTableId||(S.quantizationTable=b[S.quantizationTableId]),this.components.push({output:v(0,S),scaleX:S.h/s.maxH,scaleY:S.v/s.maxV,blocksPerLine:S.blocksPerLine,blocksPerColumn:S.blocksPerColumn,bitConversion:S.bitConversion})}},getData16:function(e,r){if(1!==this.components.length)throw"Unsupported color mode";var n,o,a,t,s,i,c=this.width/e,l=this.height/r,f=0,h=this.components.length,b=new Uint16Array(e*r*h),v=new Uint16Array((this.components[0].blocksPerLine<<3)*this.components[0].blocksPerColumn*8);for(i=0;i<h;i++){for(var m,p,d,k=(n=this.components[i]).blocksPerLine,w=n.blocksPerColumn,C=k<<3,P=0,g=0;g<w;g++)for(var y=g<<3,D=0;D<k;D++){var L=u(n,g,D),x=(f=0,D<<3);for(m=0;m<8;m++){P=(y+m)*C;for(p=0;p<8;p++)v[P+x+p]=n.output[L+f++]}}for(o=n.scaleX*c,a=n.scaleY*l,f=i,s=0;s<r;s++)for(t=0;t<e;t++)d=(0|s*a)*C+(0|t*o),b[f]=v[d],f+=h}return b},getData:function(e,r){var n,o,a,t,s,i,c,l,f,h,b,v,p,d,k,w=this.width/e,C=this.height/r,P=0,g=this.components.length,y=e*r*g,D=new Uint8Array(y),L=new Uint8Array((this.components[0].blocksPerLine<<3)*this.components[0].blocksPerColumn*8);for(i=0;i<g;i++){for(var x,T,A,U=(n=this.components[i]).blocksPerLine,I=n.blocksPerColumn,q=U<<3,G=0,M=0;M<I;M++)for(var z=M<<3,H=0;H<U;H++){var O=u(n,M,H),R=(P=0,H<<3);for(x=0;x<8;x++){G=(z+x)*q;for(T=0;T<8;T++)L[G+R+T]=n.output[O+P++]*n.bitConversion}}for(o=n.scaleX*w,a=n.scaleY*C,P=i,s=0;s<r;s++)for(t=0;t<e;t++)A=(0|s*a)*q+(0|t*o),D[P]=L[A],P+=g}switch(g){case 1:case 2:break;case 3:if(k=!0,this.adobe&&this.adobe.transformCode?k=!0:void 0!==this.colorTransform&&(k=!!this.colorTransform),k)for(i=0;i<y;i+=g)c=D[i],l=D[i+1],v=m(c-179.456+1.402*(f=D[i+2])),p=m(c+135.459-.344*l-.714*f),d=m(c-226.816+1.772*l),D[i]=v,D[i+1]=p,D[i+2]=d;break;case 4:if(!this.adobe)throw"Unsupported color mode (4 components)";if(k=!1,this.adobe&&this.adobe.transformCode?k=!0:void 0!==this.colorTransform&&(k=!!this.colorTransform),k)for(i=0;i<y;i+=g)c=D[i],l=D[i+1],h=m(434.456-c-1.402*(f=D[i+2])),b=m(119.541-c+.344*l+.714*f),c=m(481.816-c-1.772*l),D[i]=h,D[i+1]=b,D[i+2]=c;break;default:throw"Unsupported color mode"}return D}}),p}();e.exports={JpegImage:o}}}]);
2
- //# sourceMappingURL=945.min.worker.js.map
1
+ (this.webpackChunk=this.webpackChunk||[]).push([[584],{584:function(e,r){var n={Unkown:0,Grayscale:1,AdobeRGB:2,RGB:3,CYMK:4},o=function(){"use strict";var e=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),r=4017,o=799,a=3406,t=2276,s=1567,i=3784,c=5793,l=2896;function f(e,r){for(var n,o,a=0,t=[],s=16;s>0&&!e[s-1];)s--;t.push({children:[],index:0});var i,c=t[0];for(n=0;n<s;n++){for(o=0;o<e[n];o++){for((c=t.pop()).children[c.index]=r[a];c.index>0;)c=t.pop();for(c.index++,t.push(c);t.length<=n;)t.push(i={children:[],index:0}),c.children[c.index]=i.children,c=i;a++}n+1<s&&(t.push(i={children:[],index:0}),c.children[c.index]=i.children,c=i)}return t[0].children}function h(e,r,n){return 64*((e.blocksPerLine+1)*r+n)}function u(r,n,o,a,t,s,i,c,l){o.precision,o.samplesPerLine,o.scanLines;var f=o.mcusPerLine,u=o.progressive,b=(o.maxH,o.maxV,n),v=0,m=0;function p(){if(m>0)return m--,v>>m&1;if(255==(v=r[n++])){var e=r[n++];if(e)throw"unexpected marker: "+(v<<8|e).toString(16)}return m=7,v>>>7}function d(e){for(var r,n=e;null!==(r=p());){if("number"==typeof(n=n[r]))return n;if("object"!=typeof n)throw"invalid huffman sequence"}return null}function k(e){for(var r=0;e>0;){var n=p();if(null===n)return;r=r<<1|n,e--}return r}function w(e){var r=k(e);return r>=1<<e-1?r:r+(-1<<e)+1}var C=0;var P,g=0;function y(e,r,n,o,a){var t=n%f;r(e,h(e,(n/f|0)*e.v+o,t*e.h+a))}function D(e,r,n){r(e,h(e,n/e.blocksPerLine|0,n%e.blocksPerLine))}var L,x,T,A,U,I,q=a.length;I=u?0===s?0===c?function(e,r){var n=d(e.huffmanTableDC),o=0===n?0:w(n)<<l;e.blockData[r]=e.pred+=o}:function(e,r){e.blockData[r]|=p()<<l}:0===c?function(r,n){if(C>0)C--;else for(var o=s,a=i;o<=a;){var t=d(r.huffmanTableAC),c=15&t,f=t>>4;if(0!==c){var h=e[o+=f];r.blockData[n+h]=w(c)*(1<<l),o++}else{if(f<15){C=k(f)+(1<<f)-1;break}o+=16}}}:function(r,n){for(var o=s,a=i,t=0;o<=a;){var c=e[o];switch(g){case 0:var f=d(r.huffmanTableAC),h=15&f;if(t=f>>4,0===h)t<15?(C=k(t)+(1<<t),g=4):(t=16,g=1);else{if(1!==h)throw"invalid ACn encoding";P=w(h),g=t?2:3}continue;case 1:case 2:r.blockData[n+c]?r.blockData[n+c]+=p()<<l:0==--t&&(g=2==g?3:0);break;case 3:r.blockData[n+c]?r.blockData[n+c]+=p()<<l:(r.blockData[n+c]=P<<l,g=0);break;case 4:r.blockData[n+c]&&(r.blockData[n+c]+=p()<<l)}o++}4===g&&0==--C&&(g=0)}:function(r,n){var o=d(r.huffmanTableDC),a=0===o?0:w(o);r.blockData[n]=r.pred+=a;for(var t=1;t<64;){var s=d(r.huffmanTableAC),i=15&s,c=s>>4;if(0!==i){var l=e[t+=c];r.blockData[n+l]=w(i),t++}else{if(c<15)break;t+=16}}};var G,M,z,H,O=0;for(M=1==q?a[0].blocksPerLine*a[0].blocksPerColumn:f*o.mcusPerColumn,t||(t=M);O<M;){for(x=0;x<q;x++)a[x].pred=0;if(C=0,1==q)for(L=a[0],U=0;U<t;U++)D(L,I,O),O++;else for(U=0;U<t;U++){for(x=0;x<q;x++)for(z=(L=a[x]).h,H=L.v,T=0;T<H;T++)for(A=0;A<z;A++)y(L,I,O,T,A);O++}if(m=0,(G=r[n]<<8|r[n+1])<=65280)throw"marker was not found";if(!(G>=65488&&G<=65495))break;n+=2}return n-b}function b(e,n,f){var h,u,b,v,m,p,d,k,w,C,P=e.quantizationTable;for(C=0;C<64;C++)f[C]=e.blockData[n+C]*P[C];for(C=0;C<8;++C){var g=8*C;0!==f[1+g]||0!==f[2+g]||0!==f[3+g]||0!==f[4+g]||0!==f[5+g]||0!==f[6+g]||0!==f[7+g]?(h=c*f[0+g]+128>>8,u=c*f[4+g]+128>>8,b=f[2+g],v=f[6+g],m=l*(f[1+g]-f[7+g])+128>>8,k=l*(f[1+g]+f[7+g])+128>>8,p=f[3+g]<<4,d=f[5+g]<<4,w=h-u+1>>1,h=h+u+1>>1,u=w,w=b*i+v*s+128>>8,b=b*s-v*i+128>>8,v=w,w=m-d+1>>1,m=m+d+1>>1,d=w,w=k+p+1>>1,p=k-p+1>>1,k=w,w=h-v+1>>1,h=h+v+1>>1,v=w,w=u-b+1>>1,u=u+b+1>>1,b=w,w=m*t+k*a+2048>>12,m=m*a-k*t+2048>>12,k=w,w=p*o+d*r+2048>>12,p=p*r-d*o+2048>>12,d=w,f[0+g]=h+k,f[7+g]=h-k,f[1+g]=u+d,f[6+g]=u-d,f[2+g]=b+p,f[5+g]=b-p,f[3+g]=v+m,f[4+g]=v-m):(w=c*f[0+g]+512>>10,f[0+g]=w,f[1+g]=w,f[2+g]=w,f[3+g]=w,f[4+g]=w,f[5+g]=w,f[6+g]=w,f[7+g]=w)}for(C=0;C<8;++C){var y=C;0!==f[8+y]||0!==f[16+y]||0!==f[24+y]||0!==f[32+y]||0!==f[40+y]||0!==f[48+y]||0!==f[56+y]?(h=c*f[0+y]+2048>>12,u=c*f[32+y]+2048>>12,b=f[16+y],v=f[48+y],m=l*(f[8+y]-f[56+y])+2048>>12,k=l*(f[8+y]+f[56+y])+2048>>12,p=f[24+y],d=f[40+y],w=h-u+1>>1,h=h+u+1>>1,u=w,w=b*i+v*s+2048>>12,b=b*s-v*i+2048>>12,v=w,w=m-d+1>>1,m=m+d+1>>1,d=w,w=k+p+1>>1,p=k-p+1>>1,k=w,w=h-v+1>>1,h=h+v+1>>1,v=w,w=u-b+1>>1,u=u+b+1>>1,b=w,w=m*t+k*a+2048>>12,m=m*a-k*t+2048>>12,k=w,w=p*o+d*r+2048>>12,p=p*r-d*o+2048>>12,d=w,f[0+y]=h+k,f[56+y]=h-k,f[8+y]=u+d,f[48+y]=u-d,f[16+y]=b+p,f[40+y]=b-p,f[24+y]=v+m,f[32+y]=v-m):(w=c*f[C+0]+8192>>14,f[0+y]=w,f[8+y]=w,f[16+y]=w,f[24+y]=w,f[32+y]=w,f[40+y]=w,f[48+y]=w,f[56+y]=w)}for(C=0;C<64;++C){var D=n+C,L=f[C];L=L<=-2056/e.bitConversion?0:L>=2024/e.bitConversion?255/e.bitConversion:L+2056/e.bitConversion>>4,e.blockData[D]=L}}function v(e,r){for(var n=r.blocksPerLine,o=r.blocksPerColumn,a=new Int32Array(64),t=0;t<o;t++)for(var s=0;s<n;s++){b(r,h(r,t,s),a)}return r.blockData}function m(e){return e<=0?0:e>=255?255:0|e}class p{}return Object.setPrototypeOf(p.prototype,{load:function(e){var r=function(e){this.parse(e),this.onload&&this.onload()}.bind(this);if(e.indexOf("data:")>-1){for(var n=e.indexOf("base64,")+7,o=atob(e.substring(n)),a=new Uint8Array(o.length),t=o.length-1;t>=0;t--)a[t]=o.charCodeAt(t);r(o)}else{var s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="arraybuffer",s.onload=function(){var e=new Uint8Array(s.response);r(e)}.bind(this),s.send(null)}},parse:function(r){function o(){var e=r[c]<<8|r[c+1];return c+=2,e}function a(){var e=o(),n=r.subarray(c,c+e-2);return c+=n.length,n}function t(e){for(var r=Math.ceil(e.samplesPerLine/8/e.maxH),n=Math.ceil(e.scanLines/8/e.maxV),o=0;o<e.components.length;o++){S=e.components[o];var a=Math.ceil(Math.ceil(e.samplesPerLine/8)*S.h/e.maxH),t=Math.ceil(Math.ceil(e.scanLines/8)*S.v/e.maxV),s=r*S.h,i=64*(n*S.v)*(s+1);S.blockData=new Int16Array(i),S.blocksPerLine=a,S.blocksPerColumn=t}e.mcusPerLine=r,e.mcusPerColumn=n}var s,i,c=0,l=(r.length,null),h=null,b=[],m=[],p=[],d=o();if(65496!=d)throw"SOI not found";for(d=o();65497!=d;){var k,w;switch(d){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var C=a();65504===d&&74===C[0]&&70===C[1]&&73===C[2]&&70===C[3]&&0===C[4]&&(l={version:{major:C[5],minor:C[6]},densityUnits:C[7],xDensity:C[8]<<8|C[9],yDensity:C[10]<<8|C[11],thumbWidth:C[12],thumbHeight:C[13],thumbData:C.subarray(14,14+3*C[12]*C[13])}),65518===d&&65===C[0]&&100===C[1]&&111===C[2]&&98===C[3]&&101===C[4]&&0===C[5]&&(h={version:C[6],flags0:C[7]<<8|C[8],flags1:C[9]<<8|C[10],transformCode:C[11]});break;case 65499:for(var P=o()+c-2;c<P;){var g=r[c++],y=new Int32Array(64);if(g>>4){if(g>>4!=1)throw"DQT: invalid table spec";for(k=0;k<64;k++){y[e[k]]=o()}}else for(k=0;k<64;k++){y[e[k]]=r[c++]}b[15&g]=y}break;case 65472:case 65473:case 65474:if(s)throw"Only single frame JPEGs supported";o(),(s={}).extended=65473===d,s.progressive=65474===d,s.precision=r[c++],s.scanLines=o(),s.samplesPerLine=o(),s.components=[],s.componentIds={};var D,L=r[c++],x=0,T=0;for(J=0;J<L;J++){D=r[c];var A=r[c+1]>>4,U=15&r[c+1];x<A&&(x=A),T<U&&(T=U);var I=r[c+2];w=s.components.push({h:A,v:U,quantizationTable:b[I],quantizationTableId:I,bitConversion:255/((1<<s.precision)-1)}),s.componentIds[D]=w-1,c+=3}s.maxH=x,s.maxV=T,t(s);break;case 65476:var q=o();for(J=2;J<q;){var G=r[c++],M=new Uint8Array(16),z=0;for(k=0;k<16;k++,c++)z+=M[k]=r[c];var H=new Uint8Array(z);for(k=0;k<z;k++,c++)H[k]=r[c];J+=17+z,(G>>4?m:p)[15&G]=f(M,H)}break;case 65501:o(),i=o();break;case 65498:o();var O=r[c++],R=[];for(J=0;J<O;J++){var V=s.componentIds[r[c++]];S=s.components[V];var Y=r[c++];S.huffmanTableDC=p[Y>>4],S.huffmanTableAC=m[15&Y],R.push(S)}var j=r[c++],B=r[c++],X=r[c++],E=u(r,c,s,R,i,j,B,X>>4,15&X);c+=E;break;case 65535:255!==r[c]&&c--;break;default:if(255==r[c-3]&&r[c-2]>=192&&r[c-2]<=254){c-=3;break}throw"unknown JPEG marker "+d.toString(16)}d=o()}switch(this.width=s.samplesPerLine,this.height=s.scanLines,this.jfif=l,this.adobe=h,this.components=[],s.components.length){case 1:this.colorspace=n.Grayscale;break;case 3:this.adobe?this.colorspace=n.AdobeRGB:this.colorspace=n.RGB;break;case 4:this.colorspace=n.CYMK;break;default:this.colorspace=n.Unknown}for(var J=0;J<s.components.length;J++){var S;(S=s.components[J]).quantizationTable||null===S.quantizationTableId||(S.quantizationTable=b[S.quantizationTableId]),this.components.push({output:v(0,S),scaleX:S.h/s.maxH,scaleY:S.v/s.maxV,blocksPerLine:S.blocksPerLine,blocksPerColumn:S.blocksPerColumn,bitConversion:S.bitConversion})}},getData16:function(e,r){if(1!==this.components.length)throw"Unsupported color mode";var n,o,a,t,s,i,c=this.width/e,l=this.height/r,f=0,u=this.components.length,b=new Uint16Array(e*r*u),v=new Uint16Array((this.components[0].blocksPerLine<<3)*this.components[0].blocksPerColumn*8);for(i=0;i<u;i++){for(var m,p,d,k=(n=this.components[i]).blocksPerLine,w=n.blocksPerColumn,C=k<<3,P=0,g=0;g<w;g++)for(var y=g<<3,D=0;D<k;D++){var L=h(n,g,D),x=(f=0,D<<3);for(m=0;m<8;m++){P=(y+m)*C;for(p=0;p<8;p++)v[P+x+p]=n.output[L+f++]}}for(o=n.scaleX*c,a=n.scaleY*l,f=i,s=0;s<r;s++)for(t=0;t<e;t++)d=(0|s*a)*C+(0|t*o),b[f]=v[d],f+=u}return b},getData:function(e,r){var n,o,a,t,s,i,c,l,f,u,b,v,p,d,k,w=this.width/e,C=this.height/r,P=0,g=this.components.length,y=e*r*g,D=new Uint8Array(y),L=new Uint8Array((this.components[0].blocksPerLine<<3)*this.components[0].blocksPerColumn*8);for(i=0;i<g;i++){for(var x,T,A,U=(n=this.components[i]).blocksPerLine,I=n.blocksPerColumn,q=U<<3,G=0,M=0;M<I;M++)for(var z=M<<3,H=0;H<U;H++){var O=h(n,M,H),R=(P=0,H<<3);for(x=0;x<8;x++){G=(z+x)*q;for(T=0;T<8;T++)L[G+R+T]=n.output[O+P++]*n.bitConversion}}for(o=n.scaleX*w,a=n.scaleY*C,P=i,s=0;s<r;s++)for(t=0;t<e;t++)A=(0|s*a)*q+(0|t*o),D[P]=L[A],P+=g}switch(g){case 1:case 2:break;case 3:if(k=!0,this.adobe&&this.adobe.transformCode?k=!0:void 0!==this.colorTransform&&(k=!!this.colorTransform),k)for(i=0;i<y;i+=g)c=D[i],l=D[i+1],v=m(c-179.456+1.402*(f=D[i+2])),p=m(c+135.459-.344*l-.714*f),d=m(c-226.816+1.772*l),D[i]=v,D[i+1]=p,D[i+2]=d;break;case 4:if(!this.adobe)throw"Unsupported color mode (4 components)";if(k=!1,this.adobe&&this.adobe.transformCode?k=!0:void 0!==this.colorTransform&&(k=!!this.colorTransform),k)for(i=0;i<y;i+=g)c=D[i],l=D[i+1],u=m(434.456-c-1.402*(f=D[i+2])),b=m(119.541-c+.344*l+.714*f),c=m(481.816-c-1.772*l),D[i]=u,D[i+1]=b,D[i+2]=c;break;default:throw"Unsupported color mode"}return D}}),p}();e.exports={JpegImage:o}}}]);
2
+ //# sourceMappingURL=584.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"584.min.js","mappings":"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","sources":["webpack:///../codecs/jpeg.js"],"sourcesContent":["// jshint ignore: start\n/* eslint-disable */\n\n/*\n Copyright 2011 notmasteryet\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n// - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n// (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n// - The JFIF specification can be found in the JPEG File Interchange Format\n// (www.w3.org/Graphics/JPEG/jfif3.pdf)\n// - The Adobe Application-Specific JPEG markers in the Supporting the DCT Filters\n// in PostScript Level 2, Technical Note #5116\n// (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n\nvar ColorSpace = { Unkown: 0, Grayscale: 1, AdobeRGB: 2, RGB: 3, CYMK: 4 };\nvar JpegImage = (function jpegImage() {\n 'use strict';\n var dctZigZag = new Int32Array([\n 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36,\n 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61,\n 54, 47, 55, 62, 63,\n ]);\n\n var dctCos1 = 4017; // cos(pi/16)\n var dctSin1 = 799; // sin(pi/16)\n var dctCos3 = 3406; // cos(3*pi/16)\n var dctSin3 = 2276; // sin(3*pi/16)\n var dctCos6 = 1567; // cos(6*pi/16)\n var dctSin6 = 3784; // sin(6*pi/16)\n var dctSqrt2 = 5793; // sqrt(2)\n var dctSqrt1d2 = 2896; // sqrt(2) / 2\n\n function buildHuffmanTable(codeLengths, values) {\n var k = 0,\n code = [],\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) length--;\n code.push({ children: [], index: 0 });\n var p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n }\n\n function getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n }\n\n function decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successivePrev,\n successive\n ) {\n var precision = frame.precision;\n var samplesPerLine = frame.samplesPerLine;\n var scanLines = frame.scanLines;\n var mcusPerLine = frame.mcusPerLine;\n var progressive = frame.progressive;\n var maxH = frame.maxH,\n maxV = frame.maxV;\n\n var startOffset = offset,\n bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData == 0xff) {\n var nextByte = data[offset++];\n if (nextByte) {\n throw (\n 'unexpected marker: ' + ((bitsData << 8) | nextByte).toString(16)\n );\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n var node = tree;\n var bit;\n while ((bit = readBit()) !== null) {\n node = node[bit];\n if (typeof node === 'number') return node;\n if (typeof node !== 'object') throw 'invalid huffman sequence';\n }\n return null;\n }\n\n function receive(length) {\n var n = 0;\n while (length > 0) {\n var bit = readBit();\n if (bit === null) return;\n n = (n << 1) | bit;\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n var n = receive(length);\n if (n >= 1 << (length - 1)) return n;\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, offset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[offset] = component.pred += diff;\n var k = 1;\n while (k < 64) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) break;\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n component.blockData[offset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, offset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[offset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, offset) {\n component.blockData[offset] |= readBit() << successive;\n }\n\n var eobrun = 0;\n function decodeACFirst(component, offset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n var k = spectralStart,\n e = spectralEnd;\n while (k <= e) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n component.blockData[offset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n var successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, offset) {\n var k = spectralStart,\n e = spectralEnd,\n r = 0;\n while (k <= e) {\n var z = dctZigZag[k];\n switch (successiveACState) {\n case 0: // initial state\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) throw 'invalid ACn encoding';\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += readBit() << successive;\n } else {\n r--;\n if (r === 0) successiveACState = successiveACState == 2 ? 3 : 0;\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += readBit() << successive;\n } else {\n component.blockData[offset + z] =\n successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += readBit() << successive;\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) successiveACState = 0;\n }\n }\n\n function decodeMcu(component, decode, mcu, row, col) {\n var mcuRow = (mcu / mcusPerLine) | 0;\n var mcuCol = mcu % mcusPerLine;\n var blockRow = mcuRow * component.v + row;\n var blockCol = mcuCol * component.h + col;\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, offset);\n }\n\n function decodeBlock(component, decode, mcu) {\n var blockRow = (mcu / component.blocksPerLine) | 0;\n var blockCol = mcu % component.blocksPerLine;\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, offset);\n }\n\n var componentsLength = components.length;\n var component, i, j, k, n;\n var decodeFn;\n if (progressive) {\n if (spectralStart === 0)\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n else decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n } else {\n decodeFn = decodeBaseline;\n }\n\n var mcu = 0,\n marker;\n var mcuExpected;\n if (componentsLength == 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n if (!resetInterval) {\n resetInterval = mcuExpected;\n }\n\n var h, v;\n while (mcu < mcuExpected) {\n // reset interval stuff\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength == 1) {\n component = components[0];\n for (n = 0; n < resetInterval; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < resetInterval; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n\n // find marker\n bitsCount = 0;\n marker = (data[offset] << 8) | data[offset + 1];\n if (marker <= 0xff00) {\n throw 'marker was not found';\n }\n\n if (marker >= 0xffd0 && marker <= 0xffd7) {\n // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n }\n\n // A port of poppler's IDCT method which in turn is taken from:\n // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n // \"Practical Fast 1-D DCT Algorithms with 11 Multiplications\",\n // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n // 988-991.\n function quantizeAndInverse(component, blockBufferOffset, p) {\n var qt = component.quantizationTable;\n var v0, v1, v2, v3, v4, v5, v6, v7, t;\n var i;\n\n // dequant\n for (i = 0; i < 64; i++) {\n p[i] = component.blockData[blockBufferOffset + i] * qt[i];\n }\n\n // inverse DCT on rows\n for (i = 0; i < 8; ++i) {\n var row = 8 * i;\n\n // check for all-zero AC coefficients\n if (\n p[1 + row] === 0 &&\n p[2 + row] === 0 &&\n p[3 + row] === 0 &&\n p[4 + row] === 0 &&\n p[5 + row] === 0 &&\n p[6 + row] === 0 &&\n p[7 + row] === 0\n ) {\n t = (dctSqrt2 * p[0 + row] + 512) >> 10;\n p[0 + row] = t;\n p[1 + row] = t;\n p[2 + row] = t;\n p[3 + row] = t;\n p[4 + row] = t;\n p[5 + row] = t;\n p[6 + row] = t;\n p[7 + row] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p[0 + row] + 128) >> 8;\n v1 = (dctSqrt2 * p[4 + row] + 128) >> 8;\n v2 = p[2 + row];\n v3 = p[6 + row];\n v4 = (dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128) >> 8;\n v5 = p[3 + row] << 4;\n v6 = p[5 + row] << 4;\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0 + row] = v0 + v7;\n p[7 + row] = v0 - v7;\n p[1 + row] = v1 + v6;\n p[6 + row] = v1 - v6;\n p[2 + row] = v2 + v5;\n p[5 + row] = v2 - v5;\n p[3 + row] = v3 + v4;\n p[4 + row] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (i = 0; i < 8; ++i) {\n var col = i;\n\n // check for all-zero AC coefficients\n if (\n p[1 * 8 + col] === 0 &&\n p[2 * 8 + col] === 0 &&\n p[3 * 8 + col] === 0 &&\n p[4 * 8 + col] === 0 &&\n p[5 * 8 + col] === 0 &&\n p[6 * 8 + col] === 0 &&\n p[7 * 8 + col] === 0\n ) {\n t = (dctSqrt2 * p[i + 0] + 8192) >> 14;\n p[0 * 8 + col] = t;\n p[1 * 8 + col] = t;\n p[2 * 8 + col] = t;\n p[3 * 8 + col] = t;\n p[4 * 8 + col] = t;\n p[5 * 8 + col] = t;\n p[6 * 8 + col] = t;\n p[7 * 8 + col] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p[0 * 8 + col] + 2048) >> 12;\n v1 = (dctSqrt2 * p[4 * 8 + col] + 2048) >> 12;\n v2 = p[2 * 8 + col];\n v3 = p[6 * 8 + col];\n v4 = (dctSqrt1d2 * (p[1 * 8 + col] - p[7 * 8 + col]) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p[1 * 8 + col] + p[7 * 8 + col]) + 2048) >> 12;\n v5 = p[3 * 8 + col];\n v6 = p[5 * 8 + col];\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0 * 8 + col] = v0 + v7;\n p[7 * 8 + col] = v0 - v7;\n p[1 * 8 + col] = v1 + v6;\n p[6 * 8 + col] = v1 - v6;\n p[2 * 8 + col] = v2 + v5;\n p[5 * 8 + col] = v2 - v5;\n p[3 * 8 + col] = v3 + v4;\n p[4 * 8 + col] = v3 - v4;\n }\n\n // convert to 8-bit integers\n for (i = 0; i < 64; ++i) {\n var index = blockBufferOffset + i;\n var q = p[i];\n q =\n q <= -2056 / component.bitConversion\n ? 0\n : q >= 2024 / component.bitConversion\n ? 255 / component.bitConversion\n : (q + 2056 / component.bitConversion) >> 4;\n component.blockData[index] = q;\n }\n }\n\n function buildComponentData(frame, component) {\n var lines = [];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n var computationBuffer = new Int32Array(64);\n\n var i,\n j,\n ll = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n }\n\n function clampToUint8(a) {\n return a <= 0 ? 0 : a >= 255 ? 255 : a | 0;\n }\n\n // create a JPEG Image class\n class JpegImage {}\n\n // setting up all the prototype functions\n // javascript new version of setting up prototype functions\n Object.setPrototypeOf(JpegImage.prototype, {\n load: function load(path) {\n var handleData = function (data) {\n this.parse(data);\n if (this.onload) this.onload();\n }.bind(this);\n\n if (path.indexOf('data:') > -1) {\n var offset = path.indexOf('base64,') + 7;\n var data = atob(path.substring(offset));\n var arr = new Uint8Array(data.length);\n for (var i = data.length - 1; i >= 0; i--) {\n arr[i] = data.charCodeAt(i);\n }\n handleData(data);\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', path, true);\n xhr.responseType = 'arraybuffer';\n xhr.onload = function () {\n // TODO catch parse error\n var data = new Uint8Array(xhr.response);\n handleData(data);\n }.bind(this);\n xhr.send(null);\n }\n },\n parse: function parse(data) {\n function readUint16() {\n var value = (data[offset] << 8) | data[offset + 1];\n offset += 2;\n return value;\n }\n\n function readDataBlock() {\n var length = readUint16();\n var array = data.subarray(offset, offset + length - 2);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (var i = 0; i < frame.components.length; i++) {\n component = frame.components[i];\n var blocksPerLine = Math.ceil(\n (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n );\n var blocksPerColumn = Math.ceil(\n (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n );\n var blocksPerLineForMcu = mcusPerLine * component.h;\n var blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n var blocksBufferSize =\n 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n var offset = 0,\n length = data.length;\n var jfif = null;\n var adobe = null;\n var pixels = null;\n var frame, resetInterval;\n var quantizationTables = [];\n var huffmanTablesAC = [],\n huffmanTablesDC = [];\n var fileMarker = readUint16();\n if (fileMarker != 0xffd8) {\n // SOI (Start of Image)\n throw 'SOI not found';\n }\n\n fileMarker = readUint16();\n while (fileMarker != 0xffd9) {\n // EOI (End of image)\n var i, j, l;\n switch (fileMarker) {\n case 0xffe0: // APP0 (Application Specific)\n case 0xffe1: // APP1\n case 0xffe2: // APP2\n case 0xffe3: // APP3\n case 0xffe4: // APP4\n case 0xffe5: // APP5\n case 0xffe6: // APP6\n case 0xffe7: // APP7\n case 0xffe8: // APP8\n case 0xffe9: // APP9\n case 0xffea: // APP10\n case 0xffeb: // APP11\n case 0xffec: // APP12\n case 0xffed: // APP13\n case 0xffee: // APP14\n case 0xffef: // APP15\n case 0xfffe: // COM (Comment)\n var appData = readDataBlock();\n\n if (fileMarker === 0xffe0) {\n if (\n appData[0] === 0x4a &&\n appData[1] === 0x46 &&\n appData[2] === 0x49 &&\n appData[3] === 0x46 &&\n appData[4] === 0\n ) {\n // 'JFIF\\x00'\n jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(\n 14,\n 14 + 3 * appData[12] * appData[13]\n ),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xffee) {\n if (\n appData[0] === 0x41 &&\n appData[1] === 0x64 &&\n appData[2] === 0x6f &&\n appData[3] === 0x62 &&\n appData[4] === 0x65 &&\n appData[5] === 0\n ) {\n // 'Adobe\\x00'\n adobe = {\n version: appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n\n case 0xffdb: // DQT (Define Quantization Tables)\n var quantizationTablesLength = readUint16();\n var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n while (offset < quantizationTablesEnd) {\n var quantizationTableSpec = data[offset++];\n var tableData = new Int32Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n // 8 bit values\n for (j = 0; j < 64; j++) {\n var z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n //16 bit\n for (j = 0; j < 64; j++) {\n var zz = dctZigZag[j];\n tableData[zz] = readUint16();\n }\n } else throw 'DQT: invalid table spec';\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw 'Only single frame JPEGs supported';\n }\n readUint16(); // skip data length\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n frame.scanLines = readUint16();\n frame.samplesPerLine = readUint16();\n frame.components = [];\n frame.componentIds = {};\n var componentsCount = data[offset++],\n componentId;\n var maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n componentId = data[offset];\n var h = data[offset + 1] >> 4;\n var v = data[offset + 1] & 15;\n if (maxH < h) maxH = h;\n if (maxV < v) maxV = v;\n var qId = data[offset + 2];\n l = frame.components.push({\n h: h,\n v: v,\n quantizationTable: quantizationTables[qId],\n quantizationTableId: qId,\n bitConversion: 255 / ((1 << frame.precision) - 1),\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4: // DHT (Define Huffman Tables)\n var huffmanLength = readUint16();\n for (i = 2; i < huffmanLength; ) {\n var huffmanTableSpec = data[offset++];\n var codeLengths = new Uint8Array(16);\n var codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++)\n codeLengthSum += codeLengths[j] = data[offset];\n var huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++)\n huffmanValues[j] = data[offset];\n i += 17 + codeLengthSum;\n\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n huffmanTableSpec & 15\n ] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xffdd: // DRI (Define Restart Interval)\n readUint16(); // skip data length\n resetInterval = readUint16();\n break;\n\n case 0xffda: // SOS (Start of Scan)\n var scanLength = readUint16();\n var selectorsCount = data[offset++];\n var components = [],\n component;\n for (i = 0; i < selectorsCount; i++) {\n var componentIndex = frame.componentIds[data[offset++]];\n component = frame.components[componentIndex];\n var tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n var spectralStart = data[offset++];\n var spectralEnd = data[offset++];\n var successiveApproximation = data[offset++];\n var processed = decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successiveApproximation >> 4,\n successiveApproximation & 15\n );\n offset += processed;\n break;\n case 0xffff: // Fill bytes\n if (data[offset] !== 0xff) {\n // Avoid skipping a valid marker.\n offset--;\n }\n break;\n default:\n if (\n data[offset - 3] == 0xff &&\n data[offset - 2] >= 0xc0 &&\n data[offset - 2] <= 0xfe\n ) {\n // could be incorrect encoding -- last 0xFF byte of the previous\n // block was eaten by the encoder\n offset -= 3;\n break;\n }\n throw 'unknown JPEG marker ' + fileMarker.toString(16);\n }\n fileMarker = readUint16();\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n switch (frame.components.length) {\n case 1:\n this.colorspace = ColorSpace.Grayscale;\n break;\n case 3:\n if (this.adobe) this.colorspace = ColorSpace.AdobeRGB;\n else this.colorspace = ColorSpace.RGB;\n break;\n case 4:\n this.colorspace = ColorSpace.CYMK;\n break;\n default:\n this.colorspace = ColorSpace.Unknown;\n }\n for (var i = 0; i < frame.components.length; i++) {\n var component = frame.components[i];\n if (\n !component.quantizationTable &&\n component.quantizationTableId !== null\n )\n component.quantizationTable =\n quantizationTables[component.quantizationTableId];\n this.components.push({\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n bitConversion: component.bitConversion,\n });\n }\n },\n getData16: function getData16(width, height) {\n if (this.components.length !== 1) throw 'Unsupported color mode';\n var scaleX = this.width / width,\n scaleY = this.height / height;\n\n var component, componentScaleX, componentScaleY;\n var x, y, i;\n var offset = 0;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint16Array(dataLength);\n var componentLine;\n\n // lineData is reused for all components. Assume first component is\n // the biggest\n var lineData = new Uint16Array(\n (this.components[0].blocksPerLine << 3) *\n this.components[0].blocksPerColumn *\n 8\n );\n\n // First construct image data ...\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n\n var j,\n k,\n ll = 0;\n var lineOffset = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n var scanLine = blockRow << 3;\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var bufferOffset = getBlockBufferOffset(\n component,\n blockRow,\n blockCol\n );\n var offset = 0,\n sample = blockCol << 3;\n for (j = 0; j < 8; j++) {\n var lineOffset = (scanLine + j) * samplesPerLine;\n for (k = 0; k < 8; k++) {\n lineData[lineOffset + sample + k] =\n component.output[bufferOffset + offset++];\n }\n }\n }\n }\n\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n\n var cx, cy;\n var index;\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n cy = 0 | (y * componentScaleY);\n cx = 0 | (x * componentScaleX);\n index = cy * samplesPerLine + cx;\n data[offset] = lineData[index];\n offset += numComponents;\n }\n }\n }\n return data;\n },\n getData: function getData(width, height) {\n var scaleX = this.width / width,\n scaleY = this.height / height;\n\n var component, componentScaleX, componentScaleY;\n var x, y, i;\n var offset = 0;\n var Y, Cb, Cr, K, C, M, Ye, R, G, B;\n var colorTransform;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint8Array(dataLength);\n var componentLine;\n\n // lineData is reused for all components. Assume first component is\n // the biggest\n var lineData = new Uint8Array(\n (this.components[0].blocksPerLine << 3) *\n this.components[0].blocksPerColumn *\n 8\n );\n\n // First construct image data ...\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n\n var j,\n k,\n ll = 0;\n var lineOffset = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n var scanLine = blockRow << 3;\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var bufferOffset = getBlockBufferOffset(\n component,\n blockRow,\n blockCol\n );\n var offset = 0,\n sample = blockCol << 3;\n for (j = 0; j < 8; j++) {\n var lineOffset = (scanLine + j) * samplesPerLine;\n for (k = 0; k < 8; k++) {\n lineData[lineOffset + sample + k] =\n component.output[bufferOffset + offset++] *\n component.bitConversion;\n }\n }\n }\n }\n\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n\n var cx, cy;\n var index;\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n cy = 0 | (y * componentScaleY);\n cx = 0 | (x * componentScaleX);\n index = cy * samplesPerLine + cx;\n data[offset] = lineData[index];\n offset += numComponents;\n }\n }\n }\n\n // ... then transform colors, if necessary\n switch (numComponents) {\n case 1:\n case 2:\n break;\n // no color conversion for one or two compoenents\n\n case 3:\n // The default transform for three components is true\n colorTransform = true;\n // The adobe transform marker overrides any previous setting\n if (this.adobe && this.adobe.transformCode) colorTransform = true;\n else if (typeof this.colorTransform !== 'undefined')\n colorTransform = !!this.colorTransform;\n\n if (colorTransform) {\n for (i = 0; i < dataLength; i += numComponents) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n\n R = clampToUint8(Y - 179.456 + 1.402 * Cr);\n G = clampToUint8(Y + 135.459 - 0.344 * Cb - 0.714 * Cr);\n B = clampToUint8(Y - 226.816 + 1.772 * Cb);\n\n data[i] = R;\n data[i + 1] = G;\n data[i + 2] = B;\n }\n }\n break;\n case 4:\n if (!this.adobe) throw 'Unsupported color mode (4 components)';\n // The default transform for four components is false\n colorTransform = false;\n // The adobe transform marker overrides any previous setting\n if (this.adobe && this.adobe.transformCode) colorTransform = true;\n else if (typeof this.colorTransform !== 'undefined')\n colorTransform = !!this.colorTransform;\n\n if (colorTransform) {\n for (i = 0; i < dataLength; i += numComponents) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n\n C = clampToUint8(434.456 - Y - 1.402 * Cr);\n M = clampToUint8(119.541 - Y + 0.344 * Cb + 0.714 * Cr);\n Y = clampToUint8(481.816 - Y - 1.772 * Cb);\n\n data[i] = C;\n data[i + 1] = M;\n data[i + 2] = Y;\n // K is unchanged\n }\n }\n break;\n default:\n throw 'Unsupported color mode';\n }\n return data;\n },\n });\n\n return JpegImage\n})();\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = {\n JpegImage\n};\n"],"names":["ColorSpace","Unkown","Grayscale","AdobeRGB","RGB","CYMK","JpegImage","dctZigZag","Int32Array","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","codeLengths","values","i","j","k","code","length","push","children","index","q","p","pop","getBlockBufferOffset","component","row","col","blocksPerLine","decodeScan","data","offset","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","precision","samplesPerLine","scanLines","mcusPerLine","progressive","startOffset","maxH","maxV","bitsData","bitsCount","readBit","nextByte","toString","decodeHuffman","tree","bit","node","receive","n","receiveAndExtend","eobrun","successiveACNextValue","successiveACState","decodeMcu","decode","mcu","mcuCol","v","h","decodeBlock","decodeFn","componentsLength","t","huffmanTableDC","diff","blockData","pred","e","rs","huffmanTableAC","s","r","z","marker","mcuExpected","blocksPerColumn","mcusPerColumn","quantizeAndInverse","blockBufferOffset","v0","v1","v2","v3","v4","v5","v6","v7","qt","quantizationTable","bitConversion","buildComponentData","computationBuffer","blockRow","blockCol","clampToUint8","a","Object","setPrototypeOf","prototype","load","path","handleData","this","parse","onload","bind","indexOf","atob","substring","arr","Uint8Array","charCodeAt","xhr","XMLHttpRequest","open","responseType","response","send","readUint16","value","readDataBlock","array","subarray","prepareComponents","Math","ceil","blocksPerLineForMcu","blocksBufferSize","Int16Array","jfif","adobe","quantizationTables","huffmanTablesAC","huffmanTablesDC","fileMarker","l","appData","version","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesEnd","quantizationTableSpec","tableData","extended","componentIds","componentId","componentsCount","qId","quantizationTableId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","processed","width","height","colorspace","Unknown","output","scaleX","scaleY","getData16","componentScaleX","componentScaleY","x","y","numComponents","Uint16Array","lineData","lineOffset","scanLine","bufferOffset","sample","getData","Y","Cb","Cr","C","M","R","G","B","colorTransform","dataLength","module","exports"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("595",[],t):"object"==typeof exports?exports[595]=t():e[595]=t()}(this,(()=>(()=>{var e,t,r,n,o={625:(e,t,r)=>{"use strict";var n=r(635);const o=async function(e,t){let r=t.buffer,n=t.byteOffset;const o=t.length;return 16===e.bitsAllocated?(n%2&&(r=r.slice(n),n=0),0===e.pixelRepresentation?e.pixelData=new Uint16Array(r,n,o/2):e.pixelData=new Int16Array(r,n,o/2)):8===e.bitsAllocated||1===e.bitsAllocated?e.pixelData=t:32===e.bitsAllocated&&(n%2&&(r=r.slice(n),n=0),e.pixelData=new Float32Array(r,n,o/4)),e};const i=async function(e,t){if(16===e.bitsAllocated){let n=t.buffer,o=t.byteOffset;const i=t.length;o%2&&(n=n.slice(o),o=0),0===e.pixelRepresentation?e.pixelData=new Uint16Array(n,o,i/2):e.pixelData=new Int16Array(n,o,i/2);for(let t=0;t<e.pixelData.length;t++)e.pixelData[t]=(255&(r=e.pixelData[t]))<<8|r>>8&255}else 8===e.bitsAllocated&&(e.pixelData=t);var r;return e};const s=async function(e,t){if(8===e.bitsAllocated)return e.planarConfiguration?function(e,t){const r=t,n=e.rows*e.columns,o=new ArrayBuffer(n*e.samplesPerPixel),i=new DataView(r.buffer,r.byteOffset),s=new Int8Array(r.buffer,r.byteOffset),a=new Int8Array(o);let c=0;const l=i.getInt32(0,!0);for(let e=0;e<l;++e){c=e*n;let t=i.getInt32(4*(e+1),!0),o=i.getInt32(4*(e+2),!0);0===o&&(o=r.length);const f=n*l;for(;t<o;){const e=s[t++];if(e>=0&&e<=127)for(let r=0;r<e+1&&c<f;++r)a[c]=s[t++],c++;else if(e<=-1&&e>=-127){const r=s[t++];for(let t=0;t<1-e&&c<f;++t)a[c]=r,c++}}}return e.pixelData=new Uint8Array(o),e}(e,t):function(e,t){const r=t,n=e.rows*e.columns,o=new ArrayBuffer(n*e.samplesPerPixel),i=new DataView(r.buffer,r.byteOffset),s=new Int8Array(r.buffer,r.byteOffset),a=new Int8Array(o);let c=0;const l=i.getInt32(0,!0);for(let t=0;t<l;++t){c=t;let o=i.getInt32(4*(t+1),!0),f=i.getInt32(4*(t+2),!0);0===f&&(f=r.length);const d=n*l;for(;o<f;){const t=s[o++];if(t>=0&&t<=127)for(let r=0;r<t+1&&c<d;++r)a[c]=s[o++],c+=e.samplesPerPixel;else if(t<=-1&&t>=-127){const r=s[o++];for(let n=0;n<1-t&&c<d;++n)a[c]=r,c+=e.samplesPerPixel}}}return e.pixelData=new Uint8Array(o),e}(e,t);if(16===e.bitsAllocated)return function(e,t){const r=t,n=e.rows*e.columns,o=new ArrayBuffer(n*e.samplesPerPixel*2),i=new DataView(r.buffer,r.byteOffset),s=new Int8Array(r.buffer,r.byteOffset),a=new Int8Array(o),c=i.getInt32(0,!0);for(let e=0;e<c;++e){let t=0;const o=0===e?1:0;let c=i.getInt32(4*(e+1),!0),l=i.getInt32(4*(e+2),!0);for(0===l&&(l=r.length);c<l;){const e=s[c++];if(e>=0&&e<=127)for(let r=0;r<e+1&&t<n;++r)a[2*t+o]=s[c++],t++;else if(e<=-1&&e>=-127){const r=s[c++];for(let i=0;i<1-e&&t<n;++i)a[2*t+o]=r,t++}}}0===e.pixelRepresentation?e.pixelData=new Uint16Array(o):e.pixelData=new Int16Array(o);return e}(e,t);throw new Error("unsupported pixel format for RLE")};var a=r(851),c=r.n(a),l=r(427);const f={codec:void 0,decoder:void 0};const d=async function(e,t){await function(){if(f.codec)return Promise.resolve();const e=c()({locateFile:e=>e.endsWith(".wasm")?l.toString():e});return new Promise(((t,r)=>{e.then((e=>{f.codec=e,f.decoder=new e.JPEGDecoder,t()}),r)}))}();const r=f.decoder;r.getEncodedBuffer(e.length).set(e),r.decode();const n=r.getFrameInfo(),o=r.getDecodedBuffer(),i={columns:n.width,rows:n.height,bitsPerPixel:n.bitsPerSample,signed:t.signed,bytesPerPixel:t.bytesPerPixel,componentsPerPixel:n.componentCount},s=function(e,t){if(e.isSigned)return new Int8Array(t.buffer,t.byteOffset,t.byteLength);return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}(n,o),a={frameInfo:n};return{...t,pixelData:s,imageInfo:i,encodeOptions:a,...a,...i}},u={JpegImage:void 0,decodeConfig:{}};const g=async function(e,t){var n;if(await(u.decodeConfig=n,u.JpegImage?Promise.resolve():new Promise(((e,t)=>{r.e(584).then(r.t.bind(r,584,23)).then((({JpegImage:t})=>{u.JpegImage=t,e()}),t)}))),void 0===u.JpegImage)throw new Error("No JPEG Baseline decoder loaded");const o=new u.JpegImage;return o.parse(t),o.colorTransform=!1,8===e.bitsAllocated?(e.pixelData=o.getData(e.columns,e.rows),e):16===e.bitsAllocated?(e.pixelData=o.getData16(e.columns,e.rows),e):void 0},p={jpeg:void 0,decodeConfig:{}};const b=async function(e,t){var n;if(await(p.decodeConfig=n,p.jpeg?Promise.resolve():new Promise(((e,t)=>{r.e(610).then(r.t.bind(r,610,23)).then((t=>{p.jpeg=t,e()}),t)}))),void 0===p.jpeg||void 0===p.jpeg.lossless||void 0===p.jpeg.lossless.Decoder)throw new Error("No JPEG Lossless decoder loaded");const o=e.bitsAllocated<=8?1:2,i=t.buffer,s=(new p.jpeg.lossless.Decoder).decode(i,t.byteOffset,t.length,o);return 0===e.pixelRepresentation?16===e.bitsAllocated?(e.pixelData=new Uint16Array(s.buffer),e):(e.pixelData=new Uint8Array(s.buffer),e):(e.pixelData=new Int16Array(s.buffer),e)};var y=r(37),m=r.n(y),h=r(69);const w={codec:void 0,decoder:void 0,decodeConfig:{}};const x=async function(e,t){try{await function(e){if(w.decodeConfig=e,w.codec)return Promise.resolve();const t=m()({locateFile:e=>e.endsWith(".wasm")?h.toString():e});return new Promise(((e,r)=>{t.then((t=>{w.codec=t,w.decoder=new t.JpegLSDecoder,e()}),r)}))}();const r=w.decoder;r.getEncodedBuffer(e.length).set(e),r.decode();const n=r.getFrameInfo(),o=r.getInterleaveMode(),i=r.getNearLossless(),s=r.getDecodedBuffer(),a={columns:n.width,rows:n.height,bitsPerPixel:n.bitsPerSample,signed:t.signed,bytesPerPixel:t.bytesPerPixel,componentsPerPixel:n.componentCount},c=function(e,t,r){if(e.bitsPerSample>8)return r?new Int16Array(t.buffer,t.byteOffset,t.byteLength/2):new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2);if(r)return new Int8Array(t.buffer,t.byteOffset,t.byteLength);return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}(n,s,t.signed),l={nearLossless:i,interleaveMode:o,frameInfo:n};return{...t,pixelData:c,imageInfo:a,encodeOptions:l,...l,...a}}catch(e){throw"number"==typeof(r=e)?w.codec.getExceptionMessage(r):r}var r};var P=r(272),v=r.n(P),A=r(699);const I={codec:void 0,decoder:void 0,decodeConfig:{}};const D=async function(e,t){await function(e){if(I.decodeConfig=e,I.codec)return Promise.resolve();const t=v()({locateFile:e=>e.endsWith(".wasm")?A.toString():e});return new Promise(((e,r)=>{t.then((t=>{I.codec=t,I.decoder=new t.J2KDecoder,e()}),r)}))}();const r=I.decoder,n=r.getEncodedBuffer(e.length);n.set(e),r.decode();const o=r.getFrameInfo(),i=r.getDecodedBuffer();new Uint8Array(i.length).set(i);const s=`x: ${r.getImageOffset().x}, y: ${r.getImageOffset().y}`,a=r.getNumDecompositions(),c=r.getNumLayers(),l=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][r.getProgressionOrder()+1],f=r.getIsReversible(),d=`${r.getBlockDimensions().width} x ${r.getBlockDimensions().height}`,u=`${r.getTileSize().width} x ${r.getTileSize().height}`,g=`${r.getTileOffset().x}, ${r.getTileOffset().y}`,p=r.getColorSpace(),b=`${i.length.toLocaleString()} bytes`,y=`${(i.length/n.length).toFixed(2)}:1`,m={columns:o.width,rows:o.height,bitsPerPixel:o.bitsPerSample,signed:o.isSigned,bytesPerPixel:t.bytesPerPixel,componentsPerPixel:o.componentCount},h=function(e,t){if(e.bitsPerSample>8)return e.isSigned?new Int16Array(t.buffer,t.byteOffset,t.byteLength/2):new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2);if(e.isSigned)return new Int8Array(t.buffer,t.byteOffset,t.byteLength);return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}(o,i),w={imageOffset:s,numDecompositions:a,numLayers:c,progessionOrder:l,reversible:f,blockDimensions:d,tileSize:u,tileOffset:g,colorTransform:p,decodedSize:b,compressionRatio:y};return{...t,pixelData:h,imageInfo:m,encodeOptions:w,...w,...m}};var O=r(430),S=r.n(O),L=r(813);const R={codec:void 0,decoder:void 0,decodeConfig:{}};const B=async function(e,t){await function(e){if(R.decodeConfig=e,R.codec)return Promise.resolve();const t=S()({locateFile:e=>e.endsWith(".wasm")?L:e});return new Promise(((e,r)=>{t.then((t=>{R.codec=t,R.decoder=new t.HTJ2KDecoder,e()}),r)}))}();const r=new R.codec.HTJ2KDecoder,n=r.getEncodedBuffer(e.length);n.set(e);const o=t.decodeLevel||0;r.decodeSubResolution(o);const i=r.getFrameInfo();if(t.decodeLevel>0){const{width:e,height:r}=function(e,t,r){const n={width:t,height:r};for(;e>0;)n.width=Math.ceil(n.width/2),n.height=Math.ceil(n.height/2),e--;return n}(t.decodeLevel,i.width,i.height);i.width=e,i.height=r}const s=r.getDecodedBuffer();new Uint8Array(s.length).set(s);const a=`x: ${r.getImageOffset().x}, y: ${r.getImageOffset().y}`,c=r.getNumDecompositions(),l=r.getNumLayers(),f=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][r.getProgressionOrder()+1],d=r.getIsReversible(),u=`${r.getBlockDimensions().width} x ${r.getBlockDimensions().height}`,g=`${r.getTileSize().width} x ${r.getTileSize().height}`,p=`${r.getTileOffset().x}, ${r.getTileOffset().y}`,b=`${s.length.toLocaleString()} bytes`,y=`${(s.length/n.length).toFixed(2)}:1`,m={columns:i.width,rows:i.height,bitsPerPixel:i.bitsPerSample,signed:i.isSigned,bytesPerPixel:t.bytesPerPixel,componentsPerPixel:i.componentCount};let h=function(e,t){if(e.bitsPerSample>8)return e.isSigned?new Int16Array(t.buffer,t.byteOffset,t.byteLength/2):new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2);if(e.isSigned)return new Int8Array(t.buffer,t.byteOffset,t.byteLength);return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}(i,s);const{buffer:w,byteOffset:x,byteLength:P}=h,v=w.slice(x,x+P);h=new h.constructor(v);const A={imageOffset:a,numDecompositions:c,numLayers:l,progessionOrder:f,reversible:d,blockDimensions:u,tileSize:g,tileOffset:p,decodedSize:b,compressionRatio:y};return{...t,pixelData:h,imageInfo:m,encodeOptions:A,...A,...m}};const C=function(e){let t,r=e[0],n=e[0];const o=e.length;for(let i=1;i<o;i++)t=e[i],r=Math.min(r,t),n=Math.max(n,t);return{min:r,max:n}};const T={bilinear:function(e,t){const{rows:r,columns:n,data:o}=e,{rows:i,columns:s,data:a}=t,c=[],l=[],f=[];for(let e=0;e<s;e++){const t=e*(n-1)/(s-1);c[e]=Math.floor(t),l[e]=Math.min(c[e]+1,n-1),f[e]=t-c[e]}for(let e=0;e<i;e++){const t=e*(r-1)/(i-1),d=Math.floor(t)*n,u=Math.min(d+n,(r-1)*n),g=t-Math.floor(t),p=1-g,b=e*s;for(let e=0;e<s;e++){const t=o[d+c[e]],r=o[d+l[e]],n=o[u+c[e]],i=o[u+l[e]],s=1-f[e];a[b+e]=(t*s+r*f[e])*p+(n*s+i*f[e])*g}}return a},replicate:function(e,t){const{rows:r,columns:n,pixelData:o,samplesPerPixel:i=1}=e,{rows:s,columns:a,pixelData:c}=t,l=[];for(let e=0;e<a;e++){const t=e*(n-1)/(a-1);l[e]=Math.floor(t)*i}for(let e=0;e<s;e++){const t=e*(r-1)/(s-1),f=Math.floor(t)*n*i,d=e*a;for(let e=0;e<a;e++)for(let t=0;t<i;t++)c[d+e+t]=o[f+l[e]+t]}return c}};async function j(e,t,r,n,a,c){const l=(new Date).getTime();let f,u=null;switch(t){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":case"1.2.840.10008.1.2.1.99":u=o(e,r);break;case"1.2.840.10008.1.2.2":u=i(e,r);break;case"1.2.840.10008.1.2.5":u=s(e,r);break;case"1.2.840.10008.1.2.4.50":f={...e},u=d(r,f);break;case"1.2.840.10008.1.2.4.51":u=g(e,r);break;case"1.2.840.10008.1.2.4.57":case"1.2.840.10008.1.2.4.70":u=b(e,r);break;case"1.2.840.10008.1.2.4.80":case"1.2.840.10008.1.2.4.81":f={signed:1===e.pixelRepresentation,bytesPerPixel:e.bitsAllocated<=8?1:2,...e},u=x(r,f);break;case"1.2.840.10008.1.2.4.90":case"1.2.840.10008.1.2.4.91":f={...e},u=D(r,f);break;case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":f={...e},u=B(r,f);break;default:throw new Error(`no decoder for transfer syntax ${t}`)}if(!u)throw new Error("decodePromise not defined");const p=function(e,t,r,n){const{use16BitDataType:o}=n||{},i=void 0!==e.pixelRepresentation&&1===e.pixelRepresentation,s=i&&void 0!==e.bitsStored?32-e.bitsStored:void 0;if(i&&void 0!==s)for(let t=0;t<e.pixelData.length;t++)e.pixelData[t]=e.pixelData[t]<<s>>s;let a=e.pixelData;e.pixelDataLength=e.pixelData.length;const{min:c,max:l}=C(e.pixelData),f={Uint8Array,Uint16Array:o?Uint16Array:void 0,Int16Array:o?Int16Array:void 0,Float32Array},d=t.targetBuffer?.type,u=void 0===t.allowFloatRendering||t.allowFloatRendering,g=!(m=e.photometricInterpretation,"RGB"!==m&&"PALETTE COLOR"!==m&&"YBR_FULL"!==m&&"YBR_FULL_422"!==m&&"YBR_PARTIAL_422"!==m&&"YBR_PARTIAL_420"!==m&&"YBR_RCT"!==m&&"YBR_ICT"!==m||void 0!==t.targetBuffer?.offset),p=t.preScale?.enabled,b=p&&Object.values(t.preScale.scalingParameters).some((e=>"number"==typeof e&&!Number.isInteger(e))),y=!t.preScale.enabled||!u&&b;var m;a=d&&!g?function(e,t,r,n){const{arrayBuffer:o,type:i,offset:s=0,length:a,rows:c}=e.targetBuffer,l=r[i];if(!l)throw new Error(`target array ${i} is not supported, you need to set use16BitDataType to true if you want to use Uint16Array or Int16Array.`);c&&c!=t.rows&&function(e,t,r){const n=function(e,t,r){const{samplesPerPixel:n}=e,{rows:o,columns:i}=t,s=o*i*n,a=new r(s),c=a.byteLength/s;return{pixelData:a,rows:o,columns:i,frameInfo:{...e.frameInfo,rows:o,columns:i},imageInfo:{...e.imageInfo,rows:o,columns:i,bytesPerPixel:c}}}(e,t,r),{scalingType:o="replicate"}=t;T[o](e,n),Object.assign(e,n)}(t,e.targetBuffer,l);const f=t.pixelDataLength,d=s,u=null!=a?a:f-d,g=t.pixelData;if(u!==g.length)throw new Error(`target array for image does not have the same length (${u}) as the decoded image length (${g.length}).`);const p=o?new l(o,d,u):new l(u);return p.set(g,0),n=p,n}(t,e,f,a):t.preScale.enabled&&!y?function(e,t,r,n){const o=e.preScale.scalingParameters;k(o);const{rescaleSlope:i,rescaleIntercept:s}=o;let a=t,c=r;"number"==typeof i&&"number"==typeof s&&(a=i*t+s,c=i*r+s);return $(a,c,n)}(t,c,l,e):$(c,l,e);let h=c,w=l;if(t.preScale.enabled&&!y){const r=t.preScale.scalingParameters;k(r);const{rescaleSlope:n,rescaleIntercept:o}=r;if("number"==typeof n&&"number"==typeof o){!function(e,t){const r=e.length,{rescaleSlope:n,rescaleIntercept:o,suvbw:i}=t;if("PT"===t.modality&&"number"==typeof i)for(let t=0;t<r;t++)e[t]=i*(e[t]*n+o);else for(let t=0;t<r;t++)e[t]=e[t]*n+o}(a,r),e.preScale={...t.preScale,scaled:!0};const{rescaleIntercept:n,rescaleSlope:o,suvbw:i}=r;h=o*c+n,w=o*l+n,i&&(h*=i,w*=i)}}else y&&(e.preScale={enabled:!0,scaled:!1},h=c,w=l);const x=void 0!==t.targetBuffer;x&&t.isSharedArrayBuffer||(e.pixelData=a);e.minAfterScale=h,e.maxAfterScale=w;const P=(new Date).getTime();return e.decodeTimeInMS=P-r,e}(await u,a,l,n);return c?.(p),p}function $(e,t,r){const n=function(e,t){let r;return Number.isInteger(e)&&Number.isInteger(t)&&(e>=0?t<=255?r=Uint8Array:t<=65535&&(r=Uint16Array):e>=-128&&t<=127?r=Int8Array:e>=-32768&&t<=32767&&(r=Int16Array)),r||Float32Array}(e,t),o=new n(r.pixelData.length);return o.set(r.pixelData,0),o}function k(e){if(!e)throw new Error("options.preScale.scalingParameters must be defined if preScale.enabled is true, and scalingParameters cannot be derived from the metadata providers.")}const U={decodeTask:({imageFrame:e,transferSyntax:t,decodeConfig:r,options:n,pixelData:o,callbackFn:i})=>j(e,t,o,r,n,i)};(0,n.Jj)(U)},716:()=>{},401:()=>{},491:()=>{},33:()=>{},261:()=>{},926:()=>{},280:()=>{},103:()=>{}},i={};function s(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={exports:{}};return o[e].call(r.exports,r,r.exports,s),r.exports}return s.m=o,s.x=()=>{var e=s.O(void 0,[958],(()=>s(625)));return e=s.O(e)},e=[],s.O=(t,r,n,o)=>{if(!r){var i=1/0;for(f=0;f<e.length;f++){for(var[r,n,o]=e[f],a=!0,c=0;c<r.length;c++)(!1&o||i>=o)&&Object.keys(s.O).every((e=>s.O[e](r[c])))?r.splice(c--,1):(a=!1,o<i&&(i=o));if(a){e.splice(f--,1);var l=n();void 0!==l&&(t=l)}}return t}o=o||0;for(var f=e.length;f>0&&e[f-1][2]>o;f--)e[f]=e[f-1];e[f]=[r,n,o]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,s.t=function(e,n){if(1&n&&(e=this(e)),8&n)return e;if("object"==typeof e&&e){if(4&n&&e.__esModule)return e;if(16&n&&"function"==typeof e.then)return e}var o=Object.create(null);s.r(o);var i={};t=t||[null,r({}),r([]),r(r)];for(var a=2&n&&e;"object"==typeof a&&!~t.indexOf(a);a=r(a))Object.getOwnPropertyNames(a).forEach((t=>i[t]=()=>e[t]));return i.default=()=>e,s.d(o,i),o},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce(((t,r)=>(s.f[r](e,t),t)),[])),s.u=e=>e+".min.js",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;s.g.importScripts&&(e=s.g.location+"");var t=s.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=e})(),(()=>{var e={595:1};s.f.i=(t,r)=>{e[t]||importScripts(s.p+s.u(t))};var t=this.webpackChunk=this.webpackChunk||[],r=t.push.bind(t);t.push=t=>{var[n,o,i]=t;for(var a in o)s.o(o,a)&&(s.m[a]=o[a]);for(i&&i(s);n.length;)e[n.pop()]=1;r(t)}})(),n=s.x,s.x=()=>s.e(958).then(n),s.x()})()));
2
+ //# sourceMappingURL=595.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"595.min.js","mappings":"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","sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/startup chunk dependencies","webpack:///./shared/decoders/decodeLittleEndian.ts","webpack:///./shared/decoders/decodeBigEndian.ts","webpack:///./shared/decoders/decodeRLE.ts","webpack:///./shared/decoders/decodeJPEGBaseline8Bit.ts","webpack:///./shared/decoders/decodeJPEGBaseline12Bit-js.ts","webpack:///./shared/decoders/decodeJPEGLossless.ts","webpack:///./shared/decoders/decodeJPEGLS.ts","webpack:///./shared/decoders/decodeJPEG2000.ts","webpack:///./shared/decoders/decodeHTJ2K.ts","webpack:///./shared/getMinMax.ts","webpack:///./shared/decodeImageFrame.js","webpack:///./shared/scaling/bilinear.ts","webpack:///./shared/scaling/replicate.ts","webpack:///./shared/isColorImage.ts","webpack:///./shared/scaling/scaleArray.ts","webpack:///./shared/getPixelDataTypeFromMinMax.ts","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/importScripts chunk loading","webpack:///webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"595\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"595\"] = factory();\n\telse\n\t\troot[\"595\"] = factory();\n})(this, () => {\nreturn ","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var next = __webpack_require__.x;\n__webpack_require__.x = () => {\n\treturn __webpack_require__.e(958).then(next);\n};","import { ByteArray } from 'dicom-parser';\nimport { ImageFrame } from '../../types';\n\nasync function decodeLittleEndian(\n imageFrame: ImageFrame,\n pixelData: ByteArray\n): Promise<ImageFrame> {\n let arrayBuffer = pixelData.buffer;\n\n let offset = pixelData.byteOffset;\n const length = pixelData.length;\n\n if (imageFrame.bitsAllocated === 16) {\n // if pixel data is not aligned on even boundary, shift it so we can create the 16 bit array\n // buffers on it\n if (offset % 2) {\n arrayBuffer = arrayBuffer.slice(offset);\n offset = 0;\n }\n\n if (imageFrame.pixelRepresentation === 0) {\n imageFrame.pixelData = new Uint16Array(arrayBuffer, offset, length / 2);\n } else {\n imageFrame.pixelData = new Int16Array(arrayBuffer, offset, length / 2);\n }\n } else if (imageFrame.bitsAllocated === 8 || imageFrame.bitsAllocated === 1) {\n imageFrame.pixelData = pixelData;\n } else if (imageFrame.bitsAllocated === 32) {\n // if pixel data is not aligned on even boundary, shift it\n if (offset % 2) {\n arrayBuffer = arrayBuffer.slice(offset);\n offset = 0;\n }\n\n imageFrame.pixelData = new Float32Array(arrayBuffer, offset, length / 4);\n }\n\n return imageFrame;\n}\n\nexport default decodeLittleEndian;\n","import { ByteArray } from 'dicom-parser';\nimport { ImageFrame } from '../../types';\n\n/* eslint no-bitwise: 0 */\nfunction swap16(val) {\n return ((val & 0xff) << 8) | ((val >> 8) & 0xff);\n}\n\nasync function decodeBigEndian(\n imageFrame: ImageFrame,\n pixelData: ByteArray\n): Promise<ImageFrame> {\n if (imageFrame.bitsAllocated === 16) {\n let arrayBuffer = pixelData.buffer;\n\n let offset = pixelData.byteOffset;\n const length = pixelData.length;\n // if pixel data is not aligned on even boundary, shift it so we can create the 16 bit array\n // buffers on it\n\n if (offset % 2) {\n arrayBuffer = arrayBuffer.slice(offset);\n offset = 0;\n }\n\n if (imageFrame.pixelRepresentation === 0) {\n imageFrame.pixelData = new Uint16Array(arrayBuffer, offset, length / 2);\n } else {\n imageFrame.pixelData = new Int16Array(arrayBuffer, offset, length / 2);\n }\n // Do the byte swap\n for (let i = 0; i < imageFrame.pixelData.length; i++) {\n imageFrame.pixelData[i] = swap16(imageFrame.pixelData[i]);\n }\n } else if (imageFrame.bitsAllocated === 8) {\n imageFrame.pixelData = pixelData;\n }\n\n return imageFrame;\n}\n\nexport default decodeBigEndian;\n","import { ByteArray } from 'dicom-parser';\nimport { ImageFrame } from '../../types';\n\nasync function decodeRLE(\n imageFrame: ImageFrame,\n pixelData: ByteArray\n): Promise<ImageFrame> {\n if (imageFrame.bitsAllocated === 8) {\n if (imageFrame.planarConfiguration) {\n return decode8Planar(imageFrame, pixelData);\n }\n\n return decode8(imageFrame, pixelData);\n } else if (imageFrame.bitsAllocated === 16) {\n return decode16(imageFrame, pixelData);\n }\n\n throw new Error('unsupported pixel format for RLE');\n}\n\nfunction decode8(imageFrame: ImageFrame, pixelData: ByteArray) {\n const frameData = pixelData;\n const frameSize = imageFrame.rows * imageFrame.columns;\n const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel);\n const header = new DataView(frameData.buffer, frameData.byteOffset);\n const data = new Int8Array(frameData.buffer, frameData.byteOffset);\n const out = new Int8Array(outFrame);\n\n let outIndex = 0;\n const numSegments = header.getInt32(0, true);\n\n for (let s = 0; s < numSegments; ++s) {\n outIndex = s;\n\n let inIndex = header.getInt32((s + 1) * 4, true);\n\n let maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n const endOfSegment = frameSize * numSegments;\n\n while (inIndex < maxIndex) {\n const n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n // copy n bytes\n for (let i = 0; i < n + 1 && outIndex < endOfSegment; ++i) {\n out[outIndex] = data[inIndex++];\n outIndex += imageFrame.samplesPerPixel;\n }\n } else if (n <= -1 && n >= -127) {\n const value = data[inIndex++];\n // run of n bytes\n\n for (let j = 0; j < -n + 1 && outIndex < endOfSegment; ++j) {\n out[outIndex] = value;\n outIndex += imageFrame.samplesPerPixel;\n }\n } /* else if (n === -128) {\n\n } // do nothing */\n }\n }\n imageFrame.pixelData = new Uint8Array(outFrame);\n\n return imageFrame;\n}\n\nfunction decode8Planar(imageFrame: ImageFrame, pixelData: ByteArray) {\n const frameData = pixelData;\n const frameSize = imageFrame.rows * imageFrame.columns;\n const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel);\n const header = new DataView(frameData.buffer, frameData.byteOffset);\n const data = new Int8Array(frameData.buffer, frameData.byteOffset);\n const out = new Int8Array(outFrame);\n\n let outIndex = 0;\n const numSegments = header.getInt32(0, true);\n\n for (let s = 0; s < numSegments; ++s) {\n outIndex = s * frameSize;\n\n let inIndex = header.getInt32((s + 1) * 4, true);\n\n let maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n const endOfSegment = frameSize * numSegments;\n\n while (inIndex < maxIndex) {\n const n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n // copy n bytes\n for (let i = 0; i < n + 1 && outIndex < endOfSegment; ++i) {\n out[outIndex] = data[inIndex++];\n outIndex++;\n }\n } else if (n <= -1 && n >= -127) {\n const value = data[inIndex++];\n // run of n bytes\n\n for (let j = 0; j < -n + 1 && outIndex < endOfSegment; ++j) {\n out[outIndex] = value;\n outIndex++;\n }\n } /* else if (n === -128) {\n\n } // do nothing */\n }\n }\n imageFrame.pixelData = new Uint8Array(outFrame);\n\n return imageFrame;\n}\n\nfunction decode16(imageFrame: ImageFrame, pixelData: ByteArray) {\n const frameData = pixelData;\n const frameSize = imageFrame.rows * imageFrame.columns;\n const outFrame = new ArrayBuffer(frameSize * imageFrame.samplesPerPixel * 2);\n\n const header = new DataView(frameData.buffer, frameData.byteOffset);\n const data = new Int8Array(frameData.buffer, frameData.byteOffset);\n const out = new Int8Array(outFrame);\n\n const numSegments = header.getInt32(0, true);\n\n for (let s = 0; s < numSegments; ++s) {\n let outIndex = 0;\n const highByte = s === 0 ? 1 : 0;\n\n let inIndex = header.getInt32((s + 1) * 4, true);\n\n let maxIndex = header.getInt32((s + 2) * 4, true);\n\n if (maxIndex === 0) {\n maxIndex = frameData.length;\n }\n\n while (inIndex < maxIndex) {\n const n = data[inIndex++];\n\n if (n >= 0 && n <= 127) {\n for (let i = 0; i < n + 1 && outIndex < frameSize; ++i) {\n out[outIndex * 2 + highByte] = data[inIndex++];\n outIndex++;\n }\n } else if (n <= -1 && n >= -127) {\n const value = data[inIndex++];\n\n for (let j = 0; j < -n + 1 && outIndex < frameSize; ++j) {\n out[outIndex * 2 + highByte] = value;\n outIndex++;\n }\n } /* else if (n === -128) {\n\n } // do nothing */\n }\n }\n if (imageFrame.pixelRepresentation === 0) {\n imageFrame.pixelData = new Uint16Array(outFrame);\n } else {\n imageFrame.pixelData = new Int16Array(outFrame);\n }\n\n return imageFrame;\n}\n\nexport default decodeRLE;\n","import type {\n LibJpegTurbo8Bit,\n OpenJpegModule,\n} from '@cornerstonejs/codec-libjpeg-turbo-8bit/dist/libjpegturbowasm_decode';\nimport { ByteArray } from 'dicom-parser';\n// @ts-ignore\nimport libjpegTurboFactory from '@cornerstonejs/codec-libjpeg-turbo-8bit/decodewasmjs';\n\n// @ts-ignore\nimport libjpegTurboWasm from '@cornerstonejs/codec-libjpeg-turbo-8bit/decodewasm';\n\nimport { ImageFrame } from '../../types';\n\nconst local: {\n codec: OpenJpegModule;\n decoder: LibJpegTurbo8Bit;\n} = {\n codec: undefined,\n decoder: undefined,\n};\n\nfunction initLibjpegTurbo(): Promise<void> {\n if (local.codec) {\n return Promise.resolve();\n }\n\n const libjpegTurboModule = libjpegTurboFactory({\n locateFile: (f) => {\n if (f.endsWith('.wasm')) {\n return libjpegTurboWasm.toString();\n }\n\n return f;\n },\n });\n\n return new Promise((resolve, reject) => {\n libjpegTurboModule.then((instance) => {\n local.codec = instance;\n local.decoder = new instance.JPEGDecoder();\n resolve();\n }, reject);\n });\n}\n\n// imageFrame.pixelRepresentation === 1 <-- Signed\n/**\n *\n * @param {*} compressedImageFrame\n * @param {object} imageInfo\n * @param {boolean} imageInfo.signed -\n */\nasync function decodeAsync(\n compressedImageFrame,\n imageInfo\n): Promise<ImageFrame> {\n await initLibjpegTurbo();\n const decoder = local.decoder;\n\n // get pointer to the source/encoded bit stream buffer in WASM memory\n // that can hold the encoded bitstream\n const encodedBufferInWASM = decoder.getEncodedBuffer(\n compressedImageFrame.length\n );\n\n // copy the encoded bitstream into WASM memory buffer\n encodedBufferInWASM.set(compressedImageFrame);\n\n // decode it\n decoder.decode();\n\n // get information about the decoded image\n const frameInfo = decoder.getFrameInfo();\n\n // get the decoded pixels\n const decodedPixelsInWASM = decoder.getDecodedBuffer();\n\n const encodedImageInfo = {\n columns: frameInfo.width,\n rows: frameInfo.height,\n bitsPerPixel: frameInfo.bitsPerSample,\n signed: imageInfo.signed,\n bytesPerPixel: imageInfo.bytesPerPixel,\n componentsPerPixel: frameInfo.componentCount,\n };\n\n const pixelData = getPixelData(frameInfo, decodedPixelsInWASM);\n\n const encodeOptions = {\n frameInfo,\n };\n\n return {\n ...imageInfo,\n pixelData,\n imageInfo: encodedImageInfo,\n encodeOptions,\n ...encodeOptions,\n ...encodedImageInfo,\n };\n}\n\nfunction getPixelData(frameInfo, decodedBuffer: ByteArray) {\n if (frameInfo.isSigned) {\n return new Int8Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength\n );\n }\n\n return new Uint8Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength\n );\n}\n\nexport default decodeAsync;\n","import { ByteArray } from 'dicom-parser';\nimport { ImageFrame, WebWorkerDecodeConfig } from '../../types';\n\nconst local = {\n JpegImage: undefined,\n decodeConfig: {} as WebWorkerDecodeConfig,\n};\n\nexport function initialize(\n decodeConfig?: WebWorkerDecodeConfig\n): Promise<void> {\n local.decodeConfig = decodeConfig;\n\n if (local.JpegImage) {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n // @ts-ignore\n import('../../../codecs/jpeg').then(({ JpegImage }) => {\n local.JpegImage = JpegImage;\n resolve();\n }, reject);\n });\n}\n\nasync function decodeJPEGBaseline12BitAsync(\n imageFrame: ImageFrame,\n pixelData: ByteArray\n): Promise<ImageFrame> {\n // check to make sure codec is loaded\n await initialize();\n if (typeof local.JpegImage === 'undefined') {\n throw new Error('No JPEG Baseline decoder loaded');\n }\n const jpeg = new local.JpegImage();\n\n jpeg.parse(pixelData);\n\n // Do not use the internal jpeg.js color transformation,\n // since we will handle this afterwards\n jpeg.colorTransform = false;\n\n if (imageFrame.bitsAllocated === 8) {\n imageFrame.pixelData = jpeg.getData(imageFrame.columns, imageFrame.rows);\n\n return imageFrame;\n } else if (imageFrame.bitsAllocated === 16) {\n imageFrame.pixelData = jpeg.getData16(imageFrame.columns, imageFrame.rows);\n\n return imageFrame;\n }\n}\n\nexport default decodeJPEGBaseline12BitAsync;\n","import { ByteArray } from 'dicom-parser';\nimport { ImageFrame, WebWorkerDecodeConfig } from '../../types';\n\nconst local = {\n jpeg: undefined,\n decodeConfig: {} as WebWorkerDecodeConfig,\n};\n\nexport function initialize(\n decodeConfig?: WebWorkerDecodeConfig\n): Promise<void> {\n local.decodeConfig = decodeConfig;\n\n if (local.jpeg) {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n import('../../../codecs/jpegLossless').then((jpeg) => {\n local.jpeg = jpeg;\n resolve();\n }, reject);\n });\n}\n\nasync function decodeJPEGLossless(\n imageFrame: ImageFrame,\n pixelData: ByteArray\n): Promise<ImageFrame> {\n await initialize();\n\n // check to make sure codec is loaded\n if (\n typeof local.jpeg === 'undefined' ||\n typeof local.jpeg.lossless === 'undefined' ||\n typeof local.jpeg.lossless.Decoder === 'undefined'\n ) {\n throw new Error('No JPEG Lossless decoder loaded');\n }\n\n const byteOutput = imageFrame.bitsAllocated <= 8 ? 1 : 2;\n // console.time('jpeglossless');\n const buffer = pixelData.buffer;\n const decoder = new local.jpeg.lossless.Decoder();\n const decompressedData = decoder.decode(\n buffer,\n pixelData.byteOffset,\n pixelData.length,\n byteOutput\n );\n // console.timeEnd('jpeglossless');\n\n if (imageFrame.pixelRepresentation === 0) {\n if (imageFrame.bitsAllocated === 16) {\n imageFrame.pixelData = new Uint16Array(decompressedData.buffer);\n\n return imageFrame;\n }\n // untested!\n imageFrame.pixelData = new Uint8Array(decompressedData.buffer);\n\n return imageFrame;\n }\n imageFrame.pixelData = new Int16Array(decompressedData.buffer);\n\n return imageFrame;\n}\n\nexport default decodeJPEGLossless;\n","import type {\n CharlsModule,\n JpegLSDecoder,\n} from '@cornerstonejs/codec-charls/dist/charlswasm_decode';\n// @ts-ignore\nimport charlsFactory from '@cornerstonejs/codec-charls/decodewasmjs';\n// @ts-ignore\nimport charlsWasm from '@cornerstonejs/codec-charls/decodewasm';\n\nimport { ByteArray } from 'dicom-parser';\nimport { ImageFrame, WebWorkerDecodeConfig } from '../../types';\n\nconst local: {\n codec: CharlsModule;\n decoder: JpegLSDecoder;\n decodeConfig: WebWorkerDecodeConfig;\n} = {\n codec: undefined,\n decoder: undefined,\n decodeConfig: {} as WebWorkerDecodeConfig,\n};\n\nfunction getExceptionMessage(exception) {\n return typeof exception === 'number'\n ? local.codec.getExceptionMessage(exception)\n : exception;\n}\n\nexport function initialize(\n decodeConfig?: WebWorkerDecodeConfig\n): Promise<void> {\n local.decodeConfig = decodeConfig;\n\n if (local.codec) {\n return Promise.resolve();\n }\n\n const charlsModule = charlsFactory({\n locateFile: (f) => {\n if (f.endsWith('.wasm')) {\n return charlsWasm.toString();\n }\n\n return f;\n },\n });\n\n return new Promise((resolve, reject) => {\n charlsModule.then((instance) => {\n local.codec = instance;\n local.decoder = new instance.JpegLSDecoder();\n resolve();\n }, reject);\n });\n}\n\n/**\n *\n * @param {*} compressedImageFrame\n * @param {object} imageInfo\n * @param {boolean} imageInfo.signed - (pixelRepresentation === 1)\n */\nasync function decodeAsync(\n compressedImageFrame,\n imageInfo\n): Promise<ImageFrame> {\n try {\n await initialize();\n const decoder = local.decoder;\n\n // get pointer to the source/encoded bit stream buffer in WASM memory\n // that can hold the encoded bitstream\n const encodedBufferInWASM = decoder.getEncodedBuffer(\n compressedImageFrame.length\n );\n\n // copy the encoded bitstream into WASM memory buffer\n encodedBufferInWASM.set(compressedImageFrame);\n\n // decode it\n decoder.decode();\n\n // get information about the decoded image\n const frameInfo = decoder.getFrameInfo();\n const interleaveMode = decoder.getInterleaveMode();\n const nearLossless = decoder.getNearLossless();\n\n // get the decoded pixels\n const decodedPixelsInWASM = decoder.getDecodedBuffer();\n\n const encodedImageInfo = {\n columns: frameInfo.width,\n rows: frameInfo.height,\n bitsPerPixel: frameInfo.bitsPerSample,\n signed: imageInfo.signed,\n bytesPerPixel: imageInfo.bytesPerPixel,\n componentsPerPixel: frameInfo.componentCount,\n };\n\n const pixelData = getPixelData(\n frameInfo,\n decodedPixelsInWASM,\n imageInfo.signed\n );\n\n const encodeOptions = {\n nearLossless,\n interleaveMode,\n frameInfo,\n };\n\n // local.codec.doLeakCheck();\n\n return {\n ...imageInfo,\n pixelData,\n imageInfo: encodedImageInfo,\n encodeOptions,\n ...encodeOptions,\n ...encodedImageInfo,\n };\n } catch (error) {\n // Handle cases where WASM throws an error internally, and it only gives JS a number\n // See https://emscripten.org/docs/porting/Debugging.html#handling-c-exceptions-from-javascript\n // TODO: Copy to other codecs as well\n throw getExceptionMessage(error);\n }\n}\n\nfunction getPixelData(frameInfo, decodedBuffer: ByteArray, signed: boolean) {\n if (frameInfo.bitsPerSample > 8) {\n if (signed) {\n return new Int16Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength / 2\n );\n }\n\n return new Uint16Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength / 2\n );\n }\n\n if (signed) {\n return new Int8Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength\n );\n }\n\n return new Uint8Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength\n );\n}\n\nexport default decodeAsync;\n","// https://emscripten.org/docs/api_reference/module.html\nimport type {\n J2KDecoder,\n OpenJpegModule,\n} from '@cornerstonejs/codec-openjpeg/dist/openjpegwasm_decode';\n// @ts-ignore\nimport openJpegFactory from '@cornerstonejs/codec-openjpeg/decodewasmjs';\n\n// Webpack asset/resource copies this to our output folder\n\n// TODO: At some point maybe we can use this instead.\n// This is closer to what Webpack 5 wants but it doesn't seem to work now\n// const wasm = new URL('./blah.wasm', import.meta.url)\n// @ts-ignore\nimport openjpegWasm from '@cornerstonejs/codec-openjpeg/decodewasm';\n\nimport { ImageFrame, WebWorkerDecodeConfig } from '../../types';\n\nconst local: {\n codec: OpenJpegModule;\n decoder: J2KDecoder;\n decodeConfig: WebWorkerDecodeConfig;\n} = {\n codec: undefined,\n decoder: undefined,\n decodeConfig: {} as WebWorkerDecodeConfig,\n};\n\nexport function initialize(\n decodeConfig?: WebWorkerDecodeConfig\n): Promise<void> {\n local.decodeConfig = decodeConfig;\n\n if (local.codec) {\n return Promise.resolve();\n }\n\n const openJpegModule = openJpegFactory({\n locateFile: (f) => {\n if (f.endsWith('.wasm')) {\n return openjpegWasm.toString();\n }\n\n return f;\n },\n });\n\n return new Promise((resolve, reject) => {\n openJpegModule.then((instance) => {\n local.codec = instance;\n local.decoder = new instance.J2KDecoder();\n resolve();\n }, reject);\n });\n}\n\n// https://github.com/chafey/openjpegjs/blob/master/test/browser/index.html\nasync function decodeAsync(\n compressedImageFrame,\n imageInfo\n): Promise<ImageFrame> {\n await initialize();\n const decoder = local.decoder;\n\n // get pointer to the source/encoded bit stream buffer in WASM memory\n // that can hold the encoded bitstream\n const encodedBufferInWASM = decoder.getEncodedBuffer(\n compressedImageFrame.length\n );\n\n // copy the encoded bitstream into WASM memory buffer\n encodedBufferInWASM.set(compressedImageFrame);\n\n // decode it\n decoder.decode();\n // decoder.decodeSubResolution(decodeLevel, decodeLayer);\n // const resolutionAtLevel = decoder.calculateSizeAtDecompositionLevel(decodeLevel);\n\n // get information about the decoded image\n const frameInfo = decoder.getFrameInfo();\n // get the decoded pixels\n const decodedBufferInWASM = decoder.getDecodedBuffer();\n const imageFrame = new Uint8Array(decodedBufferInWASM.length);\n\n imageFrame.set(decodedBufferInWASM);\n\n const imageOffset = `x: ${decoder.getImageOffset().x}, y: ${\n decoder.getImageOffset().y\n }`;\n const numDecompositions = decoder.getNumDecompositions();\n const numLayers = decoder.getNumLayers();\n const progessionOrder = ['unknown', 'LRCP', 'RLCP', 'RPCL', 'PCRL', 'CPRL'][\n decoder.getProgressionOrder() + 1\n ];\n const reversible = decoder.getIsReversible();\n const blockDimensions = `${decoder.getBlockDimensions().width} x ${\n decoder.getBlockDimensions().height\n }`;\n const tileSize = `${decoder.getTileSize().width} x ${\n decoder.getTileSize().height\n }`;\n const tileOffset = `${decoder.getTileOffset().x}, ${\n decoder.getTileOffset().y\n }`;\n const colorTransform = decoder.getColorSpace();\n\n const decodedSize = `${decodedBufferInWASM.length.toLocaleString()} bytes`;\n const compressionRatio = `${(\n decodedBufferInWASM.length / encodedBufferInWASM.length\n ).toFixed(2)}:1`;\n\n const encodedImageInfo = {\n columns: frameInfo.width,\n rows: frameInfo.height,\n bitsPerPixel: frameInfo.bitsPerSample,\n signed: frameInfo.isSigned,\n bytesPerPixel: imageInfo.bytesPerPixel,\n componentsPerPixel: frameInfo.componentCount,\n };\n const pixelData = getPixelData(frameInfo, decodedBufferInWASM);\n\n const encodeOptions = {\n imageOffset,\n numDecompositions,\n numLayers,\n progessionOrder,\n reversible,\n blockDimensions,\n tileSize,\n tileOffset,\n colorTransform,\n decodedSize,\n compressionRatio,\n };\n\n return {\n ...imageInfo,\n pixelData,\n imageInfo: encodedImageInfo,\n encodeOptions,\n ...encodeOptions,\n ...encodedImageInfo,\n };\n}\n\nfunction getPixelData(frameInfo, decodedBuffer) {\n if (frameInfo.bitsPerSample > 8) {\n if (frameInfo.isSigned) {\n return new Int16Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength / 2\n );\n }\n\n return new Uint16Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength / 2\n );\n }\n\n if (frameInfo.isSigned) {\n return new Int8Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength\n );\n }\n\n return new Uint8Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength\n );\n}\n\nexport default decodeAsync;\n","import { ByteArray } from 'dicom-parser';\n// @ts-ignore\nimport openJphFactory from '@cornerstonejs/codec-openjph/wasmjs';\n// @ts-ignore\nimport openjphWasm from '@cornerstonejs/codec-openjph/wasm';\n\nimport { LoaderDecodeOptions } from '../../types';\n\nconst local: {\n codec: any;\n decoder: any;\n decodeConfig: LoaderDecodeOptions;\n} = {\n codec: undefined,\n decoder: undefined,\n decodeConfig: {},\n};\n\nfunction calculateSizeAtDecompositionLevel(\n decompositionLevel: number,\n frameWidth: number,\n frameHeight: number\n) {\n const result = { width: frameWidth, height: frameHeight };\n while (decompositionLevel > 0) {\n result.width = Math.ceil(result.width / 2);\n result.height = Math.ceil(result.height / 2);\n decompositionLevel--;\n }\n return result;\n}\n\nexport function initialize(decodeConfig?: LoaderDecodeOptions): Promise<void> {\n local.decodeConfig = decodeConfig;\n\n if (local.codec) {\n return Promise.resolve();\n }\n\n const openJphModule = openJphFactory({\n locateFile: (f) => {\n if (f.endsWith('.wasm')) {\n return openjphWasm;\n }\n\n return f;\n },\n });\n\n return new Promise<void>((resolve, reject) => {\n openJphModule.then((instance) => {\n local.codec = instance;\n local.decoder = new instance.HTJ2KDecoder();\n resolve();\n }, reject);\n });\n}\n\n// https://github.com/chafey/openjpegjs/blob/master/test/browser/index.html\nasync function decodeAsync(compressedImageFrame: ByteArray, imageInfo) {\n await initialize();\n // const decoder = local.decoder; // This is much slower for some reason\n const decoder = new local.codec.HTJ2KDecoder();\n\n // get pointer to the source/encoded bit stream buffer in WASM memory\n // that can hold the encoded bitstream\n const encodedBufferInWASM = decoder.getEncodedBuffer(\n compressedImageFrame.length\n );\n\n // copy the encoded bitstream into WASM memory buffer\n encodedBufferInWASM.set(compressedImageFrame);\n\n // decode it\n // decoder.decode();\n const decodeLevel = imageInfo.decodeLevel || 0;\n decoder.decodeSubResolution(decodeLevel);\n // decoder.decodeSubResolution(decodeLevel, decodeLayer);\n // const resolutionAtLevel = decoder.calculateSizeAtDecompositionLevel(decodeLevel);\n\n // get information about the decoded image\n const frameInfo = decoder.getFrameInfo();\n // Overwrite width/height if subresolution\n if (imageInfo.decodeLevel > 0) {\n const { width, height } = calculateSizeAtDecompositionLevel(\n imageInfo.decodeLevel,\n frameInfo.width,\n frameInfo.height\n );\n frameInfo.width = width;\n frameInfo.height = height;\n // console.log(`Decoded sub-resolution of size: ${width} x ${height}`);\n }\n // get the decoded pixels\n const decodedBufferInWASM = decoder.getDecodedBuffer();\n const imageFrame = new Uint8Array(decodedBufferInWASM.length);\n\n imageFrame.set(decodedBufferInWASM);\n\n const imageOffset = `x: ${decoder.getImageOffset().x}, y: ${\n decoder.getImageOffset().y\n }`;\n const numDecompositions = decoder.getNumDecompositions();\n const numLayers = decoder.getNumLayers();\n const progessionOrder = ['unknown', 'LRCP', 'RLCP', 'RPCL', 'PCRL', 'CPRL'][\n decoder.getProgressionOrder() + 1\n ];\n const reversible = decoder.getIsReversible();\n const blockDimensions = `${decoder.getBlockDimensions().width} x ${\n decoder.getBlockDimensions().height\n }`;\n const tileSize = `${decoder.getTileSize().width} x ${\n decoder.getTileSize().height\n }`;\n const tileOffset = `${decoder.getTileOffset().x}, ${\n decoder.getTileOffset().y\n }`;\n // const colorTransform = decoder.getColorSpace();\n\n const decodedSize = `${decodedBufferInWASM.length.toLocaleString()} bytes`;\n const compressionRatio = `${(\n decodedBufferInWASM.length / encodedBufferInWASM.length\n ).toFixed(2)}:1`;\n\n const encodedImageInfo = {\n columns: frameInfo.width,\n rows: frameInfo.height,\n bitsPerPixel: frameInfo.bitsPerSample,\n signed: frameInfo.isSigned,\n bytesPerPixel: imageInfo.bytesPerPixel,\n componentsPerPixel: frameInfo.componentCount,\n };\n // const pixelData = getPixelData(frameInfo, decodedBufferInWASM);\n\n /**\n * Have to truncate the arraybuffer here to the length of the typed array. Not\n * sure why the arraybuffer is so huge, maybe this is allocated by the WASM\n * module? In any case, I think it's too big to postMessage in it's entirety.\n */\n let pixelData = getPixelData(frameInfo, decodedBufferInWASM);\n const { buffer: b, byteOffset, byteLength } = pixelData;\n const pixelDataArrayBuffer = b.slice(byteOffset, byteOffset + byteLength);\n\n // @ts-ignore\n pixelData = new pixelData.constructor(pixelDataArrayBuffer);\n\n const encodeOptions = {\n imageOffset,\n numDecompositions,\n numLayers,\n progessionOrder,\n reversible,\n blockDimensions,\n tileSize,\n tileOffset,\n // colorTransform,\n decodedSize,\n compressionRatio,\n };\n\n return {\n ...imageInfo,\n pixelData,\n imageInfo: encodedImageInfo,\n encodeOptions,\n ...encodeOptions,\n ...encodedImageInfo,\n };\n}\n\nfunction getPixelData(frameInfo, decodedBuffer) {\n if (frameInfo.bitsPerSample > 8) {\n if (frameInfo.isSigned) {\n return new Int16Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength / 2\n );\n }\n\n return new Uint16Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength / 2\n );\n }\n\n if (frameInfo.isSigned) {\n return new Int8Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength\n );\n }\n\n return new Uint8Array(\n decodedBuffer.buffer,\n decodedBuffer.byteOffset,\n decodedBuffer.byteLength\n );\n}\n\nexport default decodeAsync;\n","import { PixelDataTypedArray } from '../types';\n\n/**\n * Calculate the minimum and maximum values in an Array\n *\n * @param {Number[]} storedPixelData\n * @return {{min: Number, max: Number}}\n */\nfunction getMinMax(storedPixelData: PixelDataTypedArray): {\n min: number;\n max: number;\n} {\n // we always calculate the min max values since they are not always\n // present in DICOM and we don't want to trust them anyway as cornerstone\n // depends on us providing reliable values for these\n let min = storedPixelData[0];\n\n let max = storedPixelData[0];\n\n let storedPixel;\n const numPixels = storedPixelData.length;\n\n for (let index = 1; index < numPixels; index++) {\n storedPixel = storedPixelData[index];\n min = Math.min(min, storedPixel);\n max = Math.max(max, storedPixel);\n }\n\n return {\n min,\n max,\n };\n}\n\nexport default getMinMax;\n","/* eslint-disable complexity */\nimport { ByteArray } from 'dicom-parser';\nimport bilinear from './scaling/bilinear';\nimport replicate from './scaling/replicate';\nimport { expose } from 'comlink';\n\nimport decodeLittleEndian from './decoders/decodeLittleEndian';\nimport decodeBigEndian from './decoders/decodeBigEndian';\nimport decodeRLE from './decoders/decodeRLE';\nimport decodeJPEGBaseline8Bit from './decoders/decodeJPEGBaseline8Bit';\n// import decodeJPEGBaseline12Bit from './decoders/decodeJPEGBaseline12Bit';\nimport decodeJPEGBaseline12Bit from './decoders/decodeJPEGBaseline12Bit-js';\nimport decodeJPEGLossless from './decoders/decodeJPEGLossless';\nimport decodeJPEGLS from './decoders/decodeJPEGLS';\nimport decodeJPEG2000 from './decoders/decodeJPEG2000';\nimport decodeHTJ2K from './decoders/decodeHTJ2K';\n// Note that the scaling is pixel value scaling, which is applying a modality LUT\nimport applyModalityLUT from './scaling/scaleArray';\nimport { ImageFrame, LoaderDecodeOptions, PixelDataTypedArray } from '../types';\nimport getMinMax from './getMinMax';\nimport getPixelDataTypeFromMinMax from './getPixelDataTypeFromMinMax';\nimport isColorImage from './isColorImage';\n\nconst imageUtils = {\n bilinear,\n replicate,\n};\n\n/**\n * Decodes the provided image frame.\n * This is an async function return the result, or you can provide an optional\n * callbackFn that is called with the results.\n */\nasync function decodeImageFrame(\n imageFrame,\n transferSyntax,\n pixelData,\n decodeConfig,\n options,\n callbackFn\n) {\n const start = new Date().getTime();\n\n let decodePromise = null;\n\n let opts;\n\n switch (transferSyntax) {\n case '1.2.840.10008.1.2':\n case '1.2.840.10008.1.2.1':\n // Implicit or Explicit VR Little Endian\n decodePromise = decodeLittleEndian(imageFrame, pixelData);\n break;\n case '1.2.840.10008.1.2.2':\n // Explicit VR Big Endian (retired)\n decodePromise = decodeBigEndian(imageFrame, pixelData);\n break;\n case '1.2.840.10008.1.2.1.99':\n // Deflate transfer syntax (deflated by dicomParser)\n decodePromise = decodeLittleEndian(imageFrame, pixelData);\n break;\n case '1.2.840.10008.1.2.5':\n // RLE Lossless\n decodePromise = decodeRLE(imageFrame, pixelData);\n break;\n case '1.2.840.10008.1.2.4.50':\n // JPEG Baseline lossy process 1 (8 bit)\n opts = {\n ...imageFrame,\n };\n\n decodePromise = decodeJPEGBaseline8Bit(pixelData, opts);\n break;\n case '1.2.840.10008.1.2.4.51':\n // JPEG Baseline lossy process 2 & 4 (12 bit)\n // opts = {\n // ...imageFrame,\n // };\n // decodePromise = decodeJPEGBaseline12Bit(pixelData, opts);\n //throw new Error('Currently unsupported: 1.2.840.10008.1.2.4.51');\n decodePromise = decodeJPEGBaseline12Bit(imageFrame, pixelData);\n break;\n case '1.2.840.10008.1.2.4.57':\n // JPEG Lossless, Nonhierarchical (Processes 14)\n decodePromise = decodeJPEGLossless(imageFrame, pixelData);\n break;\n case '1.2.840.10008.1.2.4.70':\n // JPEG Lossless, Nonhierarchical (Processes 14 [Selection 1])\n decodePromise = decodeJPEGLossless(imageFrame, pixelData);\n break;\n case '1.2.840.10008.1.2.4.80':\n // JPEG-LS Lossless Image Compression\n opts = {\n signed: imageFrame.pixelRepresentation === 1, // imageFrame.signed,\n // shouldn't need...\n bytesPerPixel: imageFrame.bitsAllocated <= 8 ? 1 : 2,\n ...imageFrame,\n };\n\n decodePromise = decodeJPEGLS(pixelData, opts);\n break;\n case '1.2.840.10008.1.2.4.81':\n // JPEG-LS Lossy (Near-Lossless) Image Compression\n opts = {\n signed: imageFrame.pixelRepresentation === 1, // imageFrame.signed,\n // shouldn't need...\n bytesPerPixel: imageFrame.bitsAllocated <= 8 ? 1 : 2,\n ...imageFrame,\n };\n\n decodePromise = decodeJPEGLS(pixelData, opts);\n break;\n case '1.2.840.10008.1.2.4.90':\n opts = {\n ...imageFrame,\n };\n\n // JPEG 2000 Lossless\n // imageFrame, pixelData, decodeConfig, options\n decodePromise = decodeJPEG2000(pixelData, opts);\n break;\n case '1.2.840.10008.1.2.4.91':\n // JPEG 2000 Lossy\n opts = {\n ...imageFrame,\n };\n\n // JPEG 2000 Lossy\n // imageFrame, pixelData, decodeConfig, options\n decodePromise = decodeJPEG2000(pixelData, opts);\n break;\n case '3.2.840.10008.1.2.4.96':\n case '1.2.840.10008.1.2.4.201':\n case '1.2.840.10008.1.2.4.202':\n case '1.2.840.10008.1.2.4.203':\n // HTJ2K\n opts = {\n ...imageFrame,\n };\n\n decodePromise = decodeHTJ2K(pixelData, opts);\n break;\n default:\n throw new Error(`no decoder for transfer syntax ${transferSyntax}`);\n }\n\n /* Don't know if these work...\n // JPEG 2000 Part 2 Multicomponent Image Compression (Lossless Only)\n else if(transferSyntax === \"1.2.840.10008.1.2.4.92\")\n {\n return decodeJPEG2000(dataSet, frame);\n }\n // JPEG 2000 Part 2 Multicomponent Image Compression\n else if(transferSyntax === \"1.2.840.10008.1.2.4.93\")\n {\n return decodeJPEG2000(dataSet, frame);\n }\n */\n\n if (!decodePromise) {\n throw new Error('decodePromise not defined');\n }\n\n const decodedFrame = await decodePromise;\n\n const postProcessed = postProcessDecodedPixels(\n decodedFrame,\n options,\n start,\n decodeConfig\n );\n\n // Call the callbackFn to agree with older arguments\n callbackFn?.(postProcessed);\n\n return postProcessed;\n}\n\nfunction postProcessDecodedPixels(imageFrame, options, start, decodeConfig) {\n const { use16BitDataType } = decodeConfig || {};\n\n const shouldShift =\n imageFrame.pixelRepresentation !== undefined &&\n imageFrame.pixelRepresentation === 1;\n const shift =\n shouldShift && imageFrame.bitsStored !== undefined\n ? 32 - imageFrame.bitsStored\n : undefined;\n\n if (shouldShift && shift !== undefined) {\n for (let i = 0; i < imageFrame.pixelData.length; i++) {\n // eslint-disable-next-line no-bitwise\n imageFrame.pixelData[i] = (imageFrame.pixelData[i] << shift) >> shift;\n }\n }\n\n // Cache the pixelData reference quickly incase we want to set a targetBuffer _and_ scale.\n let pixelDataArray = imageFrame.pixelData;\n imageFrame.pixelDataLength = imageFrame.pixelData.length;\n const { min: minBeforeScale, max: maxBeforeScale } = getMinMax(\n imageFrame.pixelData\n );\n\n const typedArrayConstructors = {\n Uint8Array,\n Uint16Array: use16BitDataType ? Uint16Array : undefined,\n Int16Array: use16BitDataType ? Int16Array : undefined,\n Float32Array,\n };\n\n const type = options.targetBuffer?.type;\n\n const canRenderFloat =\n typeof options.allowFloatRendering !== 'undefined'\n ? options.allowFloatRendering\n : true;\n\n // Sometimes the type is specified before the DICOM header data has been\n // read. This is fine except for color data, where the wrong type gets\n // specified. Don't use the target buffer in that case.\n const invalidType =\n isColorImage(imageFrame.photometricInterpretation) &&\n options.targetBuffer?.offset === undefined;\n\n const willScale = options.preScale?.enabled;\n\n const hasFloatRescale =\n willScale &&\n Object.values(options.preScale.scalingParameters).some(\n (v) => typeof v === 'number' && !Number.isInteger(v)\n );\n const disableScale =\n !options.preScale.enabled || (!canRenderFloat && hasFloatRescale);\n\n if (type && !invalidType) {\n pixelDataArray = _handleTargetBuffer(\n options,\n imageFrame,\n typedArrayConstructors,\n pixelDataArray\n );\n } else if (options.preScale.enabled && !disableScale) {\n pixelDataArray = _handlePreScaleSetup(\n options,\n minBeforeScale,\n maxBeforeScale,\n imageFrame\n );\n } else {\n pixelDataArray = _getDefaultPixelDataArray(\n minBeforeScale,\n maxBeforeScale,\n imageFrame\n );\n }\n\n let minAfterScale = minBeforeScale;\n let maxAfterScale = maxBeforeScale;\n\n if (options.preScale.enabled && !disableScale) {\n const scalingParameters = options.preScale.scalingParameters;\n _validateScalingParameters(scalingParameters);\n\n const { rescaleSlope, rescaleIntercept } = scalingParameters;\n const isSlopeAndInterceptNumbers =\n typeof rescaleSlope === 'number' && typeof rescaleIntercept === 'number';\n\n if (isSlopeAndInterceptNumbers) {\n applyModalityLUT(pixelDataArray, scalingParameters);\n imageFrame.preScale = {\n ...options.preScale,\n scaled: true,\n };\n\n // calculate the min and max after scaling\n const { rescaleIntercept, rescaleSlope, suvbw } = scalingParameters;\n minAfterScale = rescaleSlope * minBeforeScale + rescaleIntercept;\n maxAfterScale = rescaleSlope * maxBeforeScale + rescaleIntercept;\n\n if (suvbw) {\n minAfterScale = minAfterScale * suvbw;\n maxAfterScale = maxAfterScale * suvbw;\n }\n }\n } else if (disableScale) {\n imageFrame.preScale = {\n enabled: true,\n scaled: false,\n };\n\n minAfterScale = minBeforeScale;\n maxAfterScale = maxBeforeScale;\n }\n\n // assign the array buffer to the pixelData only if it is not a SharedArrayBuffer\n // since we can't transfer ownership of a SharedArrayBuffer to another thread\n // in the workers\n const hasTargetBuffer = options.targetBuffer !== undefined;\n\n if (!hasTargetBuffer || !options.isSharedArrayBuffer) {\n imageFrame.pixelData = pixelDataArray;\n }\n\n imageFrame.minAfterScale = minAfterScale;\n imageFrame.maxAfterScale = maxAfterScale;\n\n const end = new Date().getTime();\n imageFrame.decodeTimeInMS = end - start;\n\n return imageFrame;\n}\n\nfunction _handleTargetBuffer(\n options,\n imageFrame,\n typedArrayConstructors,\n pixelDataArray\n) {\n const {\n arrayBuffer,\n type,\n offset: rawOffset = 0,\n length: rawLength,\n rows,\n } = options.targetBuffer;\n\n const TypedArrayConstructor = typedArrayConstructors[type];\n\n if (!TypedArrayConstructor) {\n throw new Error(\n `target array ${type} is not supported, you need to set use16BitDataType to true if you want to use Uint16Array or Int16Array.`\n );\n }\n\n if (rows && rows != imageFrame.rows) {\n scaleImageFrame(imageFrame, options.targetBuffer, TypedArrayConstructor);\n }\n const imageFrameLength = imageFrame.pixelDataLength;\n\n const offset = rawOffset;\n const length =\n rawLength !== null && rawLength !== undefined\n ? rawLength\n : imageFrameLength - offset;\n\n const imageFramePixelData = imageFrame.pixelData;\n\n if (length !== imageFramePixelData.length) {\n throw new Error(\n `target array for image does not have the same length (${length}) as the decoded image length (${imageFramePixelData.length}).`\n );\n }\n\n // TypedArray.Set is api level and ~50x faster than copying elements even for\n // Arrays of different types, which aren't simply memcpy ops.\n const typedArray = arrayBuffer\n ? new TypedArrayConstructor(arrayBuffer, offset, length)\n : new TypedArrayConstructor(length);\n\n typedArray.set(imageFramePixelData, 0);\n\n // If need to scale, need to scale correct array.\n pixelDataArray = typedArray;\n return pixelDataArray;\n}\n\nfunction _handlePreScaleSetup(\n options,\n minBeforeScale,\n maxBeforeScale,\n imageFrame\n) {\n const scalingParameters = options.preScale.scalingParameters;\n _validateScalingParameters(scalingParameters);\n\n const { rescaleSlope, rescaleIntercept } = scalingParameters;\n const areSlopeAndInterceptNumbers =\n typeof rescaleSlope === 'number' && typeof rescaleIntercept === 'number';\n\n let scaledMin = minBeforeScale;\n let scaledMax = maxBeforeScale;\n\n if (areSlopeAndInterceptNumbers) {\n scaledMin = rescaleSlope * minBeforeScale + rescaleIntercept;\n scaledMax = rescaleSlope * maxBeforeScale + rescaleIntercept;\n }\n\n return _getDefaultPixelDataArray(scaledMin, scaledMax, imageFrame);\n}\n\nfunction _getDefaultPixelDataArray(min, max, imageFrame) {\n const TypedArrayConstructor = getPixelDataTypeFromMinMax(min, max);\n // @ts-ignore\n const typedArray = new TypedArrayConstructor(imageFrame.pixelData.length);\n typedArray.set(imageFrame.pixelData, 0);\n\n return typedArray;\n}\n\nfunction _validateScalingParameters(scalingParameters) {\n if (!scalingParameters) {\n throw new Error(\n 'options.preScale.scalingParameters must be defined if preScale.enabled is true, and scalingParameters cannot be derived from the metadata providers.'\n );\n }\n}\n\nfunction createDestinationImage(\n imageFrame,\n targetBuffer,\n TypedArrayConstructor\n) {\n const { samplesPerPixel } = imageFrame;\n const { rows, columns } = targetBuffer;\n const typedLength = rows * columns * samplesPerPixel;\n const pixelData = new TypedArrayConstructor(typedLength);\n const bytesPerPixel = pixelData.byteLength / typedLength;\n return {\n pixelData,\n rows,\n columns,\n frameInfo: {\n ...imageFrame.frameInfo,\n rows,\n columns,\n },\n imageInfo: {\n ...imageFrame.imageInfo,\n rows,\n columns,\n bytesPerPixel,\n },\n };\n}\n\n/** Scales the image frame, updating the frame in place with a new scaled\n * version of it (in place modification)\n */\nfunction scaleImageFrame(imageFrame, targetBuffer, TypedArrayConstructor) {\n const dest = createDestinationImage(\n imageFrame,\n targetBuffer,\n TypedArrayConstructor\n );\n const { scalingType = 'replicate' } = targetBuffer;\n imageUtils[scalingType](imageFrame, dest);\n Object.assign(imageFrame, dest);\n return imageFrame;\n}\n\nconst obj = {\n decodeTask({\n imageFrame,\n transferSyntax,\n decodeConfig,\n options,\n pixelData,\n callbackFn,\n }) {\n return decodeImageFrame(\n imageFrame,\n transferSyntax,\n pixelData,\n decodeConfig,\n options,\n callbackFn\n );\n },\n};\n\nexpose(obj);\n","/**\n * Performs a bilinear scaling, both scaling up and scaling down.\n * Only supports 1 channel per pixel (grayscale)\n * @param src - src image frame to get map from\n * @param dest - dest image frame to write to\n * @returns destination data buffer\n */\nexport default function bilinear(src, dest) {\n const { rows: srcRows, columns: srcColumns, data: srcData } = src;\n const { rows, columns, data } = dest;\n\n const xSrc1Off = [];\n const xSrc2Off = [];\n const xFrac = [];\n\n // Precompute offsets\n for (let x = 0; x < columns; x++) {\n const xSrc = (x * (srcColumns - 1)) / (columns - 1);\n xSrc1Off[x] = Math.floor(xSrc);\n xSrc2Off[x] = Math.min(xSrc1Off[x] + 1, srcColumns - 1);\n xFrac[x] = xSrc - xSrc1Off[x];\n // console.log(\"x src info\", x, xSrc, xFrac[x]);\n }\n\n for (let y = 0; y < rows; y++) {\n const ySrc = (y * (srcRows - 1)) / (rows - 1);\n const ySrc1Off = Math.floor(ySrc) * srcColumns;\n // Get the second offset, but duplicate the last row so the lookup works\n const ySrc2Off = Math.min(\n ySrc1Off + srcColumns,\n (srcRows - 1) * srcColumns\n );\n const yFrac = ySrc - Math.floor(ySrc);\n const yFracInv = 1 - yFrac;\n const yOff = y * columns;\n\n for (let x = 0; x < columns; x++) {\n // TODO - put the pXY into the data calculation\n const p00 = srcData[ySrc1Off + xSrc1Off[x]];\n const p10 = srcData[ySrc1Off + xSrc2Off[x]];\n const p01 = srcData[ySrc2Off + xSrc1Off[x]];\n const p11 = srcData[ySrc2Off + xSrc2Off[x]];\n const xFracInv = 1 - xFrac[x];\n\n // console.log(\"bilinear for\", x,y, \"from\", ySrc1Off + xSrc1Off[x], ySrc1Off + xSrc2Off[x], ySrc2Off + xSrc1Off[x], ySrc2Off + xSrc2Off[x]);\n // console.log(\"values\", p00, p10, p01, p11);\n // console.log(\"fractions\", xFracInv, xFrac[x], yFracInv, yFrac);\n\n data[yOff + x] =\n (p00 * xFracInv + p10 * xFrac[x]) * yFracInv +\n (p01 * xFracInv + p11 * xFrac[x]) * yFrac;\n }\n }\n return data;\n}\n","/** Handle replicate scaling. Use this function for samplesPerPixel>1 */\n\nexport default function replicate(src, dest) {\n const {\n rows: srcRows,\n columns: srcColumns,\n pixelData: srcData,\n samplesPerPixel = 1,\n } = src;\n const { rows, columns, pixelData } = dest;\n\n const xSrc1Off = [];\n\n // Precompute offsets\n for (let x = 0; x < columns; x++) {\n const xSrc = (x * (srcColumns - 1)) / (columns - 1);\n xSrc1Off[x] = Math.floor(xSrc) * samplesPerPixel;\n // console.log(\"x src info\", x, xSrc, xFrac[x]);\n }\n\n for (let y = 0; y < rows; y++) {\n const ySrc = (y * (srcRows - 1)) / (rows - 1);\n const ySrc1Off = Math.floor(ySrc) * srcColumns * samplesPerPixel;\n const yOff = y * columns;\n\n for (let x = 0; x < columns; x++) {\n for (let sample = 0; sample < samplesPerPixel; sample++) {\n pixelData[yOff + x + sample] = srcData[ySrc1Off + xSrc1Off[x] + sample];\n }\n }\n }\n return pixelData;\n}\n","export default function (photoMetricInterpretation: string): boolean {\n return (\n photoMetricInterpretation === 'RGB' ||\n photoMetricInterpretation === 'PALETTE COLOR' ||\n photoMetricInterpretation === 'YBR_FULL' ||\n photoMetricInterpretation === 'YBR_FULL_422' ||\n photoMetricInterpretation === 'YBR_PARTIAL_422' ||\n photoMetricInterpretation === 'YBR_PARTIAL_420' ||\n photoMetricInterpretation === 'YBR_RCT' ||\n photoMetricInterpretation === 'YBR_ICT'\n );\n}\n","import { PixelDataTypedArray } from '../../types';\n\nexport default function scaleArray(\n array: PixelDataTypedArray,\n scalingParameters\n): boolean {\n const arrayLength = array.length;\n const { rescaleSlope, rescaleIntercept, suvbw } = scalingParameters;\n\n if (scalingParameters.modality === 'PT' && typeof suvbw === 'number') {\n for (let i = 0; i < arrayLength; i++) {\n array[i] = suvbw * (array[i] * rescaleSlope + rescaleIntercept);\n }\n } else {\n for (let i = 0; i < arrayLength; i++) {\n array[i] = array[i] * rescaleSlope + rescaleIntercept;\n }\n }\n\n return true;\n}\n","import { PixelDataTypedArray } from '../types';\n\nexport default function getPixelDataTypeFromMinMax(\n min: number,\n max: number\n): PixelDataTypedArray {\n let pixelDataType;\n if (Number.isInteger(min) && Number.isInteger(max)) {\n if (min >= 0) {\n if (max <= 255) {\n pixelDataType = Uint8Array;\n } else if (max <= 65535) {\n pixelDataType = Uint16Array;\n }\n } else {\n if (min >= -128 && max <= 127) {\n pixelDataType = Int8Array;\n } else if (min >= -32768 && max <= 32767) {\n pixelDataType = Int16Array;\n }\n }\n }\n\n return pixelDataType || Float32Array;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// the startup function\n__webpack_require__.x = () => {\n\t// Load entry module and return exports\n\t// This entry module depends on other loaded chunks and execution need to be delayed\n\tvar __webpack_exports__ = __webpack_require__.O(undefined, [958], () => (__webpack_require__(625)))\n\t__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n\treturn __webpack_exports__;\n};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks and sibling chunks for the entrypoint\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".min.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t595: 1\n};\n\n// importScripts chunk loading\nvar installChunk = (data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\twhile(chunkIds.length)\n\t\tinstalledChunks[chunkIds.pop()] = 1;\n\tparentChunkLoadingFunction(data);\n};\n__webpack_require__.f.i = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\timportScripts(__webpack_require__.p + __webpack_require__.u(chunkId));\n\t\t}\n\t}\n};\n\nvar chunkLoadingGlobal = this[\"webpackChunk\"] = this[\"webpackChunk\"] || [];\nvar parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);\nchunkLoadingGlobal.push = installChunk;\n\n// no HMR\n\n// no HMR manifest","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"names":["root","factory","exports","module","define","amd","this","deferred","leafPrototypes","getProto","next","async","imageFrame","pixelData","arrayBuffer","buffer","offset","byteOffset","length","bitsAllocated","slice","pixelRepresentation","Uint16Array","Int16Array","Float32Array","i","val","planarConfiguration","frameData","frameSize","rows","columns","outFrame","ArrayBuffer","samplesPerPixel","header","DataView","data","Int8Array","out","outIndex","numSegments","getInt32","s","inIndex","maxIndex","endOfSegment","n","value","j","Uint8Array","decode8Planar","decode8","highByte","decode16","Error","local","codec","undefined","decoder","compressedImageFrame","imageInfo","Promise","resolve","libjpegTurboModule","libjpegTurboFactory","locateFile","f","endsWith","libjpegTurboWasm","reject","then","instance","JPEGDecoder","initLibjpegTurbo","getEncodedBuffer","set","decode","frameInfo","getFrameInfo","decodedPixelsInWASM","getDecodedBuffer","encodedImageInfo","width","height","bitsPerPixel","bitsPerSample","signed","bytesPerPixel","componentsPerPixel","componentCount","decodedBuffer","isSigned","byteLength","getPixelData","encodeOptions","JpegImage","decodeConfig","jpeg","parse","colorTransform","getData","getData16","lossless","Decoder","byteOutput","decompressedData","charlsModule","charlsFactory","charlsWasm","JpegLSDecoder","initialize","interleaveMode","getInterleaveMode","nearLossless","getNearLossless","error","exception","getExceptionMessage","openJpegModule","openJpegFactory","openjpegWasm","J2KDecoder","encodedBufferInWASM","decodedBufferInWASM","imageOffset","getImageOffset","x","y","numDecompositions","getNumDecompositions","numLayers","getNumLayers","progessionOrder","getProgressionOrder","reversible","getIsReversible","blockDimensions","getBlockDimensions","tileSize","getTileSize","tileOffset","getTileOffset","getColorSpace","decodedSize","toLocaleString","compressionRatio","toFixed","openJphModule","openJphFactory","openjphWasm","HTJ2KDecoder","decodeLevel","decodeSubResolution","decompositionLevel","frameWidth","frameHeight","result","Math","ceil","calculateSizeAtDecompositionLevel","b","pixelDataArrayBuffer","constructor","storedPixelData","storedPixel","min","max","numPixels","index","imageUtils","bilinear","src","dest","srcRows","srcColumns","srcData","xSrc1Off","xSrc2Off","xFrac","xSrc","floor","ySrc","ySrc1Off","ySrc2Off","yFrac","yFracInv","yOff","p00","p10","p01","p11","xFracInv","replicate","sample","decodeImageFrame","transferSyntax","options","callbackFn","start","Date","getTime","opts","decodePromise","decodeLittleEndian","decodeBigEndian","decodeRLE","decodeJPEGBaseline8Bit","decodeJPEGBaseline12Bit","decodeJPEGLossless","decodeJPEGLS","decodeJPEG2000","decodeHTJ2K","postProcessed","use16BitDataType","shouldShift","shift","bitsStored","pixelDataArray","pixelDataLength","minBeforeScale","maxBeforeScale","getMinMax","typedArrayConstructors","type","targetBuffer","canRenderFloat","allowFloatRendering","invalidType","photoMetricInterpretation","photometricInterpretation","willScale","preScale","enabled","hasFloatRescale","Object","values","scalingParameters","some","v","Number","isInteger","disableScale","rawOffset","rawLength","TypedArrayConstructor","typedLength","createDestinationImage","scalingType","assign","scaleImageFrame","imageFrameLength","imageFramePixelData","typedArray","_handleTargetBuffer","_validateScalingParameters","rescaleSlope","rescaleIntercept","scaledMin","scaledMax","_getDefaultPixelDataArray","_handlePreScaleSetup","minAfterScale","maxAfterScale","array","arrayLength","suvbw","modality","applyModalityLUT","scaled","hasTargetBuffer","isSharedArrayBuffer","end","decodeTimeInMS","postProcessDecodedPixels","pixelDataType","getPixelDataTypeFromMinMax","obj","decodeTask","expose","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","m","__webpack_exports__","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","keys","every","key","splice","r","getter","__esModule","d","a","getPrototypeOf","t","mode","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","e","chunkId","all","reduce","promises","u","g","globalThis","Function","window","prop","prototype","hasOwnProperty","Symbol","toStringTag","scriptUrl","importScripts","location","document","currentScript","scripts","getElementsByTagName","replace","p","installedChunks","chunkLoadingGlobal","parentChunkLoadingFunction","push","bind","moreModules","runtime","pop"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (this.webpackChunk=this.webpackChunk||[]).push([[610],{610:function(s,e){!function(t){if("object"==typeof e&&void 0!==s)s.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).jpeg=t()}}((function(){return function s(e,t,o){function r(a,n){if(!t[a]){if(!e[a]){var l="function"==typeof require&&require;if(!n&&l)return l(a,!0);if(i)return i(a,!0);var h=new Error("Cannot find module '"+a+"'");throw h.code="MODULE_NOT_FOUND",h}var c=t[a]={exports:{}};e[a][0].call(c.exports,(function(s){var t=e[a][1][s];return r(t||s)}),c,c.exports,s,e,t,o)}return t[a].exports}for(var i="function"==typeof require&&require,a=0;a<o.length;a++)r(o[a]);return r}({1:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.ComponentSpec=o.lossless.ComponentSpec||function(){this.hSamp=0,this.quantTableSel=0,this.vSamp=0},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.ComponentSpec)},{}],2:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.DataStream=o.lossless.DataStream||function(s,e,t){this.buffer=new Uint8Array(s,e,t),this.index=0},o.lossless.DataStream.prototype.get16=function(){var s=(this.buffer[this.index]<<8)+this.buffer[this.index+1];return this.index+=2,s},o.lossless.DataStream.prototype.get8=function(){var s=this.buffer[this.index];return this.index+=1,s},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.DataStream)},{}],3:[function(s,e,t){var o,r=r||{};r.lossless=r.lossless||{},r.lossless.DataStream=r.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),r.lossless.HuffmanTable=r.lossless.HuffmanTable||(void 0!==s?s("./huffman-table.js"):null),r.lossless.QuantizationTable=r.lossless.QuantizationTable||(void 0!==s?s("./quantization-table.js"):null),r.lossless.ScanHeader=r.lossless.ScanHeader||(void 0!==s?s("./scan-header.js"):null),r.lossless.FrameHeader=r.lossless.FrameHeader||(void 0!==s?s("./frame-header.js"):null),r.lossless.Utils=r.lossless.Utils||(void 0!==s?s("./utils.js"):null),r.lossless.Decoder=r.lossless.Decoder||function(s,e){this.buffer=s,this.frame=new r.lossless.FrameHeader,this.huffTable=new r.lossless.HuffmanTable,this.quantTable=new r.lossless.QuantizationTable,this.scan=new r.lossless.ScanHeader,this.DU=r.lossless.Utils.createArray(10,4,64),this.HuffTab=r.lossless.Utils.createArray(4,2,12800),this.IDCT_Source=[],this.nBlock=[],this.acTab=r.lossless.Utils.createArray(10,1),this.dcTab=r.lossless.Utils.createArray(10,1),this.qTab=r.lossless.Utils.createArray(10,1),this.marker=0,this.markerIndex=0,this.numComp=0,this.restartInterval=0,this.selection=0,this.xDim=0,this.yDim=0,this.xLoc=0,this.yLoc=0,this.numBytes=0,this.outputData=null,this.restarting=!1,this.mask=0,void 0!==e&&(this.numBytes=e)},r.lossless.Decoder.IDCT_P=[0,5,40,16,45,2,7,42,21,56,8,61,18,47,1,4,41,23,58,13,32,24,37,10,63,17,44,3,6,43,20,57,15,34,29,48,53,26,39,9,60,19,46,22,59,12,33,31,50,55,25,36,11,62,14,35,28,49,52,27,38,30,51,54],r.lossless.Decoder.TABLE=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],r.lossless.Decoder.MAX_HUFFMAN_SUBTREE=50,r.lossless.Decoder.MSB=2147483648,r.lossless.Decoder.RESTART_MARKER_BEGIN=65488,r.lossless.Decoder.RESTART_MARKER_END=65495,r.lossless.Decoder.prototype.decompress=function(s,e,t){return this.decode(s,e,t).buffer},r.lossless.Decoder.prototype.decode=function(s,e,t,o){var i,a,n,l,h=0,c=[],u=[],f=[];if(void 0!==s&&(this.buffer=s),void 0!==o&&(this.numBytes=o),this.stream=new r.lossless.DataStream(this.buffer,e,t),this.buffer=null,this.xLoc=0,this.yLoc=0,65496!==(i=this.stream.get16()))throw new Error("Not a JPEG file");for(i=this.stream.get16();i>>4!=4092||65476===i;){switch(i){case 65476:this.huffTable.read(this.stream,this.HuffTab);break;case 65484:throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");case 65499:this.quantTable.read(this.stream,r.lossless.Decoder.TABLE);break;case 65501:this.restartInterval=this.readNumber();break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:this.readApp();break;case 65534:this.readComment();break;default:if(i>>8!=255)throw new Error("ERROR: format throw new IOException! (decode)")}i=this.stream.get16()}if(i<65472||i>65479)throw new Error("ERROR: could not handle arithmetic code!");this.frame.read(this.stream),i=this.stream.get16();do{for(;65498!==i;){switch(i){case 65476:this.huffTable.read(this.stream,this.HuffTab);break;case 65484:throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");case 65499:this.quantTable.read(this.stream,r.lossless.Decoder.TABLE);break;case 65501:this.restartInterval=this.readNumber();break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:this.readApp();break;case 65534:this.readComment();break;default:if(i>>8!=255)throw new Error("ERROR: format throw new IOException! (Parser.decode)")}i=this.stream.get16()}switch(this.precision=this.frame.precision,this.components=this.frame.components,this.numBytes||(this.numBytes=parseInt(Math.ceil(this.precision/8))),1==this.numBytes?this.mask=255:this.mask=65535,this.scan.read(this.stream),this.numComp=this.scan.numComp,this.selection=this.scan.selection,1===this.numBytes?3===this.numComp?(this.getter=this.getValueRGB,this.setter=this.setValueRGB,this.output=this.outputRGB):(this.getter=this.getValue8,this.setter=this.setValue8,this.output=this.outputSingle):(this.getter=this.getValue16,this.setter=this.setValue16,this.output=this.outputSingle),this.selection){case 2:this.selector=this.select2;break;case 3:this.selector=this.select3;break;case 4:this.selector=this.select4;break;case 5:this.selector=this.select5;break;case 6:this.selector=this.select6;break;case 7:this.selector=this.select7;break;default:this.selector=this.select1}for(this.scanComps=this.scan.components,this.quantTables=this.quantTable.quantTables,a=0;a<this.numComp;a+=1)n=this.scanComps[a].scanCompSel,this.qTab[a]=this.quantTables[this.components[n].quantTableSel],this.nBlock[a]=this.components[n].vSamp*this.components[n].hSamp,this.dcTab[a]=this.HuffTab[this.scanComps[a].dcTabSel][0],this.acTab[a]=this.HuffTab[this.scanComps[a].acTabSel][1];for(this.xDim=this.frame.dimX,this.yDim=this.frame.dimY,1==this.numBytes?this.outputData=new Uint8Array(new ArrayBuffer(this.xDim*this.yDim*this.numBytes*this.numComp)):this.outputData=new Uint16Array(new ArrayBuffer(this.xDim*this.yDim*this.numBytes*this.numComp)),h+=1;;){for(u[0]=0,f[0]=0,a=0;a<10;a+=1)c[a]=1<<this.precision-1;if(0===this.restartInterval){for(i=this.decodeUnit(c,u,f);0===i&&this.xLoc<this.xDim&&this.yLoc<this.yDim;)this.output(c),i=this.decodeUnit(c,u,f);break}for(l=0;l<this.restartInterval&&(this.restarting=0==l,i=this.decodeUnit(c,u,f),this.output(c),0===i);l+=1);if(0===i&&(0!==this.markerIndex?(i=65280|this.marker,this.markerIndex=0):i=this.stream.get16()),!(i>=r.lossless.Decoder.RESTART_MARKER_BEGIN&&i<=r.lossless.Decoder.RESTART_MARKER_END))break}65500===i&&1===h&&(this.readNumber(),i=this.stream.get16())}while(65497!==i&&this.xLoc<this.xDim&&this.yLoc<this.yDim&&0===h);return this.outputData},r.lossless.Decoder.prototype.decodeUnit=function(s,e,t){return 1==this.numComp?this.decodeSingle(s,e,t):3==this.numComp?this.decodeRGB(s,e,t):-1},r.lossless.Decoder.prototype.select1=function(s){return this.getPreviousX(s)},r.lossless.Decoder.prototype.select2=function(s){return this.getPreviousY(s)},r.lossless.Decoder.prototype.select3=function(s){return this.getPreviousXY(s)},r.lossless.Decoder.prototype.select4=function(s){return this.getPreviousX(s)+this.getPreviousY(s)-this.getPreviousXY(s)},r.lossless.Decoder.prototype.select5=function(s){return this.getPreviousX(s)+(this.getPreviousY(s)-this.getPreviousXY(s)>>1)},r.lossless.Decoder.prototype.select6=function(s){return this.getPreviousY(s)+(this.getPreviousX(s)-this.getPreviousXY(s)>>1)},r.lossless.Decoder.prototype.select7=function(s){return(this.getPreviousX(s)+this.getPreviousY(s))/2},r.lossless.Decoder.prototype.decodeRGB=function(s,e,t){var o,i,a,n,l,h,c,u;for(s[0]=this.selector(0),s[1]=this.selector(1),s[2]=this.selector(2),l=0;l<this.numComp;l+=1)for(n=this.qTab[l],i=this.acTab[l],a=this.dcTab[l],h=0;h<this.nBlock[l];h+=1){for(c=0;c<this.IDCT_Source.length;c+=1)this.IDCT_Source[c]=0;if((o=this.getHuffmanValue(a,e,t))>=65280)return o;for(s[l]=this.IDCT_Source[0]=s[l]+this.getn(t,o,e,t),this.IDCT_Source[0]*=n[0],u=1;u<64;u+=1){if((o=this.getHuffmanValue(i,e,t))>=65280)return o;if(u+=o>>4,15&o)this.IDCT_Source[r.lossless.Decoder.IDCT_P[u]]=this.getn(t,15&o,e,t)*n[u];else if(!(o>>4))break}}return 0},r.lossless.Decoder.prototype.decodeSingle=function(s,e,t){var o,i,a,n;for(this.restarting?(this.restarting=!1,s[0]=1<<this.frame.precision-1):s[0]=this.selector(),i=0;i<this.nBlock[0];i+=1){if((o=this.getHuffmanValue(this.dcTab[0],e,t))>=65280)return o;if((n=(a=this.getn(s,o,e,t))>>8)>=r.lossless.Decoder.RESTART_MARKER_BEGIN&&n<=r.lossless.Decoder.RESTART_MARKER_END)return n;s[0]+=a}return 0},r.lossless.Decoder.prototype.getHuffmanValue=function(s,e,t){var o,i;if(t[0]<8?(e[0]<<=8,255===(i=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),e[0]|=i):t[0]-=8,(o=s[e[0]>>t[0]])&r.lossless.Decoder.MSB){if(0!==this.markerIndex)return this.markerIndex=0,65280|this.marker;e[0]&=65535>>16-t[0],e[0]<<=8,255===(i=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),e[0]|=i,o=s[256*(255&o)+(e[0]>>t[0])],t[0]+=8}if(t[0]+=8-(o>>8),t[0]<0)throw new Error(`index=${t[0]} temp=${e[0]} code=${o} in HuffmanValue()`);return t[0]<this.markerIndex?(this.markerIndex=0,65280|this.marker):(e[0]&=65535>>16-t[0],255&o)},r.lossless.Decoder.prototype.getn=function(s,e,t,o){var r,i;if(0===e)return 0;if(16===e)return s[0]>=0?-32768:32768;if(o[0]-=e,o[0]>=0){if(o[0]<this.markerIndex&&!this.isLastPixel())return this.markerIndex=0,(65280|this.marker)<<8;r=t[0]>>o[0],t[0]&=65535>>16-o[0]}else{if(t[0]<<=8,255===(i=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),t[0]|=i,o[0]+=8,o[0]<0){if(0!==this.markerIndex)return this.markerIndex=0,(65280|this.marker)<<8;t[0]<<=8,255===(i=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),t[0]|=i,o[0]+=8}if(o[0]<0)throw new Error(`index=${o[0]} in getn()`);if(o[0]<this.markerIndex)return this.markerIndex=0,(65280|this.marker)<<8;r=t[0]>>o[0],t[0]&=65535>>16-o[0]}return r<1<<e-1&&(r+=1+(-1<<e)),r},r.lossless.Decoder.prototype.getPreviousX=function(s){return this.xLoc>0?this.getter(this.yLoc*this.xDim+this.xLoc-1,s):this.yLoc>0?this.getPreviousY(s):1<<this.frame.precision-1},r.lossless.Decoder.prototype.getPreviousXY=function(s){return this.xLoc>0&&this.yLoc>0?this.getter((this.yLoc-1)*this.xDim+this.xLoc-1,s):this.getPreviousY(s)},r.lossless.Decoder.prototype.getPreviousY=function(s){return this.yLoc>0?this.getter((this.yLoc-1)*this.xDim+this.xLoc,s):this.getPreviousX(s)},r.lossless.Decoder.prototype.isLastPixel=function(){return this.xLoc===this.xDim-1&&this.yLoc===this.yDim-1},r.lossless.Decoder.prototype.outputSingle=function(s){this.xLoc<this.xDim&&this.yLoc<this.yDim&&(this.setter(this.yLoc*this.xDim+this.xLoc,this.mask&s[0]),this.xLoc+=1,this.xLoc>=this.xDim&&(this.yLoc+=1,this.xLoc=0))},r.lossless.Decoder.prototype.outputRGB=function(s){var e=this.yLoc*this.xDim+this.xLoc;this.xLoc<this.xDim&&this.yLoc<this.yDim&&(this.setter(e,s[0],0),this.setter(e,s[1],1),this.setter(e,s[2],2),this.xLoc+=1,this.xLoc>=this.xDim&&(this.yLoc+=1,this.xLoc=0))},r.lossless.Decoder.prototype.setValue8=function(s,e){this.outputData[s]=e},r.lossless.Decoder.prototype.getValue8=function(s){return this.outputData[s]},(o=new ArrayBuffer(2),new DataView(o).setInt16(0,256,!0),256===new Int16Array(o)[0])?(r.lossless.Decoder.prototype.setValue16=r.lossless.Decoder.prototype.setValue8,r.lossless.Decoder.prototype.getValue16=r.lossless.Decoder.prototype.getValue8):(r.lossless.Decoder.prototype.setValue16=function(s,e){this.outputData[s]=(255&e)<<8|e>>8&255},r.lossless.Decoder.prototype.getValue16=function(s){var e=this.outputData[s];return(255&e)<<8|e>>8&255}),r.lossless.Decoder.prototype.setValueRGB=function(s,e,t){this.outputData[3*s+t]=e},r.lossless.Decoder.prototype.getValueRGB=function(s,e){return this.outputData[3*s+e]},r.lossless.Decoder.prototype.readApp=function(){var s=0,e=this.stream.get16();for(s+=2;s<e;)this.stream.get8(),s+=1;return e},r.lossless.Decoder.prototype.readComment=function(){var s,e="",t=0;for(s=this.stream.get16(),t+=2;t<s;)e+=this.stream.get8(),t+=1;return e},r.lossless.Decoder.prototype.readNumber=function(){if(4!==this.stream.get16())throw new Error("ERROR: Define number format throw new IOException [Ld!=4]");return this.stream.get16()},"undefined"!==typeof e&&e.exports&&(e.exports=r.lossless.Decoder)},{"./data-stream.js":2,"./frame-header.js":4,"./huffman-table.js":5,"./quantization-table.js":7,"./scan-header.js":9,"./utils.js":10}],4:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.ComponentSpec=o.lossless.ComponentSpec||(void 0!==s?s("./component-spec.js"):null),o.lossless.DataStream=o.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),o.lossless.FrameHeader=o.lossless.FrameHeader||function(){this.components=[],this.dimX=0,this.dimY=0,this.numComp=0,this.precision=0},o.lossless.FrameHeader.prototype.read=function(s){var e,t,r,i,a=0;for(e=s.get16(),a+=2,this.precision=s.get8(),a+=1,this.dimY=s.get16(),a+=2,this.dimX=s.get16(),a+=2,this.numComp=s.get8(),a+=1,t=1;t<=this.numComp;t+=1){if(a>e)throw new Error("ERROR: frame format error");if(r=s.get8(),(a+=1)>=e)throw new Error("ERROR: frame format error [c>=Lf]");i=s.get8(),a+=1,this.components[r]||(this.components[r]=new o.lossless.ComponentSpec),this.components[r].hSamp=i>>4,this.components[r].vSamp=15&i,this.components[r].quantTableSel=s.get8(),a+=1}if(a!==e)throw new Error("ERROR: frame format error [Lf!=count]");return 1},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.FrameHeader)},{"./component-spec.js":1,"./data-stream.js":2}],5:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.DataStream=o.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),o.lossless.Utils=o.lossless.Utils||(void 0!==s?s("./utils.js"):null),o.lossless.HuffmanTable=o.lossless.HuffmanTable||function(){this.l=o.lossless.Utils.createArray(4,2,16),this.th=[],this.v=o.lossless.Utils.createArray(4,2,16,200),this.tc=o.lossless.Utils.createArray(4,2),this.tc[0][0]=0,this.tc[1][0]=0,this.tc[2][0]=0,this.tc[3][0]=0,this.tc[0][1]=0,this.tc[1][1]=0,this.tc[2][1]=0,this.tc[3][1]=0,this.th[0]=0,this.th[1]=0,this.th[2]=0,this.th[3]=0},o.lossless.HuffmanTable.MSB=2147483648,o.lossless.HuffmanTable.prototype.read=function(s,e){var t,o,r,i,a,n,l=0;for(t=s.get16(),l+=2;l<t;){if(l+=1,(r=15&(o=s.get8()))>3)throw new Error("ERROR: Huffman table ID > 3");if((i=o>>4)>2)throw new Error("ERROR: Huffman table [Table class > 2 ]");for(this.th[r]=1,this.tc[r][i]=1,a=0;a<16;a+=1)this.l[r][i][a]=s.get8(),l+=1;for(a=0;a<16;a+=1)for(n=0;n<this.l[r][i][a];n+=1){if(l>t)throw new Error("ERROR: Huffman table format error [count>Lh]");this.v[r][i][a][n]=s.get8(),l+=1}}if(l!==t)throw new Error("ERROR: Huffman table format error [count!=Lf]");for(a=0;a<4;a+=1)for(n=0;n<2;n+=1)0!==this.tc[a][n]&&this.buildHuffTable(e[a][n],this.l[a][n],this.v[a][n]);return 1},o.lossless.HuffmanTable.prototype.buildHuffTable=function(s,e,t){var r,i,a,n,l;for(i=0,a=0;a<8;a+=1)for(n=0;n<e[a];n+=1)for(l=0;l<256>>a+1;l+=1)s[i]=t[a][n]|a+1<<8,i+=1;for(a=1;i<256;a+=1,i+=1)s[i]=a|o.lossless.HuffmanTable.MSB;for(r=1,i=0,a=8;a<16;a+=1)for(n=0;n<e[a];n+=1){for(l=0;l<256>>a-7;l+=1)s[256*r+i]=t[a][n]|a+1<<8,i+=1;if(i>=256){if(i>256)throw new Error("ERROR: Huffman table error(1)!");i=0,r+=1}}},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.HuffmanTable)},{"./data-stream.js":2,"./utils.js":10}],6:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.ComponentSpec=o.lossless.ComponentSpec||(void 0!==s?s("./component-spec.js"):null),o.lossless.DataStream=o.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),o.lossless.Decoder=o.lossless.Decoder||(void 0!==s?s("./decoder.js"):null),o.lossless.FrameHeader=o.lossless.FrameHeader||(void 0!==s?s("./frame-header.js"):null),o.lossless.HuffmanTable=o.lossless.HuffmanTable||(void 0!==s?s("./huffman-table.js"):null),o.lossless.QuantizationTable=o.lossless.QuantizationTable||(void 0!==s?s("./quantization-table.js"):null),o.lossless.ScanComponent=o.lossless.ScanComponent||(void 0!==s?s("./scan-component.js"):null),o.lossless.ScanHeader=o.lossless.ScanHeader||(void 0!==s?s("./scan-header.js"):null),o.lossless.Utils=o.lossless.Utils||(void 0!==s?s("./utils.js"):null),"undefined"!==typeof e&&e.exports&&(e.exports=o)},{"./component-spec.js":1,"./data-stream.js":2,"./decoder.js":3,"./frame-header.js":4,"./huffman-table.js":5,"./quantization-table.js":7,"./scan-component.js":8,"./scan-header.js":9,"./utils.js":10}],7:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.DataStream=o.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),o.lossless.Utils=o.lossless.Utils||(void 0!==s?s("./utils.js"):null),o.lossless.QuantizationTable=o.lossless.QuantizationTable||function(){this.precision=[],this.tq=[],this.quantTables=o.lossless.Utils.createArray(4,64),this.tq[0]=0,this.tq[1]=0,this.tq[2]=0,this.tq[3]=0},o.lossless.QuantizationTable.enhanceQuantizationTable=function(s,e){var t;for(t=0;t<8;t+=1)s[e[0+t]]*=90,s[e[32+t]]*=90,s[e[16+t]]*=118,s[e[48+t]]*=49,s[e[40+t]]*=71,s[e[8+t]]*=126,s[e[56+t]]*=25,s[e[24+t]]*=106;for(t=0;t<8;t+=1)s[e[0+8*t]]*=90,s[e[4+8*t]]*=90,s[e[2+8*t]]*=118,s[e[6+8*t]]*=49,s[e[5+8*t]]*=71,s[e[1+8*t]]*=126,s[e[7+8*t]]*=25,s[e[3+8*t]]*=106;for(t=0;t<64;t+=1)s[t]>>=6},o.lossless.QuantizationTable.prototype.read=function(s,e){var t,r,i,a,n=0;for(t=s.get16(),n+=2;n<t;){if(n+=1,(i=15&(r=s.get8()))>3)throw new Error("ERROR: Quantization table ID > 3");if(this.precision[i]=r>>4,0===this.precision[i])this.precision[i]=8;else{if(1!==this.precision[i])throw new Error("ERROR: Quantization table precision error");this.precision[i]=16}if(this.tq[i]=1,8===this.precision[i]){for(a=0;a<64;a+=1){if(n>t)throw new Error("ERROR: Quantization table format error");this.quantTables[i][a]=s.get8(),n+=1}o.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[i],e)}else{for(a=0;a<64;a+=1){if(n>t)throw new Error("ERROR: Quantization table format error");this.quantTables[i][a]=s.get16(),n+=2}o.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[i],e)}}if(n!==t)throw new Error("ERROR: Quantization table error [count!=Lq]");return 1},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.QuantizationTable)},{"./data-stream.js":2,"./utils.js":10}],8:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.ScanComponent=o.lossless.ScanComponent||function(){this.acTabSel=0,this.dcTabSel=0,this.scanCompSel=0},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.ScanComponent)},{}],9:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.DataStream=o.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),o.lossless.ScanComponent=o.lossless.ScanComponent||(void 0!==s?s("./scan-component.js"):null),o.lossless.ScanHeader=o.lossless.ScanHeader||function(){this.ah=0,this.al=0,this.numComp=0,this.selection=0,this.spectralEnd=0,this.components=[]},o.lossless.ScanHeader.prototype.read=function(s){var e,t,r,i=0;for(e=s.get16(),i+=2,this.numComp=s.get8(),i+=1,t=0;t<this.numComp;t+=1){if(this.components[t]=new o.lossless.ScanComponent,i>e)throw new Error("ERROR: scan header format error");this.components[t].scanCompSel=s.get8(),i+=1,r=s.get8(),i+=1,this.components[t].dcTabSel=r>>4,this.components[t].acTabSel=15&r}if(this.selection=s.get8(),i+=1,this.spectralEnd=s.get8(),i+=1,r=s.get8(),this.ah=r>>4,this.al=15&r,(i+=1)!==e)throw new Error("ERROR: scan header format error [count!=Ns]");return 1},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.ScanHeader)},{"./data-stream.js":2,"./scan-component.js":8}],10:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.Utils=o.lossless.Utils||{},o.lossless.Utils.createArray=function(s){var e=new Array(s||0),t=s;if(arguments.length>1)for(var r=Array.prototype.slice.call(arguments,1);t--;)e[s-1-t]=o.lossless.Utils.createArray.apply(this,r);return e},o.lossless.Utils.makeCRCTable=function(){for(var s,e=[],t=0;t<256;t++){s=t;for(var o=0;o<8;o++)s=1&s?3988292384^s>>>1:s>>>1;e[t]=s}return e},o.lossless.Utils.crc32=function(s){for(var e=new Uint8Array(s.buffer),t=o.lossless.Utils.crcTable||(o.lossless.Utils.crcTable=o.lossless.Utils.makeCRCTable()),r=~0,i=0;i<e.length;i++)r=r>>>8^t[255&(r^e[i])];return~r>>>0},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.Utils)},{}]},{},[6])(6)}))}}]);
2
+ //# sourceMappingURL=610.min.js.map