import 'package:fis_measure/interfaces/date_types/point.dart'; import 'package:fis_measure/interfaces/process/items/item.dart'; import 'package:fis_measure/interfaces/process/items/item_metas.dart'; import 'package:fis_measure/process/items/item.dart'; import 'package:fis_measure/process/items/item_feature.dart'; abstract class AreaItemAbstract extends MeasureItem { bool _isClosed = true; double _splineTension = 0.0; AreaItemAbstract(ItemMeta meta, IMeasureItem? parent) : super(meta, parent); bool get isClosed => _isClosed; set isClosed(bool val) { if (val != _isClosed) { _isClosed = val; } } double get splineTension => _splineTension; set splineTension(double val) { if (val != _splineTension) { _splineTension = val; } } } abstract class AreaItemFeatureAbstract extends MeasureItemFeature { bool isSnapped = false; AreaItemFeatureAbstract(AreaItemAbstract refItem) : super(refItem); @override AreaItemAbstract get refItem => super.refItem as AreaItemAbstract; double get splineTension => refItem.splineTension; bool get isClosed => refItem.isClosed; DPoint get startPoint => innerPoints.first; DPoint get endPoint => innerPoints.last; /// 接收新坐标 void adopt(DPoint point) { innerPoints.add(point); } }