qreal value(qreal t) { qreal p = (_p < 0) ? qreal(0.3) : _p; qreal a = (_a < 0) ? qreal(1.0) : _a; switch(_t) { case In: return easeInElastic(t, a, p); case Out: return easeOutElastic(t, a, p); case InOut: return easeInOutElastic(t, a, p); case OutIn: return easeOutInElastic(t, a, p); default: return t; } }
double valueForProgress ( double a_fProgress ) const { double fPeriod = (m_fPeriod < 0) ? 0.3 : m_fPeriod; double fAmplitude = (m_fAmplitude < 0) ? 1.0 : m_fAmplitude; switch ( m_eType ) { case In: return easeInElastic ( a_fProgress, fAmplitude, fPeriod ); case Out: return easeOutElastic ( a_fProgress, fAmplitude, fPeriod ); case InOut: return easeInOutElastic ( a_fProgress, fAmplitude, fPeriod ); case OutIn: return easeOutInElastic ( a_fProgress, fAmplitude, fPeriod ); default: return a_fProgress; } }
static qreal easeOutInElastic(qreal t) { const qreal a = 0; const qreal p = 0.3; return easeOutInElastic(t, a, p); }