File indexing completed on 2024-05-19 16:43:49
0001 #ifndef OVERLAY_H 0002 #define OVERLAY_H 0003 0004 #include "rwidgets_global.h" 0005 #include <QRect> 0006 #include <QWidget> 0007 0008 class RWIDGET_EXPORT Overlay : public QWidget 0009 { 0010 Q_OBJECT 0011 Q_PROPERTY(QRect selectedRect READ selectedRect WRITE setSelectedRect NOTIFY selectedRectChanged) 0012 Q_PROPERTY(Ratio ratio READ ratio WRITE setRatio NOTIFY ratioChanged) 0013 public: 0014 enum Position 0015 { 0016 None, 0017 First, 0018 Second, 0019 Third, 0020 Fourth, 0021 Center 0022 }; // follow clock, 0023 0024 enum class Ratio 0025 { 0026 Ratio_Unconstrained, 0027 Ratio_Square, 0028 Ratio_Tv, 0029 Ratio_Film 0030 }; 0031 Q_ENUM(Ratio) 0032 Overlay(QWidget* parent= nullptr); // QRect rect, Ratio ratio= Ratio::Ratio_Unconstrained, 0033 0034 // Overlay(QRect rect, Ratio ratio= Ratio::Ratio_Unconstrained, QWidget* parent= nullptr); 0035 0036 Ratio ratio() const; 0037 void setRatio(Ratio ratio); 0038 0039 QRect selectedRect() const; 0040 void setSelectedRect(const QRect& rect); 0041 0042 void initRect(); 0043 0044 signals: 0045 void selectedRectChanged(const QRect& rect); 0046 void ratioChanged(); 0047 0048 protected: 0049 void paintEvent(QPaintEvent*) override; 0050 void mousePressEvent(QMouseEvent* event) override; 0051 void mouseMoveEvent(QMouseEvent* event) override; 0052 0053 private: 0054 QRect m_selectedRect{0, 0, 100, 100}; 0055 Position m_currentCorner= None; 0056 QPoint m_lastPosition; 0057 Ratio m_ratio= Ratio::Ratio_Unconstrained; 0058 }; 0059 0060 #endif // OVERLAY_H