2020-02-21 00:45:53 +07:00
|
|
|
#pragma once
|
|
|
|
|
|
2020-03-21 19:16:57 +07:00
|
|
|
#include "stfwd.h"
|
|
|
|
|
|
2020-02-21 00:45:53 +07:00
|
|
|
#include <QWidget>
|
|
|
|
|
|
2020-03-21 19:16:57 +07:00
|
|
|
class CaptureAreaSelector : public QWidget
|
2020-02-21 00:45:53 +07:00
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
2020-03-22 18:32:51 +07:00
|
|
|
CaptureAreaSelector(Capturer &capturer, const Settings &settings,
|
|
|
|
|
const QPixmap &pixmap);
|
2020-02-21 00:45:53 +07:00
|
|
|
|
2020-03-22 15:36:31 +07:00
|
|
|
void activate();
|
|
|
|
|
void setScreenRects(const std::vector<QRect> &screens);
|
|
|
|
|
void updateSettings();
|
2020-02-21 00:45:53 +07:00
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
void showEvent(QShowEvent *event) override;
|
|
|
|
|
void keyPressEvent(QKeyEvent *event) override;
|
|
|
|
|
void mousePressEvent(QMouseEvent *event) override;
|
|
|
|
|
void mouseMoveEvent(QMouseEvent *event) override;
|
|
|
|
|
void mouseReleaseEvent(QMouseEvent *event) override;
|
|
|
|
|
void paintEvent(QPaintEvent *event) override;
|
|
|
|
|
|
|
|
|
|
private:
|
2020-03-22 15:36:31 +07:00
|
|
|
struct HelpRect {
|
|
|
|
|
QRect current;
|
|
|
|
|
std::vector<QRect> possible;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
bool updateCurrentHelpRects();
|
2020-03-22 18:32:51 +07:00
|
|
|
void drawHelpRects(QPainter &painter, const HelpRect &rect) const;
|
2020-03-21 19:22:29 +07:00
|
|
|
|
2020-02-21 00:45:53 +07:00
|
|
|
Capturer &capturer_;
|
2020-03-21 19:22:29 +07:00
|
|
|
const Settings &settings_;
|
2020-03-22 18:32:51 +07:00
|
|
|
const QPixmap &pixmap_;
|
2020-02-21 00:45:53 +07:00
|
|
|
QPoint startSelectPos_;
|
|
|
|
|
QPoint currentSelectPos_;
|
2020-03-21 19:22:29 +07:00
|
|
|
QString help_;
|
2020-03-22 15:36:31 +07:00
|
|
|
std::vector<HelpRect> helpRects_;
|
2020-02-21 00:45:53 +07:00
|
|
|
};
|