area_straightline.dart 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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/interfaces/process/workspace/point_info.dart';
  5. import 'package:fis_measure/process/calcuators/calculator.dart';
  6. import 'package:fis_measure/process/items/factory.dart';
  7. import 'package:fis_measure/process/items/top_item.dart';
  8. import 'package:fis_measure/process/items/top_item_feature.dart';
  9. import 'package:fis_measure/process/primitives/curve_abstract.dart';
  10. import 'package:fis_measure/process/primitives/straightline.dart';
  11. class AreaStraightLine extends TopMeasureItem<AreaStraightLineFeature> {
  12. late final CurveAbstract area;
  13. late final StraightLine line;
  14. AreaStraightLine(ItemMeta meta) : super(meta) {
  15. final metaArea = meta.childItems.firstWhere(
  16. (e) => e.measureType.startsWith(MeasureTypes.AreaPerimeter));
  17. final metaLine = meta.getChildByType(MeasureTypes.Distance)!;
  18. area = MeasureItemFactory.createItem(metaArea, this) as CurveAbstract;
  19. line = StraightLine.createDistance(metaLine, this);
  20. childItems.add(area);
  21. childItems.add(line);
  22. }
  23. @override
  24. bool onExecuteMouse(PointInfo args) {
  25. if (args.pointType == PointInfoType.mouseDown) {
  26. if (feature == null) {
  27. feature = AreaStraightLineFeature(this);
  28. listenChildrenUpdate();
  29. }
  30. if (childrenAllDone) {
  31. workingChild.clear();
  32. }
  33. }
  34. feature?.hostVisualArea = args.hostVisualArea;
  35. final result = workingChild.execute(args);
  36. doCalculate();
  37. return result;
  38. }
  39. @override
  40. bool onExecuteTouch(PointInfo args) {
  41. return workingChild.execute(args);
  42. }
  43. static AreaStraightLine createVolume(ItemMeta meta, [IMeasureItem? parent]) {
  44. final areaStraightLine = AreaStraightLine(meta);
  45. areaStraightLine.calculator = AreaStraightLineVolumeCal(areaStraightLine);
  46. return areaStraightLine;
  47. }
  48. }
  49. class AreaStraightLineFeature extends TopMeasureItemFeature {
  50. AreaStraightLineFeature(
  51. AreaStraightLine refItem,
  52. ) : super(refItem);
  53. }
  54. class AreaStraightLineVolumeCal extends Calculator<AreaStraightLine, double> {
  55. AreaStraightLineVolumeCal(AreaStraightLine ref) : super(ref);
  56. @override
  57. void calculate() {
  58. // TODO: implement calculate
  59. }
  60. }