summaryrefslogtreecommitdiffstats
path: root/examples/widgets/widgets/tablet/tabletcanvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/widgets/tablet/tabletcanvas.cpp')
-rw-r--r--examples/widgets/widgets/tablet/tabletcanvas.cpp113
1 files changed, 58 insertions, 55 deletions
diff --git a/examples/widgets/widgets/tablet/tabletcanvas.cpp b/examples/widgets/widgets/tablet/tabletcanvas.cpp
index 8ff3d41e0e..0d2fc2a958 100644
--- a/examples/widgets/widgets/tablet/tabletcanvas.cpp
+++ b/examples/widgets/widgets/tablet/tabletcanvas.cpp
@@ -45,17 +45,18 @@
//! [0]
TabletCanvas::TabletCanvas()
+ : QWidget(Q_NULLPTR)
+ , m_alphaChannelValuator(TangentialPressureValuator)
+ , m_colorSaturationValuator(NoValuator)
+ , m_lineWidthValuator(PressureValuator)
+ , m_color(Qt::red)
+ , m_brush(m_color)
+ , m_pen(m_brush, 1.0, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+ , m_deviceDown(false)
{
resize(500, 500);
- myColor = Qt::red;
- myBrush = QBrush(myColor);
- myPen = QPen(myBrush, 1.0, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
initPixmap();
setAutoFillBackground(true);
- deviceDown = false;
- alphaChannelType = AlphaTangentialPressure;
- colorSaturationType = NoSaturation;
- lineWidthType = LineWidthPressure;
}
void TabletCanvas::initPixmap()
@@ -63,24 +64,24 @@ void TabletCanvas::initPixmap()
QPixmap newPixmap = QPixmap(width(), height());
newPixmap.fill(Qt::white);
QPainter painter(&newPixmap);
- if (!pixmap.isNull())
- painter.drawPixmap(0, 0, pixmap);
+ if (!m_pixmap.isNull())
+ painter.drawPixmap(0, 0, m_pixmap);
painter.end();
- pixmap = newPixmap;
+ m_pixmap = newPixmap;
}
//! [0]
//! [1]
bool TabletCanvas::saveImage(const QString &file)
{
- return pixmap.save(file);
+ return m_pixmap.save(file);
}
//! [1]
//! [2]
bool TabletCanvas::loadImage(const QString &file)
{
- bool success = pixmap.load(file);
+ bool success = m_pixmap.load(file);
if (success) {
update();
@@ -96,8 +97,8 @@ void TabletCanvas::tabletEvent(QTabletEvent *event)
switch (event->type()) {
case QEvent::TabletPress:
- if (!deviceDown) {
- deviceDown = true;
+ if (!m_deviceDown) {
+ m_deviceDown = true;
lastPoint.pos = event->posF();
lastPoint.rotation = event->rotation();
}
@@ -105,17 +106,17 @@ void TabletCanvas::tabletEvent(QTabletEvent *event)
case QEvent::TabletMove:
if (event->device() == QTabletEvent::RotationStylus)
updateCursor(event);
- if (deviceDown) {
+ if (m_deviceDown) {
updateBrush(event);
- QPainter painter(&pixmap);
+ QPainter painter(&m_pixmap);
paintPixmap(painter, event);
lastPoint.pos = event->posF();
lastPoint.rotation = event->rotation();
}
break;
case QEvent::TabletRelease:
- if (deviceDown && event->buttons() == Qt::NoButton)
- deviceDown = false;
+ if (m_deviceDown && event->buttons() == Qt::NoButton)
+ m_deviceDown = false;
break;
default:
break;
@@ -128,7 +129,7 @@ void TabletCanvas::tabletEvent(QTabletEvent *event)
void TabletCanvas::paintEvent(QPaintEvent *)
{
QPainter painter(this);
- painter.drawPixmap(0, 0, pixmap);
+ painter.drawPixmap(0, 0, m_pixmap);
}
//! [4]
@@ -142,10 +143,10 @@ void TabletCanvas::paintPixmap(QPainter &painter, QTabletEvent *event)
case QTabletEvent::Airbrush:
{
painter.setPen(Qt::NoPen);
- QRadialGradient grad(lastPoint.pos, myPen.widthF() * 10.0);
- QColor color = myBrush.color();
+ QRadialGradient grad(lastPoint.pos, m_pen.widthF() * 10.0);
+ QColor color = m_brush.color();
color.setAlphaF(color.alphaF() * 0.25);
- grad.setColorAt(0, myBrush.color());
+ grad.setColorAt(0, m_brush.color());
grad.setColorAt(0.5, Qt::transparent);
painter.setBrush(grad);
qreal radius = grad.radius();
@@ -154,11 +155,11 @@ void TabletCanvas::paintPixmap(QPainter &painter, QTabletEvent *event)
break;
case QTabletEvent::RotationStylus:
{
- myBrush.setStyle(Qt::SolidPattern);
+ m_brush.setStyle(Qt::SolidPattern);
painter.setPen(Qt::NoPen);
- painter.setBrush(myBrush);
+ painter.setBrush(m_brush);
QPolygonF poly;
- qreal halfWidth = myPen.widthF();
+ qreal halfWidth = m_pen.widthF();
QPointF brushAdjust(qSin(qDegreesToRadians(lastPoint.rotation)) * halfWidth,
qCos(qDegreesToRadians(lastPoint.rotation)) * halfWidth);
poly << lastPoint.pos + brushAdjust;
@@ -195,7 +196,7 @@ void TabletCanvas::paintPixmap(QPainter &painter, QTabletEvent *event)
}
// FALL-THROUGH
case QTabletEvent::Stylus:
- painter.setPen(myPen);
+ painter.setPen(m_pen);
painter.drawLine(lastPoint.pos, event->posF());
break;
}
@@ -206,68 +207,69 @@ void TabletCanvas::paintPixmap(QPainter &painter, QTabletEvent *event)
void TabletCanvas::updateBrush(const QTabletEvent *event)
{
int hue, saturation, value, alpha;
- myColor.getHsv(&hue, &saturation, &value, &alpha);
+ m_color.getHsv(&hue, &saturation, &value, &alpha);
int vValue = int(((event->yTilt() + 60.0) / 120.0) * 255);
int hValue = int(((event->xTilt() + 60.0) / 120.0) * 255);
//! [7] //! [8]
- switch (alphaChannelType) {
- case AlphaPressure:
- myColor.setAlphaF(event->pressure());
+ switch (m_alphaChannelValuator) {
+ case PressureValuator:
+ m_color.setAlphaF(event->pressure());
break;
- case AlphaTangentialPressure:
+ case TangentialPressureValuator:
if (event->device() == QTabletEvent::Airbrush)
- myColor.setAlphaF(qMax(0.01, (event->tangentialPressure() + 1.0) / 2.0));
+ m_color.setAlphaF(qMax(0.01, (event->tangentialPressure() + 1.0) / 2.0));
else
- myColor.setAlpha(255);
+ m_color.setAlpha(255);
break;
- case AlphaTilt:
- myColor.setAlpha(maximum(abs(vValue - 127), abs(hValue - 127)));
+ case TiltValuator:
+ m_color.setAlpha(maximum(abs(vValue - 127), abs(hValue - 127)));
break;
default:
- myColor.setAlpha(255);
+ m_color.setAlpha(255);
}
//! [8] //! [9]
- switch (colorSaturationType) {
- case SaturationVTilt:
- myColor.setHsv(hue, vValue, value, alpha);
+ switch (m_colorSaturationValuator) {
+ case VTiltValuator:
+ m_color.setHsv(hue, vValue, value, alpha);
break;
- case SaturationHTilt:
- myColor.setHsv(hue, hValue, value, alpha);
+ case HTiltValuator:
+ m_color.setHsv(hue, hValue, value, alpha);
break;
- case SaturationPressure:
- myColor.setHsv(hue, int(event->pressure() * 255.0), value, alpha);
+ case PressureValuator:
+ m_color.setHsv(hue, int(event->pressure() * 255.0), value, alpha);
break;
default:
;
}
//! [9] //! [10]
- switch (lineWidthType) {
- case LineWidthPressure:
- myPen.setWidthF(event->pressure() * 10 + 1);
+ switch (m_lineWidthValuator) {
+ case PressureValuator:
+ m_pen.setWidthF(event->pressure() * 10 + 1);
break;
- case LineWidthTilt:
- myPen.setWidthF(maximum(abs(vValue - 127), abs(hValue - 127)) / 12);
+ case TiltValuator:
+ m_pen.setWidthF(maximum(abs(vValue - 127), abs(hValue - 127)) / 12);
break;
default:
- myPen.setWidthF(1);
+ m_pen.setWidthF(1);
}
//! [10] //! [11]
if (event->pointerType() == QTabletEvent::Eraser) {
- myBrush.setColor(Qt::white);
- myPen.setColor(Qt::white);
- myPen.setWidthF(event->pressure() * 10 + 1);
+ m_brush.setColor(Qt::white);
+ m_pen.setColor(Qt::white);
+ m_pen.setWidthF(event->pressure() * 10 + 1);
} else {
- myBrush.setColor(myColor);
- myPen.setColor(myColor);
+ m_brush.setColor(m_color);
+ m_pen.setColor(m_color);
}
}
//! [11]
+//! [12]
void TabletCanvas::updateCursor(const QTabletEvent *event)
{
QCursor cursor;
@@ -285,7 +287,7 @@ void TabletCanvas::updateCursor(const QTabletEvent *event)
case QTabletEvent::RotationStylus: {
QImage origImg(QLatin1String(":/images/cursor-felt-marker.png"));
QImage img(32, 32, QImage::Format_ARGB32);
- QColor solid = myColor;
+ QColor solid = m_color;
solid.setAlpha(255);
img.fill(solid);
QPainter painter(&img);
@@ -307,6 +309,7 @@ void TabletCanvas::updateCursor(const QTabletEvent *event)
}
setCursor(cursor);
}
+//! [12]
void TabletCanvas::resizeEvent(QResizeEvent *)
{