From cf32311d7473019f5c13fcc596601d84ac0987a3 Mon Sep 17 00:00:00 2001 From: Bernd Weimer Date: Mon, 23 Jun 2014 16:29:36 +0200 Subject: fingerpaint example: be sensitive to pressure only when supported Fix fingerpaint example for platforms that don't support touch device area and pressure by setting default size of drawn ellipse. Change-Id: I884c688aa8ef98debf24876dbefaa4cff43a86a2 Reviewed-by: Fabian Bumberger Reviewed-by: Shawn Rutledge --- examples/touch/fingerpaint/scribblearea.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/examples/touch/fingerpaint/scribblearea.cpp b/examples/touch/fingerpaint/scribblearea.cpp index 0d13e4579d..1630f6f112 100644 --- a/examples/touch/fingerpaint/scribblearea.cpp +++ b/examples/touch/fingerpaint/scribblearea.cpp @@ -46,6 +46,9 @@ #include "scribblearea.h" +static const qreal MinimumDiameter = 3.0; +static const qreal MaximumDiameter = 50.0; + //! [0] ScribbleArea::ScribbleArea(QWidget *parent) : QWidget(parent) @@ -179,6 +182,7 @@ bool ScribbleArea::event(QEvent *event) case QEvent::TouchUpdate: case QEvent::TouchEnd: { + QTouchEvent *touch = static_cast(event); QList touchPoints = static_cast(event)->touchPoints(); foreach (const QTouchEvent::TouchPoint &touchPoint, touchPoints) { switch (touchPoint.state()) { @@ -189,7 +193,9 @@ bool ScribbleArea::event(QEvent *event) { QRectF rect = touchPoint.rect(); if (rect.isEmpty()) { - qreal diameter = qreal(50) * touchPoint.pressure(); + qreal diameter = MinimumDiameter; + if (touch->device()->capabilities() & QTouchDevice::Pressure) + diameter = MinimumDiameter + (MaximumDiameter - MinimumDiameter) * touchPoint.pressure(); rect.setSize(QSizeF(diameter, diameter)); } -- cgit v1.2.3