94 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
import * as cornerstoneTools from '@cornerstonejs/tools'
 | 
						|
const {
 | 
						|
  utilities
 | 
						|
 | 
						|
} = cornerstoneTools
 | 
						|
 | 
						|
const { roundNumber } = utilities
 | 
						|
 | 
						|
class CircleROITool extends cornerstoneTools.CircleROITool {
 | 
						|
  // static toolName;
 | 
						|
  // touchDragCallback: any;
 | 
						|
  // mouseDragCallback: any;
 | 
						|
  // _throttledCalculateCachedStats: any;
 | 
						|
  // editData: {
 | 
						|
  //   annotation: any;
 | 
						|
  //   viewportIdsToRender: Array<string>;
 | 
						|
  //   handleIndex?: number;
 | 
						|
  //   movingTextBox?: boolean;
 | 
						|
  //   newAnnotation?: boolean;
 | 
						|
  //   hasMoved?: boolean;
 | 
						|
  // } | null;
 | 
						|
  // isDrawing: boolean;
 | 
						|
  // isHandleOutsideImage = false;
 | 
						|
 | 
						|
  constructor(
 | 
						|
    toolProps = {},
 | 
						|
    defaultToolProps = {
 | 
						|
      supportedInteractionTypes: ['Mouse', 'Touch'],
 | 
						|
      configuration: {
 | 
						|
        shadow: true,
 | 
						|
        preventHandleOutsideImage: false,
 | 
						|
        centerPointRadius: 0
 | 
						|
      }
 | 
						|
    }
 | 
						|
  ) {
 | 
						|
    super(toolProps, defaultToolProps)
 | 
						|
 | 
						|
    // this._throttledCalculateCachedStats = utilities.throttle(
 | 
						|
    //   this._calculateCachedStats,
 | 
						|
    //   100,
 | 
						|
    //   { trailing: true }
 | 
						|
    // )
 | 
						|
    this._getTextLines = this.getTextLines
 | 
						|
  }
 | 
						|
  getTextLines(data, targetId) {
 | 
						|
    const cachedVolumeStats = data.cachedStats[targetId]
 | 
						|
    const {
 | 
						|
      radius,
 | 
						|
      radiusUnit,
 | 
						|
      area,
 | 
						|
      mean,
 | 
						|
      stdDev,
 | 
						|
      max,
 | 
						|
      isEmptyArea,
 | 
						|
      areaUnit,
 | 
						|
      modalityUnit
 | 
						|
    } = cachedVolumeStats
 | 
						|
    // console.log(data)
 | 
						|
    const textLines = []
 | 
						|
 | 
						|
    if (radius) {
 | 
						|
      const radiusLine = isEmptyArea
 | 
						|
        ? `Radius: Oblique not supported`
 | 
						|
        : `Radius: ${roundNumber(radius)} ${radiusUnit}`
 | 
						|
      textLines.push(radiusLine)
 | 
						|
    }
 | 
						|
 | 
						|
    if (area) {
 | 
						|
      const areaLine = isEmptyArea
 | 
						|
        ? `Area: Oblique not supported`
 | 
						|
        : `Area: ${roundNumber(area)} ${areaUnit}`
 | 
						|
      textLines.push(areaLine)
 | 
						|
    }
 | 
						|
 | 
						|
    if (mean) {
 | 
						|
      textLines.push(`Mean: ${roundNumber(mean)} ${modalityUnit}`)
 | 
						|
    }
 | 
						|
 | 
						|
    if (max) {
 | 
						|
      textLines.push(`Max: ${roundNumber(max)} ${modalityUnit}`)
 | 
						|
    }
 | 
						|
 | 
						|
    if (stdDev) {
 | 
						|
      textLines.push(`Std Dev: ${roundNumber(stdDev)} ${modalityUnit}`)
 | 
						|
    }
 | 
						|
 | 
						|
    return textLines
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
CircleROITool.toolName = 'CircleROI'
 | 
						|
export default CircleROITool
 | 
						|
 |