EscapeTimeVisualWidget.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef ESCAPETIMEVISUALWIDGET_H
  2. #define ESCAPETIMEVISUALWIDGET_H
  3. #include <QOpenGLWidget>
  4. #include "Bitmap.h"
  5. #include "Gradient.h"
  6. class QOpenGLShaderProgram;
  7. class EscapeTimeVisualWidget;
  8. class ETVImage
  9. {
  10. GLuint textureId;
  11. EscapeTimeVisualWidget& owner;
  12. public:
  13. ETVImage(EscapeTimeVisualWidget& owner,
  14. const Bitmap<float>& img);
  15. ~ETVImage(void);
  16. void draw(float x, float y, float w, float h,
  17. float tx = 0.0f, float ty = 0.0f,
  18. float tw = 1.0f, float th = 1.0f);
  19. };
  20. class EscapeTimeVisualWidget :
  21. public QOpenGLWidget
  22. {
  23. Q_OBJECT
  24. friend class ETVImage;
  25. QOpenGLShaderProgram* program;
  26. QOpenGLShaderProgram* renderTextures;
  27. GLuint gradientTextureId;
  28. float gradientTextureMax;
  29. float maxIterations;
  30. Gradient gradient;
  31. bool gradientNeedsUpdate;
  32. float resolutionX;
  33. float resolutionY;
  34. GLuint tileFramebuffer;
  35. GLuint tileTexture;
  36. public:
  37. EscapeTimeVisualWidget(QWidget* parent = nullptr);
  38. void setGradient(Gradient newGradient);
  39. const Gradient& getGradient(void);
  40. virtual void initializeGL(void) override;
  41. virtual void resizeGL(int w, int h) override;
  42. virtual void paintGL(void) override;
  43. void setMaxIterationCutoff(float maxIter);
  44. void setResolutionX(int w);
  45. void setResolutionY(int h);
  46. int getResolutionX(void) const;
  47. int getResolutionY(void) const;
  48. private:
  49. void updateGradient(void);
  50. };
  51. #endif // ESCAPETIMEVISUALWIDGET_H