import 'dart:ui'; import 'package:fis_measure/interfaces/process/items/item.dart'; import 'package:fis_measure/interfaces/process/items/item_metas.dart'; import 'package:fis_measure/interfaces/process/workspace/point_info.dart'; import 'package:fis_measure/process/calcuators/detection.dart'; import 'package:fis_measure/process/items/item.dart'; import 'package:fis_measure/utils/canvas.dart'; import '../items/item_feature.dart'; class CarotidDetection extends MeasureItem { CarotidDetection(ItemMeta meta, IMeasureItem? parent) : super(meta, parent) { feature = CarotidDetectionFeature(this); } static CarotidDetection createDetectionRect(ItemMeta meta, [IMeasureItem? parent]) { CarotidDetection detectionRect = CarotidDetection(meta, parent); detectionRect.calculator = CarotidDetectionCal(detectionRect, meta.name); detectionRect.calculator!.calculate(); Future.delayed(const Duration(milliseconds: 500), () { detectionRect.doFeatureFinish(); }); return detectionRect; } @override bool onExecuteMouse(PointInfo args) { return true; } @override bool onExecuteTouch(PointInfo args) { return true; } } class CarotidDetectionFeature extends MeasureItemFeature { CarotidDetectionFeature( IMeasureItem refItem, ) : super(refItem); List> offsetsList = []; List> scaledOffsetsList = []; @override void paint(Canvas canvas, Size size) { if (offsetsList.isEmpty) return; drawCustomId(canvas, size, offsetsList[0][0] * refItem.scaleRatio, idText); scaledOffsetsList = offsetsList.map((e) { return e.map((e) { return e * refItem.scaleRatio; }).toList(); }).toList(); //绘制点集连线 for (var offsets in scaledOffsetsList) { canvas.drawPointsLine(offsets, paintPan); } } }