@cornerstonejs/adapters 3.0.0-beta.5 → 3.0.0

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 (76) hide show
  1. package/dist/esm/adapters/Cornerstone/Angle.js +61 -74
  2. package/dist/esm/adapters/Cornerstone/ArrowAnnotate.js +76 -76
  3. package/dist/esm/adapters/Cornerstone/Bidirectional.js +130 -146
  4. package/dist/esm/adapters/Cornerstone/CircleRoi.js +96 -95
  5. package/dist/esm/adapters/Cornerstone/CobbAngle.js +66 -79
  6. package/dist/esm/adapters/Cornerstone/EllipticalRoi.js +152 -152
  7. package/dist/esm/adapters/Cornerstone/FreehandRoi.js +68 -69
  8. package/dist/esm/adapters/Cornerstone/Length.js +54 -63
  9. package/dist/esm/adapters/Cornerstone/MeasurementReport.js +221 -224
  10. package/dist/esm/adapters/Cornerstone/ParametricMap.js +88 -110
  11. package/dist/esm/adapters/Cornerstone/RectangleRoi.js +72 -78
  12. package/dist/esm/adapters/Cornerstone/Segmentation.js +7 -7
  13. package/dist/esm/adapters/Cornerstone/Segmentation_3X.js +113 -104
  14. package/dist/esm/adapters/Cornerstone/Segmentation_4X.js +434 -462
  15. package/dist/esm/adapters/Cornerstone/index.js +14 -14
  16. package/dist/esm/adapters/Cornerstone3D/Angle.d.ts +2 -5
  17. package/dist/esm/adapters/Cornerstone3D/Angle.js +89 -100
  18. package/dist/esm/adapters/Cornerstone3D/ArrowAnnotate.d.ts +5 -11
  19. package/dist/esm/adapters/Cornerstone3D/ArrowAnnotate.js +106 -118
  20. package/dist/esm/adapters/Cornerstone3D/BaseAdapter3D.d.ts +43 -0
  21. package/dist/esm/adapters/Cornerstone3D/BaseAdapter3D.js +92 -0
  22. package/dist/esm/adapters/Cornerstone3D/Bidirectional.d.ts +2 -5
  23. package/dist/esm/adapters/Cornerstone3D/Bidirectional.js +118 -133
  24. package/dist/esm/adapters/Cornerstone3D/CircleROI.d.ts +2 -7
  25. package/dist/esm/adapters/Cornerstone3D/CircleROI.js +85 -85
  26. package/dist/esm/adapters/Cornerstone3D/CobbAngle.d.ts +2 -5
  27. package/dist/esm/adapters/Cornerstone3D/CobbAngle.js +93 -104
  28. package/dist/esm/adapters/Cornerstone3D/CodingScheme.js +5 -5
  29. package/dist/esm/adapters/Cornerstone3D/EllipticalROI.d.ts +2 -7
  30. package/dist/esm/adapters/Cornerstone3D/EllipticalROI.js +148 -149
  31. package/dist/esm/adapters/Cornerstone3D/KeyImage.d.ts +24 -0
  32. package/dist/esm/adapters/Cornerstone3D/KeyImage.js +49 -0
  33. package/dist/esm/adapters/Cornerstone3D/Length.d.ts +2 -10
  34. package/dist/esm/adapters/Cornerstone3D/Length.js +83 -93
  35. package/dist/esm/adapters/Cornerstone3D/MeasurementReport.d.ts +23 -4
  36. package/dist/esm/adapters/Cornerstone3D/MeasurementReport.js +259 -240
  37. package/dist/esm/adapters/Cornerstone3D/ParametricMap/generateToolState.js +8 -4
  38. package/dist/esm/adapters/Cornerstone3D/PlanarFreehandROI.d.ts +3 -5
  39. package/dist/esm/adapters/Cornerstone3D/PlanarFreehandROI.js +99 -115
  40. package/dist/esm/adapters/Cornerstone3D/Probe.d.ts +4 -17
  41. package/dist/esm/adapters/Cornerstone3D/Probe.js +38 -79
  42. package/dist/esm/adapters/Cornerstone3D/RTStruct/RTSS.js +60 -52
  43. package/dist/esm/adapters/Cornerstone3D/RTStruct/index.js +3 -1
  44. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getPatientModule.js +5 -5
  45. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedFrameOfReferenceSequence.js +14 -10
  46. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedSeriesSequence.js +17 -11
  47. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getStructureSetModule.js +3 -1
  48. package/dist/esm/adapters/Cornerstone3D/RectangleROI.d.ts +2 -5
  49. package/dist/esm/adapters/Cornerstone3D/RectangleROI.js +73 -85
  50. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateLabelMaps2DFrom3D.js +15 -13
  51. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateSegmentation.js +15 -9
  52. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateToolState.js +10 -10
  53. package/dist/esm/adapters/Cornerstone3D/Segmentation/labelmapImagesFromBuffer.js +134 -151
  54. package/dist/esm/adapters/Cornerstone3D/UltrasoundDirectional.d.ts +2 -5
  55. package/dist/esm/adapters/Cornerstone3D/UltrasoundDirectional.js +68 -84
  56. package/dist/esm/adapters/Cornerstone3D/index.d.ts +4 -0
  57. package/dist/esm/adapters/Cornerstone3D/index.js +21 -17
  58. package/dist/esm/adapters/VTKjs/Segmentation.js +66 -72
  59. package/dist/esm/adapters/VTKjs/index.js +2 -2
  60. package/dist/esm/adapters/helpers/checkIfPerpendicular.js +2 -2
  61. package/dist/esm/adapters/helpers/checkOrientation.js +8 -8
  62. package/dist/esm/adapters/helpers/codeMeaningEquals.js +2 -2
  63. package/dist/esm/adapters/helpers/compareArrays.js +4 -2
  64. package/dist/esm/adapters/helpers/downloadDICOMData.js +6 -4
  65. package/dist/esm/adapters/helpers/getDatasetsFromImages.js +20 -18
  66. package/dist/esm/adapters/helpers/graphicTypeEquals.js +2 -2
  67. package/dist/esm/adapters/helpers/toArray.js +1 -3
  68. package/dist/esm/adapters/index.d.ts +2 -0
  69. package/dist/esm/adapters/index.js +6 -5
  70. package/dist/esm/node_modules/@babel/runtime/helpers/esm/defineProperty.js +18 -0
  71. package/dist/esm/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +14 -0
  72. package/dist/esm/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +9 -0
  73. package/dist/esm/node_modules/@babel/runtime/helpers/esm/typeof.js +11 -0
  74. package/package.json +4 -4
  75. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +0 -493
  76. package/dist/esm/adapters/Cornerstone3D/isValidCornerstoneTrackingIdentifier.js +0 -18
@@ -1,22 +1,28 @@
1
- import { toConsumableArray as _toConsumableArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
- import { utilities, normalizers, derivations, log } from 'dcmjs';
1
+ import { utilities, log, normalizers, derivations } from 'dcmjs';
3
2
  import ndarray from 'ndarray';
4
3
  import getDatasetsFromImages from '../helpers/getDatasetsFromImages.js';
5
4
 
6
- var _utilities$orientatio = utilities.orientation,
7
- rotateDirectionCosinesInPlane = _utilities$orientatio.rotateDirectionCosinesInPlane,
8
- flipIOP = _utilities$orientatio.flipImageOrientationPatient,
9
- flipMatrix2D = _utilities$orientatio.flipMatrix2D,
10
- rotateMatrix902D = _utilities$orientatio.rotateMatrix902D;
11
- var datasetToBlob = utilities.datasetToBlob,
12
- BitArray = utilities.BitArray,
13
- DicomMessage = utilities.DicomMessage,
14
- DicomMetaDictionary = utilities.DicomMetaDictionary;
15
- var Normalizer = normalizers.Normalizer;
16
- var SegmentationDerivation = derivations.Segmentation;
17
- var Segmentation = {
18
- generateSegmentation: generateSegmentation,
19
- generateToolState: generateToolState
5
+ const {
6
+ rotateDirectionCosinesInPlane,
7
+ flipImageOrientationPatient: flipIOP,
8
+ flipMatrix2D,
9
+ rotateMatrix902D
10
+ } = utilities.orientation;
11
+ const {
12
+ datasetToBlob,
13
+ BitArray,
14
+ DicomMessage,
15
+ DicomMetaDictionary
16
+ } = utilities;
17
+ const {
18
+ Normalizer
19
+ } = normalizers;
20
+ const {
21
+ Segmentation: SegmentationDerivation
22
+ } = derivations;
23
+ const Segmentation = {
24
+ generateSegmentation,
25
+ generateToolState
20
26
  };
21
27
 
22
28
  /**
@@ -36,58 +42,61 @@ var Segmentation = {
36
42
  * @returns {type} description
37
43
  */
38
44
  function generateSegmentation(images, brushData) {
39
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
45
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
40
46
  includeSliceSpacing: true
41
47
  };
42
- var toolState = brushData.toolState,
43
- segments = brushData.segments;
48
+ const {
49
+ toolState,
50
+ segments
51
+ } = brushData;
44
52
 
45
53
  // Calculate the dimensions of the data cube.
46
- var image0 = images[0];
47
- var dims = {
54
+ const image0 = images[0];
55
+ const dims = {
48
56
  x: image0.columns,
49
57
  y: image0.rows,
50
58
  z: images.length
51
59
  };
52
60
  dims.xy = dims.x * dims.y;
53
- var numSegments = _getSegCount(seg, segments);
61
+ const numSegments = _getSegCount(seg, segments);
54
62
  if (!numSegments) {
55
63
  throw new Error("No segments to export!");
56
64
  }
57
- var isMultiframe = image0.imageId.includes("?frame");
58
- var seg = _createSegFromImages(images, isMultiframe, options);
59
- var _getNumberOfFramesPer = _getNumberOfFramesPerSegment(toolState, images, segments),
60
- referencedFramesPerSegment = _getNumberOfFramesPer.referencedFramesPerSegment,
61
- segmentIndicies = _getNumberOfFramesPer.segmentIndicies;
62
- var NumberOfFrames = 0;
63
- for (var i = 0; i < referencedFramesPerSegment.length; i++) {
65
+ const isMultiframe = image0.imageId.includes("?frame");
66
+ const seg = _createSegFromImages(images, isMultiframe, options);
67
+ const {
68
+ referencedFramesPerSegment,
69
+ segmentIndicies
70
+ } = _getNumberOfFramesPerSegment(toolState, images, segments);
71
+ let NumberOfFrames = 0;
72
+ for (let i = 0; i < referencedFramesPerSegment.length; i++) {
64
73
  NumberOfFrames += referencedFramesPerSegment[i].length;
65
74
  }
66
75
  seg.setNumberOfFrames(NumberOfFrames);
67
- for (var _i = 0; _i < segmentIndicies.length; _i++) {
68
- var segmentIndex = segmentIndicies[_i];
69
- var referencedFrameIndicies = referencedFramesPerSegment[_i];
76
+ for (let i = 0; i < segmentIndicies.length; i++) {
77
+ const segmentIndex = segmentIndicies[i];
78
+ const referencedFrameIndicies = referencedFramesPerSegment[i];
70
79
 
71
80
  // Frame numbers start from 1.
72
- var referencedFrameNumbers = referencedFrameIndicies.map(function (element) {
81
+ const referencedFrameNumbers = referencedFrameIndicies.map(element => {
73
82
  return element + 1;
74
83
  });
75
- var segment = segments[segmentIndex];
84
+ const segment = segments[segmentIndex];
76
85
  seg.addSegment(segment, _extractCornerstoneToolsPixelData(segmentIndex, referencedFrameIndicies, toolState, images, dims), referencedFrameNumbers);
77
86
  }
78
87
  seg.bitPackPixelData();
79
- var segBlob = datasetToBlob(seg.dataset);
88
+ const segBlob = datasetToBlob(seg.dataset);
80
89
  return segBlob;
81
90
  }
82
91
  function _extractCornerstoneToolsPixelData(segmentIndex, referencedFrames, toolState, images, dims) {
83
- var pixelData = new Uint8Array(dims.xy * referencedFrames.length);
84
- var pixelDataIndex = 0;
85
- for (var i = 0; i < referencedFrames.length; i++) {
86
- var frame = referencedFrames[i];
87
- var imageId = images[frame].imageId;
88
- var imageIdSpecificToolState = toolState[imageId];
89
- var brushPixelData = imageIdSpecificToolState.brush.data[segmentIndex].pixelData;
90
- for (var p = 0; p < brushPixelData.length; p++) {
92
+ const pixelData = new Uint8Array(dims.xy * referencedFrames.length);
93
+ let pixelDataIndex = 0;
94
+ for (let i = 0; i < referencedFrames.length; i++) {
95
+ const frame = referencedFrames[i];
96
+ const imageId = images[frame].imageId;
97
+ const imageIdSpecificToolState = toolState[imageId];
98
+ const brushPixelData = imageIdSpecificToolState.brush.data[segmentIndex].pixelData;
99
+ for (let p = 0; p < brushPixelData.length; p++) {
91
100
  pixelData[pixelDataIndex] = brushPixelData[p];
92
101
  pixelDataIndex++;
93
102
  }
@@ -95,32 +104,32 @@ function _extractCornerstoneToolsPixelData(segmentIndex, referencedFrames, toolS
95
104
  return pixelData;
96
105
  }
97
106
  function _getNumberOfFramesPerSegment(toolState, images, segments) {
98
- var segmentIndicies = [];
99
- var referencedFramesPerSegment = [];
100
- for (var i = 0; i < segments.length; i++) {
107
+ const segmentIndicies = [];
108
+ const referencedFramesPerSegment = [];
109
+ for (let i = 0; i < segments.length; i++) {
101
110
  if (segments[i]) {
102
111
  segmentIndicies.push(i);
103
112
  referencedFramesPerSegment.push([]);
104
113
  }
105
114
  }
106
- for (var z = 0; z < images.length; z++) {
107
- var imageId = images[z].imageId;
108
- var imageIdSpecificToolState = toolState[imageId];
109
- for (var _i2 = 0; _i2 < segmentIndicies.length; _i2++) {
110
- var segIdx = segmentIndicies[_i2];
115
+ for (let z = 0; z < images.length; z++) {
116
+ const imageId = images[z].imageId;
117
+ const imageIdSpecificToolState = toolState[imageId];
118
+ for (let i = 0; i < segmentIndicies.length; i++) {
119
+ const segIdx = segmentIndicies[i];
111
120
  if (imageIdSpecificToolState && imageIdSpecificToolState.brush && imageIdSpecificToolState.brush.data && imageIdSpecificToolState.brush.data[segIdx] && imageIdSpecificToolState.brush.data[segIdx].pixelData) {
112
- referencedFramesPerSegment[_i2].push(z);
121
+ referencedFramesPerSegment[i].push(z);
113
122
  }
114
123
  }
115
124
  }
116
125
  return {
117
- referencedFramesPerSegment: referencedFramesPerSegment,
118
- segmentIndicies: segmentIndicies
126
+ referencedFramesPerSegment,
127
+ segmentIndicies
119
128
  };
120
129
  }
121
130
  function _getSegCount(seg, segments) {
122
- var numSegments = 0;
123
- for (var i = 0; i < segments.length; i++) {
131
+ let numSegments = 0;
132
+ for (let i = 0; i < segments.length; i++) {
124
133
  if (segments[i]) {
125
134
  numSegments++;
126
135
  }
@@ -136,7 +145,7 @@ function _getSegCount(seg, segments) {
136
145
  * @returns {Object} The Seg derived dataSet.
137
146
  */
138
147
  function _createSegFromImages(images, isMultiframe, options) {
139
- var multiframe = getDatasetsFromImages(images, isMultiframe);
148
+ const multiframe = getDatasetsFromImages(images, isMultiframe);
140
149
  return new SegmentationDerivation([multiframe], options);
141
150
  }
142
151
 
@@ -151,52 +160,52 @@ function _createSegFromImages(images, isMultiframe, options) {
151
160
  * segment metadata can be derived.
152
161
  */
153
162
  function generateToolState(imageIds, arrayBuffer, metadataProvider) {
154
- var dicomData = DicomMessage.readFile(arrayBuffer);
155
- var dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);
163
+ const dicomData = DicomMessage.readFile(arrayBuffer);
164
+ const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);
156
165
  dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);
157
- var multiframe = Normalizer.normalizeToDataset([dataset]);
158
- var imagePlaneModule = metadataProvider.get("imagePlaneModule", imageIds[0]);
166
+ const multiframe = Normalizer.normalizeToDataset([dataset]);
167
+ const imagePlaneModule = metadataProvider.get("imagePlaneModule", imageIds[0]);
159
168
  if (!imagePlaneModule) {
160
169
  console.warn("Insufficient metadata, imagePlaneModule missing.");
161
170
  }
162
- var ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines) ? [].concat(_toConsumableArray(imagePlaneModule.rowCosines), _toConsumableArray(imagePlaneModule.columnCosines)) : [imagePlaneModule.rowCosines.x, imagePlaneModule.rowCosines.y, imagePlaneModule.rowCosines.z, imagePlaneModule.columnCosines.x, imagePlaneModule.columnCosines.y, imagePlaneModule.columnCosines.z];
171
+ const ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines) ? [...imagePlaneModule.rowCosines, ...imagePlaneModule.columnCosines] : [imagePlaneModule.rowCosines.x, imagePlaneModule.rowCosines.y, imagePlaneModule.rowCosines.z, imagePlaneModule.columnCosines.x, imagePlaneModule.columnCosines.y, imagePlaneModule.columnCosines.z];
163
172
 
164
173
  // Get IOP from ref series, compute supported orientations:
165
- var validOrientations = getValidOrientations(ImageOrientationPatient);
166
- var SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence;
167
- var sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined;
168
- var sliceLength = multiframe.Columns * multiframe.Rows;
169
- var segMetadata = getSegmentMetadata(multiframe);
170
- var pixelData = unpackPixelData(multiframe);
171
- var PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence;
172
- var toolState = {};
173
- var inPlane = true;
174
- for (var i = 0; i < PerFrameFunctionalGroupsSequence.length; i++) {
175
- var PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[i];
176
- var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient;
177
- var pixelDataI2D = ndarray(new Uint8Array(pixelData.buffer, i * sliceLength, sliceLength), [multiframe.Rows, multiframe.Columns]);
178
- var alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations);
174
+ const validOrientations = getValidOrientations(ImageOrientationPatient);
175
+ const SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence;
176
+ const sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined;
177
+ const sliceLength = multiframe.Columns * multiframe.Rows;
178
+ const segMetadata = getSegmentMetadata(multiframe);
179
+ const pixelData = unpackPixelData(multiframe);
180
+ const PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence;
181
+ const toolState = {};
182
+ let inPlane = true;
183
+ for (let i = 0; i < PerFrameFunctionalGroupsSequence.length; i++) {
184
+ const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[i];
185
+ const ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient;
186
+ const pixelDataI2D = ndarray(new Uint8Array(pixelData.buffer, i * sliceLength, sliceLength), [multiframe.Rows, multiframe.Columns]);
187
+ const alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations);
179
188
  if (!alignedPixelDataI) {
180
189
  console.warn("This segmentation object is not in-plane with the source data. Bailing out of IO. It'd be better to render this with vtkjs. ");
181
190
  inPlane = false;
182
191
  break;
183
192
  }
184
- var segmentIndex = PerFrameFunctionalGroups.SegmentIdentificationSequence.ReferencedSegmentNumber - 1;
185
- var SourceImageSequence = void 0;
193
+ const segmentIndex = PerFrameFunctionalGroups.SegmentIdentificationSequence.ReferencedSegmentNumber - 1;
194
+ let SourceImageSequence;
186
195
  if (SharedFunctionalGroupsSequence.DerivationImageSequence && SharedFunctionalGroupsSequence.DerivationImageSequence.SourceImageSequence) {
187
196
  SourceImageSequence = SharedFunctionalGroupsSequence.DerivationImageSequence.SourceImageSequence[i];
188
197
  } else {
189
198
  SourceImageSequence = PerFrameFunctionalGroups.DerivationImageSequence.SourceImageSequence;
190
199
  }
191
- var imageId = getImageIdOfSourceImage(SourceImageSequence, imageIds, metadataProvider);
200
+ const imageId = getImageIdOfSourceImage(SourceImageSequence, imageIds, metadataProvider);
192
201
  addImageIdSpecificBrushToolState(toolState, imageId, segmentIndex, alignedPixelDataI);
193
202
  }
194
203
  if (!inPlane) {
195
204
  return;
196
205
  }
197
206
  return {
198
- toolState: toolState,
199
- segMetadata: segMetadata
207
+ toolState,
208
+ segMetadata
200
209
  };
201
210
  }
202
211
 
@@ -207,15 +216,13 @@ function generateToolState(imageIds, arrayBuffer, metadataProvider) {
207
216
  * @return {Uint8Array} The unpacked pixelData.
208
217
  */
209
218
  function unpackPixelData(multiframe) {
210
- var segType = multiframe.SegmentationType;
219
+ const segType = multiframe.SegmentationType;
211
220
  if (segType === "BINARY") {
212
221
  return BitArray.unpack(multiframe.PixelData);
213
222
  }
214
- var pixelData = new Uint8Array(multiframe.PixelData);
215
- var max = multiframe.MaximumFractionalValue;
216
- var onlyMaxAndZero = pixelData.find(function (element) {
217
- return element !== 0 && element !== max;
218
- }) === undefined;
223
+ const pixelData = new Uint8Array(multiframe.PixelData);
224
+ const max = multiframe.MaximumFractionalValue;
225
+ const onlyMaxAndZero = pixelData.find(element => element !== 0 && element !== max) === undefined;
219
226
  if (!onlyMaxAndZero) {
220
227
  log.warn("This is a fractional segmentation, which is not currently supported.");
221
228
  return;
@@ -245,10 +252,10 @@ function addImageIdSpecificBrushToolState(toolState, imageId, segmentIndex, pixe
245
252
  toolState[imageId].brush.data = [];
246
253
  }
247
254
  toolState[imageId].brush.data[segmentIndex] = {};
248
- var brushDataI = toolState[imageId].brush.data[segmentIndex];
255
+ const brushDataI = toolState[imageId].brush.data[segmentIndex];
249
256
  brushDataI.pixelData = new Uint8Array(pixelData2D.data.length);
250
- var cToolsPixelData = brushDataI.pixelData;
251
- for (var p = 0; p < cToolsPixelData.length; p++) {
257
+ const cToolsPixelData = brushDataI.pixelData;
258
+ for (let p = 0; p < cToolsPixelData.length; p++) {
252
259
  if (pixelData2D.data[p]) {
253
260
  cToolsPixelData[p] = 1;
254
261
  } else {
@@ -267,8 +274,10 @@ function addImageIdSpecificBrushToolState(toolState, imageId, segmentIndex, pixe
267
274
  * @return {String} The corresponding imageId.
268
275
  */
269
276
  function getImageIdOfSourceImage(SourceImageSequence, imageIds, metadataProvider) {
270
- var ReferencedSOPInstanceUID = SourceImageSequence.ReferencedSOPInstanceUID,
271
- ReferencedFrameNumber = SourceImageSequence.ReferencedFrameNumber;
277
+ const {
278
+ ReferencedSOPInstanceUID,
279
+ ReferencedFrameNumber
280
+ } = SourceImageSequence;
272
281
  return ReferencedFrameNumber ? getImageIdOfReferencedFrame(ReferencedSOPInstanceUID, ReferencedFrameNumber, imageIds, metadataProvider) : getImageIdOfReferencedSingleFramedSOPInstance(ReferencedSOPInstanceUID, imageIds, metadataProvider);
273
282
  }
274
283
 
@@ -283,8 +292,8 @@ function getImageIdOfSourceImage(SourceImageSequence, imageIds, metadataProvider
283
292
  * @return {String} The imageId that corresponds to the sopInstanceUid.
284
293
  */
285
294
  function getImageIdOfReferencedSingleFramedSOPInstance(sopInstanceUid, imageIds, metadataProvider) {
286
- return imageIds.find(function (imageId) {
287
- var sopCommonModule = metadataProvider.get("sopCommonModule", imageId);
295
+ return imageIds.find(imageId => {
296
+ const sopCommonModule = metadataProvider.get("sopCommonModule", imageId);
288
297
  if (!sopCommonModule) {
289
298
  return;
290
299
  }
@@ -304,12 +313,12 @@ function getImageIdOfReferencedSingleFramedSOPInstance(sopInstanceUid, imageIds,
304
313
  * @return {String} The imageId that corresponds to the sopInstanceUid.
305
314
  */
306
315
  function getImageIdOfReferencedFrame(sopInstanceUid, frameNumber, imageIds, metadataProvider) {
307
- var imageId = imageIds.find(function (imageId) {
308
- var sopCommonModule = metadataProvider.get("sopCommonModule", imageId);
316
+ const imageId = imageIds.find(imageId => {
317
+ const sopCommonModule = metadataProvider.get("sopCommonModule", imageId);
309
318
  if (!sopCommonModule) {
310
319
  return;
311
320
  }
312
- var imageIdFrameNumber = Number(imageId.split("frame=")[1]);
321
+ const imageIdFrameNumber = Number(imageId.split("frame=")[1]);
313
322
  return (
314
323
  //frameNumber is zero indexed for cornerstoneDICOMImageLoader image Ids.
315
324
  sopCommonModule.sopInstanceUID === sopInstanceUid && imageIdFrameNumber === frameNumber - 1
@@ -325,7 +334,7 @@ function getImageIdOfReferencedFrame(sopInstanceUid, frameNumber, imageIds, meta
325
334
  * @return An array of valid orientations.
326
335
  */
327
336
  function getValidOrientations(iop) {
328
- var orientations = [];
337
+ const orientations = [];
329
338
 
330
339
  // [0, 1, 2]: 0, 0hf, 0vf
331
340
  // [3, 4, 5]: 90, 90hf, 90vf
@@ -334,7 +343,7 @@ function getValidOrientations(iop) {
334
343
  orientations[0] = iop;
335
344
  orientations[1] = flipIOP.h(iop);
336
345
  orientations[2] = flipIOP.v(iop);
337
- var iop90 = rotateDirectionCosinesInPlane(iop, Math.PI / 2);
346
+ const iop90 = rotateDirectionCosinesInPlane(iop, Math.PI / 2);
338
347
  orientations[3] = iop90;
339
348
  orientations[4] = flipIOP.h(iop90);
340
349
  orientations[5] = flipIOP.v(iop90);
@@ -378,7 +387,7 @@ function alignPixelDataWithSourceData(pixelData2D, iop, orientations) {
378
387
  return rotateMatrix902D(rotateMatrix902D(rotateMatrix902D(pixelData2D)));
379
388
  }
380
389
  }
381
- var dx = 1e-5;
390
+ const dx = 1e-5;
382
391
 
383
392
  /**
384
393
  * compareIOP - Returns true if iop1 and iop2 are equal
@@ -392,10 +401,10 @@ function compareIOP(iop1, iop2) {
392
401
  return Math.abs(iop1[0] - iop2[0]) < dx && Math.abs(iop1[1] - iop2[1]) < dx && Math.abs(iop1[2] - iop2[2]) < dx && Math.abs(iop1[3] - iop2[3]) < dx && Math.abs(iop1[4] - iop2[4]) < dx && Math.abs(iop1[5] - iop2[5]) < dx;
393
402
  }
394
403
  function getSegmentMetadata(multiframe) {
395
- var data = [];
396
- var segmentSequence = multiframe.SegmentSequence;
404
+ const data = [];
405
+ const segmentSequence = multiframe.SegmentSequence;
397
406
  if (Array.isArray(segmentSequence)) {
398
- for (var segIdx = 0; segIdx < segmentSequence.length; segIdx++) {
407
+ for (let segIdx = 0; segIdx < segmentSequence.length; segIdx++) {
399
408
  data.push(segmentSequence[segIdx]);
400
409
  }
401
410
  } else {
@@ -404,7 +413,7 @@ function getSegmentMetadata(multiframe) {
404
413
  }
405
414
  return {
406
415
  seriesInstanceUid: multiframe.ReferencedSeriesSequence.SeriesInstanceUID,
407
- data: data
416
+ data
408
417
  };
409
418
  }
410
419