diff --git a/src/components/Dicom/DicomCanvas.vue b/src/components/Dicom/DicomCanvas.vue index 24cce9e1..8733c5db 100644 --- a/src/components/Dicom/DicomCanvas.vue +++ b/src/components/Dicom/DicomCanvas.vue @@ -108,6 +108,8 @@ import invertOrientationString from '@/views/trials/trials-panel/reading/dicoms/ import calculateSUV from '@/views/trials/trials-panel/reading/dicoms/tools/calculateSUV' // import requestPoolManager from '@/utils/request-pool' import ScaleOverlayTool from '@/views/trials/trials-panel/reading/dicoms/tools/ScaleOverlay/ScaleOverlayTool' +import RectangleRoiTool from '@/views/trials/trials-panel/reading/dicoms/tools/RectangleRoi/RectangleRoiTool' +import EllipticalRoiTool from '@/views/trials/trials-panel/reading/dicoms/tools/EllipticalRoi/EllipticalRoiTool' cornerstoneTools.external.cornerstone = cornerstone cornerstoneTools.external.Hammer = Hammer cornerstoneTools.external.cornerstoneMath = cornerstoneMath @@ -262,7 +264,13 @@ export default { apiTool ) if (!toolAlreadyAddedToElement) { - cornerstoneTools.addToolForElement(element, apiTool) + if (toolName === 'RectangleRoi') { + cornerstoneTools.addToolForElement(element, apiTool, { configuration: { showMinMax: true, showStatsText: true}}) + } else if (toolName === 'EllipticalRoi') { + cornerstoneTools.addToolForElement(element, apiTool, { configuration: { showMinMax: true}}) + } else { + cornerstoneTools.addToolForElement(element, apiTool) + } } } // Setup button listener @@ -322,7 +330,7 @@ export default { // cornerstoneTools.addStackStateManager(this.canvas, ['stack', 'stackPrefetch', 'playClip']) cornerstoneTools.addToolState(this.canvas, 'stack', this.stack) // cornerstoneTools.stackPrefetch.enable(this.canvas) - cornerstone.updateImage(element, true) + cornerstone.updateImage(element, true) // cornerstoneTools.stackPrefetch.setConfiguration({ maxImagesToPrefetch: Infinity, // preserveExistingPool: true }) // cornerstoneTools.stackPrefetch.enable(this.canvas) diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/RectangleRoi/RectangleRoiTool.js b/src/views/trials/trials-panel/reading/dicoms/tools/RectangleRoi/RectangleRoiTool.js index 6a201329..99b942c5 100644 --- a/src/views/trials/trials-panel/reading/dicoms/tools/RectangleRoi/RectangleRoiTool.js +++ b/src/views/trials/trials-panel/reading/dicoms/tools/RectangleRoi/RectangleRoiTool.js @@ -40,7 +40,8 @@ export default class RectangleRoiTool extends cornerstoneTools.RectangleRoiTool drawHandles: true, drawHandlesOnHover: false, hideHandlesIfMoving: false, - renderDashed: false + renderDashed: false, + showStatsText: false // showMinMax: false, // showHounsfieldUnits: true }, @@ -531,12 +532,15 @@ function _createTextBoxContent( minString += ' ' } - otherLines.push(`${minString}${maxString}`) + otherLines.push(`${minString}`) + otherLines.push(`${maxString}`) } } - - // textLines.push(_formatArea(area, hasPixelSpacing)) - // otherLines.forEach(x => textLines.push(x)) + if (options.showStatsText) { + textLines.push(_formatArea(area, hasPixelSpacing)) + otherLines.forEach(x => textLines.push(x)) + } + if (data.hasOwnProperty('remark')) { if (data.hasOwnProperty('status') && data.status) { textLines.push(`${data.remark}(${data.status})`) @@ -546,3 +550,11 @@ function _createTextBoxContent( } return textLines } +function _formatArea(area, hasPixelSpacing) { + // This uses Char code 178 for a superscript 2 + const suffix = hasPixelSpacing + ? ` mm${String.fromCharCode(178)}` + : ` px${String.fromCharCode(178)}`; + + return `Area: ${numbersWithCommas(area.toFixed(2))}${suffix}`; +}