lwh_straightline.dart 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import 'dart:ui';
  2. import 'package:fis_measure/interfaces/process/items/item.dart';
  3. import 'package:fis_measure/interfaces/process/items/item_metas.dart';
  4. import 'package:fis_measure/interfaces/process/items/types.dart';
  5. import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
  6. import 'package:fis_measure/process/calcuators/three_distance.dart';
  7. import 'package:fis_measure/process/items/item_feature.dart';
  8. import 'package:fis_measure/process/items/top_item.dart';
  9. import 'package:fis_measure/process/items/top_item_feature.dart';
  10. import 'package:fis_measure/process/primitives/straightline.dart';
  11. class LWHStraightLine extends TopMeasureItem<LWHStraightlineFeature> {
  12. static const String _lineLKey = "L";
  13. static const String _lineWKey = "W";
  14. static const String _lineHKey = "H";
  15. late final StraightLine l;
  16. late final StraightLine w;
  17. late final StraightLine h;
  18. LWHStraightLine(ItemMeta meta) : super(meta) {
  19. final metaL = meta.getChildByName(_lineLKey)!;
  20. final metaH = meta.getChildByName(_lineHKey)!;
  21. final metaW = meta.getChildByName(_lineWKey)!;
  22. l = StraightLine.createDistance(metaL, this);
  23. w = StraightLine.createDistance(metaW, this);
  24. h = StraightLine.createDistance(metaH, this);
  25. childItems.add(l);
  26. childItems.add(w);
  27. childItems.add(h);
  28. }
  29. @override
  30. bool onExecuteMouse(PointInfo args) {
  31. if (args.pointType == PointInfoType.mouseDown) {
  32. if (feature == null) {
  33. feature = LWHStraightlineFeature(this);
  34. listenChildrenUpdate();
  35. }
  36. if (childrenAllDone) {
  37. workingChild.clear();
  38. }
  39. }
  40. feature?.hostVisualArea = args.hostVisualArea;
  41. final result = workingChild.execute(args);
  42. if (result) {
  43. doCalculate();
  44. }
  45. return result;
  46. }
  47. @override
  48. bool onExecuteTouch(PointInfo args) {
  49. return workingChild.execute(args);
  50. }
  51. @override
  52. void onCancelingOnce() {}
  53. //ThreeDistMeanCalculator
  54. static LWHStraightLine createVolume(ItemMeta meta, [IMeasureItem? parent]) {
  55. if (meta.measureType != MeasureTypes.VolumeThreeDistance) {
  56. throw ArgumentError();
  57. }
  58. var lwh = LWHStraightLine(meta);
  59. lwh.calculator = VolumeThreeDistanceCal(lwh);
  60. return lwh;
  61. }
  62. static LWHStraightLine createMean(ItemMeta meta, [IMeasureItem? parent]) {
  63. if (meta.measureType != MeasureTypes.ThreeDistanceMean) {
  64. throw ArgumentError();
  65. }
  66. var lwh = LWHStraightLine(meta);
  67. lwh.calculator = ThreeDistMeanCalculator(lwh);
  68. return lwh;
  69. }
  70. static LWHStraightLine createMax(ItemMeta meta, [IMeasureItem? parent]) {
  71. var lwh = LWHStraightLine(meta);
  72. lwh.calculator = ThreeDistMaxCalculator(lwh);
  73. return lwh;
  74. }
  75. }
  76. class LWHStraightlineFeature extends TopMeasureItemFeature {
  77. LWHStraightlineFeature(
  78. ITopMeasureItem refItem,
  79. ) : super(refItem);
  80. }