import 'package:fis_measure/interfaces/date_types/rect_region.dart'; import 'package:fis_measure/interfaces/enums/display_mode.dart'; import 'package:fis_measure/interfaces/enums/visual_area_type.dart'; import 'package:fis_measure/interfaces/process/modes/mode.dart'; import 'package:fis_common/event/event_type.dart'; import 'package:fis_measure/interfaces/process/visuals/visual.dart'; import 'package:fis_measure/process/layout/configuration.dart'; import 'package:fis_measure/process/layout/section.dart'; import 'package:fis_measure/process/modes/mode_base.dart'; import 'package:flutter/foundation.dart'; import 'package:get/get.dart'; import 'package:vid/us/vid_us_2d_visual.dart'; import 'package:vid/us/vid_us_display_mode.dart'; import 'package:vid/us/vid_us_mode.dart'; import 'package:vid/us/vid_us_visual.dart'; import 'package:fis_measure/interfaces/process/visuals/visual_area.dart'; import 'tissue_area.dart'; import 'visual_area.dart'; abstract class VisualBase implements IVisual { late final VidUsVisual _visualData; late final List _visualAreas; late final RectRegion _region; VisualBase(VidUsVisual visualData, RectRegion region) { _visualData = visualData; _region = region; _visualAreas = loadAreas(); } /// 装载区域 List loadAreas(); @override bool get isActive => visualAreas.any((e) => e.isActive); @override IMode? get activeMode => activeArea?.mode; @override VidUsDisplayMode get displayMode => visualData.displayMode; @override List get modes => visualAreas.map((e) => e.mode).toSet().toList(); @override List get visualAreas => _visualAreas; @override RectRegion get region => _region; @override IVisualArea? get activeArea => visualAreas.firstWhereOrNull((e) => e.isActive); @override VidUsVisual get visualData => _visualData; @override var activeChanged = FEventHandler(); @override void setUnAcitve() { for (var area in visualAreas) { area.isActive = false; } } }