Krita Source Code Documentation
Loading...
Searching...
No Matches
TabletTester Class Reference

#include <tablettest.h>

+ Inheritance diagram for TabletTester:

Public Slots

void clear ()
 

Signals

void eventReport (const QString &msg)
 

Public Member Functions

 TabletTester (QWidget *parent=nullptr)
 

Protected Member Functions

void mouseMoveEvent (QMouseEvent *e) override
 
void mousePressEvent (QMouseEvent *e) override
 
void mouseReleaseEvent (QMouseEvent *e) override
 
void paintEvent (QPaintEvent *e) override
 
QSize sizeHint () const override
 
void tabletEvent (QTabletEvent *e) override
 

Private Attributes

bool m_mouseDown
 
QPolygon m_mousePath
 
KisSpeedSmoother m_mouseSpeedSmoother
 
bool m_tabletDown
 
QPolygon m_tabletPath
 
KisSpeedSmoother m_tabletSpeedSmoother
 

Detailed Description

Definition at line 15 of file tablettest.h.

Constructor & Destructor Documentation

◆ TabletTester()

TabletTester::TabletTester ( QWidget * parent = nullptr)

Definition at line 14 of file tablettest.cpp.

15 : QWidget(parent), m_mouseDown(false), m_tabletDown(false)
16{
17 // we don't explicitly update settings inside KisSpeedSmoother
18 // here because the tablet tester is created every time anew.
19
20}
bool m_mouseDown
Definition tablettest.h:39
bool m_tabletDown
Definition tablettest.h:40

Member Function Documentation

◆ clear

void TabletTester::clear ( )
slot

Definition at line 27 of file tablettest.cpp.

28{
29 m_mousePath.clear();
30 m_tabletPath.clear();
31 update();
32}
QPolygon m_mousePath
Definition tablettest.h:36
QPolygon m_tabletPath
Definition tablettest.h:37
bool update(QSpinBox *spinBox)

References m_mousePath, and m_tabletPath.

◆ eventReport

void TabletTester::eventReport ( const QString & msg)
signal

◆ mouseMoveEvent()

void TabletTester::mouseMoveEvent ( QMouseEvent * e)
overrideprotected

Definition at line 72 of file tablettest.cpp.

73{
74 const qreal speed = m_tabletSpeedSmoother.getNextSpeed(e->pos(), e->timestamp());
75 Q_EMIT eventReport(QString("Mouse move X=%1 Y=%2 B=%3 S=%4").arg(e->x()).arg(e->y()).arg(e->buttons()).arg(speed));
76 m_mousePath << e->pos();
77 update();
78}
qreal getNextSpeed(const QPointF &pt, ulong timestamp)
KisSpeedSmoother m_tabletSpeedSmoother
Definition tablettest.h:41
void eventReport(const QString &msg)

References eventReport(), KisSpeedSmoother::getNextSpeed(), m_mousePath, and m_tabletSpeedSmoother.

◆ mousePressEvent()

void TabletTester::mousePressEvent ( QMouseEvent * e)
overrideprotected

Definition at line 60 of file tablettest.cpp.

61{
62 m_mouseDown = true;
63 m_mousePath.clear();
65
66 const qreal speed = m_tabletSpeedSmoother.getNextSpeed(e->pos(), e->timestamp());
67 Q_EMIT eventReport(QString("Mouse press X=%1 Y=%2 B=%3 S=%4").arg(e->x()).arg(e->y()).arg(e->button()).arg(speed));
68
69 update();
70}
KisSpeedSmoother m_mouseSpeedSmoother
Definition tablettest.h:42

References KisSpeedSmoother::clear(), eventReport(), KisSpeedSmoother::getNextSpeed(), m_mouseDown, m_mousePath, m_mouseSpeedSmoother, and m_tabletSpeedSmoother.

◆ mouseReleaseEvent()

void TabletTester::mouseReleaseEvent ( QMouseEvent * e)
overrideprotected

Definition at line 80 of file tablettest.cpp.

81{
82 Q_UNUSED(e);
83 Q_EMIT eventReport(QString("Mouse release"));
84 m_mouseDown = false;
85}

References eventReport(), and m_mouseDown.

◆ paintEvent()

void TabletTester::paintEvent ( QPaintEvent * e)
overrideprotected

Definition at line 34 of file tablettest.cpp.

35{
36 Q_UNUSED(e);
37 const int w = width();
38 const int h = height();
39 QPainter p(this);
40 p.fillRect(0, 0, w, h, QColor(200, 200, 200));
41 p.setPen(QColor(128, 128, 128));
42
43 // Draw grid
44 for(int i=w/8;i<w;i+=w/8)
45 p.drawLine(i, 0, i, h);
46 for(int i=h/8;i<h;i+=h/8)
47 p.drawLine(0, i, w, i);
48
49 // Draw paths
50 if(!m_mousePath.isEmpty()) {
51 p.setPen(QPen(Qt::red, 3));
52 p.drawPolyline(m_mousePath);
53 }
54 if(!m_tabletPath.isEmpty()) {
55 p.setPen(QPen(Qt::blue, 2));
56 p.drawPolyline(m_tabletPath);
57 }
58}
const Params2D p

References m_mousePath, m_tabletPath, and p.

◆ sizeHint()

QSize TabletTester::sizeHint ( ) const
overrideprotected

Definition at line 22 of file tablettest.cpp.

23{
24 return QSize(500, 200);
25}

◆ tabletEvent()

void TabletTester::tabletEvent ( QTabletEvent * e)
overrideprotected

Definition at line 87 of file tablettest.cpp.

88{
89 e->accept();
90
91 QString msg;
92 switch(e->deviceType()) {
93#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
94 case QTabletEvent::Stylus: msg = "Stylus"; break;
95#else
96 case QInputDevice::DeviceType::Stylus: msg = "Stylus"; break;
97#endif
98 default: msg = QString("Device(%1)").arg((int)e->deviceType()); break;
99 }
100
101 switch(e->type()) {
102 case QEvent::TabletMove:
103 msg += " move";
104
105 break;
106 case QEvent::TabletPress:
107 msg += " press";
108 m_tabletPath.clear();
109 m_tabletDown = true;
111 break;
112 case QEvent::TabletRelease:
113 msg += " release";
114 m_tabletDown = false;
115 break;
116 default:
117 msg += QString(" event-%1").arg(e->type());
118 break;
119 }
120
121 const qreal speed = m_tabletSpeedSmoother.getNextSpeed(e->posF(), e->timestamp());
122
123 msg += QString(" X=%1 Y=%2 B=%3 P=%4% TX=%6 TY=%7 S=%9")
124 .arg(e->posF().x(), 0, 'f', 2)
125 .arg(e->posF().y(), 0, 'f', 2)
126 .arg(e->buttons())
127 .arg(e->pressure()*100, 0, 'f', 1)
128 .arg(e->xTilt())
129 .arg(e->yTilt())
130 .arg(speed, 0, 'f', 1)
131 ;
132
133 if(e->type() == QEvent::TabletMove) {
134 if(m_tabletDown) {
135 msg += " (DRAW)";
136 m_tabletPath << e->pos();
137 update();
138 } else {
139 msg += " (HOVER)";
140 }
141 }
142
143 Q_EMIT eventReport(msg);
144}

References KisSpeedSmoother::clear(), eventReport(), KisSpeedSmoother::getNextSpeed(), m_tabletDown, m_tabletPath, and m_tabletSpeedSmoother.

Member Data Documentation

◆ m_mouseDown

bool TabletTester::m_mouseDown
private

Definition at line 39 of file tablettest.h.

◆ m_mousePath

QPolygon TabletTester::m_mousePath
private

Definition at line 36 of file tablettest.h.

◆ m_mouseSpeedSmoother

KisSpeedSmoother TabletTester::m_mouseSpeedSmoother
private

Definition at line 42 of file tablettest.h.

◆ m_tabletDown

bool TabletTester::m_tabletDown
private

Definition at line 40 of file tablettest.h.

◆ m_tabletPath

QPolygon TabletTester::m_tabletPath
private

Definition at line 37 of file tablettest.h.

◆ m_tabletSpeedSmoother

KisSpeedSmoother TabletTester::m_tabletSpeedSmoother
private

Definition at line 41 of file tablettest.h.


The documentation for this class was generated from the following files: