2017-12-06 02:16:49 +01:00
|
|
|
#ifndef SCREENOVERLAY_HPP
|
|
|
|
#define SCREENOVERLAY_HPP
|
|
|
|
|
|
|
|
#include <QGraphicsPixmapItem>
|
|
|
|
#include <QGraphicsRectItem>
|
|
|
|
#include <QGraphicsScene>
|
2017-12-06 14:08:49 +01:00
|
|
|
#include <QGraphicsView>
|
2017-12-06 20:00:17 +01:00
|
|
|
#include <QMetaType>
|
2017-12-06 02:16:49 +01:00
|
|
|
|
|
|
|
class ScreenOverlay : public QGraphicsScene {
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
2017-12-06 14:08:49 +01:00
|
|
|
enum MovementPattern { MP_JKL, MP_HJKL, MP_ARROWS };
|
2017-12-06 20:00:17 +01:00
|
|
|
|
2017-12-06 02:16:49 +01:00
|
|
|
explicit ScreenOverlay(QPixmap pixmap, QObject *parent = 0);
|
|
|
|
|
2017-12-06 20:00:17 +01:00
|
|
|
MovementPattern movementPattern();
|
|
|
|
void setMovementPattern(MovementPattern nmp);
|
2017-12-06 02:16:49 +01:00
|
|
|
|
2017-12-06 20:00:17 +01:00
|
|
|
QPixmap &pixmap();
|
2017-12-06 02:16:49 +01:00
|
|
|
void updateMagnifierGrid();
|
2017-12-06 20:00:17 +01:00
|
|
|
QColor highlight();
|
2017-12-06 02:16:49 +01:00
|
|
|
void setHighlight(QColor highlight);
|
2018-05-09 23:28:36 +02:00
|
|
|
QColor foreground();
|
|
|
|
void setForeground(QColor foreground);
|
2017-12-06 20:00:17 +01:00
|
|
|
bool grid();
|
|
|
|
void setGrid(bool grid);
|
|
|
|
QPointF cursorPos();
|
|
|
|
void setCursorPos(QPointF cursorPos);
|
|
|
|
|
|
|
|
public slots:
|
2017-12-06 14:08:49 +01:00
|
|
|
void showSettings();
|
|
|
|
void hide();
|
|
|
|
void show();
|
|
|
|
void loadSettings();
|
2017-12-06 20:00:17 +01:00
|
|
|
void updateMag();
|
|
|
|
void hideMag();
|
2018-02-13 21:17:05 +01:00
|
|
|
void showMag();
|
|
|
|
void setMagVisibility(bool visible);
|
2018-02-20 21:17:08 +01:00
|
|
|
void moveMouse(QPoint newPoint, bool spaceHeld = false);
|
|
|
|
void moveMouseBy(QPoint delta, bool spaceHeld = false);
|
2017-12-06 14:08:49 +01:00
|
|
|
|
|
|
|
protected:
|
2018-02-20 21:17:08 +01:00
|
|
|
bool keyboardActiveSelection();
|
2017-12-06 14:08:49 +01:00
|
|
|
void mouseMoveEvent(QGraphicsSceneMouseEvent *e) override;
|
|
|
|
void wheelEvent(QGraphicsSceneWheelEvent *e) override;
|
|
|
|
void keyPressEvent(QKeyEvent *e) override;
|
2017-12-06 20:00:17 +01:00
|
|
|
void contextMenuEvent(QGraphicsSceneContextMenuEvent *e) override;
|
2017-12-06 14:08:49 +01:00
|
|
|
|
|
|
|
virtual void mouseMoved(QGraphicsSceneMouseEvent *, QPointF, QPointF) {
|
|
|
|
}
|
|
|
|
virtual void highlightChanged(QColor) {
|
|
|
|
}
|
|
|
|
virtual QString generateHint() {
|
|
|
|
return QString();
|
|
|
|
}
|
2017-12-06 20:00:17 +01:00
|
|
|
virtual void customizeContextMenu(QGraphicsSceneContextMenuEvent *, QMenu *) {
|
|
|
|
}
|
2017-12-06 02:16:49 +01:00
|
|
|
|
|
|
|
private:
|
|
|
|
QPointF _cursorPos = QPoint(0, 0);
|
|
|
|
QGraphicsPixmapItem *magnifier = nullptr;
|
|
|
|
QGraphicsRectItem *magnifierBox = nullptr;
|
|
|
|
QGraphicsTextItem *magnifierHint = nullptr;
|
|
|
|
QGraphicsRectItem *magnifierHintBox = nullptr;
|
|
|
|
QGraphicsPolygonItem *cursorItem = nullptr;
|
|
|
|
QList<QGraphicsRectItem *> gridRectsX;
|
|
|
|
QList<QGraphicsRectItem *> gridRectsY;
|
2018-05-09 23:28:36 +02:00
|
|
|
QColor _highlight = Qt::cyan, _foreground = Qt::white;
|
2017-12-06 02:16:49 +01:00
|
|
|
bool _grid = true;
|
2018-02-20 21:17:08 +01:00
|
|
|
bool selectActive = false;
|
2017-12-06 02:16:49 +01:00
|
|
|
QPixmap _pixmap;
|
2017-12-06 14:08:49 +01:00
|
|
|
MovementPattern _movementPattern = MP_ARROWS;
|
2017-12-06 02:16:49 +01:00
|
|
|
};
|
|
|
|
|
2017-12-06 20:00:17 +01:00
|
|
|
Q_DECLARE_METATYPE(ScreenOverlay::MovementPattern)
|
|
|
|
|
2017-12-06 02:16:49 +01:00
|
|
|
#endif /* SCREENOVERLAY_HPP */
|