Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 38x 38x 38x 38x 38x 38x 38x 38x 38x 38x 38x 38x | import type { Types } from '@cornerstonejs/core';
/**
* Determine the coordinates that will place the textbox to the right of the
* annotation.
*
* @param annotationCanvasPoints - The canvas points of the annotation's handles.
* @returns - The coordinates for default placement of the textbox.
*/
export default function getTextBoxCoordsCanvas(
annotationCanvasPoints: Array<Types.Point2>
): Types.Point2 {
const corners = _determineCorners(annotationCanvasPoints);
const centerY = (corners.top[1] + corners.bottom[1]) / 2;
const textBoxCanvas = <Types.Point2>[corners.right[0], centerY];
return textBoxCanvas;
}
/**
* Determine the handles that have the min/max x and y values.
*
* @param canvasPoints - The canvas points of the annotation's handles.
* @returns - The top, left, bottom, and right handles.
*/
function _determineCorners(canvasPoints: Array<Types.Point2>) {
const handlesLeftToRight = [canvasPoints[0], canvasPoints[1]].sort(_compareX);
const handlesTopToBottom = [canvasPoints[0], canvasPoints[1]].sort(_compareY);
const right = handlesLeftToRight[handlesLeftToRight.length - 1];
const top = handlesTopToBottom[0];
const bottom = handlesTopToBottom[handlesTopToBottom.length - 1];
return {
top,
bottom,
right,
};
function _compareX(a, b) {
return a[0] < b[0] ? -1 : 1;
}
function _compareY(a, b) {
return a[1] < b[1] ? -1 : 1;
}
}
|