import 'package:fis_measure/interfaces/date_types/rect_region.dart'; import 'package:fis_measure/process/visual/v2d_visual.dart'; import 'package:fis_measure/process/visual/v3d_visual.dart'; import 'package:fis_measure/process/visual/visual.dart'; import 'package:vid/us/vid_us_2d_visual.dart'; import 'package:vid/us/vid_us_3d_visual.dart'; import 'package:vid/us/vid_us_visual.dart'; import 'package:vid/us/vid_us_visual_type.dart'; class VisualsLoader { final List visualDatas; final List _visuals = []; VisualsLoader(this.visualDatas); List load() { if (visualDatas.length == 1) { loadSingleVisual(); } else if (visualDatas.length == 2) { loadTwoVisual(); } else if (visualDatas.length == 4) { loadFourVisual(); } else { loadNoVisual(); } return _visuals; } void loadVisual(VidUsVisual data, RectRegion region) { VisualBase visual; if (data.visualType == VidUsVisualType.V3D) { data as VidUs3DVisual; // TODO: create 3d areas visual = V3dVisual(data, region); } else { data as VidUs2DVisual; visual = V2dVisual(data, region); } _visuals.add(visual); } //适用于,例如:颈动脉2D下无visuals的情况 void loadNoVisual() { loadVisual( VidUs2DVisual(), RectRegion.fill(0, 0, 1, 1), ); } void loadSingleVisual() { loadVisual( visualDatas.first, RectRegion.fill(0, 0, 1, 1), ); } void loadTwoVisual() { loadVisual( visualDatas[0], RectRegion.fill(0, 0, 0.5, 1), ); loadVisual( visualDatas[1], RectRegion.fill(0.5, 0, 0.5, 1), ); } void loadFourVisual() { loadVisual( visualDatas[0], RectRegion.fill(0, 0, 0.5, 0.5), ); loadVisual( visualDatas[1], RectRegion.fill(0.5, 0, 0.5, 0.5), ); loadVisual( visualDatas[2], RectRegion.fill(0, 0.5, 0.5, 0.5), ); loadVisual( visualDatas[3], RectRegion.fill(0.5, 0.5, 0.5, 0.5), ); } }