UNPKG

our-medical

Version:

medical image vue component

120 lines (119 loc) 5.74 kB
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;