UNPKG

our-medical

Version:

medical image vue component

119 lines (118 loc) 4.74 kB
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; }