@cornerstonejs/dicom-image-loader 2.0.0-beta.20 → 2.0.0-beta.22

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 (119) hide show
  1. package/dist/920.bundle.min.js +1 -1
  2. package/dist/920.bundle.min.js.map +1 -1
  3. package/dist/cornerstoneDICOMImageLoader.bundle.min.js +1 -1
  4. package/dist/cornerstoneDICOMImageLoader.bundle.min.js.map +1 -1
  5. package/dist/dynamic-import/918.min.js +1 -1
  6. package/dist/dynamic-import/918.min.js.map +1 -1
  7. package/dist/dynamic-import/958.min.js +1 -1
  8. package/dist/dynamic-import/958.min.js.map +1 -1
  9. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
  10. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
  11. package/dist/esm/codecs/jpeg.d.ts +1 -10
  12. package/dist/esm/codecs/jpeg.js +1 -1
  13. package/dist/esm/codecs/jpegLossless.js +1 -1
  14. package/dist/esm/src/decodeImageFrameWorker.js +6 -10
  15. package/dist/esm/src/externalModules.js +1 -4
  16. package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +3 -3
  17. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +1 -1
  18. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +1 -1
  19. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +1 -1
  20. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +1 -1
  21. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +1 -1
  22. package/dist/esm/src/imageLoader/configure.d.ts +1 -1
  23. package/dist/esm/src/imageLoader/configure.js +2 -0
  24. package/dist/esm/src/imageLoader/createImage.d.ts +4 -3
  25. package/dist/esm/src/imageLoader/createImage.js +13 -20
  26. package/dist/esm/src/imageLoader/decodeImageFrame.d.ts +2 -2
  27. package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.d.ts +3 -3
  28. package/dist/esm/src/imageLoader/getImageFrame.d.ts +2 -2
  29. package/dist/esm/src/imageLoader/getInstanceModule.d.ts +1 -1
  30. package/dist/esm/src/imageLoader/getScalingParameters.js +2 -1
  31. package/dist/esm/src/imageLoader/index.d.ts +1 -1
  32. package/dist/esm/src/imageLoader/internal/index.d.ts +3 -1
  33. package/dist/esm/src/imageLoader/internal/index.js +3 -1
  34. package/dist/esm/src/imageLoader/internal/options.d.ts +1 -1
  35. package/dist/esm/src/imageLoader/internal/options.js +0 -4
  36. package/dist/esm/src/imageLoader/internal/rangeRequest.d.ts +3 -3
  37. package/dist/esm/src/imageLoader/internal/streamRequest.d.ts +1 -1
  38. package/dist/esm/src/imageLoader/internal/xhrRequest.d.ts +1 -1
  39. package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.d.ts +2 -2
  40. package/dist/esm/src/imageLoader/registerLoaders.js +4 -4
  41. package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.d.ts +2 -1
  42. package/dist/esm/src/imageLoader/wadors/getPixelData.d.ts +1 -1
  43. package/dist/esm/src/imageLoader/wadors/index.d.ts +5 -1
  44. package/dist/esm/src/imageLoader/wadors/index.js +5 -1
  45. package/dist/esm/src/imageLoader/wadors/loadImage.d.ts +1 -1
  46. package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +1 -1
  47. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.d.ts +1 -1
  48. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.js +1 -1
  49. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.d.ts +1 -1
  50. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.d.ts +1 -1
  51. package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +1 -1
  52. package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.d.ts +1 -1
  53. package/dist/esm/src/imageLoader/wadors/metaData/getValue.d.ts +1 -1
  54. package/dist/esm/src/imageLoader/wadors/metaData/getValue.js +1 -1
  55. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.d.ts +1 -1
  56. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.js +2 -3
  57. package/dist/esm/src/imageLoader/wadors/metaDataManager.d.ts +7 -2
  58. package/dist/esm/src/imageLoader/wadors/metaDataManager.js +25 -4
  59. package/dist/esm/src/imageLoader/wadors/register.js +1 -1
  60. package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.js +4 -2
  61. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.d.ts +3 -6
  62. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.js +2 -2
  63. package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.d.ts +1 -1
  64. package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +1 -1
  65. package/dist/esm/src/imageLoader/wadouri/getPixelData.d.ts +1 -1
  66. package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.d.ts +1 -1
  67. package/dist/esm/src/imageLoader/wadouri/index.d.ts +0 -1
  68. package/dist/esm/src/imageLoader/wadouri/loadImage.d.ts +3 -3
  69. package/dist/esm/src/imageLoader/wadouri/loadedDataSets.d.ts +7 -0
  70. package/dist/esm/src/imageLoader/wadouri/loadedDataSets.js +5 -0
  71. package/dist/esm/src/imageLoader/wadouri/metaData/USHelpers.d.ts +2 -0
  72. package/dist/esm/src/imageLoader/wadouri/metaData/USHelpers.js +44 -0
  73. package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +3 -3
  74. package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.d.ts +2 -2
  75. package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +1 -1
  76. package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.d.ts +1 -1
  77. package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +1 -1
  78. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.d.ts +1 -1
  79. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.js +13 -0
  80. package/dist/esm/src/imageLoader/wadouri/register.d.ts +1 -1
  81. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +0 -1
  82. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.js +1 -1
  83. package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.d.ts +1 -1
  84. package/dist/esm/src/shared/decoders/decodeBigEndian.d.ts +3 -3
  85. package/dist/esm/src/shared/decoders/decodeHTJ2K.d.ts +2 -2
  86. package/dist/esm/src/shared/decoders/decodeJPEG2000.d.ts +3 -2
  87. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +4 -3
  88. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
  89. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +1 -1
  90. package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.d.ts +2 -2
  91. package/dist/esm/src/shared/decoders/decodeJPEGLS.d.ts +3 -2
  92. package/dist/esm/src/shared/decoders/decodeJPEGLossless.d.ts +4 -3
  93. package/dist/esm/src/shared/decoders/decodeLittleEndian.d.ts +3 -3
  94. package/dist/esm/src/shared/decoders/decodeRLE.d.ts +3 -3
  95. package/dist/esm/src/shared/getMinMax.d.ts +2 -2
  96. package/dist/esm/src/shared/getPixelDataTypeFromMinMax.d.ts +2 -2
  97. package/dist/esm/src/shared/scaling/scaleArray.d.ts +2 -2
  98. package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.d.ts +1 -1
  99. package/dist/esm/src/types/DICOMLoaderIImage.d.ts +3 -4
  100. package/dist/esm/src/types/DICOMLoaderImageOptions.d.ts +4 -7
  101. package/dist/esm/src/types/LoadRequestFunction.d.ts +1 -1
  102. package/dist/esm/src/types/LoaderDecodeOptions.d.ts +0 -2
  103. package/dist/esm/src/types/LoaderOptions.d.ts +9 -9
  104. package/dist/esm/src/types/WebWorkerTypes.d.ts +8 -8
  105. package/dist/esm/src/types/XHRRequest.d.ts +2 -2
  106. package/dist/esm/src/types/index.d.ts +11 -14
  107. package/package.json +6 -10
  108. package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.d.ts +0 -15
  109. package/dist/esm/src/imageLoader/wadors/retrieveMultiframeMetadata.js +0 -26
  110. package/dist/esm/src/shared/calculateMinMax.d.ts +0 -2
  111. package/dist/esm/src/shared/calculateMinMax.js +0 -24
  112. package/dist/esm/src/shared/calculateMinMax_test.d.ts +0 -1
  113. package/dist/esm/src/shared/calculateMinMax_test.js +0 -38
  114. package/dist/esm/src/types/ImageFrame.d.ts +0 -43
  115. package/dist/esm/src/types/ImageFrame.js +0 -1
  116. package/dist/esm/src/types/MetadataModules.d.ts +0 -66
  117. package/dist/esm/src/types/MetadataModules.js +0 -1
  118. package/dist/esm/src/types/PixelDataTypedArray.d.ts +0 -2
  119. package/dist/esm/src/types/PixelDataTypedArray.js +0 -1
@@ -1,10 +1 @@
1
- declare namespace ColorSpace {
2
- let Unkown: number;
3
- let Grayscale: number;
4
- let AdobeRGB: number;
5
- let RGB: number;
6
- let CYMK: number;
7
- }
8
- declare var JpegImage: {
9
- new (): {};
10
- };
1
+ export {};
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var ColorSpace = { Unkown: 0, Grayscale: 1, AdobeRGB: 2, RGB: 3, CYMK: 4 };
3
2
  var JpegImage = (function jpegImage() {
4
3
  'use strict';
@@ -888,3 +887,4 @@ var JpegImage = (function jpegImage() {
888
887
  });
889
888
  return JpegImage;
890
889
  })();
890
+ export {};
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  (function (f) {
3
2
  if (typeof exports === 'object' && typeof module !== 'undefined') {
4
3
  module.exports = f();
@@ -1217,3 +1216,4 @@
1217
1216
  ],
1218
1217
  }, {}, [6])(6);
1219
1218
  });
1219
+ export {};
@@ -100,7 +100,6 @@ async function decodeImageFrame(imageFrame, transferSyntax, pixelData, decodeCon
100
100
  return postProcessed;
101
101
  }
102
102
  function postProcessDecodedPixels(imageFrame, options, start, decodeConfig) {
103
- const { use16BitDataType } = decodeConfig || {};
104
103
  const shouldShift = imageFrame.pixelRepresentation !== undefined &&
105
104
  imageFrame.pixelRepresentation === 1;
106
105
  const shift = shouldShift && imageFrame.bitsStored !== undefined
@@ -116,8 +115,8 @@ function postProcessDecodedPixels(imageFrame, options, start, decodeConfig) {
116
115
  const { min: minBeforeScale, max: maxBeforeScale } = getMinMax(imageFrame.pixelData);
117
116
  const typedArrayConstructors = {
118
117
  Uint8Array,
119
- Uint16Array: use16BitDataType ? Uint16Array : undefined,
120
- Int16Array: use16BitDataType ? Int16Array : undefined,
118
+ Uint16Array,
119
+ Int16Array,
121
120
  Float32Array,
122
121
  };
123
122
  const type = options.targetBuffer?.type;
@@ -169,12 +168,9 @@ function postProcessDecodedPixels(imageFrame, options, start, decodeConfig) {
169
168
  minAfterScale = minBeforeScale;
170
169
  maxAfterScale = maxBeforeScale;
171
170
  }
172
- const hasTargetBuffer = options.targetBuffer !== undefined;
173
- if (!hasTargetBuffer || !options.isSharedArrayBuffer) {
174
- imageFrame.pixelData = pixelDataArray;
175
- }
176
- imageFrame.minAfterScale = minAfterScale;
177
- imageFrame.maxAfterScale = maxAfterScale;
171
+ imageFrame.pixelData = pixelDataArray;
172
+ imageFrame.smallestPixelValue = minAfterScale;
173
+ imageFrame.largestPixelValue = maxAfterScale;
178
174
  const end = new Date().getTime();
179
175
  imageFrame.decodeTimeInMS = end - start;
180
176
  return imageFrame;
@@ -183,7 +179,7 @@ function _handleTargetBuffer(options, imageFrame, typedArrayConstructors, pixelD
183
179
  const { arrayBuffer, type, offset: rawOffset = 0, length: rawLength, rows, } = options.targetBuffer;
184
180
  const TypedArrayConstructor = typedArrayConstructors[type];
185
181
  if (!TypedArrayConstructor) {
186
- throw new Error(`target array ${type} is not supported, you need to set use16BitDataType to true if you want to use Uint16Array or Int16Array.`);
182
+ throw new Error(`target array ${type} is not supported, or doesn't exist.`);
187
183
  }
188
184
  if (rows && rows != imageFrame.rows) {
189
185
  scaleImageFrame(imageFrame, options.targetBuffer, TypedArrayConstructor);
@@ -1,5 +1,4 @@
1
- import { getOptions } from './imageLoader/internal';
2
- import registerLoaders from './imageLoader/registerLoaders';
1
+ import { getOptions } from './imageLoader/internal/options';
3
2
  let cornerstone;
4
3
  let dicomParser;
5
4
  const workerFn = () => {
@@ -9,7 +8,6 @@ const workerFn = () => {
9
8
  const external = {
10
9
  set cornerstone(cs) {
11
10
  cornerstone = cs;
12
- registerLoaders(cornerstone);
13
11
  const options = getOptions();
14
12
  const workerManager = external.cornerstone.getWebWorkerManager();
15
13
  workerManager.registerWorker('dicomImageLoader', workerFn, {
@@ -22,7 +20,6 @@ const external = {
22
20
  if (!cornerstone) {
23
21
  throw new Error('cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.');
24
22
  }
25
- registerLoaders(cornerstone);
26
23
  }
27
24
  return cornerstone;
28
25
  },
@@ -1,3 +1,3 @@
1
- import { ByteArray } from 'dicom-parser';
2
- import { ImageFrame } from '../../types';
3
- export default function (imageFrame: ImageFrame, colorBuffer: ByteArray, useRGBA: boolean): void;
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ export default function (imageFrame: Types.IImageFrame, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -1,2 +1,2 @@
1
- import { ByteArray } from 'dicom-parser';
1
+ import type { ByteArray } from 'dicom-parser';
2
2
  export default function (imageFrame: ByteArray, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -1,2 +1,2 @@
1
- import { ByteArray } from 'dicom-parser';
1
+ import type { ByteArray } from 'dicom-parser';
2
2
  export default function (imageFrame: ByteArray, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -1,2 +1,2 @@
1
- import { ByteArray } from 'dicom-parser';
1
+ import type { ByteArray } from 'dicom-parser';
2
2
  export default function (imageFrame: ByteArray, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -1,2 +1,2 @@
1
- import { ByteArray } from 'dicom-parser';
1
+ import type { ByteArray } from 'dicom-parser';
2
2
  export default function (imageFrame: ByteArray, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -1,2 +1,2 @@
1
- import { ByteArray } from 'dicom-parser';
1
+ import type { ByteArray } from 'dicom-parser';
2
2
  export default function (imageFrame: ByteArray, colorBuffer: ByteArray, useRGBA: boolean): void;
@@ -1,3 +1,3 @@
1
- import { LoaderOptions } from '../types';
1
+ import type { LoaderOptions } from '../types';
2
2
  declare function configure(options: LoaderOptions): void;
3
3
  export default configure;
@@ -1,5 +1,6 @@
1
1
  import { setOptions } from './internal/index';
2
2
  import external from '../externalModules';
3
+ import registerLoaders from './registerLoaders';
3
4
  function configure(options) {
4
5
  if (!options.cornerstone || !options.dicomParser) {
5
6
  throw new Error('cornerstoneWADOImageLoader.configure: Options object must contain the keys "cornerstone" and "dicomParser".');
@@ -7,5 +8,6 @@ function configure(options) {
7
8
  setOptions(options);
8
9
  external.cornerstone = options.cornerstone;
9
10
  external.dicomParser = options.dicomParser;
11
+ registerLoaders(options.cornerstone);
10
12
  }
11
13
  export default configure;
@@ -1,4 +1,5 @@
1
- import { ByteArray } from 'dicom-parser';
2
- import { DICOMLoaderImageOptions, DICOMLoaderIImage, ImageFrame } from '../types';
3
- declare function createImage(imageId: string, pixelData: ByteArray, transferSyntax: string, options?: DICOMLoaderImageOptions): Promise<DICOMLoaderIImage | ImageFrame>;
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { DICOMLoaderImageOptions, DICOMLoaderIImage } from '../types';
3
+ import type { Types } from '@cornerstonejs/core/src';
4
+ declare function createImage(imageId: string, pixelData: ByteArray, transferSyntax: string, options?: DICOMLoaderImageOptions): Promise<DICOMLoaderIImage | Types.IImageFrame>;
4
5
  export default createImage;
@@ -58,19 +58,11 @@ function createImage(imageId, pixelData, transferSyntax, options = {}) {
58
58
  if (scalingParameters) {
59
59
  options.preScale = {
60
60
  ...options.preScale,
61
- scalingParameters,
61
+ scalingParameters: scalingParameters,
62
62
  };
63
63
  }
64
64
  }
65
- options.isSharedArrayBuffer =
66
- options.targetBuffer?.arrayBuffer &&
67
- options.targetBuffer.arrayBuffer instanceof SharedArrayBuffer;
68
65
  const { decodeConfig } = getOptions();
69
- decodeConfig.use16BitDataType =
70
- (options && options.targetBuffer?.type === 'Uint16Array') ||
71
- options.targetBuffer?.type === 'Int16Array'
72
- ? true
73
- : options.useNativeDataType || decodeConfig.use16BitDataType;
74
66
  Object.keys(imageFrame).forEach((key) => {
75
67
  if (typeof imageFrame[key] === 'function' ||
76
68
  imageFrame[key] instanceof Promise) {
@@ -78,15 +70,13 @@ function createImage(imageId, pixelData, transferSyntax, options = {}) {
78
70
  }
79
71
  });
80
72
  const decodePromise = decodeImageFrame(imageFrame, transferSyntax, pixelData, canvas, options, decodeConfig);
81
- const { use16BitDataType } = decodeConfig;
82
73
  const isColorImage = isColorImageFn(imageFrame.photometricInterpretation);
83
74
  return new Promise((resolve, reject) => {
84
75
  decodePromise.then(function (imageFrame) {
85
- if (options.skipCreateImage) {
86
- return resolve(imageFrame);
87
- }
88
76
  let alreadyTyped = false;
89
- if (options.targetBuffer && options.targetBuffer.type && !isColorImage) {
77
+ if (options.targetBuffer &&
78
+ options.targetBuffer.type &&
79
+ !isColorImage) {
90
80
  const { arrayBuffer, type, offset: rawOffset = 0, length: rawLength, } = options.targetBuffer;
91
81
  const imageFrameLength = imageFrame.pixelDataLength;
92
82
  const offset = rawOffset;
@@ -95,8 +85,8 @@ function createImage(imageId, pixelData, transferSyntax, options = {}) {
95
85
  : imageFrameLength - offset;
96
86
  const typedArrayConstructors = {
97
87
  Uint8Array,
98
- Uint16Array: use16BitDataType ? Uint16Array : undefined,
99
- Int16Array: use16BitDataType ? Int16Array : undefined,
88
+ Uint16Array,
89
+ Int16Array,
100
90
  Float32Array,
101
91
  };
102
92
  if (length !== imageFrame.pixelDataLength) {
@@ -152,6 +142,8 @@ function createImage(imageId, pixelData, transferSyntax, options = {}) {
152
142
  }
153
143
  const image = {
154
144
  imageId,
145
+ dataType: imageFrame.pixelData.constructor
146
+ .name,
155
147
  color: isColorImage,
156
148
  calibration: calibrationModule,
157
149
  columnPixelSpacing: imagePlaneModule.columnPixelSpacing,
@@ -186,7 +178,7 @@ function createImage(imageId, pixelData, transferSyntax, options = {}) {
186
178
  rgba: isColorImage && useRGBA,
187
179
  getPixelData: () => imageFrame.pixelData,
188
180
  getCanvas: undefined,
189
- numComps: undefined,
181
+ numberOfComponents: imageFrame.samplesPerPixel,
190
182
  };
191
183
  if (image.color) {
192
184
  image.getCanvas = function () {
@@ -235,9 +227,10 @@ function createImage(imageId, pixelData, transferSyntax, options = {}) {
235
227
  image.windowWidth = 256;
236
228
  image.windowCenter = 128;
237
229
  }
238
- if (image.windowCenter === undefined || image.windowWidth === undefined) {
239
- const minVoi = image.imageFrame.minAfterScale;
240
- const maxVoi = image.imageFrame.maxAfterScale;
230
+ if (image.windowCenter === undefined ||
231
+ image.windowWidth === undefined) {
232
+ const minVoi = image.imageFrame.smallestPixelValue;
233
+ const maxVoi = image.imageFrame.largestPixelValue;
241
234
  image.windowWidth = maxVoi - minVoi;
242
235
  image.windowCenter = (maxVoi + minVoi) / 2;
243
236
  }
@@ -1,3 +1,3 @@
1
- import { ImageFrame } from '../types';
2
- declare function decodeImageFrame(imageFrame: any, transferSyntax: any, pixelData: any, canvas: any, options: {}, decodeConfig: any): Promise<ImageFrame>;
1
+ import type { Types } from '@cornerstonejs/core';
2
+ declare function decodeImageFrame(imageFrame: any, transferSyntax: any, pixelData: any, canvas: any, options: {}, decodeConfig: any): Promise<Types.IImageFrame>;
3
3
  export default decodeImageFrame;
@@ -1,4 +1,4 @@
1
- import { ByteArray } from 'dicom-parser';
2
- import { ImageFrame } from '../types';
3
- declare function decodeJPEGBaseline8BitColor(imageFrame: ImageFrame, pixelData: ByteArray, canvas: HTMLCanvasElement): Promise<ImageFrame>;
1
+ import type { ByteArray } from 'dicom-parser';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ declare function decodeJPEGBaseline8BitColor(imageFrame: Types.IImageFrame, pixelData: ByteArray, canvas: HTMLCanvasElement): Promise<Types.IImageFrame>;
4
4
  export default decodeJPEGBaseline8BitColor;
@@ -1,3 +1,3 @@
1
- import { ImageFrame } from '../types';
2
- declare function getImageFrame(imageId: string): ImageFrame;
1
+ import type { Types } from '@cornerstonejs/core';
2
+ declare function getImageFrame(imageId: string): Types.IImageFrame;
3
3
  export default getImageFrame;
@@ -1,3 +1,3 @@
1
- declare function getInstanceModule(imageId: string, metaDataProvider: any, types: string[]): object;
1
+ declare function getInstanceModule(imageId: any, metaDataProvider: any, types: any): {};
2
2
  declare const instanceModuleNames: string[];
3
3
  export { getInstanceModule, instanceModuleNames };
@@ -1,6 +1,7 @@
1
1
  export default function getScalingParameters(metaData, imageId) {
2
2
  const modalityLutModule = metaData.get('modalityLutModule', imageId) || {};
3
- const generalSeriesModule = metaData.get('generalSeriesModule', imageId) || {};
3
+ const generalSeriesModule = (metaData.get('generalSeriesModule', imageId) ||
4
+ {});
4
5
  const { modality } = generalSeriesModule;
5
6
  const scalingParameters = {
6
7
  rescaleSlope: modalityLutModule.rescaleSlope,
@@ -1,4 +1,3 @@
1
- /// <reference types="dicom-parser" />
2
1
  import { convertRGBColorByPixel, convertRGBColorByPlane, convertYBRFullByPixel, convertYBRFullByPlane, convertPALETTECOLOR } from './colorSpaceConverters/index';
3
2
  import { default as wadouri } from './wadouri/index';
4
3
  import { default as wadors } from './wadors/index';
@@ -82,6 +81,7 @@ declare const cornerstoneDICOMImageLoader: {
82
81
  isJPEGBaseline8BitColor: typeof isJPEGBaseline8BitColor;
83
82
  internal: {
84
83
  xhrRequest: typeof import("./internal/xhrRequest").default;
84
+ streamRequest: typeof import("./internal/streamRequest").default;
85
85
  setOptions: typeof import("./internal/options").setOptions;
86
86
  getOptions: typeof import("./internal/options").getOptions;
87
87
  };
@@ -1,8 +1,10 @@
1
1
  import { default as xhrRequest } from './xhrRequest';
2
+ import { default as streamRequest } from './streamRequest';
2
3
  import { setOptions, getOptions } from './options';
3
4
  declare const internal: {
4
5
  xhrRequest: typeof xhrRequest;
6
+ streamRequest: typeof streamRequest;
5
7
  setOptions: typeof setOptions;
6
8
  getOptions: typeof getOptions;
7
9
  };
8
- export { setOptions, getOptions, xhrRequest, internal };
10
+ export { setOptions, getOptions, xhrRequest, internal, streamRequest };
@@ -1,8 +1,10 @@
1
1
  import { default as xhrRequest } from './xhrRequest';
2
+ import { default as streamRequest } from './streamRequest';
2
3
  import { setOptions, getOptions } from './options';
3
4
  const internal = {
4
5
  xhrRequest,
6
+ streamRequest,
5
7
  setOptions,
6
8
  getOptions,
7
9
  };
8
- export { setOptions, getOptions, xhrRequest, internal };
10
+ export { setOptions, getOptions, xhrRequest, internal, streamRequest };
@@ -1,3 +1,3 @@
1
- import { LoaderOptions } from '../../types';
1
+ import type { LoaderOptions } from '../../types';
2
2
  export declare function setOptions(newOptions: LoaderOptions): void;
3
3
  export declare function getOptions(): LoaderOptions;
@@ -10,10 +10,6 @@ let options = {
10
10
  imageCreated() {
11
11
  },
12
12
  strict: false,
13
- decodeConfig: {
14
- convertFloatPixelDataToInt: true,
15
- use16BitDataType: false,
16
- },
17
13
  };
18
14
  export function setOptions(newOptions) {
19
15
  options = Object.assign(options, newOptions);
@@ -1,6 +1,6 @@
1
- import { Enums } from '@cornerstonejs/core';
2
- import { LoaderXhrRequestPromise } from '../../types';
3
- import { CornerstoneWadoRsLoaderOptions } from '../wadors/loadImage';
1
+ import type { Enums } from '@cornerstonejs/core';
2
+ import type { LoaderXhrRequestPromise } from '../../types';
3
+ import type { CornerstoneWadoRsLoaderOptions } from '../wadors/loadImage';
4
4
  export default function rangeRequest(url: string, imageId: string, defaultHeaders?: Record<string, string>, options?: CornerstoneWadoRsLoaderOptions): LoaderXhrRequestPromise<{
5
5
  contentType: string;
6
6
  pixelData: Uint8Array;
@@ -1,2 +1,2 @@
1
- import { CornerstoneWadoRsLoaderOptions } from '../wadors/loadImage';
1
+ import type { CornerstoneWadoRsLoaderOptions } from '../wadors/loadImage';
2
2
  export default function streamRequest(url: string, imageId: string, defaultHeaders?: Record<string, string>, options?: CornerstoneWadoRsLoaderOptions): import("packages/core/dist/esm/utilities/ProgressiveIterator").PromiseIterator<unknown>;
@@ -1,3 +1,3 @@
1
- import { LoaderXhrRequestParams, LoaderXhrRequestPromise } from '../../types';
1
+ import type { LoaderXhrRequestParams, LoaderXhrRequestPromise } from '../../types';
2
2
  declare function xhrRequest(url: string, imageId: string, defaultHeaders?: Record<string, string>, params?: LoaderXhrRequestParams): LoaderXhrRequestPromise<ArrayBuffer>;
3
3
  export default xhrRequest;
@@ -1,3 +1,3 @@
1
- import { ImageFrame } from '../types';
2
- declare function isJPEGBaseline8BitColor(imageFrame: ImageFrame, transferSyntax: string): boolean;
1
+ import type { Types } from '@cornerstonejs/core';
2
+ declare function isJPEGBaseline8BitColor(imageFrame: Types.IImageFrame, transferSyntax: string): boolean;
3
3
  export default isJPEGBaseline8BitColor;
@@ -1,7 +1,7 @@
1
- import wadors from './wadors/index';
2
- import wadouri from './wadouri/index';
1
+ import wadouriRegister from './wadouri/register';
2
+ import wadorsRegister from './wadors/register';
3
3
  function registerLoaders(cornerstone) {
4
- wadors.register(cornerstone);
5
- wadouri.register(cornerstone);
4
+ wadorsRegister(cornerstone);
5
+ wadouriRegister(cornerstone);
6
6
  }
7
7
  export default registerLoaders;
@@ -1,2 +1,3 @@
1
- import { Types, Enums } from '@cornerstonejs/core';
1
+ import type { Types } from '@cornerstonejs/core';
2
+ import { Enums } from '@cornerstonejs/core';
2
3
  export declare function getImageQualityStatus(retrieveOptions: Types.RetrieveOptions, done?: boolean): Enums.ImageQualityStatus;
@@ -1,4 +1,4 @@
1
- import { CornerstoneWadoRsLoaderOptions } from './loadImage';
1
+ import type { CornerstoneWadoRsLoaderOptions } from './loadImage';
2
2
  declare function getPixelData(uri: string, imageId: string, mediaType?: string, options?: CornerstoneWadoRsLoaderOptions): import("packages/core/dist/esm/utilities/ProgressiveIterator").PromiseIterator<unknown> | import("../../types").LoaderXhrRequestPromise<{
3
3
  contentType: string;
4
4
  pixelData: Uint8Array;
@@ -1,4 +1,8 @@
1
- import { getNumberString, getNumberValue, getNumberValues, getValue, metaDataProvider } from './metaData/index';
1
+ import getNumberString from './metaData/getNumberString';
2
+ import getNumberValue from './metaData/getNumberValue';
3
+ import getNumberValues from './metaData/getNumberValues';
4
+ import getValue from './metaData/getValue';
5
+ import metaDataProvider from './metaData/metaDataProvider';
2
6
  import findIndexOfString from './findIndexOfString';
3
7
  import getPixelData from './getPixelData';
4
8
  import loadImage from './loadImage';
@@ -1,4 +1,8 @@
1
- import { getNumberString, getNumberValue, getNumberValues, getValue, metaDataProvider, } from './metaData/index';
1
+ import getNumberString from './metaData/getNumberString';
2
+ import getNumberValue from './metaData/getNumberValue';
3
+ import getNumberValues from './metaData/getNumberValues';
4
+ import getValue from './metaData/getValue';
5
+ import metaDataProvider from './metaData/metaDataProvider';
2
6
  import findIndexOfString from './findIndexOfString';
3
7
  import getPixelData from './getPixelData';
4
8
  import metaDataManager from './metaDataManager';
@@ -1,5 +1,5 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
- import { DICOMLoaderImageOptions } from '../../types';
2
+ import type { DICOMLoaderImageOptions } from '../../types';
3
3
  export declare function getTransferSyntaxForContentType(contentType: string): string;
4
4
  export interface StreamingData {
5
5
  url: string;
@@ -1,2 +1,2 @@
1
- declare function getFirstNumberValue(sequence: any, key: string): number | null;
1
+ declare function getFirstNumberValue(sequence: unknown, key: string): number | null;
2
2
  export { getFirstNumberValue };
@@ -1,3 +1,3 @@
1
- import { WADORSMetaDataElement } from '../../../types';
1
+ import type { WADORSMetaDataElement } from '../../../types';
2
2
  declare function getNumberString(element: WADORSMetaDataElement, index: number, defaultValue: number): number;
3
3
  export default getNumberString;
@@ -4,6 +4,6 @@ function getNumberString(element, index, defaultValue) {
4
4
  if (value === undefined) {
5
5
  return;
6
6
  }
7
- return parseFloat(value);
7
+ return parseFloat(String(value));
8
8
  }
9
9
  export default getNumberString;
@@ -1,3 +1,3 @@
1
- import { WADORSMetaDataElement } from '../../../types';
1
+ import type { WADORSMetaDataElement } from '../../../types';
2
2
  declare function getNumberValue(element: WADORSMetaDataElement, index?: number): number;
3
3
  export default getNumberValue;
@@ -1,3 +1,3 @@
1
- import { WADORSMetaDataElement } from '../../../types';
1
+ import type { WADORSMetaDataElement } from '../../../types';
2
2
  declare function getNumberValues(element: WADORSMetaDataElement, minimumLength?: number): number[];
3
3
  export default getNumberValues;
@@ -1,4 +1,4 @@
1
- import { WADORSMetaData } from '../../../types';
1
+ import type { WADORSMetaData } from '../../../types';
2
2
  export default function getOverlayPlaneModule(metaData: WADORSMetaData): {
3
3
  overlays: any[];
4
4
  };
@@ -1,3 +1,3 @@
1
- import { WADORSMetaDataElement } from '../../../types';
1
+ import type { WADORSMetaDataElement } from '../../../types';
2
2
  declare function getSequenceItems(element: any): WADORSMetaDataElement[];
3
3
  export default getSequenceItems;
@@ -1,3 +1,3 @@
1
- import { WADORSMetaDataElement } from '../../../types';
1
+ import type { WADORSMetaDataElement } from '../../../types';
2
2
  declare function getValue<ReturnType = unknown>(element: WADORSMetaDataElement, index?: number, defaultValue?: ReturnType): ReturnType;
3
3
  export default getValue;
@@ -6,7 +6,7 @@ function getValue(element, index, defaultValue) {
6
6
  if (!element.Value) {
7
7
  return defaultValue;
8
8
  }
9
- if (element.Value.length <= index) {
9
+ if (Array.isArray(element.Value) && element.Value.length <= index) {
10
10
  return defaultValue;
11
11
  }
12
12
  return element.Value[index];
@@ -1,4 +1,4 @@
1
- declare function metaDataProvider(type: any, imageId: any): object;
1
+ declare function metaDataProvider(type: any, imageId: any): {};
2
2
  export declare function getImageUrlModule(imageId: any, metaData: any): {
3
3
  isVideo: any;
4
4
  rendered: any;
@@ -2,10 +2,9 @@ import external from '../../../externalModules';
2
2
  import getNumberValues from './getNumberValues';
3
3
  import getNumberValue from './getNumberValue';
4
4
  import getOverlayPlaneModule from './getOverlayPlaneModule';
5
- import metaDataManager from '../metaDataManager';
5
+ import metaDataManager, { retrieveMultiframeMetadata, } from '../metaDataManager';
6
6
  import getValue from './getValue';
7
7
  import { getMultiframeInformation, getFrameInformation, } from '../combineFrameInstance';
8
- import multiframeMetadata from '../retrieveMultiframeMetadata';
9
8
  import { extractOrientationFromMetadata, extractPositionFromMetadata, } from './extractPositioningFromMetadata';
10
9
  import { getImageTypeSubItemFromMetadata } from './NMHelpers';
11
10
  import isNMReconstructable from '../../isNMReconstructable';
@@ -15,7 +14,7 @@ function metaDataProvider(type, imageId) {
15
14
  const { MetadataModules } = external.cornerstone.Enums;
16
15
  const { dicomParser } = external;
17
16
  if (type === MetadataModules.MULTIFRAME) {
18
- const { metadata, frame } = multiframeMetadata.retrieveMultiframeMetadata(imageId);
17
+ const { metadata, frame } = retrieveMultiframeMetadata(imageId);
19
18
  if (!metadata) {
20
19
  return;
21
20
  }
@@ -1,10 +1,15 @@
1
- import { WADORSMetaData } from '../../types';
1
+ import type { WADORSMetaData } from '../../types';
2
2
  declare let metadataByImageURI: any[];
3
+ declare function retrieveMultiframeMetadata(imageId: any): {
4
+ metadata: any;
5
+ frame: number;
6
+ };
7
+ declare function isMultiframe(metadata: any): boolean;
3
8
  declare function add(imageId: string, metadata: WADORSMetaData): void;
4
9
  declare function get(imageId: string): WADORSMetaData;
5
10
  declare function remove(imageId: any): void;
6
11
  declare function purge(): void;
7
- export { metadataByImageURI };
12
+ export { metadataByImageURI, isMultiframe, retrieveMultiframeMetadata };
8
13
  declare const _default: {
9
14
  add: typeof add;
10
15
  get: typeof get;
@@ -1,11 +1,32 @@
1
1
  import imageIdToURI from '../imageIdToURI';
2
2
  import { combineFrameInstance } from './combineFrameInstance';
3
- import multiframeMetadata from './retrieveMultiframeMetadata';
4
3
  let metadataByImageURI = [];
5
4
  let multiframeMetadataByImageURI = {};
5
+ import getValue from './metaData/getValue';
6
+ function _retrieveMultiframeMetadata(imageURI) {
7
+ const lastSlashIdx = imageURI.indexOf('/frames/') + 8;
8
+ const imageIdFrameless = imageURI.slice(0, lastSlashIdx);
9
+ const frame = parseInt(imageURI.slice(lastSlashIdx), 10);
10
+ const metadata = metadataByImageURI[`${imageIdFrameless}1`];
11
+ return {
12
+ metadata,
13
+ frame,
14
+ };
15
+ }
16
+ function retrieveMultiframeMetadata(imageId) {
17
+ const imageURI = imageIdToURI(imageId);
18
+ return _retrieveMultiframeMetadata(imageURI);
19
+ }
20
+ function isMultiframe(metadata) {
21
+ const numberOfFrames = getValue(metadata['00280008']);
22
+ return numberOfFrames && numberOfFrames > 1;
23
+ }
6
24
  function add(imageId, metadata) {
7
25
  const imageURI = imageIdToURI(imageId);
8
- metadata.isMultiframe = multiframeMetadata.isMultiframe(metadata);
26
+ Object.defineProperty(metadata, 'isMultiframe', {
27
+ value: isMultiframe(metadata),
28
+ enumerable: false,
29
+ });
9
30
  metadataByImageURI[imageURI] = metadata;
10
31
  }
11
32
  function get(imageId) {
@@ -18,7 +39,7 @@ function get(imageId) {
18
39
  if (cachedMetadata) {
19
40
  return cachedMetadata;
20
41
  }
21
- const retrievedMetadata = multiframeMetadata._retrieveMultiframeMetadata(imageURI);
42
+ const retrievedMetadata = retrieveMultiframeMetadata(imageURI);
22
43
  if (!retrievedMetadata || !retrievedMetadata.metadata) {
23
44
  return;
24
45
  }
@@ -38,7 +59,7 @@ function purge() {
38
59
  metadataByImageURI = [];
39
60
  multiframeMetadataByImageURI = {};
40
61
  }
41
- export { metadataByImageURI };
62
+ export { metadataByImageURI, isMultiframe, retrieveMultiframeMetadata };
42
63
  export default {
43
64
  add,
44
65
  get,
@@ -1,5 +1,5 @@
1
1
  import loadImage from './loadImage';
2
- import { metaDataProvider } from './metaData/index';
2
+ import { metaDataProvider } from './metaData';
3
3
  export default function (cornerstone) {
4
4
  cornerstone.registerImageLoader('wadors', loadImage);
5
5
  cornerstone.metaData.addProvider(metaDataProvider);