input_view.hpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef QT_INPUT_VIEW_HPP
  2. #define QT_INPUT_VIEW_HPP
  3. #include "initial_state.hpp"
  4. #include "input_geometry.hpp"
  5. #include "view.hpp"
  6. #include "math/point.hpp"
  7. #include "math/spline.hpp"
  8. #include "geometry.hpp"
  9. #include "time.hpp"
  10. #include "source.hpp"
  11. using namespace std;
  12. class QtInputView:public QtView{
  13. Q_OBJECT
  14. public:
  15. enum Status{Geom,Init,Sources,Other};
  16. private:
  17. QtInputGeometry* input_geometry;
  18. InitialState* initial_state;
  19. Source* source;
  20. Status status;
  21. static constexpr size_t const np=10;
  22. static constexpr int const pointSize=6;
  23. static constexpr double const min_d=0.01;
  24. size_t selected;
  25. Point point[3*np];
  26. Spline hsoil;
  27. Spline hbot;
  28. Spline hsat;
  29. double time;
  30. void initPoints();
  31. size_t findPoint(int x,int y);
  32. void drawSpline(Spline& S);
  33. void moveSelected(double x,double y);
  34. public:
  35. QtInputView(QtInputGeometry* input_geometry,Geometry* geometry,InitialState* initial_state,Source* source);
  36. ~QtInputView();
  37. void paintGL() override;
  38. void mousePressEvent(QMouseEvent* event);
  39. void mouseMoveEvent(QMouseEvent* event);
  40. void mouseReleaseEvent(QMouseEvent* event);
  41. void setStatus(Status status);
  42. double getP(size_t ix,size_t iz);
  43. void paintTank(Tank*);
  44. void paintPump(Pump*);
  45. void paintCloud(Cloud*);
  46. public slots:
  47. void updateGeometry();
  48. void updateInitialState();
  49. void updateSource();
  50. void setTime(int v);
  51. };
  52. inline void
  53. QtInputView::setStatus(Status _status){
  54. status=_status;
  55. }
  56. inline double
  57. QtInputView::getP(size_t ix,size_t iz){
  58. return initial_state->Pinit[ix][iz];
  59. }
  60. inline
  61. QtInputView::~QtInputView(){
  62. }
  63. inline void
  64. QtInputView::setTime(int v){
  65. time=double(v)/99;
  66. updateSource();
  67. }
  68. #endif