import 'package:fis_measure/interfaces/process/calculators/output.dart'; import 'package:fis_measure/interfaces/process/calculators/values.dart'; import 'package:fis_measure/process/calcuators/formulas/general.dart'; import 'package:fis_measure/process/items/item.dart'; import 'package:fis_measure/process/primitives/combos/lwh_straightline.dart'; import 'package:fis_measure/process/primitives/ellipse.dart'; import 'package:fis_measure/process/primitives/straightline.dart'; import 'package:vid/us/vid_us_unit.dart'; import 'calculator.dart'; import 'formulas/obstetrics.dart'; class VolumeThreeDistanceCal extends Calculator { VolumeThreeDistanceCal(LWHStraightLine ref) : super(ref); @override void calculate() { if (ref.feature == null) return; final l = pickChildFloatValue(ref.l); final w = pickChildFloatValue(ref.w); final h = pickChildFloatValue(ref.h); final feature = ref.feature!; final viewport = feature.hostVisualArea!.viewport!; if (l != null && w != null && h != null) { final value = GeneralFormulas.volumeWithCoefficient( l, w, h, GeneralFormulas.VolumeCofficient, ); updateFloatValue(value); } } } class ThreeDistMeanCalculator extends Calculator { ThreeDistMeanCalculator(LWHStraightLine ref) : super(ref); @override void calculate() { if (ref.feature == null) return; final l = pickChildFloatValue(ref.l); final w = pickChildFloatValue(ref.w); final h = pickChildFloatValue(ref.h); if (l != null && w != null && h != null) { final value = ObstetricsFormulas.gsMean(l, w, h); updateFloatValue(value); } } } class ThreeDistMaxCalculator extends Calculator { ThreeDistMaxCalculator(LWHStraightLine ref) : super(ref); @override void calculate() { if (ref.feature == null) return; final l = findChildFeature(ref.l); final w = findChildFeature(ref.w); final h = findChildFeature(ref.h); if (l == null && w == null && h == null) return; double lineL = 0; double lineW = 0; double lineH = 0; if (l != null) lineL = l.value?.pickFloat() ?? 0; if (w != null) lineW = w.value?.pickFloat() ?? 0; if (h != null) lineH = h.value?.pickFloat() ?? 0; double gs = ObstetricsFormulas.gsMax(lineL, lineW, lineH); updateFloatValue(gs, unit: VidUsUnit.cm, useRound: true); } }