import 'package:fis_measure/interfaces/date_types/point.dart'; import 'package:fis_measure/interfaces/date_types/rect_region.dart'; import 'package:fis_measure/interfaces/process/modes/mode.dart'; import 'package:fis_measure/interfaces/process/physical_coordinates/physical_coordinate.dart'; import 'package:fis_measure/interfaces/process/visuals/time_motion_area.dart'; import 'package:fis_measure/interfaces/process/visuals/visual.dart'; import 'package:fis_measure/process/layout/section.dart'; import 'package:fis_measure/process/physical_coordinates/doppler.dart'; import 'package:fis_measure/process/physical_coordinates/tissue_time_motion.dart'; import 'package:fis_measure/process/viewports/time_motion_viewport.dart'; import 'package:vid/us/vid_us_2d_visual.dart'; import 'package:vid/us/vid_us_mode.dart'; import 'package:vid/us/vid_us_physical_coordinate.dart'; import 'package:vid/us/vid_us_visual_area_type.dart'; import 'visual_area.dart'; class TimeMotionArea extends VisualArea implements ITimeMotionArea { TimeMotionArea( IVisual visual, VidUsVisualAreaType areaType, VidUsModeType modeType, ) : super(visual, areaType, modeType); @override void loadData() { final visualData = visual.visualData as VidUs2DVisual; layoutRegion = findRegion(LayoutSections.general); ITimeMotionPhysicalCoordiante? physical; // TODO: 动态创建 final physicalInfo = visualData.physicalCoordinates[visualAreaType]!; if (physicalInfo is VidUsDopplerPhysicalCoordinate) { physical = DopplerPhysicalCoordinate(physicalInfo); } else if (physicalInfo is VidUsTissueTimeMotionPhysicalCoordinate) { physical = TissueTimeMotionPhysicalCoordinate(physicalInfo); } if (physical == null) return; final logicalInfo = visualData.logicalCoordinates[visualAreaType]!; final logicalRegion = logicalInfo.region; final region = RectRegion.pointTLBR( DPoint(logicalRegion.topLeft.x, logicalRegion.topLeft.y), DPoint(logicalRegion.bottomRight.x, logicalRegion.bottomRight.y), ); viewport = TimeMotionViewPort( this, physical, logicalInfo.xUnit, logicalInfo.yUnit, logicalInfo.isFlipHorizontal, logicalInfo.isFlipVertical, region, ); } }