Unity 8
easingcurve.cpp
1 /*
2  * Copyright 2014 Canonical Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authors: Michael Zanetti <michael.zanetti@canonical.com>
17 */
18 
19 #include "easingcurve.h"
20 
21 
22 EasingCurve::EasingCurve(QObject *parent):
23  QObject(parent),
24  m_progress(0),
25  m_value(0)
26 {
27 
28 }
29 
30 QEasingCurve::Type EasingCurve::type() const
31 {
32  return m_easingCurve.type();
33 }
34 
35 void EasingCurve::setType(const QEasingCurve::Type &type)
36 {
37  // FIXME: Working around bug https://bugreports.qt-project.org/browse/QTBUG-38686 here
38  QEasingCurve newCurve;
39  newCurve.setType(type);
40  newCurve.setPeriod(m_easingCurve.period());
41  m_easingCurve = newCurve;
42  Q_EMIT typeChanged();
43 }
44 
45 qreal EasingCurve::period() const
46 {
47  return m_easingCurve.period();
48 }
49 
50 void EasingCurve::setPeriod(qreal period)
51 {
52  m_easingCurve.setPeriod(period);
53  Q_EMIT periodChanged();
54 }
55 
56 qreal EasingCurve::progress() const
57 {
58  return m_progress;
59 }
60 
61 void EasingCurve::setProgress(qreal progress)
62 {
63  if (m_progress != progress) {
64  m_progress = progress;
65  m_value = m_easingCurve.valueForProgress(m_progress);
66  Q_EMIT progressChanged();
67  }
68 }
69 
70 qreal EasingCurve::value() const
71 {
72  return m_value;
73 }