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