Added support for multi-frame images (e.g. ultrasound). Updated cornerstoneTools with mouseClick bug fix
This commit is contained in:
parent
5010307b6e
commit
462820f0aa
@ -1,4 +1,4 @@
|
|||||||
/*! cornerstoneTools - v0.7.7 - 2015-11-25 | (c) 2014 Chris Hafey | https://github.com/chafey/cornerstoneTools */
|
/*! cornerstoneTools - v0.7.7 - 2015-11-26 | (c) 2014 Chris Hafey | https://github.com/chafey/cornerstoneTools */
|
||||||
// Begin Source: src/header.js
|
// Begin Source: src/header.js
|
||||||
if (typeof cornerstone === 'undefined') {
|
if (typeof cornerstone === 'undefined') {
|
||||||
cornerstone = {};
|
cornerstone = {};
|
||||||
@ -2747,6 +2747,7 @@ if (typeof cornerstoneTools === 'undefined') {
|
|||||||
function mouseUpCallback(e, eventData) {
|
function mouseUpCallback(e, eventData) {
|
||||||
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
|
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
|
||||||
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).off('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
cornerstone.updateImage(eventData.element);
|
cornerstone.updateImage(eventData.element);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2754,6 +2755,7 @@ if (typeof cornerstoneTools === 'undefined') {
|
|||||||
if (cornerstoneTools.isMouseButtonEnabled(eventData.which, e.data.mouseButtonMask)) {
|
if (cornerstoneTools.isMouseButtonEnabled(eventData.which, e.data.mouseButtonMask)) {
|
||||||
$(eventData.element).on('CornerstoneToolsMouseDrag', dragCallback);
|
$(eventData.element).on('CornerstoneToolsMouseDrag', dragCallback);
|
||||||
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).on('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
cornerstoneTools.dragProbe.strategy(eventData);
|
cornerstoneTools.dragProbe.strategy(eventData);
|
||||||
return false; // false = causes jquery to preventDefault() and stopPropagation() this event
|
return false; // false = causes jquery to preventDefault() and stopPropagation() this event
|
||||||
}
|
}
|
||||||
@ -4214,12 +4216,14 @@ if (typeof cornerstoneTools === 'undefined') {
|
|||||||
function mouseUpCallback(e, eventData) {
|
function mouseUpCallback(e, eventData) {
|
||||||
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
|
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
|
||||||
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).off('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function mouseDownCallback(e, eventData) {
|
function mouseDownCallback(e, eventData) {
|
||||||
if (cornerstoneTools.isMouseButtonEnabled(eventData.which, e.data.mouseButtonMask)) {
|
if (cornerstoneTools.isMouseButtonEnabled(eventData.which, e.data.mouseButtonMask)) {
|
||||||
$(eventData.element).on('CornerstoneToolsMouseDrag', dragCallback);
|
$(eventData.element).on('CornerstoneToolsMouseDrag', dragCallback);
|
||||||
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).on('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
return false; // false = causes jquery to preventDefault() and stopPropagation() this event
|
return false; // false = causes jquery to preventDefault() and stopPropagation() this event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4628,12 +4632,14 @@ if (typeof cornerstoneTools === 'undefined') {
|
|||||||
function mouseUpCallback(e, eventData) {
|
function mouseUpCallback(e, eventData) {
|
||||||
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
|
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
|
||||||
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).off('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function mouseDownCallback(e, eventData) {
|
function mouseDownCallback(e, eventData) {
|
||||||
if (cornerstoneTools.isMouseButtonEnabled(eventData.which, e.data.mouseButtonMask)) {
|
if (cornerstoneTools.isMouseButtonEnabled(eventData.which, e.data.mouseButtonMask)) {
|
||||||
$(eventData.element).on('CornerstoneToolsMouseDrag', dragCallback);
|
$(eventData.element).on('CornerstoneToolsMouseDrag', dragCallback);
|
||||||
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).on('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
return false; // false = causes jquery to preventDefault() and stopPropagation() this event
|
return false; // false = causes jquery to preventDefault() and stopPropagation() this event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5286,12 +5292,14 @@ if (typeof cornerstoneTools === 'undefined') {
|
|||||||
function mouseUpCallback(e, eventData) {
|
function mouseUpCallback(e, eventData) {
|
||||||
$(eventData.element).off('CornerstoneToolsMouseDrag', mouseDragCallback);
|
$(eventData.element).off('CornerstoneToolsMouseDrag', mouseDragCallback);
|
||||||
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).off('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function mouseDownCallback(e, eventData) {
|
function mouseDownCallback(e, eventData) {
|
||||||
if (cornerstoneTools.isMouseButtonEnabled(eventData.which, e.data.mouseButtonMask)) {
|
if (cornerstoneTools.isMouseButtonEnabled(eventData.which, e.data.mouseButtonMask)) {
|
||||||
$(eventData.element).on('CornerstoneToolsMouseDrag', mouseDragCallback);
|
$(eventData.element).on('CornerstoneToolsMouseDrag', mouseDragCallback);
|
||||||
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).on('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
return false; // false = cases jquery to preventDefault() and stopPropagation() this event
|
return false; // false = cases jquery to preventDefault() and stopPropagation() this event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5853,6 +5861,7 @@ if (typeof cornerstoneTools === 'undefined') {
|
|||||||
function mouseUpCallback(e, eventData) {
|
function mouseUpCallback(e, eventData) {
|
||||||
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
|
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
|
||||||
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).off('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function mouseDownCallback(e, eventData) {
|
function mouseDownCallback(e, eventData) {
|
||||||
@ -5860,6 +5869,7 @@ if (typeof cornerstoneTools === 'undefined') {
|
|||||||
startPoints = eventData.startPoints; // Used for translateStrategy
|
startPoints = eventData.startPoints; // Used for translateStrategy
|
||||||
$(eventData.element).on('CornerstoneToolsMouseDrag', dragCallback);
|
$(eventData.element).on('CornerstoneToolsMouseDrag', dragCallback);
|
||||||
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).on('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
return false; // false = cases jquery to preventDefault() and stopPropagation() this event
|
return false; // false = cases jquery to preventDefault() and stopPropagation() this event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -7766,6 +7776,7 @@ Display scroll progress bar across bottom of image.
|
|||||||
function mouseUpCallback(e, eventData) {
|
function mouseUpCallback(e, eventData) {
|
||||||
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
|
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
|
||||||
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).off('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function mouseDownCallback(e, eventData) {
|
function mouseDownCallback(e, eventData) {
|
||||||
@ -7775,6 +7786,7 @@ Display scroll progress bar across bottom of image.
|
|||||||
};
|
};
|
||||||
$(eventData.element).on('CornerstoneToolsMouseDrag', mouseDragEventData, dragCallback);
|
$(eventData.element).on('CornerstoneToolsMouseDrag', mouseDragEventData, dragCallback);
|
||||||
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).on('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -9589,6 +9601,7 @@ Display scroll progress bar across bottom of image.
|
|||||||
function mouseUpCallback(e, eventData) {
|
function mouseUpCallback(e, eventData) {
|
||||||
$(eventData.element).off('CornerstoneToolsMouseDrag', mouseDragCallback);
|
$(eventData.element).off('CornerstoneToolsMouseDrag', mouseDragCallback);
|
||||||
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).off('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function mouseDownCallback(e, eventData) {
|
function mouseDownCallback(e, eventData) {
|
||||||
@ -9600,6 +9613,7 @@ Display scroll progress bar across bottom of image.
|
|||||||
};
|
};
|
||||||
$(eventData.element).on('CornerstoneToolsMouseDrag', mouseDragEventData, mouseDragCallback);
|
$(eventData.element).on('CornerstoneToolsMouseDrag', mouseDragEventData, mouseDragCallback);
|
||||||
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
|
||||||
|
$(eventData.element).on('CornerstoneToolsMouseClick', mouseUpCallback);
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -97,9 +97,9 @@ function loadSeriesIntoViewport(data) {
|
|||||||
// into the viewport overlays, and to calculate reference lines and orientation markers
|
// into the viewport overlays, and to calculate reference lines and orientation markers
|
||||||
var series = data.series;
|
var series = data.series;
|
||||||
var numImages = series.instances.length;
|
var numImages = series.instances.length;
|
||||||
|
var imageId;
|
||||||
|
|
||||||
series.instances.forEach(function(instance, imageIndex) {
|
series.instances.forEach(function(instance, imageIndex) {
|
||||||
var imageId = getImageId(instance);
|
|
||||||
imageIds.push(imageId);
|
|
||||||
var metaData = {
|
var metaData = {
|
||||||
instance: instance,
|
instance: instance,
|
||||||
series: series,
|
series: series,
|
||||||
@ -108,7 +108,20 @@ function loadSeriesIntoViewport(data) {
|
|||||||
imageIndex: imageIndex + 1
|
imageIndex: imageIndex + 1
|
||||||
};
|
};
|
||||||
|
|
||||||
addMetaData(imageId, metaData);
|
var numFrames = instance.numFrames;
|
||||||
|
if (numFrames > 1) {
|
||||||
|
log.info('Multiframe image detected');
|
||||||
|
for (var i = 0; i < numFrames; i++) {
|
||||||
|
metaData.frame = i;
|
||||||
|
imageId = getImageId(instance, i);
|
||||||
|
imageIds.push(imageId);
|
||||||
|
addMetaData(imageId, metaData);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
imageId = getImageId(instance);
|
||||||
|
imageIds.push(imageId);
|
||||||
|
addMetaData(imageId, metaData);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Define the current image stack using the newly created image IDs
|
// Define the current image stack using the newly created image IDs
|
||||||
|
|||||||
@ -4,13 +4,20 @@
|
|||||||
* @param instance
|
* @param instance
|
||||||
* @returns {string} The imageId to be used by Cornerstone
|
* @returns {string} The imageId to be used by Cornerstone
|
||||||
*/
|
*/
|
||||||
getImageId = function(instance) {
|
getImageId = function(instance, frame) {
|
||||||
if (!instance) {
|
if (!instance) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (instance.wadouri) {
|
if (instance.wadouri) {
|
||||||
return 'dicomweb:' + instance.wadouri; // WADO-URI
|
var imageId = 'dicomweb:' + instance.wadouri; // WADO-URI;
|
||||||
|
if (frame !== undefined) {
|
||||||
|
imageId += '&frame=' + frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
return imageId;
|
||||||
} else {
|
} else {
|
||||||
|
// TODO= Check multiframe image support with WADO-RS
|
||||||
return getWADORSImageId(instance); // WADO-RS Retrieve Frame
|
return getWADORSImageId(instance); // WADO-RS Retrieve Frame
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -104,6 +104,8 @@ function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
|
|||||||
sourceImageInstanceUid: getSourceImageInstanceUid(instance),
|
sourceImageInstanceUid: getSourceImageInstanceUid(instance),
|
||||||
laterality: DICOMWeb.getString(instance['00200062']),
|
laterality: DICOMWeb.getString(instance['00200062']),
|
||||||
viewPosition: DICOMWeb.getString(instance['00185101']),
|
viewPosition: DICOMWeb.getString(instance['00185101']),
|
||||||
|
numFrames: DICOMWeb.getNumber(instance['00280008']),
|
||||||
|
frameRate: DICOMWeb.getNumber(instance['00181063'])
|
||||||
};
|
};
|
||||||
|
|
||||||
if (server.imageRendering === 'wadouri') {
|
if (server.imageRendering === 'wadouri') {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user