git repos / SagoImageBrowser

blame: src/imageviewwidget.h

normal view · raw

61136b77 Poul Sander 2026-02-20 22:45 1
#pragma once
61136b77 Poul Sander 2026-02-20 22:45 2
61136b77 Poul Sander 2026-02-20 22:45 3
#include <QWidget>
61136b77 Poul Sander 2026-02-20 22:45 4
#include <QImage>
61136b77 Poul Sander 2026-02-20 22:45 5
#include <QPixmap>
61136b77 Poul Sander 2026-02-20 22:45 6
#include <QString>
c8ae2669 Poul Sander 2026-02-22 17:52 7
#include <QPoint>
61136b77 Poul Sander 2026-02-20 22:45 8
61136b77 Poul Sander 2026-02-20 22:45 9
class ImageViewWidget : public QWidget
61136b77 Poul Sander 2026-02-20 22:45 10
{
61136b77 Poul Sander 2026-02-20 22:45 11
    Q_OBJECT
61136b77 Poul Sander 2026-02-20 22:45 12
61136b77 Poul Sander 2026-02-20 22:45 13
public:
c58dbdb7 Poul Sander 2026-02-22 17:49 14
    enum ZoomMode { FitToScreen, OriginalSize, CustomZoom };
c58dbdb7 Poul Sander 2026-02-22 17:49 15
61136b77 Poul Sander 2026-02-20 22:45 16
    explicit ImageViewWidget(QWidget *parent = nullptr);
61136b77 Poul Sander 2026-02-20 22:45 17
61136b77 Poul Sander 2026-02-20 22:45 18
    void setImage(const QString &path);
c58dbdb7 Poul Sander 2026-02-22 17:49 19
    void zoomIn();
c58dbdb7 Poul Sander 2026-02-22 17:49 20
    void zoomOut();
c58dbdb7 Poul Sander 2026-02-22 17:49 21
    void zoomOriginal();
c58dbdb7 Poul Sander 2026-02-22 17:49 22
    void zoomFitToScreen();
61136b77 Poul Sander 2026-02-20 22:45 23
61136b77 Poul Sander 2026-02-20 22:45 24
signals:
61136b77 Poul Sander 2026-02-20 22:45 25
    void closeRequested();
1ffc1962 Poul Sander 2026-02-20 23:41 26
    void nextRequested();
1ffc1962 Poul Sander 2026-02-20 23:41 27
    void previousRequested();
61136b77 Poul Sander 2026-02-20 22:45 28
61136b77 Poul Sander 2026-02-20 22:45 29
protected:
61136b77 Poul Sander 2026-02-20 22:45 30
    void paintEvent(QPaintEvent *event) override;
61136b77 Poul Sander 2026-02-20 22:45 31
    void keyPressEvent(QKeyEvent *event) override;
c8ae2669 Poul Sander 2026-02-22 17:52 32
    void mousePressEvent(QMouseEvent *event) override;
c8ae2669 Poul Sander 2026-02-22 17:52 33
    void mouseMoveEvent(QMouseEvent *event) override;
c8ae2669 Poul Sander 2026-02-22 17:52 34
    void mouseReleaseEvent(QMouseEvent *event) override;
61136b77 Poul Sander 2026-02-20 22:45 35
61136b77 Poul Sander 2026-02-20 22:45 36
private:
c8ae2669 Poul Sander 2026-02-22 17:52 37
    void clampOffset(int imgW, int imgH);
c8ae2669 Poul Sander 2026-02-22 17:52 38
61136b77 Poul Sander 2026-02-20 22:45 39
    QPixmap m_pixmap;
c58dbdb7 Poul Sander 2026-02-22 17:49 40
    ZoomMode m_zoomMode = FitToScreen;
c58dbdb7 Poul Sander 2026-02-22 17:49 41
    double m_zoomFactor = 1.0;
c8ae2669 Poul Sander 2026-02-22 17:52 42
c8ae2669 Poul Sander 2026-02-22 17:52 43
    // Panning state
c8ae2669 Poul Sander 2026-02-22 17:52 44
    QPoint m_offset;        // current pan offset (pixels)
c8ae2669 Poul Sander 2026-02-22 17:52 45
    bool   m_dragging = false;
c8ae2669 Poul Sander 2026-02-22 17:52 46
    QPoint m_dragStart;
c8ae2669 Poul Sander 2026-02-22 17:52 47
    QPoint m_offsetAtDragStart;
61136b77 Poul Sander 2026-02-20 22:45 48
};
1970-01-01 00:00 49