larvitar 1.4.0 → 1.4.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.
- package/README.md +2 -2
- package/imaging/tools/interaction.js +77 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
## Dicom Image Toolkit for CornerstoneJS
|
|
8
8
|
|
|
9
|
-
### Current version: 1.4.
|
|
9
|
+
### Current version: 1.4.1
|
|
10
10
|
|
|
11
|
-
### Latest Published Release: 1.4.
|
|
11
|
+
### Latest Published Release: 1.4.1
|
|
12
12
|
|
|
13
13
|
This library provides common DICOM functionalities to be used in web-applications: it's wrapper that simplifies the use of cornerstone-js environment.
|
|
14
14
|
Orthogonal multiplanar reformat is included as well as custom loader/exporter for nrrd files and [Vuex](https://vuex.vuejs.org/) custom integration.
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
// external libraries
|
|
7
7
|
import { throttle } from "lodash";
|
|
8
8
|
import * as keyCodes from "keycode-js";
|
|
9
|
+
import cornerstone from "cornerstone-core";
|
|
10
|
+
import cornerstoneTools from "cornerstone-tools/dist/cornerstoneTools.js";
|
|
9
11
|
|
|
10
12
|
// internal libraries
|
|
11
13
|
import { DEFAULT_MOUSE_KEYS } from "./default";
|
|
@@ -31,7 +33,8 @@ let onKeyUpFn = null;
|
|
|
31
33
|
* Setup mouse handler modifiers and keyboard shortcuts:
|
|
32
34
|
* register a tool on right button and another one
|
|
33
35
|
* when pressing a modifier (ctrl/shift/alt) + right button
|
|
34
|
-
* The activation take place on all active viewports
|
|
36
|
+
* The activation take place on all active viewports (we added a check to activate only on viewports
|
|
37
|
+
* in which the tool has been added previously)
|
|
35
38
|
* Improvements could be:
|
|
36
39
|
* - "restore previous active tool" instead of passed "default" tool
|
|
37
40
|
* - manage left button (an idea could be to cycle over object keys for both buttons)
|
|
@@ -57,6 +60,9 @@ export function addMouseKeyHandlers(config) {
|
|
|
57
60
|
return false;
|
|
58
61
|
});
|
|
59
62
|
|
|
63
|
+
// get all enabled viewports. Then, filter only viewport in which the target tool had been added previously.
|
|
64
|
+
let allViewports = cornerstone.getEnabledElements().map(enel => enel.element);
|
|
65
|
+
|
|
60
66
|
// Define behaviour on key down: activate registered tool
|
|
61
67
|
function onKeyDown(evt) {
|
|
62
68
|
// keyboard shortcuts (activate on left mouse button)
|
|
@@ -71,7 +77,17 @@ export function addMouseKeyHandlers(config) {
|
|
|
71
77
|
.filter(key => keyCodes[key] == evt.keyCode)
|
|
72
78
|
.pop();
|
|
73
79
|
if (config.debug) console.log("active", config.keyboard_shortcuts[key]);
|
|
74
|
-
|
|
80
|
+
const viewports = allViewports.filter(viewport =>
|
|
81
|
+
cornerstoneTools.getToolForElement(
|
|
82
|
+
viewport,
|
|
83
|
+
config.keyboard_shortcuts[key]
|
|
84
|
+
)
|
|
85
|
+
);
|
|
86
|
+
setToolActive(
|
|
87
|
+
config.keyboard_shortcuts[key],
|
|
88
|
+
{ mouseButtonMask: 1 },
|
|
89
|
+
viewports.map(v => v.id)
|
|
90
|
+
);
|
|
75
91
|
document.addEventListener("keydown", onKeyDown, { once: true });
|
|
76
92
|
}
|
|
77
93
|
// right drag + shift
|
|
@@ -81,7 +97,18 @@ export function addMouseKeyHandlers(config) {
|
|
|
81
97
|
evt.keyCode == keyCodes.KEY_SHIFT
|
|
82
98
|
) {
|
|
83
99
|
if (config.debug) console.log("active", config.mouse_button_right.shift);
|
|
84
|
-
|
|
100
|
+
const viewports = allViewports.filter(viewport =>
|
|
101
|
+
cornerstoneTools.getToolForElement(
|
|
102
|
+
viewport,
|
|
103
|
+
config.mouse_button_right.shift
|
|
104
|
+
)
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
setToolActive(
|
|
108
|
+
config.mouse_button_right.shift,
|
|
109
|
+
{ mouseButtonMask: 2 },
|
|
110
|
+
viewports.map(v => v.id)
|
|
111
|
+
);
|
|
85
112
|
document.addEventListener("keyup", onKeyUp, { once: true });
|
|
86
113
|
}
|
|
87
114
|
// right drag + ctrl
|
|
@@ -91,7 +118,18 @@ export function addMouseKeyHandlers(config) {
|
|
|
91
118
|
evt.keyCode == keyCodes.KEY_CONTROL
|
|
92
119
|
) {
|
|
93
120
|
if (config.debug) console.log("active", config.mouse_button_right.ctrl);
|
|
94
|
-
|
|
121
|
+
const viewports = allViewports.filter(viewport =>
|
|
122
|
+
cornerstoneTools.getToolForElement(
|
|
123
|
+
viewport,
|
|
124
|
+
config.mouse_button_right.ctrl
|
|
125
|
+
)
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
setToolActive(
|
|
129
|
+
config.mouse_button_right.ctrl,
|
|
130
|
+
{ mouseButtonMask: 2 },
|
|
131
|
+
viewports.map(v => v.id)
|
|
132
|
+
);
|
|
95
133
|
document.addEventListener("keyup", onKeyUp, { once: true });
|
|
96
134
|
}
|
|
97
135
|
// leave default
|
|
@@ -105,17 +143,48 @@ export function addMouseKeyHandlers(config) {
|
|
|
105
143
|
function onKeyUp(e) {
|
|
106
144
|
if (config.debug)
|
|
107
145
|
console.log("active default", config.mouse_button_right.default);
|
|
108
|
-
|
|
146
|
+
const viewports = allViewports.filter(viewport =>
|
|
147
|
+
cornerstoneTools.getToolForElement(
|
|
148
|
+
viewport,
|
|
149
|
+
config.mouse_button_right.default
|
|
150
|
+
)
|
|
151
|
+
);
|
|
152
|
+
setToolActive(
|
|
153
|
+
config.mouse_button_right.default,
|
|
154
|
+
{ mouseButtonMask: 2 },
|
|
155
|
+
viewports.map(v => v.id)
|
|
156
|
+
);
|
|
109
157
|
document.addEventListener("keydown", onKeyDown, { once: true });
|
|
110
158
|
}
|
|
111
159
|
|
|
112
|
-
// activate default, if any
|
|
160
|
+
// activate default on mouse right, if any
|
|
113
161
|
if (config.mouse_button_right && config.mouse_button_right.default) {
|
|
114
|
-
|
|
162
|
+
const viewports = allViewports.filter(viewport =>
|
|
163
|
+
cornerstoneTools.getToolForElement(
|
|
164
|
+
viewport,
|
|
165
|
+
config.mouse_button_right.default
|
|
166
|
+
)
|
|
167
|
+
);
|
|
168
|
+
setToolActive(
|
|
169
|
+
config.mouse_button_right.default,
|
|
170
|
+
{ mouseButtonMask: 2 },
|
|
171
|
+
viewports.map(v => v.id)
|
|
172
|
+
);
|
|
115
173
|
}
|
|
116
174
|
|
|
175
|
+
// activate default on mouse left, if any
|
|
117
176
|
if (config.mouse_button_left && config.mouse_button_left.default) {
|
|
118
|
-
|
|
177
|
+
const viewports = allViewports.filter(viewport =>
|
|
178
|
+
cornerstoneTools.getToolForElement(
|
|
179
|
+
viewport,
|
|
180
|
+
config.mouse_button_left.default
|
|
181
|
+
)
|
|
182
|
+
);
|
|
183
|
+
setToolActive(
|
|
184
|
+
config.mouse_button_left.default,
|
|
185
|
+
{ mouseButtonMask: 1 },
|
|
186
|
+
viewports.map(v => v.id)
|
|
187
|
+
);
|
|
119
188
|
}
|
|
120
189
|
|
|
121
190
|
document.addEventListener("keydown", onKeyDown, { once: true });
|
package/package.json
CHANGED