
#ifndef QBoolAnimation_h
#define QBoolAnimation_h

#include "QPropertyAnimation"

class QBoolAnimation : public QPropertyAnimation
{
  Q_OBJECT
public:
  QBoolAnimation(double tipping_point, QObject* target, const QByteArray& prop, QObject* p = 0)
    : QPropertyAnimation(target, prop, p)
    , mTippingPoint(tipping_point)
  {
  }

protected:
  QVariant interpolated(const QVariant& from, const QVariant& to, qreal progress) const
  {
    double f = from.toDouble();
    double t = to.toDouble();
    double i = QPropertyAnimation::interpolated(f, t, progress).toDouble();

    if (f < t)
      return i >= mTippingPoint;
    return i <= mTippingPoint;
  }
  double mTippingPoint;
};

#endif
