our-medical
Version:
medical image vue component
120 lines (119 loc) • 5.74 kB
TypeScript
import { type Types as coreTypes } from '@cornerstonejs/core';
import { AnnotationTool, type Types as toolsTypes } from '@cornerstonejs/tools';
/**
* @description 负责可拖拽元素交互
* @author jiannan.jiao
* @date 21/09/2023
* @class DraggableTool
* @extends {AnnotationDisplayTool}
*/
declare class DraggableTool extends AnnotationTool {
static toolName: string;
constructor(toolProps?: toolsTypes.PublicToolProps, defaultToolProps?: toolsTypes.ToolProps);
/**
* @description 应用于靶点、基准标记点的拖拽添加
* @author jiannan.jiao
* @date 21/09/2023
* @param {toolsTypes.EventTypes.InteractionEventType} evt
* @param {toolsTypes.InteractionTypes} interactionType
* @returns {*} {toolsTypes.Annotation}
* @memberof DraggableTool
*/
addNewAnnotation(evt: toolsTypes.EventTypes.InteractionEventType, interactionType: toolsTypes.InteractionTypes): toolsTypes.Annotation;
/**
* @description
* @author jiannan.jiao
* @date 21/09/2023
* @param {HTMLDivElement} element 记录接收到的参数,勿删
* @memberof DraggableTool
*/
cancel(): void;
/**
* @description 选中一个可拖拽元素
* @author jiannan.jiao
* @date 21/09/2023
* @param {toolsTypes.EventTypes.InteractionEventType} evt
* @param {toolsTypes.Annotation} annotation
* @param {toolsTypes.ToolHandle} handle
* @param {toolsTypes.InteractionTypes} interactionType
* @memberof DraggableTool
*/
handleSelectedCallback(evt: toolsTypes.EventTypes.InteractionEventType, annotation: toolsTypes.Annotation, handle: toolsTypes.ToolHandle, interactionType: toolsTypes.InteractionTypes): void;
/**
* @description
* @author jiannan.jiao
* @date 21/09/2023
* @param {toolsTypes.EventTypes.InteractionEventType} evt
* @param {toolsTypes.Annotation} annotation
* @param {toolsTypes.InteractionTypes} interactionType
* @memberof DraggableTool
*/
toolSelectedCallback(evt: toolsTypes.EventTypes.InteractionEventType, annotation: toolsTypes.Annotation, interactionType: toolsTypes.InteractionTypes): void;
/**
* @description 当鼠标移动执行完getHandleNearImagePoint未找到annotation时执行这里
* 参照AngleTool的实现发现可以用于判断鼠标是否在端点连线上,可用于头框注册
* @author jiannan.jiao
* @date 21/09/2023
* @param {HTMLDivElement} element
* @param {toolsTypes.Annotation} annotation
* @param {coreTypes.Point2} canvasCoords
* @param {number} proximity
* @param {string} interactionType
* @returns {*} {boolean}
* @memberof DraggableTool
*/
isPointNearTool(element: HTMLDivElement, annotation: toolsTypes.Annotation, canvasCoords: coreTypes.Point2, proximity: number, interactionType: string): boolean;
/**
* @description mouseMove.ts和mouseDown.ts中获取鼠标点下Annotations,会获取到视口中全部的Annotations,然后调用对应工具的getHandleNearImagePoint确定是否靠近其中的某个点。
* 需要根据患者原点、影像中心等不同类型控制点绘制的半径执行判断,为设置判断程序的控制点使用父类的getHandleNearImagePoint作为默认处理程序
* @author jiannan.jiao
* @date 21/09/2023
* @param {HTMLDivElement} element
* @param {toolsTypes.Annotation} annotation
* @param {coreTypes.Point2} canvasCoords
* @param {number} proximity 针对浏览器端的默认靠近值为6
* @returns {*}
* @memberof DraggableTool
*/
getHandleNearImagePoint(element: HTMLDivElement, annotation: toolsTypes.Annotation, canvasCoords: coreTypes.Point2, proximity: number): toolsTypes.ToolHandle | undefined;
/**
* @description 父类中定义的抽象方法,这里定义出来防止报错,渲染交给DraggableDisplayTool执行
* @author jiannan.jiao
* @date 21/09/2023
* @param {coreTypes.IEnabledElement} enabledElement 记录接收到的参数,勿删
* @param {toolsTypes.SVGDrawingHelper} svgDrawingHelper 记录接收到的参数,勿删
* @memberof DraggableTool
*/
renderAnnotation(): void;
/**
* @description 监听CORNERSTONE_TOOLS_MOUSE_CLICK事件,当发生时触发CORNERSTONE_TOOLS_MOUSE_UP
* @author jiannan.jiao
* @date 17/10/2023
* @param {toolsTypes.EventTypes.MouseClickEventType} evt
* @memberof DraggableTool
*/
mouseClickCallback: (evt: toolsTypes.EventTypes.MouseClickEventType) => void;
/**
* @description 重写父类的filterInteractableAnnotationsForElement,处理多个可拖拽元素重叠时鼠标点选时选中项与高亮不一致的问题
* @author jiannan.jiao
* @date 13/10/2023
* @param {HTMLDivElement} element
* @param {toolsTypes.Annotations} annotations
* @returns {*} {(toolsTypes.Annotations | undefined)}
* @memberof DraggableTool
* @override
*/
filterInteractableAnnotationsForElement(element: HTMLDivElement, annotations: toolsTypes.Annotations): toolsTypes.Annotations | undefined;
/**
* @description 重写父类的mouseMoveCallback,处理多个可拖拽元素重叠时鼠标移入均会高亮显示的问题
* @author jiannan.jiao
* @date 09/10/2023
* @param {toolsTypes.EventTypes.MouseMoveEventType} evt
* @param {toolsTypes.Annotations} [filteredAnnotations]
* @memberof DraggableTool
* @override
*/
mouseMoveCallback: (evt: toolsTypes.EventTypes.MouseMoveEventType, filteredAnnotations?: toolsTypes.Annotations) => boolean;
private _imagePointNearOrOnline;
}
export default DraggableTool;