fix: dragProbe tool (PR #194)

Pull request
https://github.com/chafey/cornerstoneTools/pull/194
This commit is contained in:
Leonardo Campos 2017-03-16 20:07:40 -03:00
parent 7d8d32d7dc
commit e618e32341

View File

@ -2827,11 +2827,11 @@ if (typeof cornerstoneTools === 'undefined') {
'use strict';
var dragEventData;
function defaultStrategy(eventData) {
var enabledElement = cornerstone.getEnabledElement(eventData.element);
cornerstone.updateImage(eventData.element);
var context = enabledElement.canvas.getContext('2d');
context.setTransform(1, 0, 0, 1, 0, 0);
@ -2898,8 +2898,6 @@ if (typeof cornerstoneTools === 'undefined') {
var enabledElement = cornerstone.getEnabledElement(element);
var image = enabledElement.image;
cornerstone.updateImage(element);
var context = enabledElement.canvas.getContext('2d');
context.setTransform(1, 0, 0, 1, 0, 0);
@ -2986,6 +2984,7 @@ if (typeof cornerstoneTools === 'undefined') {
}
function mouseUpCallback(e, eventData) {
$(eventData.element).off('CornerstoneImageRendered', imageRenderedCallback);
$(eventData.element).off('CornerstoneToolsMouseDrag', dragCallback);
$(eventData.element).off('CornerstoneToolsMouseUp', mouseUpCallback);
$(eventData.element).off('CornerstoneToolsMouseClick', mouseUpCallback);
@ -2994,6 +2993,7 @@ if (typeof cornerstoneTools === 'undefined') {
function mouseDownCallback(e, eventData) {
if (cornerstoneTools.isMouseButtonEnabled(eventData.which, e.data.mouseButtonMask)) {
$(eventData.element).on('CornerstoneImageRendered', imageRenderedCallback);
$(eventData.element).on('CornerstoneToolsMouseDrag', dragCallback);
$(eventData.element).on('CornerstoneToolsMouseUp', mouseUpCallback);
$(eventData.element).on('CornerstoneToolsMouseClick', mouseUpCallback);
@ -3002,8 +3002,22 @@ if (typeof cornerstoneTools === 'undefined') {
}
}
function imageRenderedCallback() {
if(dragEventData) {
cornerstoneTools.dragProbe.strategy(dragEventData);
dragEventData = null;
}
}
// The strategy can't be execute at this momento because the image is rendered asynchronously
// (requestAnimationFrame). Then the eventData that contains all information needed is being
// cached and the strategy will be executed once CornerstoneImageRendered is triggered.
function dragCallback(e, eventData) {
cornerstoneTools.dragProbe.strategy(eventData);
var element = eventData.element;
dragEventData = eventData;
cornerstone.updateImage(element);
return false; // false = causes jquery to preventDefault() and stopPropagation() this event
}