-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvirtualmouse.cpp
More file actions
60 lines (45 loc) · 1.23 KB
/
virtualmouse.cpp
File metadata and controls
60 lines (45 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "virtualmouse.h"
#include <QPainter>
#include <QDebug>
VirtualMouse::VirtualMouse(QPixmap const& pixmap, QWidget* parent) :
QWidget(parent),
m_parent(parent),
m_pixmap(pixmap)
{
setAttribute(Qt::WA_TransparentForMouseEvents);
}
void VirtualMouse::updatePosition(float deltaX, float deltaY) {
m_positionX += deltaX;
m_positionY += deltaY;
BoundBools bools = checkCursor();
if (bools.Xinside == false) {
//revert
m_positionX -= deltaX;
}
if (bools.Yinside == false) {
//revert
m_positionY -= deltaY;
}
update();
qDebug() << "position" << m_positionX << m_positionY;
}
void VirtualMouse::paintEvent(QPaintEvent *)
{
QPainter p(this);
QRect original_rect = m_pixmap.rect();
QRectF target_Rect(QRectF(m_positionX, m_positionY, original_rect.width(), original_rect.height()));
p.drawPixmap(target_Rect, m_pixmap, original_rect);
}
BoundBools VirtualMouse::checkCursor()
{
BoundBools obj;
if (m_positionX < 0 || m_positionX > m_parent->width()) {
obj.Xinside = false;
}
if (m_positionY < 0 || m_positionY > m_parent->height()) {
obj.Yinside = false;
}
return obj;
}
VirtualMouse::~VirtualMouse() {
}