time_motion_area.dart 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import 'package:fis_measure/interfaces/date_types/point.dart';
  2. import 'package:fis_measure/interfaces/date_types/rect_region.dart';
  3. import 'package:fis_measure/interfaces/process/modes/mode.dart';
  4. import 'package:fis_measure/interfaces/process/physical_coordinates/physical_coordinate.dart';
  5. import 'package:fis_measure/interfaces/process/visuals/time_motion_area.dart';
  6. import 'package:fis_measure/interfaces/process/visuals/visual.dart';
  7. import 'package:fis_measure/process/layout/section.dart';
  8. import 'package:fis_measure/process/physical_coordinates/doppler.dart';
  9. import 'package:fis_measure/process/physical_coordinates/tissue_time_motion.dart';
  10. import 'package:fis_measure/process/viewports/time_motion_viewport.dart';
  11. import 'package:vid/us/vid_us_2d_visual.dart';
  12. import 'package:vid/us/vid_us_mode.dart';
  13. import 'package:vid/us/vid_us_physical_coordinate.dart';
  14. import 'package:vid/us/vid_us_visual_area_type.dart';
  15. import 'visual_area.dart';
  16. class TimeMotionArea extends VisualArea implements ITimeMotionArea {
  17. TimeMotionArea(
  18. IVisual visual,
  19. VidUsVisualAreaType areaType,
  20. VidUsModeType modeType,
  21. ) : super(visual, areaType, modeType);
  22. @override
  23. void loadData() {
  24. final visualData = visual.visualData as VidUs2DVisual;
  25. layoutRegion = findRegion(LayoutSections.general);
  26. ITimeMotionPhysicalCoordiante? physical;
  27. // TODO: 动态创建
  28. final physicalInfo = visualData.physicalCoordinates[visualAreaType]!;
  29. if (physicalInfo is VidUsDopplerPhysicalCoordinate) {
  30. physical = DopplerPhysicalCoordinate(physicalInfo);
  31. } else if (physicalInfo is VidUsTissueTimeMotionPhysicalCoordinate) {
  32. physical = TissueTimeMotionPhysicalCoordinate(physicalInfo);
  33. }
  34. if (physical == null) return;
  35. final logicalInfo = visualData.logicalCoordinates[visualAreaType]!;
  36. final logicalRegion = logicalInfo.region;
  37. final region = RectRegion.pointTLBR(
  38. DPoint(logicalRegion.topLeft.x, logicalRegion.topLeft.y),
  39. DPoint(logicalRegion.bottomRight.x, logicalRegion.bottomRight.y),
  40. );
  41. viewport = TimeMotionViewPort(
  42. this,
  43. physical,
  44. logicalInfo.xUnit,
  45. logicalInfo.yUnit,
  46. logicalInfo.isFlipHorizontal,
  47. logicalInfo.isFlipVertical,
  48. region,
  49. );
  50. }
  51. }