@cornerstonejs/tools 1.78.3 → 1.80.1

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 (118) hide show
  1. package/dist/cjs/cursors/SVGCursorDescriptor.js +7 -0
  2. package/dist/cjs/cursors/SVGCursorDescriptor.js.map +1 -1
  3. package/dist/cjs/drawingSvg/drawHeight.d.ts +3 -0
  4. package/dist/cjs/drawingSvg/drawHeight.js +49 -0
  5. package/dist/cjs/drawingSvg/drawHeight.js.map +1 -0
  6. package/dist/cjs/drawingSvg/index.d.ts +2 -1
  7. package/dist/cjs/drawingSvg/index.js +3 -1
  8. package/dist/cjs/drawingSvg/index.js.map +1 -1
  9. package/dist/cjs/index.d.ts +2 -2
  10. package/dist/cjs/index.js +3 -2
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/tools/annotation/HeightTool.d.ts +40 -0
  13. package/dist/cjs/tools/annotation/HeightTool.js +463 -0
  14. package/dist/cjs/tools/annotation/HeightTool.js.map +1 -0
  15. package/dist/cjs/tools/index.d.ts +2 -1
  16. package/dist/cjs/tools/index.js +4 -2
  17. package/dist/cjs/tools/index.js.map +1 -1
  18. package/dist/cjs/tools/segmentation/CircleROIStartEndThresholdTool.d.ts +15 -8
  19. package/dist/cjs/tools/segmentation/CircleROIStartEndThresholdTool.js +189 -62
  20. package/dist/cjs/tools/segmentation/CircleROIStartEndThresholdTool.js.map +1 -1
  21. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts +17 -7
  22. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.js +167 -52
  23. package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.js.map +1 -1
  24. package/dist/cjs/types/CINETypes.d.ts +1 -0
  25. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +26 -4
  26. package/dist/cjs/utilities/cine/playClip.js +52 -5
  27. package/dist/cjs/utilities/cine/playClip.js.map +1 -1
  28. package/dist/cjs/utilities/planar/filterAnnotationsWithinPlane.d.ts +3 -0
  29. package/dist/cjs/utilities/planar/filterAnnotationsWithinPlane.js +31 -0
  30. package/dist/cjs/utilities/planar/filterAnnotationsWithinPlane.js.map +1 -0
  31. package/dist/cjs/utilities/planar/index.d.ts +3 -1
  32. package/dist/cjs/utilities/planar/index.js +4 -1
  33. package/dist/cjs/utilities/planar/index.js.map +1 -1
  34. package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js +13 -2
  35. package/dist/cjs/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -1
  36. package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js +0 -1
  37. package/dist/cjs/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -1
  38. package/dist/cjs/utilities/viewport/isViewportPreScaled.js +1 -4
  39. package/dist/cjs/utilities/viewport/isViewportPreScaled.js.map +1 -1
  40. package/dist/cjs/utilities/viewport/jumpToSlice.js +4 -6
  41. package/dist/cjs/utilities/viewport/jumpToSlice.js.map +1 -1
  42. package/dist/esm/cursors/SVGCursorDescriptor.js +7 -0
  43. package/dist/esm/cursors/SVGCursorDescriptor.js.map +1 -1
  44. package/dist/esm/drawingSvg/drawHeight.js +43 -0
  45. package/dist/esm/drawingSvg/drawHeight.js.map +1 -0
  46. package/dist/esm/drawingSvg/index.js +2 -1
  47. package/dist/esm/drawingSvg/index.js.map +1 -1
  48. package/dist/esm/index.js +2 -2
  49. package/dist/esm/index.js.map +1 -1
  50. package/dist/esm/tools/annotation/HeightTool.js +439 -0
  51. package/dist/esm/tools/annotation/HeightTool.js.map +1 -0
  52. package/dist/esm/tools/index.js +2 -1
  53. package/dist/esm/tools/index.js.map +1 -1
  54. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js +192 -66
  55. package/dist/esm/tools/segmentation/CircleROIStartEndThresholdTool.js.map +1 -1
  56. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +168 -54
  57. package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js.map +1 -1
  58. package/dist/esm/utilities/cine/playClip.js +52 -5
  59. package/dist/esm/utilities/cine/playClip.js.map +1 -1
  60. package/dist/esm/utilities/planar/filterAnnotationsWithinPlane.js +27 -0
  61. package/dist/esm/utilities/planar/filterAnnotationsWithinPlane.js.map +1 -0
  62. package/dist/esm/utilities/planar/index.js +3 -1
  63. package/dist/esm/utilities/planar/index.js.map +1 -1
  64. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js +11 -2
  65. package/dist/esm/utilities/stackPrefetch/stackContextPrefetch.js.map +1 -1
  66. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js +1 -2
  67. package/dist/esm/utilities/stackPrefetch/stackPrefetchUtils.js.map +1 -1
  68. package/dist/esm/utilities/viewport/isViewportPreScaled.js +2 -5
  69. package/dist/esm/utilities/viewport/isViewportPreScaled.js.map +1 -1
  70. package/dist/esm/utilities/viewport/jumpToSlice.js +5 -7
  71. package/dist/esm/utilities/viewport/jumpToSlice.js.map +1 -1
  72. package/dist/types/cursors/SVGCursorDescriptor.d.ts.map +1 -1
  73. package/dist/types/drawingSvg/drawHeight.d.ts +4 -0
  74. package/dist/types/drawingSvg/drawHeight.d.ts.map +1 -0
  75. package/dist/types/drawingSvg/index.d.ts +2 -1
  76. package/dist/types/drawingSvg/index.d.ts.map +1 -1
  77. package/dist/types/index.d.ts +2 -2
  78. package/dist/types/index.d.ts.map +1 -1
  79. package/dist/types/tools/annotation/HeightTool.d.ts +41 -0
  80. package/dist/types/tools/annotation/HeightTool.d.ts.map +1 -0
  81. package/dist/types/tools/index.d.ts +2 -1
  82. package/dist/types/tools/index.d.ts.map +1 -1
  83. package/dist/types/tools/segmentation/CircleROIStartEndThresholdTool.d.ts +15 -8
  84. package/dist/types/tools/segmentation/CircleROIStartEndThresholdTool.d.ts.map +1 -1
  85. package/dist/types/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts +17 -7
  86. package/dist/types/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts.map +1 -1
  87. package/dist/types/types/CINETypes.d.ts +1 -0
  88. package/dist/types/types/CINETypes.d.ts.map +1 -1
  89. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts +26 -4
  90. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts.map +1 -1
  91. package/dist/types/utilities/cine/playClip.d.ts.map +1 -1
  92. package/dist/types/utilities/planar/filterAnnotationsWithinPlane.d.ts +4 -0
  93. package/dist/types/utilities/planar/filterAnnotationsWithinPlane.d.ts.map +1 -0
  94. package/dist/types/utilities/planar/index.d.ts +3 -1
  95. package/dist/types/utilities/planar/index.d.ts.map +1 -1
  96. package/dist/types/utilities/stackPrefetch/stackContextPrefetch.d.ts.map +1 -1
  97. package/dist/types/utilities/stackPrefetch/stackPrefetchUtils.d.ts.map +1 -1
  98. package/dist/types/utilities/viewport/isViewportPreScaled.d.ts.map +1 -1
  99. package/dist/umd/index.js +1 -1
  100. package/dist/umd/index.js.map +1 -1
  101. package/package.json +3 -3
  102. package/src/cursors/SVGCursorDescriptor.ts +7 -0
  103. package/src/drawingSvg/drawHeight.ts +90 -0
  104. package/src/drawingSvg/index.ts +2 -0
  105. package/src/index.ts +2 -0
  106. package/src/tools/annotation/HeightTool.ts +882 -0
  107. package/src/tools/index.ts +2 -0
  108. package/src/tools/segmentation/CircleROIStartEndThresholdTool.ts +310 -102
  109. package/src/tools/segmentation/RectangleROIStartEndThresholdTool.ts +287 -77
  110. package/src/types/CINETypes.ts +3 -0
  111. package/src/types/ToolSpecificAnnotationTypes.ts +26 -4
  112. package/src/utilities/cine/playClip.ts +67 -8
  113. package/src/utilities/planar/filterAnnotationsWithinPlane.ts +76 -0
  114. package/src/utilities/planar/index.ts +3 -0
  115. package/src/utilities/stackPrefetch/stackContextPrefetch.ts +12 -2
  116. package/src/utilities/stackPrefetch/stackPrefetchUtils.ts +7 -5
  117. package/src/utilities/viewport/isViewportPreScaled.ts +2 -5
  118. package/src/utilities/viewport/jumpToSlice.ts +4 -4
@@ -4,25 +4,35 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const core_1 = require("@cornerstonejs/core");
7
+ const core_2 = require("@cornerstonejs/core");
8
+ const getCalibratedUnits_1 = require("../../utilities/getCalibratedUnits");
7
9
  const gl_matrix_1 = require("gl-matrix");
8
10
  const stateManagement_1 = require("../../stateManagement");
9
11
  const annotationLocking_1 = require("../../stateManagement/annotation/annotationLocking");
10
- const state_1 = require("../../stateManagement/annotation/helpers/state");
11
12
  const drawingSvg_1 = require("../../drawingSvg");
12
13
  const viewportFilters_1 = require("../../utilities/viewportFilters");
13
14
  const throttle_1 = __importDefault(require("../../utilities/throttle"));
15
+ const drawing_1 = require("../../utilities/drawing");
16
+ const getWorldWidthAndHeightFromCorners_1 = __importDefault(require("../../utilities/planar/getWorldWidthAndHeightFromCorners"));
14
17
  const annotationVisibility_1 = require("../../stateManagement/annotation/annotationVisibility");
15
18
  const elementCursor_1 = require("../../cursors/elementCursor");
16
19
  const triggerAnnotationRenderForViewportIds_1 = __importDefault(require("../../utilities/triggerAnnotationRenderForViewportIds"));
17
- const state_2 = require("../../stateManagement/annotation/helpers/state");
20
+ const state_1 = require("../../stateManagement/annotation/helpers/state");
18
21
  const RectangleROITool_1 = __importDefault(require("../annotation/RectangleROITool"));
19
22
  const utilities_1 = require("../../utilities/");
23
+ const getModalityUnit_1 = require("../../utilities/getModalityUnit");
24
+ const isViewportPreScaled_1 = require("../../utilities/viewport/isViewportPreScaled");
25
+ const basic_1 = require("../../utilities/math/basic");
26
+ const planar_1 = require("../../utilities/planar");
20
27
  const { transformWorldToIndex } = core_1.utilities;
21
28
  class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
22
29
  constructor(toolProps = {}, defaultToolProps = {
23
30
  configuration: {
24
31
  numSlicesToPropagate: 10,
25
32
  computePointsInsideVolume: false,
33
+ getTextLines: defaultGetTextLines,
34
+ statsCalculator: basic_1.BasicStatsCalculator,
35
+ showTextBox: false,
26
36
  },
27
37
  }) {
28
38
  super(toolProps, defaultToolProps);
@@ -45,12 +55,9 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
45
55
  imageVolume = core_1.cache.getVolume(volumeId);
46
56
  referencedImageId = core_1.utilities.getClosestImageId(imageVolume, worldPos, viewPlaneNormal);
47
57
  }
48
- if (!referencedImageId) {
49
- throw new Error('This tool does not work on non-acquisition planes');
50
- }
51
- const startIndex = viewport.getCurrentImageIdIndex();
52
58
  const spacingInNormal = core_1.utilities.getSpacingInNormalDirection(imageVolume, viewPlaneNormal);
53
- const endIndex = this._getEndSliceIndex(imageVolume, worldPos, spacingInNormal, viewPlaneNormal);
59
+ const startCoord = this._getStartCoordinate(worldPos, viewPlaneNormal);
60
+ const endCoord = this._getEndCoordinate(worldPos, spacingInNormal, viewPlaneNormal);
54
61
  const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
55
62
  const annotation = {
56
63
  highlighted: true,
@@ -67,18 +74,24 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
67
74
  },
68
75
  data: {
69
76
  label: '',
70
- startSlice: startIndex,
71
- endSlice: endIndex,
77
+ startCoordinate: startCoord,
78
+ endCoordinate: endCoord,
72
79
  cachedStats: {
73
80
  pointsInVolume: [],
74
81
  projectionPoints: [],
75
82
  projectionPointsImageIds: [referencedImageId],
83
+ statistics: [],
76
84
  },
77
85
  handles: {
78
86
  textBox: {
79
87
  hasMoved: false,
80
- worldPosition: null,
81
- worldBoundingBox: null,
88
+ worldPosition: [0, 0, 0],
89
+ worldBoundingBox: {
90
+ topLeft: [0, 0, 0],
91
+ topRight: [0, 0, 0],
92
+ bottomLeft: [0, 0, 0],
93
+ bottomRight: [0, 0, 0],
94
+ },
82
95
  },
83
96
  points: [
84
97
  [...worldPos],
@@ -129,21 +142,21 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
129
142
  const targetId = this.getTargetId(enabledElement.viewport);
130
143
  const imageVolume = core_1.cache.getVolume(targetId.split(/volumeId:|\?/)[1]);
131
144
  if (this.configuration.calculatePointsInsideVolume) {
132
- this._computePointsInsideVolume(annotation, imageVolume, enabledElement);
145
+ this._computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement);
133
146
  }
134
147
  (0, triggerAnnotationRenderForViewportIds_1.default)(enabledElement.renderingEngine, viewportIdsToRender);
135
148
  if (newAnnotation) {
136
- (0, state_2.triggerAnnotationCompleted)(annotation);
149
+ (0, state_1.triggerAnnotationCompleted)(annotation);
137
150
  }
138
151
  };
139
152
  this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
140
153
  let renderStatus = false;
141
154
  const { viewport } = enabledElement;
142
- const annotations = (0, stateManagement_1.getAnnotations)(this.getToolName(), viewport.element);
155
+ let annotations = (0, stateManagement_1.getAnnotations)(this.getToolName(), viewport.element);
143
156
  if (!(annotations === null || annotations === void 0 ? void 0 : annotations.length)) {
144
157
  return renderStatus;
145
158
  }
146
- const sliceIndex = viewport.getCurrentImageIdIndex();
159
+ annotations = (0, planar_1.filterAnnotationsWithinSamePlane)(annotations, viewport.getCamera());
147
160
  const styleSpecifier = {
148
161
  toolGroupId: this.toolGroupId,
149
162
  toolName: this.getToolName(),
@@ -152,22 +165,37 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
152
165
  for (let i = 0; i < annotations.length; i++) {
153
166
  const annotation = annotations[i];
154
167
  const { annotationUID, data } = annotation;
155
- const { startSlice, endSlice } = data;
168
+ const { startCoordinate, endCoordinate } = data;
156
169
  const { points, activeHandleIndex } = data.handles;
157
170
  const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
158
171
  styleSpecifier.annotationUID = annotationUID;
159
172
  const lineWidth = this.getStyle('lineWidth', styleSpecifier, annotation);
160
173
  const lineDash = this.getStyle('lineDash', styleSpecifier, annotation);
161
174
  const color = this.getStyle('color', styleSpecifier, annotation);
162
- if (sliceIndex < Math.min(startSlice, endSlice) ||
163
- sliceIndex > Math.max(startSlice, endSlice)) {
175
+ const focalPoint = viewport.getCamera().focalPoint;
176
+ const viewplaneNormal = viewport.getCamera().viewPlaneNormal;
177
+ let startCoord = startCoordinate;
178
+ let endCoord = endCoordinate;
179
+ if (Array.isArray(startCoordinate)) {
180
+ startCoord = this._getCoordinateForViewplaneNormal(startCoord, viewplaneNormal);
181
+ }
182
+ if (Array.isArray(endCoordinate)) {
183
+ endCoord = this._getCoordinateForViewplaneNormal(endCoord, viewplaneNormal);
184
+ }
185
+ const roundedStartCoord = core_2.utilities.roundToPrecision(startCoord);
186
+ const roundedEndCoord = core_2.utilities.roundToPrecision(endCoord);
187
+ const coord = this._getCoordinateForViewplaneNormal(focalPoint, viewplaneNormal);
188
+ const roundedCoord = core_2.utilities.roundToPrecision(coord);
189
+ if (roundedCoord < Math.min(roundedStartCoord, roundedEndCoord) ||
190
+ roundedCoord > Math.max(roundedStartCoord, roundedEndCoord)) {
164
191
  continue;
165
192
  }
166
193
  if (annotation.invalidated) {
167
194
  this._throttledCalculateCachedStats(annotation, enabledElement);
168
195
  }
169
196
  let firstOrLastSlice = false;
170
- if (sliceIndex === startSlice || sliceIndex === endSlice) {
197
+ if (roundedCoord === roundedStartCoord ||
198
+ roundedCoord === roundedEndCoord) {
171
199
  firstOrLastSlice = true;
172
200
  }
173
201
  if (!viewport.getRenderingEngine()) {
@@ -201,6 +229,42 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
201
229
  lineWidth,
202
230
  });
203
231
  renderStatus = true;
232
+ if (this.configuration.showTextBox &&
233
+ this.configuration.calculatePointsInsideVolume) {
234
+ const options = this.getLinkedTextBoxStyle(styleSpecifier, annotation);
235
+ if (!options.visibility) {
236
+ data.handles.textBox = {
237
+ hasMoved: false,
238
+ worldPosition: [0, 0, 0],
239
+ worldBoundingBox: {
240
+ topLeft: [0, 0, 0],
241
+ topRight: [0, 0, 0],
242
+ bottomLeft: [0, 0, 0],
243
+ bottomRight: [0, 0, 0],
244
+ },
245
+ };
246
+ continue;
247
+ }
248
+ const textLines = this.configuration.getTextLines(data);
249
+ if (!textLines || textLines.length === 0) {
250
+ continue;
251
+ }
252
+ if (!data.handles.textBox.hasMoved) {
253
+ const canvasTextBoxCoords = (0, drawing_1.getTextBoxCoordsCanvas)(canvasCoordinates);
254
+ data.handles.textBox.worldPosition =
255
+ viewport.canvasToWorld(canvasTextBoxCoords);
256
+ }
257
+ const textBoxPosition = viewport.worldToCanvas(data.handles.textBox.worldPosition);
258
+ const textBoxUID = '1';
259
+ const boundingBox = (0, drawingSvg_1.drawLinkedTextBox)(svgDrawingHelper, annotationUID, textBoxUID, textLines, textBoxPosition, canvasCoordinates, {}, options);
260
+ const { x: left, y: top, width, height } = boundingBox;
261
+ data.handles.textBox.worldBoundingBox = {
262
+ topLeft: viewport.canvasToWorld([left, top]),
263
+ topRight: viewport.canvasToWorld([left + width, top]),
264
+ bottomLeft: viewport.canvasToWorld([left, top + height]),
265
+ bottomRight: viewport.canvasToWorld([left + width, top + height]),
266
+ };
267
+ }
204
268
  }
205
269
  return renderStatus;
206
270
  };
@@ -210,17 +274,26 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
210
274
  const { data, metadata } = annotation;
211
275
  const { viewPlaneNormal, spacingInNormal } = metadata;
212
276
  const { imageData } = imageVolume;
213
- const { startSlice, endSlice } = data;
277
+ const { startCoordinate, endCoordinate } = data;
214
278
  const { points } = data.handles;
215
279
  const startIJK = transformWorldToIndex(imageData, points[0]);
216
- if (startIJK[2] !== startSlice) {
217
- throw new Error('Start slice does not match');
218
- }
219
- const endIJK = gl_matrix_1.vec3.fromValues(startIJK[0], startIJK[1], endSlice);
280
+ const endIJK = transformWorldToIndex(imageData, points[0]);
220
281
  const startWorld = gl_matrix_1.vec3.create();
221
282
  imageData.indexToWorldVec3(startIJK, startWorld);
222
283
  const endWorld = gl_matrix_1.vec3.create();
223
284
  imageData.indexToWorldVec3(endIJK, endWorld);
285
+ if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 2) {
286
+ startWorld[2] = startCoordinate;
287
+ endWorld[2] = endCoordinate;
288
+ }
289
+ else if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 0) {
290
+ startWorld[0] = startCoordinate;
291
+ endWorld[0] = endCoordinate;
292
+ }
293
+ else if (this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) == 1) {
294
+ startWorld[1] = startCoordinate;
295
+ endWorld[1] = endCoordinate;
296
+ }
224
297
  const distance = gl_matrix_1.vec3.distance(startWorld, endWorld);
225
298
  const newProjectionPoints = [];
226
299
  for (let dist = 0; dist < distance; dist += spacingInNormal) {
@@ -231,34 +304,46 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
231
304
  }));
232
305
  }
233
306
  data.cachedStats.projectionPoints = newProjectionPoints;
234
- const projectionPointsImageIds = [];
235
- for (const RectanglePoints of newProjectionPoints) {
236
- const imageId = core_1.utilities.getClosestImageId(imageVolume, RectanglePoints[0], viewPlaneNormal);
237
- projectionPointsImageIds.push(imageId);
238
- }
239
- data.cachedStats.projectionPointsImageIds = projectionPointsImageIds;
240
307
  }
241
- _computePointsInsideVolume(annotation, imageVolume, enabledElement) {
242
- const { data } = annotation;
308
+ _computePointsInsideVolume(annotation, targetId, imageVolume, enabledElement) {
309
+ var _a, _b, _c;
310
+ const { data, metadata } = annotation;
311
+ const { viewPlaneNormal, viewUp } = metadata;
312
+ const { viewport, renderingEngine } = enabledElement;
243
313
  const projectionPoints = data.cachedStats.projectionPoints;
244
314
  const pointsInsideVolume = [[]];
315
+ const image = this.getTargetIdImage(targetId, renderingEngine);
316
+ const worldPos1 = data.handles.points[0];
317
+ const worldPos2 = data.handles.points[3];
318
+ const { worldWidth, worldHeight } = (0, getWorldWidthAndHeightFromCorners_1.default)(viewPlaneNormal, viewUp, worldPos1, worldPos2);
319
+ const measureInfo = (0, getCalibratedUnits_1.getCalibratedLengthUnitsAndScale)(image, data.habdles);
320
+ const area = Math.abs(worldWidth * worldHeight) /
321
+ (measureInfo.scale * measureInfo.scale);
322
+ const modalityUnitOptions = {
323
+ isPreScaled: (0, isViewportPreScaled_1.isViewportPreScaled)(viewport, targetId),
324
+ isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
325
+ };
326
+ const modalityUnit = (0, getModalityUnit_1.getModalityUnit)(metadata.Modality, annotation.metadata.referencedImageId, modalityUnitOptions);
245
327
  for (let i = 0; i < projectionPoints.length; i++) {
246
328
  if (!imageVolume) {
247
329
  continue;
248
330
  }
249
331
  const projectionPoint = projectionPoints[i][0];
250
- const worldPos1 = data.handles.points[0];
251
- const worldPos2 = data.handles.points[3];
252
332
  const { dimensions, imageData } = imageVolume;
253
333
  const worldPos1Index = transformWorldToIndex(imageData, worldPos1);
254
334
  const worldProjectionPointIndex = transformWorldToIndex(imageData, projectionPoint);
335
+ const indexOfProjection = this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal);
255
336
  worldPos1Index[0] = Math.floor(worldPos1Index[0]);
256
337
  worldPos1Index[1] = Math.floor(worldPos1Index[1]);
257
- worldPos1Index[2] = Math.floor(worldProjectionPointIndex[2]);
338
+ worldPos1Index[2] = Math.floor(worldPos1Index[2]);
339
+ worldPos1Index[indexOfProjection] =
340
+ worldProjectionPointIndex[indexOfProjection];
258
341
  const worldPos2Index = transformWorldToIndex(imageData, worldPos2);
259
342
  worldPos2Index[0] = Math.floor(worldPos2Index[0]);
260
343
  worldPos2Index[1] = Math.floor(worldPos2Index[1]);
261
- worldPos2Index[2] = Math.floor(worldProjectionPointIndex[2]);
344
+ worldPos2Index[2] = Math.floor(worldPos2Index[2]);
345
+ worldPos2Index[indexOfProjection] =
346
+ worldProjectionPointIndex[indexOfProjection];
262
347
  if (this._isInsideVolume(worldPos1Index, worldPos2Index, dimensions)) {
263
348
  this.isHandleOutsideImage = false;
264
349
  const iMin = Math.min(worldPos1Index[0], worldPos2Index[0]);
@@ -272,11 +357,22 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
272
357
  [jMin, jMax],
273
358
  [kMin, kMax],
274
359
  ];
275
- const pointsInShape = (0, utilities_1.pointInShapeCallback)(imageData, () => true, null, boundsIJK);
360
+ const pointsInShape = (0, utilities_1.pointInShapeCallback)(imageData, () => true, this.configuration.statsCalculator.statsCallback, boundsIJK);
276
361
  pointsInsideVolume.push(pointsInShape);
277
362
  }
278
363
  }
364
+ const stats = this.configuration.statsCalculator.getStatistics();
279
365
  data.cachedStats.pointsInVolume = pointsInsideVolume;
366
+ data.cachedStats.statistics = {
367
+ Modality: metadata.Modality,
368
+ area,
369
+ mean: (_a = stats.mean) === null || _a === void 0 ? void 0 : _a.value,
370
+ stdDev: (_b = stats.stdDev) === null || _b === void 0 ? void 0 : _b.value,
371
+ max: (_c = stats.max) === null || _c === void 0 ? void 0 : _c.value,
372
+ statsArray: stats.array,
373
+ areaUnit: measureInfo.areaUnits,
374
+ modalityUnit,
375
+ };
280
376
  }
281
377
  _calculateCachedStatsTool(annotation, enabledElement) {
282
378
  const data = annotation.data;
@@ -289,25 +385,44 @@ class RectangleROIStartEndThresholdTool extends RectangleROITool_1.default {
289
385
  (0, state_1.triggerAnnotationModified)(annotation, viewport.element);
290
386
  return cachedStats;
291
387
  }
292
- _getEndSliceIndex(imageVolume, worldPos, spacingInNormal, viewPlaneNormal) {
388
+ _getStartCoordinate(worldPos, viewPlaneNormal) {
389
+ const startPos = worldPos;
390
+ const startCoord = this._getCoordinateForViewplaneNormal(startPos, viewPlaneNormal);
391
+ return startCoord;
392
+ }
393
+ _getEndCoordinate(worldPos, spacingInNormal, viewPlaneNormal) {
293
394
  const numSlicesToPropagate = this.configuration.numSlicesToPropagate;
294
395
  const endPos = gl_matrix_1.vec3.create();
295
396
  gl_matrix_1.vec3.scaleAndAdd(endPos, worldPos, viewPlaneNormal, numSlicesToPropagate * spacingInNormal);
296
- const halfSpacingInNormalDirection = spacingInNormal / 2;
297
- const { imageIds } = imageVolume;
298
- let imageIdIndex;
299
- for (let i = 0; i < imageIds.length; i++) {
300
- const imageId = imageIds[i];
301
- const { imagePositionPatient } = core_1.metaData.get('imagePlaneModule', imageId);
302
- const dir = gl_matrix_1.vec3.create();
303
- gl_matrix_1.vec3.sub(dir, endPos, imagePositionPatient);
304
- const dot = gl_matrix_1.vec3.dot(dir, viewPlaneNormal);
305
- if (Math.abs(dot) < halfSpacingInNormalDirection) {
306
- imageIdIndex = i;
307
- }
308
- }
309
- return imageIdIndex;
397
+ const endCoord = this._getCoordinateForViewplaneNormal(endPos, viewPlaneNormal);
398
+ return endCoord;
399
+ }
400
+ _getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal) {
401
+ const viewplaneNormalAbs = [
402
+ Math.abs(viewPlaneNormal[0]),
403
+ Math.abs(viewPlaneNormal[1]),
404
+ Math.abs(viewPlaneNormal[2]),
405
+ ];
406
+ const indexOfDirection = viewplaneNormalAbs.indexOf(Math.max(...viewplaneNormalAbs));
407
+ return indexOfDirection;
408
+ }
409
+ _getCoordinateForViewplaneNormal(pos, viewPlaneNormal) {
410
+ const indexOfDirection = this._getIndexOfCoordinatesForViewplaneNormal(viewPlaneNormal);
411
+ return pos[indexOfDirection];
412
+ }
413
+ }
414
+ function defaultGetTextLines(data) {
415
+ const cachedVolumeStats = data.cachedStats.statistics;
416
+ const { area, mean, max, stdDev, areaUnit, modalityUnit } = cachedVolumeStats;
417
+ if (mean === undefined) {
418
+ return;
310
419
  }
420
+ const textLines = [];
421
+ textLines.push(`Area: ${(0, utilities_1.roundNumber)(area)} ${areaUnit}`);
422
+ textLines.push(`Mean: ${(0, utilities_1.roundNumber)(mean)} ${modalityUnit}`);
423
+ textLines.push(`Max: ${(0, utilities_1.roundNumber)(max)} ${modalityUnit}`);
424
+ textLines.push(`Std Dev: ${(0, utilities_1.roundNumber)(stdDev)} ${modalityUnit}`);
425
+ return textLines;
311
426
  }
312
427
  RectangleROIStartEndThresholdTool.toolName = 'RectangleROIStartEndThreshold';
313
428
  exports.default = RectangleROIStartEndThresholdTool;
@@ -1 +1 @@
1
- {"version":3,"file":"RectangleROIStartEndThresholdTool.js","sourceRoot":"","sources":["../../../../src/tools/segmentation/RectangleROIStartEndThresholdTool.ts"],"names":[],"mappings":";;;;;AAAA,8CAM6B;AAG7B,yCAAiC;AACjC,2DAI+B;AAC/B,0FAAwF;AACxF,0EAA2F;AAC3F,iDAG0B;AAC1B,qEAAiF;AACjF,wEAAgD;AAChD,gGAA4F;AAC5F,+DAGqC;AACrC,kIAA0G;AAC1G,0EAA4F;AAS5F,sFAA8D;AAE9D,gDAAwD;AAExD,MAAM,EAAE,qBAAqB,EAAE,GAAG,gBAAO,CAAC;AAc1C,MAAM,iCAAkC,SAAQ,0BAAgB;IAa9D,YACE,YAA6B,EAAE,EAC/B,mBAA8B;QAC5B,aAAa,EAAE;YACb,oBAAoB,EAAE,EAAE;YACxB,yBAAyB,EAAE,KAAK;SACjC;KACF;QAED,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAiBrC,qBAAgB,GAAG,CAAC,GAAoC,EAAE,EAAE;YAC1D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;YAC/C,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC;YAErC,MAAM,cAAc,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;YAClD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,cAAc,CAAC;YAErD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;YAE3C,IAAI,iBAAiB,EAAE,WAAW,EAAE,QAAQ,CAAC;YAC7C,IAAI,QAAQ,YAAY,oBAAa,EAAE;gBACrC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;aACnD;iBAAM;gBACL,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC5C,QAAQ,GAAG,gBAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACzC,WAAW,GAAG,YAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACxC,iBAAiB,GAAG,gBAAO,CAAC,iBAAiB,CAC3C,WAAW,EACX,QAAQ,EACR,eAAe,CAChB,CAAC;aACH;YAED,IAAI,CAAC,iBAAiB,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;aACtE;YAED,MAAM,UAAU,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YACrD,MAAM,eAAe,GAAG,gBAAO,CAAC,2BAA2B,CACzD,WAAW,EACX,eAAe,CAChB,CAAC;YAMF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CACrC,WAAW,EACX,QAAQ,EACR,eAAe,EACf,eAAe,CAChB,CAAC;YAEF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YAE9D,MAAM,UAAU,GAAG;gBACjB,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,IAAI;gBACjB,QAAQ,EAAE;oBACR,eAAe,EAAgB,CAAC,GAAG,eAAe,CAAC;oBACnD,cAAc;oBACd,MAAM,EAAgB,CAAC,GAAG,MAAM,CAAC;oBACjC,mBAAmB;oBACnB,iBAAiB;oBACjB,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;oBAC5B,QAAQ;oBACR,eAAe;iBAChB;gBACD,IAAI,EAAE;oBACJ,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,QAAQ;oBAClB,WAAW,EAAE;wBACX,cAAc,EAAE,EAAE;wBAClB,gBAAgB,EAAE,EAAE;wBACpB,wBAAwB,EAAE,CAAC,iBAAiB,CAAC;qBAC9C;oBACD,OAAO,EAAE;wBAEP,OAAO,EAAE;4BACP,QAAQ,EAAE,KAAK;4BACf,aAAa,EAAE,IAAI;4BACnB,gBAAgB,EAAE,IAAI;yBACvB;wBACD,MAAM,EAAE;4BACQ,CAAC,GAAG,QAAQ,CAAC;4BACb,CAAC,GAAG,QAAQ,CAAC;4BACb,CAAC,GAAG,QAAQ,CAAC;4BACb,CAAC,GAAG,QAAQ,CAAC;yBAC5B;wBACD,iBAAiB,EAAE,IAAI;qBACxB;oBACD,WAAW,EAAE,IAAI;iBAClB;aACF,CAAC;YAKF,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEvD,IAAA,+BAAa,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEnC,MAAM,mBAAmB,GAAG,IAAA,gDAA8B,EACxD,OAAO,EACP,IAAI,CAAC,WAAW,EAAE,CACnB,CAAC;YAEF,IAAI,CAAC,QAAQ,GAAG;gBACd,UAAU;gBACV,mBAAmB;gBACnB,WAAW,EAAE,CAAC;gBACd,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,KAAK;aAChB,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAE5B,IAAA,iCAAiB,EAAC,OAAO,CAAC,CAAC;YAE3B,GAAG,CAAC,cAAc,EAAE,CAAC;YAErB,IAAA,+CAAqC,EAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;YAE5E,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,GAAoC,EAAQ,EAAE;YAC5D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;YAEhC,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,QAAQ,EAAE,GAChE,IAAI,CAAC,QAAQ,CAAC;YAChB,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;YAE5B,IAAI,aAAa,IAAI,CAAC,QAAQ,EAAE;gBAC9B,OAAO;aACR;YAED,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAEtC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAE9B,IAAA,kCAAkB,EAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,cAAc,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;YAElD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IACE,IAAI,CAAC,oBAAoB;gBACzB,IAAI,CAAC,aAAa,CAAC,yBAAyB,EAC5C;gBACA,IAAA,kCAAgB,EAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aAC5C;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,YAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEvE,IAAI,IAAI,CAAC,aAAa,CAAC,2BAA2B,EAAE;gBAClD,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;aAC1E;YAED,IAAA,+CAAqC,EACnC,cAAc,CAAC,eAAe,EAC9B,mBAAmB,CACpB,CAAC;YAEF,IAAI,aAAa,EAAE;gBACjB,IAAA,kCAA0B,EAAC,UAAU,CAAC,CAAC;aACxC;QACH,CAAC,CAAC;QAiKF,qBAAgB,GAAG,CACjB,cAAqC,EACrC,gBAAkC,EACzB,EAAE;YACX,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;YAEpC,MAAM,WAAW,GAAG,IAAA,gCAAc,EAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEzE,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,CAAA,EAAE;gBACxB,OAAO,YAAY,CAAC;aACrB;YAED,MAAM,UAAU,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YAErD,MAAM,cAAc,GAAmB;gBACrC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC5B,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE;aACvC,CAAC;YAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,CACyC,CAAC;gBAC7C,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;gBAC3C,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;gBACtC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;gBAEnD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEvE,cAAc,CAAC,aAAa,GAAG,aAAa,CAAC;gBAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;gBACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;gBACvE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;gBAKjE,IACE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC;oBAC3C,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,EAC3C;oBACA,SAAS;iBACV;gBAID,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,IAAI,CAAC,8BAA8B,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;iBACjE;gBAID,IAAI,gBAAgB,GAAG,KAAK,CAAC;gBAC7B,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE;oBACxD,gBAAgB,GAAG,IAAI,CAAC;iBACzB;gBAGD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE;oBAClC,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACpD,OAAO,YAAY,CAAC;iBACrB;gBAED,IAAI,wBAAwB,CAAC;gBAE7B,IAAI,CAAC,IAAA,0CAAmB,EAAC,aAAa,CAAC,EAAE;oBACvC,SAAS;iBACV;gBAED,IACE,CAAC,IAAA,sCAAkB,EAAC,UAAU,CAAC;oBAC/B,CAAC,IAAI,CAAC,QAAQ;oBACd,iBAAiB,KAAK,IAAI;oBAC1B,gBAAgB,EAChB;oBAEA,wBAAwB,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC;iBACnE;gBAED,IAAI,wBAAwB,EAAE;oBAC5B,MAAM,cAAc,GAAG,GAAG,CAAC;oBAE3B,IAAA,wBAAc,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB;wBACE,KAAK;qBACN,CACF,CAAC;iBACH;gBAED,IAAI,aAAa,GAAG,QAAQ,CAAC;gBAE7B,IAAI,CAAC,gBAAgB,EAAE;oBACrB,aAAa,GAAG,CAAC,CAAC;iBACnB;gBAED,MAAM,YAAY,GAAG,GAAG,CAAC;gBACzB,IAAA,qBAAW,EACT,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,iBAAiB,CAAC,CAAC,CAAC,EACpB,iBAAiB,CAAC,CAAC,CAAC,EACpB;oBACE,KAAK;oBACL,QAAQ,EAAE,aAAa;oBACvB,SAAS;iBACV,CACF,CAAC;gBAEF,YAAY,GAAG,IAAI,CAAC;aACrB;YAED,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QA/cA,IAAI,CAAC,8BAA8B,GAAG,IAAA,kBAAQ,EAC5C,IAAI,CAAC,yBAAyB,EAC9B,GAAG,EACH,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;IACJ,CAAC;IAoLD,wBAAwB,CACtB,UAAmD,EACnD,WAA+B;QAE/B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;QACtC,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;QACtD,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;QAClC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QACtC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAEhC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QAGD,MAAM,MAAM,GAAG,gBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEnE,MAAM,UAAU,GAAG,gBAAI,CAAC,MAAM,EAAE,CAAC;QACjC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,gBAAI,CAAC,MAAM,EAAE,CAAC;QAC/B,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAG7C,MAAM,QAAQ,GAAG,gBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAIrD,MAAM,mBAAmB,GAAG,EAAE,CAAC;QAC/B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,eAAe,EAAE;YAC3D,mBAAmB,CAAC,IAAI,CACtB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnB,MAAM,QAAQ,GAAG,gBAAI,CAAC,MAAM,EAAE,CAAC;gBAC/B,gBAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;gBACzD,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC,CAAC,CACH,CAAC;SACH;QAED,IAAI,CAAC,WAAW,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;QAGxD,MAAM,wBAAwB,GAAG,EAAE,CAAC;QACpC,KAAK,MAAM,eAAe,IAAI,mBAAmB,EAAE;YACjD,MAAM,OAAO,GAAG,gBAAO,CAAC,iBAAiB,CACvC,WAAW,EACX,eAAe,CAAC,CAAC,CAAC,EAClB,eAAe,CAChB,CAAC;YACF,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,WAAW,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IACvE,CAAC;IAGD,0BAA0B,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc;QAChE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC;QAE3D,MAAM,kBAAkB,GAAqB,CAAC,EAAE,CAAC,CAAC;QAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAIhD,IAAI,CAAC,WAAW,EAAE;gBAChB,SAAS;aACV;YAED,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAEzC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;YAE9C,MAAM,cAAc,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAEnE,MAAM,yBAAyB,GAAG,qBAAqB,CACrD,SAAS,EACT,eAAe,CAChB,CAAC;YAEF,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7D,MAAM,cAAc,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAEnE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;YAK7D,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE;gBACpE,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE5D,MAAM,SAAS,GAAG;oBAChB,CAAC,IAAI,EAAE,IAAI,CAAC;oBACZ,CAAC,IAAI,EAAE,IAAI,CAAC;oBACZ,CAAC,IAAI,EAAE,IAAI,CAAC;iBACiC,CAAC;gBAEhD,MAAM,aAAa,GAAG,IAAA,gCAAoB,EACxC,SAAS,EACT,GAAG,EAAE,CAAC,IAAI,EACV,IAAI,EACJ,SAAS,CACV,CAAC;gBAGF,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACxC;SACF;QACD,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,kBAAkB,CAAC;IACvD,CAAC;IAED,yBAAyB,CAAC,UAAU,EAAE,cAAc;QAClD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;QAEpC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,YAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAKvE,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEvD,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC;QAG/B,IAAA,iCAAyB,EAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAExD,OAAO,WAAW,CAAC;IACrB,CAAC;IAmID,iBAAiB,CACf,WAA+B,EAC/B,QAAsB,EACtB,eAAuB,EACvB,eAA6B;QAE7B,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;QAIrE,MAAM,MAAM,GAAG,gBAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,gBAAI,CAAC,WAAW,CACd,MAAM,EACN,QAAQ,EACR,eAAe,EACf,oBAAoB,GAAG,eAAe,CACvC,CAAC;QAEF,MAAM,4BAA4B,GAAG,eAAe,GAAG,CAAC,CAAC;QAEzD,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;QACjC,IAAI,YAAY,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE5B,MAAM,EAAE,oBAAoB,EAAE,GAAG,eAAQ,CAAC,GAAG,CAC3C,kBAAkB,EAClB,OAAO,CACR,CAAC;YAEF,MAAM,GAAG,GAAG,gBAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,gBAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;YAE5C,MAAM,GAAG,GAAG,gBAAI,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;YAE3C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,4BAA4B,EAAE;gBAChD,YAAY,GAAG,CAAC,CAAC;aAClB;SACF;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED,iCAAiC,CAAC,QAAQ,GAAG,+BAA+B,CAAC;AAC7E,kBAAe,iCAAiC,CAAC"}
1
+ {"version":3,"file":"RectangleROIStartEndThresholdTool.js","sourceRoot":"","sources":["../../../../src/tools/segmentation/RectangleROIStartEndThresholdTool.ts"],"names":[],"mappings":"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"}
@@ -25,5 +25,6 @@ declare type CinePlayContext = {
25
25
  get frameTimeVectorEnabled(): boolean;
26
26
  waitForRenderedCount?: number;
27
27
  scroll(delta: number): void;
28
+ play?(fps?: number): number;
28
29
  };
29
30
  export type { PlayClipOptions, ToolData, CinePlayContext };
@@ -222,16 +222,27 @@ export interface RectangleROIStartEndThresholdAnnotation extends Annotation {
222
222
  };
223
223
  data: {
224
224
  label: string;
225
- startSlice: number;
226
- endSlice: number;
225
+ startCoordinate: number;
226
+ endCoordinate: number;
227
227
  cachedStats: {
228
228
  pointsInVolume: Types.Point3[];
229
229
  projectionPoints: Types.Point3[][];
230
230
  projectionPointsImageIds: string[];
231
+ statistics?: ROICachedStats | any[];
231
232
  };
232
233
  handles: {
233
234
  points: Types.Point3[];
234
235
  activeHandleIndex: number | null;
236
+ textBox: {
237
+ hasMoved: boolean;
238
+ worldPosition: Types.Point3;
239
+ worldBoundingBox: {
240
+ topLeft: Types.Point3;
241
+ topRight: Types.Point3;
242
+ bottomLeft: Types.Point3;
243
+ bottomRight: Types.Point3;
244
+ };
245
+ };
235
246
  };
236
247
  };
237
248
  }
@@ -251,15 +262,26 @@ export interface CircleROIStartEndThresholdAnnotation extends Annotation {
251
262
  };
252
263
  data: {
253
264
  label: string;
254
- startSlice: number;
255
- endSlice: number;
265
+ startCoordinate: number;
266
+ endCoordinate: number;
256
267
  cachedStats?: {
257
268
  pointsInVolume: Types.Point3[];
258
269
  projectionPoints: Types.Point3[][];
270
+ statistics?: ROICachedStats | any[];
259
271
  };
260
272
  handles: {
261
273
  points: [Types.Point3, Types.Point3];
262
274
  activeHandleIndex: number | null;
275
+ textBox?: {
276
+ hasMoved: boolean;
277
+ worldPosition: Types.Point3;
278
+ worldBoundingBox: {
279
+ topLeft: Types.Point3;
280
+ topRight: Types.Point3;
281
+ bottomLeft: Types.Point3;
282
+ bottomRight: Types.Point3;
283
+ };
284
+ };
263
285
  };
264
286
  };
265
287
  }
@@ -93,13 +93,24 @@ function playClip(element, playClipOptions) {
93
93
  }
94
94
  const delta = newStepIndex - currentStepIndex;
95
95
  if (delta) {
96
- playClipContext.scroll(delta);
96
+ try {
97
+ playClipContext.scroll(delta);
98
+ }
99
+ catch (e) {
100
+ console.warn('Play clip not scrolling', e);
101
+ _stopClipWithData(playClipData);
102
+ triggerEvent(element, events_1.default.CLIP_STOPPED, eventDetail);
103
+ return;
104
+ }
97
105
  }
98
106
  };
99
107
  if (isDynamicCinePlaying) {
100
108
  dynamicVolumesPlayingMap.set(volume.volumeId, element);
101
109
  }
102
- if (playClipTimeouts &&
110
+ if (playClipContext.play) {
111
+ playClipData.framesPerSecond = playClipContext.play(playClipOptions.framesPerSecond);
112
+ }
113
+ else if (playClipTimeouts &&
103
114
  playClipTimeouts.length > 0 &&
104
115
  playClipIsTimeVarying) {
105
116
  playClipData.usingFrameTimeVector = true;
@@ -126,6 +137,7 @@ function _stopClip(element, options = { stopDynamicCine: true, viewportId: undef
126
137
  const { stopDynamicCine, viewportId } = options;
127
138
  const enabledElement = (0, core_1.getEnabledElement)(element);
128
139
  let toolState;
140
+ const viewport = enabledElement === null || enabledElement === void 0 ? void 0 : enabledElement.viewport;
129
141
  if (!enabledElement) {
130
142
  if (viewportId) {
131
143
  toolState = (0, state_1.getToolStateByViewportId)(viewportId);
@@ -141,8 +153,10 @@ function _stopClip(element, options = { stopDynamicCine: true, viewportId: undef
141
153
  if (toolState) {
142
154
  _stopClipWithData(toolState);
143
155
  }
144
- if (stopDynamicCine &&
145
- (enabledElement === null || enabledElement === void 0 ? void 0 : enabledElement.viewport) instanceof core_1.BaseVolumeViewport) {
156
+ if (viewport instanceof core_1.VideoViewport) {
157
+ viewport.pause();
158
+ }
159
+ else if (stopDynamicCine && viewport instanceof core_1.BaseVolumeViewport) {
146
160
  _stopDynamicVolumeCine(element);
147
161
  }
148
162
  }
@@ -237,6 +251,36 @@ function _createStackViewportCinePlayContext(viewport, waitForRendered) {
237
251
  },
238
252
  };
239
253
  }
254
+ function _createVideoViewportCinePlayContext(viewport, waitForRendered) {
255
+ return {
256
+ get numScrollSteps() {
257
+ return viewport.getNumberOfSlices();
258
+ },
259
+ get currentStepIndex() {
260
+ return viewport.getSliceIndex();
261
+ },
262
+ get frameTimeVectorEnabled() {
263
+ return true;
264
+ },
265
+ waitForRenderedCount: 0,
266
+ scroll(delta) {
267
+ if (this.waitForRenderedCount <= waitForRendered &&
268
+ viewport.viewportStatus !== ViewportStatus.RENDERED) {
269
+ this.waitForRenderedCount++;
270
+ return;
271
+ }
272
+ this.waitForRenderedCount = 0;
273
+ (0, scroll_1.default)(viewport, { delta, debounceLoading: debounced });
274
+ },
275
+ play(fps) {
276
+ if (fps) {
277
+ viewport.setPlaybackRate(fps / 24);
278
+ }
279
+ viewport.play();
280
+ return viewport.getFrameRate();
281
+ },
282
+ };
283
+ }
240
284
  function _createVolumeViewportCinePlayContext(viewport, volume) {
241
285
  const { volumeId } = volume;
242
286
  const cachedScrollInfo = {
@@ -292,7 +336,7 @@ function _createDynamicVolumeViewportCinePlayContext(volume) {
292
336
  };
293
337
  }
294
338
  function _createCinePlayContext(viewport, playClipOptions) {
295
- var _a;
339
+ var _a, _b;
296
340
  if (viewport instanceof core_1.StackViewport) {
297
341
  return _createStackViewportCinePlayContext(viewport, (_a = playClipOptions.waitForRendered) !== null && _a !== void 0 ? _a : 30);
298
342
  }
@@ -303,6 +347,9 @@ function _createCinePlayContext(viewport, playClipOptions) {
303
347
  }
304
348
  return _createVolumeViewportCinePlayContext(viewport, volume);
305
349
  }
350
+ if (viewport instanceof core_1.VideoViewport) {
351
+ return _createVideoViewportCinePlayContext(viewport, (_b = playClipOptions.waitForRendered) !== null && _b !== void 0 ? _b : 30);
352
+ }
306
353
  throw new Error('Unknown viewport type');
307
354
  }
308
355
  //# sourceMappingURL=playClip.js.map