123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #ifndef FRACTALWIDGET_H
- #define FRACTALWIDGET_H
- #include "FractalZoomWidget.h"
- #include <QPropertyAnimation>
- #include <chrono>
- class FractalWidget :
- public FractalZoomWidget
- {
- Q_OBJECT
- bool rubberbanding = false;
- QRectF rubberband;
- bool dragging = false;
- bool didDrag = false;
- float dragX, dragY;
- bool selectingPoint = false;
- float pointX, pointY;
- bool displayInfo = false;
- /// the target of an ongoing animation
- mnd::MandelViewport targetViewport;
- std::chrono::time_point<std::chrono::high_resolution_clock> lastAnimUpdate;
- public:
- FractalWidget(QWidget* parent = nullptr);
- void mousePressEvent(QMouseEvent* me) override;
- void mouseMoveEvent(QMouseEvent* me) override;
- void mouseReleaseEvent(QMouseEvent* me) override;
- void wheelEvent(QWheelEvent* we) override;
- virtual void zoom(float factor) override;
- virtual void zoom(float factor, float fx, float fy);
- virtual void setViewport(const mnd::MandelViewport& viewport) override;
- virtual const mnd::MandelViewport& getViewport(void) const override;
- void setDisplayInfo(bool displayInfo);
- void selectJuliaPoint(void);
- void stopSelectingPoint(void);
- virtual void resizeGL(int w, int h) override;
- virtual void paintGL(void) override;
- void drawDisplayInfo(void);
- void drawSelectingPoint(void);
- void drawRubberband(void);
- signals:
- void pointSelected(mnd::Real x, mnd::Real y);
- private:
- void newAnimation(void);
- void updateAnimations(void);
- };
- #endif // FRACTALWIDGET_H
|