LT-40: Enabling auto positioning configuration by specific borders

This commit is contained in:
Bruno Alves de Faria 2016-11-25 13:28:32 -02:00
parent 888c337f84
commit bac720f3e8
3 changed files with 38 additions and 7 deletions

View File

@ -36,9 +36,16 @@ OHIF.cornerstone.repositionTextBox = (eventData, measurementData) => {
const element = eventData.element; const element = eventData.element;
const enabledElement = cornerstone.getEnabledElement(element); const enabledElement = cornerstone.getEnabledElement(element);
const $element = $(element);
const image = enabledElement.image; const image = enabledElement.image;
const allowedBorders = OHIF.uiSettings.autoPositionMeasurementsTextCallOuts;
const allow = {
T: !allowedBorders || _.contains(allowedBorders, 'T'),
R: !allowedBorders || _.contains(allowedBorders, 'R'),
B: !allowedBorders || _.contains(allowedBorders, 'B'),
L: !allowedBorders || _.contains(allowedBorders, 'L')
};
const getAvailableBlankAreas = (enabledElement, labelWidth, labelHeight) => { const getAvailableBlankAreas = (enabledElement, labelWidth, labelHeight) => {
const { element, canvas, image } = enabledElement; const { element, canvas, image } = enabledElement;
@ -57,10 +64,10 @@ OHIF.cornerstone.repositionTextBox = (eventData, measurementData) => {
const canvasHeight = $canvas.outerHeight(); const canvasHeight = $canvas.outerHeight();
const result = {}; const result = {};
result['x-1'] = topLeft.x > labelWidth; result['x-1'] = allow.L && (topLeft.x > labelWidth);
result['y-1'] = topLeft.y > labelHeight; result['y-1'] = allow.T && (topLeft.y > labelHeight);
result.x1 = canvasWidth - bottomRight.x > labelWidth; result.x1 = allow.R && (canvasWidth - bottomRight.x > labelWidth);
result.y1 = canvasHeight - bottomRight.y > labelHeight; result.y1 = allow.B && (canvasHeight - bottomRight.y > labelHeight);
return result; return result;
}; };
@ -76,7 +83,25 @@ OHIF.cornerstone.repositionTextBox = (eventData, measurementData) => {
const diffX = directions.x < 0 ? tool.x : limits.x - tool.x; const diffX = directions.x < 0 ? tool.x : limits.x - tool.x;
const diffY = directions.y < 0 ? tool.y : limits.y - tool.y; const diffY = directions.y < 0 ? tool.y : limits.y - tool.y;
const cornerAxis = diffY < diffX ? 'y' : 'x'; let cornerAxis = diffY < diffX ? 'y' : 'x';
const map = {
'x-1': 'L',
'y-1': 'T',
x1: 'R',
y1: 'B'
};
let current = 0;
while (current < 4 && !allow[map[cornerAxis + directions[cornerAxis]]]) {
// Invert the direction for the next iteration
directions[cornerAxis] *= -1;
// Invert the tempCornerAxis
cornerAxis = cornerAxis === 'x' ? 'y' : 'x';
current++;
}
return { return {
directions, directions,

View File

@ -153,6 +153,11 @@ export const UISettings = new SimpleSchema({
type: Boolean, type: Boolean,
label: 'Enable cine dialog enhancements for multiframe images.', label: 'Enable cine dialog enhancements for multiframe images.',
defaultValue: false defaultValue: false
},
autoPositionMeasurementsTextCallOuts: {
type: String,
label: 'Auto position text call-outs for measurements when creating them.',
defaultValue: 'TRBL'
} }
}); });

View File

@ -24,7 +24,8 @@
"studyListFunctionsEnabled": true, "studyListFunctionsEnabled": true,
"leftSidebarOpen": false, "leftSidebarOpen": false,
"displaySetNavigationLoopOverSeries": false, "displaySetNavigationLoopOverSeries": false,
"displaySetNavigationMultipleViewports": true "displaySetNavigationMultipleViewports": true,
"autoPositionMeasurementsTextCallOuts": "TRLB"
} }
} }
} }