@cornerstonejs/tools 0.13.0 → 0.15.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 (79) hide show
  1. package/dist/cjs/enums/ToolBindings.js.map +1 -1
  2. package/dist/cjs/index.d.ts +2 -2
  3. package/dist/cjs/index.js +3 -1
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/tools/MagnifyTool.d.ts +24 -0
  6. package/dist/cjs/tools/MagnifyTool.js +169 -0
  7. package/dist/cjs/tools/MagnifyTool.js.map +1 -0
  8. package/dist/cjs/tools/annotation/AngleTool.d.ts +37 -0
  9. package/dist/cjs/tools/annotation/AngleTool.js +442 -0
  10. package/dist/cjs/tools/annotation/AngleTool.js.map +1 -0
  11. package/dist/cjs/tools/index.d.ts +3 -1
  12. package/dist/cjs/tools/index.js +5 -1
  13. package/dist/cjs/tools/index.js.map +1 -1
  14. package/dist/cjs/types/CINETypes.d.ts +19 -0
  15. package/dist/cjs/types/CINETypes.js +3 -0
  16. package/dist/cjs/types/CINETypes.js.map +1 -0
  17. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +24 -0
  18. package/dist/cjs/types/index.d.ts +2 -1
  19. package/dist/cjs/utilities/cine/events.d.ts +5 -0
  20. package/dist/cjs/utilities/cine/events.js +9 -0
  21. package/dist/cjs/utilities/cine/events.js.map +1 -0
  22. package/dist/cjs/utilities/cine/index.d.ts +4 -0
  23. package/dist/cjs/utilities/cine/index.js +15 -0
  24. package/dist/cjs/utilities/cine/index.js.map +1 -0
  25. package/dist/cjs/utilities/cine/playClip.d.ts +4 -0
  26. package/dist/cjs/utilities/cine/playClip.js +165 -0
  27. package/dist/cjs/utilities/cine/playClip.js.map +1 -0
  28. package/dist/cjs/utilities/cine/state.d.ts +4 -0
  29. package/dist/cjs/utilities/cine/state.js +18 -0
  30. package/dist/cjs/utilities/cine/state.js.map +1 -0
  31. package/dist/cjs/utilities/index.d.ts +2 -1
  32. package/dist/cjs/utilities/index.js +3 -1
  33. package/dist/cjs/utilities/index.js.map +1 -1
  34. package/dist/cjs/utilities/math/angle/angleBetweenLines.d.ts +4 -0
  35. package/dist/cjs/utilities/math/angle/angleBetweenLines.js +17 -0
  36. package/dist/cjs/utilities/math/angle/angleBetweenLines.js.map +1 -0
  37. package/dist/cjs/utilities/viewportFilters/filterViewportsWithToolEnabled.js +3 -0
  38. package/dist/cjs/utilities/viewportFilters/filterViewportsWithToolEnabled.js.map +1 -1
  39. package/dist/esm/enums/ToolBindings.js.map +1 -1
  40. package/dist/esm/index.d.ts +2 -2
  41. package/dist/esm/index.js +2 -2
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/tools/MagnifyTool.d.ts +24 -0
  44. package/dist/esm/tools/MagnifyTool.js +163 -0
  45. package/dist/esm/tools/MagnifyTool.js.map +1 -0
  46. package/dist/esm/tools/annotation/AngleTool.d.ts +37 -0
  47. package/dist/esm/tools/annotation/AngleTool.js +417 -0
  48. package/dist/esm/tools/annotation/AngleTool.js.map +1 -0
  49. package/dist/esm/tools/index.d.ts +3 -1
  50. package/dist/esm/tools/index.js +3 -1
  51. package/dist/esm/tools/index.js.map +1 -1
  52. package/dist/esm/types/CINETypes.d.ts +19 -0
  53. package/dist/esm/types/CINETypes.js +2 -0
  54. package/dist/esm/types/CINETypes.js.map +1 -0
  55. package/dist/esm/types/ToolSpecificAnnotationTypes.d.ts +24 -0
  56. package/dist/esm/types/index.d.ts +2 -1
  57. package/dist/esm/utilities/cine/events.d.ts +5 -0
  58. package/dist/esm/utilities/cine/events.js +7 -0
  59. package/dist/esm/utilities/cine/events.js.map +1 -0
  60. package/dist/esm/utilities/cine/index.d.ts +4 -0
  61. package/dist/esm/utilities/cine/index.js +5 -0
  62. package/dist/esm/utilities/cine/index.js.map +1 -0
  63. package/dist/esm/utilities/cine/playClip.d.ts +4 -0
  64. package/dist/esm/utilities/cine/playClip.js +157 -0
  65. package/dist/esm/utilities/cine/playClip.js.map +1 -0
  66. package/dist/esm/utilities/cine/state.d.ts +4 -0
  67. package/dist/esm/utilities/cine/state.js +14 -0
  68. package/dist/esm/utilities/cine/state.js.map +1 -0
  69. package/dist/esm/utilities/index.d.ts +2 -1
  70. package/dist/esm/utilities/index.js +2 -1
  71. package/dist/esm/utilities/index.js.map +1 -1
  72. package/dist/esm/utilities/math/angle/angleBetweenLines.d.ts +4 -0
  73. package/dist/esm/utilities/math/angle/angleBetweenLines.js +14 -0
  74. package/dist/esm/utilities/math/angle/angleBetweenLines.js.map +1 -0
  75. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js +3 -0
  76. package/dist/esm/utilities/viewportFilters/filterViewportsWithToolEnabled.js.map +1 -1
  77. package/dist/umd/index.js +1 -1
  78. package/dist/umd/index.js.map +1 -1
  79. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"ToolBindings.js","sourceRoot":"","sources":["../../../src/enums/ToolBindings.ts"],"names":[],"mappings":";;;AAMA,IAAK,aAUJ;AAVD,WAAK,aAAa;IAChB,uDAAW,CAAA;IACX,2DAAa,CAAA;IACb,mFAAyB,CAAA;IACzB,2DAAa,CAAA;IACb,mFAAyB,CAAA;IACzB,uFAA2B,CAAA;IAC3B,+GAAuC,CAAA;IACvC,mEAAiB,CAAA;IACjB,kEAAiB,CAAA;AACnB,CAAC,EAVI,aAAa,KAAb,aAAa,QAUjB;AAQQ,sCAAa;AANtB,IAAK,gBAIJ;AAJD,WAAK,gBAAgB;IACnB,0DAAU,CAAA;IACV,wDAAS,CAAA;IACT,sDAAQ,CAAA;AACV,CAAC,EAJI,gBAAgB,KAAhB,gBAAgB,QAIpB;AAEuB,4CAAgB"}
1
+ {"version":3,"file":"ToolBindings.js","sourceRoot":"","sources":["../../../src/enums/ToolBindings.ts"],"names":[],"mappings":";;;AAMA,IAAK,aAeJ;AAfD,WAAK,aAAa;IAEhB,uDAAW,CAAA;IAEX,2DAAa,CAAA;IACb,mFAAyB,CAAA;IAEzB,2DAAa,CAAA;IACb,mFAAyB,CAAA;IACzB,uFAA2B,CAAA;IAC3B,+GAAuC,CAAA;IAEvC,mEAAiB,CAAA;IAEjB,kEAAiB,CAAA;AACnB,CAAC,EAfI,aAAa,KAAb,aAAa,QAejB;AAQQ,sCAAa;AANtB,IAAK,gBAIJ;AAJD,WAAK,gBAAgB;IACnB,0DAAU,CAAA;IACV,wDAAS,CAAA;IACT,sDAAQ,CAAA;AACV,CAAC,EAJI,gBAAgB,KAAhB,gBAAgB,QAIpB;AAEuB,4CAAgB"}
@@ -8,6 +8,6 @@ import * as cursors from './cursors';
8
8
  import * as Types from './types';
9
9
  import * as annotation from './stateManagement/annotation';
10
10
  import * as segmentation from './stateManagement/segmentation';
11
- import { BaseTool, AnnotationTool, PanTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, CrosshairsTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool } from './tools';
11
+ import { BaseTool, AnnotationTool, PanTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, ProbeTool, RectangleROITool, EllipticalROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, CrosshairsTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, SegmentationDisplayTool, BrushTool, AngleTool, MagnifyTool } from './tools';
12
12
  import * as Enums from './enums';
13
- export { init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, PanTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ProbeTool, RectangleROITool, EllipticalROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, synchronizers, Synchronizer, SynchronizerManager, Types, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
13
+ export { init, destroy, addTool, removeTool, cancelActiveManipulations, BaseTool, AnnotationTool, PanTool, DragProbeTool, WindowLevelTool, ZoomTool, StackScrollTool, StackScrollMouseWheelTool, VolumeRotateMouseWheelTool, MIPJumpToClickTool, LengthTool, CrosshairsTool, ProbeTool, RectangleROITool, EllipticalROITool, BidirectionalTool, PlanarFreehandROITool, ArrowAnnotateTool, AngleTool, MagnifyTool, SegmentationDisplayTool, RectangleScissorsTool, CircleScissorsTool, SphereScissorsTool, RectangleROIThresholdTool, RectangleROIStartEndThresholdTool, BrushTool, synchronizers, Synchronizer, SynchronizerManager, Types, ToolGroupManager, Enums, CONSTANTS, drawing, annotation, segmentation, utilities, cursors, };
package/dist/cjs/index.js CHANGED
@@ -19,7 +19,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
19
19
  return result;
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.cursors = exports.utilities = exports.segmentation = exports.annotation = exports.drawing = exports.CONSTANTS = exports.Enums = exports.ToolGroupManager = exports.Types = exports.SynchronizerManager = exports.Synchronizer = exports.synchronizers = exports.BrushTool = exports.RectangleROIStartEndThresholdTool = exports.RectangleROIThresholdTool = exports.SphereScissorsTool = exports.CircleScissorsTool = exports.RectangleScissorsTool = exports.SegmentationDisplayTool = exports.ArrowAnnotateTool = exports.PlanarFreehandROITool = exports.BidirectionalTool = exports.EllipticalROITool = exports.RectangleROITool = exports.ProbeTool = exports.CrosshairsTool = exports.LengthTool = exports.MIPJumpToClickTool = exports.VolumeRotateMouseWheelTool = exports.StackScrollMouseWheelTool = exports.StackScrollTool = exports.ZoomTool = exports.WindowLevelTool = exports.DragProbeTool = exports.PanTool = exports.AnnotationTool = exports.BaseTool = exports.cancelActiveManipulations = exports.removeTool = exports.addTool = exports.destroy = exports.init = void 0;
22
+ exports.cursors = exports.utilities = exports.segmentation = exports.annotation = exports.drawing = exports.CONSTANTS = exports.Enums = exports.ToolGroupManager = exports.Types = exports.SynchronizerManager = exports.Synchronizer = exports.synchronizers = exports.BrushTool = exports.RectangleROIStartEndThresholdTool = exports.RectangleROIThresholdTool = exports.SphereScissorsTool = exports.CircleScissorsTool = exports.RectangleScissorsTool = exports.SegmentationDisplayTool = exports.MagnifyTool = exports.AngleTool = exports.ArrowAnnotateTool = exports.PlanarFreehandROITool = exports.BidirectionalTool = exports.EllipticalROITool = exports.RectangleROITool = exports.ProbeTool = exports.CrosshairsTool = exports.LengthTool = exports.MIPJumpToClickTool = exports.VolumeRotateMouseWheelTool = exports.StackScrollMouseWheelTool = exports.StackScrollTool = exports.ZoomTool = exports.WindowLevelTool = exports.DragProbeTool = exports.PanTool = exports.AnnotationTool = exports.BaseTool = exports.cancelActiveManipulations = exports.removeTool = exports.addTool = exports.destroy = exports.init = void 0;
23
23
  const init_1 = require("./init");
24
24
  Object.defineProperty(exports, "init", { enumerable: true, get: function () { return init_1.init; } });
25
25
  Object.defineProperty(exports, "destroy", { enumerable: true, get: function () { return init_1.destroy; } });
@@ -72,6 +72,8 @@ Object.defineProperty(exports, "RectangleROIThresholdTool", { enumerable: true,
72
72
  Object.defineProperty(exports, "RectangleROIStartEndThresholdTool", { enumerable: true, get: function () { return tools_1.RectangleROIStartEndThresholdTool; } });
73
73
  Object.defineProperty(exports, "SegmentationDisplayTool", { enumerable: true, get: function () { return tools_1.SegmentationDisplayTool; } });
74
74
  Object.defineProperty(exports, "BrushTool", { enumerable: true, get: function () { return tools_1.BrushTool; } });
75
+ Object.defineProperty(exports, "AngleTool", { enumerable: true, get: function () { return tools_1.AngleTool; } });
76
+ Object.defineProperty(exports, "MagnifyTool", { enumerable: true, get: function () { return tools_1.MagnifyTool; } });
75
77
  const Enums = __importStar(require("./enums"));
76
78
  exports.Enums = Enums;
77
79
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAuC;AAqDrC,qFArDO,WAAI,OAqDP;AACJ,wFAtDa,cAAO,OAsDb;AArDT,mCAOiB;AA+Cf,wFArDA,eAAO,OAqDA;AACP,2FArDA,kBAAU,OAqDA;AAsCV,iGA1FA,wBAAgB,OA0FA;AAHhB,oGAtFA,2BAAmB,OAsFA;AADnB,6FApFA,oBAAY,OAoFA;AAjCZ,0GAlDA,iCAAyB,OAkDA;AA/C3B,uDAAyC;AAwFvC,8BAAS;AArFX,+DAAiD;AA4E/C,sCAAa;AA3Ef,sDAAwC;AAsFtC,0BAAO;AArFT,uDAAyC;AA2FvC,8BAAS;AA1FX,mDAAqC;AA2FnC,0BAAO;AA1FT,+CAAiC;AA2E/B,sBAAK;AA1EP,yEAA2D;AAoFzD,gCAAU;AAnFZ,6EAA+D;AAqF7D,oCAAY;AAnFd,mCA0BiB;AAYf,yFArCA,gBAAQ,OAqCA;AACR,+FArCA,sBAAc,OAqCA;AAEd,wFAtCA,eAAO,OAsCA;AACP,8FAtCA,qBAAa,OAsCA;AACb,gGAtCA,uBAAe,OAsCA;AACf,yFAtCA,gBAAQ,OAsCA;AACR,gGAtCA,uBAAe,OAsCA;AACf,0GAtCA,iCAAyB,OAsCA;AACzB,2GAtCA,kCAA0B,OAsCA;AAC1B,mGAtCA,0BAAkB,OAsCA;AAElB,2FAvCA,kBAAU,OAuCA;AAEV,0FAxCA,iBAAS,OAwCA;AACT,iGAxCA,wBAAgB,OAwCA;AAChB,kGAxCA,yBAAiB,OAwCA;AACjB,kGAxCA,yBAAiB,OAwCA;AACjB,sGAxCA,6BAAqB,OAwCA;AACrB,kGAxCA,yBAAiB,OAwCA;AANjB,+FAjCA,sBAAc,OAiCA;AAUd,sGA1CA,6BAAqB,OA0CA;AACrB,mGA1CA,0BAAkB,OA0CA;AAClB,mGA1CA,0BAAkB,OA0CA;AAClB,0GA1CA,iCAAyB,OA0CA;AACzB,kHA1CA,yCAAiC,OA0CA;AANjC,wGAnCA,+BAAuB,OAmCA;AAOvB,0FAzCA,iBAAS,OAyCA;AAtCX,+CAAiC;AA+C/B,sBAAK"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAuC;AAuDrC,qFAvDO,WAAI,OAuDP;AACJ,wFAxDa,cAAO,OAwDb;AAvDT,mCAOiB;AAiDf,wFAvDA,eAAO,OAuDA;AACP,2FAvDA,kBAAU,OAuDA;AAwCV,iGA9FA,wBAAgB,OA8FA;AAHhB,oGA1FA,2BAAmB,OA0FA;AADnB,6FAxFA,oBAAY,OAwFA;AAnCZ,0GApDA,iCAAyB,OAoDA;AAjD3B,uDAAyC;AA4FvC,8BAAS;AAzFX,+DAAiD;AAgF/C,sCAAa;AA/Ef,sDAAwC;AA0FtC,0BAAO;AAzFT,uDAAyC;AA+FvC,8BAAS;AA9FX,mDAAqC;AA+FnC,0BAAO;AA9FT,+CAAiC;AA+E/B,sBAAK;AA9EP,yEAA2D;AAwFzD,gCAAU;AAvFZ,6EAA+D;AAyF7D,oCAAY;AAvFd,mCA4BiB;AAYf,yFAvCA,gBAAQ,OAuCA;AACR,+FAvCA,sBAAc,OAuCA;AAEd,wFAxCA,eAAO,OAwCA;AACP,8FAxCA,qBAAa,OAwCA;AACb,gGAxCA,uBAAe,OAwCA;AACf,yFAxCA,gBAAQ,OAwCA;AACR,gGAxCA,uBAAe,OAwCA;AACf,0GAxCA,iCAAyB,OAwCA;AACzB,2GAxCA,kCAA0B,OAwCA;AAC1B,mGAxCA,0BAAkB,OAwCA;AAElB,2FAzCA,kBAAU,OAyCA;AAEV,0FA1CA,iBAAS,OA0CA;AACT,iGA1CA,wBAAgB,OA0CA;AAChB,kGA1CA,yBAAiB,OA0CA;AACjB,kGA1CA,yBAAiB,OA0CA;AACjB,sGA1CA,6BAAqB,OA0CA;AACrB,kGA1CA,yBAAiB,OA0CA;AANjB,+FAnCA,sBAAc,OAmCA;AAYd,sGA9CA,6BAAqB,OA8CA;AACrB,mGA9CA,0BAAkB,OA8CA;AAClB,mGA9CA,0BAAkB,OA8CA;AAClB,0GA9CA,iCAAyB,OA8CA;AACzB,kHA9CA,yCAAiC,OA8CA;AANjC,wGAvCA,+BAAuB,OAuCA;AAOvB,0FA7CA,iBAAS,OA6CA;AAVT,0FAlCA,iBAAS,OAkCA;AACT,4FAlCA,mBAAW,OAkCA;AA/Bb,+CAAiC;AAiD/B,sBAAK"}
@@ -0,0 +1,24 @@
1
+ import { BaseTool } from './base';
2
+ import type { Types } from '@cornerstonejs/core';
3
+ import { EventTypes, PublicToolProps, ToolProps } from '../types';
4
+ import { IPoints } from '../types';
5
+ export default class MagnifyTool extends BaseTool {
6
+ static toolName: string;
7
+ mouseDragCallback: () => void;
8
+ _bounds: any;
9
+ editData: {
10
+ referencedImageId: string;
11
+ viewportIdsToRender: string[];
12
+ enabledElement: Types.IEnabledElement;
13
+ renderingEngine: Types.IRenderingEngine;
14
+ currentPoints: IPoints;
15
+ } | null;
16
+ constructor(toolProps?: PublicToolProps, defaultToolProps?: ToolProps);
17
+ _getReferencedImageId(viewport: Types.IStackViewport | Types.IVolumeViewport): string;
18
+ preMouseDownCallback: (evt: EventTypes.MouseDownActivateEventType) => boolean;
19
+ _createMagnificationViewport: () => void;
20
+ _mouseDragCallback: (evt: EventTypes.MouseDragEventType) => void;
21
+ _mouseUpCallback: (evt: EventTypes.MouseUpEventType) => void;
22
+ _activateDraw: (element: HTMLDivElement) => void;
23
+ _deactivateDraw: (element: HTMLDivElement) => void;
24
+ }
@@ -0,0 +1,169 @@
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
+ const base_1 = require("./base");
7
+ const enums_1 = require("../enums");
8
+ const core_1 = require("@cornerstonejs/core");
9
+ const viewportFilters_1 = require("../utilities/viewportFilters");
10
+ const triggerAnnotationRenderForViewportIds_1 = __importDefault(require("../utilities/triggerAnnotationRenderForViewportIds"));
11
+ const store_1 = require("../store");
12
+ const core_2 = require("@cornerstonejs/core");
13
+ const elementCursor_1 = require("../cursors/elementCursor");
14
+ const MAGNIFY_VIEWPORT_ID = 'maginify-viewport';
15
+ class MagnifyTool extends base_1.BaseTool {
16
+ constructor(toolProps = {}, defaultToolProps = {
17
+ supportedInteractionTypes: ['Mouse', 'Touch'],
18
+ configuration: {
19
+ magnifySize: 10,
20
+ magnifyWidth: 250,
21
+ magnifyHeight: 250,
22
+ },
23
+ }) {
24
+ super(toolProps, defaultToolProps);
25
+ this.preMouseDownCallback = (evt) => {
26
+ const eventDetail = evt.detail;
27
+ const { currentPoints, element } = eventDetail;
28
+ const enabledElement = (0, core_1.getEnabledElement)(element);
29
+ const { viewport, renderingEngine } = enabledElement;
30
+ if (!(viewport instanceof core_1.StackViewport)) {
31
+ throw new Error('MagnifyTool only works on StackViewports');
32
+ }
33
+ const referencedImageId = this._getReferencedImageId(viewport);
34
+ if (!referencedImageId) {
35
+ throw new Error('MagnifyTool: No referenced image id found, reconstructed planes not supported yet');
36
+ }
37
+ const viewportIdsToRender = (0, viewportFilters_1.getViewportIdsWithToolToRender)(element, this.getToolName());
38
+ this.editData = {
39
+ referencedImageId,
40
+ viewportIdsToRender,
41
+ enabledElement,
42
+ renderingEngine,
43
+ currentPoints,
44
+ };
45
+ this._createMagnificationViewport();
46
+ this._activateDraw(element);
47
+ (0, elementCursor_1.hideElementCursor)(element);
48
+ evt.preventDefault();
49
+ (0, triggerAnnotationRenderForViewportIds_1.default)(renderingEngine, viewportIdsToRender);
50
+ return true;
51
+ };
52
+ this._createMagnificationViewport = () => {
53
+ const { enabledElement, referencedImageId, viewportIdsToRender, renderingEngine, currentPoints, } = this.editData;
54
+ const { viewport } = enabledElement;
55
+ const { element } = viewport;
56
+ const { voiRange } = viewport.getProperties();
57
+ const { canvas: canvasPos, world: worldPos } = currentPoints;
58
+ let magnifyToolElement;
59
+ magnifyToolElement = element.querySelector('.magnifyTool');
60
+ if (magnifyToolElement === null) {
61
+ const magnifyElement = document.createElement('div');
62
+ magnifyElement.classList.add('magnifyTool');
63
+ magnifyElement.style.display = 'block';
64
+ magnifyElement.style.width = `${this.configuration.magnifyWidth}px`;
65
+ magnifyElement.style.height = `${this.configuration.magnifyHeight}px`;
66
+ magnifyElement.style.position = 'absolute';
67
+ magnifyToolElement = magnifyElement;
68
+ const viewportElement = element.querySelector('.viewport-element');
69
+ viewportElement.appendChild(magnifyElement);
70
+ const viewportInput = {
71
+ viewportId: MAGNIFY_VIEWPORT_ID,
72
+ type: core_2.Enums.ViewportType.STACK,
73
+ element: magnifyToolElement,
74
+ };
75
+ renderingEngine.enableElement(viewportInput);
76
+ }
77
+ magnifyToolElement.style.top = `${canvasPos[1] - this.configuration.magnifyHeight / 2}px`;
78
+ magnifyToolElement.style.left = `${canvasPos[0] - this.configuration.magnifyWidth / 2}px`;
79
+ const magnifyViewport = renderingEngine.getViewport(MAGNIFY_VIEWPORT_ID);
80
+ magnifyViewport.setStack([referencedImageId]).then(() => {
81
+ magnifyViewport.setProperties({ voiRange });
82
+ const { parallelScale } = viewport.getCamera();
83
+ const { focalPoint, position, viewPlaneNormal } = magnifyViewport.getCamera();
84
+ const distance = Math.sqrt(Math.pow(focalPoint[0] - position[0], 2) +
85
+ Math.pow(focalPoint[1] - position[1], 2) +
86
+ Math.pow(focalPoint[2] - position[2], 2));
87
+ const updatedFocalPoint = [
88
+ worldPos[0],
89
+ worldPos[1],
90
+ worldPos[2],
91
+ ];
92
+ const updatedPosition = [
93
+ updatedFocalPoint[0] + distance * viewPlaneNormal[0],
94
+ updatedFocalPoint[1] + distance * viewPlaneNormal[1],
95
+ updatedFocalPoint[2] + distance * viewPlaneNormal[2],
96
+ ];
97
+ magnifyViewport.setCamera({
98
+ parallelScale: parallelScale * (1 / this.configuration.magnifySize),
99
+ focalPoint: updatedFocalPoint,
100
+ position: updatedPosition,
101
+ });
102
+ magnifyViewport.render();
103
+ });
104
+ magnifyToolElement.style.display = 'block';
105
+ (0, triggerAnnotationRenderForViewportIds_1.default)(renderingEngine, viewportIdsToRender);
106
+ };
107
+ this._mouseDragCallback = (evt) => {
108
+ const eventDetail = evt.detail;
109
+ const { currentPoints, deltaPoints, element } = eventDetail;
110
+ const deltaPointsWorld = deltaPoints.world;
111
+ const canvasPos = currentPoints.canvas;
112
+ const enabledElement = (0, core_1.getEnabledElement)(element);
113
+ const { renderingEngine } = enabledElement;
114
+ const magnifyViewport = renderingEngine.getViewport(MAGNIFY_VIEWPORT_ID);
115
+ const magnifyElement = element.querySelector('.magnifyTool');
116
+ if (!magnifyElement) {
117
+ return;
118
+ }
119
+ magnifyElement.style.top = `${canvasPos[1] - this.configuration.magnifyHeight / 2}px`;
120
+ magnifyElement.style.left = `${canvasPos[0] - this.configuration.magnifyWidth / 2}px`;
121
+ const { focalPoint, position } = magnifyViewport.getCamera();
122
+ const updatedPosition = [
123
+ position[0] + deltaPointsWorld[0],
124
+ position[1] + deltaPointsWorld[1],
125
+ position[2] + deltaPointsWorld[2],
126
+ ];
127
+ const updatedFocalPoint = [
128
+ focalPoint[0] + deltaPointsWorld[0],
129
+ focalPoint[1] + deltaPointsWorld[1],
130
+ focalPoint[2] + deltaPointsWorld[2],
131
+ ];
132
+ magnifyViewport.setCamera({
133
+ focalPoint: updatedFocalPoint,
134
+ position: updatedPosition,
135
+ });
136
+ magnifyViewport.render();
137
+ };
138
+ this._mouseUpCallback = (evt) => {
139
+ const { element } = evt.detail;
140
+ const magnifyToolElement = element.querySelector('.magnifyTool');
141
+ magnifyToolElement.style.display = 'none';
142
+ this._deactivateDraw(element);
143
+ (0, elementCursor_1.resetElementCursor)(element);
144
+ };
145
+ this._activateDraw = (element) => {
146
+ store_1.state.isInteractingWithTool = true;
147
+ element.addEventListener(enums_1.Events.MOUSE_UP, this._mouseUpCallback);
148
+ element.addEventListener(enums_1.Events.MOUSE_DRAG, this._mouseDragCallback);
149
+ element.addEventListener(enums_1.Events.MOUSE_CLICK, this._mouseUpCallback);
150
+ };
151
+ this._deactivateDraw = (element) => {
152
+ store_1.state.isInteractingWithTool = false;
153
+ element.removeEventListener(enums_1.Events.MOUSE_UP, this._mouseUpCallback);
154
+ element.removeEventListener(enums_1.Events.MOUSE_DRAG, this._mouseDragCallback);
155
+ element.removeEventListener(enums_1.Events.MOUSE_CLICK, this._mouseUpCallback);
156
+ };
157
+ }
158
+ _getReferencedImageId(viewport) {
159
+ const targetId = this.getTargetId(viewport);
160
+ let referencedImageId;
161
+ if (viewport instanceof core_1.StackViewport) {
162
+ referencedImageId = targetId.split('imageId:')[1];
163
+ }
164
+ return referencedImageId;
165
+ }
166
+ }
167
+ exports.default = MagnifyTool;
168
+ MagnifyTool.toolName = 'Magnify';
169
+ //# sourceMappingURL=MagnifyTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MagnifyTool.js","sourceRoot":"","sources":["../../../src/tools/MagnifyTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { Types } from '@cornerstonejs/core';
2
+ import { AnnotationTool } from '../base';
3
+ import { EventTypes, ToolHandle, PublicToolProps, ToolProps, InteractionTypes } from '../../types';
4
+ import { AngleAnnotation } from '../../types/ToolSpecificAnnotationTypes';
5
+ declare class AngleTool extends AnnotationTool {
6
+ static toolName: string;
7
+ touchDragCallback: any;
8
+ mouseDragCallback: any;
9
+ angleStartedNotYetCompleted: boolean;
10
+ _throttledCalculateCachedStats: any;
11
+ editData: {
12
+ annotation: any;
13
+ viewportIdsToRender: string[];
14
+ handleIndex?: number;
15
+ movingTextBox?: boolean;
16
+ newAnnotation?: boolean;
17
+ hasMoved?: boolean;
18
+ } | null;
19
+ isDrawing: boolean;
20
+ isHandleOutsideImage: boolean;
21
+ constructor(toolProps?: PublicToolProps, defaultToolProps?: ToolProps);
22
+ addNewAnnotation: (evt: EventTypes.MouseDownActivateEventType) => AngleAnnotation;
23
+ isPointNearTool: (element: HTMLDivElement, annotation: AngleAnnotation, canvasCoords: Types.Point2, proximity: number) => boolean;
24
+ toolSelectedCallback: (evt: EventTypes.MouseDownEventType, annotation: AngleAnnotation, interactionType: InteractionTypes) => void;
25
+ handleSelectedCallback(evt: EventTypes.MouseDownEventType, annotation: AngleAnnotation, handle: ToolHandle, interactionType?: string): void;
26
+ _mouseUpCallback: (evt: EventTypes.MouseUpEventType | EventTypes.MouseClickEventType) => void;
27
+ _mouseDragCallback: (evt: EventTypes.MouseDragEventType | EventTypes.MouseMoveEventType) => void;
28
+ cancel: (element: HTMLDivElement) => any;
29
+ _activateModify: (element: HTMLDivElement) => void;
30
+ _deactivateModify: (element: HTMLDivElement) => void;
31
+ _activateDraw: (element: HTMLDivElement) => void;
32
+ _deactivateDraw: (element: HTMLDivElement) => void;
33
+ renderAnnotation: (enabledElement: Types.IEnabledElement, svgDrawingHelper: any) => void;
34
+ _getTextLines(data: any, targetId: any): string[];
35
+ _calculateCachedStats(annotation: any, renderingEngine: any, enabledElement: any): any;
36
+ }
37
+ export default AngleTool;