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 <fbumberger@rim.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
bb10
Bernd Weimer 2014-06-23 16:29:36 +02:00 committed by Shawn Rutledge
parent 2289f3ee29
commit cf32311d74
1 changed files with 7 additions and 1 deletions

View File

@ -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<QTouchEvent *>(event);
QList<QTouchEvent::TouchPoint> touchPoints = static_cast<QTouchEvent *>(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));
}