detection.dart 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import 'dart:ui';
  2. import 'package:fis_measure/interfaces/process/items/item.dart';
  3. import 'package:fis_measure/interfaces/process/items/item_metas.dart';
  4. import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
  5. import 'package:fis_measure/process/calcuators/detection.dart';
  6. import 'package:fis_measure/process/items/item.dart';
  7. import 'package:fis_measure/utils/canvas.dart';
  8. import '../items/item_feature.dart';
  9. class CarotidDetection extends MeasureItem<CarotidDetectionFeature> {
  10. CarotidDetection(ItemMeta meta, IMeasureItem? parent) : super(meta, parent) {
  11. feature = CarotidDetectionFeature(this);
  12. }
  13. static CarotidDetection createDetectionRect(ItemMeta meta,
  14. [IMeasureItem? parent]) {
  15. CarotidDetection detectionRect = CarotidDetection(meta, parent);
  16. detectionRect.calculator = CarotidDetectionCal(detectionRect, meta.name);
  17. detectionRect.calculator!.calculate();
  18. Future.delayed(const Duration(milliseconds: 500), () {
  19. detectionRect.doFeatureFinish();
  20. });
  21. return detectionRect;
  22. }
  23. @override
  24. bool onExecuteMouse(PointInfo args) {
  25. return true;
  26. }
  27. @override
  28. bool onExecuteTouch(PointInfo args) {
  29. return true;
  30. }
  31. }
  32. class CarotidDetectionFeature extends MeasureItemFeature {
  33. CarotidDetectionFeature(
  34. IMeasureItem refItem,
  35. ) : super(refItem);
  36. List<List<Offset>> offsetsList = [];
  37. List<List<Offset>> scaledOffsetsList = [];
  38. @override
  39. void paint(Canvas canvas, Size size) {
  40. if (offsetsList.isEmpty) return;
  41. drawCustomId(canvas, size, offsetsList[0][0] * refItem.scaleRatio, idText);
  42. scaledOffsetsList = offsetsList.map((e) {
  43. return e.map((e) {
  44. return e * refItem.scaleRatio;
  45. }).toList();
  46. }).toList();
  47. //绘制点集连线
  48. for (var offsets in scaledOffsetsList) {
  49. canvas.drawPointsLine(offsets, paintPan);
  50. }
  51. }
  52. }