visual_loader.dart 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import 'package:fis_measure/interfaces/date_types/rect_region.dart';
  2. import 'package:fis_measure/process/visual/v2d_visual.dart';
  3. import 'package:fis_measure/process/visual/v3d_visual.dart';
  4. import 'package:fis_measure/process/visual/visual.dart';
  5. import 'package:vid/us/vid_us_2d_visual.dart';
  6. import 'package:vid/us/vid_us_3d_visual.dart';
  7. import 'package:vid/us/vid_us_visual.dart';
  8. import 'package:vid/us/vid_us_visual_type.dart';
  9. class VisualsLoader {
  10. final List<VidUsVisual> visualDatas;
  11. final List<VisualBase> _visuals = [];
  12. VisualsLoader(this.visualDatas);
  13. List<VisualBase> load() {
  14. if (visualDatas.length == 1) {
  15. loadSingleVisual();
  16. } else if (visualDatas.length == 2) {
  17. loadTwoVisual();
  18. } else if (visualDatas.length == 4) {
  19. loadFourVisual();
  20. } else {
  21. loadNoVisual();
  22. }
  23. return _visuals;
  24. }
  25. void loadVisual(VidUsVisual data, RectRegion region) {
  26. VisualBase visual;
  27. if (data.visualType == VidUsVisualType.V3D) {
  28. data as VidUs3DVisual;
  29. // TODO: create 3d areas
  30. visual = V3dVisual(data, region);
  31. } else {
  32. data as VidUs2DVisual;
  33. visual = V2dVisual(data, region);
  34. }
  35. _visuals.add(visual);
  36. }
  37. //适用于,例如:颈动脉2D下无visuals的情况
  38. void loadNoVisual() {
  39. loadVisual(
  40. VidUs2DVisual(),
  41. RectRegion.fill(0, 0, 1, 1),
  42. );
  43. }
  44. void loadSingleVisual() {
  45. loadVisual(
  46. visualDatas.first,
  47. RectRegion.fill(0, 0, 1, 1),
  48. );
  49. }
  50. void loadTwoVisual() {
  51. loadVisual(
  52. visualDatas[0],
  53. RectRegion.fill(0, 0, 0.5, 1),
  54. );
  55. loadVisual(
  56. visualDatas[1],
  57. RectRegion.fill(0.5, 0, 0.5, 1),
  58. );
  59. }
  60. void loadFourVisual() {
  61. loadVisual(
  62. visualDatas[0],
  63. RectRegion.fill(0, 0, 0.5, 0.5),
  64. );
  65. loadVisual(
  66. visualDatas[1],
  67. RectRegion.fill(0.5, 0, 0.5, 0.5),
  68. );
  69. loadVisual(
  70. visualDatas[2],
  71. RectRegion.fill(0, 0.5, 0.5, 0.5),
  72. );
  73. loadVisual(
  74. visualDatas[3],
  75. RectRegion.fill(0.5, 0.5, 0.5, 0.5),
  76. );
  77. }
  78. }