| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 
							- #pragma once
 
- #include <QGLWidget>
 
- #include <qopengl.h>
 
- #include <qopenglfunctions.h>
 
- #include <qopenglcontext.h>
 
- #include <qscrollarea.h>
 
- #include <qlabel.h>
 
- #include <qevent.h>
 
- #include <qrubberband.h>
 
- #include "Bitmap.h"
 
- #include <Mandel.h>
 
- #include <future>
 
- #include <atomic>
 
- class Texture
 
- {
 
-     GLuint id;
 
- public:
 
-     Texture(const Bitmap<RGBColor>& pict);
 
-     ~Texture(void);
 
-     void bind(void) const;
 
-     void drawRect(float x, float y, float width, float height);
 
- };
 
- class MandelView : public QObject
 
- {
 
-     Q_OBJECT
 
- private:
 
-     std::future<void> calc;
 
-     std::atomic<mnd::MandelViewport> toCalc;
 
-     std::atomic_bool hasToCalc;
 
-     mnd::Generator& generator;
 
- public:
 
-     inline MandelView(mnd::Generator& generator) :
 
-         generator{ generator }
 
-     {
 
-     }
 
- public slots:
 
-     void adaptViewport(const mnd::MandelViewport& vp);
 
- signals:
 
-     void updated(const Bitmap<RGBColor>* bitmap);
 
- };
 
- class MandelWidget : public QGLWidget
 
- {
 
-     Q_OBJECT
 
- private:
 
-     //QScrollArea qsa;
 
-     //QLabel ql;
 
-     mnd::MandelContext& mndContext;
 
-     bool initialized = false;
 
-     bool rubberbandDragging = false;
 
-     QRectF rubberband;
 
-     std::unique_ptr<Texture> tex;
 
-     mnd::MandelViewport viewport;
 
-     MandelView mv;
 
- public:
 
-     MandelWidget(mnd::MandelContext& ctxt, QWidget* parent = nullptr);
 
-     ~MandelWidget(void) override;
 
-     /*inline MandelWidget(const MandelWidget& other) :
 
-         mndContext{ other.mndContext },
 
-         mv{ other.mndContext }
 
-     {
 
-     }*/
 
-     void initializeGL(void) override;
 
-     void resizeGL(int w, int h) override;
 
-     void paintGL() override;
 
-     void drawRubberband(void);
 
-     //void redraw();
 
-     void resizeEvent(QResizeEvent* re) override;
 
-     void mousePressEvent(QMouseEvent* me) override;
 
-     void mouseMoveEvent(QMouseEvent* me) override;
 
-     void mouseReleaseEvent(QMouseEvent* me) override;
 
-     inline const mnd::MandelViewport& getViewport(void) const { return viewport; }
 
- signals:
 
-     void needsUpdate(const mnd::MandelViewport& vp);
 
- public slots:
 
-     void viewUpdated(const Bitmap<RGBColor>* bitmap);
 
- };
 
 
  |