diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2019-05-27 09:30:29 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2019-07-30 13:10:33 +0300 |
commit | 76be819345228d589cbc4f5129617151ea604750 (patch) | |
tree | 33f5b83ed87ec74eb3e5b88ba8d9078765be9882 | |
parent | bcf6f992370c34e2e89a964aaa92a2dfdff5bd77 (diff) |
QEasingCurve: reduce code duplication in setCurveShape()
Instead of creating an explicit QEasingCurve object in each
switched-over case, extract the conversion between the enums
involved into a helper and just call setEasingCurve() with
the result (implicitly converted to QEasingCurve).
Saves 0.5KiB in text size on optimized AMD64 Linux GCC 9.1
builds.
Change-Id: I81b5d7199d9dd99ba3735c910a50e371e0b99838
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
-rw-r--r-- | src/corelib/tools/qtimeline.cpp | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/src/corelib/tools/qtimeline.cpp b/src/corelib/tools/qtimeline.cpp index e3c3836764..0b11e7c77b 100644 --- a/src/corelib/tools/qtimeline.cpp +++ b/src/corelib/tools/qtimeline.cpp @@ -526,28 +526,24 @@ QTimeLine::CurveShape QTimeLine::curveShape() const return EaseInOutCurve; } -void QTimeLine::setCurveShape(CurveShape shape) +static QEasingCurve::Type convert(QTimeLine::CurveShape shape) { switch (shape) { - case EaseInOutCurve: - setEasingCurve(QEasingCurve(QEasingCurve::InOutSine)); - break; - case EaseInCurve: - setEasingCurve(QEasingCurve(QEasingCurve::InCurve)); - break; - case EaseOutCurve: - setEasingCurve(QEasingCurve(QEasingCurve::OutCurve)); - break; - case LinearCurve: - setEasingCurve(QEasingCurve(QEasingCurve::Linear)); - break; - case SineCurve: - setEasingCurve(QEasingCurve(QEasingCurve::SineCurve)); - break; - case CosineCurve: - setEasingCurve(QEasingCurve(QEasingCurve::CosineCurve)); - break; +#define CASE(x, y) case QTimeLine::x: return QEasingCurve::y + CASE(EaseInOutCurve, InOutSine); + CASE(EaseInCurve, InCurve); + CASE(EaseOutCurve, OutCurve); + CASE(LinearCurve, Linear); + CASE(SineCurve, SineCurve); + CASE(CosineCurve, CosineCurve); +#undef CASE } + Q_UNREACHABLE(); +} + +void QTimeLine::setCurveShape(CurveShape shape) +{ + setEasingCurve(convert(shape)); } /*! |