stenosis.dart 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import 'package:fis_measure/interfaces/process/calculators/output.dart';
  2. import 'package:fis_measure/interfaces/process/calculators/values.dart';
  3. import 'package:fis_measure/process/calcuators/formulas/general.dart';
  4. import 'package:fis_measure/process/items/item.dart';
  5. import 'package:fis_measure/process/primitives/combos/two_area.dart';
  6. import 'package:fis_measure/process/primitives/combos/two_length.dart';
  7. import 'package:fis_measure/process/primitives/trace.dart';
  8. import 'calculator.dart';
  9. class StenosisCal extends Calculator<TwoLengthAbstract, double> {
  10. StenosisCal(TwoLengthAbstract ref) : super(ref);
  11. @override
  12. void calculate() {
  13. if (ref.feature == null) return;
  14. final a1 = _pickChildValue(ref.child1);
  15. final a2 = _pickChildValue(ref.child2);
  16. final feature = ref.feature!;
  17. final viewport = feature.hostVisualArea!.viewport!;
  18. if (a1 != null && a2 != null) {
  19. final value = GeneralFormulas.countStenosis(
  20. a1,
  21. a2,
  22. );
  23. updateFloatValue(value);
  24. }
  25. }
  26. double? _pickChildValue(MeasureItem item) {
  27. if (item.calculator == null) return null;
  28. ValueBase? value;
  29. if (item.measuredFeatures.isNotEmpty) {
  30. value = item.measuredFeatures.first.value;
  31. } else if (item.feature != null) {
  32. value = item.feature!.value;
  33. }
  34. if (value != null) {
  35. return (value as FloatValue).value ?? 0;
  36. }
  37. return null;
  38. }
  39. }