lwh_straightline.dart 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. doCalculate();
  43. return result;
  44. }
  45. @override
  46. bool onExecuteTouch(PointInfo args) {
  47. return workingChild.execute(args);
  48. }
  49. @override
  50. void onCancelingOnce() {}
  51. //ThreeDistMeanCalculator
  52. static LWHStraightLine createVolume(ItemMeta meta, [IMeasureItem? parent]) {
  53. if (meta.measureType != MeasureTypes.VolumeThreeDistance) {
  54. throw ArgumentError();
  55. }
  56. var lwh = LWHStraightLine(meta);
  57. lwh.calculator = VolumeThreeDistanceCal(lwh);
  58. return lwh;
  59. }
  60. static LWHStraightLine createMean(ItemMeta meta, [IMeasureItem? parent]) {
  61. if (meta.measureType != MeasureTypes.ThreeDistanceMean) {
  62. throw ArgumentError();
  63. }
  64. var lwh = LWHStraightLine(meta);
  65. lwh.calculator = ThreeDistMeanCalculator(lwh);
  66. return lwh;
  67. }
  68. }
  69. class LWHStraightlineFeature extends TopMeasureItemFeature {
  70. LWHStraightlineFeature(
  71. ITopMeasureItem refItem,
  72. ) : super(refItem);
  73. }