@cornerstonejs/tools 0.66.7 → 0.67.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 (50) hide show
  1. package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +5 -2
  2. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +221 -22
  3. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  4. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +1 -0
  5. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
  6. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +20 -6
  7. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
  8. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js +2 -1
  9. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
  10. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +6 -1
  11. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js.map +1 -1
  12. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +1 -0
  13. package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.d.ts +3 -1
  14. package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.js +51 -1
  15. package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.js.map +1 -1
  16. package/dist/cjs/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts +1 -0
  17. package/dist/cjs/utilities/math/polyline/pointInPolyline.d.ts +2 -0
  18. package/dist/cjs/utilities/math/polyline/pointInPolyline.js +14 -0
  19. package/dist/cjs/utilities/math/polyline/pointInPolyline.js.map +1 -0
  20. package/dist/esm/tools/annotation/PlanarFreehandROITool.d.ts +5 -2
  21. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +219 -22
  22. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  23. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +1 -0
  24. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
  25. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +20 -6
  26. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
  27. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +2 -1
  28. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
  29. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js +6 -1
  30. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEndEditLoop.js.map +1 -1
  31. package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +1 -0
  32. package/dist/esm/utilities/math/polyline/getIntersectionWithPolyline.d.ts +3 -1
  33. package/dist/esm/utilities/math/polyline/getIntersectionWithPolyline.js +49 -1
  34. package/dist/esm/utilities/math/polyline/getIntersectionWithPolyline.js.map +1 -1
  35. package/dist/esm/utilities/math/polyline/planarFreehandROIInternalTypes.d.ts +1 -0
  36. package/dist/esm/utilities/math/polyline/pointInPolyline.d.ts +2 -0
  37. package/dist/esm/utilities/math/polyline/pointInPolyline.js +11 -0
  38. package/dist/esm/utilities/math/polyline/pointInPolyline.js.map +1 -0
  39. package/dist/umd/index.js +1 -1
  40. package/dist/umd/index.js.map +1 -1
  41. package/package.json +3 -3
  42. package/src/tools/annotation/PlanarFreehandROITool.ts +356 -36
  43. package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +1 -0
  44. package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +39 -14
  45. package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +2 -1
  46. package/src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts +14 -2
  47. package/src/types/ToolSpecificAnnotationTypes.ts +1 -0
  48. package/src/utilities/math/polyline/getIntersectionWithPolyline.ts +94 -1
  49. package/src/utilities/math/polyline/planarFreehandROIInternalTypes.ts +1 -0
  50. package/src/utilities/math/polyline/pointInPolyline.ts +17 -0
@@ -1 +1 @@
1
- {"version":3,"file":"openContourEditLoop.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openContourEditLoop.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ const enums_1 = require("../../../enums");
6
6
  const elementCursor_1 = require("../../../cursors/elementCursor");
7
7
  const math_1 = require("../../../utilities/math");
8
8
  const { getSubPixelSpacingAndXYDirections } = math_1.polyline;
9
- function activateOpenContourEndEdit(evt, annotation, viewportIdsToRender) {
9
+ function activateOpenContourEndEdit(evt, annotation, viewportIdsToRender, handle) {
10
10
  this.isDrawing = true;
11
11
  const eventDetail = evt.detail;
12
12
  const { element } = eventDetail;
@@ -18,6 +18,10 @@ function activateOpenContourEndEdit(evt, annotation, viewportIdsToRender) {
18
18
  if (handleIndexGrabbed === 0) {
19
19
  canvasPoints.reverse();
20
20
  }
21
+ let movingTextBox = false;
22
+ if (handle.worldPosition) {
23
+ movingTextBox = true;
24
+ }
21
25
  this.drawData = {
22
26
  canvasPoints: canvasPoints,
23
27
  polylineIndex: canvasPoints.length - 1,
@@ -28,6 +32,7 @@ function activateOpenContourEndEdit(evt, annotation, viewportIdsToRender) {
28
32
  spacing,
29
33
  xDir,
30
34
  yDir,
35
+ movingTextBox,
31
36
  };
32
37
  store_1.state.isInteractingWithTool = true;
33
38
  element.addEventListener(enums_1.Events.MOUSE_UP, this.mouseUpDrawCallback);
@@ -1 +1 @@
1
- {"version":3,"file":"openContourEndEditLoop.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts"],"names":[],"mappings":";;AAAA,8CAAwD;AACxD,0CAAuC;AACvC,0CAAwC;AACxC,kEAAmE;AAEnE,kDAAmD;AAEnD,MAAM,EAAE,iCAAiC,EAAE,GAAG,eAAQ,CAAC;AAMvD,SAAS,0BAA0B,CACjC,GAAoC,EACpC,UAAsB,EACtB,mBAA6B;IAE7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAEtB,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;IAChC,MAAM,cAAc,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;IAEpC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,iCAAiC,CAC/D,QAAQ,EACR,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACtC,CAAC;IAEF,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC1E,MAAM,kBAAkB,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAIrE,IAAI,kBAAkB,KAAK,CAAC,EAAE;QAC5B,YAAY,CAAC,OAAO,EAAE,CAAC;KACxB;IAED,IAAI,CAAC,QAAQ,GAAG;QACd,YAAY,EAAE,YAAY;QAC1B,aAAa,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;KACvC,CAAC;IAEF,IAAI,CAAC,UAAU,GAAG;QAChB,UAAU;QACV,mBAAmB;QACnB,OAAO;QACP,IAAI;QACJ,IAAI;KACL,CAAC;IAEF,aAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAGnC,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpE,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACxE,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvE,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrE,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACxE,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAErE,IAAA,iCAAiB,EAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAKD,SAAS,8BAA8B,CAAC,YAAY;IAClD,YAAY,CAAC,0BAA0B;QACrC,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,kBAAe,8BAA8B,CAAC"}
1
+ {"version":3,"file":"openContourEndEditLoop.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/openContourEndEditLoop.ts"],"names":[],"mappings":";;AAAA,8CAAwD;AACxD,0CAAuC;AACvC,0CAAwC;AACxC,kEAAmE;AAOnE,kDAAmD;AAEnD,MAAM,EAAE,iCAAiC,EAAE,GAAG,eAAQ,CAAC;AAMvD,SAAS,0BAA0B,CACjC,GAAoC,EACpC,UAAsB,EACtB,mBAA6B,EAC7B,MAAyB;IAEzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAEtB,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;IAChC,MAAM,cAAc,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;IAEpC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,iCAAiC,CAC/D,QAAQ,EACR,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACtC,CAAC;IAEF,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC1E,MAAM,kBAAkB,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAIrE,IAAI,kBAAkB,KAAK,CAAC,EAAE;QAC5B,YAAY,CAAC,OAAO,EAAE,CAAC;KACxB;IAED,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAK,MAAwB,CAAC,aAAa,EAAE;QAC3C,aAAa,GAAG,IAAI,CAAC;KACtB;IAED,IAAI,CAAC,QAAQ,GAAG;QACd,YAAY,EAAE,YAAY;QAC1B,aAAa,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;KACvC,CAAC;IAEF,IAAI,CAAC,UAAU,GAAG;QAChB,UAAU;QACV,mBAAmB;QACnB,OAAO;QACP,IAAI;QACJ,IAAI;QACJ,aAAa;KACd,CAAC;IAEF,aAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAGnC,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpE,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACxE,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvE,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrE,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACxE,OAAO,CAAC,gBAAgB,CAAC,cAAM,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAErE,IAAA,iCAAiB,EAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAKD,SAAS,8BAA8B,CAAC,YAAY;IAClD,YAAY,CAAC,0BAA0B;QACrC,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,kBAAe,8BAA8B,CAAC"}
@@ -226,6 +226,7 @@ export interface PlanarFreehandROIAnnotation extends Annotation {
226
226
  };
227
227
  };
228
228
  };
229
+ cachedStats?: ROICachedStats;
229
230
  };
230
231
  }
231
232
  export interface ArrowAnnotation extends Annotation {
@@ -1,7 +1,9 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
+ declare function getAllIntersectionsWithPolyline(points: Types.Point2[], p1: Types.Point2, q1: Types.Point2, closed?: boolean): Types.Point2[];
3
+ declare function getIntersectionCoordinatesWithPolyline(points: Types.Point2[], p1: Types.Point2, q1: Types.Point2, closed?: boolean): Types.Point2[];
2
4
  declare function getFirstIntersectionWithPolyline(points: Types.Point2[], p1: Types.Point2, q1: Types.Point2, closed?: boolean): Types.Point2 | undefined;
3
5
  declare function getClosestIntersectionWithPolyline(points: Types.Point2[], p1: Types.Point2, q1: Types.Point2, closed?: boolean): {
4
6
  segment: Types.Point2;
5
7
  distance: number;
6
8
  } | undefined;
7
- export { getFirstIntersectionWithPolyline, getClosestIntersectionWithPolyline };
9
+ export { getAllIntersectionsWithPolyline, getFirstIntersectionWithPolyline, getClosestIntersectionWithPolyline, getIntersectionCoordinatesWithPolyline, };
@@ -1,7 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getClosestIntersectionWithPolyline = exports.getFirstIntersectionWithPolyline = void 0;
3
+ exports.getIntersectionCoordinatesWithPolyline = exports.getClosestIntersectionWithPolyline = exports.getFirstIntersectionWithPolyline = exports.getAllIntersectionsWithPolyline = void 0;
4
4
  const gl_matrix_1 = require("gl-matrix");
5
+ function getAllIntersectionsWithPolyline(points, p1, q1, closed = true) {
6
+ let initialI;
7
+ let j;
8
+ const intersections = [];
9
+ if (closed) {
10
+ j = points.length - 1;
11
+ initialI = 0;
12
+ }
13
+ else {
14
+ j = 0;
15
+ initialI = 1;
16
+ }
17
+ for (let i = initialI; i < points.length; i++) {
18
+ const p2 = points[j];
19
+ const q2 = points[i];
20
+ if (doesIntersect(p1, q1, p2, q2)) {
21
+ intersections.push([j, i]);
22
+ }
23
+ j = i;
24
+ }
25
+ return intersections;
26
+ }
27
+ exports.getAllIntersectionsWithPolyline = getAllIntersectionsWithPolyline;
28
+ function getIntersectionCoordinatesWithPolyline(points, p1, q1, closed = true) {
29
+ const result = [];
30
+ const polylineIndexes = getAllIntersectionsWithPolyline(points, p1, q1, closed);
31
+ for (let i = 0; i < polylineIndexes.length; i++) {
32
+ const p2 = points[polylineIndexes[i][0]];
33
+ const q2 = points[polylineIndexes[i][1]];
34
+ const intersection = getIntersection(p1, q1, p2, q2);
35
+ result.push(intersection);
36
+ }
37
+ return result;
38
+ }
39
+ exports.getIntersectionCoordinatesWithPolyline = getIntersectionCoordinatesWithPolyline;
5
40
  function getFirstIntersectionWithPolyline(points, p1, q1, closed = true) {
6
41
  let initialI;
7
42
  let j;
@@ -107,4 +142,19 @@ function onSegment(p, q, r) {
107
142
  }
108
143
  return false;
109
144
  }
145
+ function getIntersection(p1, q1, p2, q2) {
146
+ const denominator = (q2[1] - p2[1]) * (q1[0] - p1[0]) - (q2[0] - p2[0]) * (q1[1] - p1[1]);
147
+ if (denominator == 0) {
148
+ return;
149
+ }
150
+ let a = p1[1] - p2[1];
151
+ let b = p1[0] - p2[0];
152
+ const numerator1 = (q2[0] - p2[0]) * a - (q2[1] - p2[1]) * b;
153
+ const numerator2 = (q1[0] - p1[0]) * a - (q1[1] - p1[1]) * b;
154
+ a = numerator1 / denominator;
155
+ b = numerator2 / denominator;
156
+ const resultX = p1[0] + a * (q1[0] - p1[0]);
157
+ const resultY = p1[1] + a * (q1[1] - p1[1]);
158
+ return [resultX, resultY];
159
+ }
110
160
  //# sourceMappingURL=getIntersectionWithPolyline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getIntersectionWithPolyline.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getIntersectionWithPolyline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getIntersectionWithPolyline.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getIntersectionWithPolyline.ts"],"names":[],"mappings":"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"}
@@ -18,5 +18,6 @@ declare type PlanarFreehandROICommonData = {
18
18
  spacing: Types.Point2;
19
19
  xDir: Types.Point3;
20
20
  yDir: Types.Point3;
21
+ movingTextBox?: boolean;
21
22
  };
22
23
  export { PlanarFreehandROIDrawData, PlanarFreehandROIEditData, PlanarFreehandROICommonData, };
@@ -0,0 +1,2 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ export default function pointInPolyline(points: Types.Point2[], point: Types.Point2, pointEnd: Types.Point2): boolean;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const getIntersectionWithPolyline_1 = require("./getIntersectionWithPolyline");
4
+ function pointInPolyline(points, point, pointEnd) {
5
+ const intersections = (0, getIntersectionWithPolyline_1.getAllIntersectionsWithPolyline)(points, point, [
6
+ point[0],
7
+ pointEnd[1],
8
+ ]);
9
+ if (intersections.length % 2 === 0)
10
+ return false;
11
+ return true;
12
+ }
13
+ exports.default = pointInPolyline;
14
+ //# sourceMappingURL=pointInPolyline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointInPolyline.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/pointInPolyline.ts"],"names":[],"mappings":";;AACA,+EAAgF;AAEhF,SAAwB,eAAe,CACrC,MAAsB,EACtB,KAAmB,EACnB,QAAsB;IAEtB,MAAM,aAAa,GAAG,IAAA,6DAA+B,EAAC,MAAM,EAAE,KAAK,EAAE;QACnE,KAAK,CAAC,CAAC,CAAC;QACR,QAAQ,CAAC,CAAC,CAAC;KACZ,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEjD,OAAO,IAAI,CAAC;AACd,CAAC;AAbD,kCAaC"}
@@ -1,6 +1,6 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
2
  import { AnnotationTool } from '../base';
3
- import { EventTypes, Annotations, PublicToolProps, ToolProps, SVGDrawingHelper } from '../../types';
3
+ import { EventTypes, ToolHandle, Annotations, PublicToolProps, ToolProps, SVGDrawingHelper } from '../../types';
4
4
  import { PlanarFreehandROIAnnotation } from '../../types/ToolSpecificAnnotationTypes';
5
5
  declare class PlanarFreehandROITool extends AnnotationTool {
6
6
  static toolName: any;
@@ -24,7 +24,7 @@ declare class PlanarFreehandROITool extends AnnotationTool {
24
24
  private renderOpenContourBeingEdited;
25
25
  constructor(toolProps?: PublicToolProps, defaultToolProps?: ToolProps);
26
26
  addNewAnnotation: (evt: EventTypes.InteractionEventType) => PlanarFreehandROIAnnotation;
27
- handleSelectedCallback: (evt: EventTypes.InteractionEventType, annotation: PlanarFreehandROIAnnotation) => void;
27
+ handleSelectedCallback: (evt: EventTypes.InteractionEventType, annotation: PlanarFreehandROIAnnotation, handle: ToolHandle) => void;
28
28
  toolSelectedCallback: (evt: EventTypes.InteractionEventType, annotation: PlanarFreehandROIAnnotation) => void;
29
29
  isPointNearTool: (element: HTMLDivElement, annotation: PlanarFreehandROIAnnotation, canvasCoords: Types.Point2, proximity: number) => boolean;
30
30
  cancel: (element: HTMLDivElement) => void;
@@ -33,5 +33,8 @@ declare class PlanarFreehandROITool extends AnnotationTool {
33
33
  filterInteractableAnnotationsForElement(element: HTMLDivElement, annotations: Annotations): Annotations | undefined;
34
34
  private filterAnnotationsWithinSlice;
35
35
  renderAnnotation: (enabledElement: Types.IEnabledElement, svgDrawingHelper: SVGDrawingHelper) => boolean;
36
+ _calculateCachedStats: (annotation: any, viewport: any, renderingEngine: any, enabledElement: any) => any;
37
+ _renderStats: (annotation: any, viewport: any, enabledElement: any, svgDrawingHelper: any) => void;
38
+ _getTextLines: (data: any, targetId: string, isPreScaled: boolean, isSuvScaled: boolean) => string[];
36
39
  }
37
40
  export default PlanarFreehandROITool;
@@ -5,6 +5,7 @@ import { AnnotationTool } from '../base';
5
5
  import { addAnnotation, getAnnotations, } from '../../stateManagement/annotation/annotationState';
6
6
  import { polyline } from '../../utilities/math';
7
7
  import { filterAnnotationsForDisplay } from '../../utilities/planar';
8
+ import throttle from '../../utilities/throttle';
8
9
  import { getViewportIdsWithToolToRender } from '../../utilities/viewportFilters';
9
10
  import triggerAnnotationRenderForViewportIds from '../../utilities/triggerAnnotationRenderForViewportIds';
10
11
  import registerDrawLoop from './planarFreehandROITool/drawLoop';
@@ -13,6 +14,12 @@ import registerClosedContourEditLoop from './planarFreehandROITool/closedContour
13
14
  import registerOpenContourEditLoop from './planarFreehandROITool/openContourEditLoop';
14
15
  import registerOpenContourEndEditLoop from './planarFreehandROITool/openContourEndEditLoop';
15
16
  import registerRenderMethods from './planarFreehandROITool/renderMethods';
17
+ import { drawLinkedTextBox } from '../../drawingSvg';
18
+ import { getTextBoxCoordsCanvas } from '../../utilities/drawing';
19
+ import { getIntersectionCoordinatesWithPolyline } from '../../utilities/math/polyline/getIntersectionWithPolyline';
20
+ import pointInShapeCallback from '../../utilities/pointInShapeCallback';
21
+ import { isViewportPreScaled } from '../../utilities/viewport/isViewportPreScaled';
22
+ import { getModalityUnit } from '../../utilities/getModalityUnit';
16
23
  const { pointCanProjectOnLine } = polyline;
17
24
  const { EPSILON } = CONSTANTS;
18
25
  const PARALLEL_THRESHOLD = 1 - EPSILON;
@@ -36,6 +43,7 @@ class PlanarFreehandROITool extends AnnotationTool {
36
43
  knotsRatioPercentageOnAdd: 40,
37
44
  knotsRatioPercentageOnEdit: 40,
38
45
  },
46
+ calculateStats: false,
39
47
  },
40
48
  }) {
41
49
  super(toolProps, defaultToolProps);
@@ -80,6 +88,7 @@ class PlanarFreehandROITool extends AnnotationTool {
80
88
  },
81
89
  polyline: [[...worldPos]],
82
90
  label: '',
91
+ cachedStats: {},
83
92
  },
84
93
  };
85
94
  addAnnotation(annotation, element);
@@ -88,11 +97,11 @@ class PlanarFreehandROITool extends AnnotationTool {
88
97
  triggerAnnotationRenderForViewportIds(renderingEngine, viewportIdsToRender);
89
98
  return annotation;
90
99
  };
91
- this.handleSelectedCallback = (evt, annotation) => {
100
+ this.handleSelectedCallback = (evt, annotation, handle) => {
92
101
  const eventDetail = evt.detail;
93
102
  const { element } = eventDetail;
94
103
  const viewportIdsToRender = getViewportIdsWithToolToRender(element, this.getToolName());
95
- this.activateOpenContourEndEdit(evt, annotation, viewportIdsToRender);
104
+ this.activateOpenContourEndEdit(evt, annotation, viewportIdsToRender, handle);
96
105
  };
97
106
  this.toolSelectedCallback = (evt, annotation) => {
98
107
  const eventDetail = evt.detail;
@@ -162,9 +171,10 @@ class PlanarFreehandROITool extends AnnotationTool {
162
171
  triggerEvent(eventTarget, eventType, eventDetail);
163
172
  };
164
173
  this.renderAnnotation = (enabledElement, svgDrawingHelper) => {
165
- const renderStatus = false;
166
- const { viewport } = enabledElement;
174
+ let renderStatus = false;
175
+ const { viewport, renderingEngine } = enabledElement;
167
176
  const { element } = viewport;
177
+ const targetId = this.getTargetId(viewport);
168
178
  let annotations = (getAnnotations(this.getToolName(), element));
169
179
  if (!annotations?.length) {
170
180
  return renderStatus;
@@ -178,33 +188,219 @@ class PlanarFreehandROITool extends AnnotationTool {
178
188
  const isEditingClosed = this.isEditingClosed;
179
189
  if (!(isDrawing || isEditingOpen || isEditingClosed)) {
180
190
  annotations.forEach((annotation) => {
181
- if (!annotation)
182
- return;
183
191
  this.renderContour(enabledElement, svgDrawingHelper, annotation);
184
192
  });
185
- return renderStatus;
186
193
  }
187
- const activeAnnotationUID = this.commonData.annotation.annotationUID;
188
- annotations.forEach((annotation) => {
189
- if (annotation.annotationUID === activeAnnotationUID) {
190
- if (isDrawing) {
191
- this.renderContourBeingDrawn(enabledElement, svgDrawingHelper, annotation);
194
+ else {
195
+ const activeAnnotationUID = this.commonData.annotation.annotationUID;
196
+ annotations.forEach((annotation) => {
197
+ if (annotation.annotationUID === activeAnnotationUID) {
198
+ if (isDrawing) {
199
+ this.renderContourBeingDrawn(enabledElement, svgDrawingHelper, annotation);
200
+ }
201
+ else if (isEditingClosed) {
202
+ this.renderClosedContourBeingEdited(enabledElement, svgDrawingHelper, annotation);
203
+ }
204
+ else if (isEditingOpen) {
205
+ this.renderOpenContourBeingEdited(enabledElement, svgDrawingHelper, annotation);
206
+ }
207
+ else {
208
+ throw new Error(`Unknown ${this.getToolName()} annotation rendering state`);
209
+ }
192
210
  }
193
- else if (isEditingClosed) {
194
- this.renderClosedContourBeingEdited(enabledElement, svgDrawingHelper, annotation);
211
+ else {
212
+ this.renderContour(enabledElement, svgDrawingHelper, annotation);
195
213
  }
196
- else if (isEditingOpen) {
197
- this.renderOpenContourBeingEdited(enabledElement, svgDrawingHelper, annotation);
214
+ });
215
+ renderStatus = true;
216
+ }
217
+ if (!this.configuration.calculateStats)
218
+ return;
219
+ annotations.forEach((annotation) => {
220
+ const activeAnnotationUID = this.commonData?.annotation.annotationUID;
221
+ if (annotation.annotationUID === activeAnnotationUID &&
222
+ !this.commonData?.movingTextBox)
223
+ return;
224
+ if (!this.commonData?.movingTextBox) {
225
+ const { data } = annotation;
226
+ if (!data.cachedStats[targetId] ||
227
+ data.cachedStats[targetId].areaUnit === undefined) {
228
+ data.cachedStats[targetId] = {
229
+ Modality: null,
230
+ area: null,
231
+ max: null,
232
+ mean: null,
233
+ stdDev: null,
234
+ areaUnit: null,
235
+ };
236
+ this._calculateCachedStats(annotation, viewport, renderingEngine, enabledElement);
198
237
  }
199
- else {
200
- throw new Error(`Unknown ${this.getToolName()} annotation rendering state`);
238
+ else if (annotation.invalidated) {
239
+ this._throttledCalculateCachedStats(annotation, viewport, renderingEngine, enabledElement);
201
240
  }
202
241
  }
203
- else {
204
- this.renderContour(enabledElement, svgDrawingHelper, annotation);
205
- }
242
+ this._renderStats(annotation, viewport, enabledElement, svgDrawingHelper);
206
243
  });
207
- return true;
244
+ return renderStatus;
245
+ };
246
+ this._calculateCachedStats = (annotation, viewport, renderingEngine, enabledElement) => {
247
+ const data = annotation.data;
248
+ const { cachedStats, polyline: points } = data;
249
+ const targetIds = Object.keys(cachedStats);
250
+ for (let i = 0; i < targetIds.length; i++) {
251
+ const targetId = targetIds[i];
252
+ const image = this.getTargetIdImage(targetId, renderingEngine);
253
+ if (!image) {
254
+ continue;
255
+ }
256
+ const { imageData, metadata, hasPixelSpacing } = image;
257
+ const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
258
+ const area = polyline.calculateAreaOfPoints(canvasCoordinates);
259
+ const worldPosIndex = csUtils.transformWorldToIndex(imageData, points[0]);
260
+ worldPosIndex[0] = Math.floor(worldPosIndex[0]);
261
+ worldPosIndex[1] = Math.floor(worldPosIndex[1]);
262
+ worldPosIndex[2] = Math.floor(worldPosIndex[2]);
263
+ let iMin = worldPosIndex[0];
264
+ let iMax = worldPosIndex[0];
265
+ let jMin = worldPosIndex[1];
266
+ let jMax = worldPosIndex[1];
267
+ let kMin = worldPosIndex[2];
268
+ let kMax = worldPosIndex[2];
269
+ for (let j = 1; j < points.length; j++) {
270
+ const worldPosIndex = csUtils.transformWorldToIndex(imageData, points[j]);
271
+ worldPosIndex[0] = Math.floor(worldPosIndex[0]);
272
+ worldPosIndex[1] = Math.floor(worldPosIndex[1]);
273
+ worldPosIndex[2] = Math.floor(worldPosIndex[2]);
274
+ iMin = Math.min(iMin, worldPosIndex[0]);
275
+ iMax = Math.max(iMax, worldPosIndex[0]);
276
+ jMin = Math.min(jMin, worldPosIndex[1]);
277
+ jMax = Math.max(jMax, worldPosIndex[1]);
278
+ kMin = Math.min(kMin, worldPosIndex[2]);
279
+ kMax = Math.max(kMax, worldPosIndex[2]);
280
+ }
281
+ const iDelta = 0.01 * (iMax - iMin);
282
+ const jDelta = 0.01 * (jMax - jMin);
283
+ const kDelta = 0.01 * (kMax - kMin);
284
+ iMin = Math.floor(iMin - iDelta);
285
+ iMax = Math.ceil(iMax + iDelta);
286
+ jMin = Math.floor(jMin - jDelta);
287
+ jMax = Math.ceil(jMax + jDelta);
288
+ kMin = Math.floor(kMin - kDelta);
289
+ kMax = Math.ceil(kMax + kDelta);
290
+ const boundsIJK = [
291
+ [iMin, iMax],
292
+ [jMin, jMax],
293
+ [kMin, kMax],
294
+ ];
295
+ const worldPosEnd = imageData.indexToWorld([iMax, jMax, kMax]);
296
+ const canvasPosEnd = viewport.worldToCanvas(worldPosEnd);
297
+ let count = 0;
298
+ let sum = 0;
299
+ let sumSquares = 0;
300
+ let max = -Infinity;
301
+ const statCalculator = ({ value: newValue }) => {
302
+ if (newValue > max) {
303
+ max = newValue;
304
+ }
305
+ sum += newValue;
306
+ sumSquares += newValue ** 2;
307
+ count += 1;
308
+ };
309
+ let curRow = 0;
310
+ let intersections = [];
311
+ let intersectionCounter = 0;
312
+ pointInShapeCallback(imageData, (pointLPS, pointIJK) => {
313
+ let result = true;
314
+ const point = viewport.worldToCanvas(pointLPS);
315
+ if (point[1] != curRow) {
316
+ intersectionCounter = 0;
317
+ curRow = point[1];
318
+ intersections = getIntersectionCoordinatesWithPolyline(canvasCoordinates, point, [canvasPosEnd[0], point[1]]);
319
+ intersections.sort((function (index) {
320
+ return function (a, b) {
321
+ return a[index] === b[index]
322
+ ? 0
323
+ : a[index] < b[index]
324
+ ? -1
325
+ : 1;
326
+ };
327
+ })(0));
328
+ }
329
+ if (intersections.length && point[0] > intersections[0][0]) {
330
+ intersections.shift();
331
+ intersectionCounter++;
332
+ }
333
+ if (intersectionCounter % 2 === 0) {
334
+ result = false;
335
+ }
336
+ return result;
337
+ }, statCalculator, boundsIJK);
338
+ const mean = sum / count;
339
+ let stdDev = sumSquares / count - mean ** 2;
340
+ stdDev = Math.sqrt(stdDev);
341
+ cachedStats[targetId] = {
342
+ Modality: metadata.Modality,
343
+ area,
344
+ mean,
345
+ max,
346
+ stdDev,
347
+ areaUnit: hasPixelSpacing ? 'mm' : 'px',
348
+ };
349
+ }
350
+ annotation.invalidated = false;
351
+ return cachedStats;
352
+ };
353
+ this._renderStats = (annotation, viewport, enabledElement, svgDrawingHelper) => {
354
+ const data = annotation.data;
355
+ const targetId = this.getTargetId(viewport);
356
+ const isPreScaled = isViewportPreScaled(viewport, targetId);
357
+ const isSuvScaled = this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId);
358
+ const textLines = this._getTextLines(data, targetId, isPreScaled, isSuvScaled);
359
+ if (!textLines || textLines.length === 0)
360
+ return;
361
+ const canvasCoordinates = data.polyline.map((p) => viewport.worldToCanvas(p));
362
+ if (!data.handles.textBox.hasMoved) {
363
+ const canvasTextBoxCoords = getTextBoxCoordsCanvas(canvasCoordinates);
364
+ data.handles.textBox.worldPosition =
365
+ viewport.canvasToWorld(canvasTextBoxCoords);
366
+ }
367
+ const textBoxPosition = viewport.worldToCanvas(data.handles.textBox.worldPosition);
368
+ const styleSpecifier = {
369
+ toolGroupId: this.toolGroupId,
370
+ toolName: this.getToolName(),
371
+ viewportId: enabledElement.viewport.id,
372
+ };
373
+ const textBoxUID = '1';
374
+ const boundingBox = drawLinkedTextBox(svgDrawingHelper, annotation.annotationUID ?? '', textBoxUID, textLines, textBoxPosition, canvasCoordinates, {}, this.getLinkedTextBoxStyle(styleSpecifier, annotation));
375
+ const { x: left, y: top, width, height } = boundingBox;
376
+ data.handles.textBox.worldBoundingBox = {
377
+ topLeft: viewport.canvasToWorld([left, top]),
378
+ topRight: viewport.canvasToWorld([left + width, top]),
379
+ bottomLeft: viewport.canvasToWorld([left, top + height]),
380
+ bottomRight: viewport.canvasToWorld([left + width, top + height]),
381
+ };
382
+ };
383
+ this._getTextLines = (data, targetId, isPreScaled, isSuvScaled) => {
384
+ const cachedVolumeStats = data.cachedStats[targetId];
385
+ const { area, mean, stdDev, max, isEmptyArea, Modality, areaUnit } = cachedVolumeStats;
386
+ const textLines = [];
387
+ const unit = getModalityUnit(Modality, isPreScaled, isSuvScaled);
388
+ if (area) {
389
+ const areaLine = isEmptyArea
390
+ ? `Area: Oblique not supported`
391
+ : `Area: ${area.toFixed(2)} ${areaUnit}\xb2`;
392
+ textLines.push(areaLine);
393
+ }
394
+ if (mean) {
395
+ textLines.push(`Mean: ${mean.toFixed(2)} ${unit}`);
396
+ }
397
+ if (max) {
398
+ textLines.push(`Max: ${max.toFixed(2)} ${unit}`);
399
+ }
400
+ if (stdDev) {
401
+ textLines.push(`Std Dev: ${stdDev.toFixed(2)} ${unit}`);
402
+ }
403
+ return textLines;
208
404
  };
209
405
  registerDrawLoop(this);
210
406
  registerEditLoopCommon(this);
@@ -212,6 +408,7 @@ class PlanarFreehandROITool extends AnnotationTool {
212
408
  registerOpenContourEditLoop(this);
213
409
  registerOpenContourEndEditLoop(this);
214
410
  registerRenderMethods(this);
411
+ this._throttledCalculateCachedStats = throttle(this._calculateCachedStats, 100, { trailing: true });
215
412
  }
216
413
  filterInteractableAnnotationsForElement(element, annotations) {
217
414
  if (!annotations || !annotations.length) {