diff --git a/LesionTracker/.meteor/versions b/LesionTracker/.meteor/versions index 73c5bc5e2..d36d9d99b 100644 --- a/LesionTracker/.meteor/versions +++ b/LesionTracker/.meteor/versions @@ -88,6 +88,7 @@ observe-sequence@1.0.16 ohif:commands@0.0.1 ohif:core@0.0.1 ohif:cornerstone@0.0.1 +ohif:cornerstone-settings@0.0.1 ohif:design@0.0.1 ohif:dicom-services@0.0.1 ohif:hanging-protocols@0.0.1 diff --git a/Packages/ohif-cornerstone/package.js b/Packages/ohif-cornerstone/package.js index 5f399025e..8371134da 100644 --- a/Packages/ohif-cornerstone/package.js +++ b/Packages/ohif-cornerstone/package.js @@ -7,7 +7,7 @@ Package.describe({ Npm.depends({ hammerjs: '2.0.8', 'cornerstone-core': '2.1.0', - 'cornerstone-tools': '2.1.0', + 'cornerstone-tools': '2.2.0', 'cornerstone-math': '0.1.6', 'dicom-parser': '1.7.6', 'cornerstone-wado-image-loader': '2.0.0' diff --git a/Packages/ohif-lesiontracker/client/compatibility/index.js b/Packages/ohif-lesiontracker/client/compatibility/index.js index 5babe4392..596f85b2d 100644 --- a/Packages/ohif-lesiontracker/client/compatibility/index.js +++ b/Packages/ohif-lesiontracker/client/compatibility/index.js @@ -1,6 +1,5 @@ import './bidirectionalTool'; import './imageDownload.js'; import './nonTargetTool.js'; -import './scaleOverlayTool.js'; import './deleteLesionKeyboardTool.js'; import './qualitativeTargetTools.js'; diff --git a/Packages/ohif-lesiontracker/client/compatibility/scaleOverlayTool.js b/Packages/ohif-lesiontracker/client/compatibility/scaleOverlayTool.js deleted file mode 100644 index 93087efcf..000000000 --- a/Packages/ohif-lesiontracker/client/compatibility/scaleOverlayTool.js +++ /dev/null @@ -1,229 +0,0 @@ -import { OHIF } from 'meteor/ohif:core'; - -OHIF.cornerstone.scaleOverlaySettings = { - color: 'white', - lineWidth: 2, - shadowColor: 'black', - shadowBlur: 4 -}; - -function drawLine(context, startPoint, endPoint, config) { - context.moveTo(startPoint.x, startPoint.y); - context.lineTo(endPoint.x, endPoint.y); -} - -function drawVerticalScalebarIntervals (context, config) { - let i = 0; - - while (config.verticalLine.start.y + i * config.verticalMinorTick <= config.vscaleBounds.bottomRight.y) { - - const startPoint = { - x: config.verticalLine.start.x, - y: config.verticalLine.start.y + i * config.verticalMinorTick - }; - - const endPoint = { - x: 0, - y: config.verticalLine.start.y + i * config.verticalMinorTick - }; - if (i % 5 === 0) { - - endPoint.x = config.verticalLine.start.x - config.majorTickLength; - } else { - - endPoint.x = config.verticalLine.start.x - config.minorTickLength; - } - - drawLine(context, startPoint, endPoint, config); - - i++; - } -} - -function drawHorizontalScalebarIntervals (context, config) { - let i = 0; - - while (config.horizontalLine.start.x + i * config.horizontalMinorTick <= config.hscaleBounds.bottomRight.x) { - - const startPoint = { - x: config.horizontalLine.start.x + i * config.horizontalMinorTick, - y: config.horizontalLine.start.y - }; - - const endPoint = { - x: config.horizontalLine.start.x + i * config.horizontalMinorTick, - y: 0 - }; - - if (i % 5 === 0) { - endPoint.y = config.horizontalLine.start.y - config.majorTickLength; - } else { - endPoint.y = config.horizontalLine.start.y - config.minorTickLength; - } - - drawLine(context, startPoint, endPoint, config); - - i++; - } -} - -function drawVerticalScalebar(context, config) { - const startPoint = { - x: config.verticalLine.start.x, - y: config.verticalLine.start.y - }; - const endPoint = { - x: config.verticalLine.end.x, - y: config.verticalLine.end.y - }; - - context.beginPath(); - context.strokeStyle = config.color; - context.lineWidth = config.lineWidth; - - drawLine(context, startPoint, endPoint, config); - drawVerticalScalebarIntervals(context, config); - - context.stroke(); -} - -function drawHorizontalScalebar(context, config) { - const startPoint = { - x: config.horizontalLine.start.x, - y: config.horizontalLine.start.y - }; - const endPoint = { - x: config.horizontalLine.end.x, - y: config.horizontalLine.end.y - }; - - drawLine(context, startPoint, endPoint, config); - drawHorizontalScalebarIntervals(context, config); -} - -function drawScalebars(context, config){ - context.shadowColor = config.shadowColor; - context.shadowBlur = config.shadowBlur; - context.strokeStyle = config.color; - context.lineWidth = config.lineWidth; - - context.beginPath(); - drawVerticalScalebar(context, config); - drawHorizontalScalebar(context, config); - context.stroke(); -} - -// Computes the max bound for scales on the image -function computeScaleBounds(eventData, canvasSize, imageSize, horizontalReduction, verticalReduction) { - - let canvasBounds = { - left: 0, - top: 0, - width: canvasSize.width, - height: canvasSize.height - }; - - const hReduction = horizontalReduction * Math.min(1000, canvasSize.width); - const vReduction = verticalReduction * Math.min(1000, canvasSize.height); - canvasBounds = { - left: canvasBounds.left + hReduction, - top: canvasBounds.top + vReduction, - width: canvasBounds.width - 2 * hReduction, - height: canvasBounds.height - 2 * vReduction - }; - - return { - topLeft: { - x: canvasBounds.left, - y: canvasBounds.top - }, - bottomRight: { - x: canvasBounds.left + canvasBounds.width, - y: canvasBounds.top + canvasBounds.height - } - }; -} - -function onImageRendered(e) { - const eventData = e.detail; - - // Check whether pixel spacing is defined - if (!eventData.image.rowPixelSpacing || !eventData.image.columnPixelSpacing) { - return; - } - - const viewport = cornerstone.getViewport(eventData.enabledElement.element); - if (!viewport) { - return; - } - - const canvasSize = { - width: eventData.enabledElement.canvas.width, - height: eventData.enabledElement.canvas.height - }; - const imageSize = { - width: eventData.enabledElement.image.width , - height: eventData.enabledElement.image.height - }; - - // Distance between intervals is 10mm - const verticalIntervalScale = (10.0 / eventData.enabledElement.image.rowPixelSpacing) * eventData.viewport.scale; - const horizontalIntervalScale = (10.0 / eventData.enabledElement.image.rowPixelSpacing) * eventData.viewport.scale; - - // 0.1 and 0.05 gives margin to horizontal and vertical lines - const hscaleBounds = computeScaleBounds(eventData, canvasSize, imageSize, 0.25, 0.05); - const vscaleBounds = computeScaleBounds(eventData, canvasSize, imageSize, 0.05, 0.15); - - if (!canvasSize.width || !canvasSize.height || !imageSize.width || !imageSize.height || !hscaleBounds || !vscaleBounds) { - return; - } - - const config = { - hscaleBounds, - vscaleBounds, - verticalMinorTick: verticalIntervalScale, - horizontalMinorTick: horizontalIntervalScale, - minorTickLength: 12.5, - majorTickLength: 25, - verticalLine: { - start: { - x: vscaleBounds.bottomRight.x, - y: vscaleBounds.topLeft.y - }, - end: { - x: vscaleBounds.bottomRight.x, - y: vscaleBounds.bottomRight.y - } - }, - horizontalLine: { - start: { - x: hscaleBounds.topLeft.x, - y: hscaleBounds.bottomRight.y - }, - end: { - x: hscaleBounds.bottomRight.x, - y: hscaleBounds.bottomRight.y - } - }, - ...OHIF.cornerstone.scaleOverlaySettings - }; - - const context = eventData.enabledElement.canvas.getContext('2d'); - context.setTransform(1, 0, 0, 1, 0, 0); - context.save(); - - drawScalebars(context, config); - context.restore(); -} - -///////// END IMAGE RENDERING /////// - -function disable(element) { - // TODO: displayTool does not have cornerstone.updateImage(element) method to hide tool - $(element).off('cornerstoneimagerendered', onImageRendered); - cornerstone.updateImage(element); -} - -// module exports -cornerstoneTools.scaleOverlayTool = cornerstoneTools.displayTool(onImageRendered); -cornerstoneTools.scaleOverlayTool.disable = disable;