our-medical
Version:
medical image vue component
119 lines (118 loc) • 4.74 kB
TypeScript
import { BaseTool } from '@cornerstonejs/tools';
import type { Types as coreTypes } from '@cornerstonejs/core';
import type { Types as toolsTypes } from '@cornerstonejs/tools';
/**
* @description
* @author jiannan.jiao
* @date 12/12/2023
* @export
* @class ContourDeleteTool
* @extends {BaseTool}
*/
export default class ContourDeleteTool extends BaseTool {
static toolName: string;
/** @description 用于对Shape进行scaleUp的参数 */
static SCALE_FACTOR: number;
/** @description actived体积颜色 */
private color;
/** @description 待删除轮廓在shape中的下标 */
private delIndex;
/** @description 鼠标停留视口DIV */
private hoverElement;
/** @description 视口方向上的全部轮廓2D数据(world坐标系), 仅包含视口XY方向上的world坐标 */
private pathsWorld2D;
/** @description 视口方向上的全部轮廓3D数据(world坐标系) */
private pathsWorld3D;
/** @description 鼠标点坐标(world坐标系) */
private mousePt;
/** @description 轮廓上距离鼠标最近点坐标(world坐标系) */
private nearestPt;
/** @description 保存视口DIV上绑定的切层时新图像加载事件监听 */
private newImageHandlers;
/** @description 保存视口DIV上绑定的mouseleave事件监听 */
private mouseleaveHandlers;
constructor(toolProps?: toolsTypes.PublicToolProps, defaultToolProps?: toolsTypes.ToolProps);
onSetToolDisabled(): void;
/**
* @description mouseWheelCallback会在customeCallbackHandler中被调用,多个工具监听时仅第一个会被触发(一般情况下StackScrollMouseWheelTool工具会占用改事件)
* 这里添加视口对图层变换的监听, 切换图层后清空临近轮廓数据
* @author jiannan.jiao
* @date 12/12/2023
* @private
* @param {HTMLDivElement} element
* @memberof ContourDeleteTool
*/
private bindNewImage;
/**
* @description 绑定mouseleave监听, 鼠标移出时清除鼠标至轮廓上的连线
* @author jiannan.jiao
* @date 14/12/2023
* @private
* @param {HTMLDivElement} element
* @memberof ContourDeleteTool
*/
private bindMouseleave;
/**
* @description
* @author jiannan.jiao
* @date 12/12/2023
* @param {toolsTypes.EventTypes.MouseMoveEventType} evt
* @memberof ContourDeleteTool
*/
mouseMoveCallback(evt: toolsTypes.EventTypes.MouseMoveEventType): void;
/**
* @description 鼠标按下时如果存在临近轮廓, 将轮廓区域填充为0
* @author jiannan.jiao
* @date 13/12/2023
* @param {toolsTypes.EventTypes.MouseDownEventType} evt
* @returns {*}
* @memberof ContourDeleteTool
*/
preMouseDownCallback(evt: toolsTypes.EventTypes.MouseDownEventType): true | undefined;
/**
* @description 将待删除轮廓路径外接矩形范围内的voxel填充为0
* 再将外接矩形范围内属于其他轮廓的voxel重新填充
* @author jiannan.jiao
* @date 14/12/2023
* @param {coreTypes.IImageVolume} volume
* @param {string} segmentationId
* @param {number} segmentIndex
* @memberof ContourDeleteTool
*/
modifySegmentationFill(volume: coreTypes.IImageVolume, segmentationId: string, segmentIndex: number): void;
/**
* @description 获取当前层segmentation的勾画轮廓(world坐标系)
* @author jiannan.jiao
* @date 12/12/2023
* @param {coreTypes.IViewport} viewport
* @param {string} segmentationId
* @returns {*}
* @memberof ContourDeleteTool
*/
getSliceContourPaths(viewport: coreTypes.IViewport, segmentationId: string): {
paths2D: coreTypes.Point2[][];
paths3D: coreTypes.Point3[][];
xyzIndex: number[];
};
/**
* @description 获取paths中距离point的最近点并设置到鼠标与轮廓连线的渲染依赖中
* @author jiannan.jiao
* @date 14/12/2023
* @param {HTMLDivElement} element
* @param {coreTypes.Point2[][]} paths
* @param {(coreTypes.Point3 | null)} point
* @param {number[]} xyzIndex
* @memberof ContourDeleteTool
*/
setRenderReference(element: HTMLDivElement, paths: coreTypes.Point2[][], //world
point: coreTypes.Point3 | null, xyzIndex: number[]): void;
/**
* @description
* @author jiannan.jiao
* @date 12/12/2023
* @param {coreTypes.IEnabledElement} enabledElement
* @param {toolsTypes.SVGDrawingHelper} svgDrawingHelper
* @memberof ContourDeleteTool
*/
renderAnnotation(enabledElement: coreTypes.IEnabledElement, svgDrawingHelper: toolsTypes.SVGDrawingHelper): void;
}