visual.dart 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import 'package:fis_measure/interfaces/process/modes/mode.dart';
  2. import 'package:fis_common/event/event_type.dart';
  3. import 'package:fis_measure/interfaces/process/visuals/visual.dart';
  4. import 'package:fis_measure/process/modes/mode_base.dart';
  5. import 'package:get/get.dart';
  6. import 'package:vid/us/vid_us_2d_visual.dart';
  7. import 'package:vid/us/vid_us_display_mode.dart';
  8. import 'package:vid/us/vid_us_visual.dart';
  9. import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
  10. import 'tissue_area.dart';
  11. class VisualBase implements IVisual {
  12. late final VidUsVisual _visualData;
  13. late final List<IVisualArea> _visualAreas;
  14. VisualBase(VidUsVisual visualData) {
  15. _visualData = visualData;
  16. if (visualData is VidUs2DVisual) {
  17. _visualAreas = [];
  18. for (var modeInfo in visualData.modes) {
  19. final mode = ModeBase(
  20. modeInfo.name,
  21. ModeTypeEnum.values[modeInfo.type.index],
  22. this,
  23. );
  24. final area = TissueArea(this, mode)..init();
  25. _visualAreas.add(area);
  26. }
  27. }
  28. }
  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. IVisualArea? get activeArea =>
  41. visualAreas.firstWhereOrNull((e) => e.isActive);
  42. @override
  43. VidUsVisual get visualData => _visualData;
  44. @override
  45. var activeChanged = FEventHandler<bool>();
  46. }