Improved zoom and scrolling

This commit is contained in:
2023-03-12 13:45:07 +01:00
parent 74aee15f80
commit 26666ee36d
3 changed files with 129 additions and 141 deletions
+11 -14
View File
@@ -52,6 +52,8 @@ class ImageWidget : public QOpenGLWidget
float m_range;
float m_dx, m_dy;
float m_scale;
int m_scaleStop = 0;
bool m_bestFit = false;
float m_whiteBalance[3] = {1.0f, 1.0f, 1.0f};
bool m_blockRepaint;
bool m_bwImg;
@@ -66,18 +68,21 @@ class ImageWidget : public QOpenGLWidget
int m_maxArrayLayers;
QVector<ImageThumb> m_thumnails;
Database *m_database;
QPointF m_lastPos;
public:
explicit ImageWidget(Database *database, QWidget *parent = nullptr);
~ImageWidget() override;
void setImage(std::shared_ptr<RawImage> image, int index);
void setImage(const QPixmap &pixmap);
void setWCS(std::shared_ptr<WCSData> wcs);
void setScale(float scale);
void zoom(int zoom, const QPointF &mousePos = QPointF());
void bestFit();
void blockRepaint(bool block);
void allocateThumbnails(const QStringList &paths);
QVector2D getImagePixelCoord(const QVector2D &pos);
public slots:
void setMTFParams(float low, float mid, float high);
void setOffset(int dx, int dy);
void setOffset(float dx, float dy);
void superPixel(bool enable);
void invert(bool enable);
QImage renderToImage();
@@ -92,11 +97,14 @@ protected:
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
void wheelEvent(QWheelEvent *event) override;
void thumbSelect(QMouseEvent *event);
void debayer();
void updateScrollBars();
signals:
void fileDropped(const QString &path);
void status(const QString &value, const QString &pixelCoords, const QString &celestialCoords);
void scrollBarsUpdate(int valueH, int stepH, int maxH, int valueV, int stepV, int maxV);
};
class ImageScrollAreaGL : public QWidget
@@ -105,24 +113,13 @@ class ImageScrollAreaGL : public QWidget
QScrollBar *m_verticalScrollBar;
QScrollBar *m_horizontalScrollBar;
ImageWidget *m_imageWidget;
int m_imgWidth, m_imgHeight;
QPoint m_lastPos;
float m_scale;
bool m_bestFit;
int m_thumbCount;
public:
explicit ImageScrollAreaGL(Database *database, QWidget *parent = nullptr);
~ImageScrollAreaGL() override;
void setImage(Image *image);
ImageWidget* imageWidget();
void setThumbnails(int count);
protected:
void updateScrollbars(bool zoom = false);
void resizeEvent(QResizeEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
void wheelEvent(QWheelEvent *event) override;
void zoom(float delta);
void updateScrollbars(int valueH, int stepH, int maxH, int valueV, int stepV, int maxV);
public slots:
void zoomIn();
void zoomOut();