larvitar 1.2.3 → 1.2.4
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 +3 -3
- package/imaging/imageRendering.js +17 -44
- package/imaging/imageStore.js +9 -3
- package/modules/vuex/larvitar.js +9 -2
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
## Dicom Image Toolkit for CornestoneJS
|
|
8
8
|
|
|
9
|
-
### Current version: 1.2.
|
|
9
|
+
### Current version: 1.2.4
|
|
10
10
|
|
|
11
|
-
### Latest Stable version: 1.2.
|
|
11
|
+
### Latest Stable version: 1.2.4
|
|
12
12
|
|
|
13
|
-
### Latest Published Release: 1.2.
|
|
13
|
+
### Latest Published Release: 1.2.4
|
|
14
14
|
|
|
15
15
|
This library provides common DICOM functionalities to be used in web-applications: it's wrapper that simplifies the use of cornestone-js environment.
|
|
16
16
|
Orthogonal multiplanar reformat is included as well as custom loader/exporter for nrrd files and [Vuex](https://vuex.vuejs.org/) custom integration.
|
|
@@ -328,20 +328,7 @@ export const renderImage = function (seriesStack, elementId, defaultProps) {
|
|
|
328
328
|
}
|
|
329
329
|
|
|
330
330
|
let storedViewport = cornerstone.getViewport(element);
|
|
331
|
-
storeViewportData(
|
|
332
|
-
image,
|
|
333
|
-
elementId,
|
|
334
|
-
data.imageIndex,
|
|
335
|
-
data.numberOfSlices,
|
|
336
|
-
data.rows,
|
|
337
|
-
data.cols,
|
|
338
|
-
data.spacing_x,
|
|
339
|
-
data.spacing_y,
|
|
340
|
-
data.thickness,
|
|
341
|
-
storedViewport,
|
|
342
|
-
data.defaultWW,
|
|
343
|
-
data.defaultWC
|
|
344
|
-
);
|
|
331
|
+
storeViewportData(image, elementId, storedViewport, data);
|
|
345
332
|
larvitar_store.set("renderingStatus", [elementId, true]);
|
|
346
333
|
let t1 = performance.now();
|
|
347
334
|
console.log(`Call to renderImage took ${t1 - t0} milliseconds.`);
|
|
@@ -534,47 +521,26 @@ export const updateViewportData = function (
|
|
|
534
521
|
* @function storeViewportData
|
|
535
522
|
* @param {Object} image - The cornerstone image frame
|
|
536
523
|
* @param {String} elementId - The html div id used for rendering
|
|
537
|
-
* @param {Number} imageIndex - The index of the image
|
|
538
|
-
* @param {Number} numberOfSlices - The number of slices of the series
|
|
539
|
-
* @param {Number} rows - The number of rows of the image
|
|
540
|
-
* @param {Number} cols - The number of columns of the image
|
|
541
|
-
* @param {Number} spacing_x - The spacing value for x axis
|
|
542
|
-
* @param {Number} spacing_y - The spacing value for y direction
|
|
543
|
-
* @param {Number} thickness - The thickness value between slices
|
|
544
524
|
* @param {String} viewport - The viewport tag name
|
|
545
|
-
* @param {
|
|
546
|
-
* @param {Number} defaultWC - The default WC value
|
|
525
|
+
* @param {Object} data - The viewport data object
|
|
547
526
|
*/
|
|
548
|
-
export const storeViewportData = function (
|
|
549
|
-
|
|
550
|
-
elementId,
|
|
551
|
-
|
|
552
|
-
numberOfSlices,
|
|
553
|
-
rows,
|
|
554
|
-
cols,
|
|
555
|
-
spacing_x,
|
|
556
|
-
spacing_y,
|
|
557
|
-
thickness,
|
|
558
|
-
viewport,
|
|
559
|
-
defaultWW,
|
|
560
|
-
defaultWC
|
|
561
|
-
) {
|
|
562
|
-
larvitar_store.set("dimensions", [elementId, rows, cols]);
|
|
563
|
-
larvitar_store.set("spacing", [elementId, spacing_x, spacing_y]);
|
|
564
|
-
larvitar_store.set("thickness", [elementId, thickness]);
|
|
527
|
+
export const storeViewportData = function (image, elementId, viewport, data) {
|
|
528
|
+
larvitar_store.set("dimensions", [elementId, data.rows, data.cols]);
|
|
529
|
+
larvitar_store.set("spacing", [elementId, data.spacing_x, data.spacing_y]);
|
|
530
|
+
larvitar_store.set("thickness", [elementId, data.thickness]);
|
|
565
531
|
larvitar_store.set("minPixelValue", [elementId, image.minPixelValue]);
|
|
566
532
|
larvitar_store.set("maxPixelValue", [elementId, image.maxPixelValue]);
|
|
567
533
|
larvitar_store.set("minSliceId", [elementId, 1]);
|
|
568
|
-
larvitar_store.set("sliceId", [elementId, imageIndex]);
|
|
569
|
-
larvitar_store.set("maxSliceId", [elementId, numberOfSlices]);
|
|
534
|
+
larvitar_store.set("sliceId", [elementId, data.imageIndex]);
|
|
535
|
+
larvitar_store.set("maxSliceId", [elementId, data.numberOfSlices]);
|
|
570
536
|
larvitar_store.set("defaultViewport", [
|
|
571
537
|
elementId,
|
|
572
538
|
viewport.scale,
|
|
573
539
|
viewport.rotation,
|
|
574
540
|
viewport.translation.x,
|
|
575
541
|
viewport.translation.y,
|
|
576
|
-
defaultWW,
|
|
577
|
-
defaultWC
|
|
542
|
+
data.defaultWW,
|
|
543
|
+
data.defaultWC
|
|
578
544
|
]);
|
|
579
545
|
larvitar_store.set("scale", [elementId, viewport.scale]);
|
|
580
546
|
larvitar_store.set("rotation", [elementId, viewport.rotation]);
|
|
@@ -588,6 +554,9 @@ export const storeViewportData = function (
|
|
|
588
554
|
viewport.voi.windowWidth,
|
|
589
555
|
viewport.voi.windowCenter
|
|
590
556
|
]);
|
|
557
|
+
larvitar_store.set("isColor", [elementId, data.isColor]);
|
|
558
|
+
larvitar_store.set("isMultiframe", [elementId, data.isMultiframe]);
|
|
559
|
+
larvitar_store.set("isTimeserie", [elementId, data.isTimeserie]);
|
|
591
560
|
};
|
|
592
561
|
|
|
593
562
|
/**
|
|
@@ -699,10 +668,12 @@ let getSeriesData = function (series, defaultProps) {
|
|
|
699
668
|
let data = {};
|
|
700
669
|
// image index
|
|
701
670
|
if (series.isMultiframe) {
|
|
671
|
+
data.isMultiframe = true;
|
|
702
672
|
data.numberOfSlices = series.imageIds.length;
|
|
703
673
|
data.imageIndex = 1;
|
|
704
674
|
data.imageId = series.imageIds[0];
|
|
705
675
|
} else {
|
|
676
|
+
data.isMultiframe = false;
|
|
706
677
|
data.numberOfSlices =
|
|
707
678
|
defaultProps && has(defaultProps, "numberOfSlices")
|
|
708
679
|
? defaultProps["numberOfSlices"]
|
|
@@ -720,6 +691,8 @@ let getSeriesData = function (series, defaultProps) {
|
|
|
720
691
|
? series.imageIds[data.imageIndex - 1]
|
|
721
692
|
: series.imageIds[0];
|
|
722
693
|
}
|
|
694
|
+
data.isColor = series.color;
|
|
695
|
+
data.isTimeserie = false; // TODO 4D
|
|
723
696
|
|
|
724
697
|
// rows, cols and x y z spacing
|
|
725
698
|
data.rows = series.instances[series.imageIds[0]].metadata["x00280010"];
|
package/imaging/imageStore.js
CHANGED
|
@@ -22,6 +22,9 @@ const DEFAULT_VIEWPORT = {
|
|
|
22
22
|
thickness: 0.0,
|
|
23
23
|
minPixelValue: 0,
|
|
24
24
|
maxPixelValue: 0,
|
|
25
|
+
isColor: false,
|
|
26
|
+
isMultiframe: false,
|
|
27
|
+
isTimeserie: false,
|
|
25
28
|
viewport: {
|
|
26
29
|
scale: 0.0,
|
|
27
30
|
rotation: 0.0,
|
|
@@ -66,7 +69,6 @@ class Larvitar_Store {
|
|
|
66
69
|
this.vuex_store = vuex_store;
|
|
67
70
|
this.vuex_module = vuex_module;
|
|
68
71
|
this.state = {
|
|
69
|
-
manager: null,
|
|
70
72
|
series: {}, // seriesUID: {imageIds:[], progress:value}
|
|
71
73
|
leftActiveTool: "Wwwc",
|
|
72
74
|
rightActiveTool: "Zoom",
|
|
@@ -230,6 +232,12 @@ class Larvitar_Store {
|
|
|
230
232
|
this.state["viewports"][data[0]]["maxSliceId"] = data[1];
|
|
231
233
|
} else if (field == "sliceId") {
|
|
232
234
|
this.state["viewports"][data[0]]["sliceId"] = data[1];
|
|
235
|
+
} else if (field == "isColor") {
|
|
236
|
+
this.state["viewports"][data[0]]["isColor"] = data[1];
|
|
237
|
+
} else if (field == "isMultiframe") {
|
|
238
|
+
this.state["viewports"][data[0]]["isMultiframe"] = data[1];
|
|
239
|
+
} else if (field == "isTimeserie") {
|
|
240
|
+
this.state["viewports"][data[0]]["isTimeserie"] = data[1];
|
|
233
241
|
} else if (field == "defaultViewport") {
|
|
234
242
|
this.state["viewports"][data[0]]["default"]["scale"] = data[1];
|
|
235
243
|
this.state["viewports"][data[0]]["default"]["rotation"] = data[2];
|
|
@@ -243,8 +251,6 @@ class Larvitar_Store {
|
|
|
243
251
|
data[6];
|
|
244
252
|
} else if (field == "progress") {
|
|
245
253
|
this.state.series[data[0]]["progress"] = data[1];
|
|
246
|
-
} else if (field == "manager") {
|
|
247
|
-
this.state.manager = data;
|
|
248
254
|
} else {
|
|
249
255
|
if (Array.isArray(data)) {
|
|
250
256
|
this.state[field][data[0]] = data[1];
|
package/modules/vuex/larvitar.js
CHANGED
|
@@ -15,6 +15,9 @@ const DEFAULT_VIEWPORT = {
|
|
|
15
15
|
thickness: 0.0,
|
|
16
16
|
minPixelValue: 0,
|
|
17
17
|
maxPixelValue: 0,
|
|
18
|
+
isColor: false,
|
|
19
|
+
isMultiframe: false,
|
|
20
|
+
isTimeserie: false,
|
|
18
21
|
viewport: {
|
|
19
22
|
scale: 0.0,
|
|
20
23
|
rotation: 0.0,
|
|
@@ -46,7 +49,6 @@ export default {
|
|
|
46
49
|
colormapId: "gray",
|
|
47
50
|
leftActiveTool: "Wwwc",
|
|
48
51
|
rightActiveTool: "Wwwc",
|
|
49
|
-
manager: null,
|
|
50
52
|
series: {}, // seriesUID: {imageIds:[], progress:value}
|
|
51
53
|
viewports: {}
|
|
52
54
|
},
|
|
@@ -90,7 +92,6 @@ export default {
|
|
|
90
92
|
},
|
|
91
93
|
deleteViewport: ({ state }, viewportId) =>
|
|
92
94
|
Vue.delete(state.viewports, viewportId),
|
|
93
|
-
setManager: ({ state }, value) => (state.manager = value),
|
|
94
95
|
setLeftActiveTool: ({ commit }, value) => {
|
|
95
96
|
commit("leftActiveTool", { d: { value } });
|
|
96
97
|
},
|
|
@@ -127,6 +128,12 @@ export default {
|
|
|
127
128
|
commit("viewport", { id, d: { maxSliceId } }),
|
|
128
129
|
setSliceId: ({ commit }, [id, sliceId]) =>
|
|
129
130
|
commit("viewport", { id, d: { sliceId } }),
|
|
131
|
+
setIsColor: ({ commit }, [id, isColor]) =>
|
|
132
|
+
commit("viewport", { id, d: { isColor } }),
|
|
133
|
+
setIsMultiframe: ({ commit }, [id, isMultiframe]) =>
|
|
134
|
+
commit("viewport", { id, d: { isMultiframe } }),
|
|
135
|
+
setIsTimeserie: ({ commit }, [id, isTimeserie]) =>
|
|
136
|
+
commit("viewport", { id, d: { isTimeserie } }),
|
|
130
137
|
setDefaultViewport: (
|
|
131
138
|
{ commit },
|
|
132
139
|
[id, scale, rotation, x, y, windowWidth, windowCenter]
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"medical",
|
|
7
7
|
"cornerstone"
|
|
8
8
|
],
|
|
9
|
-
"version": "1.2.
|
|
9
|
+
"version": "1.2.4",
|
|
10
10
|
"description": "javascript library for parsing, loading, rendering and interacting with DICOM images",
|
|
11
11
|
"repository": {
|
|
12
12
|
"url": "https://github.com/dvisionlab/Larvitar.git",
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
"cornerstone-core": "^2.6.1",
|
|
30
30
|
"cornerstone-file-image-loader": "^0.3.0",
|
|
31
31
|
"cornerstone-tools": "^6.0.6",
|
|
32
|
-
"cornerstone-wado-image-loader": "^4.
|
|
32
|
+
"cornerstone-wado-image-loader": "^4.1.2",
|
|
33
33
|
"cornerstone-web-image-loader": "^2.1.1",
|
|
34
34
|
"crypto-js": "^4.1.1",
|
|
35
35
|
"dicom-character-set": "^1.0.3",
|
|
36
|
-
"dicom-parser": "^1.8.
|
|
36
|
+
"dicom-parser": "^1.8.13",
|
|
37
37
|
"docdash": "^1.2.0",
|
|
38
38
|
"hammerjs": "^2.0.8",
|
|
39
39
|
"keycode-js": "^3.1.0",
|