area_abstract.dart 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import 'package:fis_measure/interfaces/date_types/point.dart';
  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/process/items/item.dart';
  5. import 'package:fis_measure/process/items/item_feature.dart';
  6. abstract class AreaItemAbstract extends MeasureItem<AreaItemFeatureAbstract> {
  7. bool _isClosed = true;
  8. double _splineTension = 0.0;
  9. AreaItemAbstract(ItemMeta meta, IMeasureItem? parent) : super(meta, parent);
  10. bool get isClosed => _isClosed;
  11. set isClosed(bool val) {
  12. if (val != _isClosed) {
  13. _isClosed = val;
  14. }
  15. }
  16. double get splineTension => _splineTension;
  17. set splineTension(double val) {
  18. if (val != _splineTension) {
  19. _splineTension = val;
  20. }
  21. }
  22. }
  23. abstract class AreaItemFeatureAbstract extends MeasureItemFeature {
  24. bool isSnapped = false;
  25. AreaItemFeatureAbstract(AreaItemAbstract refItem) : super(refItem);
  26. @override
  27. AreaItemAbstract get refItem => super.refItem as AreaItemAbstract;
  28. double get splineTension => refItem.splineTension;
  29. bool get isClosed => refItem.isClosed;
  30. DPoint get startPoint => innerPoints.first;
  31. DPoint get endPoint => innerPoints.last;
  32. /// 接收新坐标
  33. void adopt(DPoint point) {
  34. innerPoints.add(point);
  35. }
  36. }