tissue_area.dart 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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/tissue_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/viewports/tissue_viewport.dart';
  10. import 'package:vid/us/vid_us_2d_visual.dart';
  11. import 'package:vid/us/vid_us_mode.dart';
  12. import 'package:vid/us/vid_us_physical_coordinate.dart';
  13. import 'package:vid/us/vid_us_visual_area_type.dart';
  14. import '../physical_coordinates/convex_tissue.dart';
  15. import '../physical_coordinates/linear_tissue.dart';
  16. import 'visual_area.dart';
  17. class TissueArea extends VisualArea implements ITissueArea {
  18. TissueArea(
  19. IVisual visual,
  20. VidUsVisualAreaType areaType,
  21. VidUsModeType modeType,
  22. ) : super(visual, areaType, modeType);
  23. /// 是否扇形图
  24. bool get isConvex => viewport?.physical is ConvexTissuePhysicalCoordinate;
  25. @override
  26. void loadData() {
  27. final visualData = visual.visualData as VidUs2DVisual;
  28. layoutRegion = findRegion(LayoutSections.general);
  29. ITissuePhysicalCoordinate? physical;
  30. // TODO: 动态创建
  31. final physicalInfo = visualData.physicalCoordinates[visualAreaType]!;
  32. if (physicalInfo is VidUsLinearTissuePhysicalCoordinate) {
  33. physical = LinearTissuePhysicalCoordinate(physicalInfo);
  34. } else if (physicalInfo is VidUsConvexTissuePhysicalCoordinate) {
  35. physical = ConvexTissuePhysicalCoordinate(physicalInfo);
  36. }
  37. if (physical == null) return;
  38. final logicalInfo = visualData.logicalCoordinates[visualAreaType]!;
  39. final logicalRegion = logicalInfo.region;
  40. final region = RectRegion.pointTLBR(
  41. DPoint(logicalRegion.topLeft.x, logicalRegion.topLeft.y),
  42. DPoint(logicalRegion.bottomRight.x, logicalRegion.bottomRight.y),
  43. );
  44. viewport = TissueViewPort(
  45. this,
  46. physical,
  47. logicalInfo.xUnit,
  48. logicalInfo.yUnit,
  49. logicalInfo.isFlipHorizontal,
  50. logicalInfo.isFlipVertical,
  51. region,
  52. );
  53. }
  54. }