input_geometry_curves.hpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef QT_INPUT_GEOMETRY_CURVES_HPP
  2. #define QT_INPUT_GEOMETRY_CURVES_HPP
  3. #include <iostream>
  4. #include <fstream>
  5. #include <QWidget>
  6. #include <QMouseEvent>
  7. #include <QPainter>
  8. #include "math/point.hpp"
  9. #include "math/spline.hpp"
  10. using namespace std;
  11. static const size_t np = 10;
  12. class QtInputGeometryCurves:public QWidget{
  13. private:
  14. int margin;
  15. int radius;
  16. float min_d;
  17. size_t selected;
  18. Point point[2*np];
  19. Spline hsoil;
  20. Spline hbot;
  21. size_t findPoint(int x,int y);
  22. int get_x(float x,int w);
  23. int get_y(float y,int h);
  24. void moveSelected(float x,float y);
  25. void drawSpline(Spline& S,QPainter& painter);
  26. public:
  27. QtInputGeometryCurves();
  28. ~QtInputGeometryCurves();
  29. void save(fstream& file);
  30. void load(fstream& file);
  31. Spline& getSsoil();
  32. Spline& getSbot();
  33. protected:
  34. void initPoints();
  35. void paintEvent(QPaintEvent* event);
  36. void mousePressEvent(QMouseEvent* event) override;
  37. void mouseMoveEvent(QMouseEvent* event) override;
  38. void mouseReleaseEvent(QMouseEvent* event) override;
  39. };
  40. inline
  41. QtInputGeometryCurves::~QtInputGeometryCurves(){
  42. }
  43. inline Spline&
  44. QtInputGeometryCurves::getSsoil(){
  45. return hsoil;
  46. }
  47. inline Spline&
  48. QtInputGeometryCurves::getSbot(){
  49. return hbot;
  50. }
  51. #endif