40 lines
1.5 KiB
JavaScript
40 lines
1.5 KiB
JavaScript
import { _ } from 'meteor/underscore';
|
|
import { OHIF } from 'meteor/ohif:core';
|
|
import { cornerstone, cornerstoneTools } from 'meteor/ohif:cornerstone';
|
|
|
|
// Draw a line marker over the selected arm
|
|
export default function(eventData, handles, color) {
|
|
const lib = OHIF.lesiontracker.bidirectional;
|
|
const { canvasContext, element } = eventData;
|
|
|
|
const handleKey = lib.getSelectedHandleKey(handles);
|
|
if (!handleKey) return;
|
|
const handle = handles[handleKey];
|
|
|
|
// Used a big distance (1km) to fill the entire line
|
|
const mmStep = -1000000;
|
|
|
|
// Get the line's start and end points
|
|
const fakeImage = {
|
|
columnPixelSpacing: eventData.viewport.scale,
|
|
rowPixelSpacing: eventData.viewport.scale
|
|
};
|
|
const pointA = lib.repositionBidirectionalArmHandle(fakeImage, handles, handleKey, mmStep, 0);
|
|
const pointB = _.pick(handle, ['x', 'y']);
|
|
|
|
// Stop here if pointA is not present
|
|
if (!pointA) return;
|
|
|
|
// Get the canvas coordinates for the line var perpendicularStartCanvas = cornerstone.pixelToCanvas(element, data.handles.perpendicularStart);
|
|
const canvasPointA = cornerstone.pixelToCanvas(element, pointA);
|
|
const canvasPointB = cornerstone.pixelToCanvas(element, pointB);
|
|
|
|
// Draw the line marker
|
|
canvasContext.beginPath();
|
|
canvasContext.strokeStyle = color;
|
|
canvasContext.lineWidth = cornerstoneTools.toolStyle.getToolWidth();
|
|
canvasContext.moveTo(canvasPointA.x, canvasPointA.y);
|
|
canvasContext.lineTo(canvasPointB.x, canvasPointB.y);
|
|
canvasContext.stroke();
|
|
}
|