item_feature.dart 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import 'dart:ui';
  2. import 'package:fis_measure/interfaces/date_types/point.dart';
  3. import 'package:fis_measure/interfaces/process/items/item.dart';
  4. import 'package:fis_measure/interfaces/process/items/item_feature.dart';
  5. import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
  6. import 'package:flutter/foundation.dart';
  7. abstract class MeasureItemFeature implements IMeasureItemFeature {
  8. late IMeasureItem _refItem;
  9. late List<DPoint> _innerPoints;
  10. IVisualArea? _hostVisualArea;
  11. bool _isActive = true;
  12. @protected
  13. final paintPan = Paint()
  14. ..color = const Color.fromARGB(255, 255, 255, 0)
  15. ..isAntiAlias = true
  16. ..strokeWidth = 2
  17. ..style = PaintingStyle.stroke;
  18. MeasureItemFeature(IMeasureItem refItem) {
  19. _refItem = refItem;
  20. _innerPoints = [];
  21. }
  22. @override
  23. List<DPoint> get innerPoints => _innerPoints;
  24. @override
  25. IMeasureItem get refItem => _refItem;
  26. /// 所在区域
  27. IVisualArea? get hostVisualArea => _hostVisualArea;
  28. set hostVisualArea(IVisualArea? value) {
  29. if (value != _hostVisualArea) {
  30. _hostVisualArea = value;
  31. }
  32. }
  33. @override
  34. bool get isActive => _isActive;
  35. set isActive(bool value) {
  36. if (value != _isActive) {
  37. _isActive = value;
  38. }
  39. }
  40. @protected
  41. DPoint convert2ViewPoint(Size size, DPoint logicPoint) {
  42. final x = size.width * logicPoint.x;
  43. final y = size.height * logicPoint.y;
  44. return DPoint(x, y);
  45. }
  46. }