import 'package:fis_common/event/event_type.dart'; import 'package:fis_measure/interfaces/enums/annotation.dart'; import 'package:fis_measure/interfaces/enums/operate.dart'; import 'package:fis_measure/interfaces/process/annotations/annotation.dart'; import 'package:fis_measure/interfaces/process/items/item_metas.dart'; import 'package:flutter/painting.dart'; import 'package:vid/us/vid_us_image.dart'; import 'package:vid/us/vid_us_probe.dart'; import '../items/item.dart'; import '../modes/mode.dart'; import '../viewports/viewport.dart'; import '../visuals/visual.dart'; import '../visuals/visual_area.dart'; import 'point_info.dart'; import 'recorder.dart'; /// 测量应用 abstract class IApplication { /// 应用名称 String get applicationName; /// 分类名称 String get categoryName; /// 探头信息 VidUsProbe get probe; /// 是否第三方 bool get isThirdPart; /// 是否是需要自适应的颈动脉2D bool get isAdaptiveCarotid2D; set isAdaptiveCarotid2D(bool value); /// 颈动脉2D图像的尺寸 Size get carotid2DSize; set carotid2DSize(Size value); /// 当前帧 VidUsImage? get frameData; /// 图像幅集合 List get visuals; /// 当前图像幅 IVisual get currentVisual; /// 当前幅图像区域 IVisualArea get currentVisualArea; /// 当前视口 IViewPort get currentViewPort; /// 当前模式 IMode get currentMode; /// 所有Visual下可用模式 List get avaliableModes; /// 当前测量操作模式 MeasureOperateType get currentOperateType; /// 当前是否可测量 bool get canMeasure; set canMeasure(bool value); /// 活动测量项 IMeasureItem? get activeMeasureItem; /// 活动注释项 IAnnotationItem? get activeAnnotationItem; /// 测量项集合 Set get measureItems; /// 注释项集合 Set get annotationItems; /// 测量记录器 IMeasureRecorder get recorder; /// 显示尺寸 Size get displaySize; set displaySize(Size value); /// 显示缩放比例 double get displayScaleRatio; /// 当前模式变化事件 late final FEventHandler currentModeChanged; /// 图像幅区域变化事件 late final FEventHandler visualAreaChanged; /// 是否可测量状态变更事件 late final FEventHandler canMeasureChanged; /// 活动测量项变更事件 late final FEventHandler activeMeasureItemChanged; /// 活动注释项变更事件 late final FEventHandler activeAnnotationItemChanged; /// 准备重新渲染画布 late final FEventHandler updateRenderReady; /// 测量操作类型变更事件 late final FEventHandler operateTypeChanged; /// visual数据加载完成事件 late final FEventHandler visualsLoaded; /// 加载帧 /// /// [frame] vid单帧数据 void loadFrame(VidUsImage frame); /// 转换为相对坐标点(百分比:0-1) /// /// [offset] 坐标位置 /// /// [type] 点类型 PointInfo createPointInfo(Offset offset, PointInfoType type); /// 根据名称切换测量项 /// /// [name] 测量项名称 void switchItemByName(String name); /// 切换测量项 void switchItem(ItemMeta meta); /// 切换注释 /// /// [type] 注释类型 /// /// [text] 文本 void switchAnnotation([AnnotationType? type, String? text]); /// 切换模式 void switchMode(String name); /// 切换幅 void switchVisual(int indicator); /// 撤回一次操作记录 void undoRecord(); /// 清除所有操作记录 void clearRecords(); }