File indexing completed on 2024-04-21 03:43:52

0001 /*
0002     SPDX-FileCopyrightText: 2003-2017 Jasem Mutlaq <mutlaqja@ikarustech.com>
0003     SPDX-FileCopyrightText: 2016-2017 Robert Lancaster <rlancaste@gmail.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include "dms.h"
0011 #include "fitscommon.h"
0012 
0013 #include <qpoint.h>
0014 #include <QLabel>
0015 #include <QRubberBand>
0016 
0017 class FITSView;
0018 
0019 class QMouseEvent;
0020 class QString;
0021 
0022 class FITSLabel : public QLabel
0023 {
0024         Q_OBJECT
0025     public:
0026         explicit FITSLabel(FITSView *img, QWidget *parent = nullptr);
0027         virtual ~FITSLabel() override = default;
0028 
0029         void setSize(double w, double h);
0030         void centerTelescope(double raJ2000, double decJ2000);
0031         bool getMouseButtonDown();
0032         void updateROIToolTip(const QPoint p);
0033 
0034     public slots:
0035         void setRubberBand(QRect rect);
0036         void showRubberBand(bool on);
0037         void zoomRubberBand(double scale);
0038 
0039     protected:
0040         virtual void mouseMoveEvent(QMouseEvent *e) override;
0041         virtual void mousePressEvent(QMouseEvent *e) override;
0042         virtual void mouseReleaseEvent(QMouseEvent *e) override;
0043         virtual void mouseDoubleClickEvent(QMouseEvent *e) override;
0044         virtual void leaveEvent(QEvent *e) override;
0045 
0046     private:
0047         bool mouseButtonDown { false };
0048         bool isRoiSelected { false };
0049         QPoint lastMousePoint;
0050         FITSView *view { nullptr };
0051         dms m_RA;
0052         dms m_DE;
0053         float prevscale{ 1.0 };
0054         double m_Width { 0 };
0055         double m_Height { 0 };
0056         double m_Size { 0 };
0057 
0058         QPoint m_p1;
0059         QPoint m_p2;
0060         QRect diffRect;
0061         QRubberBand *roiRB;
0062         QPoint prevPoint;
0063 
0064 
0065     signals:
0066         void newStatus(const QString &msg, FITSBar id);
0067         void pointSelected(int x, int y);
0068         void markerSelected(int x, int y);
0069         void rectangleSelected(QPoint p1, QPoint p2,bool refreshCenter);
0070         void mouseOverPixel(int x, int y);
0071 };