two_straightline.dart 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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/process/calcuators/a_b_ratio.dart';
  4. import 'package:fis_measure/process/calcuators/stenosis.dart';
  5. import 'package:fis_measure/process/calcuators/tei_index.dart';
  6. import 'package:fis_measure/process/calcuators/two_distance.dart';
  7. import 'package:fis_measure/process/items/top_item_feature.dart';
  8. import 'package:fis_measure/process/primitives/straightline.dart';
  9. import 'two_length.dart';
  10. class TwoStraightLine extends TwoLengthAbstract<TwoStraightLineFeature> {
  11. late final StraightLine x;
  12. late final StraightLine y;
  13. final bool ifVertical;
  14. final bool ifTimeSpan;
  15. TwoStraightLine(ItemMeta meta,
  16. {this.ifVertical = false, this.ifTimeSpan = false})
  17. : super(meta) {
  18. final metaX = meta.childItems[0];
  19. final metaY = meta.childItems[1];
  20. if (ifVertical) {
  21. x = StraightLine.createVerticalDistance(metaX, this);
  22. y = StraightLine.createVerticalDistance(metaY, this);
  23. } else if (ifTimeSpan) {
  24. x = StraightLine.createTimeSpan(metaX, this);
  25. y = StraightLine.createTimeSpan(metaY, this);
  26. } else {
  27. x = StraightLine.createDistance(metaX, this);
  28. y = StraightLine.createDistance(metaY, this);
  29. }
  30. childItems.add(x);
  31. childItems.add(y);
  32. }
  33. @override
  34. StraightLine get child1 => x;
  35. @override
  36. StraightLine get child2 => y;
  37. @override
  38. TwoStraightLineFeature buildFeature() => TwoStraightLineFeature(this);
  39. @override
  40. void onCancelingOnce() {}
  41. static TwoStraightLine createTwoDistanceBase(ItemMeta meta,
  42. [IMeasureItem? parent]) {
  43. var twoStraightline = TwoStraightLine(meta);
  44. twoStraightline.calculator = TwoDistanceCalBase(twoStraightline);
  45. return twoStraightline;
  46. }
  47. static TwoStraightLine createRUV(ItemMeta meta, [IMeasureItem? parent]) {
  48. var twoStraightline = TwoStraightLine(meta);
  49. twoStraightline.calculator = ResidualUrineCal(twoStraightline);
  50. return twoStraightline;
  51. }
  52. static TwoStraightLine createAbRatioDistance(ItemMeta meta,
  53. [IMeasureItem? parent]) {
  54. TwoStraightLine twoStraightline = TwoStraightLine(meta);
  55. twoStraightline.calculator = ABRatioCal(twoStraightline);
  56. return twoStraightline;
  57. }
  58. static TwoStraightLine createStenosisTwoDistance(ItemMeta meta,
  59. [IMeasureItem? parent]) {
  60. var twoStraightline = TwoStraightLine(meta);
  61. twoStraightline.calculator = StenosisCal(twoStraightline);
  62. return twoStraightline;
  63. }
  64. static TwoStraightLine createStenosisTwoVerticalDistance(ItemMeta meta,
  65. [IMeasureItem? parent]) {
  66. var twoStraightline = TwoStraightLine(meta, ifVertical: true);
  67. twoStraightline.calculator = StenosisCal(twoStraightline);
  68. return twoStraightline;
  69. }
  70. static TwoStraightLine createAbRatioTwoVerticalDistance(ItemMeta meta,
  71. [IMeasureItem? parent]) {
  72. var twoStraightline = TwoStraightLine(meta, ifVertical: true);
  73. twoStraightline.calculator = ABRatioCal(twoStraightline);
  74. return twoStraightline;
  75. }
  76. static TwoStraightLine createAbRatioTwoTimeSpan(ItemMeta meta,
  77. [IMeasureItem? parent]) {
  78. var twoStraightline = TwoStraightLine(meta, ifTimeSpan: true);
  79. twoStraightline.calculator = ABRatioCal(twoStraightline);
  80. return twoStraightline;
  81. }
  82. static TwoStraightLine createAbRatioSlope(ItemMeta meta,
  83. [IMeasureItem? parent]) {
  84. var twoStraightline = TwoStraightLine(meta, ifTimeSpan: false);
  85. twoStraightline.calculator = ABRatioCal(twoStraightline);
  86. return twoStraightline;
  87. }
  88. static TwoStraightLine createTeiIndex(ItemMeta meta, [IMeasureItem? parent]) {
  89. var twoStraightline = TwoStraightLine(meta, ifTimeSpan: true);
  90. twoStraightline.calculator = TeiIndexCal(twoStraightline);
  91. return twoStraightline;
  92. }
  93. static TwoStraightLine createVolume(ItemMeta meta, [IMeasureItem? parent]) {
  94. var twoStraightline = TwoStraightLine(meta);
  95. twoStraightline.calculator = TwoDistanceVolumeCal(twoStraightline);
  96. return twoStraightline;
  97. }
  98. static TwoStraightLine createTwoDistanceAverage(ItemMeta meta,
  99. [IMeasureItem? parent]) {
  100. var twoStraightline = TwoStraightLine(meta);
  101. twoStraightline.calculator = TwoDistanceSumCal(twoStraightline);
  102. return twoStraightline;
  103. }
  104. static TwoStraightLine createAngle(ItemMeta meta, [IMeasureItem? parent]) {
  105. var twoStraightline = TwoStraightLine(meta);
  106. twoStraightline.calculator = TwoStraightLineAngleCal(twoStraightline);
  107. return twoStraightline;
  108. }
  109. static TwoStraightLine createEfTeich(ItemMeta meta, [IMeasureItem? parent]) {
  110. var twoStraightline = TwoStraightLine(meta);
  111. twoStraightline.calculator = EfTeichCal(twoStraightline);
  112. return twoStraightline;
  113. }
  114. static TwoStraightLine createIvsThck(ItemMeta meta, [IMeasureItem? parent]) {
  115. var twoStraightline = TwoStraightLine(meta);
  116. twoStraightline.calculator = IvsThckCal(twoStraightline);
  117. return twoStraightline;
  118. }
  119. static TwoStraightLine createRvStudy(ItemMeta meta, [IMeasureItem? parent]) {
  120. var twoStraightline = TwoStraightLine(meta);
  121. twoStraightline.calculator = RvStudyCal(twoStraightline);
  122. return twoStraightline;
  123. }
  124. }
  125. class TwoStraightLineFeature extends TopMeasureItemFeature {
  126. TwoStraightLineFeature(
  127. ITopMeasureItem refItem,
  128. ) : super(refItem);
  129. }