lv_mass.dart 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import 'package:fis_measure/interfaces/process/items/item.dart';
  2. import 'package:fis_measure/interfaces/process/items/item_metas.dart';
  3. import 'package:fis_measure/interfaces/process/items/terms.dart';
  4. import 'package:fis_measure/interfaces/process/items/types.dart';
  5. import 'package:fis_measure/process/calcuators/lv_mass.dart';
  6. import 'package:fis_measure/process/items/top_item.dart';
  7. import 'package:fis_measure/process/items/top_item_feature.dart';
  8. import 'package:fis_measure/process/primitives/straightline.dart';
  9. import 'package:fis_measure/process/primitives/trace.dart';
  10. class LVMass extends TopMeasureItem<LVMassFeature> {
  11. static const String _lvdEpiLKey = MeasureTerms.EpiLVAd;
  12. static const String _lvdEndoKey = MeasureTerms.EndoVLAd;
  13. static const String _lvldKey = MeasureTerms.LVLd;
  14. late final Trace epi;
  15. late final Trace endo;
  16. late final StraightLine l;
  17. LVMass(ItemMeta meta) : super(meta) {
  18. final metaEpi = meta.getChildByName(_lvdEpiLKey)!;
  19. final metaEndo = meta.getChildByName(_lvdEndoKey)!;
  20. final metaL = meta.getChildByName(_lvldKey)!;
  21. epi = Trace.createAreaPerimeter(metaEpi, this);
  22. endo = Trace.createAreaPerimeter(metaEndo, this);
  23. l = StraightLine.createDistance(metaL, this);
  24. childItems.add(epi);
  25. childItems.add(endo);
  26. childItems.add(l);
  27. isCrossAreaMode = true;
  28. }
  29. @override
  30. bool get finishAfterUnactive => true;
  31. @override
  32. LVMassFeature buildFeature() => LVMassFeature(this);
  33. static LVMass createLVdMass(ItemMeta meta, [IMeasureItem? parent]) {
  34. var ins = LVMass(meta);
  35. ins.calculator = LvdMassALCal(ins);
  36. return ins;
  37. }
  38. }
  39. class LVMassFeature extends TopMeasureItemFeature {
  40. LVMassFeature(super.refItem);
  41. }