lv_test.dart 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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/items/types.dart';
  5. import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
  6. import 'package:fis_measure/process/calcuators/a_b_ratio.dart';
  7. import 'package:fis_measure/process/calcuators/calculator.dart';
  8. import 'package:fis_measure/process/calcuators/stenosis.dart';
  9. import 'package:fis_measure/process/calcuators/three_distance.dart';
  10. import 'package:fis_measure/process/calcuators/two_distance.dart';
  11. import 'package:fis_measure/process/items/item_feature.dart';
  12. import 'package:fis_measure/process/items/top_item.dart';
  13. import 'package:fis_measure/process/items/top_item_feature.dart';
  14. import 'package:fis_measure/process/primitives/straightline.dart';
  15. import 'package:fis_measure/process/primitives/trace.dart';
  16. import 'two_length.dart';
  17. class LvTest extends TwoLengthAbstract<LvTestFeature> {
  18. static const String _area1Key = "D1";
  19. static const String _area2Key = "D2";
  20. late final StraightLine a1;
  21. late final StraightLine a2;
  22. LvTest(ItemMeta meta) : super(meta) {
  23. final metaA1 = meta.getChildByName(_area1Key)!;
  24. final metaA2 = meta.getChildByName(_area2Key)!;
  25. a1 = StraightLine.createDistance(metaA1, this);
  26. a2 = StraightLine.createDistance(metaA2, this);
  27. childItems.add(a1);
  28. childItems.add(a2);
  29. }
  30. @override
  31. StraightLine get child1 => a1;
  32. @override
  33. StraightLine get child2 => a2;
  34. @override
  35. bool get isMultiFrameMode => true;
  36. @override
  37. LvTestFeature buildFeature() => LvTestFeature(this);
  38. @override
  39. void onCancelingOnce() {}
  40. static LvTest crateTest(ItemMeta meta, [IMeasureItem? parent]) {
  41. var instance = LvTest(meta);
  42. instance.calculator = _TestTwoDistanceSumCal(instance);
  43. return instance;
  44. }
  45. }
  46. class LvTestFeature extends TopMeasureItemFeature {
  47. LvTestFeature(
  48. ITopMeasureItem refItem,
  49. ) : super(refItem);
  50. }
  51. class _TestTwoDistanceSumCal extends Calculator<LvTest, double> {
  52. _TestTwoDistanceSumCal(LvTest ref) : super(ref);
  53. @override
  54. void calculate() {
  55. if (ref.feature == null) return;
  56. final f1 = findChildFeature(ref.child1);
  57. final f2 = findChildFeature(ref.child2);
  58. if (f1 == null || f2 == null) return;
  59. final feature = ref.feature!;
  60. final val1 = f1.value?.pickFloat() ?? 0;
  61. final val2 = f2.value?.pickFloat() ?? 0;
  62. final outputMeta = ref.meta.outputs.first;
  63. double avg = (val1 + val2) / 2;
  64. feature.updateFloatValue(outputMeta, avg, outputMeta.unit);
  65. }
  66. }