diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-05-01 01:04:20 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-05-01 01:04:20 (GMT) |
commit | 4eb455e6e109052ec39b10bfe36f7649c3c7cf0b (patch) | |
tree | 45da7dae8592494c2e0793b5872fea1bb3b711c4 /src | |
parent | 0d58554d8ff48459759875a37822ad5a3afca602 (diff) | |
parent | 7af48b011d1f84e4790fc4b9bdcd65e860c011a7 (diff) | |
download | Qt-4eb455e6e109052ec39b10bfe36f7649c3c7cf0b.zip Qt-4eb455e6e109052ec39b10bfe36f7649c3c7cf0b.tar.gz Qt-4eb455e6e109052ec39b10bfe36f7649c3c7cf0b.tar.bz2 |
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'src')
-rw-r--r-- | src/declarative/util/qmlfollow.cpp | 29 | ||||
-rw-r--r-- | src/declarative/util/qmlfollow.h | 3 |
2 files changed, 30 insertions, 2 deletions
diff --git a/src/declarative/util/qmlfollow.cpp b/src/declarative/util/qmlfollow.cpp index 998166a..8e5ae69 100644 --- a/src/declarative/util/qmlfollow.cpp +++ b/src/declarative/util/qmlfollow.cpp @@ -55,7 +55,7 @@ class QmlFollowPrivate : public QObjectPrivate public: QmlFollowPrivate() : sourceValue(0), maxVelocity(0), lastTime(0) - , mass(1.0), spring(0.), damping(0.), velocity(0), enabled(true), mode(Track), clock(this) {} + , mass(1.0), spring(0.), damping(0.), velocity(0), epsilon(0.005), enabled(true), mode(Track), clock(this) {} QmlMetaProperty property; qreal currentValue; @@ -67,6 +67,7 @@ public: qreal spring; qreal damping; qreal velocity; + qreal epsilon; bool enabled; enum Mode { @@ -111,7 +112,7 @@ void QmlFollowPrivate::tick(int time) } currentValue += velocity * 10.0 / 1000.0; } - if (qAbs(velocity) < 0.5 && qAbs(sourceValue - currentValue) < 0.5) { + if (qAbs(velocity) < epsilon && qAbs(sourceValue - currentValue) < epsilon) { velocity = 0.0; currentValue = sourceValue; clock.stop(); @@ -300,6 +301,30 @@ void QmlFollow::setDamping(qreal damping) d->damping = damping; } + +/*! + \qmlproperty qreal Follow::epsilon + This property holds the spring epsilon + + The epsilon is the rate and amount of change in the value which is close enough + to 0 to be considered equal to zero. This will depend on the usage of the value. + For pixel positions, 0.25 would suffice. For scale, 0.005 will suffice. + + The default is 0.005. Small performance improvements can result in tuning this + value. +*/ +qreal QmlFollow::epsilon() const +{ + Q_D(const QmlFollow); + return d->epsilon; +} + +void QmlFollow::setEpsilon(qreal epsilon) +{ + Q_D(QmlFollow); + d->epsilon = epsilon; +} + /*! \qmlproperty qreal Follow::followValue The current value. diff --git a/src/declarative/util/qmlfollow.h b/src/declarative/util/qmlfollow.h index aac4c01..bd9363a 100644 --- a/src/declarative/util/qmlfollow.h +++ b/src/declarative/util/qmlfollow.h @@ -63,6 +63,7 @@ class Q_DECLARATIVE_EXPORT QmlFollow : public QmlPropertyValueSource, Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity); Q_PROPERTY(qreal spring READ spring WRITE setSpring); Q_PROPERTY(qreal damping READ damping WRITE setDamping); + Q_PROPERTY(qreal epsilon READ epsilon WRITE setEpsilon); Q_PROPERTY(bool enabled READ enabled WRITE setEnabled); Q_PROPERTY(qreal followValue READ value NOTIFY valueChanged); @@ -80,6 +81,8 @@ public: void setSpring(qreal spring); qreal damping() const; void setDamping(qreal damping); + qreal epsilon() const; + void setEpsilon(qreal epsilon); bool enabled() const; void setEnabled(bool enabled); |