PWV-138: Creating selected state for bidirectional tool
This commit is contained in:
parent
d7369582b6
commit
e330973c1e
@ -673,6 +673,31 @@ function setHandlesVisible (handles, isVisibile) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function unselectAllHandles(handles) {
|
||||||
|
Object.keys(handles).forEach(handleKey => {
|
||||||
|
if (handleKey === 'textBox') return;
|
||||||
|
handles[handleKey].selected = false;
|
||||||
|
handles[handleKey].active = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawHandles(context, eventData, handles, color, options) {
|
||||||
|
Object.keys(handles).forEach(handleKey => {
|
||||||
|
if (handleKey === 'textBox') return;
|
||||||
|
const handle = handles[handleKey];
|
||||||
|
if (handle.selected) {
|
||||||
|
handle.active = true;
|
||||||
|
} else {
|
||||||
|
if (handle.hover) {
|
||||||
|
handle.active = true;
|
||||||
|
} else {
|
||||||
|
handle.active = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
cornerstoneTools.drawHandles(context, eventData, handles, color, options);
|
||||||
|
}
|
||||||
|
|
||||||
function moveHandle(mouseEventData, toolType, data, handle, doneMovingCallback, preventHandleOutsideImage) {
|
function moveHandle(mouseEventData, toolType, data, handle, doneMovingCallback, preventHandleOutsideImage) {
|
||||||
// Make handle invisible while moving
|
// Make handle invisible while moving
|
||||||
if (!handle.hasBoundingBox) {
|
if (!handle.hasBoundingBox) {
|
||||||
@ -757,7 +782,13 @@ function mouseMoveCallback(e, eventData) {
|
|||||||
var coords = eventData.currentPoints.canvas;
|
var coords = eventData.currentPoints.canvas;
|
||||||
|
|
||||||
var data = toolData.data[i];
|
var data = toolData.data[i];
|
||||||
if (cornerstoneTools.handleActivator(eventData.element, data.handles, coords) === true) {
|
const handleActivatorChanged = cornerstoneTools.handleActivator(eventData.element, data.handles, coords);
|
||||||
|
Object.keys(data.handles).forEach(handleKey => {
|
||||||
|
if (handleKey === 'textBox') return;
|
||||||
|
const handle = data.handles[handleKey];
|
||||||
|
handle.hover = handle.active;
|
||||||
|
});
|
||||||
|
if (handleActivatorChanged === true) {
|
||||||
imageNeedsUpdate = true;
|
imageNeedsUpdate = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -778,7 +809,7 @@ function mouseDownCallback(e, eventData) {
|
|||||||
var data;
|
var data;
|
||||||
var element = eventData.element;
|
var element = eventData.element;
|
||||||
|
|
||||||
function handleDoneMove() {
|
function handleDoneMove(handle) {
|
||||||
// Set the cursor back to its default
|
// Set the cursor back to its default
|
||||||
$(element).css('cursor', '');
|
$(element).css('cursor', '');
|
||||||
|
|
||||||
@ -788,6 +819,12 @@ function mouseDownCallback(e, eventData) {
|
|||||||
cornerstoneTools.removeToolState(element, toolType, data);
|
cornerstoneTools.removeToolState(element, toolType, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update the handles to keep selected state
|
||||||
|
if (handle) {
|
||||||
|
handle.moving = false;
|
||||||
|
handle.selected = true;
|
||||||
|
}
|
||||||
|
|
||||||
cornerstone.updateImage(element);
|
cornerstone.updateImage(element);
|
||||||
$(element).on('CornerstoneToolsMouseMove', eventData, mouseMoveCallback);
|
$(element).on('CornerstoneToolsMouseMove', eventData, mouseMoveCallback);
|
||||||
}
|
}
|
||||||
@ -810,8 +847,12 @@ function mouseDownCallback(e, eventData) {
|
|||||||
|
|
||||||
$(element).off('CornerstoneToolsMouseMove', mouseMoveCallback);
|
$(element).off('CornerstoneToolsMouseMove', mouseMoveCallback);
|
||||||
data.active = true;
|
data.active = true;
|
||||||
|
data.selected = true;
|
||||||
|
|
||||||
moveHandle(eventData, toolType, data, handle, handleDoneMove);
|
unselectAllHandles(data.handles);
|
||||||
|
handle.moving = true;
|
||||||
|
handle.selected = true;
|
||||||
|
moveHandle(eventData, toolType, data, handle, () => handleDoneMove(handle));
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -830,7 +871,22 @@ function mouseDownCallback(e, eventData) {
|
|||||||
data = toolData.data[i];
|
data = toolData.data[i];
|
||||||
if (pointNearTool(element, data, coords)) {
|
if (pointNearTool(element, data, coords)) {
|
||||||
$(element).off('CornerstoneToolsMouseMove', mouseMoveCallback);
|
$(element).off('CornerstoneToolsMouseMove', mouseMoveCallback);
|
||||||
cornerstoneTools.moveAllHandles(e, data, toolData, toolType, options, handleDoneMove);
|
data.active = true;
|
||||||
|
data.selected = true;
|
||||||
|
|
||||||
|
unselectAllHandles(data.handles);
|
||||||
|
Object.keys(data.handles).forEach(handleKey => {
|
||||||
|
if (handleKey === 'textBox') return;
|
||||||
|
data.handles[handleKey].moving = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
cornerstoneTools.moveAllHandles(e, data, toolData, toolType, options, () => {
|
||||||
|
Object.keys(data.handles).forEach(handleKey => {
|
||||||
|
if (handleKey === 'textBox') return;
|
||||||
|
data.handles[handleKey].moving = false;
|
||||||
|
});
|
||||||
|
handleDoneMove();
|
||||||
|
});
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1004,8 +1060,8 @@ function onImageRendered(e, eventData) {
|
|||||||
// Draw perpendicular line
|
// Draw perpendicular line
|
||||||
drawPerpendicularLine(context, eventData, element, data, color, strokeWidth);
|
drawPerpendicularLine(context, eventData, element, data, color, strokeWidth);
|
||||||
|
|
||||||
// draw the handles
|
// Draw the handles
|
||||||
cornerstoneTools.drawHandles(context, eventData, data.handles, color, { drawHandlesIfActive: true });
|
drawHandles(context, eventData, data.handles, color, { drawHandlesIfActive: true });
|
||||||
|
|
||||||
// Calculate the long axis length
|
// Calculate the long axis length
|
||||||
var dx = (data.handles.start.x - data.handles.end.x) * (eventData.image.columnPixelSpacing || 1);
|
var dx = (data.handles.start.x - data.handles.end.x) * (eventData.image.columnPixelSpacing || 1);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user