visual_loader.dart 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. }
  21. return _visuals;
  22. }
  23. void loadVisual(VidUsVisual data, RectRegion region) {
  24. VisualBase visual;
  25. if (data.visualType == VidUsVisualType.V3D) {
  26. data as VidUs3DVisual;
  27. // TODO: create 3d areas
  28. visual = V3dVisual(data, region);
  29. } else {
  30. data as VidUs2DVisual;
  31. visual = V2dVisual(data, region);
  32. }
  33. _visuals.add(visual);
  34. }
  35. void loadSingleVisual() {
  36. loadVisual(
  37. visualDatas.first,
  38. RectRegion.fill(0, 0, 1, 1),
  39. );
  40. }
  41. void loadTwoVisual() {
  42. loadVisual(
  43. visualDatas[0],
  44. RectRegion.fill(0, 0, 0.5, 1),
  45. );
  46. loadVisual(
  47. visualDatas[1],
  48. RectRegion.fill(0.5, 0, 0.5, 1),
  49. );
  50. }
  51. void loadFourVisual() {
  52. loadVisual(
  53. visualDatas[0],
  54. RectRegion.fill(0, 0, 0.5, 0.5),
  55. );
  56. loadVisual(
  57. visualDatas[1],
  58. RectRegion.fill(0.5, 0, 0.5, 0.5),
  59. );
  60. loadVisual(
  61. visualDatas[2],
  62. RectRegion.fill(0, 0.5, 0.5, 0.5),
  63. );
  64. loadVisual(
  65. visualDatas[3],
  66. RectRegion.fill(0.5, 0.5, 0.5, 0.5),
  67. );
  68. }
  69. }