103 lines
2.5 KiB
Plaintext
103 lines
2.5 KiB
Plaintext
import * as cornerstoneTools from '@cornerstonejs/tools'
|
|
const {
|
|
utilities
|
|
|
|
} = cornerstoneTools
|
|
|
|
const { roundNumber,BasicStatsCalculator } = utilities
|
|
console.log(BasicStatsCalculator)
|
|
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
|
|
shadow: true,
|
|
preventHandleOutsideImage: false,
|
|
// Radius of the circle to draw at the center point of the circle.
|
|
// Set this zero(0) in order not to draw the circle.
|
|
centerPointRadius: 0,
|
|
getTextLines: defaultGetTextLines,
|
|
// statsCalculator: BasicStatsCalculator,
|
|
}
|
|
}
|
|
) {
|
|
super(toolProps, defaultToolProps)
|
|
|
|
// this._throttledCalculateCachedStats = utilities.throttle(
|
|
// this._calculateCachedStats,
|
|
// 100,
|
|
// { trailing: true }
|
|
// )
|
|
// this._getTextLines = this.getTextLines
|
|
}
|
|
|
|
}
|
|
function defaultGetTextLines(data, targetId) {
|
|
const cachedVolumeStats = data.cachedStats[targetId];
|
|
const {
|
|
radius,
|
|
radiusUnit,
|
|
area,
|
|
mean,
|
|
stdDev,
|
|
max,
|
|
isEmptyArea,
|
|
Modality,
|
|
areaUnit,
|
|
modalityUnit,
|
|
} = cachedVolumeStats;
|
|
|
|
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
|
|
|