visual.dart 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import 'package:fis_measure/interfaces/date_types/rect_region.dart';
  2. import 'package:fis_measure/interfaces/enums/display_mode.dart';
  3. import 'package:fis_measure/interfaces/enums/visual_area_type.dart';
  4. import 'package:fis_measure/interfaces/process/modes/mode.dart';
  5. import 'package:fis_common/event/event_type.dart';
  6. import 'package:fis_measure/interfaces/process/visuals/visual.dart';
  7. import 'package:fis_measure/process/layout/configuration.dart';
  8. import 'package:fis_measure/process/layout/section.dart';
  9. import 'package:fis_measure/process/modes/mode_base.dart';
  10. import 'package:flutter/foundation.dart';
  11. import 'package:get/get.dart';
  12. import 'package:vid/us/vid_us_2d_visual.dart';
  13. import 'package:vid/us/vid_us_display_mode.dart';
  14. import 'package:vid/us/vid_us_mode.dart';
  15. import 'package:vid/us/vid_us_visual.dart';
  16. import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
  17. import 'tissue_area.dart';
  18. import 'visual_area.dart';
  19. abstract class VisualBase implements IVisual {
  20. late final VidUsVisual _visualData;
  21. late final List<IVisualArea> _visualAreas = [];
  22. late final RectRegion _region;
  23. VisualBase(VidUsVisual visualData, RectRegion region) {
  24. _visualData = visualData;
  25. _region = region;
  26. }
  27. /// 装载区域
  28. void loadAreas(List<VisualArea> areas);
  29. @override
  30. bool get isActive => visualAreas.any((e) => e.isActive);
  31. @override
  32. IMode? get activeMode => activeArea?.mode;
  33. @override
  34. VidUsDisplayMode get displayMode => visualData.displayMode;
  35. @override
  36. List<IMode> get modes => visualAreas.map((e) => e.mode).toSet().toList();
  37. @override
  38. List<IVisualArea> get visualAreas => _visualAreas;
  39. @override
  40. RectRegion get region => _region;
  41. @override
  42. IVisualArea? get activeArea =>
  43. visualAreas.firstWhereOrNull((e) => e.isActive);
  44. @override
  45. VidUsVisual get visualData => _visualData;
  46. @override
  47. var activeChanged = FEventHandler<bool>();
  48. @override
  49. void setUnAcitve() {
  50. for (var area in visualAreas) {
  51. area.isActive = false;
  52. }
  53. }
  54. @protected
  55. ModeBase matchAreaMode(VidUsModeType type) {
  56. final modeInfo = visualData.modes.firstWhere((e) => e.type == type);
  57. final mode = ModeBase(
  58. modeInfo.name,
  59. ModeTypeEnum.doppler,
  60. this,
  61. );
  62. return mode;
  63. }
  64. }