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 };