ScreenTranslator/src/capture/captureareaselector.h

63 lines
1.6 KiB
C
Raw Normal View History

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-04-05 01:03:27 +07:00
class QMenu;
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,
2020-03-28 18:26:05 +07:00
const CommonModels &models, const QPixmap &pixmap);
2020-03-25 02:05:45 +07:00
~CaptureAreaSelector();
2020-02-21 00:45:53 +07:00
void activate();
bool hasLocked() const;
void captureLocked();
void setScreenRects(const std::vector<QRect> &screens);
void updateSettings();
2020-02-21 00:45:53 +07:00
protected:
void showEvent(QShowEvent *event) override;
2020-03-25 02:05:45 +07:00
void hideEvent(QHideEvent *event) override;
2020-02-21 00:45:53 +07:00
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:
struct HelpRect {
QRect current;
std::vector<QRect> possible;
};
2020-04-05 01:03:27 +07:00
void capture(CaptureArea &area, uint generation);
void captureAll();
void cancel();
2020-04-05 01:11:55 +07:00
void updateCursorShape(const QPoint &pos);
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-04-05 01:03:27 +07:00
void customize(const std::shared_ptr<CaptureArea> &area);
2020-03-25 02:05:45 +07:00
void applyEditor();
void drawCaptureArea(QPainter &painter, const CaptureArea &area) const;
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-04-05 01:03:27 +07:00
Generation generation_{};
2020-02-21 00:45:53 +07:00
QPoint startSelectPos_;
QPoint currentSelectPos_;
2020-03-21 19:22:29 +07:00
QString help_;
std::vector<HelpRect> helpRects_;
2020-04-05 01:03:27 +07:00
std::vector<std::shared_ptr<CaptureArea>> areas_;
std::weak_ptr<CaptureArea> edited_;
2020-03-25 02:05:45 +07:00
std::unique_ptr<CaptureAreaEditor> editor_;
2020-04-05 01:03:27 +07:00
QMenu *contextMenu_;
2020-02-21 00:45:53 +07:00
};