lv_study.dart 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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/types.dart';
  4. import 'package:fis_measure/process/calcuators/lv_study.dart';
  5. import 'package:fis_measure/process/items/top_item.dart';
  6. import 'package:fis_measure/process/items/top_item_feature.dart';
  7. import 'package:fis_measure/process/primitives/straightline.dart';
  8. class LvStudy extends TopMeasureItem<StraightLineGroupFeature> {
  9. final bool ifVertical;
  10. final bool ifTimeSpan;
  11. LvStudy(ItemMeta meta, {this.ifVertical = false, this.ifTimeSpan = false})
  12. : super(meta) {
  13. for (final childMeta in meta.childItems) {
  14. IMeasureItem childItem;
  15. if (ifVertical) {
  16. childItem = StraightLine.createVerticalDistance(childMeta, this);
  17. } else if (ifTimeSpan) {
  18. childItem = StraightLine.createTimeSpan(childMeta, this);
  19. } else {
  20. childItem = StraightLine.createDistance(childMeta, this);
  21. }
  22. childItems.add(childItem);
  23. }
  24. }
  25. @override
  26. bool get finishAfterUnactive => true;
  27. @override
  28. bool get isCrossFrameMode => true;
  29. @override
  30. StraightLineGroupFeature buildFeature() => StraightLineGroupFeature(this);
  31. static LvStudy createLvStudyByLineGroup(ItemMeta meta,
  32. [IMeasureItem? parent]) {
  33. if (meta.measureType != MeasureTypes.LvStudyByLineGroupTissue) {
  34. throw ArgumentError();
  35. }
  36. var ins = LvStudy(meta);
  37. ins.calculator = LvStudyDistanceGroupCal(ins);
  38. return ins;
  39. }
  40. static LvStudy createLvSimpleTissue(ItemMeta meta, [IMeasureItem? parent]) {
  41. var ins = LvStudy(meta);
  42. ins.calculator = LvStudySimpleCal(ins);
  43. return ins;
  44. }
  45. static LvStudy createLvSimpleTissueTm(ItemMeta meta, [IMeasureItem? parent]) {
  46. var ins = LvStudy(
  47. meta,
  48. ifTimeSpan: true,
  49. ifVertical: true,
  50. );
  51. ins.calculator = LvStudySimpleCal(ins);
  52. return ins;
  53. }
  54. }
  55. class StraightLineGroupFeature extends TopMeasureItemFeature {
  56. StraightLineGroupFeature(
  57. ITopMeasureItem refItem,
  58. ) : super(refItem);
  59. }