@cornerstonejs/tools 4.5.0 → 4.5.2
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.
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { BaseTool } from './base';
|
|
2
|
+
import type { Types } from '@cornerstonejs/core';
|
|
2
3
|
import type { EventTypes, PublicToolProps, ToolProps } from '../types';
|
|
3
4
|
declare class PanTool extends BaseTool {
|
|
4
5
|
static toolName: any;
|
|
5
6
|
constructor(toolProps?: PublicToolProps, defaultToolProps?: ToolProps);
|
|
6
7
|
touchDragCallback(evt: EventTypes.InteractionEventType): void;
|
|
7
8
|
mouseDragCallback(evt: EventTypes.InteractionEventType): void;
|
|
9
|
+
_checkImageInViewport(viewport: any, deltaPointsCanvas: Types.Point2): boolean;
|
|
8
10
|
_dragCallback(evt: EventTypes.InteractionEventType): void;
|
|
9
11
|
}
|
|
10
12
|
export default PanTool;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { BaseTool } from './base';
|
|
2
|
-
import { getEnabledElement } from '@cornerstonejs/core';
|
|
2
|
+
import { getEnabledElement, utilities as csUtils } from '@cornerstonejs/core';
|
|
3
3
|
class PanTool extends BaseTool {
|
|
4
4
|
constructor(toolProps = {}, defaultToolProps = {
|
|
5
5
|
supportedInteractionTypes: ['Mouse', 'Touch'],
|
|
6
|
+
configuration: {
|
|
7
|
+
limitToViewport: false,
|
|
8
|
+
},
|
|
6
9
|
}) {
|
|
7
10
|
super(toolProps, defaultToolProps);
|
|
8
11
|
}
|
|
@@ -12,17 +15,77 @@ class PanTool extends BaseTool {
|
|
|
12
15
|
mouseDragCallback(evt) {
|
|
13
16
|
this._dragCallback(evt);
|
|
14
17
|
}
|
|
18
|
+
_checkImageInViewport(viewport, deltaPointsCanvas) {
|
|
19
|
+
const { canvas } = viewport;
|
|
20
|
+
const ratio = window.devicePixelRatio;
|
|
21
|
+
const viewportLeft = 0;
|
|
22
|
+
const viewportRight = canvas.width / ratio;
|
|
23
|
+
const viewportTop = 0;
|
|
24
|
+
const viewportBottom = canvas.height / ratio;
|
|
25
|
+
const defaultActor = viewport.getDefaultActor();
|
|
26
|
+
const renderer = viewport.getRenderer();
|
|
27
|
+
let bounds;
|
|
28
|
+
if (defaultActor && csUtils.isImageActor(defaultActor)) {
|
|
29
|
+
const imageData = defaultActor.actor.getMapper().getInputData();
|
|
30
|
+
bounds = imageData.getBounds();
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
bounds = renderer.computeVisiblePropBounds();
|
|
34
|
+
}
|
|
35
|
+
const [imageLeft, imageTop] = viewport.worldToCanvas([
|
|
36
|
+
bounds[0],
|
|
37
|
+
bounds[2],
|
|
38
|
+
bounds[4],
|
|
39
|
+
]);
|
|
40
|
+
const [imageRight, imageBottom] = viewport.worldToCanvas([
|
|
41
|
+
bounds[1],
|
|
42
|
+
bounds[3],
|
|
43
|
+
bounds[5],
|
|
44
|
+
]);
|
|
45
|
+
const zoom = viewport.getZoom();
|
|
46
|
+
if (zoom <= 1) {
|
|
47
|
+
if ((imageLeft + deltaPointsCanvas[0] < viewportLeft &&
|
|
48
|
+
deltaPointsCanvas[0] < 0) ||
|
|
49
|
+
(imageRight + deltaPointsCanvas[0] > viewportRight &&
|
|
50
|
+
deltaPointsCanvas[0] > 0) ||
|
|
51
|
+
(imageTop + deltaPointsCanvas[1] < viewportTop &&
|
|
52
|
+
deltaPointsCanvas[1] < 0) ||
|
|
53
|
+
(imageBottom + deltaPointsCanvas[1] > viewportBottom &&
|
|
54
|
+
deltaPointsCanvas[1] > 0)) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if ((imageLeft + deltaPointsCanvas[0] > viewportLeft &&
|
|
60
|
+
deltaPointsCanvas[0] > 0) ||
|
|
61
|
+
(imageRight + deltaPointsCanvas[0] < viewportRight &&
|
|
62
|
+
deltaPointsCanvas[0] < 0) ||
|
|
63
|
+
(imageTop + deltaPointsCanvas[1] > viewportTop &&
|
|
64
|
+
deltaPointsCanvas[1] > 0) ||
|
|
65
|
+
(imageBottom + deltaPointsCanvas[1] < viewportBottom &&
|
|
66
|
+
deltaPointsCanvas[1] < 0)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
15
72
|
_dragCallback(evt) {
|
|
16
73
|
const { element, deltaPoints } = evt.detail;
|
|
17
74
|
const enabledElement = getEnabledElement(element);
|
|
18
75
|
const deltaPointsWorld = deltaPoints.world;
|
|
76
|
+
const deltaPointsCanvas = deltaPoints.canvas;
|
|
19
77
|
if (deltaPointsWorld[0] === 0 &&
|
|
20
78
|
deltaPointsWorld[1] === 0 &&
|
|
21
79
|
deltaPointsWorld[2] === 0) {
|
|
22
80
|
return;
|
|
23
81
|
}
|
|
24
|
-
const
|
|
82
|
+
const viewport = enabledElement.viewport;
|
|
83
|
+
const camera = viewport.getCamera();
|
|
25
84
|
const { focalPoint, position } = camera;
|
|
85
|
+
if (this.configuration.limitToViewport &&
|
|
86
|
+
!this._checkImageInViewport(viewport, deltaPointsCanvas)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
26
89
|
const updatedPosition = [
|
|
27
90
|
position[0] - deltaPointsWorld[0],
|
|
28
91
|
position[1] - deltaPointsWorld[1],
|
|
@@ -33,11 +96,11 @@ class PanTool extends BaseTool {
|
|
|
33
96
|
focalPoint[1] - deltaPointsWorld[1],
|
|
34
97
|
focalPoint[2] - deltaPointsWorld[2],
|
|
35
98
|
];
|
|
36
|
-
|
|
99
|
+
viewport.setCamera({
|
|
37
100
|
focalPoint: updatedFocalPoint,
|
|
38
101
|
position: updatedPosition,
|
|
39
102
|
});
|
|
40
|
-
|
|
103
|
+
viewport.render();
|
|
41
104
|
}
|
|
42
105
|
}
|
|
43
106
|
PanTool.toolName = 'Pan';
|
|
@@ -69,14 +69,21 @@ function addSegmentInSegmentation(segmentation, { segmentIndex, label, color })
|
|
|
69
69
|
if (!segmentation?.segments) {
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
|
-
segmentation.segments[segmentIndex]
|
|
72
|
+
const segmentData = segmentation.segments[segmentIndex] ?? {
|
|
73
73
|
active: false,
|
|
74
74
|
locked: false,
|
|
75
|
-
label,
|
|
76
75
|
segmentIndex,
|
|
77
76
|
cachedStats: {},
|
|
77
|
+
label,
|
|
78
78
|
color,
|
|
79
79
|
};
|
|
80
|
+
if (label !== undefined) {
|
|
81
|
+
segmentData.label = label;
|
|
82
|
+
}
|
|
83
|
+
if (color !== undefined) {
|
|
84
|
+
segmentData.color = color;
|
|
85
|
+
}
|
|
86
|
+
segmentation.segments[segmentIndex] = segmentData;
|
|
80
87
|
}
|
|
81
88
|
function removeAnnotations(annotationUIDList) {
|
|
82
89
|
annotationUIDList.forEach((annotationUID) => {
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "4.5.
|
|
1
|
+
export declare const version = "4.5.2";
|
package/dist/esm/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '4.5.
|
|
1
|
+
export const version = '4.5.2';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/tools",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.2",
|
|
4
4
|
"description": "Cornerstone3D Tools",
|
|
5
5
|
"types": "./dist/esm/index.d.ts",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"canvas": "3.1.0"
|
|
109
109
|
},
|
|
110
110
|
"peerDependencies": {
|
|
111
|
-
"@cornerstonejs/core": "4.5.
|
|
111
|
+
"@cornerstonejs/core": "4.5.2",
|
|
112
112
|
"@kitware/vtk.js": "32.12.1",
|
|
113
113
|
"@types/d3-array": "3.2.1",
|
|
114
114
|
"@types/d3-interpolate": "3.0.4",
|
|
@@ -127,5 +127,5 @@
|
|
|
127
127
|
"type": "individual",
|
|
128
128
|
"url": "https://ohif.org/donate"
|
|
129
129
|
},
|
|
130
|
-
"gitHead": "
|
|
130
|
+
"gitHead": "586ad50c7640afcea3e89fa3777ca7698b955ccb"
|
|
131
131
|
}
|