@cornerstonejs/tools 0.14.0 → 0.15.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 (83) hide show
  1. package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +6 -1
  2. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +58 -0
  3. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  4. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +13 -0
  5. package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
  6. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +26 -9
  7. package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
  8. package/dist/cjs/tools/annotation/planarFreehandROITool/editLoopCommon.js +19 -0
  9. package/dist/cjs/tools/annotation/planarFreehandROITool/editLoopCommon.js.map +1 -1
  10. package/dist/cjs/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.d.ts +4 -0
  11. package/dist/cjs/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js +42 -0
  12. package/dist/cjs/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js.map +1 -0
  13. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js +17 -0
  14. package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
  15. package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.js +43 -1
  16. package/dist/cjs/tools/annotation/planarFreehandROITool/renderMethods.js.map +1 -1
  17. package/dist/cjs/types/CINETypes.d.ts +19 -0
  18. package/dist/cjs/types/CINETypes.js +3 -0
  19. package/dist/cjs/types/CINETypes.js.map +1 -0
  20. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +2 -0
  21. package/dist/cjs/types/index.d.ts +2 -1
  22. package/dist/cjs/utilities/cine/events.d.ts +5 -0
  23. package/dist/cjs/utilities/cine/events.js +9 -0
  24. package/dist/cjs/utilities/cine/events.js.map +1 -0
  25. package/dist/cjs/utilities/cine/index.d.ts +4 -0
  26. package/dist/cjs/utilities/cine/index.js +15 -0
  27. package/dist/cjs/utilities/cine/index.js.map +1 -0
  28. package/dist/cjs/utilities/cine/playClip.d.ts +4 -0
  29. package/dist/cjs/utilities/cine/playClip.js +165 -0
  30. package/dist/cjs/utilities/cine/playClip.js.map +1 -0
  31. package/dist/cjs/utilities/cine/state.d.ts +4 -0
  32. package/dist/cjs/utilities/cine/state.js +18 -0
  33. package/dist/cjs/utilities/cine/state.js.map +1 -0
  34. package/dist/cjs/utilities/index.d.ts +2 -1
  35. package/dist/cjs/utilities/index.js +3 -1
  36. package/dist/cjs/utilities/index.js.map +1 -1
  37. package/dist/cjs/utilities/math/polyline/getSubPixelSpacingAndXYDirections.js +12 -6
  38. package/dist/cjs/utilities/math/polyline/getSubPixelSpacingAndXYDirections.js.map +1 -1
  39. package/dist/cjs/utilities/planar/filterAnnotationsForDisplay.js +3 -0
  40. package/dist/cjs/utilities/planar/filterAnnotationsForDisplay.js.map +1 -1
  41. package/dist/esm/tools/annotation/PlanarFreehandROITool.d.ts +6 -1
  42. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +59 -1
  43. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  44. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +13 -0
  45. package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
  46. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +26 -9
  47. package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
  48. package/dist/esm/tools/annotation/planarFreehandROITool/editLoopCommon.js +19 -0
  49. package/dist/esm/tools/annotation/planarFreehandROITool/editLoopCommon.js.map +1 -1
  50. package/dist/esm/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.d.ts +4 -0
  51. package/dist/esm/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js +37 -0
  52. package/dist/esm/tools/annotation/planarFreehandROITool/findOpenUShapedContourVectorToPeak.js.map +1 -0
  53. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +17 -0
  54. package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
  55. package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js +43 -1
  56. package/dist/esm/tools/annotation/planarFreehandROITool/renderMethods.js.map +1 -1
  57. package/dist/esm/types/CINETypes.d.ts +19 -0
  58. package/dist/esm/types/CINETypes.js +2 -0
  59. package/dist/esm/types/CINETypes.js.map +1 -0
  60. package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +2 -0
  61. package/dist/esm/types/index.d.ts +2 -1
  62. package/dist/esm/utilities/cine/events.d.ts +5 -0
  63. package/dist/esm/utilities/cine/events.js +7 -0
  64. package/dist/esm/utilities/cine/events.js.map +1 -0
  65. package/dist/esm/utilities/cine/index.d.ts +4 -0
  66. package/dist/esm/utilities/cine/index.js +5 -0
  67. package/dist/esm/utilities/cine/index.js.map +1 -0
  68. package/dist/esm/utilities/cine/playClip.d.ts +4 -0
  69. package/dist/esm/utilities/cine/playClip.js +157 -0
  70. package/dist/esm/utilities/cine/playClip.js.map +1 -0
  71. package/dist/esm/utilities/cine/state.d.ts +4 -0
  72. package/dist/esm/utilities/cine/state.js +14 -0
  73. package/dist/esm/utilities/cine/state.js.map +1 -0
  74. package/dist/esm/utilities/index.d.ts +2 -1
  75. package/dist/esm/utilities/index.js +2 -1
  76. package/dist/esm/utilities/index.js.map +1 -1
  77. package/dist/esm/utilities/math/polyline/getSubPixelSpacingAndXYDirections.js +12 -6
  78. package/dist/esm/utilities/math/polyline/getSubPixelSpacingAndXYDirections.js.map +1 -1
  79. package/dist/esm/utilities/planar/filterAnnotationsForDisplay.js +3 -0
  80. package/dist/esm/utilities/planar/filterAnnotationsForDisplay.js.map +1 -1
  81. package/dist/umd/index.js +1 -1
  82. package/dist/umd/index.js.map +1 -1
  83. package/package.json +5 -5
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const drawingSvg_1 = require("../../../drawingSvg");
4
4
  const math_1 = require("../../../utilities/math");
5
+ const findOpenUShapedContourVectorToPeak_1 = require("./findOpenUShapedContourVectorToPeak");
5
6
  const { pointsAreWithinCloseContourProximity } = math_1.polyline;
6
7
  function _getRenderingOptions(enabledElement, annotation) {
7
8
  const styleSpecifier = {
@@ -24,12 +25,24 @@ function _getRenderingOptions(enabledElement, annotation) {
24
25
  }
25
26
  function renderContour(enabledElement, svgDrawingHelper, annotation) {
26
27
  if (annotation.data.isOpenContour) {
27
- this.renderOpenContour(enabledElement, svgDrawingHelper, annotation);
28
+ if (annotation.data.isOpenUShapeContour) {
29
+ calculateUShapeContourVectorToPeakIfNotPresent(enabledElement, annotation);
30
+ this.renderOpenUShapedContour(enabledElement, svgDrawingHelper, annotation);
31
+ }
32
+ else {
33
+ this.renderOpenContour(enabledElement, svgDrawingHelper, annotation);
34
+ }
28
35
  }
29
36
  else {
30
37
  this.renderClosedContour(enabledElement, svgDrawingHelper, annotation);
31
38
  }
32
39
  }
40
+ function calculateUShapeContourVectorToPeakIfNotPresent(enabledElement, annotation) {
41
+ if (!annotation.data.openUShapeContourVectorToPeak) {
42
+ annotation.data.openUShapeContourVectorToPeak =
43
+ (0, findOpenUShapedContourVectorToPeak_1.findOpenUShapedContourVectorToPeakOnRender)(enabledElement, annotation);
44
+ }
45
+ }
33
46
  function renderClosedContour(enabledElement, svgDrawingHelper, annotation) {
34
47
  const { viewport } = enabledElement;
35
48
  const options = this._getRenderingOptions(enabledElement, annotation);
@@ -51,6 +64,33 @@ function renderOpenContour(enabledElement, svgDrawingHelper, annotation) {
51
64
  (0, drawingSvg_1.drawHandles)(svgDrawingHelper, annotation.annotationUID, handleGroupUID, [handlePoint], { color: options.color });
52
65
  }
53
66
  }
67
+ function renderOpenUShapedContour(enabledElement, svgDrawingHelper, annotation) {
68
+ const { viewport } = enabledElement;
69
+ const { polyline, openUShapeContourVectorToPeak } = annotation.data;
70
+ this.renderOpenContour(enabledElement, svgDrawingHelper, annotation);
71
+ const firstCanvasPoint = viewport.worldToCanvas(polyline[0]);
72
+ const lastCanvasPoint = viewport.worldToCanvas(polyline[polyline.length - 1]);
73
+ const openUShapeContourVectorToPeakCanvas = [
74
+ viewport.worldToCanvas(openUShapeContourVectorToPeak[0]),
75
+ viewport.worldToCanvas(openUShapeContourVectorToPeak[1]),
76
+ ];
77
+ const options = this._getRenderingOptions(enabledElement, annotation);
78
+ (0, drawingSvg_1.drawPolyline)(svgDrawingHelper, annotation.annotationUID, 'first-to-last', [firstCanvasPoint, lastCanvasPoint], {
79
+ color: options.color,
80
+ width: options.width,
81
+ connectLastToFirst: false,
82
+ lineDash: '2,2',
83
+ });
84
+ (0, drawingSvg_1.drawPolyline)(svgDrawingHelper, annotation.annotationUID, 'midpoint-to-open-contour', [
85
+ openUShapeContourVectorToPeakCanvas[0],
86
+ openUShapeContourVectorToPeakCanvas[1],
87
+ ], {
88
+ color: options.color,
89
+ width: options.width,
90
+ connectLastToFirst: false,
91
+ lineDash: '2,2',
92
+ });
93
+ }
54
94
  function renderContourBeingDrawn(enabledElement, svgDrawingHelper, annotation) {
55
95
  const options = this._getRenderingOptions(enabledElement, annotation);
56
96
  const { allowOpenContours } = this.configuration;
@@ -93,6 +133,8 @@ function registerRenderMethods(toolInstance) {
93
133
  toolInstance.renderContour = renderContour.bind(toolInstance);
94
134
  toolInstance.renderClosedContour = renderClosedContour.bind(toolInstance);
95
135
  toolInstance.renderOpenContour = renderOpenContour.bind(toolInstance);
136
+ toolInstance.renderOpenUShapedContour =
137
+ renderOpenUShapedContour.bind(toolInstance);
96
138
  toolInstance.renderContourBeingDrawn =
97
139
  renderContourBeingDrawn.bind(toolInstance);
98
140
  toolInstance.renderClosedContourBeingEdited =
@@ -1 +1 @@
1
- {"version":3,"file":"renderMethods.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/renderMethods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderMethods.js","sourceRoot":"","sources":["../../../../../src/tools/annotation/planarFreehandROITool/renderMethods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ declare type PlayClipOptions = {
2
+ framesPerSecond?: number;
3
+ frameTimeVector?: number[];
4
+ reverse?: boolean;
5
+ loop?: boolean;
6
+ frameTimeVectorSpeedMultiplier?: number;
7
+ };
8
+ interface ToolData {
9
+ intervalId: number | undefined;
10
+ framesPerSecond: number;
11
+ lastFrameTimeStamp: number | undefined;
12
+ frameTimeVector: number[] | undefined;
13
+ ignoreFrameTimeVector: boolean;
14
+ usingFrameTimeVector: boolean;
15
+ speed: number;
16
+ reverse: boolean;
17
+ loop: boolean;
18
+ }
19
+ export type { PlayClipOptions, ToolData };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=CINETypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CINETypes.js","sourceRoot":"","sources":["../../../src/types/CINETypes.ts"],"names":[],"mappings":""}
@@ -180,6 +180,8 @@ export interface PlanarFreehandROIAnnotation extends Annotation {
180
180
  polyline: Types.Point3[];
181
181
  label?: string;
182
182
  isOpenContour?: boolean;
183
+ isOpenUShapeContour?: boolean;
184
+ openUShapeContourVectorToPeak?: Types.Point3[];
183
185
  handles: {
184
186
  points: Types.Point3[];
185
187
  activeHandleIndex: number | null;
@@ -14,5 +14,6 @@ import type { ToolProps, PublicToolProps } from './ToolProps';
14
14
  import type { SVGCursorDescriptor, SVGPoint } from './CursorTypes';
15
15
  import type JumpToSliceOptions from './JumpToSliceOptions';
16
16
  import type ScrollOptions from './ScrollOptions';
17
+ import type * as CINETypes from './CINETypes';
17
18
  import type { Color, ColorLUT, RepresentationConfig, SegmentationRepresentationConfig, SegmentationRepresentationData, Segmentation, ToolGroupSpecificRepresentationState, ToolGroupSpecificLabelmapRepresentation, ToolGroupSpecificRepresentation, SegmentationState, RepresentationPublicInput } from './SegmentationStateTypes';
18
- export type { Annotation, Annotations, FrameOfReferenceSpecificAnnotations, AnnotationState, AnnotationStyle, ToolSpecificAnnotationTypes, JumpToSliceOptions, PlanarBoundingBox, ToolProps, PublicToolProps, EventTypes, IPoints, IToolBinding, SetToolBindingsType, ToolOptionsType, InteractionTypes, IToolGroup, ToolHandle, AnnotationHandle, TextBoxHandle, Segmentation, SegmentationState, SegmentationRepresentationData, SegmentationRepresentationConfig, RepresentationConfig, ToolGroupSpecificRepresentationState, ToolGroupSpecificLabelmapRepresentation, ToolGroupSpecificRepresentation, RepresentationPublicInput, Color, ColorLUT, LabelmapTypes, SVGCursorDescriptor, SVGPoint, ScrollOptions, };
19
+ export type { Annotation, Annotations, FrameOfReferenceSpecificAnnotations, AnnotationState, AnnotationStyle, ToolSpecificAnnotationTypes, JumpToSliceOptions, PlanarBoundingBox, ToolProps, PublicToolProps, EventTypes, IPoints, IToolBinding, SetToolBindingsType, ToolOptionsType, InteractionTypes, IToolGroup, ToolHandle, AnnotationHandle, TextBoxHandle, Segmentation, SegmentationState, SegmentationRepresentationData, SegmentationRepresentationConfig, RepresentationConfig, ToolGroupSpecificRepresentationState, ToolGroupSpecificLabelmapRepresentation, ToolGroupSpecificRepresentation, RepresentationPublicInput, Color, ColorLUT, LabelmapTypes, SVGCursorDescriptor, SVGPoint, ScrollOptions, CINETypes, };
@@ -0,0 +1,5 @@
1
+ declare enum Events {
2
+ CLIP_STOPPED = "CORNERSTONE_CINE_TOOL_STOPPED",
3
+ CLIP_STARTED = "CORNERSTONE_CINE_TOOL_STARTED"
4
+ }
5
+ export default Events;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var Events;
4
+ (function (Events) {
5
+ Events["CLIP_STOPPED"] = "CORNERSTONE_CINE_TOOL_STOPPED";
6
+ Events["CLIP_STARTED"] = "CORNERSTONE_CINE_TOOL_STARTED";
7
+ })(Events || (Events = {}));
8
+ exports.default = Events;
9
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/utilities/cine/events.ts"],"names":[],"mappings":";;AAGA,IAAK,MAGJ;AAHD,WAAK,MAAM;IACT,wDAA8C,CAAA;IAC9C,wDAA8C,CAAA;AAChD,CAAC,EAHI,MAAM,KAAN,MAAM,QAGV;AAED,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { playClip, stopClip } from './playClip';
2
+ import Events from './events';
3
+ import { getToolState, addToolState } from './state';
4
+ export { playClip, stopClip, Events, getToolState, addToolState };
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addToolState = exports.getToolState = exports.Events = exports.stopClip = exports.playClip = void 0;
7
+ const playClip_1 = require("./playClip");
8
+ Object.defineProperty(exports, "playClip", { enumerable: true, get: function () { return playClip_1.playClip; } });
9
+ Object.defineProperty(exports, "stopClip", { enumerable: true, get: function () { return playClip_1.stopClip; } });
10
+ const events_1 = __importDefault(require("./events"));
11
+ exports.Events = events_1.default;
12
+ const state_1 = require("./state");
13
+ Object.defineProperty(exports, "getToolState", { enumerable: true, get: function () { return state_1.getToolState; } });
14
+ Object.defineProperty(exports, "addToolState", { enumerable: true, get: function () { return state_1.addToolState; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utilities/cine/index.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAgD;AAIvC,yFAJA,mBAAQ,OAIA;AAAE,yFAJA,mBAAQ,OAIA;AAH3B,sDAA8B;AAGD,iBAHtB,gBAAM,CAGsB;AAFnC,mCAAqD;AAEhB,6FAF5B,oBAAY,OAE4B;AAAE,6FAF5B,oBAAY,OAE4B"}
@@ -0,0 +1,4 @@
1
+ import { CINETypes } from '../../types';
2
+ declare function playClip(element: HTMLDivElement, playClipOptions: CINETypes.PlayClipOptions): void;
3
+ declare function stopClip(element: HTMLDivElement): void;
4
+ export { playClip, stopClip };
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.stopClip = exports.playClip = void 0;
7
+ const core_1 = require("@cornerstonejs/core");
8
+ const events_1 = __importDefault(require("./events"));
9
+ const state_1 = require("./state");
10
+ const { triggerEvent } = core_1.utilities;
11
+ function playClip(element, playClipOptions) {
12
+ var _a, _b, _c, _d;
13
+ let playClipTimeouts;
14
+ let playClipIsTimeVarying;
15
+ if (element === undefined) {
16
+ throw new Error('playClip: element must not be undefined');
17
+ }
18
+ const enabledElement = (0, core_1.getEnabledElement)(element);
19
+ if (!enabledElement) {
20
+ throw new Error('playClip: element must be a valid Cornerstone enabled element');
21
+ }
22
+ const { viewport } = enabledElement;
23
+ if (!(viewport instanceof core_1.StackViewport)) {
24
+ throw new Error('playClip: element must be a stack viewport, volume viewport playClip not yet implemented');
25
+ }
26
+ const stackData = {
27
+ currentImageIdIndex: viewport.getCurrentImageIdIndex(),
28
+ imageIds: viewport.getImageIds(),
29
+ };
30
+ let playClipData = (0, state_1.getToolState)(element);
31
+ if (!playClipData) {
32
+ playClipData = {
33
+ intervalId: undefined,
34
+ framesPerSecond: 30,
35
+ lastFrameTimeStamp: undefined,
36
+ ignoreFrameTimeVector: false,
37
+ usingFrameTimeVector: false,
38
+ frameTimeVector: (_a = playClipOptions.frameTimeVector) !== null && _a !== void 0 ? _a : undefined,
39
+ speed: (_b = playClipOptions.frameTimeVectorSpeedMultiplier) !== null && _b !== void 0 ? _b : 1,
40
+ reverse: (_c = playClipOptions.reverse) !== null && _c !== void 0 ? _c : false,
41
+ loop: (_d = playClipOptions.loop) !== null && _d !== void 0 ? _d : true,
42
+ };
43
+ (0, state_1.addToolState)(element, playClipData);
44
+ }
45
+ else {
46
+ _stopClipWithData(playClipData);
47
+ }
48
+ if (playClipOptions.framesPerSecond < 0 ||
49
+ playClipOptions.framesPerSecond > 0) {
50
+ playClipData.framesPerSecond = Number(playClipOptions.framesPerSecond);
51
+ playClipData.reverse = playClipData.framesPerSecond < 0;
52
+ playClipData.ignoreFrameTimeVector = true;
53
+ }
54
+ if (playClipData.ignoreFrameTimeVector !== true &&
55
+ playClipData.frameTimeVector &&
56
+ playClipData.frameTimeVector.length === stackData.imageIds.length) {
57
+ const { timeouts, isTimeVarying } = _getPlayClipTimeouts(playClipData.frameTimeVector, playClipData.speed);
58
+ playClipTimeouts = timeouts;
59
+ playClipIsTimeVarying = isTimeVarying;
60
+ }
61
+ const playClipAction = () => {
62
+ let newImageIdIndex = stackData.currentImageIdIndex;
63
+ const imageCount = stackData.imageIds.length;
64
+ if (playClipData.reverse) {
65
+ newImageIdIndex--;
66
+ }
67
+ else {
68
+ newImageIdIndex++;
69
+ }
70
+ if (!playClipData.loop &&
71
+ (newImageIdIndex < 0 || newImageIdIndex >= imageCount)) {
72
+ _stopClipWithData(playClipData);
73
+ const eventDetail = {
74
+ element,
75
+ };
76
+ triggerEvent(element, events_1.default.CLIP_STOPPED, eventDetail);
77
+ return;
78
+ }
79
+ if (newImageIdIndex >= imageCount) {
80
+ newImageIdIndex = 0;
81
+ }
82
+ if (newImageIdIndex < 0) {
83
+ newImageIdIndex = imageCount - 1;
84
+ }
85
+ if (newImageIdIndex !== stackData.currentImageIdIndex) {
86
+ viewport.setImageIdIndex(newImageIdIndex).then(() => {
87
+ stackData.currentImageIdIndex = newImageIdIndex;
88
+ });
89
+ }
90
+ };
91
+ if (playClipTimeouts &&
92
+ playClipTimeouts.length > 0 &&
93
+ playClipIsTimeVarying) {
94
+ playClipData.usingFrameTimeVector = true;
95
+ playClipData.intervalId = window.setTimeout(function playClipTimeoutHandler() {
96
+ playClipData.intervalId = window.setTimeout(playClipTimeoutHandler, playClipTimeouts[stackData.currentImageIdIndex]);
97
+ playClipAction();
98
+ }, 0);
99
+ }
100
+ else {
101
+ playClipData.usingFrameTimeVector = false;
102
+ playClipData.intervalId = window.setInterval(playClipAction, 1000 / Math.abs(playClipData.framesPerSecond));
103
+ }
104
+ const eventDetail = {
105
+ element,
106
+ };
107
+ triggerEvent(element, events_1.default.CLIP_STARTED, eventDetail);
108
+ }
109
+ exports.playClip = playClip;
110
+ function stopClip(element) {
111
+ const enabledElement = (0, core_1.getEnabledElement)(element);
112
+ const { viewport } = enabledElement;
113
+ const cineToolData = (0, state_1.getToolState)(viewport.element);
114
+ if (!cineToolData) {
115
+ return;
116
+ }
117
+ _stopClipWithData(cineToolData);
118
+ }
119
+ exports.stopClip = stopClip;
120
+ function _getPlayClipTimeouts(vector, speed) {
121
+ let i;
122
+ let sample;
123
+ let delay;
124
+ let sum = 0;
125
+ const limit = vector.length;
126
+ const timeouts = [];
127
+ let isTimeVarying = false;
128
+ if (typeof speed !== 'number' || speed <= 0) {
129
+ speed = 1;
130
+ }
131
+ for (i = 1; i < limit; i++) {
132
+ delay = (Number(vector[i]) / speed) | 0;
133
+ timeouts.push(delay);
134
+ if (i === 1) {
135
+ sample = delay;
136
+ }
137
+ else if (delay !== sample) {
138
+ isTimeVarying = true;
139
+ }
140
+ sum += delay;
141
+ }
142
+ if (timeouts.length > 0) {
143
+ if (isTimeVarying) {
144
+ delay = (sum / timeouts.length) | 0;
145
+ }
146
+ else {
147
+ delay = timeouts[0];
148
+ }
149
+ timeouts.push(delay);
150
+ }
151
+ return { timeouts, isTimeVarying };
152
+ }
153
+ function _stopClipWithData(playClipData) {
154
+ const id = playClipData.intervalId;
155
+ if (typeof id !== 'undefined') {
156
+ playClipData.intervalId = undefined;
157
+ if (playClipData.usingFrameTimeVector) {
158
+ clearTimeout(id);
159
+ }
160
+ else {
161
+ clearInterval(id);
162
+ }
163
+ }
164
+ }
165
+ //# sourceMappingURL=playClip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playClip.js","sourceRoot":"","sources":["../../../../src/utilities/cine/playClip.ts"],"names":[],"mappings":";;;;;;AAAA,8CAI6B;AAC7B,sDAAmC;AACnC,mCAAqD;AAGrD,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAS,CAAC;AASnC,SAAS,QAAQ,CACf,OAAuB,EACvB,eAA0C;;IAE1C,IAAI,gBAAgB,CAAC;IACrB,IAAI,qBAAqB,CAAC;IAE1B,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;IAED,MAAM,cAAc,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;IAElD,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;KACH;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;IAEpC,IAAI,CAAC,CAAC,QAAQ,YAAY,oBAAa,CAAC,EAAE;QACxC,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;KACH;IAED,MAAM,SAAS,GAAG;QAChB,mBAAmB,EAAE,QAAQ,CAAC,sBAAsB,EAAE;QACtD,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE;KACjC,CAAC;IAEF,IAAI,YAAY,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,CAAC,YAAY,EAAE;QACjB,YAAY,GAAG;YACb,UAAU,EAAE,SAAS;YACrB,eAAe,EAAE,EAAE;YACnB,kBAAkB,EAAE,SAAS;YAC7B,qBAAqB,EAAE,KAAK;YAC5B,oBAAoB,EAAE,KAAK;YAC3B,eAAe,EAAE,MAAA,eAAe,CAAC,eAAe,mCAAI,SAAS;YAC7D,KAAK,EAAE,MAAA,eAAe,CAAC,8BAA8B,mCAAI,CAAC;YAC1D,OAAO,EAAE,MAAA,eAAe,CAAC,OAAO,mCAAI,KAAK;YACzC,IAAI,EAAE,MAAA,eAAe,CAAC,IAAI,mCAAI,IAAI;SACnC,CAAC;QACF,IAAA,oBAAY,EAAC,OAAO,EAAE,YAAY,CAAC,CAAC;KACrC;SAAM;QAEL,iBAAiB,CAAC,YAAY,CAAC,CAAC;KACjC;IAGD,IACE,eAAe,CAAC,eAAe,GAAG,CAAC;QACnC,eAAe,CAAC,eAAe,GAAG,CAAC,EACnC;QACA,YAAY,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QACvE,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,eAAe,GAAG,CAAC,CAAC;QAExD,YAAY,CAAC,qBAAqB,GAAG,IAAI,CAAC;KAC3C;IAGD,IACE,YAAY,CAAC,qBAAqB,KAAK,IAAI;QAC3C,YAAY,CAAC,eAAe;QAC5B,YAAY,CAAC,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,QAAQ,CAAC,MAAM,EACjE;QACA,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,oBAAoB,CACtD,YAAY,CAAC,eAAe,EAC5B,YAAY,CAAC,KAAK,CACnB,CAAC;QAEF,gBAAgB,GAAG,QAAQ,CAAC;QAC5B,qBAAqB,GAAG,aAAa,CAAC;KACvC;IAGD,MAAM,cAAc,GAAG,GAAG,EAAE;QAE1B,IAAI,eAAe,GAAG,SAAS,CAAC,mBAAmB,CAAC;QAEpD,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAE7C,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,eAAe,EAAE,CAAC;SACnB;aAAM;YACL,eAAe,EAAE,CAAC;SACnB;QAED,IACE,CAAC,YAAY,CAAC,IAAI;YAClB,CAAC,eAAe,GAAG,CAAC,IAAI,eAAe,IAAI,UAAU,CAAC,EACtD;YACA,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAChC,MAAM,WAAW,GAAG;gBAClB,OAAO;aACR,CAAC;YAEF,YAAY,CAAC,OAAO,EAAE,gBAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAE7D,OAAO;SACR;QAGD,IAAI,eAAe,IAAI,UAAU,EAAE;YACjC,eAAe,GAAG,CAAC,CAAC;SACrB;QAED,IAAI,eAAe,GAAG,CAAC,EAAE;YACvB,eAAe,GAAG,UAAU,GAAG,CAAC,CAAC;SAClC;QAED,IAAI,eAAe,KAAK,SAAS,CAAC,mBAAmB,EAAE;YACrD,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClD,SAAS,CAAC,mBAAmB,GAAG,eAAe,CAAC;YAClD,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC;IAIF,IACE,gBAAgB;QAChB,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAC3B,qBAAqB,EACrB;QACA,YAAY,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACzC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CACzC,SAAS,sBAAsB;YAC7B,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CACzC,sBAAsB,EACtB,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAChD,CAAC;YACF,cAAc,EAAE,CAAC;QACnB,CAAC,EACD,CAAC,CACF,CAAC;KACH;SAAM;QAEL,YAAY,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAC1C,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAC1C,cAAc,EACd,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,eAAe,CAAC,CAC9C,CAAC;KACH;IAED,MAAM,WAAW,GAAG;QAClB,OAAO;KACR,CAAC;IAEF,YAAY,CAAC,OAAO,EAAE,gBAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAC/D,CAAC;AAwFQ,4BAAQ;AAlFjB,SAAS,QAAQ,CAAC,OAAuB;IACvC,MAAM,cAAc,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;IAEpC,MAAM,YAAY,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEpD,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO;KACR;IAED,iBAAiB,CAAC,YAAY,CAAC,CAAC;AAClC,CAAC;AAuEkB,4BAAQ;AA9D3B,SAAS,oBAAoB,CAAC,MAAgB,EAAE,KAAa;IAC3D,IAAI,CAAC,CAAC;IACN,IAAI,MAAM,CAAC;IACX,IAAI,KAAK,CAAC;IACV,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5B,MAAM,QAAQ,GAAG,EAAE,CAAC;IAGpB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,EAAE;QAC3C,KAAK,GAAG,CAAC,CAAC;KACX;IAGD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;QAE1B,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,EAAE;YAEX,MAAM,GAAG,KAAK,CAAC;SAChB;aAAM,IAAI,KAAK,KAAK,MAAM,EAAE;YAC3B,aAAa,GAAG,IAAI,CAAC;SACtB;QAED,GAAG,IAAI,KAAK,CAAC;KACd;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACvB,IAAI,aAAa,EAAE;YAGjB,KAAK,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACrC;aAAM;YACL,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;SACrB;QAED,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtB;IAED,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;AACrC,CAAC;AAMD,SAAS,iBAAiB,CAAC,YAAY;IACrC,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC;IAEnC,IAAI,OAAO,EAAE,KAAK,WAAW,EAAE;QAC7B,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC;QACpC,IAAI,YAAY,CAAC,oBAAoB,EAAE;YACrC,YAAY,CAAC,EAAE,CAAC,CAAC;SAClB;aAAM;YACL,aAAa,CAAC,EAAE,CAAC,CAAC;SACnB;KACF;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { CINETypes } from '../../types';
2
+ declare function addToolState(element: HTMLDivElement, data: CINETypes.ToolData): void;
3
+ declare function getToolState(element: HTMLDivElement): CINETypes.ToolData | undefined;
4
+ export { addToolState, getToolState };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getToolState = exports.addToolState = void 0;
4
+ const core_1 = require("@cornerstonejs/core");
5
+ const state = {};
6
+ function addToolState(element, data) {
7
+ const enabledElement = (0, core_1.getEnabledElement)(element);
8
+ const { viewportId } = enabledElement;
9
+ state[viewportId] = data;
10
+ }
11
+ exports.addToolState = addToolState;
12
+ function getToolState(element) {
13
+ const enabledElement = (0, core_1.getEnabledElement)(element);
14
+ const { viewportId } = enabledElement;
15
+ return state[viewportId];
16
+ }
17
+ exports.getToolState = getToolState;
18
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../src/utilities/cine/state.ts"],"names":[],"mappings":";;;AAAA,8CAAwD;AAGxD,MAAM,KAAK,GAAuC,EAAE,CAAC;AAErD,SAAS,YAAY,CAAC,OAAuB,EAAE,IAAwB;IACrE,MAAM,cAAc,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;IACtC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AAC3B,CAAC;AAQQ,oCAAY;AANrB,SAAS,YAAY,CAAC,OAAuB;IAC3C,MAAM,cAAc,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;IACtC,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC;AAEsB,oCAAY"}
@@ -15,5 +15,6 @@ import * as planar from './planar';
15
15
  import * as stackScrollTool from './stackScrollTool';
16
16
  import * as viewportFilters from './viewportFilters';
17
17
  import * as orientation from './orientation';
18
+ import * as cine from './cine';
18
19
  import { triggerEvent } from '@cornerstonejs/core';
19
- export { math, planar, viewportFilters, stackScrollTool, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, };
20
+ export { math, planar, viewportFilters, stackScrollTool, drawing, debounce, deepMerge, throttle, orientation, isObject, triggerEvent, calibrateImageSpacing, segmentation, triggerAnnotationRenderForViewportIds, pointInShapeCallback, pointInSurroundingSphereCallback, getAnnotationNearPoint, getAnnotationNearPointOnEnabledElement, jumpToSlice, cine, };
@@ -22,7 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.jumpToSlice = exports.getAnnotationNearPointOnEnabledElement = exports.getAnnotationNearPoint = exports.pointInSurroundingSphereCallback = exports.pointInShapeCallback = exports.triggerAnnotationRenderForViewportIds = exports.segmentation = exports.calibrateImageSpacing = exports.triggerEvent = exports.isObject = exports.orientation = exports.throttle = exports.deepMerge = exports.debounce = exports.drawing = exports.stackScrollTool = exports.viewportFilters = exports.planar = exports.math = void 0;
25
+ exports.cine = exports.jumpToSlice = exports.getAnnotationNearPointOnEnabledElement = exports.getAnnotationNearPoint = exports.pointInSurroundingSphereCallback = exports.pointInShapeCallback = exports.triggerAnnotationRenderForViewportIds = exports.segmentation = exports.calibrateImageSpacing = exports.triggerEvent = exports.isObject = exports.orientation = exports.throttle = exports.deepMerge = exports.debounce = exports.drawing = exports.stackScrollTool = exports.viewportFilters = exports.planar = exports.math = void 0;
26
26
  const getAnnotationNearPoint_1 = require("./getAnnotationNearPoint");
27
27
  Object.defineProperty(exports, "getAnnotationNearPoint", { enumerable: true, get: function () { return getAnnotationNearPoint_1.getAnnotationNearPoint; } });
28
28
  Object.defineProperty(exports, "getAnnotationNearPointOnEnabledElement", { enumerable: true, get: function () { return getAnnotationNearPoint_1.getAnnotationNearPointOnEnabledElement; } });
@@ -58,6 +58,8 @@ const viewportFilters = __importStar(require("./viewportFilters"));
58
58
  exports.viewportFilters = viewportFilters;
59
59
  const orientation = __importStar(require("./orientation"));
60
60
  exports.orientation = orientation;
61
+ const cine = __importStar(require("./cine"));
62
+ exports.cine = cine;
61
63
  const core_1 = require("@cornerstonejs/core");
62
64
  Object.defineProperty(exports, "triggerEvent", { enumerable: true, get: function () { return core_1.triggerEvent; } });
63
65
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAGkC;AA2ChC,uGA7CA,+CAAsB,OA6CA;AACtB,uHA7CA,+DAAsC,OA6CA;AAzCxC,0DAAkC;AA6BhC,mBA7BK,kBAAQ,CA6BL;AA5BV,4DAAoC;AA6BlC,oBA7BK,mBAAS,CA6BL;AA5BX,0DAAkC;AA6BhC,mBA7BK,kBAAQ,CA6BL;AA5BV,0DAAkC;AA8BhC,mBA9BK,kBAAQ,CA8BL;AA7BV,oFAA4D;AA+B1D,gCA/BK,+BAAqB,CA+BL;AA9BvB,oHAA4F;AAgC1F,gDAhCK,+CAAqC,CAgCL;AA/BvC,yEAAiD;AAoC/C,sBApCK,qBAAW,CAoCL;AAlCb,kFAA0D;AA8BxD,+BA9BK,8BAAoB,CA8BL;AA7BtB,0GAAkF;AA8BhF,2CA9BK,0CAAgC,CA8BL;AA3BlC,6DAA+C;AAwB7C,oCAAY;AAvBd,mDAAqC;AAenC,0BAAO;AAdT,6CAA+B;AAU7B,oBAAI;AATN,iDAAmC;AAUjC,wBAAM;AATR,mEAAqD;AAWnD,0CAAe;AAVjB,mEAAqD;AASnD,0CAAe;AARjB,2DAA6C;AAc3C,kCAAW;AAXb,8CAAmD;AAajD,6FAbO,mBAAY,OAaP"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAGkC;AA4ChC,uGA9CA,+CAAsB,OA8CA;AACtB,uHA9CA,+DAAsC,OA8CA;AA1CxC,0DAAkC;AA8BhC,mBA9BK,kBAAQ,CA8BL;AA7BV,4DAAoC;AA8BlC,oBA9BK,mBAAS,CA8BL;AA7BX,0DAAkC;AA8BhC,mBA9BK,kBAAQ,CA8BL;AA7BV,0DAAkC;AA+BhC,mBA/BK,kBAAQ,CA+BL;AA9BV,oFAA4D;AAgC1D,gCAhCK,+BAAqB,CAgCL;AA/BvB,oHAA4F;AAiC1F,gDAjCK,+CAAqC,CAiCL;AAhCvC,yEAAiD;AAqC/C,sBArCK,qBAAW,CAqCL;AAnCb,kFAA0D;AA+BxD,+BA/BK,8BAAoB,CA+BL;AA9BtB,0GAAkF;AA+BhF,2CA/BK,0CAAgC,CA+BL;AA5BlC,6DAA+C;AAyB7C,oCAAY;AAxBd,mDAAqC;AAgBnC,0BAAO;AAfT,6CAA+B;AAW7B,oBAAI;AAVN,iDAAmC;AAWjC,wBAAM;AAVR,mEAAqD;AAYnD,0CAAe;AAXjB,mEAAqD;AAUnD,0CAAe;AATjB,2DAA6C;AAe3C,kCAAW;AAdb,6CAA+B;AAyB7B,oBAAI;AAtBN,8CAAmD;AAajD,6FAbO,mBAAY,OAaP"}
@@ -23,32 +23,38 @@ const getSubPixelSpacingAndXYDirections = (viewport, subPixelResolution) => {
23
23
  let viewRight = gl_matrix_1.vec3.create();
24
24
  gl_matrix_1.vec3.cross(viewRight, viewUp, viewPlaneNormal);
25
25
  viewRight = [-viewRight[0], -viewRight[1], -viewRight[2]];
26
+ const absViewRightDotI = Math.abs(gl_matrix_1.vec3.dot(viewRight, iVector));
27
+ const absViewRightDotJ = Math.abs(gl_matrix_1.vec3.dot(viewRight, jVector));
28
+ const absViewRightDotK = Math.abs(gl_matrix_1.vec3.dot(viewRight, kVector));
26
29
  let xSpacing;
27
- if (Math.abs(1 - gl_matrix_1.vec3.dot(viewRight, iVector)) < EPSILON) {
30
+ if (Math.abs(1 - absViewRightDotI) < EPSILON) {
28
31
  xSpacing = volumeSpacing[0];
29
32
  xDir = iVector;
30
33
  }
31
- else if (Math.abs(1 - gl_matrix_1.vec3.dot(viewRight, jVector)) < EPSILON) {
34
+ else if (Math.abs(1 - absViewRightDotJ) < EPSILON) {
32
35
  xSpacing = volumeSpacing[1];
33
36
  xDir = jVector;
34
37
  }
35
- else if (Math.abs(1 - gl_matrix_1.vec3.dot(viewRight, kVector)) < EPSILON) {
38
+ else if (Math.abs(1 - absViewRightDotK) < EPSILON) {
36
39
  xSpacing = volumeSpacing[2];
37
40
  xDir = kVector;
38
41
  }
39
42
  else {
40
43
  throw new Error('No support yet for oblique plane planar contours');
41
44
  }
45
+ const absViewPlaneNormalDotI = Math.abs(gl_matrix_1.vec3.dot(viewPlaneNormal, iVector));
46
+ const absViewPlaneNormalDotJ = Math.abs(gl_matrix_1.vec3.dot(viewPlaneNormal, jVector));
47
+ const absViewPlaneNormalDotK = Math.abs(gl_matrix_1.vec3.dot(viewPlaneNormal, kVector));
42
48
  let ySpacing;
43
- if (Math.abs(1 - gl_matrix_1.vec3.dot(viewPlaneNormal, iVector)) < EPSILON) {
49
+ if (Math.abs(1 - absViewPlaneNormalDotI) < EPSILON) {
44
50
  ySpacing = volumeSpacing[0];
45
51
  yDir = iVector;
46
52
  }
47
- else if (Math.abs(1 - gl_matrix_1.vec3.dot(viewPlaneNormal, jVector)) < EPSILON) {
53
+ else if (Math.abs(1 - absViewPlaneNormalDotJ) < EPSILON) {
48
54
  ySpacing = volumeSpacing[1];
49
55
  yDir = jVector;
50
56
  }
51
- else if (Math.abs(1 - gl_matrix_1.vec3.dot(viewPlaneNormal, kVector)) < EPSILON) {
57
+ else if (Math.abs(1 - absViewPlaneNormalDotK) < EPSILON) {
52
58
  ySpacing = volumeSpacing[2];
53
59
  yDir = kVector;
54
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getSubPixelSpacingAndXYDirections.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getSubPixelSpacingAndXYDirections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getSubPixelSpacingAndXYDirections.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getSubPixelSpacingAndXYDirections.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,9 @@ function filterAnnotationsForDisplay(viewport, annotations) {
12
12
  const imageURI = imageId.substring(colonIndex + 1);
13
13
  return annotations.filter((annotation) => {
14
14
  const imageId = annotation.metadata.referencedImageId;
15
+ if (imageId === undefined) {
16
+ return false;
17
+ }
15
18
  const colonIndex = imageId.indexOf(':');
16
19
  const referenceImageURI = imageId.substring(colonIndex + 1);
17
20
  return referenceImageURI === imageURI;
@@ -1 +1 @@
1
- {"version":3,"file":"filterAnnotationsForDisplay.js","sourceRoot":"","sources":["../../../../src/utilities/planar/filterAnnotationsForDisplay.ts"],"names":[],"mappings":";;;;;AAAA,8CAK6B;AAE7B,kGAA0E;AAS1E,SAAwB,2BAA2B,CACjD,QAAyB,EACzB,WAAwB;IAExB,IAAI,QAAQ,YAAY,oBAAa,EAAE;QAErC,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAK7C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAOnD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACtD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC5D,OAAO,iBAAiB,KAAK,QAAQ,CAAC;QACxC,CAAC,CAAC,CAAC;KACJ;SAAM,IAAI,QAAQ,YAAY,qBAAc,EAAE;QAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QAEpC,MAAM,EAAE,wBAAwB,EAAE,GAChC,gBAAO,CAAC,oCAAoC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAGjE,OAAO,IAAA,sCAA4B,EACjC,WAAW,EACX,MAAM,EACN,wBAAwB,CACzB,CAAC;KACH;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC;KACjE;AACH,CAAC;AAxCD,8CAwCC"}
1
+ {"version":3,"file":"filterAnnotationsForDisplay.js","sourceRoot":"","sources":["../../../../src/utilities/planar/filterAnnotationsForDisplay.ts"],"names":[],"mappings":";;;;;AAAA,8CAK6B;AAE7B,kGAA0E;AAS1E,SAAwB,2BAA2B,CACjD,QAAyB,EACzB,WAAwB;IAExB,IAAI,QAAQ,YAAY,oBAAa,EAAE;QAErC,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAK7C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAOnD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAEtD,IAAI,OAAO,KAAK,SAAS,EAAE;gBAGzB,OAAO,KAAK,CAAC;aACd;YAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC5D,OAAO,iBAAiB,KAAK,QAAQ,CAAC;QACxC,CAAC,CAAC,CAAC;KACJ;SAAM,IAAI,QAAQ,YAAY,qBAAc,EAAE;QAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QAEpC,MAAM,EAAE,wBAAwB,EAAE,GAChC,gBAAO,CAAC,oCAAoC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAGjE,OAAO,IAAA,sCAA4B,EACjC,WAAW,EACX,MAAM,EACN,wBAAwB,CACzB,CAAC;KACH;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC;KACjE;AACH,CAAC;AA/CD,8CA+CC"}
@@ -1,6 +1,6 @@
1
1
  import type { Types } from '@cornerstonejs/core';
2
2
  import { AnnotationTool } from '../base';
3
- import { EventTypes, ToolHandle, PublicToolProps, ToolProps, InteractionTypes } from '../../types';
3
+ import { EventTypes, ToolHandle, Annotations, PublicToolProps, ToolProps, InteractionTypes } from '../../types';
4
4
  import { PlanarFreehandROIAnnotation } from '../../types/ToolSpecificAnnotationTypes';
5
5
  declare class PlanarFreehandROITool extends AnnotationTool {
6
6
  static toolName: string;
@@ -15,6 +15,9 @@ declare class PlanarFreehandROITool extends AnnotationTool {
15
15
  private activateClosedContourEdit;
16
16
  private activateOpenContourEdit;
17
17
  private activateOpenContourEndEdit;
18
+ private cancelDrawing;
19
+ private cancelClosedContourEdit;
20
+ private cancelOpenContourEdit;
18
21
  private renderContour;
19
22
  private renderContourBeingDrawn;
20
23
  private renderClosedContourBeingEdited;
@@ -27,6 +30,8 @@ declare class PlanarFreehandROITool extends AnnotationTool {
27
30
  cancel: (element: HTMLDivElement) => void;
28
31
  triggerAnnotationModified: (annotation: PlanarFreehandROIAnnotation, enabledElement: Types.IEnabledElement) => void;
29
32
  triggerAnnotationCompleted: (annotation: PlanarFreehandROIAnnotation) => void;
33
+ filterInteractableAnnotationsForElement(element: HTMLDivElement, annotations: Annotations): Annotations | undefined;
34
+ private filterAnnotationsWithinSlice;
30
35
  renderAnnotation: (enabledElement: Types.IEnabledElement, svgDrawingHelper: any) => void;
31
36
  }
32
37
  export default PlanarFreehandROITool;